]> git.immae.eu Git - github/shaarli/Shaarli.git/commitdiff
Merge pull request #560 from ArthurHoaro/nb-private-shaare
authorArthur <arthur@hoa.ro>
Sat, 14 May 2016 09:11:11 +0000 (11:11 +0200)
committerArthur <arthur@hoa.ro>
Sat, 14 May 2016 09:11:11 +0000 (11:11 +0200)
Private links counter in the header

1  2 
index.php

diff --combined index.php
index 1eaf70cefbc0d898b7bcc20062613f354ccea1b8,90fdac81ee5287b4cb8af343d4056e08b1ed344f..5b8384ba8886fc15258163b9e3cdf295d061b777
+++ b/index.php
@@@ -162,6 -162,7 +162,7 @@@ require_once 'application/LinkDB.php'
  require_once 'application/LinkFilter.php';
  require_once 'application/LinkUtils.php';
  require_once 'application/NetscapeBookmarkUtils.php';
+ require_once 'application/PageBuilder.php';
  require_once 'application/TimeZone.php';
  require_once 'application/Url.php';
  require_once 'application/Utils.php';
@@@ -495,9 -496,9 +496,9 @@@ if (isset($_POST['login'])
      else
      {
          ban_loginFailed();
 -        $redir = '';
 +        $redir = '&username='. $_POST['login'];
          if (isset($_GET['post'])) {
 -            $redir = '?post=' . urlencode($_GET['post']);
 +            $redir .= '&post=' . urlencode($_GET['post']);
              foreach (array('description', 'source', 'title') as $param) {
                  if (!empty($_GET[$param])) {
                      $redir .= '&' . $param . '=' . urlencode($_GET[$param]);
@@@ -562,135 -563,13 +563,13 @@@ function tokenOk($token
      return false; // Wrong token, or already used.
  }
  
- // ------------------------------------------------------------------------------------------
- /* This class is in charge of building the final page.
-    (This is basically a wrapper around RainTPL which pre-fills some fields.)
-    p = new pageBuilder;
-    p.assign('myfield','myvalue');
-    p.renderPage('mytemplate');
- */
- class pageBuilder
- {
-     private $tpl; // RainTPL template
-     function __construct()
-     {
-         $this->tpl = false;
-     }
-     /**
-      * Initialize all default tpl tags.
-      */
-     private function initialize()
-     {
-         $this->tpl = new RainTPL;
-         try {
-             $version = ApplicationUtils::checkUpdate(
-                 shaarli_version,
-                 $GLOBALS['config']['UPDATECHECK_FILENAME'],
-                 $GLOBALS['config']['UPDATECHECK_INTERVAL'],
-                 $GLOBALS['config']['ENABLE_UPDATECHECK'],
-                 isLoggedIn(),
-                 $GLOBALS['config']['UPDATECHECK_BRANCH']
-             );
-             $this->tpl->assign('newVersion', escape($version));
-             $this->tpl->assign('versionError', '');
-         } catch (Exception $exc) {
-             logm($GLOBALS['config']['LOG_FILE'], $_SERVER['REMOTE_ADDR'], $exc->getMessage());
-             $this->tpl->assign('newVersion', '');
-             $this->tpl->assign('versionError', escape($exc->getMessage()));
-         }
-         $this->tpl->assign('feedurl', escape(index_url($_SERVER)));
-         $searchcrits = ''; // Search criteria
-         if (!empty($_GET['searchtags'])) {
-             $searchcrits .= '&searchtags=' . urlencode($_GET['searchtags']);
-         }
-         if (!empty($_GET['searchterm'])) {
-             $searchcrits .= '&searchterm=' . urlencode($_GET['searchterm']);
-         }
-         $this->tpl->assign('searchcrits', $searchcrits);
-         $this->tpl->assign('source', index_url($_SERVER));
-         $this->tpl->assign('version', shaarli_version);
-         $this->tpl->assign('scripturl', index_url($_SERVER));
-         $this->tpl->assign('pagetitle', 'Shaarli');
-         $this->tpl->assign('privateonly', !empty($_SESSION['privateonly'])); // Show only private links?
-         if (!empty($GLOBALS['title'])) {
-             $this->tpl->assign('pagetitle', $GLOBALS['title']);
-         }
-         if (!empty($GLOBALS['titleLink'])) {
-             $this->tpl->assign('titleLink', $GLOBALS['titleLink']);
-         }
-         if (!empty($GLOBALS['pagetitle'])) {
-             $this->tpl->assign('pagetitle', $GLOBALS['pagetitle']);
-         }
-         $this->tpl->assign('shaarlititle', empty($GLOBALS['title']) ? 'Shaarli': $GLOBALS['title']);
-         if (!empty($GLOBALS['plugin_errors'])) {
-             $this->tpl->assign('plugin_errors', $GLOBALS['plugin_errors']);
-         }
-     }
-     // The following assign() method is basically the same as RainTPL (except that it's lazy)
-     public function assign($what,$where)
-     {
-         if ($this->tpl===false) $this->initialize(); // Lazy initialization
-         $this->tpl->assign($what,$where);
-     }
-     /**
-      * Assign an array of data to the template builder.
-      *
-      * @param array $data Data to assign.
-      *
-      * @return false if invalid data.
-      */
-     public function assignAll($data)
-     {
-         // Lazy initialization
-         if ($this->tpl === false) {
-             $this->initialize();
-         }
-         if (empty($data) || !is_array($data)){
-             return false;
-         }
-         foreach ($data as $key => $value) {
-             $this->assign($key, $value);
-         }
-     }
-     // Render a specific page (using a template).
-     // e.g. pb.renderPage('picwall')
-     public function renderPage($page)
-     {
-         if ($this->tpl===false) $this->initialize(); // Lazy initialization
-         $this->tpl->draw($page);
-     }
-     /**
-     * Render a 404 page (uses the template : tpl/404.tpl)
-     *
-     * usage : $PAGE->render404('The link was deleted')
-     * @param string $message A messate to display what is not found
-     */
-     public function render404($message='The page you are trying to reach does not exist or has been deleted.') {
-         header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found');
-         $this->tpl->assign('error_message', $message);
-         $this->renderPage('404');
-     }
- }
  // ------------------------------------------------------------------------------------------
  // Daily RSS feed: 1 RSS entry per day giving all the links on that day.
  // Gives the last 7 days (which have links).
  // This RSS feed cannot be filtered.
  function showDailyRSS() {
      // Cache system
 -    $query = $_SERVER["QUERY_STRING"];
 +    $query = $_SERVER['QUERY_STRING'];
      $cache = new CachedPage(
          $GLOBALS['config']['PAGECACHE'],
          page_url($_SERVER),
@@@ -857,7 -736,6 +736,6 @@@ function showDaily($pageBuilder, $LINKS
      $dayDate = DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, $day.'_000000');
      $data = array(
          'linksToDisplay' => $linksToDisplay,
-         'linkcount' => count($LINKSDB),
          'cols' => $columns,
          'day' => $dayDate->getTimestamp(),
          'previousday' => $previousday,
@@@ -912,7 -790,9 +790,9 @@@ function renderPage(
          die($e->getMessage());
      }
  
-     $PAGE = new pageBuilder;
+     $PAGE = new PageBuilder();
+     $PAGE->assign('linkcount', count($LINKSDB));
+     $PAGE->assign('privateLinkcount', count_private($LINKSDB));
  
      // Determine which page will be rendered.
      $query = (isset($_SERVER['QUERY_STRING'])) ? $_SERVER['QUERY_STRING'] : '';
          if ($GLOBALS['config']['OPEN_SHAARLI']) { header('Location: ?'); exit; }  // No need to login for open Shaarli
          $token=''; if (ban_canLogin()) $token=getToken(); // Do not waste token generation if not useful.
          $PAGE->assign('token',$token);
 +        if (isset($_GET['username'])) {
 +            $PAGE->assign('username', escape($_GET['username']));
 +        }
          $PAGE->assign('returnurl',(isset($_SERVER['HTTP_REFERER']) ? escape($_SERVER['HTTP_REFERER']):''));
          $PAGE->renderPage('loginform');
          exit;
      }
      // -------- User wants to logout.
 -    if (isset($_SERVER["QUERY_STRING"]) && startswith($_SERVER["QUERY_STRING"],'do=logout'))
 +    if (isset($_SERVER['QUERY_STRING']) && startsWith($_SERVER['QUERY_STRING'], 'do=logout'))
      {
          invalidateCaches($GLOBALS['config']['PAGECACHE']);
          logout();
          }
  
          $data = array(
-             'linkcount' => count($LINKSDB),
              'linksToDisplay' => $linksToDisplay,
          );
          $pluginManager->executeHooks('render_picwall', $data, array('loggedin' => isLoggedIn()));
          }
  
          $data = array(
-             'linkcount' => count($LINKSDB),
              'tags' => $tagList,
          );
          $pluginManager->executeHooks('render_tagcloud', $data, array('loggedin' => isLoggedIn()));
              exit;
          }
  
 -              // Same case as above except that user tried to access ?do=addlink without being logged in
 -              // Note: passing empty parameters makes Shaarli generate default URLs and descriptions.
 -              if (isset($_GET['do']) && $_GET['do'] === 'addlink') {
 -                      header('Location: ?do=login&post=');
 -                      exit;
 -              }
          showLinkList($PAGE, $LINKSDB);
          if (isset($_GET['edit_link'])) {
              header('Location: ?do=login&edit_link='. escape($_GET['edit_link']));
      if ($targetPage == Router::$PAGE_TOOLS)
      {
          $data = array(
-             'linkcount' => count($LINKSDB),
              'pageabsaddr' => index_url($_SERVER),
          );
          $pluginManager->executeHooks('render_tools', $data);
          }
          else // show the change password form.
          {
-             $PAGE->assign('linkcount',count($LINKSDB));
              $PAGE->assign('token',getToken());
              $PAGE->renderPage('changepassword');
              exit;
          }
          else // Show the configuration form.
          {
-             $PAGE->assign('linkcount',count($LINKSDB));
              $PAGE->assign('token',getToken());
              $PAGE->assign('title', empty($GLOBALS['title']) ? '' : $GLOBALS['title'] );
              $PAGE->assign('redirector', empty($GLOBALS['redirector']) ? '' : $GLOBALS['redirector'] );
      if ($targetPage == Router::$PAGE_CHANGETAG)
      {
          if (empty($_POST['fromtag']) || (empty($_POST['totag']) && isset($_POST['renametag']))) {
-             $PAGE->assign('linkcount', count($LINKSDB));
              $PAGE->assign('token', getToken());
              $PAGE->assign('tags', $LINKSDB->allTags());
              $PAGE->renderPage('changetag');
      // -------- User wants to add a link without using the bookmarklet: Show form.
      if ($targetPage == Router::$PAGE_ADDLINK)
      {
-         $PAGE->assign('linkcount',count($LINKSDB));
          $PAGE->renderPage('addlink');
          exit;
      }
          $link = $LINKSDB[$_GET['edit_link']];  // Read database
          if (!$link) { header('Location: ?'); exit; } // Link not found in database.
          $data = array(
-             'linkcount' => count($LINKSDB),
              'link' => $link,
              'link_is_new' => false,
              'token' => getToken(),
          }
  
          $data = array(
-             'linkcount' => count($LINKSDB),
              'link' => $link,
              'link_is_new' => $link_is_new,
              'token' => getToken(), // XSRF protection.
          // Export links as a Netscape Bookmarks file
  
          if (empty($_GET['selection'])) {
-             $PAGE->assign('linkcount',count($LINKSDB));
              $PAGE->renderPage('export');
              exit;
          }
      }
  
      // -------- User is uploading a file for import
 -    if (isset($_SERVER["QUERY_STRING"]) && startswith($_SERVER["QUERY_STRING"],'do=upload'))
 +    if (isset($_SERVER['QUERY_STRING']) && startsWith($_SERVER['QUERY_STRING'], 'do=upload'))
      {
          // If file is too big, some form field may be missing.
          if (!isset($_POST['token']) || (!isset($_FILES)) || (isset($_FILES['filetoupload']['size']) && $_FILES['filetoupload']['size']==0))
      // -------- Show upload/import dialog:
      if ($targetPage == Router::$PAGE_IMPORT)
      {
-         $PAGE->assign('linkcount',count($LINKSDB));
          $PAGE->assign('token',getToken());
          $PAGE->assign('maxfilesize',getMaxFileSize());
          $PAGE->renderPage('import');
@@@ -1736,7 -1608,7 +1605,7 @@@ function importFile($LINKSDB
          {
              $link = array('linkdate'=>'','title'=>'','url'=>'','description'=>'','tags'=>'','private'=>0);
              $d = explode('<DD>',$html);
 -            if (startswith($d[0],'<A '))
 +            if (startsWith($d[0], '<A '))
              {
                  $link['description'] = (isset($d[1]) ? html_entity_decode(trim($d[1]),ENT_QUOTES,'UTF-8') : '');  // Get description (optional)
                  preg_match('!<A .*?>(.*?)</A>!i',$d[0],$matches); $link['title'] = (isset($matches[1]) ? trim($matches[1]) : '');  // Get title
@@@ -1882,7 -1754,6 +1751,6 @@@ function buildLinkList($PAGE,$LINKSDB
  
      // Fill all template fields.
      $data = array(
-         'linkcount' => count($LINKSDB),
          'previous_page_url' => $previous_page_url,
          'next_page_url' => $next_page_url,
          'page_current' => $page,
@@@ -2157,7 -2028,7 +2025,7 @@@ function install(
          $timezone_html = '<tr><td><b>Timezone:</b></td><td>'.$timezone_form.'</td></tr>';
      }
  
-     $PAGE = new pageBuilder;
+     $PAGE = new PageBuilder();
      $PAGE->assign('timezone_html',$timezone_html);
      $PAGE->assign('timezone_js',$timezone_js);
      $PAGE->renderPage('install');
@@@ -2207,7 -2078,7 +2075,7 @@@ function genThumbnail(
  
          // Is this a link to an image, or to a flickr page ?
          $imageurl='';
 -        if (endswith(parse_url($url,PHP_URL_PATH),'.jpg'))
 +        if (endsWith(parse_url($url, PHP_URL_PATH), '.jpg'))
          {  // This is a direct link to an image. e.g. http://farm1.staticflickr.com/5/5921913_ac83ed27bd_o.jpg
              preg_match('!(http://farm\d+\.staticflickr\.com/\d+/\d+_\w+_)\w.jpg!',$url,$matches);
              if (!empty($matches[1])) $imageurl=$matches[1].'m.jpg';
@@@ -2384,8 -2255,8 +2252,8 @@@ function resizeImage($filepath
      return true;
  }
  
 -if (isset($_SERVER["QUERY_STRING"]) && startswith($_SERVER["QUERY_STRING"],'do=genthumbnail')) { genThumbnail(); exit; }  // Thumbnail generation/cache does not need the link database.
 -if (isset($_SERVER["QUERY_STRING"]) && startswith($_SERVER["QUERY_STRING"],'do=dailyrss')) { showDailyRSS(); exit; }
 +if (isset($_SERVER['QUERY_STRING']) && startsWith($_SERVER['QUERY_STRING'], 'do=genthumbnail')) { genThumbnail(); exit; }  // Thumbnail generation/cache does not need the link database.
 +if (isset($_SERVER['QUERY_STRING']) && startsWith($_SERVER['QUERY_STRING'], 'do=dailyrss')) { showDailyRSS(); exit; }
  if (!isset($_SESSION['LINKS_PER_PAGE'])) $_SESSION['LINKS_PER_PAGE']=$GLOBALS['config']['LINKS_PER_PAGE'];
  renderPage();
  ?>