| 1 | 2 | Manuela | <?php
 | 
      
        | 2 |  |  | /**
 | 
      
        | 3 |  |  |  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 | 
      
        | 4 |  |  |  *
 | 
      
        | 5 |  |  |  * This program is free software: you can redistribute it and/or modify
 | 
      
        | 6 |  |  |  * it under the terms of the GNU General Public License as published by
 | 
      
        | 7 |  |  |  * the Free Software Foundation, either version 3 of the License, or
 | 
      
        | 8 |  |  |  * (at your option) any later version.
 | 
      
        | 9 |  |  |  *
 | 
      
        | 10 |  |  |  * This program is distributed in the hope that it will be useful,
 | 
      
        | 11 |  |  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
      
        | 12 |  |  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
      
        | 13 |  |  |  * GNU General Public License for more details.
 | 
      
        | 14 |  |  |  *
 | 
      
        | 15 |  |  |  * You should have received a copy of the GNU General Public License
 | 
      
        | 16 |  |  |  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
      
        | 17 |  |  |  *
 | 
      
        | 18 |  |  |  * @category        core
 | 
      
        | 19 |  |  |  * @package         test
 | 
      
        | 20 |  |  |  * @subpackage      test
 | 
      
        | 21 |  |  |  * @author          Dietmar Wöllbrink
 | 
      
        | 22 |  |  |  * @copyright       WebsiteBaker Org. e.V.
 | 
      
        | 23 |  |  |  * @link            http://websitebaker.org/
 | 
      
        | 24 |  |  |  * @license         http://www.gnu.org/licenses/gpl.html
 | 
      
        | 25 |  |  |  * @platform        WebsiteBaker 2.8.4
 | 
      
        | 26 |  |  |  * @requirements    PHP 5.4 and higher
 | 
      
        | 27 |  |  |  * @version         $Id$
 | 
      
        | 28 |  |  |  * @filesource      $HeadURL$
 | 
      
        | 29 |  |  |  * @lastmodified    $Date$
 | 
      
        | 30 |  |  |  * @created         2016-02-17
 | 
      
        | 31 |  |  |  *
 | 
      
        | 32 |  |  |  */
 | 
      
        | 33 |  |  | 
 | 
      
        | 34 |  |  |  // Create new admin object and print admin header
 | 
      
        | 35 |  |  | require( dirname(dirname((__DIR__))).'/config.php' );
 | 
      
        | 36 |  |  | if ( !class_exists('admin', false) ) { require(WB_PATH.'/framework/class.admin.php'); }
 | 
      
        | 37 |  |  | if ( !class_exists( 'order', false ) ) { require(WB_PATH.'/framework/class.order.php'); }
 | 
      
        | 38 |  |  | 
 | 
      
        | 39 |  |  | // suppress to print the header, so no new FTAN will be set
 | 
      
        | 40 |  |  | //$admin = new admin('Pages', 'pages_settings',false);
 | 
      
        | 41 |  |  | 
 | 
      
        | 42 |  |  | if ( !function_exists( 'create_access_file' ) ) { require(WB_PATH.'/framework/functions.php'); }
 | 
      
        | 43 |  |  | require (WB_PATH.'/modules/SimpleRegister.php');
 | 
      
        | 44 |  |  | 
 | 
      
        | 45 |  |  | //$target_url = ADMIN_URL.'/pages/settings.php?page_id='.$page_id;
 | 
      
        | 46 |  |  | //$pagetree_url = ADMIN_URL.'/pages/index.php';
 | 
      
        | 47 |  |  | 
 | 
      
        | 48 |  |  |     function _makeSql($iParentKey = 0)
 | 
      
        | 49 |  |  |     {
 | 
      
        | 50 |  |  |         global $oDb, $oReg;
 | 
      
        | 51 |  |  |         $iParentKey = intval($iParentKey);
 | 
      
        | 52 |  |  |         $sql  = 'SELECT ( SELECT COUNT(*) '
 | 
      
        | 53 |  |  |               .          'FROM `'.$oReg->TablePrefix.'pages` `x` '
 | 
      
        | 54 |  |  |               .          'WHERE x.`parent`=p.`page_id`'
 | 
      
        | 55 |  |  |               .        ') `children`, '
 | 
      
        | 56 |  |  |               .        's.`module`, MAX(s.`publ_start` + s.`publ_end`) published, p.`link`, '
 | 
      
        | 57 |  |  |               .        '(SELECT MAX(`position`) FROM `'.$oReg->TablePrefix.'pages` '
 | 
      
        | 58 |  |  |               .        'WHERE `parent`='.$iParentKey.') max_position, '
 | 
      
        | 59 |  |  |               .        '0 min_position, '
 | 
      
        | 60 |  |  |               .        'p.`position`, '
 | 
      
        | 61 |  |  |               .        'p.`page_id`, p.`parent`, p.`level`, p.`language`, p.`admin_groups`, '
 | 
      
        | 62 |  |  |               .        'p.`admin_users`, p.`viewing_groups`, p.`viewing_users`, p.`visibility`, '
 | 
      
        | 63 |  |  |               .        'p.`menu_title`, p.`page_title`, p.`page_trail`, p.`modified_when`, '
 | 
      
        | 64 |  |  |               .        'GROUP_CONCAT(CAST(CONCAT(s.`section_id`, \' - \', s.`module`) AS CHAR) ORDER BY s.`position` SEPARATOR \'\n\') `section_list` '
 | 
      
        | 65 |  |  |               . 'FROM `'.$oReg->TablePrefix.'pages` p '
 | 
      
        | 66 |  |  |               .    'INNER JOIN `'.$oReg->TablePrefix.'sections` s '
 | 
      
        | 67 |  |  |               .    'ON p.`page_id`=s.`page_id` '
 | 
      
        | 68 |  |  |               . 'WHERE `parent`='.$iParentKey.' '
 | 
      
        | 69 |  |  |               .    (($oReg->PageTrash != 'inline') ? 'AND `visibility`!=\'deleted\' ' : '')
 | 
      
        | 70 |  |  |               . 'GROUP BY p.`page_id` '
 | 
      
        | 71 |  |  |               . 'ORDER BY p.`position` ASC';
 | 
      
        | 72 |  |  |         return $sql;
 | 
      
        | 73 |  |  |     }
 | 
      
        | 74 |  |  | 
 | 
      
        | 75 |  |  |     function _IterateTree($iParent = 0)
 | 
      
        | 76 |  |  |     {
 | 
      
        | 77 |  |  |         global $oDb, $oReg, $_queries, $index,$aOutput;
 | 
      
        | 78 |  |  |       // Get page list from database
 | 
      
        | 79 |  |  |         if(($oPages = $oDb->query(_makeSql($iParent))))
 | 
      
        | 80 |  |  |         {
 | 
      
        | 81 |  |  |             $_queries++;
 | 
      
        | 82 |  |  |             $iMinPosition = 1;
 | 
      
        | 83 |  |  |             while($aPage = $oPages->fetchRow(MYSQLI_ASSOC))
 | 
      
        | 84 |  |  |             { // iterate through the current branch
 | 
      
        | 85 |  |  |                 if($oReg->PageLevelLimit && ($aPage['level'] > $oReg->PageLevelLimit)) {
 | 
      
        | 86 |  |  |                     break;
 | 
      
        | 87 |  |  |                 }
 | 
      
        | 88 |  |  | 
 | 
      
        | 89 |  |  |                 // array for sitemap
 | 
      
        | 90 |  |  |                 $aOutput[$aPage['page_id']] = array(
 | 
      
        | 91 |  |  |                 'loc' => $oReg->AppUrl.$oReg->PagesDir.trim($aPage['link'],'/').$oReg->PageExtension,
 | 
      
        | 92 |  |  |                 'lastmod' => date(DATE_W3C, (int)$aPage['modified_when']),
 | 
      
        | 93 |  |  |                 'changefreq' => 'monthly',
 | 
      
        | 94 |  |  |                 'priority' => '0.5'
 | 
      
        | 95 |  |  |                 );
 | 
      
        | 96 |  |  | 
 | 
      
        | 97 |  |  |                 // array to create accessfiles
 | 
      
        | 98 |  |  |                 $aOutput[$aPage['page_id']] = $aPage;
 | 
      
        | 99 |  |  |                 // could not use oReg, we are needing backslashes to create access files
 | 
      
        | 100 |  |  |                 $sPageFile = WB_PATH.PAGES_DIRECTORY.'/'.trim($aPage['link'],'/').$oReg->PageExtension;
 | 
      
        | 101 |  |  |                 if( is_writeable( $sPageFile ) || !file_exists( $sPageFile ) ) {
 | 
      
        | 102 |  |  |                     create_access_file( $sPageFile, $aPage['page_id'], $aPage['level']);
 | 
      
        | 103 |  |  |                     $index++; //
 | 
      
        | 104 |  |  |                 }
 | 
      
        | 105 |  |  | 
 | 
      
        | 106 |  |  |                 if((int)$aPage['children'] > 0 ) {
 | 
      
        | 107 |  |  |                     _IterateTree($aPage['page_id']);
 | 
      
        | 108 |  |  |                 }
 | 
      
        | 109 |  |  |           }
 | 
      
        | 110 |  |  |         }
 | 
      
        | 111 |  |  |         return $aOutput;
 | 
      
        | 112 |  |  |     }
 | 
      
        | 113 |  |  | 
 | 
      
        | 114 |  |  |       $_queries  = $index = 0;
 | 
      
        | 115 |  |  |       $iTreeRoot = 0;
 | 
      
        | 116 |  |  |       $aOutput   = array();
 | 
      
        | 117 |  |  |       $aPageTree = array();
 | 
      
        | 118 |  |  | 
 | 
      
        | 119 |  |  |       $aPageTree = _IterateTree($iTreeRoot);
 | 
      
        | 120 |  |  | 
 | 
      
        | 121 |  |  |       echo '<h3>Creating '.$index.' access files</h3>';
 |