function get_existpages($dir = DATA_DIR, $ext = '.txt') { $rc = array(); // ページ名の取得 $pages = get_existpages($dir, $ext); // ユーザ名取得 $uname = auth::check_auth(); // コンテンツ管理者以上は、: のページも閲覧可能 $is_colon = auth::check_role('role_adm_contents'); // 役割の取得 // $now_role = auth::get_role_level(); foreach ($pages as $file => $page) { if (!auth::is_page_readable($uname, $page)) { continue; } if (substr($page, 0, 1) != ':') { $rc[$file] = $page; continue; } // colon page if ($is_colon) { continue; } $rc[$file] = $page; } return $rc; }
function plugin_recent_convert() { global $vars, $date_format, $show_passage; // , $_recent_plugin_frame; static $exec_count = 1; $_recent_plugin_frame_s = _('recent(%d)'); $_recent_plugin_frame = sprintf('<h5>%s</h5><div>%%s</div>', $_recent_plugin_frame_s); $recent_lines = PLUGIN_RECENT_DEFAULT_LINES; if (func_num_args()) { $args = func_get_args(); if (!is_numeric($args[0]) || isset($args[1])) { return PLUGIN_RECENT_USAGE . '<br />'; } else { $recent_lines = $args[0]; } } // Show only N times if ($exec_count > PLUGIN_RECENT_EXEC_LIMIT) { return '#recent(): You called me too much' . '<br />' . "\n"; } else { ++$exec_count; } if (!file_exists(PLUGIN_RECENT_CACHE)) { return '#recent(): Cache file of RecentChanges not found' . '<br />'; } // Get latest N changes $lines = file_head(PLUGIN_RECENT_CACHE, $recent_lines); if ($lines == FALSE) { return '#recent(): File can not open' . '<br />' . "\n"; } $auth_key = auth::get_user_info(); $date = $items = ''; foreach ($lines as $line) { list($time, $page) = explode("\t", rtrim($line)); if (!auth::is_page_readable($page, $auth_key['key'], $auth_key['group'])) { continue; } $_date = get_date($date_format, $time); if ($date != $_date) { // End of the day if ($date != '') { $items .= '</ul>' . "\n"; } // New day $date = $_date; $items .= '<strong>' . $date . '</strong>' . "\n" . '<ul class="recent_list">' . "\n"; } $s_page = htmlspecialchars($page); if ($page === $vars['page']) { // No need to link to the page you just read, or notify where you just read $items .= ' <li>' . $s_page . '</li>' . "\n"; } else { $passage = $show_passage ? ' ' . get_passage($time) : ''; $items .= ' <li><a href="' . get_page_uri($page) . '"' . ' title="' . $s_page . $passage . '">' . $s_page . '</a></li>' . "\n"; } } // End of the day if ($date != '') { $items .= '</ul>' . "\n"; } return sprintf($_recent_plugin_frame, count($lines), $items); }
function read_auth($page, $auth_flag = TRUE, $exit_flag = TRUE) { global $read_auth, $read_auth_pages, $auth_api, $defaultpage, $_title; if (!$read_auth) { return true; } $info = auth::get_user_info(); if (!empty($info['key']) && auth::is_page_readable($page, $info['key'], $info['group'])) { return true; } if (!$auth_api['plus']['use']) { return auth::is_page_readable($page, '', ''); } $auth_func_name = get_auth_func_name(); // 未認証時で認証不要($auth_flag)であっても、制限付きページかの判定が必要 if ($auth_flag && !$auth_func_name($page, $auth_flag, $exit_flag, $read_auth_pages, $_title['cannotread'])) { return false; } return auth::is_page_readable($page, '', ''); if ($exit_flag) { // 無応答 header('Location: ' . get_page_location_uri($defaultpage)); die; } return false; }
function logview_user_list(&$fld, $page, $kind) { global $_logview_msg; // 登録ユーザ以上でなければ、他のユーザを知ることは禁止 if (auth::check_role('role_enrollee')) { return ''; } $all_user = auth::user_list(); $all_user_idx = 0; $excludes_user = array(); foreach ($all_user as $auth_api => $val1) { foreach ($val1 as $user => $val) { $group = empty($val['group']) ? '' : $val['group']; if ($kind != 'login' && !auth::is_page_readable($page, $user, $group)) { $excludes_user[$auth_api][$user] = ''; continue; } $all_user_idx++; } } $user_list = array(); foreach ($fld as $line) { $user_list[$line['auth_api']][$line['user']] = ''; } $check_list = array(); foreach ($all_user as $auth_api => $val1) { foreach ($val1 as $user => $val) { if (isset($user_list[$auth_api][$val['displayname']])) { continue; } if (isset($excludes_user[$auth_api][$user])) { continue; } $check_list[] = array('name' => $val['displayname'], 'auth_api' => $auth_api); } } $ctr = count($check_list); if ($ctr == 0) { return ''; } $ret = '<h4>' . $_logview_msg['info_unused'] . '</h4>' . "\n"; // 未確認者一覧 $ret .= '<div><fieldset>' . $_logview_msg['all_user'] . ': ' . $all_user_idx . ' ' . $_logview_msg['number_unused'] . ': ' . $ctr . ' ' . $_logview_msg['availability'] . ': ' . floor(100 - $ctr / $all_user_idx * 100) . '%</fieldset></div><div> </div>' . "\n"; // 人数 sort($check_list); $ctr = 0; foreach ($check_list as $user) { $ctr++; $ret .= '<small><strong>' . $ctr . '.</strong></small>' . $user['name']; if (PLUGIN_LOGVIEW_DISPLAY_AUTH_API) { $ret .= ' <small><span style="color: ' . PLUGIN_LOGVIEW_COLOR_AUTH_API . '">' . $user['auth_api'] . '</span></small>'; } $ret .= "\n"; } return $ret; }