aboutsummaryrefslogtreecommitdiffhomepage
path: root/index.php
diff options
context:
space:
mode:
authorArthurHoaro <arthur@hoa.ro>2016-05-10 23:48:51 +0200
committerArthurHoaro <arthur@hoa.ro>2016-05-13 08:48:18 +0200
commit03eb19ac60d54442332077fa35a9b0d4e33df365 (patch)
tree53e43d7995f714b7419497eb928c2ec1317db512 /index.php
parentd95533778d86bb6c6de3b14a9da35e6d6e6428bd (diff)
downloadShaarli-03eb19ac60d54442332077fa35a9b0d4e33df365.tar.gz
Shaarli-03eb19ac60d54442332077fa35a9b0d4e33df365.tar.zst
Shaarli-03eb19ac60d54442332077fa35a9b0d4e33df365.zip
Extract PageBuilder class from index.php
Diffstat (limited to 'index.php')
-rw-r--r--index.php125
1 files changed, 2 insertions, 123 deletions
diff --git a/index.php b/index.php
index 408aeae9..01c23195 100644
--- a/index.php
+++ b/index.php
@@ -162,6 +162,7 @@ require_once 'application/LinkDB.php';
162require_once 'application/LinkFilter.php'; 162require_once 'application/LinkFilter.php';
163require_once 'application/LinkUtils.php'; 163require_once 'application/LinkUtils.php';
164require_once 'application/NetscapeBookmarkUtils.php'; 164require_once 'application/NetscapeBookmarkUtils.php';
165require_once 'application/PageBuilder.php';
165require_once 'application/TimeZone.php'; 166require_once 'application/TimeZone.php';
166require_once 'application/Url.php'; 167require_once 'application/Url.php';
167require_once 'application/Utils.php'; 168require_once 'application/Utils.php';
@@ -563,128 +564,6 @@ function tokenOk($token)
563} 564}
564 565
565// ------------------------------------------------------------------------------------------ 566// ------------------------------------------------------------------------------------------
566/* This class is in charge of building the final page.
567 (This is basically a wrapper around RainTPL which pre-fills some fields.)
568 p = new pageBuilder;
569 p.assign('myfield','myvalue');
570 p.renderPage('mytemplate');
571
572*/
573class pageBuilder
574{
575 private $tpl; // RainTPL template
576
577 function __construct()
578 {
579 $this->tpl = false;
580 }
581
582 /**
583 * Initialize all default tpl tags.
584 */
585 private function initialize()
586 {
587 $this->tpl = new RainTPL;
588
589 try {
590 $version = ApplicationUtils::checkUpdate(
591 shaarli_version,
592 $GLOBALS['config']['UPDATECHECK_FILENAME'],
593 $GLOBALS['config']['UPDATECHECK_INTERVAL'],
594 $GLOBALS['config']['ENABLE_UPDATECHECK'],
595 isLoggedIn(),
596 $GLOBALS['config']['UPDATECHECK_BRANCH']
597 );
598 $this->tpl->assign('newVersion', escape($version));
599 $this->tpl->assign('versionError', '');
600
601 } catch (Exception $exc) {
602 logm($GLOBALS['config']['LOG_FILE'], $_SERVER['REMOTE_ADDR'], $exc->getMessage());
603 $this->tpl->assign('newVersion', '');
604 $this->tpl->assign('versionError', escape($exc->getMessage()));
605 }
606
607 $this->tpl->assign('feedurl', escape(index_url($_SERVER)));
608 $searchcrits = ''; // Search criteria
609 if (!empty($_GET['searchtags'])) {
610 $searchcrits .= '&searchtags=' . urlencode($_GET['searchtags']);
611 }
612 if (!empty($_GET['searchterm'])) {
613 $searchcrits .= '&searchterm=' . urlencode($_GET['searchterm']);
614 }
615 $this->tpl->assign('searchcrits', $searchcrits);
616 $this->tpl->assign('source', index_url($_SERVER));
617 $this->tpl->assign('version', shaarli_version);
618 $this->tpl->assign('scripturl', index_url($_SERVER));
619 $this->tpl->assign('pagetitle', 'Shaarli');
620 $this->tpl->assign('privateonly', !empty($_SESSION['privateonly'])); // Show only private links?
621 if (!empty($GLOBALS['title'])) {
622 $this->tpl->assign('pagetitle', $GLOBALS['title']);
623 }
624 if (!empty($GLOBALS['titleLink'])) {
625 $this->tpl->assign('titleLink', $GLOBALS['titleLink']);
626 }
627 if (!empty($GLOBALS['pagetitle'])) {
628 $this->tpl->assign('pagetitle', $GLOBALS['pagetitle']);
629 }
630 $this->tpl->assign('shaarlititle', empty($GLOBALS['title']) ? 'Shaarli': $GLOBALS['title']);
631 if (!empty($GLOBALS['plugin_errors'])) {
632 $this->tpl->assign('plugin_errors', $GLOBALS['plugin_errors']);
633 }
634 }
635
636 // The following assign() method is basically the same as RainTPL (except that it's lazy)
637 public function assign($what,$where)
638 {
639 if ($this->tpl===false) $this->initialize(); // Lazy initialization
640 $this->tpl->assign($what,$where);
641 }
642
643 /**
644 * Assign an array of data to the template builder.
645 *
646 * @param array $data Data to assign.
647 *
648 * @return false if invalid data.
649 */
650 public function assignAll($data)
651 {
652 // Lazy initialization
653 if ($this->tpl === false) {
654 $this->initialize();
655 }
656
657 if (empty($data) || !is_array($data)){
658 return false;
659 }
660
661 foreach ($data as $key => $value) {
662 $this->assign($key, $value);
663 }
664 }
665
666 // Render a specific page (using a template).
667 // e.g. pb.renderPage('picwall')
668 public function renderPage($page)
669 {
670 if ($this->tpl===false) $this->initialize(); // Lazy initialization
671 $this->tpl->draw($page);
672 }
673
674 /**
675 * Render a 404 page (uses the template : tpl/404.tpl)
676 *
677 * usage : $PAGE->render404('The link was deleted')
678 * @param string $message A messate to display what is not found
679 */
680 public function render404($message='The page you are trying to reach does not exist or has been deleted.') {
681 header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found');
682 $this->tpl->assign('error_message', $message);
683 $this->renderPage('404');
684 }
685}
686
687// ------------------------------------------------------------------------------------------
688// Daily RSS feed: 1 RSS entry per day giving all the links on that day. 567// Daily RSS feed: 1 RSS entry per day giving all the links on that day.
689// Gives the last 7 days (which have links). 568// Gives the last 7 days (which have links).
690// This RSS feed cannot be filtered. 569// This RSS feed cannot be filtered.
@@ -912,7 +791,7 @@ function renderPage()
912 die($e->getMessage()); 791 die($e->getMessage());
913 } 792 }
914 793
915 $PAGE = new pageBuilder; 794 $PAGE = new PageBuilder();
916 795
917 // Determine which page will be rendered. 796 // Determine which page will be rendered.
918 $query = (isset($_SERVER['QUERY_STRING'])) ? $_SERVER['QUERY_STRING'] : ''; 797 $query = (isset($_SERVER['QUERY_STRING'])) ? $_SERVER['QUERY_STRING'] : '';