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; }
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')); }
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; }