Php “Drupal”;“您无权访问此页面”;
我已经从MIA开发人员那里接管了网站的管理工作,并花了一天的时间试图找到这个答案 升级到V7.56后,作为管理员,我无法访问的页面列表中只有一个特定页面。(不幸的是,这可能是我们管理面板中最需要的报告) 以下是我所知道的:Php “Drupal”;“您无权访问此页面”;,php,drupal,drupal-7,Php,Drupal,Drupal 7,我已经从MIA开发人员那里接管了网站的管理工作,并花了一天的时间试图找到这个答案 升级到V7.56后,作为管理员,我无法访问的页面列表中只有一个特定页面。(不幸的是,这可能是我们管理面板中最需要的报告) 以下是我所知道的: Drupal版本7.56 PHP7.0.20 运行状态报告时没有错误 计时-无错误 以下是我所做的: 添加了$cookie_domain='.example.com';到settings.php 已清除浏览器缓存和cookie 确保管理员可以访问所有内容 已清除站点缓存
- Drupal版本7.56
- PHP7.0.20
- 运行状态报告时没有错误
- 计时-无错误
功能自定义报告菜单(){
$items['administration/uncoming classes']=数组(
“标题”=>“即将到来的课程”,
'页面回调'=>'自定义\u报告\u即将到来的\u类\u页面',
“访问回调”=>“用户访问”,
“访问参数”=>array('admin wdcc reports'),
'文件'=>'包括/custom_reports.uncoming classes.inc',
“键入”=>菜单\u回调,
);
$items['administration/class details']=数组(
“标题”=>“类别详细信息”,
“页面回调”=>“自定义报告\u类\u详细信息\u页面”,
“访问回调”=>“用户访问”,
“访问参数”=>array('admin wdcc reports'),
'文件'=>'包括/custom_reports.class details.inc',
“键入”=>菜单\u回调,
);
退回$items;
}
函数自定义\报告\即将到来的\类\页面(){
drupal_添加_css(base_path().path_to_theme()。/assets/css/expurst accounts.css',数组('type'=>'external');
全球$用户;
$uid=$user->uid;
$output='';
$coming_classes=自定义_报告_获取_coming_classes();
$attendee_count=自定义_报告_获取_attendee_count();
//即将到来的课程
$output.='即将到来的课程';
$output.=自定义报告\格式\即将到来的\课程($output课程,$ATTENDER \计数);
返回$output;
}
函数自定义报告权限(){
返回数组(
“管理员wdcc报告”=>数组(
'title'=>t('Admin WDCC Reports'),
'description'=>t('为WDCC执行管理任务'),
//'cache'=>DRUPAL\u NO\u缓存,
),
);
}
函数自定义报告获取即将到来的类(){
$today=日期('Y-m-d');
$x=0;
$classes='';
//从新的db表中获取类
$today=日期('Y-m-d H:i:s');
$result=db_query(“从节点n、字段数据字段日期fdfdfd中选择n.nid,其中n.status=:status和n.type=:type和n.nid=fdfdfdfd.entity\u id和fdfdfdfd.field\u date\u value>=:today ORDER BY fdfdfdfd.field\u date\u value ASC”,数组(':status'=>1',:type'=>“public\u class\u date',':today'=>);
如果($result->rowCount()>0){
foreach($结果为$行){
$nid=$row->nid;
$node=节点加载($nid);
$product_id=$nid;
$product\U title=$node->title;
$product_type='public_class_date';
$product_date=$node->字段_date[$node->语言][0]['value'];
$product\U datestamp=STROTIME($product\U date);
//$product\U datestamp=STROTIME($product\U date);
//设置变量
$classes[$x]['product\u id']=$product\u id;
$classes[$x]['product\u title']=$product\u title;
$classes[$x]['product\U type']=$product\U type;
$classes[$x]['product\u date']=$product\u date;
$classes[$x]['product_邮戳]=$product_邮戳;
$x++;
}
}
返回$classes;
}
函数自定义报告获取与会者计数(){
$attendes=array();
$old_attendes=array();
$new_attendes=array();
$result=db_query(“从wdcc_old_attendee中选择itemID、AttendeId、AttendeName”);
如果($result->rowCount()>0){
foreach($结果为$行){
$item_id=$row->itemID;
$attendee_id='B'。$row->attendee id;
$attendee_name=$row->attendename;
$old_attendes[$item_id][$attendee_id]['old_attendee_id']=$attendee_id;
如果(strpos($attendee_name,,&')>0 | strpos($attendee_name,,')>0){//
$old_attendes[$item_id][$attendee_id]['total_attendes']=2;
}否则{
$old_attendes[$item_id][$attendee_id]['total_attendes']=1;
}
}
}
if(是_数组($old_与会者)){
$connect_class_id=自定义_帐户_connect_class_id();
foreach($old_attenders as$old_item_id=>$attender_list){
if(isset($connect\u class\u id[$old\u item\u id])){
$product_id=$connect_class_id[$old_item_id];
foreach($attendee\u列表为$attendee\u id=>$attendee){
$old_attendee_id=$attendee['old_attendee_id'];
$attendes[$product_id][$old_attendes_id]['total_attendes']=$attendee['total_attendes'];
}
}
}
}
$result=db_query(“从交易id>0的wdcc_与会者中选择id、产品id”);
如果($result->rowCount()>0){
foreach($结果为$行){
$attendee_id=$row->id;
$product\U id=$row->product\U id;
$attendes[$product_id][$attendee_id]['total_attendes']=1;
}
}
$cancelled_attendes=array();
$result=db_查询(“从wdcc_与会者中选择*);
如果($result->rowCount()>0){
foreach($结果为$行){
$attendee\u id=$row->attendee\u id;
$old_attende
function custom_reports_menu() {
$items['administration/upcoming-classes'] = array(
'title' => 'Upcoming Classes',
'page callback' => 'custom_reports_upcoming_classes_page',
'access callback' => 'user_access',
'access arguments' => array('admin wdcc reports'),
'file' => 'includes/custom_reports.upcoming-classes.inc',
'type' => MENU_CALLBACK,
);
$items['administration/class-details'] = array(
'title' => 'Class Details',
'page callback' => 'custom_reports_class_details_page',
'access callback' => 'user_access',
'access arguments' => array('admin wdcc reports'),
'file' => 'includes/custom_reports.class-details.inc',
'type' => MENU_CALLBACK,
);
return $items;
}
function custom_reports_upcoming_classes_page() {
drupal_add_css(base_path().path_to_theme().'/assets/css/outburst-accounts.css', array('type' => 'external'));
global $user;
$uid = $user->uid;
$output = '';
$upcoming_classes = custom_reports_get_upcoming_classes();
$attendee_count = custom_reports_get_attendee_count();
// upcoming classes
$output .= '<h2>Upcoming Classes</h2>';
$output .= custom_reports_format_upcoming_classes($upcoming_classes, $attendee_count);
return $output;
}
function custom_reports_permission() {
return array(
'admin wdcc reports' => array(
'title' => t('Admin WDCC Reports'),
'description' => t('Perform administration tasks for WDCC.'),
//'cache' => DRUPAL_NO_CACHE,
),
);
}
function custom_reports_get_upcoming_classes() {
$today = date('Y-m-d');
$x = 0;
$classes = '';
// get classes from new db tables
$today = date('Y-m-d H:i:s');
$result = db_query("SELECT n.nid FROM node n, field_data_field_date fdfd WHERE n.status = :status AND n.type = :type AND n.nid = fdfd.entity_id AND fdfd.field_date_value >= :today ORDER BY fdfd.field_date_value ASC", array(':status' => 1, ':type' => 'public_class_date', ':today' => $today));
if ($result->rowCount() > 0) {
foreach ($result as $row) {
$nid = $row->nid;
$node = node_load($nid);
$product_id = $nid;
$product_title = $node->title;
$product_type = 'public_class_date';
$product_date = $node->field_date[$node->language][0]['value'];
$product_datestamp = strtotime($product_date);
//$product_datestamp = strtotime($product_date);
// set vars
$classes[$x]['product_id'] = $product_id;
$classes[$x]['product_title'] = $product_title;
$classes[$x]['product_type'] = $product_type;
$classes[$x]['product_date'] = $product_date;
$classes[$x]['product_datestamp'] = $product_datestamp;
$x++;
}
}
return $classes;
}
function custom_reports_get_attendee_count() {
$attendees = array();
$old_attendees = array();
$new_attendees = array();
$result = db_query("SELECT itemID, attendeeID, attendeeName FROM wdcc_old_attendee");
if ($result->rowCount() > 0) {
foreach ($result as $row) {
$item_id = $row->itemID;
$attendee_id = 'B'.$row->attendeeID;
$attendee_name = $row->attendeeName;
$old_attendees[$item_id][$attendee_id]['old_attendee_id'] = $attendee_id;
if (strpos($attendee_name, '&') > 0 || strpos($attendee_name, ' and') > 0) { // couples
$old_attendees[$item_id][$attendee_id]['total_attendees'] = 2;
} else {
$old_attendees[$item_id][$attendee_id]['total_attendees'] = 1;
}
}
}
if (is_array($old_attendees)) {
$connect_class_ids = custom_accounts_connect_class_ids();
foreach ($old_attendees as $old_item_id => $attendee_list) {
if (isset($connect_class_ids[$old_item_id])) {
$product_id = $connect_class_ids[$old_item_id];
foreach ($attendee_list as $attendee_id => $attendee) {
$old_attendee_id = $attendee['old_attendee_id'];
$attendees[$product_id][$old_attendee_id]['total_attendees'] = $attendee['total_attendees'];
}
}
}
}
$result = db_query("SELECT id, product_id FROM wdcc_attendees WHERE transaction_id > 0");
if ($result->rowCount() > 0) {
foreach ($result as $row) {
$attendee_id = $row->id;
$product_id = $row->product_id;
$attendees[$product_id][$attendee_id]['total_attendees'] = 1;
}
}
$cancelled_attendees = array();
$result = db_query("SELECT * FROM wdcc_attendees_cancelled");
if ($result->rowCount() > 0) {
foreach ($result as $row) {
$attendee_id = $row->attendee_id;
$old_attendee_id = 'B'.$row->old_attendee_id;
if ($attendee_id > 0) {
$cancelled_attendees[] = $attendee_id;
} else {
$cancelled_attendees[] = $old_attendee_id;
}
}
}
foreach ($attendees as $product_id => $product_attendees) {
foreach ($product_attendees as $attendee_id => $attendee) {
if (in_array($attendee_id, $cancelled_attendees)) {
unset($attendees[$product_id][$attendee_id]);
}
}
}
$attendee_count = array();
foreach ($attendees as $product_id => $product_attendees) {
foreach ($product_attendees as $attendee_id => $attendee) {
if (!isset($attendee_count[$product_id])) {
$attendee_count[$product_id] = $attendee['total_attendees'];
} else {
$attendee_count[$product_id] = $attendee_count[$product_id] + $attendee['total_attendees'];
}
}
}
return $attendee_count;
}
function custom_reports_format_upcoming_classes($upcoming_classes, $attendee_count) {
$output = '';
if (is_array($upcoming_classes)) {
$output .= '<div class="table-responsive table-container">';
$output .= '<table class="table">';
$output .= '<tr><td>Class</td><td>Guests</td><td>Actions</td></tr>';
foreach ($upcoming_classes as $class) {
$nid = $class['product_id'];
$node_url = url('node/'.$nid, array('absolute' => TRUE));
$attendees = 0;
if (isset($attendee_count[$nid])) {
$attendees = $attendee_count[$nid];
}
$output .= '<tr><td><a href="'.$node_url.'">'.$class['product_title'].'</a><br />'.date('m/d/Y - g:i A', $class['product_datestamp']).'</td><td>'.$attendees.'</td><td><a href="/administration/class-details/'.$class['product_id'].'">View roster</a></td></tr>';
}
$output .= '</table>';
$output .= '</div>';
} else {
$output .= '<p>No upcoming classes found.</p>';
}
return $output;
}