File Manager

Current Path : /webspace/www.promiel.be/html/modules/CGCalendar/
Upload File :
Current File : //webspace/www.promiel.be/html/modules/CGCalendar/action.admin_ajax_fetchevents.php

<?php
if( !isset($gCms) ) exit;
if( !$this->CheckPermission('Modify Calendar') &&
    !$this->CheckPermission('Add Calendar Events') &&
    !$this->CheckPermission('Edit My Calendar Events') ) exit;

$start = (int)cge_utils::get_param($_REQUEST,'start');
$end = (int)cge_utils::get_param($_REQUEST,'end');
$showchildren = (int)cge_utils::get_param($params,'showchildren',0);
$category = (int)cge_utils::get_param($params,'category',-1);
$keyword = trim(cge_utils::get_param($params,'keyword'));
$when = strtolower(trim(cge_utils::get_param($params,'when','any')));
// when can only be used when start/end are not specified.
$limit = cge_utils::get_param($params,'limit',10000); // 10000 is more than enough.

$st_ds = $db->DbTimeStamp($start);
$en_ds = $db->DbTimeStamp($end);

if( $start < 1 || $end < 1 ) {
    switch( $when ) {
    case 'past':
        $start = 1;
        $end = time();
        break;

    case 'future':
        $start = time();
        $end = 2147483648; // max unix time
        break;

    case 'any':
        break;
    }
}
if( $start > $end ) {
    $c = $start;
    $start = $end;
    $end = $c;
}

$where = array();
$parms = array();
// get all of the events
$query = 'SELECT E.* FROM '.$this->events_table_name.' E';
if( $category > 0 ) {
    $query .= ' LEFT JOIN '.$this->events_to_categories_table_name.' EC ON E.event_id = EC.event_id';
    $where[] = 'EC.category_id = ?';
    $parms[] = $category;
}
if( $start && $end ) {
    $where[] = '((E.event_date_start BETWEEN ? AND ?) OR (E.event_date_start BETWEEN ? AND ?))';
    $parms[] = trim($db->DbTimeStamp($start),"'");
    $parms[] = trim($db->DbTimeStamp($end),"'");
    $parms[] = trim($db->DbTimeStamp($start),"'");
    $parms[] = trim($db->DbTimeStamp($end),"'");
}
if( !$showchildren ) $where[] = 'COALESCE(E.event_parent_id,0) < 1';
if( $keyword ) {
    // use the full text index
    $where[] = 'MATCH(E.event_title,E.event_summary,E.event_details) AGAINST (?)';
    $parms[] = $keyword;
}

// put the query together
if( count($where) ) $query .= ' WHERE ' . implode(' AND ',$where);

$rs = $db->SelectLimit($query,$limit,0,$parms);
$list1 = array();
while( !$rs->EOF ) {
    $list1[] = $rs->fields;
    $rs->MoveNext();
}
unset($rs);

if( count($list1) ) {
    debug_to_log($list1);
    // get the categorie(s) for these events
    $idlist = cge_array::extract_field($list1,'event_id');
    $query = 'SELECT * FROM '.$this->events_to_categories_table_name.' WHERE event_id IN ('.implode(',',$idlist).') ORDER BY event_id,category_id';
    $tmp = $db->GetArray($query);
    $category_list = array();
    if( is_array($tmp) && count($tmp) ) {
        foreach( $tmp as $rec ) {
            $category_list[$rec['event_id']][] = $rec['category_id'];
        }
    }

    // now convert this into something compatible with fullcalendar
    $outlist = array();
    foreach( $list1 as $rec ) {
        try {
            $out = new stdClass;
            $out->id = $rec['event_id'];
            $out->title = $rec['event_title'];
            $out->summary = $rec['event_summary'];
            $out->canedit = 1;
            $out->candelete = 0;

            if( isset($category_list[$out->id]) && count($category_list[$out->id]) >= 1 ) {
                // this event is in only one category
                // we can set the color and textcolor
                $category = \CGCalendar\category::load($category_list[$out->id][0]);
                $out->color = $category['bgcolor'];
                $out->textColor = $category['fgcolor'];
            }

            if( $rec['event_parent_id'] > 1 ) {
                // is a child event
                $out->title .= " (".$this->Lang('child').")";
                $out->child = $rec['event_parent_id'];
                $out->candelete = 1;
            }
            else if( $rec['event_recur_period'] && $rec['event_recur_period'] != 'none' ) {
                // is a parent event of a recurring event
                $out->title .= " (".$this->Lang('repeats').')';
                $out->recurs = 1;
            }
            else {
                $out->candelete = 1;
            }
            $out->start = $db->UnixTimeStamp($rec['event_date_start']);
            $out->end = $db->UnixTimeStamp($rec['event_date_end']);
            $out->allDay = ($rec['event_all_day'])?true:false;

            $out->edit_url = $this->create_url($id,'admin_add_event',$returnid,array('event_id'=>$rec['event_id']));
            $out->edit_url = str_replace('&amp;','&',$out->edit_url);
            $outlist[] = $out;
        }
        catch( Exception $e ) {
            debug_to_log($e->GetMessage());
        }
    }

    $out = json_encode($outlist);
    echo $out;
}
exit;

?>

File Manager Version 1.0, Coded By Lucas
Email: hehe@yahoo.com