欢迎各位兄弟 发布技术文章
这里的技术是共享的
<?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);
}
}