/
pub
/
danecewa
/
jardigital.cz
/
web
/
www
/
core
/
Upload File
HOME
<?php class Pages { var $aPages = null; var $aPagesChildrens = null; var $aPagesParentsTypes = null; var $aPagesParents = null; var $aPageParents = null; var $mData = null; /** * Constructor * @return void */ function Pages( ){ $this->generateCache( ); } // end function Pages /** * Return pages to menu * @return string * @param string $sFile * @param int $iType * @param int $iPageCurrent * @param int $iDepthLimit */ function throwMenu( $sFile, $iType, $iPageCurrent = null, $iDepthLimit = 1 ){ if( !isset( $this->aPagesParentsTypes[$iType] ) ) return null; $this->mData = null; if( isset( $iPageCurrent ) ) $this->generatePageParents( $iPageCurrent ); $this->generateMenuData( $iType, $iPageCurrent, $iDepthLimit, 0 ); if( isset( $this->mData[0] ) ){ $oTpl = TplParser::getInstance( ); $content = null; $i = 0; $iCount = count( $this->mData[0] ); foreach( $this->mData[0] as $iPage => $bValue ){ $aData = $this->aPages[$iPage]; $aData['sSubContent'] = isset( $this->mData[$iPage] ) ? $this->throwSubMenu( $sFile, $iPage, $iPageCurrent, 1 ) : null; $aData['iStyle'] = ( $i % 2 ) ? 0: 1; $aData['sStyle'] = ( $i == ( $iCount - 1 ) ) ? 'L': $i + 1; $aData['iDepth'] = 0; $aData['sSelected'] = ( $aData['iPage'] == $iPageCurrent ) ? $oTpl->tbHtml( $sFile, 'SELECTED' ) : null; $oTpl->setVariables( 'aData', $aData ); $content .= $oTpl->tbHtml( $sFile, 'LIST' ); $i++; } // end foreach if( isset( $content ) ){ $aData['sMenuType'] = $GLOBALS['aMenuTypes'][$iType]; $oTpl->setVariables( 'aData', $aData ); return $oTpl->tbHtml( $sFile, 'HEAD' ).$content.$oTpl->tbHtml( $sFile, 'FOOT' ); } } } // end function throwMenu /** * Display sub menu * @return string * @param string $sFile * @param int $iPageParent * @param int $iPageCurrent * @param int $iDepth */ function throwSubMenu( $sFile, $iPageParent, $iPageCurrent, $iDepth = 1 ){ if( isset( $this->mData[$iPageParent] ) ){ $oTpl = TplParser::getInstance( ); $content = null; $i = 0; $iCount = count( $this->mData[$iPageParent] ); foreach( $this->mData[$iPageParent] as $iPage => $bValue ){ $aData = $this->aPages[$iPage]; $aData['sSubContent'] = isset( $this->aPagesChildrens[$iPage] ) ? $this->throwSubMenu( $sFile, $iPage, $iPageCurrent, $iDepth + 1 ) : null; $aData['iStyle'] = ( $i % 2 ) ? 0: 1; $aData['sStyle'] = ( $i == ( $iCount - 1 ) ) ? 'L': $i + 1; $aData['iDepth'] = $iDepth; $aData['sSelected'] = ( $aData['iPage'] == $iPageCurrent ) ? $oTpl->tbHtml( $sFile, 'SELECTED' ) : null; $oTpl->setVariables( 'aData', $aData ); $content .= $oTpl->tbHtml( $sFile, 'LIST' ); $i++; } if( isset( $content ) ){ return $oTpl->tbHtml( $sFile, 'HEAD_SUB' ).$content.$oTpl->tbHtml( $sFile, 'FOOT_SUB' ); } } } // end function throwSubMenu /** * Return variable with menu * @return null * @param int $iType * @param int $iPageCurrent * @param int $iDepthLimit * @param int $iDepth * @param int $iPageParent */ function generateMenuData( $iType, $iPageCurrent, $iDepthLimit, $iDepth = 0, $iPageParent = null ){ if( !isset( $this->mData ) ){ $aData = $this->aPagesParentsTypes[$iType]; } else{ if( isset( $this->aPagesChildrens[$iPageParent] ) ) $aData = $this->aPagesChildrens[$iPageParent]; } if( isset( $aData ) ){ foreach( $aData as $iKey => $iPage ){ $this->mData[$this->aPages[$iPage]['iPageParent']][$iPage] = true; if( $iDepthLimit > $iDepth && ( $iPageCurrent == $iPage || isset( $this->aPageParents[$iPage] ) ) && $this->aPages[$iPage]['iSubpagesShow'] != 3 ){ #if( $iDepthLimit > $iDepth ){ $this->generateMenuData( $iType, $iPageCurrent, $iDepthLimit, $iDepth + 1, $iPage ); } } // end foreach } } // end function generateMenuData /** * Return page data * @return array * @param int $iPage */ function throwPage( $iPage ){ if( isset( $this->aPages[$iPage] ) ){ $aFile = file( DB_PAGES_EXT ); $iCount = count( $aFile ); $sFunction = LANGUAGE.'_pages_ext'; for( $i = 1; $i < $iCount; $i++ ){ $aExp = explode( '$', $aFile[$i] ); if( $aExp[0] == $iPage ){ $aData = $sFunction( $aExp ); break; } } // end for if( isset( $aData ) ){ $aFile = null; if( defined( 'CUSTOMER_PAGE' ) && strstr( $aData['sDescriptionFull'], '[break]' ) ){ $aExp = explode( '[break]', $aData['sDescriptionFull'] ); if( isset( $GLOBALS['aActions']['o4'] ) && is_numeric( $GLOBALS['aActions']['o4'] ) ) $iPageContent = $GLOBALS['aActions']['o4']; else $iPageContent = 1; if( isset( $aExp[$iPageContent - 1] ) ){ $aData['sDescriptionFull'] = $aExp[$iPageContent - 1]; $aData['sPages'] = countPages( count( $aExp ), 1, $iPageContent, throwPageUrl( $this->aPages[$iPage]['sLinkName'].',,', true ), null, MAX_PAGES, FRIENDLY_LINKS ); } } return array_merge( $this->aPages[$iPage], $aData ); } } else return null; } // end function throwPage /** * Return pages tree * @return string * @param int $iPage */ function throwPagesTree( $iPage ){ if( isset( $this->aPagesParents[$iPage] ) && isset( $this->aPages[$this->aPagesParents[$iPage]] ) ){ $this->mData[] = '<a href="'.$this->aPages[$this->aPagesParents[$iPage]]['sLinkName'].'">'.$this->aPages[$this->aPagesParents[$iPage]]['sName'].'</a>'; return $this->throwPagesTree( $this->aPagesParents[$iPage] ); } else{ if( isset( $this->mData ) ){ $aReturn = array_reverse( $this->mData ); $this->mData = null; return implode( ' » ', $aReturn ); } } } // end function throwPagesTree /** * Return all childrens * @return array * @param int $iPage */ function throwAllChildrens( $iPage ){ $bFirst = !isset( $this->mData ) ? true : null; if( isset( $this->aPagesChildrens[$iPage] ) ){ foreach( $this->aPagesChildrens[$iPage] as $iValue ){ if( isset( $this->aPages[$iValue] ) ){ $this->mData[] = $iValue; $this->throwAllChildrens( $iValue ); } } } return isset( $bFirst ) ? $this->mData : null; } // end function throwAllChildrens /** * Return list of subpages * @return string * @param int $iPage * @param string $sFile * @param int $iType */ function listSubpages( $iPage, $sFile, $iType ){ if( isset( $this->aPagesChildrens[$iPage] ) ){ if( $iType > 1 ){ $oFile = Files::getInstance( ); } $iCount = count( $this->aPagesChildrens[$iPage] ); $content= null; $oTpl = TplParser::getInstance( ); for( $i = 0; $i < $iCount; $i++ ){ $aData = $this->aPages[$this->aPagesChildrens[$iPage][$i]]; $aData['iStyle'] = ( $i % 2 ) ? 0: 1; $aData['sStyle'] = ( $i == ( $iCount - 1 ) ) ? 'L': $i + 1; if( !empty( $aData['sDescriptionShort'] ) ){ $aData['sDescriptionShort'] = changeTxt( $aData['sDescriptionShort'], 'nlNds' ); $oTpl->setVariables( 'aData', $aData ); $aData['sDescriptionShort'] = $oTpl->tbHtml( $sFile, 'SUBPAGES_DESCRIPTION_'.$iType ); } $oTpl->setVariables( 'aData', $aData ); if( isset( $oFile ) && isset( $oFile->aImagesDefault[1][$aData['iPage']] ) ){ $aDataImage = $oFile->aFilesImages[1][$oFile->aImagesDefault[1][$aData['iPage']]]; $oTpl->setVariables( 'aDataImage', $aDataImage ); $aData['sImage'] = $oTpl->tbHtml( $sFile, 'SUBPAGES_IMAGE_'.$iType ); } else{ if( $iType > 1 ){ $aData['sImage'] = $oTpl->tbHtml( $sFile, 'SUBPAGES_NO_IMAGE_'.$iType ); } } $oTpl->setVariables( 'aData', $aData ); $content .= $oTpl->tbHtml( $sFile, 'SUBPAGES_LIST_'.$iType ); } // end for if( isset( $content ) ){ return $oTpl->tbHtml( $sFile, 'SUBPAGES_HEAD_'.$iType ).$content.$oTpl->tbHtml( $sFile, 'SUBPAGES_FOOT_'.$iType ); } } } // end function listSubpages /** * Generate cache variables * @return void */ function generateCache( ){ if( !is_file( DB_PAGES ) ) return null; $aFile = file( DB_PAGES ); $iCount = count( $aFile ); $sFunction = LANGUAGE.'_pages'; $iStatus = throwStatus( ); $this->aPages = null; $this->aPagesChildrens = null; $this->aPagesParents = null; $this->aPagesParentsTypes = null; if( $GLOBALS['config']['users_plugin_active'] == true ) setUserVariables( ); for( $i = 1; $i < $iCount; $i++ ){ $aExp = explode( '$', $aFile[$i] ); if( $GLOBALS['config']['users_plugin_active'] == true && defined( 'CUSTOMER_PAGE' ) && isset( $aExp[5] ) && $aExp[5] >= $iStatus && defined( 'HIDE_AUTHORIZED_PAGES' ) && HIDE_AUTHORIZED_PAGES == true ){ $this->checkPageGenerateCache( $aExp ); } if( isset( $aExp[5] ) && $aExp[5] >= $iStatus ){ if( !is_numeric( $aExp[1] ) ) $aExp[1] = 0; $this->aPages[$aExp[0]] = $sFunction( $aExp ); $this->aPages[$aExp[0]]['sDate'] = is_numeric( $this->aPages[$aExp[0]]['iTime'] ) ? date( 'Y-m-d H:i', $this->aPages[$aExp[0]]['iTime'] ) : null; $this->aPages[$aExp[0]]['sLinkName'] = throwPageUrl( change2Url( $this->aPages[$aExp[0]]['sName'] ).','.$aExp[0] ); if( $aExp[1] > 0 ){ $this->aPagesChildrens[$aExp[1]][] = $aExp[0]; $this->aPagesParents[$aExp[0]] = $aExp[1]; } else{ if( !empty( $aExp[7] ) ) $this->aPagesParentsTypes[$aExp[7]][] = $aExp[0]; } } } // end for if( $GLOBALS['config']['users_plugin_active'] == true && defined( 'CUSTOMER_PAGE' ) && defined( 'HIDE_AUTHORIZED_PAGES' ) && HIDE_AUTHORIZED_PAGES == true ){ $this->checkCachePages( ); } } // end function generateCache /** * Generate page all parents * @return void * @param int $iPage */ function generatePageParents( $iPage ){ if( isset( $this->aPagesParents[$iPage] ) ){ $this->aPageParents[$this->aPagesParents[$iPage]] = true; $this->generatePageParents( $this->aPagesParents[$iPage] ); } } // end function generatePageParents /** * Return list of subpages in RSS file * @return string * @param int $iPage * @param string $sFile */ function listSubpagesRss( $iPage, $sFile ){ if( isset( $this->aPagesChildrens[$iPage] ) ){ $sSiteUrl = 'http://'.$_SERVER['HTTP_HOST'].dirname( $_SERVER['REQUEST_URI'] ).'/'; $iCount = count( $this->aPagesChildrens[$iPage] ); $content = null; $oTpl = TplParser::getInstance( ); for( $i = 0; $i < $iCount; $i++ ){ $aData = $this->aPages[$this->aPagesChildrens[$iPage][$i]]; if( !isset( $aData['iTime'] ) || empty( $aData['iTime'] ) ) $aData['iTime'] = time( ); $aData['sDescriptionShort'] = changeTxt( $aData['sDescriptionShort'], 'nlNds' ); $aData['sDate'] = date( 'r', $aData['iTime'] ); $aData['sSiteUrl'] = $sSiteUrl; $oTpl->setVariables( 'aData', $aData ); $content .= $oTpl->tbHtml( $sFile, 'RSS_LIST' ); } // end for if( isset( $content ) ){ return $oTpl->tbHtml( $sFile, 'RSS_HEAD' ).$content.$oTpl->tbHtml( $sFile, 'RSS_FOOT' ); } } } // end function listSubpagesRss /** * Return list of subpages * @return string * @param int $iPage * @param string $sFile */ function listSubpagesGallery( $iPage, $sFile ){ if( isset( $this->aPagesChildrens[$iPage] ) ){ $iCount = count( $this->aPagesChildrens[$iPage] ); $iColumns = 3; $iWidth = (int) ( 100 / $iColumns ); $content = null; $oTpl = TplParser::getInstance( ); $oFile = Files::getInstance( ); for( $i = 0; $i < $iCount; $i++ ){ $aData = $this->aPages[$this->aPagesChildrens[$iPage][$i]]; $aData['iWidth'] = $iWidth; $aData['iStyle'] = ( $i % 2 ) ? 0: 1; $aData['sStyle'] = ( $i == ( $iCount - 1 ) ) ? 'L': $i + 1; if( $i > 0 && $i % $iColumns == 0 ){ $oTpl->setVariables( 'aData', $aData ); $content .= $oTpl->tbHtml( $sFile, 'SUBPAGES_GALLERY_BREAK' ); } $oTpl->setVariables( 'aData', $aData ); if( isset( $oFile->aImagesDefault[1][$aData['iPage']] ) ){ $aDataImage = $oFile->aFilesImages[1][$oFile->aImagesDefault[1][$aData['iPage']]]; $oTpl->setVariables( 'aDataImage', $aDataImage ); $aData['sImage'] = $oTpl->tbHtml( $sFile, 'SUBPAGES_GALLERY_IMAGE' ); } else{ $aData['sImage'] = $oTpl->tbHtml( $sFile, 'SUBPAGES_GALLERY_NO_IMAGE' ); } $oTpl->setVariables( 'aData', $aData ); $content .= $oTpl->tbHtml( $sFile, 'SUBPAGES_GALLERY_LIST' ); } // end for while( $i % $iColumns > 0 ){ $content .= $oTpl->tbHtml( $sFile, 'SUBPAGES_GALLERY_BLANK' ); $i++; } // end while if( isset( $content ) ){ return $oTpl->tbHtml( $sFile, 'SUBPAGES_GALLERY_HEAD' ).$content.$oTpl->tbHtml( $sFile, 'SUBPAGES_GALLERY_FOOT' ); } } } // end function listSubpagesGallery /** * Return list of subpages as news * @return string * @param int $iPage * @param string $sFile */ function listSubpagesNews( $iPage, $sFile ){ $iType = 3; if( isset( $this->aPagesChildrens[$iPage] ) ){ $oFile = Files::getInstance( ); $iCount = count( $this->aPagesChildrens[$iPage] ); $content= null; $iList = $GLOBALS['config']['news_list']; $oTpl = TplParser::getInstance( ); $iPages = ceil( $iCount / $iList ); $iPageNumber = isset( $GLOBALS['aActions']['o3'] ) ? $GLOBALS['aActions']['o3'] : 1; if( !isset( $iPageNumber ) || !is_numeric( $iPageNumber ) || $iPageNumber < 1 ) $iPageNumber = 1; if( $iPageNumber > $iPages ) $iPageNumber = $iPages; $iEnd = $iPageNumber * $iList; $iStart = $iEnd - $iList; if( $iEnd > $iCount ) $iEnd = $iCount; for( $i = 0; $i < $iCount; $i++ ){ $aSort[$i][0] = $this->aPages[$this->aPagesChildrens[$iPage][$i]]['iTime']; $aSort[$i][1] = $this->aPagesChildrens[$iPage][$i]; } // end for rsort( $aSort ); for( $i = $iStart; $i < $iEnd; $i++ ){ $aData = $this->aPages[$aSort[$i][1]]; $aData['iStyle'] = ( $i % 2 ) ? 0: 1; $aData['sStyle'] = ( $i == ( $iCount - 1 ) ) ? 'L': $i + 1; if( !empty( $aData['sDescriptionShort'] ) ){ $aData['sDescriptionShort'] = changeTxt( $aData['sDescriptionShort'], 'nlNds' ); $oTpl->setVariables( 'aData', $aData ); $aData['sDescriptionShort'] = $oTpl->tbHtml( $sFile, 'SUBPAGES_DESCRIPTION_'.$iType ); } $oTpl->setVariables( 'aData', $aData ); if( isset( $oFile->aImagesDefault[1][$aData['iPage']] ) ){ $aDataImage = $oFile->aFilesImages[1][$oFile->aImagesDefault[1][$aData['iPage']]]; $oTpl->setVariables( 'aDataImage', $aDataImage ); $aData['sImage'] = $oTpl->tbHtml( $sFile, 'SUBPAGES_IMAGE_'.$iType ); } else{ $aData['sImage'] = $oTpl->tbHtml( $sFile, 'SUBPAGES_NO_IMAGE_'.$iType ); } $oTpl->setVariables( 'aData', $aData ); $content .= $oTpl->tbHtml( $sFile, 'SUBPAGES_LIST_'.$iType ); } // end for if( isset( $content ) ){ $aData['sPages'] = countPages( $iCount, $iList, $iPageNumber, throwPageUrl( $this->aPages[$iPage]['sLinkName'].',', true ), null, MAX_PAGES, FRIENDLY_LINKS ); $oTpl->setVariables( 'aData', $aData ); return $oTpl->tbHtml( $sFile, 'SUBPAGES_HEAD_'.$iType ).$content.$oTpl->tbHtml( $sFile, 'SUBPAGES_FOOT_'.$iType ); } } } // end function listSubpagesNews /** * List of all pages and generate xml file * @return string * @param string $sFile */ function listPagesSiteMap2Xml( $sFile ){ if( isset( $this->aPages ) ){ $sSiteUrl = 'http://'.$_SERVER['HTTP_HOST'].dirname( $_SERVER['REQUEST_URI'] ).'/'; $content = null; $oTpl = TplParser::getInstance( ); foreach( $this->aPages as $iPage => $aData ){ $aData['sDescriptionShort'] = changeTxt( $aData['sDescriptionShort'], 'nlNds' ); $aData['sSiteUrl'] = $sSiteUrl; $oTpl->setVariables( 'aData', $aData ); $content .= $oTpl->tbHtml( $sFile, 'SITEMAP2XML_LIST' ); } // end foreach if( isset( $content ) ){ return $oTpl->tbHtml( $sFile, 'SITEMAP2XML_HEAD' ).$content.$oTpl->tbHtml( $sFile, 'SITEMAP2XML_FOOT' ); } } } // end function listPagesSiteMap2Xml /** * Return sitemap list * @return string * @param string $sFile * @param int $iPageParent * @param int $iDepth */ function listSiteMap( $sFile, $iPageParent = null, $iDepth = 0 ){ $iSiteMap = $GLOBALS['config']['site_map']; if( !isset( $iPageParent ) ){ foreach( $this->aPages as $iPage => $aData ){ if( !isset( $this->aPagesParents[$iPage] ) && $aData['iType'] != 5 && $iSiteMap != $iPage ) $aPages[] = $iPage; } } else{ if( isset( $this->aPagesChildrens[$iPageParent] ) ) $aPages = $this->aPagesChildrens[$iPageParent]; } if( isset( $aPages ) ){ $oTpl = TplParser::getInstance( ); $content = null; $i = 0; $iCount = count( $aPages ); for( $i = 0; $i < $iCount; $i++ ){ $iPage = $aPages[$i]; $aData = $this->aPages[$iPage]; $aData['sSubContent'] = ( isset( $this->aPagesChildrens[$iPage] ) && $aData['iSubpagesShow'] != 3 ) ? $this->listSiteMap( $sFile, $iPage, $iDepth + 1 ) : null; $aData['iStyle'] = ( $i % 2 ) ? 0: 1; $aData['sStyle'] = ( $i == ( $iCount - 1 ) ) ? 'L': $i + 1; $aData['iDepth'] = $iDepth; $oTpl->setVariables( 'aData', $aData ); $content .= $oTpl->tbHtml( $sFile, 'SITEMAP_LIST' ); } // end for if( isset( $content ) ){ $oTpl->setVariables( 'aData', $aData ); if( isset( $iPageParent ) ){ return $oTpl->tbHtml( $sFile, 'SITEMAP_HEAD_SUB' ).$content.$oTpl->tbHtml( $sFile, 'SITEMAP_FOOT_SUB' ); } else{ return $oTpl->tbHtml( $sFile, 'SITEMAP_HEAD' ).$content.$oTpl->tbHtml( $sFile, 'SITEMAP_FOOT' ); } } } } // end function listSiteMap /** * Return page tags * @return array * @param int $iPage * @param string $sFile */ function listPageTagsHtml( $iPage, $sFile ){ if( isset( $this->aPages[$GLOBALS['config']['page_tags']] ) ){ $sTags = trim( $this->aPages[$iPage]['sTags'] ); if( !empty( $sTags ) ){ $aExp = explode( ',', $sTags ); $oTpl = TplParser::getInstance( ); $iCount = count( $aExp ); $content= null; $aData['sPageLinkName'] = $this->aPages[$GLOBALS['config']['page_tags']]['sLinkName']; for( $i = 0; $i < $iCount; $i++ ){ $aData['sTag'] = trim( $aExp[$i] ); $aData['sLinkName'] = ( defined( 'FRIENDLY_LINKS' ) && FRIENDLY_LINKS == true ) ? str_replace( '.html', null, $aData['sPageLinkName'].',,,,'.$aData['sTag'] ).'.html' : $aData['sPageLinkName'].',,,,'.$aData['sTag']; $oTpl->setVariables( 'aData', $aData ); $content .= $oTpl->tbHtml( $sFile, 'TAGS_LIST' ); } // end for } if( isset( $content ) ) return $oTpl->tbHtml( $sFile, 'TAGS_HEAD' ).$content.$oTpl->tbHtml( $sFile, 'TAGS_FOOT' ); } } // end function listPageTagsHtml /** * Return list pages tags * @return string * @param string $sFile * @param string $sTag */ function listPagesTags( $sFile, $sTag ){ foreach( $this->aPages as $iPage => $aData ){ if( !empty( $aData['sTags'] ) ) $aData['sTags'] = trim( ereg_replace( ' ,', ',', $aData['sTags'] ) ); if( !empty( $aData['sTags'] ) && stristr( $aData['sTags'], $sTag ) ){ $aPages[] = $iPage; } } // end foreach if( isset( $aPages ) ){ $oFile = Files::getInstance( ); $iCount = count( $aPages ); $content= null; $oTpl = TplParser::getInstance( ); for( $i = 0; $i < $iCount; $i++ ){ $aData = $this->aPages[$aPages[$i]]; $aData['iStyle'] = ( $i % 2 ) ? 0: 1; $aData['sStyle'] = ( $i == ( $iCount - 1 ) ) ? 'L': $i + 1; if( !empty( $aData['sDescriptionShort'] ) ){ $aData['sDescriptionShort'] = changeTxt( $aData['sDescriptionShort'], 'nlNds' ); $oTpl->setVariables( 'aData', $aData ); $aData['sDescriptionShort'] = $oTpl->tbHtml( $sFile, 'PAGES_TAGS_DESCRIPTION' ); } $oTpl->setVariables( 'aData', $aData ); if( isset( $oFile ) && isset( $oFile->aImagesDefault[1][$aData['iPage']] ) ){ $aDataImage = $oFile->aFilesImages[1][$oFile->aImagesDefault[1][$aData['iPage']]]; $oTpl->setVariables( 'aDataImage', $aDataImage ); $aData['sImage'] = $oTpl->tbHtml( $sFile, 'PAGES_TAGS_IMAGE' ); } else{ $aData['sImage'] = $oTpl->tbHtml( $sFile, 'PAGES_TAGS_NO_IMAGE' ); } $oTpl->setVariables( 'aData', $aData ); $content .= $oTpl->tbHtml( $sFile, 'PAGES_TAGS_LIST' ); } // end for if( isset( $content ) ){ return $oTpl->tbHtml( $sFile, 'PAGES_TAGS_HEAD' ).$content.$oTpl->tbHtml( $sFile, 'PAGES_TAGS_FOOT' ); } } } // end function listPagesTags /** * Search pages by word * @return string * @param string $sFile * @param string $sWord * @param int $iType */ function searchPages( $sFile, $sWord, $iType = 2 ){ $aExp = explode( ' ', $sWord ); $iCount = count( $aExp ); for( $i = 0; $i < $iCount; $i++ ){ $aExp[$i] = trim( $aExp[$i] ); if( !empty( $aExp[$i] ) ) $aWords[] = $aExp[$i]; } // end for if( isset( $aWords ) && is_array( $aWords ) && function_exists( 'saveSearchedWords' ) ){ saveSearchedWords( $aWords ); } $iCount = count( $aWords ); foreach( $this->aPages as $iPage => $aPage ){ $iFound = 0; for( $i = 0; $i < $iCount; $i++ ){ if( stristr( implode( ' ', $aPage ), $aWords[$i] ) ) $iFound++; } // end for if( $iFound == $iCount ){ $aPages[] = $iPage; } else{ $aPagesFull[$iPage] = true; } } if( isset( $aPagesFull ) ){ $rFile = fopen( DB_PAGES_EXT, 'r' ); $i2 = 0; while( ( $aFile = fgetcsv( $rFile, 200000, '$' ) ) !== FALSE ){ if( $i2 >= 1 && isset( $aPagesFull[$aFile[0]] ) ){ $iFound = 0; for( $i = 0; $i < $iCount; $i++ ){ if( stristr( $aFile[1], $aWords[$i] ) ) $iFound++; } // end for if( $iFound == $iCount ) $aPages[] = $aFile[0]; } $i2++; } // end while fclose( $rFile ); } if( isset( $aPages ) ){ $oFile = Files::getInstance( ); $oTpl = TplParser::getInstance( ); $content = null; $iCount = count( $aPages ); for( $i = 0; $i < $iCount; $i++ ){ $aData = $this->aPages[$aPages[$i]]; $aData['iStyle'] = ( $i % 2 ) ? 0: 1; $aData['sStyle'] = ( $i == ( $iCount - 1 ) ) ? 'L': $i + 1; if( !empty( $aData['sDescriptionShort'] ) ){ $aData['sDescriptionShort'] = changeTxt( $aData['sDescriptionShort'], 'nlNds' ); $oTpl->setVariables( 'aData', $aData ); $aData['sDescriptionShort'] = $oTpl->tbHtml( $sFile, 'SUBPAGES_DESCRIPTION_'.$iType ); } $oTpl->setVariables( 'aData', $aData ); if( $iType > 1 && isset( $oFile->aImagesDefault[1][$aData['iPage']] ) ){ $aDataImage = $oFile->aFilesImages[1][$oFile->aImagesDefault[1][$aData['iPage']]]; $oTpl->setVariables( 'aDataImage', $aDataImage ); $aData['sImage'] = $oTpl->tbHtml( $sFile, 'SUBPAGES_IMAGE_'.$iType ); } else{ if( $iType > 1 ){ $aData['sImage'] = $oTpl->tbHtml( $sFile, 'SUBPAGES_NO_IMAGE_'.$iType ); } } $oTpl->setVariables( 'aData', $aData ); $content .= $oTpl->tbHtml( $sFile, 'SUBPAGES_LIST_'.$iType ); } // end for if( isset( $content ) ){ return $oTpl->tbHtml( $sFile, 'SUBPAGES_HEAD_'.$iType ).$content.$oTpl->tbHtml( $sFile, 'SUBPAGES_FOOT_'.$iType ); } } } // end function searchPages /** * Throws main parent for page * @return int * @param int $iPage */ function throwPagesMainParent( $iPage ){ if( isset( $this->aPages[$iPage] ) && $this->aPages[$iPage]['iPageParent'] == 0 ){ $this->mData = null; return $iPage; } if( isset( $this->aPagesParents[$iPage] ) && isset( $this->aPages[$this->aPagesParents[$iPage]] ) ){ $this->mData[] = $this->aPagesParents[$iPage]; return $this->throwPagesMainParent( $this->aPagesParents[$iPage] ); } else{ if( isset( $this->mData ) ){ $iCount = count( $this->mData ); $iMainParent = $this->mData[$iCount-1]; $this->mData = null; return $iMainParent; } } } // end function throwPagesMainParent /** * Check if current page should be geneareted to cache * @param array $aExp */ function checkPageGenerateCache( &$aExp ){ $bAuthorizationPassed = checkMenuElementForUser( $aExp ); $this->aPagesAuthorizedPassed[$aExp[0]] = $bAuthorizationPassed; if( !isset( $bAuthorizationPassed ) ){ $this->aPagesAuthorizatioRemoved[$aExp[0]] = true; $aExp = null; } } // end function checkPageGenerateCache /** * Checks if page passed authorization * @return boolean * @param int $iPage */ function checkPageAuthorizedNotPassed( $iPage ){ if( isset( $this->aPagesAuthorizedPassed[$iPage] ) && $this->aPagesAuthorizedPassed[$iPage] == 1 ) return false; else return true; } // end function checkPageAuthorizedNotPassed /** * Checks if generated pages should be display */ function checkCachePages( ){ foreach( $this->aPages as $iPage => $aPage ){ $iMainParent = $this->throwPagesMainParent( $iPage ); if( ( isset( $iMainParent ) && $this->checkPageAuthorizedNotPassed( $iMainParent ) ) || !isset( $iMainParent ) ){ unset( $this->aPages[$iPage] ); } } // end for } // end function checkCachePages /** * Throws links to page * @return string * @param int $iContent * @param array $config */ function throwLinksToPage( $iContent, $config ){ $oTpl = TplParser::getInstance( ); $aData = $this->aPages[$iContent]; $aLTPUrl = parse_url( $_SERVER['REQUEST_URI'] ); if( !isset( $aLTPUrl['host'] ) ) $aLTPUrl['host'] = null; if( !isset( $aLTPUrl['path'] ) ) $aLTPUrl['path'] = null; if( isset( $aLTPUrl['query'] ) ) $aLTPUrl['query'] = '?'.$aLTPUrl['query']; else $aLTPUrl['query'] = null; $aLTP['sPageFullUrl'] = urlencode( 'http://'.$_SERVER['HTTP_HOST'].$aLTPUrl['host'].$aLTPUrl['path'].$aLTPUrl['query'] ); $aLTP['sTitle'] = strip_tags( $aData['sName'] ); $sLinkToPage = null; for( $i = 1; $i <= $config['iLTPLimit']; $i++ ){ $sVarName = 'iLinkToPage_'.$i; if( isset( $config[$sVarName] ) && $config[$sVarName] == 1 ){ $oTpl->setVariables( 'aLTP', $aLTP ); $sLinkToPage .= $oTpl->tbHtml( 'linkToPage.tpl', 'LINK_'.$i ); } } if( isset( $sLinkToPage ) ) $sLinkToPage = $oTpl->tbHtml( 'linkToPage.tpl', 'HEAD' ).$sLinkToPage.$oTpl->tbHtml( 'linkToPage.tpl', 'FOOT' ); return $sLinkToPage; } // end function throwLinksToPage }; ?>