SOLVED - Hide or Delete past events
Design and Skin Customization
Yeah - this will run once a day, after midnight.
Make the the module is enabled.
NOTE - This code is untested. I don't want to be responsible for something going wrong and all your events being deleted (or worst) !!!
Initially I'd debug it by commenting out the actual delete call and writing event info to the activity log, just to be sure that it will delete the correct events -
<?php
defined('APP_DIR') or exit();
function prDeletePastEvents_meta(){
$_tmp = array(
'name' => 'Delete Past Events',
'url' => 'deletepastevents',
'version' => '1.0.0',
'developer' => '@paul, ©' . strftime('%Y'),
'description' => 'Listens for the "daily" event then deletes all jrEvent items that are past',
'category' => 'PBP Custom Modules'
);
return $_tmp;
}
function prDeletePastEvents_init(){
jrCore_register_event_listener('jrCore','daily_maintenance','prDeletePastEvents_listener');
return true;
}
function prDeletePastEvents_listener($_data, $_user, $_conf, $_args, $event)
{
if (jrCore_module_is_active('jrEvent')) {
$time = time() - 86400;
$_s = array(
"search" => array (
"event_date < {$time}"
),
"limit" => 1000,
'exclude_jrProfile_keys' => true,
'exclude_jrProfile_quota_keys' => true
);
$_rt = jrCore_db_search_items('jrEvent',$_s);
if (isset($_rt) && is_array($_rt)) {
$ctr = 0;
foreach ($_rt as $rt) {
$edate = date('d M Y',$rt['event_date']);
jrCore_logger('INF',"Event {$edate} - {$rt['event_title']} will be deleted");
$ctr++;
}
jrCore_logger('INF',"{$ctr} past jrEvent items deleted");
}
}
return $_data;
}
Note also that I subtracted a day from the search time so that events in different time zones will not be deleted prematurely.