| 
      1
     | 
    
      <?php
 
     | 
  
  
    | 
      2
     | 
    
      /**
 
     | 
  
  
    | 
      3
     | 
    
       *
 
     | 
  
  
    | 
      4
     | 
    
       * @category        admin
 
     | 
  
  
    | 
      5
     | 
    
       * @package         pages
 
     | 
  
  
    | 
      6
     | 
    
       * @author          WebsiteBaker Project
 
     | 
  
  
    | 
      7
     | 
    
       * @copyright       Ryan Djurovich
 
     | 
  
  
    | 
      8
     | 
    
       * @copyright       WebsiteBaker Org. e.V.
 
     | 
  
  
    | 
      9
     | 
    
       * @link            http://websitebaker.org/
 
     | 
  
  
    | 
      10
     | 
    
       * @license         http://www.gnu.org/licenses/gpl.html
 
     | 
  
  
    | 
      11
     | 
    
       * @platform        WebsiteBaker 2.8.3
 
     | 
  
  
    | 
      12
     | 
    
       * @requirements    PHP 5.3.6 and higher
 
     | 
  
  
    | 
      13
     | 
    
       * @version         $Id: settings2.php 2 2017-07-02 15:14:29Z Manuela $
 
     | 
  
  
    | 
      14
     | 
    
       * @filesource      $HeadURL: svn://isteam.dynxs.de/wb/2.10.x/trunk/admin/pages/settings2.php $
 
     | 
  
  
    | 
      15
     | 
    
       * @lastmodified    $Date: 2017-07-02 17:14:29 +0200 (Sun, 02 Jul 2017) $
 
     | 
  
  
    | 
      16
     | 
    
       *
 
     | 
  
  
    | 
      17
     | 
    
       */
 
     | 
  
  
    | 
      18
     | 
    
      /* ****************************************************************** */
 
     | 
  
  
    | 
      19
     | 
    
      // Function to fix page trail of subs
 
     | 
  
  
    | 
      20
     | 
    
      function fix_page_trail($parent,$root_parent)
 
     | 
  
  
    | 
      21
     | 
    
      {
     | 
  
  
    | 
      22
     | 
    
          // Get objects and vars from outside this function
 
     | 
  
  
    | 
      23
     | 
    
          global $admin, $template, $database, $TEXT, $MESSAGE;
 
     | 
  
  
    | 
      24
     | 
    
          // Get page list from database
 
     | 
  
  
    | 
      25
     | 
    
          // $database = new database();
 
     | 
  
  
    | 
      26
     | 
    
          $sql = 'SELECT `page_id` FROM `'.TABLE_PREFIX.'pages` '
 
     | 
  
  
    | 
      27
     | 
    
               . 'WHERE `parent`='.(int)$parent;
 
     | 
  
  
    | 
      28
     | 
    
          // Insert values into main page list
 
     | 
  
  
    | 
      29
     | 
    
          if (($get_pages = $database->query($sql))) {
     | 
  
  
    | 
      30
     | 
    
          // Insert values into main page list
 
     | 
  
  
    | 
      31
     | 
    
              while($page = $get_pages->fetchRow(MYSQLI_ASSOC)) {
     | 
  
  
    | 
      32
     | 
    
                  // Fix page trail
 
     | 
  
  
    | 
      33
     | 
    
                  $sql = 'UPDATE `'.TABLE_PREFIX.'pages` '
 
     | 
  
  
    | 
      34
     | 
    
                       . 'SET `page_trail`=\''.get_page_trail($page['page_id']).'\' '
 
     | 
  
  
    | 
      35
     | 
    
                       .     ($root_parent != 0 ? ',`root_parent`='.(int)$root_parent.' ' : '')
 
     | 
  
  
    | 
      36
     | 
    
                       . 'WHERE `page_id`='.(int)$page['page_id'];
 
     | 
  
  
    | 
      37
     | 
    
                  $database->query($sql);
 
     | 
  
  
    | 
      38
     | 
    
                  // Run this query on subs
 
     | 
  
  
    | 
      39
     | 
    
                  fix_page_trail($page['page_id'],$root_parent);
 
     | 
  
  
    | 
      40
     | 
    
              }
 
     | 
  
  
    | 
      41
     | 
    
          }
 
     | 
  
  
    | 
      42
     | 
    
      }
 
     | 
  
  
    | 
      43
     | 
    
      /* ****************************************************************** */
 
     | 
  
  
    | 
      44
     | 
    
      // inherit settings to subpages
 
     | 
  
  
    | 
      45
     | 
    
      // <Subpages should inherit settings.>
 
     | 
  
  
    | 
      46
     | 
    
      /*
 
     | 
  
  
    | 
      47
     | 
    
       * inheritable settings:
 
     | 
  
  
    | 
      48
     | 
    
       *   template
 
     | 
  
  
    | 
      49
     | 
    
       *   language
 
     | 
  
  
    | 
      50
     | 
    
       *   menu
 
     | 
  
  
    | 
      51
     | 
    
       *   searching
 
     | 
  
  
    | 
      52
     | 
    
       *   visibility
 
     | 
  
  
    | 
      53
     | 
    
       *   - admin_groups
 
     | 
  
  
    | 
      54
     | 
    
       *   - admin_users
 
     | 
  
  
    | 
      55
     | 
    
       *   - viewing_groups
 
     | 
  
  
    | 
      56
     | 
    
       *   - viewing_users
 
     | 
  
  
    | 
      57
     | 
    
       */
 
     | 
  
  
    | 
      58
     | 
    
      
 
     | 
  
  
    | 
      59
     | 
    
      function doInheritSettings($database, $page_id, array $aSettings)
 
     | 
  
  
    | 
      60
     | 
    
      {
     | 
  
  
    | 
      61
     | 
    
          // deactivate doInheritSettings
 
     | 
  
  
    | 
      62
     | 
    
          if (sizeof($aSettings)==0){return false;}
     | 
  
  
    | 
      63
     | 
    
          $sqlSet = '';
 
     | 
  
  
    | 
      64
     | 
    
          foreach ($aSettings as $sFieldname=>$sValue) {
     | 
  
  
    | 
      65
     | 
    
              $sqlSet .= '`'.$sFieldname.'`=\''.$database->escapeString($sValue).'\', ';
 
     | 
  
  
    | 
      66
     | 
    
          }
 
     | 
  
  
    | 
      67
     | 
    
          $sqlSet = rtrim($sqlSet, ' ,');
 
     | 
  
  
    | 
      68
     | 
    
          if ($sqlSet) {
     | 
  
  
    | 
      69
     | 
    
              $aListOfChildren = array();
 
     | 
  
  
    | 
      70
     | 
    
              $aMatches = array($page_id);
 
     | 
  
  
    | 
      71
     | 
    
              // search all children
 
     | 
  
  
    | 
      72
     | 
    
              do {
     | 
  
  
    | 
      73
     | 
    
                  $sql = 'SELECT `page_id` FROM `'.TABLE_PREFIX.'pages` '
 
     | 
  
  
    | 
      74
     | 
    
                       . 'WHERE `parent` IN('.implode(',', $aMatches).')';
     | 
  
  
    | 
      75
     | 
    
                  if (($oChildren = $database->query($sql))) {
     | 
  
  
    | 
      76
     | 
    
                      $aMatches = array();
 
     | 
  
  
    | 
      77
     | 
    
                      while (($aChild = $oChildren->fetchRow(MYSQL_ASSOC))) {
     | 
  
  
    | 
      78
     | 
    
                          $aMatches[] = $aChild['page_id'];
 
     | 
  
  
    | 
      79
     | 
    
                      }
 
     | 
  
  
    | 
      80
     | 
    
                      $aListOfChildren = array_merge($aListOfChildren, $aMatches);
 
     | 
  
  
    | 
      81
     | 
    
                  }
 
     | 
  
  
    | 
      82
     | 
    
              } while (sizeof($aMatches) > 0);
 
     | 
  
  
    | 
      83
     | 
    
              $sqlSet = 'UPDATE `'.TABLE_PREFIX.'pages` SET '.$sqlSet.' '
 
     | 
  
  
    | 
      84
     | 
    
                      . 'WHERE `page_id` IN('.implode(',', $aListOfChildren).')';
     | 
  
  
    | 
      85
     | 
    
              $database->query($sqlSet);
 
     | 
  
  
    | 
      86
     | 
    
          }
 
     | 
  
  
    | 
      87
     | 
    
      }
 
     | 
  
  
    | 
      88
     | 
    
      /* ****************************************************************** */
 
     | 
  
  
    | 
      89
     | 
    
      
 
     | 
  
  
    | 
      90
     | 
    
      // Create new admin object and print admin header
 
     | 
  
  
    | 
      91
     | 
    
      if ( !defined( 'WB_PATH' ) ){ require( dirname(dirname((__DIR__))).'/config.php' ); }
     | 
  
  
    | 
      92
     | 
    
      if ( !class_exists('admin', false) ) { require(WB_PATH.'/framework/class.admin.php'); }
     | 
  
  
    | 
      93
     | 
    
      // suppress to print the header, so no new FTAN will be set
 
     | 
  
  
    | 
      94
     | 
    
      $admin = new admin('Pages', 'pages_settings',false);
     | 
  
  
    | 
      95
     | 
    
      // Get page id
 
     | 
  
  
    | 
      96
     | 
    
      if(!isset($_POST['page_id']) || !is_numeric($_POST['page_id']))
 
     | 
  
  
    | 
      97
     | 
    
      {
     | 
  
  
    | 
      98
     | 
    
          $admin->print_header();
 
     | 
  
  
    | 
      99
     | 
    
          $admin->print_error($MESSAGE['PAGES_NOT_FOUND']);
 
     | 
  
  
    | 
      100
     | 
    
      } else {
     | 
  
  
    | 
      101
     | 
    
          $page_id = (int)$_POST['page_id'];
 
     | 
  
  
    | 
      102
     | 
    
      }
 
     | 
  
  
    | 
      103
     | 
    
      $target_url = ADMIN_URL.'/pages/settings.php?page_id='.$page_id;
 
     | 
  
  
    | 
      104
     | 
    
      $pagetree_url = ADMIN_URL.'/pages/index.php';
 
     | 
  
  
    | 
      105
     | 
    
      $bBackLink = isset($_POST['pagetree']);
 
     | 
  
  
    | 
      106
     | 
    
      /*
 
     | 
  
  
    | 
      107
     | 
    
      if( (!($page_id = $admin->checkIDKEY('page_id', 0, $_SERVER['REQUEST_METHOD']))) )
     | 
  
  
    | 
      108
     | 
    
      {
     | 
  
  
    | 
      109
     | 
    
          $admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS']);
 
     | 
  
  
    | 
      110
     | 
    
      }
 
     | 
  
  
    | 
      111
     | 
    
      */
 
     | 
  
  
    | 
      112
     | 
    
      if (!$admin->checkFTAN())
 
     | 
  
  
    | 
      113
     | 
    
      {
     | 
  
  
    | 
      114
     | 
    
          $admin->print_header();
 
     | 
  
  
    | 
      115
     | 
    
          $sInfo = strtoupper(basename(__DIR__).'_'.basename(__FILE__, ''.PAGE_EXTENSION)).'::';
 
     | 
  
  
    | 
      116
     | 
    
          $sDEBUG=(@DEBUG?$sInfo:'');
 
     | 
  
  
    | 
      117
     | 
    
          $admin->print_error($sDEBUG.$MESSAGE['GENERIC_SECURITY_ACCESS'], $target_url);
 
     | 
  
  
    | 
      118
     | 
    
      }
 
     | 
  
  
    | 
      119
     | 
    
      // After FTAN check print the header
 
     | 
  
  
    | 
      120
     | 
    
      $admin->print_header();
 
     | 
  
  
    | 
      121
     | 
    
      // Include the WB functions file
 
     | 
  
  
    | 
      122
     | 
    
      if ( !function_exists( 'create_access_file' ) ) { require(WB_PATH.'/framework/functions.php'); }
     | 
  
  
    | 
      123
     | 
    
      // Get values
 
     | 
  
  
    | 
      124
     | 
    
      $page_title = $admin->StripCodeFromText($admin->get_post('page_title'));
     | 
  
  
    | 
      125
     | 
    
      $menu_title = $admin->StripCodeFromText($admin->get_post('menu_title'));
     | 
  
  
    | 
      126
     | 
    
      $seo_title = $admin->StripCodeFromText($admin->get_post('seo_title'));
     | 
  
  
    | 
      127
     | 
    
      $page_code = intval($admin->get_post('page_code')) ;
     | 
  
  
    | 
      128
     | 
    
      $description = $admin->StripCodeFromText($admin->get_post('description'));
     | 
  
  
    | 
      129
     | 
    
      $keywords = $admin->StripCodeFromText($admin->get_post('keywords'));
     | 
  
  
    | 
      130
     | 
    
      $parent = intval($admin->get_post('parent')); // fix secunia 2010-91-3
     | 
  
  
    | 
      131
     | 
    
      $visibility = $admin->StripCodeFromText($admin->get_post('visibility'));
     | 
  
  
    | 
      132
     | 
    
      if (!in_array($visibility, array('public', 'private', 'registered', 'hidden', 'none'))) {$visibility = 'public';} // fix secunia 2010-93-3
     | 
  
  
    | 
      133
     | 
    
      $template = preg_replace('/[^a-z0-9_-]/i', "", $admin->get_post('template')); // fix secunia 2010-93-3
     | 
  
  
    | 
      134
     | 
    
      $template = (($template == DEFAULT_TEMPLATE ) ? '' : $template);
 
     | 
  
  
    | 
      135
     | 
    
      $target = preg_replace("/\W/", "", $admin->get_post('target'));
     | 
  
  
    | 
      136
     | 
    
      $admin_groups = ($admin->get_post('admin_groups'));
     | 
  
  
    | 
      137
     | 
    
      $viewing_groups = ($admin->get_post('viewing_groups'));
     | 
  
  
    | 
      138
     | 
    
      $searching = intval($admin->get_post('searching'));
     | 
  
  
    | 
      139
     | 
    
      $language = $admin->StripCodeFromText(strtoupper($admin->get_post('language')));
     | 
  
  
    | 
      140
     | 
    
      $language = (preg_match('/^[A-Z]{2}$/', $language) ? $language : DEFAULT_LANGUAGE);
     | 
  
  
    | 
      141
     | 
    
      $menu = intval($admin->get_post('menu')); // fix secunia 2010-91-3
     | 
  
  
    | 
      142
     | 
    
      // Validate data
 
     | 
  
  
    | 
      143
     | 
    
      if($menu_title == '' || substr($menu_title,0,1)=='.'){
     | 
  
  
    | 
      144
     | 
    
          $admin->print_error($MESSAGE['PAGES_BLANK_MENU_TITLE']);
 
     | 
  
  
    | 
      145
     | 
    
      }
 
     | 
  
  
    | 
      146
     | 
    
      if ( $page_title  == '' || substr( $page_title, 0, 1) == '.') { $page_title = $menu_title; }
     | 
  
  
    | 
      147
     | 
    
      if ( $seo_title   == '' || substr( $seo_title, 0, 1)  == '.') { $seo_title  = $menu_title; }
     | 
  
  
    | 
      148
     | 
    
      // fetch old datas
 
     | 
  
  
    | 
      149
     | 
    
      $sql = 'SELECT `level`,`root_parent`, `parent`,`page_trail`,`link`,`position`,`admin_groups`,`admin_users` FROM `'.TABLE_PREFIX.'pages` '
 
     | 
  
  
    | 
      150
     | 
    
           . 'WHERE `page_id`='.$page_id;
 
     | 
  
  
    | 
      151
     | 
    
      $oPages = $database->query($sql);
 
     | 
  
  
    | 
      152
     | 
    
      $results_array = $oPages->fetchRow(MYSQLI_ASSOC);
 
     | 
  
  
    | 
      153
     | 
    
      $old_parent   = $results_array['parent'];
 
     | 
  
  
    | 
      154
     | 
    
      $old_link     = $results_array['link'];
 
     | 
  
  
    | 
      155
     | 
    
      $old_position = $results_array['position'];
 
     | 
  
  
    | 
      156
     | 
    
      $old_admin_groups = explode(',', str_replace('_', '', $results_array['admin_groups']));
     | 
  
  
    | 
      157
     | 
    
      $old_admin_users  = explode(',', str_replace('_', '', $results_array['admin_users']));
     | 
  
  
    | 
      158
     | 
    
      // Work-out if we should check for existing page_code
 
     | 
  
  
    | 
      159
     | 
    
      $field_set = $database->field_exists(TABLE_PREFIX.'pages', 'page_code');
 
     | 
  
  
    | 
      160
     | 
    
      $in_old_group = FALSE;
 
     | 
  
  
    | 
      161
     | 
    
      foreach($admin->get_groups_id() as $cur_gid){
     | 
  
  
    | 
      162
     | 
    
          if (in_array($cur_gid, $old_admin_groups)) { $in_old_group = TRUE; }
     | 
  
  
    | 
      163
     | 
    
      }
 
     | 
  
  
    | 
      164
     | 
    
      if ((!$in_old_group) && !is_numeric(array_search($admin->get_user_id(), $old_admin_users))){
     | 
  
  
    | 
      165
     | 
    
          $admin->print_error($MESSAGE['PAGES_INSUFFICIENT_PERMISSIONS'], $target_url );
 
     | 
  
  
    | 
      166
     | 
    
      }
 
     | 
  
  
    | 
      167
     | 
    
      // Setup admin groups
 
     | 
  
  
    | 
      168
     | 
    
      $admin_groups[] = 1;
 
     | 
  
  
    | 
      169
     | 
    
      //if(!in_array(1, $admin->get_groups_id())) {
     | 
  
  
    | 
      170
     | 
    
      //    $admin_groups[] = implode(",",$admin->get_groups_id());
     | 
  
  
    | 
      171
     | 
    
      //}
 
     | 
  
  
    | 
      172
     | 
    
      $admin_groups = preg_replace("/[^\d,]/", "", implode(',', $admin_groups));
     | 
  
  
    | 
      173
     | 
    
      // Setup viewing groups
 
     | 
  
  
    | 
      174
     | 
    
      $viewing_groups[] = 1;
 
     | 
  
  
    | 
      175
     | 
    
      //if(!in_array(1, $admin->get_groups_id())) {
     | 
  
  
    | 
      176
     | 
    
      //    $viewing_groups[] = implode(",",$admin->get_groups_id());
     | 
  
  
    | 
      177
     | 
    
      //}
 
     | 
  
  
    | 
      178
     | 
    
      $viewing_groups = preg_replace("/[^\d,]/", "", implode(',', $viewing_groups));
     | 
  
  
    | 
      179
     | 
    
      // If needed, get new order
 
     | 
  
  
    | 
      180
     | 
    
      if($parent != $old_parent){
     | 
  
  
    | 
      181
     | 
    
          // Include ordering class
 
     | 
  
  
    | 
      182
     | 
    
      if ( !class_exists( 'order', false ) ) { require(WB_PATH.'/framework/class.order.php'); }
     | 
  
  
    | 
      183
     | 
    
          $order = new order(TABLE_PREFIX.'pages', 'position', 'page_id', 'parent');
 
     | 
  
  
    | 
      184
     | 
    
          // Get new order
 
     | 
  
  
    | 
      185
     | 
    
          $position = $order->get_new($parent);
 
     | 
  
  
    | 
      186
     | 
    
          // Clean new order
 
     | 
  
  
    | 
      187
     | 
    
          $order->clean($parent);
 
     | 
  
  
    | 
      188
     | 
    
      } else {
     | 
  
  
    | 
      189
     | 
    
          $position = $old_position;
 
     | 
  
  
    | 
      190
     | 
    
      }
 
     | 
  
  
    | 
      191
     | 
    
      
 
     | 
  
  
    | 
      192
     | 
    
      // Work out level and root parent
 
     | 
  
  
    | 
      193
     | 
    
      $level = '0';
 
     | 
  
  
    | 
      194
     | 
    
      $root_parent = '0';
 
     | 
  
  
    | 
      195
     | 
    
      if ($parent!='0'){
     | 
  
  
    | 
      196
     | 
    
          $level = level_count($parent)+1;
 
     | 
  
  
    | 
      197
     | 
    
          $root_parent = root_parent($parent);
 
     | 
  
  
    | 
      198
     | 
    
      }
 
     | 
  
  
    | 
      199
     | 
    
      // Work-out what the link should be
 
     | 
  
  
    | 
      200
     | 
    
      if($parent == '0'){
     | 
  
  
    | 
      201
     | 
    
          $link = '/'.page_filename( $seo_title);
 
     | 
  
  
    | 
      202
     | 
    
      //    $link = '/'.page_filename($menu_title);
 
     | 
  
  
    | 
      203
     | 
    
          // rename menu titles: index && intro to prevent clashes with intro page feature and WB core file /pages/index.php
 
     | 
  
  
    | 
      204
     | 
    
          if($link == '/index' || $link == '/intro')
 
     | 
  
  
    | 
      205
     | 
    
          {
     | 
  
  
    | 
      206
     | 
    
              $filename = WB_PATH.PAGES_DIRECTORY.'/'.page_filename($seo_title).'_'.$page_id .PAGE_EXTENSION;
 
     | 
  
  
    | 
      207
     | 
    
              $link .= '_' .$page_id;
 
     | 
  
  
    | 
      208
     | 
    
          } else {
     | 
  
  
    | 
      209
     | 
    
              $filename = WB_PATH.PAGES_DIRECTORY.'/'.page_filename($seo_title).PAGE_EXTENSION;
 
     | 
  
  
    | 
      210
     | 
    
          }
 
     | 
  
  
    | 
      211
     | 
    
      } else {
     | 
  
  
    | 
      212
     | 
    
          $parent_section = '';
 
     | 
  
  
    | 
      213
     | 
    
          $parent_titles = array_reverse(get_parent_titles($parent));
 
     | 
  
  
    | 
      214
     | 
    
          foreach($parent_titles as $parent_title) {
     | 
  
  
    | 
      215
     | 
    
              $parent_section .= page_filename($parent_title).'/';
 
     | 
  
  
    | 
      216
     | 
    
          }
 
     | 
  
  
    | 
      217
     | 
    
          if( $parent_section == '/' ) { $parent_section = ''; }
     | 
  
  
    | 
      218
     | 
    
          $link = '/'.$parent_section.page_filename($seo_title);
 
     | 
  
  
    | 
      219
     | 
    
          $filename = WB_PATH.PAGES_DIRECTORY.'/'.$parent_section.page_filename($seo_title).PAGE_EXTENSION;
 
     | 
  
  
    | 
      220
     | 
    
      }
 
     | 
  
  
    | 
      221
     | 
    
      
 
     | 
  
  
    | 
      222
     | 
    
      // Check if a page with same page filename exists $oGetSamePage
 
     | 
  
  
    | 
      223
     | 
    
      $sql = 'SELECT  COUNT(*) FROM `'.TABLE_PREFIX.'pages` '
 
     | 
  
  
    | 
      224
     | 
    
           . 'WHERE `link` = "'.$database->escapeString($link).'" '
 
     | 
  
  
    | 
      225
     | 
    
           .       'AND `page_id` != '.(int)$page_id;
 
     | 
  
  
    | 
      226
     | 
    
      if( $database->get_one($sql) > 0 ) {
     | 
  
  
    | 
      227
     | 
    
          $admin->print_error( $MESSAGE['PAGES_PAGE_EXISTS'] );
 
     | 
  
  
    | 
      228
     | 
    
      }
 
     | 
  
  
    | 
      229
     | 
    
      // Update page with new order
 
     | 
  
  
    | 
      230
     | 
    
      $sql = 'UPDATE `'.TABLE_PREFIX.'pages` '
 
     | 
  
  
    | 
      231
     | 
    
           . 'SET `parent`='.(int)$parent.', `position`='.(int)$position.' '
 
     | 
  
  
    | 
      232
     | 
    
           . 'WHERE `page_id`='.(int)$page_id;
 
     | 
  
  
    | 
      233
     | 
    
      // $database = new database();
 
     | 
  
  
    | 
      234
     | 
    
      $database->query($sql);
 
     | 
  
  
    | 
      235
     | 
    
      // Get page trail
 
     | 
  
  
    | 
      236
     | 
    
      $page_trail = get_page_trail($page_id);
 
     | 
  
  
    | 
      237
     | 
    
      $target_url = ADMIN_URL.'/pages/settings.php?page_id='.$page_id;
 
     | 
  
  
    | 
      238
     | 
    
      // Update page settings in the pages table
 
     | 
  
  
    | 
      239
     | 
    
      $sql  = 'UPDATE `'.TABLE_PREFIX.'pages` SET '
 
     | 
  
  
    | 
      240
     | 
    
            . '`parent` = '.(int)$parent.', '
 
     | 
  
  
    | 
      241
     | 
    
            . '`page_title` = \''.$database->escapeString($page_title).'\', '
 
     | 
  
  
    | 
      242
     | 
    
            . '`menu_title` = \''.$database->escapeString($menu_title).'\', '
 
     | 
  
  
    | 
      243
     | 
    
            . '`menu` = '.(int)$menu.', '
 
     | 
  
  
    | 
      244
     | 
    
            . '`level` = '.(int)$level.', '
 
     | 
  
  
    | 
      245
     | 
    
            . '`page_trail` = \''.$database->escapeString($page_trail).'\', '
 
     | 
  
  
    | 
      246
     | 
    
            . '`root_parent` = '.(int)$root_parent.', '
 
     | 
  
  
    | 
      247
     | 
    
            . '`link` = \''.$database->escapeString($link).'\', '
 
     | 
  
  
    | 
      248
     | 
    
            . '`template` = \''.$database->escapeString($template).'\', '
 
     | 
  
  
    | 
      249
     | 
    
            . '`target` = \''.$database->escapeString($target).'\', '
 
     | 
  
  
    | 
      250
     | 
    
            . '`description` = \''.$database->escapeString($description).'\', '
 
     | 
  
  
    | 
      251
     | 
    
            . '`keywords` = \''.$database->escapeString($keywords).'\', '
 
     | 
  
  
    | 
      252
     | 
    
            . '`position` = '.(int)$position.', '
 
     | 
  
  
    | 
      253
     | 
    
            . '`visibility` = \''.$database->escapeString($visibility).'\', '
 
     | 
  
  
    | 
      254
     | 
    
            . '`searching` = '.(int)$searching.', '
 
     | 
  
  
    | 
      255
     | 
    
            . '`language` = \''.$database->escapeString($language).'\', '
 
     | 
  
  
    | 
      256
     | 
    
            . '`admin_groups` = \''.$database->escapeString($admin_groups).'\', '
 
     | 
  
  
    | 
      257
     | 
    
            . '`viewing_groups` = \''.$database->escapeString($viewing_groups).'\' '
 
     | 
  
  
    | 
      258
     | 
    
            .  (defined('PAGE_LANGUAGES') && PAGE_LANGUAGES && $field_set  ? ', `page_code` = '.(int)$page_code.' ' : ' ')
     | 
  
  
    | 
      259
     | 
    
            . 'WHERE `page_id` = '.(int)$page_id;
 
     | 
  
  
    | 
      260
     | 
    
      if(!$database->query($sql)) {
     | 
  
  
    | 
      261
     | 
    
          if($database->is_error())
 
     | 
  
  
    | 
      262
     | 
    
          {
     | 
  
  
    | 
      263
     | 
    
              $admin->print_error($database->get_error(), $target_url );
 
     | 
  
  
    | 
      264
     | 
    
          }
 
     | 
  
  
    | 
      265
     | 
    
      }
 
     | 
  
  
    | 
      266
     | 
    
      /* *** inherit settings to subpages ********************************* */
 
     | 
  
  
    | 
      267
     | 
    
      if (isset($_POST['inherit'])) {
     | 
  
  
    | 
      268
     | 
    
          // make sure, $aPost is am array
 
     | 
  
  
    | 
      269
     | 
    
          $aPost = (is_array($_POST['inherit'])
 
     | 
  
  
    | 
      270
     | 
    
                    // use the array itself
 
     | 
  
  
    | 
      271
     | 
    
                    ? $_POST['inherit']
 
     | 
  
  
    | 
      272
     | 
    
                    // split the string into an array
 
     | 
  
  
    | 
      273
     | 
    
                    : preg_split("/[\s,;\|]+/", $_POST['inherit'], -1, PREG_SPLIT_NO_EMPTY));
     | 
  
  
    | 
      274
     | 
    
          // define possible fields to inherit
 
     | 
  
  
    | 
      275
     | 
    
          $aInherit = array('template','menu','language','searching','visibility');
     | 
  
  
    | 
      276
     | 
    
          // define additional fields to 'visibility'
 
     | 
  
  
    | 
      277
     | 
    
          $aVisibilities = array('admin_groups','admin_users','viewing_groups','viewing_users');
     | 
  
  
    | 
      278
     | 
    
          // if 'all' is not selected
 
     | 
  
  
    | 
      279
     | 
    
          if (!in_array('all', $aPost)) {
     | 
  
  
    | 
      280
     | 
    
              // remove all not selected fields
 
     | 
  
  
    | 
      281
     | 
    
              $aInherit = array_intersect($aInherit, $aPost);
 
     | 
  
  
    | 
      282
     | 
    
          }
 
     | 
  
  
    | 
      283
     | 
    
          // if 'visibility' is selected
 
     | 
  
  
    | 
      284
     | 
    
          if (in_array('visibility', $aInherit)) {
     | 
  
  
    | 
      285
     | 
    
              // add the additional fields
 
     | 
  
  
    | 
      286
     | 
    
              $aInherit = array_merge($aInherit, $aVisibilities);
 
     | 
  
  
    | 
      287
     | 
    
          }
 
     | 
  
  
    | 
      288
     | 
    
          // flip array and set all values to ''
 
     | 
  
  
    | 
      289
     | 
    
          $aInherit = array_fill_keys($aInherit, '');
 
     | 
  
  
    | 
      290
     | 
    
          // iterate all existing fields
 
     | 
  
  
    | 
      291
     | 
    
          foreach ($aInherit as $key=>$value) {
     | 
  
  
    | 
      292
     | 
    
              // fill with real values (i.e.  $aInherit['template'] = $template)
 
     | 
  
  
    | 
      293
     | 
    
              $aInherit[$key] = isset(${$key}) ? ${$key} : '';
     | 
  
  
    | 
      294
     | 
    
          }
 
     | 
  
  
    | 
      295
     | 
    
          // update database
 
     | 
  
  
    | 
      296
     | 
    
          doInheritSettings($database, $page_id, array());// $aInherit
 
     | 
  
  
    | 
      297
     | 
    
      }
 
     | 
  
  
    | 
      298
     | 
    
      /* ****************************************************************** */
 
     | 
  
  
    | 
      299
     | 
    
      
 
     | 
  
  
    | 
      300
     | 
    
      // Clean old order if needed
 
     | 
  
  
    | 
      301
     | 
    
      if($parent != $old_parent)
 
     | 
  
  
    | 
      302
     | 
    
      {
     | 
  
  
    | 
      303
     | 
    
          $order->clean($old_parent);
 
     | 
  
  
    | 
      304
     | 
    
      }
 
     | 
  
  
    | 
      305
     | 
    
      /* BEGIN page "access file" code */
 
     | 
  
  
    | 
      306
     | 
    
      // Create a new file in the /pages dir if title changed
 
     | 
  
  
    | 
      307
     | 
    
      if(!is_writable(WB_PATH.PAGES_DIRECTORY.'/'))
 
     | 
  
  
    | 
      308
     | 
    
      {
     | 
  
  
    | 
      309
     | 
    
          $admin->print_error($MESSAGE['PAGES_CANNOT_CREATE_ACCESS_FILE']);
 
     | 
  
  
    | 
      310
     | 
    
      } else {
     | 
  
  
    | 
      311
     | 
    
      
 
     | 
  
  
    | 
      312
     | 
    
          $old_filename = WB_PATH.PAGES_DIRECTORY.$old_link.PAGE_EXTENSION;
 
     | 
  
  
    | 
      313
     | 
    
          // First check if we need to create a new file
 
     | 
  
  
    | 
      314
     | 
    
          if(($old_link != $link) || (!file_exists($old_filename)))
 
     | 
  
  
    | 
      315
     | 
    
          {
     | 
  
  
    | 
      316
     | 
    
              // Delete old file
 
     | 
  
  
    | 
      317
     | 
    
              $old_filename = WB_PATH.PAGES_DIRECTORY.$old_link.PAGE_EXTENSION;
 
     | 
  
  
    | 
      318
     | 
    
              if(file_exists($old_filename))
 
     | 
  
  
    | 
      319
     | 
    
              {
     | 
  
  
    | 
      320
     | 
    
                  @unlink($old_filename);
 
     | 
  
  
    | 
      321
     | 
    
              }
 
     | 
  
  
    | 
      322
     | 
    
              // Create access file
 
     | 
  
  
    | 
      323
     | 
    
              create_access_file($filename,$page_id,$level);
 
     | 
  
  
    | 
      324
     | 
    
              // Move a directory for this page
 
     | 
  
  
    | 
      325
     | 
    
              if(file_exists(WB_PATH.PAGES_DIRECTORY.$old_link.'/') && is_dir(WB_PATH.PAGES_DIRECTORY.$old_link.'/'))
 
     | 
  
  
    | 
      326
     | 
    
              {
     | 
  
  
    | 
      327
     | 
    
                  @rename(WB_PATH.PAGES_DIRECTORY.$old_link.'/', WB_PATH.PAGES_DIRECTORY.$link.'/');
 
     | 
  
  
    | 
      328
     | 
    
              }
 
     | 
  
  
    | 
      329
     | 
    
              // Update any pages that had the old link with the new one
 
     | 
  
  
    | 
      330
     | 
    
              $old_link_len = strlen($old_link);
 
     | 
  
  
    | 
      331
     | 
    
              $sql = 'SELECT `page_id`,`link`,`level` FROM `'.TABLE_PREFIX.'pages` '
 
     | 
  
  
    | 
      332
     | 
    
                   . 'WHERE `link` LIKE \'%'.addcslashes($old_link, '%_').'/%\' '
 
     | 
  
  
    | 
      333
     | 
    
                   . 'ORDER BY `level` ASC';
 
     | 
  
  
    | 
      334
     | 
    
              if (($query_subs = $database->query($sql))) {
     | 
  
  
    | 
      335
     | 
    
                  while($sub = $query_subs->fetchRow(MYSQLI_ASSOC))
 
     | 
  
  
    | 
      336
     | 
    
                  {
     | 
  
  
    | 
      337
     | 
    
                      // Double-check to see if it contains old link
 
     | 
  
  
    | 
      338
     | 
    
                      if(substr($sub['link'], 0, $old_link_len) == $old_link)
 
     | 
  
  
    | 
      339
     | 
    
                      {
     | 
  
  
    | 
      340
     | 
    
                          // Get new link
 
     | 
  
  
    | 
      341
     | 
    
                          $replace_this = $old_link;
 
     | 
  
  
    | 
      342
     | 
    
                          $old_sub_link_len =strlen($sub['link']);
 
     | 
  
  
    | 
      343
     | 
    
                          $new_sub_link = $link.'/'.substr($sub['link'],$old_link_len+1,$old_sub_link_len);
 
     | 
  
  
    | 
      344
     | 
    
                          // Work out level
 
     | 
  
  
    | 
      345
     | 
    
                          $new_sub_level = level_count($sub['page_id']);
 
     | 
  
  
    | 
      346
     | 
    
                          // Update level and link
 
     | 
  
  
    | 
      347
     | 
    
                          $sql  = 'UPDATE `'.TABLE_PREFIX.'pages` SET '
 
     | 
  
  
    | 
      348
     | 
    
                                . '`link` = \''.$database->escapeString($new_sub_link).'\', '
 
     | 
  
  
    | 
      349
     | 
    
                                . '`level` = '.(int)$new_sub_level.' '
 
     | 
  
  
    | 
      350
     | 
    
                                . 'WHERE `page_id` = '.(int)$sub['page_id'];
 
     | 
  
  
    | 
      351
     | 
    
                          $database->query( $sql );
 
     | 
  
  
    | 
      352
     | 
    
                          // Re-write the access file for this page
 
     | 
  
  
    | 
      353
     | 
    
                          $old_subpage_file = WB_PATH.PAGES_DIRECTORY.$new_sub_link.PAGE_EXTENSION;
 
     | 
  
  
    | 
      354
     | 
    
                          if(file_exists($old_subpage_file))
 
     | 
  
  
    | 
      355
     | 
    
                          {
     | 
  
  
    | 
      356
     | 
    
                              @unlink($old_subpage_file);
 
     | 
  
  
    | 
      357
     | 
    
                          }
 
     | 
  
  
    | 
      358
     | 
    
                          create_access_file(WB_PATH.PAGES_DIRECTORY.$new_sub_link.PAGE_EXTENSION, $sub['page_id'], $new_sub_level);
 
     | 
  
  
    | 
      359
     | 
    
                      }
 
     | 
  
  
    | 
      360
     | 
    
                  }
 
     | 
  
  
    | 
      361
     | 
    
              }
 
     | 
  
  
    | 
      362
     | 
    
          }
 
     | 
  
  
    | 
      363
     | 
    
      }
 
     | 
  
  
    | 
      364
     | 
    
      
 
     | 
  
  
    | 
      365
     | 
    
      // Fix sub-pages page trail
 
     | 
  
  
    | 
      366
     | 
    
      fix_page_trail($page_id,$root_parent);
 
     | 
  
  
    | 
      367
     | 
    
      
 
     | 
  
  
    | 
      368
     | 
    
      /* END page "access file" code */
 
     | 
  
  
    | 
      369
     | 
    
      
 
     | 
  
  
    | 
      370
     | 
    
      // Check if there is a db error, otherwise say successful
 
     | 
  
  
    | 
      371
     | 
    
      if($database->is_error())
 
     | 
  
  
    | 
      372
     | 
    
      {
     | 
  
  
    | 
      373
     | 
    
          $admin->print_error($database->get_error(), $target_url );
 
     | 
  
  
    | 
      374
     | 
    
      } elseif ( $bBackLink ) {
     | 
  
  
    | 
      375
     | 
    
          $admin->print_success($MESSAGE['PAGES_SAVED_SETTINGS'], $pagetree_url );
 
     | 
  
  
    | 
      376
     | 
    
      } else {
     | 
  
  
    | 
      377
     | 
    
          $admin->print_success($MESSAGE['PAGES_SAVED_SETTINGS'], $target_url );
 
     | 
  
  
    | 
      378
     | 
    
      }
 
     | 
  
  
    | 
      379
     | 
    
      
 
     | 
  
  
    | 
      380
     | 
    
      // Print admin footer
 
     | 
  
  
    | 
      381
     | 
    
      $admin->print_footer();
 
     |