欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

平忠自己开发的模块功能

shiping1 的头像

<?php
 

function shipingzhongcustom_perm() {
            //return array('access test001 content');
            return array('batch add multi node','batch add bianjiwritearticle','batch add browsernumreport','batch add shoululingreport','access jingjia zong jisuan','access kefu zong jisuan');
}

//修改 menu hook 能够批量添加多个节点的权限
function shipingzhongcustom_menu_alter(&$items) {
  // Example - disable the page at node/add
  //var_dump($items);var_dump("DDDDDDDd");
  $items['multi_node_add']['access callback']='user_access';
  $items['multi_node_add']['access arguments']=array('batch add multi node');
   //$items['user/%user/edit']['access callback'] = 'user_access';
  // $items['user/%user/edit']['access arguments'] = array('edit own info');
    $items['multi_node_add/bianjiwritearticle?fields=field_wangchi_many,field_artivle_title,field_artivle_url,field_time,field_shoulu,field_baidu_paiming&num=10']['access callback']='user_access';
  $items['multi_node_add/bianjiwritearticle?fields=field_wangchi_many,field_artivle_title,field_artivle_url,field_time,field_shoulu,field_baidu_paiming&num=10']['access arguments']=array('batch add bianjiwritearticle');
 
    $items['multi_node_add/browsernumreport?fields=field_wangchi_many,field_yesterday,field_paiming&num=10']['access callback']='user_access';
  $items['multi_node_add/browsernumreport?fields=field_wangchi_many,field_yesterday,field_paiming&num=10']['access arguments']=array('batch add browsernumreport');
 
    $items['multi_node_add/shoululingreport?fields=field_wangchi_many,field_yesterday,field_paiming&num=10']['access callback']='user_access';
  $items['multi_node_add/shoululingreport?fields=field_wangchi_many,field_yesterday,field_paiming&num=10']['access arguments']=array('batch add shoululingreport');
 
}
 

//操作时间总表与三大总表关系
function _opraZongReration($node)
{
    
                switch ($node->type) {
                        case 'jingjiazongbiaotype':
                            $nodeTypeColNid = 'field_jingjiazong_nid';
                            break;
                        case 'kefuzongbiaotype':
                            $nodeTypeColNid = 'field_kfzhong_nid';
                            break;
                        case 'seozongbiaotype':
                            $nodeTypeColNid = 'field_seozong_nid';
                            break;                                                        
                        default:
                            break;
                    }
                    if(!empty($nodeTypeColNid)){
                        //得到时间总表的id
                        $sql = "select nid from {content_type_timezongtype} where $nodeTypeColNid='%d'";
                        $result = db_query($sql, $node->nid);
                        //得到时间节点的id;
                        $timeZongTypeNidObj   = db_fetch_object($result);    
                        //更新 时间总表与 三大总表的关系                
                        $sql = "update {content_type_timezongtype} set $nodeTypeColNid=null where $nodeTypeColNid='%d'";    
                                
                        db_query($sql, $node->nid);
                        
                        $oldZongTypeTimeObj = node_load($timeZongTypeNidObj->nid);    
                        
                        
                        //如果这个时间总表 三个 副表都不指向的话 就删掉这个时间总表                        
                        if(empty($oldZongTypeTimeObj->field_jingjiazong[0][nid]) && empty($oldZongTypeTimeObj->field_kfzhong[0][nid]) && empty($oldZongTypeTimeObj->field_seozong[0][nid]))
                        {
                                        
                             node_delete($oldZongTypeTimeObj->nid);
                        }
                        
                    }
    
}
 //在插入前 和插入后执行的动作
function shipingzhongcustom_nodeapi(&$node, $op, $a3 = null , $a4 = null){
    
    //在这三大总表保存前,看是否有 时间总表对象 如果没有的话 就 建一个总表对象 进行保存
    if($op == 'presave')
    {
        if($node->type == 'jingjiazongbiaotype' || $node->type == 'kefuzongbiaotype' || $node->type == 'seozongbiaotype')
        {
            
            //如果是更新的情况下,我们就删除时间总表原来的对表的 竞价总表 或 客服总表 或 SEO总表
            if(!empty($node->nid)){
                _opraZongReration($node);
                
            }
            
            $field_zong_time = $node->field_zong_time[0]['value'];
            $sql ="select no.nid from {node} as  no inner join {content_field_zong_time} as time on no.nid=time.nid where
                   no.type='timezongtype' and time.field_zong_time_value='%s' limit 0,1";
            $result = db_query($sql,$field_zong_time);
            $timeZongTypeObj   = db_fetch_object($result);       
            if(empty($timeZongTypeObj)){
                $timeZongTypeObj = (object)$timeZongTypeObj; //创建空节点对象
                $timeZongTypeObj->uid = 1; // 创建订单者统一设为超级管理员
                $timeZongTypeObj->type = 'timezongtype'; //节点类型为“订单”
                $timeZongTypeObj->title = '时间总表';
                $timeZongTypeObj->field_zong_time[0]['value'] = $field_zong_time;
                $timeZongTypeObj->language = 'zh-hans';
                node_save($timeZongTypeObj);
                
            }
            
        }    
    }
    //假如三大总表是保存后,就把它三大表置为 时间总表的引用对象  //
    //更新也有可能会执行执行了
    if($op == 'insert' || $op == 'update')
    {
        if($node->type == 'jingjiazongbiaotype' || $node->type == 'kefuzongbiaotype' || $node->type == 'seozongbiaotype')
        {
            
            $field_zong_time = $node->field_zong_time[0]['value'];
            $sql ="select no.nid from {node} as  no inner join {content_field_zong_time} as time on no.nid=time.nid where
                   no.type='timezongtype' and time.field_zong_time_value='%s' limit 0,1";
            $result = db_query($sql,$field_zong_time); // 返回的是总表的nid;
            $tmpTimeZongTypeObj   = db_fetch_object($result);      // 此时 时间总表 应该是存在的,  ,这个只有nid的对象
            $timeZongTypeObj      = node_load($tmpTimeZongTypeObj->nid);//到数据库里加载它
            if($node->type == 'jingjiazongbiaotype'){
                $timeZongTypeObj->field_jingjiazong[0][nid] =  $node->nid;
            }
            if($node->type == 'kefuzongbiaotype'){
                $timeZongTypeObj->field_kfzhong[0][nid] =  $node->nid;
            }
            if($node->type == 'seozongbiaotype'){
                $timeZongTypeObj->field_seozong[0][nid] =  $node->nid;
            }    
            
            node_save($timeZongTypeObj);                    
        }    
    }    
    
    //删除三大总表时进行的操作
    if($op == 'delete')
    {
        if($node->type == 'jingjiazongbiaotype' || $node->type == 'kefuzongbiaotype' || $node->type == 'seozongbiaotype')
        {
            _opraZongReration($node);
        }
        
    }
}


function  shipingzhongcustom_views_pre_view(&$view, &$display_id, &$args)
{
    global $user;
    
    //$arr = get_object_vars($view);//得到view数组
    //var_dump(array_keys($arr)); //得到 view的所有键组成的数组
     //var_dump($view->name); //得到的是views的名称 allcontentview
    //var_dump($view->current_display); //得到的是当前视图display  的名称 page_14 也就是$display_id吧
    //var_dump($view->db_table); //得到的是字段名
   //    $arr = get_object_vars($view->display_handler);得到display_handler 也就是在view中配置所组成的数组
   //    var_dump(array_keys($arr));exit;//得到display_handler 也就是在view中配置的所有键
   // var_dump($view->display_handler->get_option('filters'));得到过滤器数组
   if( $view->name=='allcontentview' &&  $display_id=='page_14')
   {
       $allfields = $view->display_handler->get_option('fields');//得到所有的显示的字段的数组
       if(!user_access('view field_baidu_szfzxx_xiaofei')) {
            unset($allfields['php']); //没有 查看 (百度 szfzxx 消费)    (所以无法计算单价)的时候 删掉这个列 (百度 szfzxx 单价)吧
            unset($allfields['php_3']); //没有 查看 (百度 szfzxx 消费)  的时候 删掉这个列 (百度 竞价 总消费)吧
            unset($allfields['php_4']); //没有 查看 (百度 szfzxx 消费)  的时候  (当然也就无权查看百度szfzxx点击) 删掉这个列 (百度 竞价  总点击)吧
            unset($allfields['php_5']); //没有 查看 (百度 szfzxx 消费)  的时候   (所以无法计算单价)删掉这个列     (百度 竞价 总平均 单价)吧
       }
       if(!user_access('view field_baidu_400_szfzxx_xiaofei')) {
            unset($allfields['php_1']); //没有 查看 (百度 4000512126 消费)  的时候 删掉这个列 (百度 4000512126 单价)吧
            
       }
       if(!user_access('view field_baidu_ukart_szfzxx_xiaofei')) {
            unset($allfields['php_2']); //没有 查看 (百度 ukart086 消费)  的时候 删掉这个列 (百度 ukart086 单价)吧
            
       }
       if(!user_access('view field_sougou_wzfzxx_xiaofei')) {
            unset($allfields['php_9']); //没有 查看 (搜狗  wzfzxx 消费)  的时候 删掉这个列 (搜狗  wzfzxx 单价)吧
            unset($allfields['php_6']); //没有 查看 (搜狗  wzfzxx 消费)  的时候 删掉这个列 (搜狗  wzfzxx 总消费)吧
            unset($allfields['php_7']); //没有 查看 (搜狗  wzfzxx  消费)  的时候  (当然也就无权查看搜狗  wzfzxx点击) 删掉这个列 (搜狗竞价总点击 (它只有一个wzfzxx))吧
            unset($allfields['php_8']); //没有 查看 (搜狗  wzfzxx   消费)  的时候  (所以无法计算单价) 删掉这个列     (搜搜 竞价 总平均 单价(它只有一个wzfzxx))吧
       }
       
       if(!user_access('view field_sousou_szfzxx_xiaofei')) {
            unset($allfields['php_10']); //没有 查看 (搜搜 szfzxx 消费)  的时候 删掉这个列 (搜搜 szfzxx 单价)吧
            unset($allfields['php_13']);//没有 查看 (搜搜 szfzxx 消费)  的时候 删掉这个列 (搜搜 竞价 总消费)吧
            unset($allfields['php_14']);//没有 查看 (搜搜 szfzxx 消费)  的时候  (当然也就无权查看搜搜szfzxx点击) 删掉这个列 (搜搜 竞价  总点击)吧
            unset($allfields['php_15']);//没有 查看 (搜搜 szfzxx 消费)  的时候   (所以无法计算单价)删掉这个列     (搜搜 竞价 总平均 单价)吧
            
       }
       if(!user_access('view field_sousou_400_xiaofei')) {
            unset($allfields['php_11']); //没有 查看 (搜搜 4000512126 消费)  的时候 删掉这个列 (搜搜 4000512126  单价)吧
            
       }                        
       if(!user_access('view field_sousou_ukart_xiaofei')) {
            unset($allfields['php_12']); //没有 查看 (搜搜 ukart086 消费)  的时候 删掉这个列 (搜搜 ukart086 单价)吧
            
       }
       if(!user_access('view field_360_szfzxx_xiaofei')) {
            unset($allfields['php_16']); //没有 查看 (360 szfzxx 消费)  的时候 删掉这个列 (360 szfzxx 单价)吧
            unset($allfields['php_19']); //没有 查看 (360 szfzxx 消费)  的时候 删掉这个列 (360 竞价 总消费)吧
            unset($allfields['php_20']); //没有 查看 (360 szfzxx 消费)  的时候  (当然也就无权查看360szfzxx点击) 删掉这个列 (360 竞价  总点击)吧
            unset($allfields['php_21']); //没有 查看 (360 szfzxx 消费)  的时候   (所以无法计算单价)删掉这个列     (360 竞价 总平均 单价)吧
       }
       if(!user_access('view field_360_400_xiaofei')) {
            unset($allfields['php_17']); //没有 查看 (360 4000512126 消费)  的时候 删掉这个列 (360 4000512126 单价)吧
            
       }    
       if(!user_access('view field_360_ukart_xiaofei')) {
            unset($allfields['php_18']); //没有 查看 (360 ukart 消费)  的时候 删掉这个列 (360 ukart 单价)吧
            
       }
       //查看竞价总表计算的权限
       if (!user_access('access jingjia zong jisuan'))
       {
            unset($allfields['php_22']); //没有 查看 竞价总表计算的权限
            unset($allfields['php_23']); //没有 查看 竞价总表计算的权限
            unset($allfields['php_24']); //没有 查看 竞价总表计算的权限
            unset($allfields['php_25']); //没有 查看 竞价总表计算的权限
            unset($allfields['php_26']); //没有 查看 竞价总表计算的权限
            unset($allfields['php_27']); //没有 查看 竞价总表计算的权限
            unset($allfields['php_28']); //没有 查看 竞价总表计算的权限
            unset($allfields['php_29']); //没有 查看 竞价总表计算的权限
            unset($allfields['php_30']); //没有 查看 竞价总表计算的权限
       }
       //查看 客服总表计算的权限
       if(!user_access('access kefu zong jisuan')) {
            unset($allfields['php_31']); //没有 查看 客服总表计算的权限
            unset($allfields['php_32']); //没有 查看 客服总表计算的权限
            unset($allfields['php_33']); //没有 查看 客服总表计算的权限
            unset($allfields['php_34']); //没有 查看 客服总表计算的权限
            unset($allfields['php_35']); //没有 查看 客服总表计算的权限
            unset($allfields['php_36']); //没有 查看 客服总表计算的权限
       }
       //var_dump($allfields['edit_node']);
           //var_dump($allfields['edit_node_1']);
           //var_dump($allfields['edit_node_2']);
           //echo "<pre>";
               //   var_dump($allfields);exit;
       //看有没有编辑任意竞价总表权限
       unset($allfields['edit_node']);  //看有没有编辑任意竞价总表权限 因为使用php_37 这里直接移除
       unset($allfields['edit_node_1']);   //看有没有编辑任意客服总表权限 因为使用php_38 这里直接移除
       unset($allfields['edit_node_2']); //看有没有编辑任意SEO总表权限 因为使用php_39 这里直接移除
       if(!user_access('edit any jingjiazongbiaotype content')) {
            
            unset($allfields['php_37']);  //看有没有编辑任意竞价总表权限
       }       
       //看有没有编辑任意客服总表权限
       if(!user_access('edit any kefuzongbiaotype content')) {
            
            unset($allfields['php_38']);  //看有没有编辑任意竞价总表权限
       }       
       //看有没有编辑任意SEO总表权限
       if(!user_access('edit any seozongbiaotype content')) {
            
            unset($allfields['php_39']);  //看有没有编辑任意竞价总表权限
       }       
             
          //在去掉某些字段后  最后超越这个数组
          $view->display_handler->override_option('fields',$allfields);
       
   }
   
   
    
    
    
}

普通分类: