'date_available DESC, file ASC, id ASC', ' ORDER BY file DESC, date_available DESC' => 'file DESC, date_available DESC', 'custom' => l10n('Custom'), ); //------------------------------ verification and registration of modifications if (isset($_POST['submit'])) { $int_pattern = '/^\d+$/'; switch ($page['section']) { case 'main' : { $order_regex = '#^(( *)(id|file|name|date_available|date_creation|hit|average_rate|comment|author|filesize|width|height|high_filesize|high_width|high_height) (ASC|DESC),{1}){1,}$#'; // process 'order_by_perso' string if ($_POST['order_by'] == 'custom' AND !empty($_POST['order_by_perso'])) { $_POST['order_by'] = str_ireplace( array('order by ', 'asc', 'desc'), array(null, 'ASC', 'DESC'), trim($_POST['order_by_perso']) ); if (preg_match($order_regex, $_POST['order_by'].',')) { $_POST['order_by'] = ' ORDER BY '.$_POST['order_by']; } else { array_push($page['errors'], l10n('Invalid order string').' « '.$_POST['order_by'].' »'); } } else if ($_POST['order_by'] == 'custom') { array_push($page['errors'], l10n('Invalid order string')); } // process 'order_by_inside_category_perso' string if ($_POST['order_by_inside_category'] == 'as_order_by') { $_POST['order_by_inside_category'] = $_POST['order_by']; } else if ($_POST['order_by_inside_category'] == 'custom' AND !empty($_POST['order_by_inside_category_perso'])) { $_POST['order_by_inside_category'] = str_ireplace( array('order by ', 'asc', 'desc'), array(null, 'ASC', 'DESC'), trim($_POST['order_by_inside_category_perso']) ); if (preg_match($order_regex, $_POST['order_by_inside_category'].',')) { $_POST['order_by_inside_category'] = ' ORDER BY '.$_POST['order_by_inside_category']; } else { array_push($page['errors'], l10n('Invalid order string').' « '.$_POST['order_by_inside_category'].' »'); } } else if ($_POST['order_by_inside_category'] == 'custom') { array_push($page['errors'], l10n('Invalid order string')); } if (empty($_POST['gallery_locked']) and $conf['gallery_locked']) { $tpl_var = & $template->get_template_vars('header_msgs'); $msg_key = array_search(l10n('The gallery is locked for maintenance. Please, come back later.'), $tpl_var); unset($tpl_var[$msg_key]); } elseif (!empty($_POST['gallery_locked']) and !$conf['gallery_locked']) { $template->append('header_msgs', l10n('The gallery is locked for maintenance. Please, come back later.')); } foreach( $main_checkboxes as $checkbox) { $_POST[$checkbox] = empty($_POST[$checkbox])?'false':'true'; } break; } case 'history' : { foreach( $history_checkboxes as $checkbox) { $_POST[$checkbox] = empty($_POST[$checkbox])?'false':'true'; } break; } case 'comments' : { // the number of comments per page must be an integer between 5 and 50 // included if (!preg_match($int_pattern, $_POST['nb_comment_page']) or $_POST['nb_comment_page'] < 5 or $_POST['nb_comment_page'] > 50) { array_push($page['errors'], l10n('The number of comments a page must be between 5 and 50 included.')); } foreach( $comments_checkboxes as $checkbox) { $_POST[$checkbox] = empty($_POST[$checkbox])?'false':'true'; } break; } case 'default' : { // Never go here break; } case 'display' : { foreach( $display_checkboxes as $checkbox) { $_POST[$checkbox] = empty($_POST[$checkbox])?'false':'true'; } foreach( $display_info_checkboxes as $checkbox) { $_POST['picture_informations'][$checkbox] = empty($_POST['picture_informations'][$checkbox])? false : true; } $_POST['picture_informations'] = addslashes(serialize($_POST['picture_informations'])); break; } } // updating configuration if no error found if (count($page['errors']) == 0) { //echo '
'; print_r($_POST); echo ''; $result = pwg_query('SELECT param FROM '.CONFIG_TABLE); while ($row = pwg_db_fetch_assoc($result)) { if (isset($_POST[$row['param']])) { $value = $_POST[$row['param']]; if ('gallery_title' == $row['param']) { if (!$conf['allow_html_descriptions']) { $value = strip_tags($value); } } $query = ' UPDATE '.CONFIG_TABLE.' SET value = \''. str_replace("\'", "''", $value).'\' WHERE param = \''.$row['param'].'\' ;'; pwg_query($query); } } array_push($page['infos'], l10n('Information data registered in database')); } //------------------------------------------------------ $conf reinitialization load_conf_from_db(); } //----------------------------------------------------- template initialization $template->set_filename('config', 'configuration.tpl'); // TabSheet $tabsheet = new tabsheet(); // TabSheet initialization $tabsheet->add('main', l10n('Main'), $conf_link.'main'); $tabsheet->add('display', l10n('Display'), $conf_link.'display'); $tabsheet->add('history', l10n('History'), $conf_link.'history'); $tabsheet->add('comments', l10n('Comments'), $conf_link.'comments'); $tabsheet->add('default', l10n('Guest Settings'), $conf_link.'default'); // TabSheet selection $tabsheet->select($page['section']); // Assign tabsheet to template $tabsheet->assign(); $action = get_root_url().'admin.php?page=configuration'; $action.= '§ion='.$page['section']; $template->assign( array( 'U_HELP' => get_root_url().'admin/popuphelp.php?page=configuration', 'F_ACTION'=>$action )); switch ($page['section']) { case 'main' : { // process 'order_by' string if (array_key_exists($conf['order_by'], $order_options)) { $order_by_selected = $conf['order_by']; $order_by_perso = null; } else { $order_by_selected = 'custom'; $order_by_perso = str_replace(' ORDER BY ', null, $conf['order_by']); } // process 'order_by_inside_category' string if ($conf['order_by_inside_category'] == $conf['order_by']) { $order_by_inside_category_selected = 'as_order_by'; $order_by_inside_category_perso = null; } else if (array_key_exists($conf['order_by_inside_category'], $order_options)) { $order_by_inside_category_selected = $conf['order_by_inside_category']; $order_by_inside_category_perso = null; } else { $order_by_inside_category_selected = 'custom'; $order_by_inside_category_perso = str_replace(' ORDER BY ', null, $conf['order_by_inside_category']); } $template->assign( 'main', array( 'CONF_GALLERY_TITLE' => htmlspecialchars($conf['gallery_title']), 'CONF_PAGE_BANNER' => htmlspecialchars($conf['page_banner']), 'CONF_GALLERY_URL' => $conf['gallery_url'], 'week_starts_on_options' => array( 'sunday' => $lang['day'][0], 'monday' => $lang['day'][1], ), 'week_starts_on_options_selected' => $conf['week_starts_on'], 'order_by_options' => $order_options, 'order_by_selected' => $order_by_selected, 'order_by_perso' => $order_by_perso, 'order_by_inside_category_options' => array_merge( array('as_order_by'=>l10n('As default order')), $order_options ), 'order_by_inside_category_selected' => $order_by_inside_category_selected, 'order_by_inside_category_perso' => $order_by_inside_category_perso, )); foreach ($main_checkboxes as $checkbox) { $template->append( 'main', array( $checkbox => $conf[$checkbox] ), true ); } break; } case 'history' : { //Necessary for merge_block_vars foreach ($history_checkboxes as $checkbox) { $template->append( 'history', array( $checkbox => $conf[$checkbox] ), true ); } break; } case 'comments' : { $template->assign( 'comments', array( 'NB_COMMENTS_PAGE'=>$conf['nb_comment_page'], )); foreach ($comments_checkboxes as $checkbox) { $template->append( 'comments', array( $checkbox => $conf[$checkbox] ), true ); } break; } case 'default' : { $edit_user = build_user($conf['guest_id'], false); include_once(PHPWG_ROOT_PATH.'profile.php'); $errors = array(); if (save_profile_from_post($edit_user, $errors)) { // Reload user $edit_user = build_user($conf['guest_id'], false); array_push($page['infos'], l10n('Information data registered in database')); } $page['errors'] = array_merge($page['errors'], $errors); load_profile_in_template( $action, '', $edit_user ); $template->assign('default', array()); break; } case 'display' : { foreach ($display_checkboxes as $checkbox) { $template->append( 'display', array( $checkbox => $conf[$checkbox] ), true ); } $template->append( 'display', array( 'picture_informations' => unserialize($conf['picture_informations']) ), true ); break; } } //----------------------------------------------------------- sending html code $template->assign_var_from_handle('ADMIN_CONTENT', 'config'); ?>