format, reads the $_POST variable of each name, applies the specified formatting,
// identifies changes, writes back the changes, makes admin log entry
function logPrefChanges(&$prefList, $logRef)
{
global $admin_log;
$pref = e107::getPref();
$tp = e107::getParser();
$prefChanges = array();
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($pref[$prefName]) || ($temp != $pref[$prefName]))
{ // Change to process
$pref[$prefName] = $temp;
$prefChanges[] = $prefName.' => '.$temp;
}
}
if (count($prefChanges))
{
save_prefs();
// Do admin logging
$logString = implode('[!br!]', $prefChanges);
$admin_log->log_event($logRef,$logString,'');
}
}
$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'], 'EC_ADM_06');
$e107cache->clear('nq_event_cal'); // Clear cache as well, in case displays changed
$message = EC_ADLAN_A204; // "Calendar settings updated.";
}
// ****************** FORTHCOMING EVENTS ******************
if (isset($_POST['updateforthcoming']))
{
logPrefChanges(&$prefSettings['updateForthcoming'], 'EC_ADM_07');
$e107cache->clear('nq_event_cal'); // Clear cache as well, in case displays changed
$message = EC_ADLAN_A109; // "Forthcoming Events settings updated.";
}
$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');
global $ecal_class;
$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;
}
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;
}
else
{
$message = 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;
$action = 'maint'; // Re-display maintenance menu
}
// Prompt to delete back events
if ($action == 'confdel')
{
$old_string = strftime("%d %B %Y",$ec_qs[1]);
$text = "
";
$ns->tablerender("
".EC_ADLAN_A205."
", $text); // TODO
}
// Prompt to clear cache
if ($action == 'confcache')
{
$text = "
";
$ns->tablerender("
".EC_ADLAN_A205."
", $text); // TODO
}
// Just delete odd email subscriptions
if (isset($ec_qs[2]) && isset($ec_qs[3]) && ($action == 'subs') && ($ec_qs[2] == 'del') && is_numeric($ec_qs[3]))
{
if ($sql->db_Delete('event_subs',"event_subid='{$ec_qs[3]}'"))
$message = EC_ADLAN_A180.$ec_qs[3];
else
$message = EC_ADLAN_A181.$ec_qs[3];
}
if (isset($message) && ($message != ""))
{
$ns->tablerender('', "
{$message}
"); // TODO
$message = '';
}
//category
$ecal_send_email = 0;
if($action == 'cat')
{
// This uses two hidden fields, preset from the category selection menu:
// calendarmenu_action
// 'update' - to create or update a record (actually save the info)
// 'dothings' - create/edit/delete just triggered - $calendarmenu_do = $_POST['calendarmenu_recdel']; has action 1, 2, 3
// calendarmenu_id - the number of the category - zero indicates a new category
// We may also have $_POST['send_email_1'] or $_POST['send_email_2'] set to generate a test email as well as doing update/save
if (is_readable(THEME.'ec_mailout_template.php'))
{ // Has to be require
require(THEME.'ec_mailout_template.php');
}
else
{
require(e_PLUGIN.'calendar_menu/ec_mailout_template.php');
}
$calendarmenu_db = new DB;
$calendarmenu_action = '';
if (isset($_POST['calendarmenu_action'])) $calendarmenu_action = $_POST['calendarmenu_action'];
$calendarmenu_edit = FALSE;
// * If we are updating then update or insert the record
if ($calendarmenu_action == 'update')
{
$calendarmenu_id = intval($_POST['calendarmenu_id']);
$calPars = array();
$calPars['event_cat_name'] = $tp->toDB($_POST['event_cat_name']);
$calPars['event_cat_description'] = $tp->toDB($_POST['event_cat_description']);
$calPars['event_cat_icon'] = $tp->toDB($_POST['ne_new_category_icon']);
$calPars['event_cat_class'] = intval($_POST['event_cat_class']);
$calPars['event_cat_subs'] = intval($_POST['event_cat_subs']);
$calPars['event_cat_force_class'] = intval($_POST['event_cat_force_class']);
$calPars['event_cat_ahead'] = intval($_POST['event_cat_ahead']);
$calPars['event_cat_msg1'] = $tp->toDB($_POST['event_cat_msg1']);
$calPars['event_cat_msg2'] = $tp->toDB($_POST['event_cat_msg2']);
$calPars['event_cat_notify'] = intval($_POST['event_cat_notify']);
$calPars['event_cat_lastupdate'] = intval(time());
$calPars['event_cat_addclass'] = intval($_POST['event_cat_addclass']);
if ($calendarmenu_id == 0)
{ // New record so add it
if ($calendarmenu_db->db_Insert("event_cat", $calPars))
{
$calendarmenu_msg .= "
";
}
}
// Now see if we need to send a test email
if (isset($_POST['send_email_1'])) $ecal_send_email = 1;
if (isset($_POST['send_email_2'])) $ecal_send_email = 2;
if ($ecal_send_email != 0)
{
$calendarmenu_action = 'dothings'; // This forces us back to category edit screen
$_POST['calendarmenu_selcat'] = $calendarmenu_id; // Record number to use
$_POST['calendarmenu_recdel'] = '1'; // This forces re-read of the record
}
}
// We are creating, editing or deleting a record
if ($calendarmenu_action == 'dothings')
{
$calendarmenu_id = intval($_POST['calendarmenu_selcat']);
$calendarmenu_do = intval($_POST['calendarmenu_recdel']);
$calendarmenu_dodel = false;
switch ($calendarmenu_do)
{
case '1': // Edit existing record
// We edit the record
$calendarmenu_db->db_Select('event_cat', '*', 'event_cat_id='.$calendarmenu_id);
$calendarmenu_row = $calendarmenu_db->db_Fetch() ;
extract($calendarmenu_row);
$calendarmenu_cap1 = EC_ADLAN_A24;
$calendarmenu_edit = TRUE;
if ($ecal_send_email != 0)
{ // Need to send a test email
// First, set up a dummy event
global $thisevent;
$thisevent = array('event_start' => $ecal_class->time_now, 'event_end' => ($ecal_class->time_now)+3600,
'event_title' => 'Test event', 'event_details' => EC_ADLAN_A191,
'event_cat_name' => $event_cat_name, 'event_location' => EC_ADLAN_A192,
'event_contact' => USEREMAIL,
'event_thread' => SITEURL.'dodgypage',
'event_id' => '6');
// *************** SEND EMAIL HERE **************
require_once(e_PLUGIN.'calendar_menu/calendar_shortcodes.php');
require_once(e_HANDLER . 'mail.php');
switch ($ecal_send_email)
{
case 1 : $cal_msg = $event_cat_msg1;
break;
case 2 : $cal_msg = $event_cat_msg2;
break;
}
$cal_msg = $tp -> parseTemplate($cal_msg, TRUE);
$cal_title = $tp -> parseTemplate($pref['eventpost_mailsubject'], TRUE);
$user_email = USEREMAIL;
$user_name = USERNAME;
$send_result = sendemail($user_email, $cal_title, $cal_msg, $user_name, $pref['eventpost_mailaddress'], $pref['eventpost_mailfrom']);
if ($send_result)
$calendarmenu_msg .= "
".EC_ADLAN_A187.$ecal_send_email."
";
else
$calendarmenu_msg .= "
".EC_ADLAN_A188.$ecal_send_email."
";
}
break;
case '2': // New category
// Create new record
$calendarmenu_id = 0;
// set all fields to zero/blank
$calendar_category_name = '';
$calendar_category_description = '';
$calendarmenu_cap1 = EC_ADLAN_A23;
$calendarmenu_edit = TRUE;
$event_cat_name = ''; // Define some variables for notice removal
$event_cat_description = '';
$event_cat_class = e_UC_MEMBER;
$event_cat_addclass = e_UC_ADMIN;
$event_cat_icon = '';
$event_cat_subs = 0;
$event_cat_notify = 0;
$event_cat_force_class = '';
$event_cat_ahead = 5;
$event_cat_msg1 = '';
$event_cat_msg2 = '';
break;
case '3': // Delete record
if ($_POST['calendarmenu_okdel'] == '1')
{
if ($calendarmenu_db->db_Select('event', 'event_id', 'event_category='.$calendarmenu_id, 'nowhere'))
{
$calendarmenu_msg .= "
";
}
$calendarmenu_dodel = TRUE;
$calendarmenu_edit = FALSE;
break;
}
if (!$calendarmenu_dodel)
{
//require_once(e_HANDLER.'file_class.php');
$calendarmenu_text .= "
";
}
}
if (!$calendarmenu_edit)
{
// Get the category names to display in combo box then display actions available
$calendarmenu2_db = new DB;
$calendarmenu_catopt = '';
if (!isset($calendarmenu_id)) $calendarmenu_id = -1;
if ($calendarmenu2_db->db_Select('event_cat', 'event_cat_id,event_cat_name', ' order by event_cat_name', 'nowhere'))
{
while ($row = $calendarmenu2_db->db_Fetch())
{
$calendarmenu_catopt .= "";
}
}
else
{
$calendarmenu_catopt .= "";
}
$calendarmenu_text .= "
";
}
if(isset($calendarmenu_text))
{
$ns->tablerender(EC_ADLAN_1." - ".EC_ADLAN_A19, $calendarmenu_text);
}
}
// ====================================================
// FORTHCOMING EVENTS OPTIONS
// ====================================================
if($action == 'forthcoming')
{
if (!isset($pref['eventpost_menuheading'])) $pref['eventpost_menuheading'] = EC_ADLAN_A100;
if (!isset($pref['eventpost_daysforward'])) $pref['eventpost_daysforward'] = 30;
if (!isset($pref['eventpost_numevents'])) $pref['eventpost_numevents'] = 3;
if (!isset($pref['eventpost_checkrecur'])) $pref['eventpost_checkrecur'] = '1';
if (!isset($pref['eventpost_linkheader'])) $pref['eventpost_linkheader'] = '0';
if (!isset($pref['eventpost_namelink'])) $pref['eventpost_namelink'] = '1';
$text = "
";
$ns->tablerender("
".EC_ADLAN_1." - ".EC_ADLAN_A100."
", $text);
} // End of Forthcoming Events Menu Options
// ====================================================
// MAINTENANCE OPTIONS
// ====================================================
if(($action == 'maint'))
{
$text = "
";
$ns->tablerender("
".EC_ADLAN_1." - ".EC_ADLAN_A141."
", $text);
$text = "
";
$ns->tablerender("
".EC_ADLAN_1." - ".EC_ADLAN_A159."
", $text);
}
// ====================================================
// SUBSCRIPTIONS OPTIONS
// ====================================================
if($action == 'subs')
{
$from = 0;
$amount = 20; // Number per page - could make configurable later if required
if (isset($ec_qs[1])) $from = intval($ec_qs[1]);
$num_entry = $sql->db_Count("event_subs", "(*)", ""); // Just count the lot
$qry = "SELECT es.*, u.user_id, u.user_name, u.user_class, ec.event_cat_id, ec.event_cat_name, ec.event_cat_class FROM `#event_subs` AS es
LEFT JOIN `#user` AS u ON es.event_userid = u.user_id
LEFT JOIN `#event_cat` AS ec ON es.event_cat = ec.event_cat_id
ORDER BY u.user_id
LIMIT {$from}, {$amount} ";
$text = "