Example #1
0
 /**
  * Constructor JavaScript
  * @param string $code_javascript 
  * @param boolean $add_js_to_page [default value: false]
  */
 function __construct($code_javascript, $add_js_to_page = false)
 {
     parent::__construct();
     if (!isset($code_javascript)) {
         throw new NewException("1 argument for " . get_class($this) . "::__construct() is mandatory", 0, getDebugBacktrace(1));
     }
     $this->code_javascript = $code_javascript;
     $this->is_javascript_object = true;
     if ($add_js_to_page) {
         $page_object = Page::getInstance($_GET['p']);
         if (gettype($code_javascript) != "object") {
             // search in javascript if begin by $(document).ready(
             // then put javascript to the end (for AJAX because doc is already loaded)
             $tmp_code_javascript = trim(str_replace("\t", "", $code_javascript));
             $pos_doc_ready = find($tmp_code_javascript, "\$(document).ready(", 1);
             $pos_jquery_ready = find($tmp_code_javascript, "jQuery(document).ready(", 1);
             if ($pos_doc_ready >= 18 && $pos_doc_ready <= 30 || $pos_jquery_ready >= 23 && $pos_jquery_ready <= 35) {
                 // 30|35: beacause of tag //<![CDATA[
                 $page_object->addObject($this, false, true);
             } else {
                 $page_object->addObject($this);
             }
         } else {
             $page_object->addObject($this);
         }
     }
 }
Example #2
0
 public function getValues($keys = null, $format = null, $maxDepth = null)
 {
     $ret = parent::getValues($keys, $format, $maxDepth);
     $ret['navigation'] = Xoops_Locale::translate('L_RELATED_NAVIGATION_OPTION' . $this->getVar('related_navigation'), 'page');
     $ret['related_links'] = Page::getInstance()->getLinkHandler()->getLinks($this->getVar('related_id'));
     return $ret;
 }
Example #3
0
function page_blocks_edit($options)
{
    $block_form = new Xoops\Form\BlockForm();
    if ($options[0] != 'id') {
        $mode_form = new Xoops\Form\Select(PageLocale::CONF_BLOCK_MODE, 'options[0]', $options[0], 1, false);
        $mode_form->addOption('content', PageLocale::CONF_BLOCK_L_CONTENT);
        $mode_form->addOption('list', PageLocale::CONF_BLOCK_L_LIST);
        $block_form->addElement($mode_form);
        $order_form = new Xoops\Form\Select(PageLocale::CONF_BLOCK_ORDER, 'options[1]', $options[1], 1, false);
        $order_form->addOption('create', PageLocale::CONF_BLOCK_L_RECENT);
        $order_form->addOption('hits', PageLocale::CONF_BLOCK_L_HITS);
        $order_form->addOption('rating', PageLocale::CONF_BLOCK_L_RATING);
        $order_form->addOption('random', PageLocale::CONF_BLOCK_L_RANDOM);
        $block_form->addElement($order_form);
        $sort_form = new Xoops\Form\Select(PageLocale::CONF_BLOCK_SORT, 'options[2]', $options[2], 1, false);
        $sort_form->addOption('ASC', PageLocale::CONF_BLOCK_L_ASC);
        $sort_form->addOption('DESC', PageLocale::CONF_BLOCK_L_DESC);
        $block_form->addElement($sort_form);
        $block_form->addElement(new Xoops\Form\Text(PageLocale::CONF_BLOCK_DISPLAY_NUMBER, 'options[3]', 1, 2, $options[3]), true);
        $block_form->addElement(new Xoops\Form\RadioYesNo(PageLocale::CONF_BLOCK_ALL_CONTENT, 'options[4]', $options[4]));
    } else {
        $block_form->addElement(new Xoops\Form\Hidden('options[0]', $options[0]));
        $content = Page::getInstance()->getContentHandler()->getPageTitle(1);
        $select_form = new Xoops\Form\Select(PageLocale::CONF_BLOCK_CONTENTDISPLAY, 'options[1]', $options[1], 1, false);
        foreach ($content as $value) {
            $select_form->addOption($value['content_id'], $value['content_title']);
        }
        $block_form->addElement($select_form);
    }
    return $block_form->render();
}
Example #4
0
 public function __construct()
 {
     $this->_page = Page::getInstance();
     $this->_resource = Resource::getInstance();
     $this->_lang = Lang::lang();
     $this->_db = static::$_defaultDb;
     $this->_configMain = Registry::get('main', 'config');
 }
Example #5
0
 /**
  * 页面展示
  * @param  [type]  $html_file [description]
  * @param  array   $data      [description]
  * @param  integer $http_code [description]
  * @return [type]             [description]
  */
 public static function view($html_file = "", $data = [], $http_code = 200)
 {
     http_response_code($http_code);
     if (empty($html_file)) {
         return true;
     }
     $page = Page::getInstance();
     $page->parse($html_file, $data);
     return $page->outPut();
 }
Example #6
0
 /**
  * @param PagePage_related|XoopsObject $obj
  */
 public function __construct(PagePage_related $obj)
 {
     $helper = Page::getInstance();
     $xoops = $helper->xoops();
     $xoops->theme()->addScript('modules/page/media/jquery/multi-select.0.3-7/js/jquery.multi-select.js');
     $xoops->theme()->addScript('modules/page/media/jquery/multi-select-init.js');
     $xoops->theme()->addStylesheet('modules/page/media/jquery/multi-select.0.3-7/css/multi-select.css');
     // Get handler
     $content_Handler = $helper->getContentHandler();
     $link_Handler = $helper->getLinkHandler();
     $title = $obj->isNew() ? PageLocale::A_ADD_RELATED : PageLocale::A_EDIT_RELATED;
     parent::__construct($title, 'form', 'related.php', 'post', true);
     //name
     $this->addElement(new Xoops\Form\Text(PageLocale::RELATED_NAME, 'related_name', 4, 255, $obj->getVar('related_name'), ''), true);
     //menu
     $menu = new Xoops\Form\RadioYesNo(PageLocale::RELATED_MENU, 'related_domenu', $obj->getVar('related_domenu'));
     $menu->setDescription(PageLocale::RELATED_MENU_DSC);
     $this->addElement($menu, false);
     //navigation
     $navigation = new Xoops\Form\Select(PageLocale::RELATED_NAVIGATION, 'related_navigation', $obj->getVar('related_navigation'), 1, false);
     $navigation->addOption(1, PageLocale::L_RELATED_NAVIGATION_OPTION1);
     $navigation->addOption(2, PageLocale::L_RELATED_NAVIGATION_OPTION2);
     $navigation->addOption(3, PageLocale::L_RELATED_NAVIGATION_OPTION3);
     $navigation->addOption(4, PageLocale::L_RELATED_NAVIGATION_OPTION4);
     $navigation->addOption(5, PageLocale::L_RELATED_NAVIGATION_OPTION5);
     $navigation->setClass('span3');
     $this->addElement($navigation);
     $related_links = $link_Handler->getContentByRelated($obj->getVar('related_id'));
     $contents_used = $link_Handler->getContentUsed();
     $contents = $content_Handler->getPageTitle(1);
     $related_links_form = new Xoops\Form\Select(PageLocale::RELATED_MAIN, 'datas', $related_links, $size = 20, $multiple = true);
     foreach ($contents as $k => $content) {
         if (!in_array($content['content_id'], $contents_used) || in_array($content['content_id'], $related_links)) {
             $related_links_form->addOption($content['content_id'], $content['content_title']);
         }
     }
     $this->addElement($related_links_form, true);
     $this->addElement(new Xoops\Form\Hidden('related_id', $obj->getVar('related_id')));
     /**
      * Buttons
      */
     $buttonTray = new Xoops\Form\ElementTray('', '');
     $buttonTray->addElement(new Xoops\Form\Hidden('op', 'save'));
     $buttonSubmit = new Xoops\Form\Button('', 'submit', XoopsLocale::A_SUBMIT, 'submit');
     $buttonSubmit->setClass('btn btn-success');
     $buttonTray->addElement($buttonSubmit);
     $buttonReset = new Xoops\Form\Button('', 'reset', XoopsLocale::A_RESET, 'reset');
     $buttonReset->setClass('btn btn-warning');
     $buttonTray->addElement($buttonReset);
     $buttonCancel = new Xoops\Form\Button('', 'cancel', XoopsLocale::A_CANCEL, 'button');
     $buttonCancel->setExtra("onclick='javascript:history.go(-1);'");
     $buttonCancel->setClass('btn btn-danger');
     $buttonTray->addElement($buttonCancel);
     $this->addElement($buttonTray);
 }
Example #7
0
 /**
  * (non-PHPdoc)
  * @see Block_Abstract::render()
  */
 public function render()
 {
     $this->_collectData();
     $tpl = new Template();
     $tpl->setData(array('config' => $this->_config, 'place' => $this->_config['place'], 'menuData' => $this->_data));
     if (static::dependsOnPage) {
         $tpl->set('page', Page::getInstance());
         $tpl->set('pagesTree', Model::factory('Page')->getTree());
     }
     return $tpl->render(Application::getTemplatesPath() . $this->_template);
 }
Example #8
0
 /**
  * ignoreリストを構築する。
  */
 protected function makeignorelist()
 {
     $this->ignorelist = array();
     $page = Page::getInstance(self::ignorelistpage);
     $lines = explode("\n", $page->getsource());
     foreach ($lines as $str) {
         if (mb_ereg('^-\\[\\[(.+)\\]\\]', $str, $m)) {
             $this->ignorelist[] = $m[1];
         }
     }
 }
Example #9
0
/**
 * retrieve list of search results
 *
 * @return string HTML list of search results
 */
function Search_showResults()
{
    global $PLUGINS;
    // { variables
    global $PAGEDATA;
    $start = (int) @$_REQUEST['start'];
    $search = @$_REQUEST['search'];
    if (!$search) {
        return '<em id="searchResultsTitle">no search text entered</em>';
    }
    $c = '';
    // }
    // { pages
    $q = dbAll('select * from pages where (name like "%' . $search . '%" or body like "%' . $search . '%") order by edate desc limit ' . $start . ',20');
    $n = count($q);
    if ($n > 0) {
        foreach ($q as $p) {
            Page::getInstance($p['id'], $p);
        }
        $q = array_slice($q, $start, 20);
        $c .= '<h2>Page Search Results</h2><em id="searchResultsTitle">';
        if ($n == 1) {
            $c .= '1 result found';
        } else {
            $c .= $n . ' results found';
        }
        $c .= '</em> <div>';
        if ($start > 0) {
            $c .= '[<a href="' . $PAGEDATA->getRelativeURL() . '?search=' . urlencode($search) . '&amp;start=' . ($start - 20) . '">previous 20</a>] ';
        }
        if ($start + 20 < $n) {
            $c .= '[<a href="' . $PAGEDATA->getRelativeURL() . '?search=' . urlencode($search) . '&amp;start=' . ($start + 20) . '">next 20</a>] ';
        }
        $c .= '<ol start="' . ($start + 1) . '" id="searchResults">';
        foreach ($q as $r) {
            $title = $r['title'] == '' ? $r['name'] : $r['title'];
            $c .= '<li><h4>' . htmlspecialchars($title) . '</h4>' . '<p>' . substr(preg_replace('/<[^>]*>/', '', $r['body']), 0, 200) . '...<br /><a href="/' . urlencode($r['name']) . '?search=' . $search . '">/' . htmlspecialchars($r['name']) . '</a></p></li>';
        }
        $c .= '</ol></div>';
    }
    // }
    // { others
    foreach ($PLUGINS as $plugin) {
        if (@$plugin['search']) {
            $c .= $plugin['search']();
        }
    }
    // }
    if (!$c) {
        return '<em id="searchResultsTitle">' . __('no results found', 'core') . '</em>';
    }
    return $c;
}
Example #10
0
 protected function _routeModule()
 {
     $vers = Request::get('vers', 'int', false);
     $showRevision = false;
     $pageCode = $this->_request->getPart(0);
     if (!strlen($pageCode)) {
         $pageCode = 'index';
     }
     $pageData = Model::factory('Page')->getCachedItemByField('code', $pageCode);
     if (empty($pageData)) {
         Response::redirect('/');
     }
     $cacheManager = new Cache_Manager();
     $cache = $cacheManager->get('data');
     $blockManager = false;
     if ($vers) {
         $user = User::getInstance();
         if ($user->isAuthorized() && $user->isAdmin()) {
             $pageData = array_merge($pageData, Model::factory('Vc')->getData('page', $pageData['id'], $vers));
             $showRevision = true;
         } else {
             $vers = false;
         }
     }
     if (!$vers && $cache) {
         Blockmanager::setDefaultCache($cache);
     }
     if ($pageData['published'] == false && !$showRevision) {
         Response::redirect('/');
     }
     $page = Page::getInstance();
     foreach ($pageData as $k => $v) {
         $page->{$k} = $v;
     }
     /**
      * Check if controller attached
      */
     if (strlen($page->func_code)) {
         $fModules = Config::factory(Config::File_Array, $this->_appConfig->get('frontend_modules'));
         if ($fModules->offsetExists($page->func_code)) {
             $controllerConfig = $fModules->get($page->func_code);
             $this->runController($controllerConfig['class'], $this->_request->getPart(1));
         }
     }
     if (!$vers && $cache) {
         Blockmanager::setDefaultCache($cache);
     }
     $blockManager = new Blockmanager();
     if ($page->show_blocks) {
         $blockManager->init($page->id, $page->default_blocks, $vers);
     }
     $this->showPage($page, $blockManager);
 }
Example #11
0
 /**
  * Used to populate backend
  *
  * @param int $limit : Number of item for backend
  *                   Expects an array containing:
  *                   title   : Title for the backend items
  *                   link    : Link for the backend items
  *                   content : content for the backend items
  *                   date    : Date of the backend items
  *
  * @return array
  */
 public function backend($limit)
 {
     $ret = array();
     $contents = Page::getInstance()->getContentHandler()->getPagePublished(0, $limit);
     foreach ($contents as $k => $content) {
         $ret[$k]['title'] = $content->getVar('content_title');
         $ret[$k]['link'] = Page::getInstance()->url('viewpage.php') . '?id=' . $content->getVar('content_id');
         $ret[$k]['content'] = $content->getVar('content_shorttext') . '<br />' . $content->getVar('content_text');
         $ret[$k]['date'] = $content->getVar('content_create');
     }
     return $ret;
 }
Example #12
0
 /**
  * get list of pages that have a common parent
  *
  * @param string  $constraint the SQL constraint to use
  * @param boolean $filter     whether to only show "published" pages
  *
  * @return object the Pages object
  */
 function __construct($constraint, $filter = true)
 {
     global $isadmin;
     $filter = $isadmin || !$filter ? '' : ' && !(special&2)';
     $rs = dbAll("select * from pages where {$constraint} {$filter} " . "order by special&2,ord,name");
     if (!count($rs)) {
         $rs = array();
     }
     foreach ($rs as $r) {
         $this->pages[] = Page::getInstance($r['id'], $r);
     }
     Pages::$instancesByParent[$constraint] =& $this;
 }
Example #13
0
 public function hasVoted($content_id)
 {
     $helper = Page::getInstance();
     $uid = $helper->getUserId();
     $ip = $helper->xoops()->getenv('REMOTE_ADDR');
     $criteria = new CriteriaCompo();
     $criteria->add(new Criteria('rating_content_id', $content_id));
     $criteria2 = new CriteriaCompo();
     $criteria2->add(new Criteria('rating_uid', $uid), 'OR');
     $criteria2->add(new Criteria('rating_ip', $ip), 'OR');
     $criteria->add($criteria2, 'AND');
     return parent::getCount($criteria);
 }
Example #14
0
 function do_url()
 {
     if (empty(Vars::$get['page']) || empty(Vars::$get['file'])) {
         exit;
     }
     if (!mb_ereg('\\.(.+?)$', Vars::$get['file'], $m) || empty(self::$type[$m[1]])) {
         exit;
     }
     $file = AttachedFile::getInstance(Vars::$get['file'], Page::getInstance(Vars::$get['page']));
     header('Content-Type: ' . self::$type[$m[1]]);
     header('Content-Length: ' . $file->getsize());
     echo $file->getdata();
     exit;
 }
Example #15
0
/**
 * send a random code to an email address to verify it
 *
 * @ return array saying it happened
 */
function Forms_verificationSend()
{
    if (!isset($_REQUEST['email'])) {
        return array('error' => 'no email parameter');
    }
    $email = $_REQUEST['email'];
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        return array('error' => 'invalid email address');
    }
    if (!isset($_SESSION['emails'])) {
        $_SESSION['emails'] = array();
    }
    if (!isset($_SESSION['emails'][$email])) {
        $pid = (int) @$_REQUEST['page'];
        if ($pid) {
            $page = Page::getInstance($pid);
            if (!$page) {
                return array('error' => 'page not found');
            }
            $page->initValues();
            $prevent = (int) @$page->vars['forms_preventUserFromSubmitting'];
            if ($prevent) {
                $id = (int) dbOne('select id from user_accounts where email="' . addslashes($email) . '"', 'id');
                if ($id) {
                    if ($prevent == 1) {
                        // don't allow any users to submit
                        return array('error' => $page->vars['forms_preventUserFromSubmittingMessage']);
                    }
                    if ($prevent < 4) {
                        // parse conditions
                        $user = User::getInstance($id);
                        if ($user) {
                            $cond_val = $page->vars['forms_preventUserFromSubmittingCondVal'];
                            $cond_key = $page->vars['forms_preventUserFromSubmittingCondKey'];
                            if ($prevent == 3 && $user->get($cond_key) == $cond_val || $prevent == 2 && $user->get($cond_key) != $cond_val) {
                                return array('error' => $page->vars['forms_preventUserFromSubmittingMessage']);
                            }
                        }
                    }
                }
            }
        }
        $_SESSION['emails'][$email] = rand(10000, 99999);
    }
    mail($email, '[' . $_SERVER['HTTP_HOST'] . '] email verification code', 'The verification code for this email address is: ' . $_SESSION['emails'][$email]);
    return array('ok' => 1);
}
/**
 * retrieve HTML summary for a set page
 *
 * @param int $id ID of the page
 *
 * @return string HTML summary for a set page
 */
function PageSummaries_getHtml($id)
{
    $PAGEDATA = Page::getInstance($id);
    global $sitedomain;
    $r = dbRow('select * from page_summaries where page_id="' . $PAGEDATA->id . '"');
    if (!count($r)) {
        return '<em>This page is marked as a page summary, but there is no ' . 'information on how to handle it.</em>';
    }
    if ($r['rss']) {
        return PageSummaries_rssToHtml($r['rss']);
    }
    // { build rss
    $title = $PAGEDATA->title == '' ? $sitedomain : htmlspecialchars($PAGEDATA->title);
    $rss = '<' . '?xml version="1.0" ?' . '><rss version="2.0"><channel><title>' . $title . '</title>';
    $rss .= '<link>' . $_SERVER['REQUEST_URI'] . '</link><description>RSS for ' . $PAGEDATA->name . '</description>';
    $category = $PAGEDATA->category ? ' and category="' . $PAGEDATA->category . '"' : '';
    $containedpages = PageSummaries_getContainedPages($r['parent_id']);
    if (count($containedpages)) {
        $q2 = dbAll('select edate,name,title,body from pages where id in (' . join(',', $containedpages) . ')' . $category . ' order by cdate desc limit 20');
        foreach ($q2 as $r2) {
            $rss .= '<item>';
            if (!$r2['title']) {
                $r2['title'] = $r2['name'];
            }
            $rss .= '<title>' . htmlspecialchars($r2['title']) . '</title>';
            $rss .= '<pubDate>' . date_m2h($r2['edate']) . '</pubDate>';
            // { build body
            if ($r['amount_to_show'] == 0 || $r['amount_to_show'] == 1) {
                $length = $r['amount_to_show'] == 0 ? 300 : 600;
                $body = str_replace('  ', ' ', preg_replace('/<[^>]*>/', ' ', str_replace(array('&amp;', '&nbsp;', '&lsquo;'), array('&', ' ', '&apos;'), $r2['body'])));
                $body = substr($body, 0, $length) . '...';
            } else {
                $body = $r2['body'];
            }
            $body = str_replace('&euro;', '&#8364;', $body);
            // }
            $rss .= '<description>' . $body . '</description>';
            $rss .= '<link>http://' . $_SERVER['HTTP_HOST'] . '/' . urlencode(str_replace(' ', '-', $r2['name'])) . '</link>';
            $rss .= '</item>';
        }
    }
    $rss .= '</channel></rss>';
    dbQuery('update page_summaries set rss="' . addslashes($rss) . '" where page_id="' . $PAGEDATA->id . '"');
    // }
    return PageSummaries_rssToHtml($rss);
}
Example #17
0
/**
 * add a comment to a blog entry
 *
 * @return array entry status
 */
function Blog_commentAdd()
{
    $ret = array();
    $bid = (int) $_REQUEST['blog_entry_id'];
    $pid = (int) $_REQUEST['page_id'];
    $page = Page::getInstance($pid);
    if (!$page->name) {
        $ret['error'] = 'Invalid page id.';
        return $ret;
    }
    $entry = dbRow('select * from blog_entry where id=' . $bid . ' and status>0 and allow_comments');
    if (!$entry) {
        $ret['error'] = 'Entry does not exist, is not yet public,' . ' or does not allow comments.';
        return $ret;
    }
    $name = $_REQUEST['name'];
    $email = $_REQUEST['email'];
    $url = $_REQUEST['url'];
    $comment = $_REQUEST['comment'];
    $status = 0;
    $uid = 0;
    if (isset($_SESSION['userdata']['id'])) {
        $name = $_SESSION['userdata']['name'];
        $email = $_SESSION['userdata']['email'];
        $status = 1;
        $uid = $_SESSION['userdata']['id'];
    }
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $ret['error'] = 'Invalid email address';
        return $ret;
    }
    if ($url && !filter_var($url, FILTER_VALIDATE_URL)) {
        $ret['error'] = 'Invalid URL';
        return $ret;
    }
    $verification = '';
    if (!$status && $entry['allow_comments'] == 1) {
        $verification = md5(time() . rand());
    }
    dbQuery('insert into blog_comment set user_id=' . $uid . ', name="' . addslashes($name) . '"' . ', url="' . addslashes($url) . '"' . ', email="' . addslashes($email) . '"' . ', comment="' . addslashes($comment) . '"' . ', cdate=now(), blog_entry_id=' . $bid . ', status=' . $status . ', verification="' . $verification . '"');
    if (!$status && $entry['allow_comments'] == 1) {
        Core_mail($email, '[' . $_SERVER['HTTP_HOST'] . '] comment verification', 'A comment was posted on our website claiming to be from your email' . " address.\n\nIf it was not you, then please ignore this email.\n\n" . "To verify the comment, please click the following link:\n" . 'http://' . $_SERVER['HTP_HOST'] . '/a/p=blog/f=commentVerify/md5=' . $verification);
        $ret['message'] = 'Please check your email for a verification code';
    }
    return $ret;
}
Example #18
0
function News_getHeadlinesMonth()
{
    $y = (int) $_REQUEST['y'];
    $m = (int) $_REQUEST['m'];
    $p = (int) $_REQUEST['pid'];
    if ($y < 1000 || $y > 9999 || $m < 1 || $m > 12) {
        Core_quit();
    }
    $m = sprintf('%02d', $m);
    $sql = 'select id from pages where parent=' . $p . ' and associated_date>"' . $y . '-' . $m . '-00" and associated_date<date_add("' . $y . '-' . $m . '-01", interval 1 month) order by associated_date';
    $ps = dbAll($sql);
    $headlines = array();
    foreach ($ps as $p) {
        $page = Page::getInstance($p['id']);
        $headlines[] = array('url' => $page->getRelativeURL(), 'adate' => $page->associated_date, 'headline' => htmlspecialchars($page->alias));
    }
    return $headlines;
}
Example #19
0
/**
 * switches the reader to a translation if one exists
 *
 *	@param object $PAGEDATA page object
 *
 * @return void
 */
function Translate_checkCurrentPage($PAGEDATA)
{
    // { if this is a translation page, and no language is selected, select this one.
    if ($PAGEDATA->type == 'translate' && !isset($_SESSION['translate-lang'])) {
        $_SESSION['translate-lang'] = $PAGEDATA->vars['translate_language'];
    }
    // }
    // { if no language is selected, then return
    if (!isset($_SESSION['translate-lang']) || !$_SESSION['translate-lang']) {
        return;
    }
    // }
    // { various checks if this page is a translation one
    $page_to_translate = $PAGEDATA->id;
    if ($PAGEDATA->type == 'translate') {
        // { if this page's language is the selected one, return
        if ($PAGEDATA->vars['translate_language'] == $_SESSION['translate-lang']) {
            return;
        }
        // }
        $page_to_translate = (int) $PAGEDATA->vars['translate_page_id'];
    }
    $trs = dbAll('select page_id from page_vars where name="translate_page_id" and value=' . $page_to_translate, false, 'page_vars');
    // { try to find a version of the current page in the selected language
    if ($trs === false || !count($trs)) {
        return;
    }
    $ids = array();
    foreach ($trs as $tr) {
        $ids[] = $tr['page_id'];
    }
    $page_id = dbOne('select page_id from page_vars where name="translate_language" and value="' . addslashes($_SESSION['translate-lang']) . '" limit 1', 'page_id');
    // { if none found, return
    if ($page_id === false) {
        return;
    }
    // }
    $page = Page::getInstance($page_id);
    if ($page->id) {
        redirect($page->getRelativeUrl());
    }
    // }
}
Example #20
0
/**
 * show the news in Headline mode
 *
 * @param array $PAGEDATA the page object
 *
 * @return string HTML of the news
 */
function News_displayHeadlines($PAGEDATA)
{
    $items_per_page = isset($PAGEDATA->vars['news_items']) ? $PAGEDATA->vars['news_items'] : 5;
    $p = isset($_REQUEST['news_page']) ? (int) $_REQUEST['news_page'] : 0;
    if ($p < 0) {
        $p = 0;
    }
    $arr = Core_cacheLoad('pages', 'news-' . $GLOBALS['id'] . '-' . $p . '-' . $items_per_page);
    if ($arr === false) {
        $order_by = isset($PAGEDATA->vars['news_order']) ? addslashes($PAGEDATA->vars['news_order']) : 'associated_date desc';
        $rs = dbAll('select * from pages where parent=' . $GLOBALS['id'] . ' order by ' . $order_by . ',cdate desc limit ' . $p . ',' . $items_per_page);
        $num_stories = dbOne('select count(id) as num from pages where parent=' . $GLOBALS['id'], 'num');
        Core_cacheSave('pages', 'news-' . $GLOBALS['id'] . '-' . $p . '-' . $items_per_page, array($num_stories, $rs));
    } else {
        $num_stories = $arr[0];
        $rs = $arr[1];
        unset($arr);
    }
    $nextprev = array();
    $nextprev[] = '<span class="page_n_of_n">' . __('page %1 of %2', array(1 + floor($p / $items_per_page), ceil($num_stories / $items_per_page)), 'core') . '</span>';
    if ($p) {
        $nextprev[] = '<a class="prev" href="?news_page=' . ($p - $items_per_page) . '">' . __('Previous Page') . '</a>';
    }
    if ($p + $items_per_page < $num_stories) {
        $nextprev[] = '<a class="next" href="?news_page=' . ($p + $items_per_page) . '">' . __('Next Page') . '</a>';
    }
    $nextprev = '<div class="nextprev">' . join(' | ', $nextprev) . '</div>';
    $html = $nextprev;
    $links = array();
    foreach ($rs as $r) {
        $page = Page::getInstance($r['id'], $r);
        $content = isset($PAGEDATA->vars['news_display']) && $PAGEDATA->vars['news_display'] == 'full' ? $page->render() : substr(preg_replace('/<[^>]*>/', '', preg_replace('#<h1>[^<]*</h1>#', '', $page->render())), 0, 600);
        $date = isset($PAGEDATA->vars['news_title']) && $PAGEDATA->vars['news_title'] == 'yes' ? '<h2 class="news-header"><a href="' . $page->getRelativeURL() . '">' . htmlspecialchars($page->name) . '</a></h2>' . '<a class="news-date" href="' . $page->getRelativeURL() . '">' . __('posted on %1', array(Core_dateM2H($page->associated_date)), 'core') . '</a>' : '';
        if (!isset($page->associated_date) || !$page->associated_date) {
            $page->associated_date = $page->cdate;
        }
        $links[] = $date . '<p class="news-paragraph">' . $content . '...</p>';
    }
    $html .= join('<div class="news-break"></div>', $links);
    $html .= $nextprev;
    return $html;
}
Example #21
0
 static function precache($ids)
 {
     if (count($ids)) {
         $rs3 = dbAll('select * from pages where id in (' . join(',', $ids) . ')');
         $pvars = dbAll('select * from page_vars where page_id in (' . join(',', $ids) . ')');
         $rs2 = array();
         foreach ($pvars as $p) {
             if (!isset($rs2[$p['page_id']])) {
                 $rs2[$p['page_id']] = array();
             }
             $rs2[$p['page_id']][] = $p;
         }
         foreach ($rs3 as $r) {
             if (isset($rs2[$r['id']])) {
                 Page::getInstance($r['id'], $r, $rs2[$r['id']]);
             } else {
                 Page::getInstance($r['id'], $r);
             }
         }
     }
 }
Example #22
0
 public static function view($tpl_folder, $tpl_file, $display = true)
 {
     global $_LANG;
     if ($tpl_folder == 'admin') {
         $tpl_folder = PATH . '/app/components/' . self::$component . '/backend/views';
     } else {
         $is_exists_tpl_file = file_exists(TEMPLATE_DIR . $tpl_folder . '/' . $tpl_file);
         $tpl_folder = $is_exists_tpl_file ? TEMPLATE_DIR . $tpl_folder : DEFAULT_TEMPLATE_DIR . $tpl_folder;
     }
     $fenom = new RenderTemplate(new Fenom\Provider($tpl_folder));
     $fenom->setCompileDir(PATH . '/cache');
     $fenom->setCompileId(TEMPLATE . '_');
     $fenom->setOptions(array('strip' => true, 'auto_reload' => true));
     $fenom->addPluginsDir(__DIR__ . '/plugins/')->addPluginsDir(PATH . '/core/tpl_classes/plugins/fenom');
     $fenom->assignAll(['LANG' => $_LANG, 'is_ajax' => \Core::isAjax(), 'is_admin' => \User::getInstance()->is_admin, 'is_user' => \User::getInstance()->id, 'component' => \Core::getInstance()->component, 'do' => \Core::getInstance()->do, 'seo_link' => \Core::request('seolink', 'str', ''), 'site_cfg' => \Config::getInstance()->getConfig(), 'component_already' => \Page::getInstance()->page_body ? true : false, 'template' => TEMPLATE, 'template_dir' => trim(TEMPLATE_DIR, '/')]);
     if ($display) {
         $fenom->display($tpl_file, self::$tpl_vars);
     } else {
         return $fenom->fetch($tpl_file, self::$tpl_vars);
     }
 }
Example #23
0
 public function updatePerms($content_id, $groups = array())
 {
     $module_id = Page::getInstance()->getModule()->getVar('mid');
     $groups_exists = parent::getGroupIds('page_view_item', $content_id, $module_id);
     $groups_exists = array_values($groups_exists);
     $groups_delete = array_diff(array_values($groups_exists), $groups);
     $groups_add = array_diff($groups, array_values($groups_exists));
     // delete
     if (count($groups_delete) != 0) {
         $criteria = $criteria = new CriteriaCompo();
         $criteria->add(new Criteria('gperm_itemid', $content_id));
         $criteria->add(new Criteria('gperm_modid', $module_id));
         $criteria->add(new Criteria('gperm_name', 'page_view_item', '='));
         $criteria->add(new Criteria('gperm_groupid', '(' . implode(', ', $groups_delete) . ')', 'IN'));
         if (parent::deleteAll($criteria)) {
         }
     }
     // Add
     if (count($groups_add) != 0) {
         foreach ($groups_add as $group_id) {
             parent::addRight('page_view_item', $content_id, $group_id, $module_id);
         }
     }
 }
Example #24
0
 public function __construct()
 {
     $this->_page = Page::getInstance();
     $this->_resource = Resource::getInstance();
     $this->_module = $this->getModule();
     $this->_lang = Lang::lang();
     $this->_db = static::$_defaultDb;
     $this->_configMain = Registry::get('main', 'config');
     $cacheManager = new Cache_Manager();
     $this->_configBackoffice = Config::factory(Config::File_Array, $this->_configMain->get('configs') . 'backend.php');
     $this->_cache = $cacheManager->get('data');
     if (Request::get('logout', 'boolean', false)) {
         User::getInstance()->logout();
         session_destroy();
         if (!Request::isAjax()) {
             Response::redirect(Request::url(array('index')));
         }
     }
     $this->checkAuth();
     if ($this->_configBackoffice->get('use_csrf_token')) {
         $csrf = new Security_Csrf();
         $this->_page->csrfToken = $csrf->createToken();
     }
 }
Example #25
0
function Menu_show($b)
{
    global $PAGEDATA;
    if (!$PAGEDATA->id) {
        return '';
    }
    $md5 = md5('ww_menudisplay|' . print_r($b, true));
    $cache = cache_load('menus', $md5);
    if ($cache) {
        return $cache;
    }
    if (is_array($b)) {
        $align = isset($b['direction']) && $b['direction'] == 'vertical' ? 'Left' : 'Top';
        $vals = $b;
    } else {
        $arr = explode('|', $b);
        $b = $arr[0];
        $vals = array();
        if (count($arr) > 1) {
            $d = split(',', $arr[1]);
        } else {
            $d = array();
        }
        foreach ($d as $e) {
            $f = split('=', $e);
            if (count($f) > 1) {
                $vals[$f[0]] = $f[1];
            } else {
                $vals[$f[0]] = 1;
            }
        }
        $c = '';
        $align = $b == 'vertical' ? 'Left' : 'Top';
    }
    $parent = 0;
    $classes = '';
    if (isset($vals['mode'])) {
        if ($vals['mode'] == 'accordian' || $vals['mode'] == 'accordion') {
            $classes .= ' click_required accordion';
        } else {
            if ($vals['mode'] == 'two-tier') {
                $classes .= ' two-tier';
            }
        }
    } else {
        $vals['mode'] = 'default';
    }
    if (isset($vals['preopen_menu'])) {
        $classes .= ' preopen_menu';
    }
    if (isset($vals['close']) && $vals['close'] == 'no') {
        $classes .= ' noclose';
    }
    if (isset($vals['parent'])) {
        $r = Page::getInstanceByName($vals['parent']);
        if ($r) {
            $parent = $r->id;
        }
    }
    if (isset($vals['spans'])) {
        $vals['spans'] = (int) $vals['spans'];
    } else {
        $vals['spans'] = 1;
    }
    $search_options = 0;
    $ajaxmenu = $vals['nodropdowns'] ? '' : ' ajaxmenu ';
    $c = '<div id="ajaxmenu' . $parent . '" class="menuBar' . $align . $ajaxmenu . $classes . ' parent' . $parent . '">';
    $rs = Menu_getChildren($parent, $PAGEDATA->id, 0, $parent, $search_options);
    $links = 0;
    if ($vals['spans']) {
        $spanl = '<span class="l"></span>';
        $spanr = '<span class="r"></span>';
    } else {
        $spanl = '';
        $spanr = '';
    }
    if (count($rs)) {
        foreach ($rs as $r) {
            $page = Page::getInstance($r['id']);
            if (!$links) {
                $r['classes'] .= ' first';
            }
            $c .= '<a id="ajaxmenu_link' . $r['id'] . '" class="' . $r['classes'] . '" href="' . $page->getRelativeURL() . '">' . $spanl . htmlspecialchars($page->name) . $spanr . '</a>';
            $links++;
        }
    }
    if (!@$GLOBALS['DBVARS']['disable-hidden-sitemap']) {
        $c .= '<a class="menuItemTop nojs" href="' . $PAGEDATA->getRelativeURL() . '?webmespecial=sitemap">' . __('Site Map') . '</a>';
    }
    $c .= '</div>';
    if ($vals['mode'] == 'two-tier') {
        $pid = $PAGEDATA->getTopParentId();
        if ($pid != 2 && $pid != 3 && $pid != 17 && $pid != 32 && $pid != 33 && $pid != 34) {
            $pid = 2;
        }
        $rs = Menu_getChildren($pid, $PAGEDATA->id, 0, $parent, $search_options);
        $c .= '<div id="ajaxmenu' . $pid . '" class="menu tier-two">';
        if (count($rs)) {
            foreach ($rs as $r) {
                $page = Page::getInstance($r['id']);
                $c .= '<a id="ajaxmenu_link' . $r['id'] . '" class="' . $r['classes'] . '" href="' . $page->getRelativeURL() . '">' . $spanl . htmlspecialchars($page->name) . $spanr . '</a>';
            }
        } else {
            $c .= '<a><span class="l"></span>&nbsp;<span class="r"></span></a>';
        }
        $c .= '</div>';
    }
    cache_save('menus', $md5, $c);
    return $c;
}
Example #26
0
<?php

require_once "../src/Page.php";
try {
    $page = Page::getInstance();
    $page->addHead("<meta charset=\"utf-8\">");
    $page->setTitle("title");
    $page->setHeader("header<br>");
    $page->setContent("content<br>");
    $page->setFooter("footer");
    print $page->render();
} catch (Exception $e) {
    echo $e->getMessage();
}
Example #27
0
} else {
    // Create current page object
    $page_object = Page::getInstance($_GET['p']);
    if (!$page_object->userHaveRights()) {
        if ($_GET['mime'] == "text/html") {
            $user_no_rights_redirect = $page_object->getUserNoRightsRedirect();
            if ($user_no_rights_redirect != "") {
                if (strtoupper(substr($user_no_rights_redirect, 0, 7)) != "HTTP://" && strtoupper(substr($user_no_rights_redirect, 0, 8)) != "HTTPS://") {
                    $user_no_rights_redirect = BASE_URL . $user_no_rights_redirect;
                }
                header('HTTP/1.1 301 Moved Temporarily');
                header('Status: 301 Moved Temporarily');
                header("Location:" . $user_no_rights_redirect);
                exit;
            }
            $page_object = Page::getInstance("error-user-rights");
        } else {
            header('HTTP/1.1 500 Internal Server Error');
            echo 'You have no rights on the page ' . $_GET['p'];
            exit;
        }
    }
    $call_load_method = false;
    if (CACHING_ALL_PAGES && substr($_GET['p'], 0, 6) != "error-") {
        if (!$page_object->setCache()) {
            $call_load_method = true;
        }
    } else {
        $call_load_method = true;
    }
    if ($call_load_method) {
Example #28
0
<?php

/**
 * generate a sitemap, as defined here: http://sitemaps.org/
 *
 * PHP version 5.2
 *
 * @category None
 * @package  None
 * @author   Kae Verens <*****@*****.**>
 * @license  GPL 2.0
 * @link     http://kvsites.ie/
 */
require_once 'basics.php';
header('Content-type: text/xml; charset=utf-8');
echo '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
$rs = dbAll('select id,edate,importance,name from pages where importance>0 ' . '&& !(special&2) order by importance desc');
foreach ($rs as $r) {
    $page = Page::getInstance($r['id'])->initValues();
    $https = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on' ? 'https' : 'http';
    echo '<url><loc>' . $https . '://' . $_SERVER['HTTP_HOST'] . $page->getRelativeUrl() . '</loc>' . '<lastmod>' . preg_replace('/ .*/', '', $r['edate']) . '</lastmod>' . '<priority>' . $r['importance'] . '</priority>' . '</url>';
}
echo '</urlset>';
Example #29
0
 public function getCountPublished($start = 0, $limit = 0, $sort = 'content_weight ASC, content_title', $order = 'ASC')
 {
     $helper = Page::getInstance();
     $xoops = $helper->xoops();
     $module_id = $helper->getModule()->getVar('mid');
     // get permitted id
     $groups = $xoops->getUserGroups();
     $pages_ids = $helper->getGrouppermHandler()->getItemIds('page_view_item', $groups, $module_id);
     // criteria
     $criteria = new CriteriaCompo();
     $criteria->add(new Criteria('content_id', '(' . implode(', ', $pages_ids) . ')', 'IN'));
     $criteria->add(new Criteria('content_status', 0, '!='));
     $criteria->add(new Criteria('content_maindisplay', 0, '!='));
     $criteria->setSort($sort);
     $criteria->setOrder($order);
     $criteria->setStart($start);
     $criteria->setLimit($limit);
     return parent::getCount($criteria);
 }
Example #30
0
/**
 * get a category row from its id
 *
 * @param int $id the category ID
 *
 * @return array the data
 */
function Products_adminCategoryGetFromID($id)
{
    $pageid = dbOne('select page_id from page_vars where name="products_category_to_show"' . ' and value=' . $id, 'page_id', 'page_vars');
    $vals = ProductCategory::getInstance($id)->vals;
    $data = array('attrs' => array('thumbsize_w' => $vals['thumbsize_w'], 'thumbsize_h' => $vals['thumbsize_h'], 'id' => $vals['id'], 'associated_colour' => $vals['associated_colour'], 'name' => $vals['name'], 'enabled' => $vals['enabled'], 'parent_id' => $vals['parent_id']), 'products' => ProductsCategoriesProducts::getByCategoryId($id), 'hasIcon' => file_exists(USERBASE . '/f/products/categories/' . $id . '/icon.png') ? filemtime(USERBASE . '/f/products/categories/' . $id . '/icon.png') : 0);
    if (isset($pageid)) {
        $page = Page::getInstance($pageid);
        if ($page) {
            $url = $page->getRelativeUrl();
            $data['page'] = $url;
        }
    }
    return $data;
}