format, reads the $_POST variable of each name, applies the specified formatting, * identifies changes, writes back the changes, makes admin log entry * * @param array $prefList - each key is the name of a pref; value is an integer representing its type * @param array $oldPref - array of current pref values * @param string $logRef - used as title if any changes to be logged * * @return - none */ function logPrefChanges(&$prefList, &$oldPref, $logRef) { $admin_log = e107::getAdminLog(); $calNew = e107::getPlugConfig('calendar_menu'); // Initialize calendar_menu prefs. $tp = e107::getParser(); $prefChanges = array(); $mes = e107::getMessage(); foreach ($prefList as $prefName => $process) { switch ($process) { case 0 : $temp = varset($_POST[$prefName],''); break; case 1 : $temp = intval(varset($_POST[$prefName],0)); break; case 2 : $temp = $tp->toDB(varset($_POST[$prefName],'')); break; case 3 : // Array of integers - turn into comma-separated string $tmp = array(); foreach ($_POST[$prefName] as $v) { $tmp[] = intval($v); } $temp = implode(",", $tmp); unset($tmp); break; } if (!isset($oldPref[$prefName]) || ($temp != $oldPref[$prefName])) { // Change to process $oldPref[$prefName] = $temp; $calNew->set($prefName, $temp); $prefChanges[] = $prefName.' => '.$temp; } } if (count($prefChanges)) { $result = $calNew->save(); if ($result === TRUE) { // Do admin logging $logString = implode('[!br!]', $prefChanges); $admin_log->log_event($logRef,$logString,''); //$mes->addSuccess(LAN_UPDATED); } elseif ($result === FALSE) { $mes->addError("Error saving calendar prefs"); // TODO LAN } else { // Should never happen $mes->addInfo('Unexpected result: '.$result); // TODO LAN } } } $prefSettings = array( 'updateOptions' => array( 'eventpost_admin' => 1, // Integer 'eventpost_super' => 1, // Integer 'eventpost_adminlog' => 1, // Integer 'eventpost_menulink' => 1, // Integer 'eventpost_showmouseover' => 1, // Integer 'eventpost_showeventcount' => 1, // Integer 'eventpost_forum' => 1, // Integer 'eventpost_recentshow' => 2, // String ('LV' or an integer) 'eventpost_weekstart' => 1, // Integer 'eventpost_lenday' => 1, // Integer 'eventpost_dateformat' => 2, // String ('my' or 'ym') 'eventpost_datedisplay' => 1, // Integer 'eventpost_fivemins' => 1, // Integer 'eventpost_editmode' => 1, // Integer 'eventpost_caltime' => 1, // Integer 'eventpost_timedisplay' => 1, // Integer 'eventpost_timecustom' => 2, // String 'eventpost_dateevent' => 1, // Integer 'eventpost_eventdatecustom' => 2, // String 'eventpost_datenext' => 1, // Integer 'eventpost_nextdatecustom' => 2, // String 'eventpost_printlists' => 1, // Integer 'eventpost_asubs' => 1, // Integer 'eventpost_mailfrom' => 2, // String 'eventpost_mailsubject' => 2, // String 'eventpost_mailaddress' => 2, // String 'eventpost_emaillog' => 1 // Integer ), 'updateForthcoming' => array( 'eventpost_menuheading' => 2, // String 'eventpost_daysforward' => 1, // Integer 'eventpost_numevents' => 1, // Integer 'eventpost_checkrecur' =>1, // Integer 'eventpost_linkheader' => 1, // Integer 'eventpost_fe_set' => 3, // Array of class values 'eventpost_fe_hideifnone' => 1, // Integer 'eventpost_fe_showrecent' => 1, // Integer 'eventpost_showcaticon' => 1, // Integer 'eventpost_namelink' => 1 // Integer ) ); if (isset($_POST['updatesettings'])) { logPrefChanges($prefSettings['updateOptions'], $calPref, 'EC_ADM_06'); $e107cache->clear('nq_event_cal'); // Clear cache as well, in case displays changed //$mes->addSuccess(); } // ****************** FORTHCOMING EVENTS ****************** if (isset($_POST['updateforthcoming'])) { logPrefChanges($prefSettings['updateForthcoming'], $calPref, 'EC_ADM_07'); $e107cache->clear('nq_event_cal'); // Clear cache as well, in case displays changed //$mes->addSuccess(); } $action = 'config'; // Default action - show preferences if (e_QUERY) { $ec_qs = explode('.', e_QUERY); $action = preg_replace('#\W#', '',$ec_qs[0]); } require_once('ecal_class.php'); $ecal_class = new ecal_class; // ****************** MAINTENANCE ****************** if (isset($_POST['deleteold']) && isset($_POST['eventpost_deleteoldmonths'])) { $back_count = intval($_POST['eventpost_deleteoldmonths']); if (($back_count >= 1) && ($back_count <= 12)) { $old_date = intval(mktime(0,0,0,$ecal_class->now_date['mon']-$back_count,1,$ecal_class->now_date['year'])); $old_string = strftime("%d %B %Y",$old_date); // $message = "Back delete {$back_count} months. Oldest date = {$old_string}"; $action = 'confdel'; $ec_qs[1] = $old_date; } else //$message = EC_ADLAN_A148; $mes->addError(EC_ADLAN_A148); } if (isset($_POST['cache_clear'])) { $action = 'confcache'; } //------------------------------------------------- require_once(e_ADMIN.'auth.php'); if (!defined('USER_WIDTH')){ define('USER_WIDTH','width:auto'); } // Actually delete back events if (isset($_POST['confirmdeleteold']) && ($action == 'backdel')) { $old_date = intval($ec_qs[1]); $old_string = strftime("%d %B %Y",$old_date); // Check both start and end dates to avoid problems with events originally entered under 0.617 $qry = "event_start < {$old_date} AND event_end < {$old_date} AND event_recurring = 0"; // $message = "Back delete {$back_count} months. Oldest date = {$old_string} Query = {$qry}"; if ($sql -> db_Delete('event',$qry)) { // Add in a log event $ecal_class->cal_log(4,"db_Delete - earlier than {$old_string} (past {$back_count} months)",$qry); //$message = EC_ADLAN_A146.$old_string.EC_ADLAN_A147; $mes->addSuccess(EC_ADLAN_A146 . $old_string . EC_ADLAN_A147); } else { //$message = EC_ADLAN_A149." : ".$sql->mySQLresult; $mes->addError(EC_ADLAN_A149." : ".$sql->mySQLresult); } $action = 'maint'; } // Actually empty cache if (isset($_POST['confirmdelcache']) && ($action == 'cachedel')) { $e107cache->clear('nq_event_cal'); //$message = EC_ADLAN_A163; $mes->addSuccess(EC_ADLAN_A163); // TODO LAN $action = 'maint'; // Re-display maintenance menu $ns->tablerender($caption, $mes->render() . $text); } // Prompt to delete back events if ($action == 'confdel') { $old_string = strftime("%d %B %Y",$ec_qs[1]); $text = "
"; $ns->tablerender(LAN_UI_DELETE_LABEL, $mes->render() . $text); } // Prompt to clear cache if ($action == 'confcache') { $text = "