$Date: 2008-04-10 14:23:41 -0400 (Thu, 10 Apr 2008) $ | > $Revision: 1235 $ | > $Author: jason $ +--------------------------------------------------------------------------- | | > Components Functions | > Module written by Matt Mecham | > Date started: 12th April 2005 (13:09) +-------------------------------------------------------------------------- */ # CALENDAR SORTING! if ( ! defined( 'IN_ACP' ) ) { print "
";print_r($calendar->event_cache);exit;
//--------------------------------------------
// OK.. Go through days and check events
//--------------------------------------------
for( $i = 0 ; $i <= $this->ipsclass->vars['calendar_limit'] ; $i++ )
{
list( $_month, $tday, $year ) = explode( ',', gmdate('n,j,Y', $nowtime) );
$eventcache = $calendar->get_day_events( $_month, $tday, $year );
foreach( $eventcache as $event )
{
if ( ! in_array( $event['event_id'], $seenids ) )
{
if ( $calendar->get_info_events( $event, $_month, $tday, $year, 0 ) )
{
if ( ! $event['event_approved'] )
{
continue;
}
unset( $event['event_content'], $event['event_smilies'] );
$event['_perm_read'] = $calendars[ $event['event_calendar_id'] ]['_perm_read'];
$calevents[ $event['event_id'] ] = $event;
}
$seenids[ $event['event_id'] ] = $event['event_id'];
}
}
$nowtime += 86400;
}
//-----------------------------------------
// Grab birthdays
//-----------------------------------------
$append_string = "";
if( !date("L") )
{
if( $month == "2" AND ( $day == "28" OR $day == "27" ) )
{
$append_string = " or( bday_month=2 AND bday_day=29 )";
}
}
$this->ipsclass->DB->simple_construct( array( 'select' => 'id, members_display_name, mgroup, bday_day, bday_month, bday_year',
'from' => 'members',
'where' => "( bday_day=$last_day AND bday_month=$last_month )
or ( bday_day=$day AND bday_month=$month )
or ( bday_day=$next_day AND bday_month=$next_month ) {$append_string}"
) );
$this->ipsclass->DB->simple_exec();
while ( $r = $this->ipsclass->DB->fetch_row() )
{
$birthdays[ $r['id'] ] = $r;
}
//--------------------------------------------
// Update calendar array
//--------------------------------------------
$this->ipsclass->cache['birthdays'] =& $birthdays;
$this->ipsclass->cache['calendar'] =& $calevents;
$this->ipsclass->update_cache( array( 'name' => 'calendar', 'array' => 1, 'deletefirst' => 1 ) );
$this->ipsclass->update_cache( array( 'name' => 'birthdays', 'array' => 1, 'deletefirst' => 1 ) );
if ( $return )
{
$this->ipsclass->main_msg = "Calendar Events Recached";
$this->calendar_list();
}
}
/*-------------------------------------------------------------------------*/
// Components Save
/*-------------------------------------------------------------------------*/
function calendar_save($type='add')
{
//--------------------------------------------
// INIT
//--------------------------------------------
$cal_id = intval($this->ipsclass->input['cal_id']);
$cal_title = trim( $this->ipsclass->txt_stripslashes( $this->ipsclass->txt_htmlspecialchars($_POST['cal_title'])) );
$cal_moderate = intval($this->ipsclass->input['cal_moderate']);
$cal_event_limit = intval($this->ipsclass->input['cal_event_limit']);
$cal_bday_limit = intval($this->ipsclass->input['cal_bday_limit']);
$cal_rss_export = intval($this->ipsclass->input['cal_rss_export']);
$cal_rss_export_days = intval($this->ipsclass->input['cal_rss_export_days']);
$cal_rss_export_max = intval($this->ipsclass->input['cal_rss_export_max']);
$cal_rss_update = intval($this->ipsclass->input['cal_rss_update']);
$cal_perms = array( 'perm_read' => '', 'perm_post' => '', 'perm_nomod' => '' );
//--------------------------------------------
// Checks...
//--------------------------------------------
if ( $type == 'edit' )
{
if ( ! $cal_id OR ! $cal_title )
{
$this->ipsclass->main_msg = "No ID was passed, please try again";
$this->calendar_list();
return;
}
}
else
{
if ( ! $cal_title )
{
$this->ipsclass->main_msg = "You must complete the entire form.";
$this->calendar_form( $type );
return;
}
}
//--------------------------------------------
// Permission: Read
//--------------------------------------------
if ( $this->ipsclass->input['perm_read_all'] )
{
$cal_perms['perm_read'] = '*';
}
else if ( is_array( $_POST['perm_read'] ) )
{
$cal_perms['perm_read'] = implode( ',', $_POST['perm_read'] );
}
//--------------------------------------------
// Permission: Start
//--------------------------------------------
if ( $this->ipsclass->input['perm_post_all'] )
{
$cal_perms['perm_post'] = '*';
}
else if ( is_array( $_POST['perm_post'] ) )
{
$cal_perms['perm_post'] = implode( ',', $_POST['perm_post'] );
}
//--------------------------------------------
// Permission: No mod
//--------------------------------------------
if ( $this->ipsclass->input['perm_nomod_all'] )
{
$cal_perms['perm_nomod'] = '*';
}
else if ( is_array( $_POST['perm_nomod'] ) )
{
$cal_perms['perm_nomod'] = implode( ',', $_POST['perm_nomod'] );
}
//--------------------------------------------
// Save...
//--------------------------------------------
$array = array( 'cal_title' => $cal_title,
'cal_moderate' => $cal_moderate,
'cal_event_limit' => $cal_event_limit,
'cal_bday_limit' => $cal_bday_limit,
'cal_rss_export' => $cal_rss_export,
'cal_rss_export_days' => $cal_rss_export_days,
'cal_rss_export_max' => $cal_rss_export_max,
'cal_rss_update' => $cal_rss_update,
'cal_permissions' => serialize($cal_perms),
);
if ( $type == 'add' )
{
$this->ipsclass->DB->do_insert( 'cal_calendars', $array );
$cal_id = $this->ipsclass->DB->get_insert_id();
$this->ipsclass->main_msg = 'New Calendar Added';
}
else
{
$this->ipsclass->DB->do_update( 'cal_calendars', $array, 'cal_id='.$cal_id );
$this->ipsclass->main_msg = 'Calendar Edited';
}
$this->calendars_rebuildcache();
$this->calendar_rebuildcache( $cal_id, 0 );
$this->calendar_rss_cache( $cal_id, 0 );
$this->calendar_list();
}
/*-------------------------------------------------------------------------*/
// Components: Form
/*-------------------------------------------------------------------------*/
function calendar_form( $type='add' )
{
//-----------------------------------------
// Init Vars
//-----------------------------------------
$cal_id = isset($this->ipsclass->input['cal_id']) ? intval($this->ipsclass->input['cal_id']) : 0;
$form = array();
$form['perm_read'] = "";
$form['perm_post'] = "";
$form['perm_nomod'] = "";
$form['perm_read_all'] = "";
$form['perm_post_all'] = "";
$form['perm_nomod_all'] = "";
//-----------------------------------------
// Check (please?)
//-----------------------------------------
if ( $type == 'add' )
{
$formcode = 'calendar_add_do';
$title = "Add New Calendar";
$button = "Add New Calendar";
$calendar = array( 'perm_read' => '',
'perm_post' => '',
'perm_nomod' => '',
'cal_title' => '',
'cal_moderate' => '',
'cal_event_limit' => '',
'cal_bday_limit' => '',
'cal_rss_export' => '',
'cal_rss_update' => '',
'cal_rss_export_days' => '',
'cal_rss_export_max' => '',
'cal_id' => 0 );
}
else
{
$calendar = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'cal_calendars', 'where' => 'cal_id='.$cal_id ) );
$calendar = array_merge( $calendar, unserialize( $calendar['cal_permissions'] ) );
if ( ! $calendar['cal_id'] )
{
$this->ipsclass->main_msg = "No ID was passed, please try again.";
$this->components_list();
return;
}
$formcode = 'calendar_edit_do';
$title = "Edit Calendar ".$calendar['cal_title'];
$button = "Save Changes";
}
//-----------------------------------------
// Build Groups
//-----------------------------------------
$perm_read_array = ( isset($_POST['perm_read']) AND is_array( $_POST['perm_read'] ) ) ? $_POST['perm_read'] : explode( ',', $calendar['perm_read'] );
$perm_post_array = ( isset($_POST['perm_post']) AND is_array( $_POST['perm_post'] ) ) ? $_POST['perm_post'] : explode( ',', $calendar['perm_post'] );
$perm_nomod_array = ( isset($_POST['perm_nomod']) AND is_array( $_POST['perm_nomod'] ) ) ? $_POST['perm_nomod'] : explode( ',', $calendar['perm_nomod'] );
$perm_read_all = FALSE;
$perm_post_all = FALSE;
$perm_nomod_all = FALSE;
if ( in_array( '*', $perm_read_array ) OR ( isset($_POST['perm_read_all']) AND $_POST['perm_read_all'] ) )
{
$perm_read_all = TRUE;
$form['perm_read_all'] = ' checked="checked"';
}
if ( in_array( '*', $perm_post_array ) OR ( isset($_POST['perm_post_all']) AND $_POST['perm_post_all'] ) )
{
$perm_post_all = TRUE;
$form['perm_post_all'] = ' checked="checked"';
}
if ( in_array( '*', $perm_nomod_array ) OR ( isset($_POST['perm_nomod_all']) AND $_POST['perm_nomod_all'] ) )
{
$perm_nomod_all = TRUE;
$form['perm_nomod_all'] = ' checked="checked"';
}
//-----------------------------------------
// Perms masks section
//-----------------------------------------
$this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'forum_perms' ) );
$this->ipsclass->DB->simple_exec();
while ( $data = $this->ipsclass->DB->fetch_row() )
{
//-----------------------------------------
// READ
//-----------------------------------------
if ( is_array($perm_read_array) AND in_array( $data['perm_id'], $perm_read_array ) OR $perm_read_all == TRUE )
{
$form['perm_read'] .= "";
}
else
{
$form['perm_read'] .= "";
}
//-----------------------------------------
// POST
//-----------------------------------------
if ( is_array($perm_post_array) AND in_array( $data['perm_id'], $perm_post_array ) OR $perm_post_all == TRUE )
{
$form['perm_post'] .= "";
}
else
{
$form['perm_post'] .= "";
}
//-----------------------------------------
// NO MOD
//-----------------------------------------
if ( is_array($perm_nomod_array) AND in_array( $data['perm_id'], $perm_nomod_array ) OR $perm_nomod_all == TRUE )
{
$form['perm_nomod'] .= "";
}
else
{
$form['perm_nomod'] .= "";
}
}
//-----------------------------------------
// Form elements
//-----------------------------------------
$form['cal_title'] = $this->ipsclass->adskin->form_input( 'cal_title' , $this->ipsclass->txt_htmlspecialchars( ( isset($_POST['cal_title']) AND $_POST['cal_title'] ) ? $_POST['cal_title'] : $calendar['cal_title'] ) );
$form['cal_moderate'] = $this->ipsclass->adskin->form_yes_no( 'cal_moderate' , ( isset($_POST['cal_moderate']) AND $_POST['cal_moderate'] ) ? $_POST['cal_moderate'] : $calendar['cal_moderate'] );
$form['cal_event_limit'] = $this->ipsclass->adskin->form_simple_input( 'cal_event_limit' , ( isset($_POST['cal_event_limit']) AND $_POST['cal_event_limit'] ) ? $_POST['cal_event_limit'] : $calendar['cal_event_limit'], 5 );
$form['cal_bday_limit'] = $this->ipsclass->adskin->form_simple_input( 'cal_bday_limit' , ( isset($_POST['cal_bday_limit']) AND $_POST['cal_bday_limit'] ) ? $_POST['cal_bday_limit'] : $calendar['cal_bday_limit'], 5 );
$form['cal_rss_export'] = $this->ipsclass->adskin->form_yes_no( 'cal_rss_export' , ( isset($_POST['cal_rss_export']) AND $_POST['cal_rss_export'] ) ? $_POST['cal_rss_export'] : $calendar['cal_rss_export'] );
$form['cal_rss_update'] = $this->ipsclass->adskin->form_simple_input( 'cal_rss_update' , ( isset($_POST['cal_rss_update']) AND $_POST['cal_rss_update'] ) ? $_POST['cal_rss_update'] : $calendar['cal_rss_update'], 5 );
$form['cal_rss_export_days'] = $this->ipsclass->adskin->form_simple_input( 'cal_rss_export_days' , ( isset($_POST['cal_rss_export_days']) AND $_POST['cal_rss_export_days'] ) ? $_POST['cal_rss_export_days'] : $calendar['cal_rss_export_days'], 5 );
$form['cal_rss_export_max'] = $this->ipsclass->adskin->form_simple_input( 'cal_rss_export_max' , ( isset($_POST['cal_rss_export_max']) AND $_POST['cal_rss_export_max'] ) ? $_POST['cal_rss_export_max'] : $calendar['cal_rss_export_max'], 5 );
$this->ipsclass->html .= $this->html->calendar_form( $form, $title, $formcode, $button, $calendar );
$this->ipsclass->html_help_title = "Calendar Manager";
$this->ipsclass->html_help_msg = "This section will allow you to manage your calendars.";
$this->ipsclass->admin->nav[] = array( '', "Add/Edit Calendar" );
$this->ipsclass->admin->output();
}
/*-------------------------------------------------------------------------*/
// List current calendars
/*-------------------------------------------------------------------------*/
function calendar_list()
{
//-------------------------------
// INIT
//-------------------------------
$content = "";
$seen_count = 0;
$total_items = 0;
$rows = array();
//-------------------------------
// Get components
//-------------------------------
$this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'cal_calendars', 'order' => 'cal_position ASC' ) );
$this->ipsclass->DB->simple_exec();
while( $r = $this->ipsclass->DB->fetch_row() )
{
$total_items++;
$rows[] = $r;
}
foreach( $rows as $r )
{
//-------------------------------
// Work out position images
//-------------------------------
$r['_pos_up'] = $this->html->calendar_position_blank($r['cal_id']);
$r['_pos_down'] = $this->html->calendar_position_blank($r['cal_id']);
//-------------------------------
// Work out position images
//-------------------------------
if ( $total_items > 1 )
{
if ( ($seen_count + 1) == $total_items )
{
# Show up only
$r['_pos_up'] = $this->html->calendar_position_up($r['cal_id']);
}
else if ( $seen_count > 0 AND $seen_count < $total_items )
{
# Show both...
$r['_pos_up'] = $this->html->calendar_position_up($r['cal_id']);
$r['_pos_down'] = $this->html->calendar_position_down($r['cal_id']);
}
else
{
# Show down only
$r['_pos_down'] = $this->html->calendar_position_down($r['cal_id']);
}
}
$seen_count++;
$content .= $this->html->calendar_row($r);
}
$this->ipsclass->html .= $this->html->calendar_overview( $content );
$this->ipsclass->admin->page_title = "Calendar Manager";
$this->ipsclass->admin->page_detail = "This section will allow you to manage your calendars.";
$this->ipsclass->admin->output();
}
/*-------------------------------------------------------------------------*/
// Builds a cache of the current calendars
/*-------------------------------------------------------------------------*/
function calendars_rebuildcache()
{
$this->ipsclass->cache['calendars'] = array();
$this->ipsclass->DB->build_query( array( 'select' => '*', 'from' => 'cal_calendars', 'order' => 'cal_position ASC' ) );
$this->ipsclass->DB->exec_query();
while( $r = $this->ipsclass->DB->fetch_row() )
{
$this->ipsclass->cache['calendars'][ $r['cal_id'] ] = $r;
}
$this->ipsclass->update_cache( array( 'name' => 'calendars', 'deletefirst' => 1, 'donow' => 1, 'array' => 1 ) );
return TRUE;
}
}
?>