欢迎各位兄弟 发布技术文章
这里的技术是共享的
<?php
function execself_init()
{
$node = menu_get_object();
if(!empty($node) && $node->type=='event_wzdl')
{
$rowObjs = _getToDevNids($node->nid,'asc','limit 0,1');
//第一次递交时,递交人是本人,递交的部门是 to_development的title
$node->firstSendPerson = $rowObjs[0]->name;
$node->firstSendDepart = user_load($rowObjs[0]->uid)->profile_department;
}
}
function _getDevArr()
{
$query = "SELECT global_settings FROM {content_node_field} where field_name='field_to_development' limit 0,1";
$queryResult = db_query($query);
$result =db_fetch_object($queryResult);
$global_settings = $result->global_settings;
$arrGlobal_settings = unserialize($global_settings);
$allow_values = $arrGlobal_settings['allowed_values'];
$allow_valuesArr = explode('
',$allow_values);
$newAllow_valuesArr = array();
foreach($allow_valuesArr as $key=>$value)
{
$arr = explode('|',$value);
$newAllow_valuesArr[$arr[0]] = $arr[1];
}
return $newAllow_valuesArr;
}
function _getDevByEn($index)
{
/*$arr = array('kefubu'=>'客服部',
'jiankongbu'=>'监控部',
'yunyingbu'=>'运营部',
'yunweibu'=>'运维部',
'pingtaibu'=>'平台部',
'jifenpingtai'=>'计费平台',
'kefuguanbi'=>'客服关闭'
);
return $arr[$index];*/
$devArr = _getDevArr();
return $devArr[$index];
}
//我们再插入一条到哪个部门的数据
function execself_nodeapi(&$node, $op, $a3 = null , $a4 = null){
if($op=='insert' && $node->type == 'event_wzdl' ){
// drupal_set_message("RRRRRR");
$toDevnode = (object)$toDevnode;
$toDevnode->uid = $node->uid;
$toDevnode->type = 'to_development';
$toDevnode->field_event[0][nid] = $node->nid;
//print_r($node->field_to_development[0]['value']);
$toDevnode->title = _getDevByEn($node->field_to_development[0]['value']);
$toDevnode->field_send_person[0]['value'] = $node->field_send_person[0]['value'];
$toDevnode->field_zhuanjian_desc[0]['value'] = '第一次提交到'.$toDevnode->title;
//$newNode =devel_render_object('node', $node) ;//这个方法不行
//exit;
node_save($toDevnode);
}
}
/**
* Implementation of hook_form_alter().
* 创建隐藏字段的方法
*/
function execself_form_alter(&$form, &$form_state, $form_id) {
if (isset($form['type']) && isset($form['#node'])) {
### Make a CCK field becoming a hidden type field.
// ### Use this check to match node edit form for a particular content type.
if ($form_id === 'event_wzdl_node_form') {
//下面注掉的两行禁用title字段
// $form['title']['#disabled'] = true;
//$form['title']['#attributes']['class'] = 'my_class';
global $user;
//var_dump($user->name);
/*$form['field_send_person'][0]= array(
'#type'=>'textfield',
'#title'=>'递交人',
'#size'=>20,
'#value'=>$user->name
);*/
$form['field_zhuanjian_chuli'][0]['#default_value']['value'] = '0';
$form['field_chuli_person'][0]['#default_value']['value'] = '';
$form['#after_build'] = array('_test_set_cck_field_to_hidden');
// 调试时候,打印$form出来看下
//print '<pre>'. check_plain(print_r($form, 1)) .'</pre>';
//增加class
$form['#attributes'] = array('class' => 'event-wzdl-form');
// 修改form跳转路径
$form['#redirect'] = 'my_event_list_page';
//$form['field_send_person'][0]['value']['#attributes']['disabled'] = 'disabled';
//$form['field_send_person'][0]['#disabled'] = true;
drupal_add_js('$("#edit-field-send-person-0-value").attr("readonly","true");', 'inline', 'footer');
drupal_add_js('$("#edit-field-play-time-0-value-datepicker-popup-0").attr("autocomplete","off");', 'inline', 'footer');
}
}
if ($form_id == 'views_exposed_form' && $_GET['q']=='search_event_list_page') {
//drupal_add_js('alert(1111);', 'inline', 'footer');
//drupal_add_js('alert("Hello!")', 'inline');
$form['field_zhuanjian_chuli_value_many_to_one']['#options']['All'] = '请选择';
$form['field_zhuanjian_chuli_value_many_to_one']['#options']['0'] = '未处理';
$form['field_zhuanjian_chuli_value_many_to_one']['#options']['1'] = '已处理';
$form['field_zhuanjian_chuli_value_many_to_one']['#options']['2'] = '已关闭';
$form['submit']['#value'] ='搜索表单';
$form['#attributes'] = array('class' => 'search_event_form');
drupal_add_js('$("select.form-select option[index=0]").text("请选择");', 'inline', 'footer');
//让它先添加一个(因为这个当前用户是个例外);
drupal_add_js('$("#edit-uid-current").prepend("<option value=\"All\">请选择</option>")','inline', 'footer');
drupal_add_js('$("#edit-field-zhuanjian-chuli-value-many-to-one").prepend("<option value=\"All\" >请选择</option>")','inline', 'footer');
drupal_add_js('$("select.form-select option[index=1]").remove();', 'inline', 'footer');
drupal_add_js('$("#edit-field-possible-dates-value-value-datepicker-popup-0").attr("autocomplete","off");', 'inline', 'footer');
drupal_add_js('$("#edit-field-possible-dates-value2-value-datepicker-popup-0").attr("autocomplete","off");', 'inline', 'footer');
//下面这个没有用
/*edit-field-youxi-name-value-many-to-one
edit-field-zhuanjian-chuli-value-many-to-one
edit-field-youxi-daqu-value-many-to-one
edit-field-youxi-server-value-many-to-one
edit-field-visited-reason-value-many-to-one
edit-field-event-type-value-many-to-one
edit-field-to-development-value-many-to-one*/
}
if ($form_id == 'views_exposed_form' && $_GET['q']=='admin/user/user/custom_user_list') {
$form['select']['#title'] = '批量操作';
$form['submit']['#value'] = '查询';
$str = 'if($("select.form-select option[index=0]").val()=="All") $("select.form-select option[index=0]").text("请选择");';
drupal_add_js($str, 'inline', 'footer');
}
if ($form_id == 'views_bulk_operations_form__1' && $_GET['q']=='admin/user/user/custom_user_list') {
$form['select']['#title'] = '批量操作';
$form['select']['submit']['#value'] = '执行';
}
}
/**
*
* @param
* @return
*/
function _test_set_cck_field_to_hidden($form, &$form_state) {
$form['field_zhuanjian_chuli'][0]['value']['#type'] = 'hidden';
$form['field_zhuanjian_chuli'][0]['#value']['value'] = '0';
$form['field_chuli_person'][0]['value']['#type'] = 'hidden';
$form['field_chuli_person'][0]['#value']['value'] = '';
// $form['field_zhuanjian_chuli'] = array( '#type' => 'hidden', '#value' => $club);
//$form['field_zhuanjian_chuli'][0]['#value'] ='1';
//$form['field_zhuanjian_chuli'][0] = array( '#type' => 'text', '#value' => '1');
return $form;
}
//下面这个没用
function execself_node_presave($node) {
// you may also wan't to check the 'status' of the node
if($node->nid && $node->type == 'event_wzdl') {
$node->title=time();
}
drupal_set_message('GGGGGGGGG');
return $node;
}
//得到到部门的对象的object的数组
function _getToDevNids($nid,$orderway,$limit='')
{
$sql ="select no.nid from {node} no inner join {content_field_event} as rel on rel.nid=no.nid
where rel.field_event_nid='%d' order by rel.nid $orderway $limit ";
$resultToDev = db_result(db_query($sql,$nid));
$result = db_query($sql,$nid);
//这里求的是所有的关于这个event 所转交的产生的记录 对象
while($rowObj = db_fetch_object($result)) {
$rowNids[] = $rowObj->nid;
}
foreach($rowNids as $row){
$rowObjs[] = node_load($row);
}
return $rowObjs;
}
function _getSameValue($arr1,$arr2)
{
foreach ($arr1 as $value)
{
if (in_array($value,$arr2))
{
return $value;
}
}
//不存在的话返回 管理员
return '管理员';
}
//设置表单处理
function _setFormChuli(&$form,$node,$nodeToDev)
{
//第一次递交时,递交人是本人,递交的部门是 to_development的title
//最后处理时,处理人就是最后一个处理人的name,处理的部门就是处理人所在的部门
$form['chuli-close']['aaaa'] = array(
'#type' => 'markup',
'#value' => '<div class="chuili-reslut">递交人: '.'<font color=green>'.$node->field_send_person[0]['value'].'</font></div>',
'#attributes'=>array('class'=>'showchuliresult')
);
$form['chuli-close']['bbbb'] = array(
'#type' => 'markup',
'#value' => '<div class="chuili-reslut">递交部门: '.'<font color=green>'.user_load($node->uid)->profile_department.'</font></div>',
'#attributes'=>array('class'=>'showchuliresult')
);
$form['chuli-close']['cccc'] = array(
'#type' => 'markup',
'#value' => '<div class="chuili-reslut">处理人: '.'<font color=green>'.user_load($nodeToDev->uid)->name.'</font></div>',
'#attributes'=>array('class'=>'showchuliresult')
);
$form['chuli-close']['dddd'] = array(
'#type' => 'markup',
'#value' => '<div class="chuili-reslut">处理部门: '.'<font color=green>'.user_load($nodeToDev->uid)->profile_department.'</font></div>',
'#attributes'=>array('class'=>'showchuliresult')
);
$form['chuli-close']['eeee'] = array(
'#type' => 'markup',
'#value' => '<div class="chuili-reslut">处理说明: '.'<font color=green>'.$nodeToDev->field_zhuanjian_desc[0]['value'].'</font></div>',
'#attributes'=>array('class'=>'showchuliresult')
);
}
//这里填写的是增加转交或处理
function zhuanjian_chuli_form(&$form_state, $node)
{
//var_dump($devArr);exit;
global $user;
//var_dump("AAAAAAAAAA");
//var_dump($node->field_zhuanjian_chuli[0]['value']);exit;
$form['#attributes'] = array('class' => 'zhuanjian_chuli_form');
//事件对象
$nodeToDevs = _getToDevNids($node->nid,'asc','limit 0,1');
$nodeToDevsStart = $nodeToDevs[0];
$nodeToDevs = _getToDevNids($node->nid,'desc','limit 0,1');
$nodeToDevEnd=$nodeToDevs[0];
//处理状态时
if($node->field_zhuanjian_chuli[0]['value']==1){
$form['#attributes']= array('class' => 'threeradioform');
$form['chuli-close'] = array(
'#type' => 'fieldset',
'#title' => '<font color=green>事件已处理</font>',
'#value' => '<font color=green></font>',
'#attributes'=>array('class'=>'showchuliresult')
);
_setFormChuli($form,$nodeToDevsStart,$nodeToDevEnd);
//有递交表单的权限
//if(user_access('处理 客服部事件')){
$items[] = l('快捷提交', 'node/addwzdlevent/'.$node->nid.'/create',array('attributes' => array('title' => '快捷递交')));
$form['chuli-close']['links'] = array('#value' => theme('item_list', $items,'','ul',array('class'=>'my-list-class')));
//}
return $form;
}
//关闭状态时
if($node->field_zhuanjian_chuli[0]['value']==2)
{
$form['#attributes']= array('class' => 'threeradioform');
$form['chuli-close'] = array(
'#type' => 'fieldset',
'#title' => '<font color=red>事件已关闭</font>',
'#value' => '<font color=red></font>',
'#attributes'=>array('class'=>'showchuliresult')
);
_setFormChuli($form,$nodeToDevsStart,$nodeToDevEnd);
return $form;
}
//是关闭状态 但是 没有关闭权限的人看到的只能到此为止
/*if($node->field_zhuanjian_chuli[0]['value']==2 && !user_access('处理 关闭事件'))
{
}*/
$form['field_zhuanjian_chuli'] = array(
'#type' => 'radios',
'#title' => '转交还是递送',
//'#description' =>'让用户选择转交还是递送',
'#options' => array(
0=>'转交',//表单中radio 值 就是键
1=>'处理',
2=>'关闭'
),
'#default_value' => $node->field_zhuanjian_chuli[0]['value']
);
//下面这个为测试
//假如为关闭 ,就禁用关闭radio
//$form['field_zhuanjian_chuli']['#options'][2]='disabled';
// drupal_add_js('alert("Hello!")', 'inline');
//执行到这里 没有权限关闭状态时 禁用关闭
if(!user_access('处理 关闭事件')){
drupal_add_js('$("#edit-field-zhuanjian-chuli-2").attr("disabled","disabled");', 'inline', 'footer');
}
//假如是处理时 并且此人没有禁用关闭状态的权限时 也禁用转交
if($node->field_zhuanjian_chuli[0]['value']==1 && !user_access('处理 关闭事件')){
drupal_add_js('$("#edit-field-zhuanjian-chuli-0").attr("disabled","disabled");', 'inline', 'footer');
}
$form['title'] = array(
'#type' => 'select',
'#options' => _getDevArr()
//'#title' => '联系电话',
);
$form['field_send_person'] = array(
'#type' => 'textfield',
'#title' => '转交人' ,
'#size' => '20',
'#default_value' => $user->name,
'#attributes'=>array(
'readonly'=>true
)
);
$form['field_zhuanjian_desc'] = array(
'#type' => 'textarea',
'#title' => '转交或处理说明',
'#rows' => 3
);
$form['submit'] = array('#type' => 'submit', '#value' => '确认提交');
switch ($node->field_to_development[0]['value'])
{
case 'kefubu':
!user_access('处理 客服部事件') && $form['submit']['#disabled'] = true;
break;
case 'pingtaibu':
!user_access('处理 平台部事件') && $form['submit']['#disabled'] = true;
break;
case 'jiankongbu':
!user_access('处理 监控部事件') && $form['submit']['#disabled'] = true;
break;
case 'yunyingbu':
!user_access('处理 运营部事件') && $form['submit']['#disabled'] = true;
break;
case 'yunweibu':
!user_access('处理 运维部事件') && $form['submit']['#disabled'] = true;
break;
case 'jifenpingtai':
!user_access('处理 计费平台事件') && $form['submit']['#disable'] = true;
break;
}
$form['event_wzdl_nid'] = array('#type' => 'value', '#value' => $node->nid);
return $form;
}
//表单函数_validate 验证类似于钩子函数的回调函数
function zhuanjian_chuli_form_validate(&$form, &$form_state)
{
/**
* 用户提交的所有数据在 $form_state['values'] 之中,相当于 $_POST
*/
// form_set_error('',$form_values['name']);
$field_zhuanjian_chuli = $form_state['values']['field_zhuanjian_chuli'];
if($field_zhuanjian_chuli==0)//关闭时不需要填写到部门
{
if($form_state['values']['title'] == '')
{
form_set_error('title','你必须选择部门名称');
}
if($form_state['values']['field_zhuanjian_desc'] == '')
{
form_set_error('field_zhuanjian_desc','你必须输入转交或处理说明');
}
}
else {
if($form_state['values']['field_zhuanjian_desc'] == '')
{
form_set_error('field_zhuanjian_desc','你必须输入转交或处理说明');
}
}
}
//表单函数_submit 提交函数
function zhuanjian_chuli_form_submit(&$form, &$form_state)
{
/**
* 用户提交的所有数据在 $form_state['values'] 之中,相当于 $_POST
*/
global $user;
$nid = $form_state['values']['event_wzdl_nid'];
$node = node_load($nid);
//这里是有权限的人从关闭改变到其它状态
$toDevnode = (object)$toDevnode;
$toDevnode->uid = $user->uid;
$toDevnode->type = 'to_development';
$toDevnode->field_event[0][nid] = $nid;
//print_r($node->field_to_development[0]['value']);
$toDevnode->title = _getDevByEn($form_state['values']['title']);
$toDevnode->field_send_person[0]['value'] = $form_state['values']['field_send_person'];
$toDevnode->field_zhuanjian_desc[0]['value'] = $form_state['values']['field_zhuanjian_desc'];
//$newNode =devel_render_object('node', $node) ;//这个方法不行
//exit;
$node->field_zhuanjian_chuli[0]['value'] = $form_state['values']['field_zhuanjian_chuli'];
$node->field_to_development[0]['value'] = $form_state['values']['title'];
//关闭的时候
if($form_state['values']['field_zhuanjian_chuli']=='2'){
$node->field_chuli_person[0]['value'] = $form_state['values']['field_send_person'];
$node->field_to_development[0]['value'] = '';
$toDevnode->title = '关闭事件,不转交';
}
//处理的时候 ,处理人的名字 就是发送人吧 ;此时发送部门应该就是客服关闭吧
if($form_state['values']['field_zhuanjian_chuli']==1){
$node->field_chuli_person[0]['value'] = $form_state['values']['field_send_person'];
$node->field_to_development[0]['value'] = '';
$toDevnode->title = '已处理';
//$toDevnode->title = _getDevByEn('kefuguanbi');
}
node_save($toDevnode);
node_save($node);
if ($toDevnode->nid)
{
if($form_state['values']['field_zhuanjian_chuli']==2){
drupal_set_message('关闭事件成功');
}
else {
drupal_set_message('转交或处理成功');
drupal_set_message('已转到'.$toDevnode->title);
}
}
else
{
drupal_set_message('转交或处理失败,请重新来一次。', 'error');
}
}
function getCurrZjRecord()
{
//global $node;
$node = menu_get_object();
if($node->type != 'event_wzdl'){
return '';
}
/*$sql = "select no.title,person.field_send_person_value,no.created,dev.field_zhuanjian_desc_value from {node} as no
inner join {content_field_event} as rel
on rel.nid=no.nid left join {content_type_to_development} as dev
on no.nid=dev.nid inner join content_field_send_person as person
on no.uid=person.nid
where rel.field_event_nid='%d' order by rel.nid asc";
$result = db_query($sql,$node->nid);
while ($rowObject = db_fetch_object($result))
{
//$rows['time']= date('Y-m-d H:i:s',$rowObject->created);
$rows[]= array($rowObject->field_send_person_value,$rowObject->title,
date('Y-m-d H:i:s',$rowObject->created),$rowObject->field_zhuanjian_desc_value);
}*/
$rowObjs= _getToDevNids($node->nid,'asc');
//反正转交不含第一个
array_splice($rowObjs, 0, 1);
//如果是处理 或关闭 去掉最后一个
if($node->field_zhuanjian_chuli[0]['value']==1 || $node->field_zhuanjian_chuli[0]['value']==2)
{
array_splice($rowObjs, count($rowObjs)-1);
}
foreach($rowObjs as $rowObj){
$rows[] = array($rowObj->field_send_person[0]['value'],user_load($rowObj->uid)->profile_department,$rowObj->title,
date('Y-m-d H:i:s',$rowObj->created),$rowObj->field_zhuanjian_desc[0]['value'],);
}
$headers = array('转交人','转交部门','转交到部门','时间','转交说明');
$content = theme('table',$headers, $rows);
//return $sql;
return $content;
/* $query = "select nid,title,created from {node}";
$queryResult = db_query_range($query, 0 ,10);
$links = array();
while ($node = db_fetch_object($queryResult))
{
$links[] = l($node->title,'node/'.$node->nid);
}
$block['content'] = theme('item_list', $links);
$block['subject'] = '我的第二个block';*/
}
//自定义区块所放的内容
function execself_block($op='list',$delta=0)
{
//return array();
if ($op=='list'){
$blocks[0]['info'] = '历史转交记录';
return $blocks;
}
else if($op == 'view'){
if($delta==0){
$blocks['subject'] = '历史转交记录';
$blocks['content'] = getCurrZjRecord();
return $blocks;
}
}
/*switch ($op)
{
case 'list' :
$block[0]['info'] = '历史转交记录';
return $block;
case 'view' :
switch ($delta)
{
case 0 :
$block['subject'] = '历史转交记录';
$content = getCurrZjRecord();
$block['content'] = getCurrZjRecord();
break;
}
return $block;
break;
}*/
}
//定义权限 仅仅指明什么权限对这个模块可用
function execself_perm(){
return array('处理 关闭事件','处理 客服部事件',
'处理 平台部事件','处理 监控部事件','处理 运营部事件',
'处理 运维部事件','处理 计费平台事件','处理 关闭事件');
}
//function execself_form_alter(&$form, &$form_state, $form_id) {
// 先判断form id,只修改某form
//if ($form_id == 'event_wzdl_node_form') {
// 调试时候,打印$form出来看下
//print '<pre>'. check_plain(print_r($form, 1)) .'</pre>';
// 修改form跳转路径
// $form['#redirect'] = url('xxoo');
//}
//}
function _getTotalRoles()
{
return array('jiankongbu'=>'监控部','jifenpingtai'=>'计费平台',
'kefubu'=>'客服部','kefuguanbi'=>'客服关闭','pingtaibu'=>'平台部',
'yunweibu'=>'运维部','yunyingbu'=>'运营部');
}
//这里用 hook_views_pre_view 过进行过滤
function execself_views_pre_view(&$view, &$display_id, &$args)
{
if($view->name == 'event_list')
{
global $user;
////部门中文值
//db_result是直接取到第一个值
$departValue = db_result(db_query("select pro_val.value from profile_values as pro_val
where pro_val.uid='%d' and pro_val.fid=2 ", $user->uid));//fid为2就是表示所属部门
$departArrs = _getDevArr();
$departKey = array_keys($departArrs,$departValue); //得到部门的英文键 en|cn 英文是键,中文是值
$filters = $view->display_handler->get_option('filters');
//var_dump($filters['field_to_development_value']['value']);exit;
$filters['field_to_development_value']['value'] = $departKey;
$view->display_handler->override_option('filters', $filters);
}
}
/*function execself_views_pre_view(&$view, &$display_id, &$args)
{
if($view->name == 'event_list')
{
$totalRoles=_getTotalRoles();
global $user;
$roles=$user->roles;
$accessRoleKeys=array();
foreach($totalRoles as $keyRole=>$keyValue)
{
if(in_array($keyValue,$roles))
{
//事实上只有一个其实就是$accessRoleKeys[0];
$accessRoleKeys[] = $keyRole;
}
}
$filters = $view->display_handler->get_option('filters');
//var_dump($filters['field_to_development_value']['value']);exit;
$filters['field_to_development_value']['value'] = $accessRoleKeys[0];
$view->display_handler->override_option('filters', $filters);
}
}*/
//hook_menu
function execself_menu()
{
$items['/node/add/page/%'];
$items['node/add/event-wzdl/%'] = array(
'title'=>'快捷递交',
'access arguments'=> array('recreate event-wzdl')
);
return $items;
}