Ejemplo n.º 1
0
function plugin_mypage_convert()
{
    global $_mypage_msg;
    @(list($is_page) = func_get_args());
    $is_page = empty($is_page) ? false : true;
    $auth_key = Auth::get_user_info();
    // 認証確認
    if (empty($auth_key['key'])) {
        return '';
    }
    // マイページ利用の確認
    if (empty($auth_key['mypage'])) {
        return '';
    }
    // マイページの作成により制御
    // マイページ未作成の場合
    // is_page : true  -> プラグイン利用ページに遷移 -> #mypage(1)
    //         : false -> 新規作成画面に遷移         -> #mypage
    // The page cannot be prepared. -> ページの準備ができていません。
    if ($is_page && !is_page($auth_key['mypage'])) {
        return $_mypage_msg['msg_no_page'];
    }
    // 画面に誘導
    header('Location: ' . get_page_location_uri($auth_key['mypage']));
    // 誘導失敗時の対処(ブラウザによる)
    die_message($_mypage_msg['err_jump']);
}
Ejemplo n.º 2
0
function plugin_group_convert()
{
    global $_group_msg;
    $auth_key = Auth::get_user_info();
    if (empty($auth_key['group'])) {
        return '';
    }
    $argv = func_get_args();
    $i = count($argv);
    if ($i < 2) {
        return <<<EOD
<div>
\t<label>{$_group_msg['group']}</label>:
\t{$auth_key['group']}
</div>

EOD;
    }
    $msg = $argv[$i - 1];
    array_pop($argv);
    if (in_array($auth_key['group'], $argv)) {
        return RendererFactory::factory(str_replace("\r", "\n", $msg));
    }
    return '';
}
Ejemplo n.º 3
0
function plugin_navibar_convert()
{
    global $do_backup, $trackback, $referer;
    global $function_freeze;
    global $vars;
    global $whatsnew, $whatsdeleted;
    /*
    	if ($_LINK['reload'] == '') {
    		return '<p class="message_box ui-state-error ui-corner-all">#navibar: plugin called from wikipage. skipped.</p>';
    	}
    */
    $_page = isset($vars['page']) ? $vars['page'] : null;
    $is_read = arg_check('read') && is_page($_page);
    $is_freeze = is_freeze($_page);
    $is_readonly = Auth::check_role('readonly') || PKWK_READONLY == Auth::ROLE_AUTH && Auth::get_role_level() > Auth::ROLE_AUTH ? true : false;
    $cmd = isset($vars['cmd']) ? $vars['cmd'] : null;
    $num = func_num_args();
    $args = $num ? func_get_args() : array();
    if (IS_MOBILE) {
        $ret[] = '<ul data-role="listview">';
    } else {
        $ret[] = '<ul>';
    }
    while (!empty($args)) {
        $name = array_shift($args);
        switch ($name) {
            case 'freeze':
            case 'unfreeze':
                if ($is_read && $function_freeze && !($_page == $whatsnew || $_page == $whatsdeleted)) {
                    if ($is_freeze) {
                        $name = 'unfreeze';
                    } else {
                        $name = 'freeze';
                    }
                    $ret[] = _navibar($name);
                }
                break;
            case 'list':
                if ($cmd !== 'list') {
                    $ret[] = _navibar($name);
                } else {
                    $ret[] = _navibar('filelist');
                }
                break;
            case 'backup':
                if ($do_backup) {
                    $ret[] = _navibar($name);
                }
                break;
            case 'brokenlink':
            case 'template':
            case 'source':
            case 'diff':
            case 'reload':
            case 'copy':
                if ($is_read || !empty($_page) && !($_page == $whatsnew || $_page == $whatsdeleted)) {
                    $ret[] = _navibar($name);
                }
                break;
            case 'trackback':
                if ($trackback) {
                    if (!empty($_page) && !($_page == $whatsnew || $_page == $whatsdeleted)) {
                        $ret[] = _navibar($name, 'Trackback(' . tb_count($_page) . ')');
                    } else {
                        //		$ret[] = _navibar($name, 'Trackback list');
                    }
                }
                break;
            case 'referer':
            case 'skeylist':
            case 'linklist':
                if ($referer && !empty($_page)) {
                    $ret[] = _navibar($name);
                }
                break;
            case 'log':
                if (!empty($_page)) {
                    $ret[] = _navibar($name);
                }
            case '|':
                if (end($ret) !== '<ul>') {
                    $ret[] = '</ul>';
                    $ret[] = "\n";
                    $ret[] = !IS_MOBILE ? '<ul>' : '<ul data-role="listview">';
                }
                break;
            case 'attach':
            case 'upload':
                if ($is_read && (bool) ini_get('file_uploads') && !$is_freeze && !($_page == $whatsnew || $_page == $whatsdeleted) && !$is_readonly) {
                    $ret[] = _navibar($name);
                }
                break;
            case 'new':
            case 'newsub':
            case 'edit':
            case 'guiedit':
                if (!empty($_page) && $is_read && $function_freeze && !$is_freeze && !($_page == $whatsnew || $_page == $whatsdeleted) && !$is_readonly) {
                    $ret[] = _navibar($name);
                }
                break;
            case 'login':
                $auth_key = Auth::get_user_info();
                if (empty($auth_key['key'])) {
                    $ret[] = _navibar($name);
                }
                break;
            default:
                $ret[] = _navibar($name);
                break;
        }
    }
    if (end($ret) === '<ul>') {
        array_pop($ret);
        array_pop($ret);
    } else {
        $ret[] = '</ul>';
    }
    $body = "\n" . join('', $ret) . "\n";
    if (IS_MOBILE) {
        return $body;
    } else {
        return '<nav class="navibar">' . $body . '</nav>' . "\n";
    }
}
Ejemplo n.º 4
0
 /**
  * ページのリンクリストを作る
  * @param $pages ページ
  * @param $cmd 使用するプラグイン
  * @param boolean $with_filename ページのファイル名も表示する
  * @return string
  */
 private static function getPageLists($pages, $cmd, $with_filename)
 {
     global $read_auth_pages;
     $contents = array();
     // ユーザ名取得
     $auth_key = Auth::get_user_info();
     // コンテンツ管理者以上は、: のページも閲覧可能
     $has_permisson = Auth::check_role('role_contents_admin');
     foreach ($pages as $page) {
         $wiki = Factory::Wiki($page);
         // 存在しない場合、当然スルー
         if (!$wiki->has()) {
             continue;
         }
         // 隠しページの場合かつ、隠しページを表示できる権限がない場合スルー
         if ($wiki->isHidden() && $has_permisson) {
             continue;
         }
         // 閲覧できる権限がない場合はスルー
         if (!$wiki->isReadable()) {
             continue;
         }
         $_page = Utility::htmlsc($page, ENT_QUOTES);
         $url = $wiki->uri($cmd);
         if (!IS_MOBILE) {
             $contents[] = '<li><a href="' . $url . '">' . $_page . '</a> ' . $wiki->passage() . ($with_filename ? '<br /><var>' . Utility::htmlsc($wiki->filename) . '</var>' : '') . '</li>';
         } else {
             $contents[] = '<li><a href="' . $url . '" data-transition="slide">' . $_page . '</a>' . '<span class="ui-li-count">' . $wiki->passage(false, false) . '</span></li>';
         }
     }
     return $contents;
 }
Ejemplo n.º 5
0
function dav_get_existpages_cache()
{
    static $retval, $attaches;
    $cache_name = CACHE_DIR . PKWK_EXSISTS_DATA_CACHE;
    if (!cache_timestamp_compare_date('wiki', $cache_name)) {
        unset($retval);
    }
    if (isset($retval)) {
        return $retval;
    }
    $retval = array();
    $auth_key = Auth::get_user_info();
    $pages = get_existpages_cache(DATA_DIR, PKWK_TXT_EXTENTION, false);
    if (!isset($attaches)) {
        $attaches = get_attachfiles_cache();
    }
    foreach ($pages as $file => $val) {
        $_page = $val['page'];
        $_time = $val['time'];
        $wiki = Factory::Wiki($_page);
        if ($wiki->isHidden()) {
            continue;
        }
        //if (is_ignore_page($_page)) continue;
        if (!$wiki->isReadable()) {
            continue;
        }
        if (PLUGIN_DAV_SHOWONLYEDITABLE && !$wiki->isEditable()) {
            continue;
        }
        $retval[$_page]['time'] = $_time;
        $retval[$_page]['file'] = isset($attaches[$_page]) ? $attaches[$_page] : array();
    }
    asort($retval);
    return $retval;
}
Ejemplo n.º 6
0
function plugin_login_inline()
{
    if (PKWK_READONLY != Auth::ROLE_AUTH) {
        return '';
    }
    $auth_key = Auth::get_user_info();
    // Offline
    if (empty($auth_key['key'])) {
        return plugin_login_auth_guide();
    }
    // Online
    return PluginRenderer::hasPlugin($auth_key['api']) ? PluginRenderer::executePluginInline($auth_key['api']) : '';
}
Ejemplo n.º 7
0
        Utility::dieMessage(sprintf($_string['plugin_not_implemented'], Utility::htmlsc($cmd)), 501);
    } else {
        // プラグインのactionを実行する。
        // 帰り値:array('title', 'body', 'http_code');
        $retvars = PluginRenderer::executePluginAction($cmd);
    }
}
if ($is_protect) {
    // Location で飛ぶようなプラグインの対応のため
    // 上のアクションプラグインの実行後に処理を実施
    PluginRenderer::executePluginBlock('protect');
    die('<var>PLUS_PROTECT_MODE</var> is set.');
}
///////////////////////////////////////
// Page output
$auth_key = Auth::get_user_info();
$base = $defaultpage;
if (!empty($auth_key['home']) && isset($vars['page']) && ($vars['page'] == $defaultpage || $vars['page'] == $auth_key['home'])) {
    // ログイン時のホームページを基準とする(実際はあまり使われてないが)
    $base = $defaultpage = $auth_key['home'];
} else {
    $base = isset($vars['page']) ? $vars['page'] : $defaultpage;
}
$s_base = Utility::htmlsc(Utility::stripBracket($base));
if (isset($retvars['msg']) && !empty($retvars['msg'])) {
    $title = str_replace('$1', $s_base, $retvars['msg']);
    $page = str_replace('$1', Factory::Wiki($base)->link('related'), $retvars['msg']);
} else {
    $title = $s_base;
    $page = Factory::Wiki($base)->link('related');
}