Exemplo n.º 1
0
 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;
 }
Exemplo n.º 2
0
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);
}
Exemplo n.º 3
0
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;
}
Exemplo n.º 4
0
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>&nbsp;</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;
}