Example #1
0
function plugin_backup_get_list($page)
{
    global $_backup_messages, $vars, $_button;
    $retval = array();
    $retval[] = '<p><a class="btn btn-secondary" href="' . Router::get_page_uri($page) . '">' . $_button['back'] . '</a></p>';
    $backup = Factory::Backup($page);
    $backups = $backup->get();
    if (empty($backups)) {
        $retval[] = '<p class="alert alert-info">' . str_replace('$1', make_pagelink($page), $_backup_messages['msg_nobackup']) . '</p>';
        return join('', $retval);
    } else {
        $retval[] = '<form action="' . Router::get_script_uri() . '" method="get" class="backup_select_form">';
        $retval[] = '<input type="hidden" name="cmd" value="backup" />';
        $retval[] = '<input type="hidden" name="page" value="' . Utility::htmlsc($page) . '" />';
        $age = isset($vars['age']) ? (int) $vars['age'] : null;
        $action = isset($vars['action']) && empty($vars['action']) ? $vars['action'] : 'diff';
        $actions = array('nowdiff' => $_backup_messages['msg_nowdiff'], 'diff' => $_backup_messages['msg_diff'], 'visaldiff' => $_backup_messages['msg_visualdiff'], 'source' => $_backup_messages['msg_source'], 'delete' => $_backup_messages['msg_delete'], 'rollback' => $_backup_messages['msg_rollback']);
        if (IS_MOBILE) {
            $retval[] = '<select name="age">';
            foreach ($backups as $backup_age => $data) {
                $time = isset($data['real']) ? $data['real'] : isset($data['time']) ? $data['time'] : '';
                $retval[] = '<option value="' . $backup_age . '"' . ($backup_age === $age ? ' selected="selected"' : '') . '>' . Time::format($time, false) . '</option>';
            }
            $retval[] = '</select>';
        } else {
            $retval[] = '<div class="panel panel-default">';
            $retval[] = '<div class="panel-heading">';
        }
        foreach ($actions as $val => $act_name) {
            $retval[] = '<label class="radio-inline">';
            $retval[] = '<input type="radio" name="action" value="' . $val . '"' . ($val === $action ? ' checked="checked"' : '') . ' />' . $act_name;
            $retval[] = '</label>';
        }
        if (IS_MOBILE) {
            $retval[] = '</fieldset>';
            $retval[] = '<input type="submit" value="' . $_backup_messages['btn_jump'] . '" />';
        } else {
            $retval[] = '<input type="submit"  class="btn btn-info" value="' . $_backup_messages['btn_jump'] . '" />';
            $retval[] = '</div>';
            $retval[] = '<div class="panel-body list_pages">';
            $retval[] = '<ol>';
            foreach ($backups as $backup_age => $data) {
                $time = isset($data['real']) ? $data['real'] : isset($data['time']) ? $data['time'] : '';
                $retval[] = '<li><input type="radio" name="age" value="' . $backup_age . '" id="r_' . $backup_age . '"' . ($backup_age === $age ? ' checked="checked"' : '') . ' /><label for="r_' . $backup_age . '">' . Time::format($time, false) . '</label>' . (!Auth::check_role('safemode') ? '<input type="checkbox" name="selectages[]" value="' . $backup_age . '" />' : '') . '</li>';
            }
            $retval[] = '</ol>';
            $retval[] = '</div>';
        }
    }
    $retval[] = '</form>';
    /*
    	$backups = _backup_file_exists($page) ? get_backup($page) : array();
    	if (empty($backups)) {
    		$retval[1] .= '   <li>' . str_replace('$1', make_pagelink($page), $_backup_messages['msg_nobackup']) . '</li>';
    		return join('', $retval);
    	}
    	$_anchor_from = $_anchor_to   = '';
    	$safemode = Auth::check_role('safemode');
    	foreach ($backups as $age=>$data) {
    		if (! PLUGIN_BACKUP_DISABLE_BACKUP_RENDERING) {
    			$_anchor_from = '<a href="' . get_cmd_uri('backup', $page, null, array('age'=>$age)) . '">';
    			$_anchor_to   = '</a>';
    		}
    		if (isset($data['real'])) {
    			$time = $data['real'];
    		}else if(isset($data['time'])){
    			$time = $data['time'];
    		}else{
    			$time = '';
    		}
    		$retval[1] .= '<li>';
    		if (! $safemode) {
    			$retval[1] .= '<input type="checkbox" name="selectages[]" value="'.$age.'" />';
    		}
    		$retval[1] .= $_anchor_from . format_date($time, TRUE) . $_anchor_to;
    
    		if (! $safemode) {
    			$retval[1] .= ' <nav class="navibar" style="display:inline;"><ul>';
    			$retval[1] .= '<li><a href="'. get_cmd_uri('backup', $page, null, array('action'=>'diff', 'age'=>$age)). '">' . $_backup_messages['msg_diff'] . '</a></li>';
    			$retval[1] .= '<li><a href="'. get_cmd_uri('backup', $page, null, array('action'=>'nowdiff', 'age'=>$age)). '">' . $_backup_messages['msg_nowdiff'] . '</a></li>';
    			$retval[1] .= '<li><a href="'. get_cmd_uri('backup', $page, null, array('action'=>'visualdiff', 'age'=>$age)). '">' . $_backup_messages['msg_visualdiff'] . '</a></li>';
    			$retval[1] .= '<li><a href="'. get_cmd_uri('backup', $page, null, array('action'=>'source', 'age'=>$age)). '">' . $_backup_messages['msg_source'] . '</a></li>';
    			if (PLUGIN_BACKUP_USE_ROLLBACK) {
    				$retval[1] .= '<li><a href="'. get_cmd_uri('backup', $page, null, array('action'=>'rollback', 'age'=>$age)). '">' . $_backup_messages['msg_rollback'] . '</a></li>';
    			}
    			$retval[1] .= '</ul></nav>';
    		}
    
    		$retval[1] .= '</li>'."\n";
    	}
    */
    return join("\n", $retval);
}
function plugin_adm_auth_wkgrp_convert()
{
    global $_adm_auth_wkgrp_msg, $_LANG;
    if (Auth::check_role('role_adm')) {
        return '';
    }
    if (!PLUGIN_ADM_AUTH_WKGRP_USE_WRITE_FUNC) {
        return '';
    }
    $config_page_name = ':config/' . CONFIG_AUTH_WKGRP;
    $msg = '';
    $script = Router::get_script_uri();
    $cmd_view = Router::get_page_uri($config_page_name);
    $cmd_edit = Router::get_cmd_uri('edit', $config_page_name);
    $cmd_guiedit = Router::get_cmd_uri('guiedit', $config_page_name);
    $cmd_check = Router::get_cmd_uri('adm_auth_wkgrp', '', '', array('pcmd' => 'check'));
    $cmd_import = Router::get_cmd_uri('adm_auth_wkgrp', '', '', array('pcmd' => 'import'));
    $filetime_auth_wkgrp = filemtime(PKWK_AUTH_WKGRP_FILE);
    $date_auth_wkgrp = format_date($filetime_auth_wkgrp);
    if (is_page($config_page_name)) {
        $filetime_config_page = get_filetime($config_page_name);
        $date_config_page = format_date($filetime_config_page);
        $guide_msg = $filetime_config_page > $filetime_auth_wkgrp ? '<strong>' . $_adm_auth_wkgrp_msg['msg_gen'] . '</strong>' : '';
        $link_page = <<<EOD
[<a href="{$cmd_edit}">{$_LANG['skin']['edit']}</a>]
[<a href="{$cmd_guiedit}">{$_LANG['skin']['guiedit']}</a>]

EOD;
        $link_file = <<<EOD
<form action="{$script}" method="post" class="adm_auth_wkgrp_form">
\t<input type="hidden" name="cmd" value="adm_auth_wkgrp" />
\t<input type="hidden" name="pcmd" value="gen" />
\t<input type="submit" class="btn btn-secondary" value="{$_adm_auth_wkgrp_msg['btn_gen']}" />
\t{$guide_msg}
</form>

EOD;
    } else {
        $date_config_page = 'N/A';
        $link_page = '[<a href="' . $cmd_import . '">' . $_adm_auth_wkgrp_msg['msg_import'] . '</a>]';
        $link_file = '';
    }
    $rc = <<<EOD
<div class="adm_auth_wkgrp">
\t<fieldset>
\t\t<legend>{$_adm_auth_wkgrp_msg['head_title']}</legend>
\t\t<table class="table">
\t\t\t<thead>
\t\t\t\t<tr>
\t\t\t\t\t<th>
\t\t\t\t\t\t{$_adm_auth_wkgrp_msg['msg_head_page']}
\t\t\t\t\t\t(<a href="{$cmd_view}">{$_adm_auth_wkgrp_msg['msg_view']}</a>)
\t\t\t\t\t</td>
\t\t\t\t\t<th>
\t\t\t\t\t\t{$_adm_auth_wkgrp_msg['msg_head_file']}
\t\t\t\t\t\t(<a href="{$cmd_check}">{$_adm_auth_wkgrp_msg['msg_check']}</a>)
\t\t\t\t\t</td>
\t\t\t\t</tr>
\t\t\t</thead>
\t\t\t<tbody>
\t\t\t\t<tr>
\t\t\t\t\t<td>{$_adm_auth_wkgrp_msg['msg_head_update']}: {$date_config_page}</td>
\t\t\t\t\t<td>{$_adm_auth_wkgrp_msg['msg_head_gen']}: {$date_auth_wkgrp}</td>
\t\t\t\t</tr>
\t\t\t\t<tr>
\t\t\t\t\t<td>{$link_page}</td>
\t\t\t\t\t<td>{$link_file}</td>
\t\t\t\t</tr>
\t\t\t</tbody>
\t\t</table>
\t</fieldset>
</div>
EOD;
    return $rc;
}
Example #3
0
function plugin_amazon_action()
{
    global $vars;
    global $_amazon_msg, $_string;
    global $_title;
    // global $_no_name;
    if (empty($vars['itemid'])) {
        $retvars['msg'] = $_amazon_msg['msg_ReviewEdit'];
        $retvars['body'] = amazon_make_review_page();
        return $retvars;
    } else {
        $itemid = Utility::htmlsc($vars['itemid']);
    }
    if (Auth::check_role('readonly')) {
        die_message($_string['prohibit']);
    }
    if (Auth::is_check_role(PKWK_CREATE_PAGE)) {
        die_message($_amazon_msg['err_newpage']);
    }
    if (empty($vars['refer']) || !check_readable($vars['refer'], false, false)) {
        die;
    }
    $locale = empty($vars['locale']) ? 'jp' : Utility::htmlsc($vars['locale']);
    $obj = new amazon_ecs($itemid, $locale);
    if (!$obj->is_itemid) {
        $retvars['msg'] = $_amazon_msg['err_code_set'];
        $retvars['body'] = amazon_make_review_page();
        return $retvars;
    }
    $obj->get_items();
    if (empty($obj->asin)) {
        die_message($_amazon_msg['err_not_found']);
    }
    $s_page = $vars['refer'];
    // 入力された内容ではなく、一律 ASINに変換
    $r_page = $s_page . '/' . $obj->asin;
    // 入力された ISBNm ASINで作成
    // $r_page = $s_page . '/' . $obj->itemid;
    $r_page_url = rawurlencode($r_page);
    $wiki = Factory::Wiki($r_page);
    $wiki->checkEditable(true);
    if (!empty($obj->items['Error'])) {
        $obj->rm_cache(array('xml' => true, 'img' => true));
        return array('msg' => 'Error', 'body' => $obj->items['Error']);
    }
    if (empty($obj->items['title']) or preg_match('/^\\//', $s_page)) {
        Utility::redirect(Router::get_page_uri($s_page));
    }
    // レビューページ編集
    $body = Factory::Wiki(PLUGIN_AMAZON_TRACKER_PAGE_NAME)->get(true);
    // $body = str_replace('$1', $obj->itemid, $body);
    $body = str_replace('$1', $obj->asin, $body);
    $body = str_replace('$2', $obj->locale, $body);
    $body = str_replace('[title]', $obj->items['title'], $body);
    $body = str_replace('[asin]', $obj->asin, $body);
    $author = $obj->items['author'];
    $author = empty($author) ? $obj->items['manufact'] : $author;
    $body = str_replace('[author]', $author, $body);
    $body = str_replace('[group]', $obj->items['group'], $body);
    $auth_key = Auth::get_user_name();
    $name = empty($auth_key['nick']) ? $_amazon_msg['msg_myname'] : $auth_key['nick'];
    $body = str_replace('[critic]', '[[' . $name . ']]', $body);
    $body = str_replace('[date]', '&date;', $body);
    $body = str_replace('[recommendation]', '[[' . $_amazon_msg['msg_this_edit'] . ']]', $body);
    $body = str_replace('[body]', '[[' . $_amazon_msg['msg_this_edit'] . ']]', $body);
    $wiki->set($body);
    Utility::redirect($wiki->uri('edit'));
}
Example #4
0
function plugin_tracker_action()
{
    global $vars, $now, $config_name, $_string, $session;
    //	if (PKWK_READONLY) die_message('PKWK_READONLY prohibits editing');
    // Plus! code start
    if (Auth::check_role('readonly')) {
        die_message($_string['prohibit']);
    }
    if (Auth::is_check_role(PKWK_CREATE_PAGE)) {
        die_message(_('PKWK_CREATE_PAGE prohibits editing'));
    }
    $base = isset($vars['_base']) ? $vars['_base'] : null;
    $refer = isset($vars['_refer']) ? $vars['_refer'] : null;
    if (isset($vars['cancel'])) {
        Utility::redirect(Router::get_page_uri($refer));
    }
    $tracker_form = new Tracker_form();
    // Petit SPAM Check (Client(Browser)-Server Ticket Check)
    $config = $tracker_form->config_name;
    // Rescan
    if ($session->offsetGet('tracker') !== md5(get_ticket() . $config_name)) {
        honeypot_write();
        return array('msg' => 'Cannot write', 'body' => 'Prohibits editing');
    }
    // Plus! code end
    // $page name to add will be decided here
    $num = 0;
    $name = isset($vars['_name']) ? $vars['_name'] : null;
    if (isset($vars['_page'])) {
        $real = $page = $vars['_page'];
    } else {
        $real = is_pagename($name) ? $name : ++$num;
        $page = get_fullname('./' . $real, $base);
    }
    if (!is_pagename($page)) {
        $page = $base;
    }
    while (is_page($page)) {
        $real = ++$num;
        $page = $base . '/' . $real;
    }
    $config = isset($vars['_config']) ? $vars['_config'] : null;
    // TODO: Why here
    // Default
    if (isset($_FILES)) {
        $_post = array_merge($vars, $_FILES);
    }
    $_post['_date'] = $now;
    $_post['_page'] = $page;
    $_post['_name'] = $name;
    $_post['_real'] = $real;
    // $_post['_refer'] = $_post['refer'];
    // TODO: Why here => See BugTrack/662
    // Creating an empty page, before attaching files
    $from = $to = array();
    $tracker_form = new Tracker_form();
    if (!$tracker_form->init($base, $refer, $config)) {
        return array('msg' => 'Cannot write', 'body' => '<p class="alert alert-warning">' . Utility::htmlsc($tracker_form->error) . '</p>');
    }
    // Load $template
    $template_page = $tracker_form->config->page . '/' . PLUGIN_TRACKER_DEFAULT_PAGE;
    $template = plugin_tracker_get_source($template_page);
    if ($template === FALSE || empty($template)) {
        return array('msg' => 'Cannot write', 'body' => '<p class="alert alert-warning">Page template (' . Utility::htmlsc($template_page) . ') not found</p>');
    }
    if (!$tracker_form->initFields(plugin_tracker_field_pickup(implode(null, $template)))) {
        return array('msg' => 'Cannot write', 'body' => '<p class="alert alert-warning">' . Utility::htmlsc($tracker_form->error) . '</p>');
    }
    $fields = $tracker_form->fields;
    unset($tracker_form);
    foreach (array_keys($fields) as $field) {
        $from[] = '[' . $field . ']';
        $to[] = isset($_post[$field]) ? $fields[$field]->format_value($_post[$field]) : null;
        unset($fields[$field]);
    }
    // Repalace every [$field]s (found inside $template) to real values
    $subject = $escape = array();
    foreach (array_keys($template) as $linenum) {
        if (trim($template[$linenum]) == null) {
            continue;
        }
        // Escape some TextFormattingRules
        $letter = $template[$linenum][0];
        if ($letter == '|' || $letter == ':') {
            $escape['|'][$linenum] = $template[$linenum];
        } else {
            if ($letter == ',') {
                $escape[','][$linenum] = $template[$linenum];
            } else {
                // TODO: Escape "\n" except multiline-allowed fields
                $subject[$linenum] = $template[$linenum];
            }
        }
    }
    foreach (str_replace($from, $to, $subject) as $linenum => $line) {
        $template[$linenum] = $line;
    }
    if ($escape) {
        // Escape for some TextFormattingRules
        foreach (array_keys($escape) as $hint) {
            $to_e = plugin_tracker_escape($to, $hint);
            foreach (str_replace($from, $to_e, $escape[$hint]) as $linenum => $line) {
                $template[$linenum] = $line;
            }
        }
        unset($to_e);
    }
    unset($from, $to);
    if (isset($vars['preview'])) {
        global $_button;
        unset($vars['preview']);
        $form[] = '<p class="alert alert-success">' . T_('It will be sent with the contents of the following.') . '</p>';
        $form[] = '<form action="' . Router::get_script_uri() . '"enctype="multipart/form-data" method="post" class="form-horizontal plugin-tracker-form">';
        foreach ($vars as $key => $value) {
            $form[] = '<input type="hidden" name="' . $key . '" value="' . $value . '" />';
        }
        $form[] = '<button type="submit" class="btn btn-primary" name="write" accesskey="s"><span class="fa fa-check"></span>' . $_button['update'] . '</button>';
        $form[] = '<button type="submit" class="btn btn-warning" name="cancel" accesskey="c"><span class="fa fa-ban"></span>' . $_button['cancel'] . '</button>';
        $form[] = '</form>';
        $form[] = '<hr />';
        $form[] = RendererFactory::factory($template);
        return array('msg' => 'Preview', 'body' => join("\n", $form));
    } else {
        // Write $template, without touch
        $wiki = Factory::Wiki($page);
        $wiki->set($template);
        Utility::redirect($wiki->uri());
    }
    exit;
}