function plugin_edit_write() { $_uname = empty($this->root->vars['uname']) || !empty($this->root->vars['anonymous']) ? $this->root->siteinfo['anonymous'] : $this->root->vars['uname']; if ($_uname) { if (!empty($this->root->vars['anonymous'])) { $this->root->cookie['name'] = $_uname; } else { // save name to cookie $this->func->save_name2cookie($_uname); } } $page = isset($this->root->vars['page']) ? $this->root->vars['page'] : ''; $add = isset($this->root->vars['add']) ? $this->root->vars['add'] : ''; $digest = isset($this->root->vars['digest']) ? $this->root->vars['digest'] : ''; $paraid = isset($this->root->vars['paraid']) ? $this->root->vars['paraid'] : ''; $original = ''; $this->root->vars['msg'] = preg_replace($this->cont['PLUGIN_EDIT_FREEZE_REGEX'], '', $this->root->vars['msg']); $this->root->vars['msg'] = $this->func->remove_pginfo($this->root->vars['msg']); $msg =& $this->root->vars['msg']; // Reference // Get original data from cache DB. if (!empty($this->root->vars['orgkey'])) { $original = (string) $this->func->cache_get_db($this->root->vars['orgkey'], 'edit', true); $original = $this->func->remove_pginfo($original); } // ParaEdit $hash = ''; if ($paraid) { if (!$original) { $original = $this->func->remove_pginfo($this->func->get_source($page, TRUE, TRUE)); } $source = preg_split('/([^\\n]*\\n)/', $original, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); if ($this->plugin_edit_parts($paraid, $source, $msg) !== FALSE) { $fullmsg = join('', $source); } else { // $this->root->vars['msg']だけがページに書き込まれてしまうのを防ぐ。 $fullmsg = rtrim($original) . "\n\n" . $msg; } $msg = $fullmsg; $hash = '#' . $paraid; } // 文末処理 $msg = rtrim($msg) . "\n"; // 改行・TAB・スペースのみだったら削除とみなす $msg = preg_replace('/^\\s+$/', '', $msg); // Page title if ($msg && !empty($this->root->post['pgtitle'])) { $msg = $this->root->title_setting_string . trim($this->root->post['pgtitle']) . "\n" . $msg; } $retvars = array(); // Collision Detection $oldpagesrc = $this->func->get_source($page, TRUE, TRUE); $oldpagemd5 = $this->func->get_digests($oldpagesrc); if ($digest != $oldpagemd5) { $this->root->vars['digest'] = $oldpagemd5; // Reset unset($this->root->vars['paraid']); // 更新が衝突したら全文編集に切り替え $oldpagesrc = $this->func->remove_pginfo($oldpagesrc); list($postdata_input, $auto) = $this->func->do_update_diff($oldpagesrc, $msg, $original); $retvars['msg'] = $this->root->_title_collided; $retvars['body'] = ($auto ? $this->root->_msg_collided_auto : $this->root->_msg_collided) . "\n"; $retvars['body'] .= $this->root->do_update_diff_table; $retvars['body'] .= $this->func->edit_form($page, $postdata_input, $oldpagemd5, FALSE); if (isset($this->root->vars['ajax'])) { $this->func->convert_finisher($retvars['body']); $body = <<<EOD <xpwiki> <content><![CDATA[{$retvars['body']}]]></content> <mode>preview</mode> </xpwiki> EOD; $this->func->send_xml($body); } return $retvars; } // Action? if ($add) { // Add if (isset($this->root->vars['add_top']) && $this->root->vars['add_top']) { $postdata = $msg . "\n\n" . $this->func->get_source($page, TRUE, TRUE); } else { $postdata = $this->func->get_source($page, TRUE, TRUE) . "\n\n" . $msg; } } else { // Edit or Remove $postdata =& $msg; // Reference } // NULL POSTING, OR removing existing page if (!$postdata) { $this->func->page_write($page, ''); if ($this->root->trackback) { $this->func->tb_delete($page); } if ($this->root->maxshow_deleted && $this->func->is_page($this->root->whatsdeleted)) { $url = $this->func->get_page_uri($this->root->whatsdeleted, true); } else { $url = $this->cont['HOME_URL']; } $title = str_replace('$1', $this->func->htmlspecialchars($page), $this->root->_title_deleted); if (isset($this->root->vars['ajax'])) { $url = $this->func->htmlspecialchars($url, ENT_QUOTES); $body = <<<EOD <xpwiki> <content><![CDATA[{$title}]]></content> <mode>delete</mode> <url>{$url}</url> </xpwiki> EOD; $this->func->send_xml($body); } $this->func->redirect_header($url, 1, $title); } // $notimeupdate: Checkbox 'Do not change timestamp' $notimestamp = isset($this->root->vars['notimestamp']) && $this->root->vars['notimestamp'] != ''; if ($this->root->notimeupdate > 1 && !$this->root->userinfo['admin']) { $notimestamp = false; } $this->func->page_write($page, $postdata, $this->root->notimeupdate != 0 && $notimestamp); if (isset($this->root->vars['ajax'])) { if (!empty($this->root->vars['nonconvert'])) { $body = ''; } else { $obj = new XpWiki($this->root->mydirname); $obj->init($page); $obj->root->userinfo['uname_s'] = $this->func->htmlspecialchars($this->root->cookie['name']); $obj->execute(); if (isset($obj->root->rtf['useJavascriptInHead'])) { $body = '<script src="" />'; } else { $body = $obj->body; // set target if (isset($this->root->vars['popup'])) { $body = preg_replace('/(<a[^>]+)(href=(?:"|\')[^#])/isS', '$1target="' . (intval($this->root->vars['popup']) === 1 ? '_parent' : $this->func->htmlspecialchars(substr($this->root->vars['popup'], 0, 30))) . '" $2', $body); } $body = str_replace(array('<![CDATA[', ']]>'), '', $body); } if (preg_match('/\\(\\([eisv]:[0-9a-f]{4}\\)\\)|\\[emj:\\d{1,4}(?::(?:im|ez|sb))?\\]/S', $body)) { if (!XC_CLASS_EXISTS('MobilePictogramConverter')) { HypCommonFunc::loadClass('MobilePictogramConverter'); } if (XC_CLASS_EXISTS('MobilePictogramConverter')) { $mpc =& MobilePictogramConverter::factory_common(); $mpc->setImagePath($this->cont['ROOT_URL'] . 'images/emoji'); $mpc->setString($body, FALSE); $body = $mpc->autoConvertModKtai(); } } } $body = <<<EOD <xpwiki> <content><![CDATA[{$body}]]></content> <mode>write</mode> </xpwiki> EOD; $this->func->send_xml($body); } $this->func->send_location($page, $hash); }
if (isset($_SERVER['HTTP_X_MOZ']) && $_SERVER['HTTP_X_MOZ'] === 'prefetch' || isset($_SERVER['HTTP_USER_AGENT']) && $_SERVER['HTTP_USER_AGENT'] === 'Fasterfox') { header('HTTP/1.1 403 Forbidden'); exit; } $mytrustdirname = basename(dirname(__FILE__)); $mytrustdirpath = dirname(__FILE__); include_once "{$mytrustdirpath}/include.php"; $xpwiki = new XpWiki($mydirname); // initialize $xpwiki->init(); // XCL >= 2.2 Use "Legacy_Utils::formatPagetitle" if (defined('LEGACY_MODULE_VERSION') && version_compare(LEGACY_MODULE_VERSION, '2.2', '>=')) { $xpwiki->root->html_head_title = trim(str_replace('$module_title', '', $xpwiki->root->html_head_title), ' -'); } // execute $xpwiki->execute(); // gethtml $xpwiki->catbody(); // Add error message if ($xpwiki->root->userinfo['admin']) { $hyp_common_methods = get_class_methods('HypCommonFunc'); if (is_null($hyp_common_methods) || !in_array('get_version', $hyp_common_methods) || HypCommonFunc::get_version() < 20100725) { $xpwiki->admin_messages[] = '[Warning] Please install or update <a href="http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/hypweb/XOOPS_TRUST/class/hyp_common.tar.gz?view=tar" title="Download">a newest HypCommonFunc</a> into "XOOPS_TRUST_PATH/class/".'; } if ($xpwiki->admin_messages) { $xpwiki->html = '<p style="color:red;font-weight:bold;">' . join('<br />', $xpwiki->admin_messages) . '</p><hr />' . $xpwiki->html; } } if ($xpwiki->runmode === 'xoops') { // For XCL >= 2.2.1.1 (clear cache of modinfo) // Is it XCL's bug? need check next