Exemple #1
0
 /**
  * Gets the product reader of a certain page
  * @param Database_Result|int	page object or page ID
  * @param int	override setting from a module or content element
  * @return int	reader page id
  */
 public static function getReaderPageId($objOriginPage = null, $intOverride = 0)
 {
     if ($intOverride > 0) {
         return $intOverride;
     }
     if ($objOriginPage === null) {
         global $objPage;
         $objOriginPage = $objPage;
     }
     $intPage = is_object($objOriginPage) ? (int) $objOriginPage->id : (int) $objOriginPage;
     // return from cache
     if (isset(self::$arrReaderPageIds[$intPage])) {
         return self::$arrReaderPageIds[$intPage];
     }
     $objDatabase = Database::getInstance();
     if (!is_object($objOriginPage)) {
         $objOriginPage = $objDatabase->execute("SELECT * FROM tl_page WHERE id=" . $intPage);
     }
     // if the reader page is set on the current page id we return this one
     if ($objOriginPage->iso_setReaderJumpTo > 0) {
         self::$arrReaderPageIds[$intPage] = $objOriginPage->iso_readerJumpTo;
         return $objOriginPage->iso_readerJumpTo;
     }
     // now move up the page tree until we find a page where the reader is set
     $trail = array();
     $pid = $objOriginPage->pid;
     do {
         $objParentPage = $objDatabase->execute("SELECT * FROM tl_page WHERE id=" . $pid);
         if ($objParentPage->numRows < 1) {
             break;
         }
         $trail[] = $objParentPage->id;
         if ($objParentPage->iso_setReaderJumpTo > 0) {
             // cache the reader page for all trail pages
             self::$arrReaderPageIds = array_merge(self::$arrReaderPageIds, array_fill_keys($trail, $objParentPage->iso_readerJumpTo));
             return $objParentPage->iso_readerJumpTo;
         }
         $pid = $objParentPage->pid;
     } while ($pid > 0 && $objParentPage->type != 'root');
     // if there is no reader page set at all, we take the current page object
     global $objPage;
     self::$arrReaderPageIds[$intPage] = $objPage->id;
     return $objPage->id;
 }