ajaxgwiki.php
<?php
/**
* ajaxwiki.php - serve wiki page via ajax
*
* @copyright Copyright © 2013 geekwright, LLC. All rights reserved.
* @license gwiki/docs/license.txt GNU General Public License (GPL)
* @since 1.0
* @author Richard Griffith <richard@geekwright.com>
* @package gwiki
*/
use Xmf\Request;
use XoopsModules\Gwiki;
use XoopsModules\Gwiki\Helper;
require_once \dirname(__DIR__, 2) . '/mainfile.php';
$xoopsLogger->activated = false;
// provide error logging for our sanity in debugging ajax use (won't see xoops logger)
//restore_error_handler();
//error_reporting(-1);
/**
* @param $string
*
* @return string
*/
function cleaner($string)
{
$string = stripcslashes($string);
$string = html_entity_decode($string);
$string = strip_tags($string); // DANGER -- kills wiki text
$string = trim($string);
$string = stripslashes($string);
return $string;
}
// $_GET variables we use
unset($page, $bid, $id);
$page = isset($_GET['page']) ? cleaner($_GET['page']) : null;
// strip rid of any anchor references
//$x=strpos($page,'#');
//if($x!==false) $page=substr($page,0,$x);
//trigger_error($page);
if (Request::hasVar('bid', 'GET')) {
$bid = Request::getInt('bid', 0, 'GET');
} // from a block
if (Request::hasVar('id', 'GET')) {
$id = Request::getInt('id', 0, 'GET');
} // from utility (i.e. history)
$helper = Helper::getInstance();
$dir = basename(__DIR__);
// Access module configs from block:
/** @var \XoopsModuleHandler $moduleHandler */
$moduleHandler = xoops_getHandler('module');
$module = $moduleHandler->getByDirname($dir);
/** @var \XoopsConfigHandler $configHandler */
$configHandler = xoops_getHandler('config');
$moduleConfig = $configHandler->getConfigsByCat(0, $module->getVar('mid'));
$alloworigin = $helper->getConfig('allow_origin');
if (!empty($alloworigin)) {
header('Access-Control-Allow-Origin: ' . $alloworigin);
}
//require_once XOOPS_ROOT_PATH . '/modules/' . $dir . '/class/GwikiPage.php';
$imgdir = XOOPS_URL . '/modules/' . $dir . '/images';
$wikiPage = new Gwiki\GwikiPage();
$wikiPage->setRecentCount($helper->getConfig('number_recent'));
if (empty($page)) {
$page = $wikiPage->wikiHomePage;
}
$page = $wikiPage->normalizeKeyword($page);
if (isset($id)) {
$wikiPage->setWikiLinkURL("javascript:alert('%s');");
$wikiPage->setTocFormat('toc' . $id . '-', '#%s');
}
if (isset($bid)) {
$wikiPage->setWikiLinkURL("javascript:ajaxGwikiLoad('%s','{$bid}');");
$wikiPage->setTocFormat('toc' . $bid . '-', '#%s');
}
if (isset($id)) {
$thispage = $wikiPage->getPage($page, $id);
} else {
$thispage = $wikiPage->getPage($page);
}
if ($thispage) {
if (!defined('_MI_GWIKI_NAME')) {
// $langfile = XOOPS_ROOT_PATH . '/modules/' . $dir . '/language/' . $xoopsConfig['language'] . '/modinfo.php';
// if (!file_exists($langfile)) {
// $langfile = XOOPS_ROOT_PATH . '/modules/' . $dir . '/language/english/modinfo.php';
// }
// require_once $langfile;
$helper = Helper::getInstance();
$helper->loadLanguage('modinfo');
}
$rendered = '<h1 class="wikititle">' . htmlspecialchars($wikiPage->title, ENT_QUOTES | ENT_HTML5) . '</h1>';
$rendered .= $wikiPage->renderPage();
if (!empty($thispage['pageset']['first']['link'])) {
$rendered .= '<div class="wikipagesetnav">';
$rendered .= '<a href="' . $thispage['pageset']['first']['link'] . '"><img src="' . $imgdir . '/psfirst.png" alt="' . $thispage['pageset']['first']['desc'] . '" title="' . $thispage['pageset']['first']['text'] . '"></a>';
$rendered .= '<a href="' . $thispage['pageset']['prev']['link'] . '"><img src="' . $imgdir . '/psprev.png" alt="' . $thispage['pageset']['prev']['desc'] . '" title="' . $thispage['pageset']['prev']['text'] . '"></a>';
$rendered .= '<a href="' . $thispage['pageset']['home']['link'] . '"><img src="' . $imgdir . '/pshome.png" alt="' . $thispage['pageset']['home']['desc'] . '" title="' . $thispage['pageset']['home']['text'] . '"></a>';
$rendered .= '<a href="' . $thispage['pageset']['next']['link'] . '"><img src="' . $imgdir . '/psnext.png" alt="' . $thispage['pageset']['next']['desc'] . '" title="' . $thispage['pageset']['next']['text'] . '"></a>';
$rendered .= '<a href="' . $thispage['pageset']['last']['link'] . '"><img src="' . $imgdir . '/pslast.png" alt="' . $thispage['pageset']['last']['desc'] . '" title="' . $thispage['pageset']['last']['text'] . '"></a>';
$rendered .= '</div>';
}
if (!isset($id)) {
$wikiPage->registerHit($page);
} // don't count hits from utilities
} else {
//if ($mayEdit) redirect_header("edit.php?page=$page", 2, _MD_GWIKI_PAGENOTFOUND);
$rendered = '<h1 class="wikititle">' . _MD_GWIKI_NOEDIT_NOTFOUND_TITLE . '</h1>';
$rendered .= _MD_GWIKI_NOEDIT_NOTFOUND_BODY;
}
echo $rendered;
exit;