Example #1
0
        $modx->error->addField('repeattype', $modx->lexicon('mxcalendars.err_event_req_repeattype'));
    } else {
        if (empty($scriptProperties['repeaton'])) {
            $modx->error->addField('repeaton', $modx->lexicon('mxcalendars.err_event_req_repeaton'));
        }
    }
    if (empty($scriptProperties['repeatfrequency'])) {
        $modx->error->addField('repeatfrequency', $modx->lexicon('mxcalendars.err_event_req_repeatfrequency'));
    }
    if (empty($scriptProperties['repeatenddate'])) {
        $modx->error->addField('repeatenddate', $modx->lexicon('mxcalendars.err_event_req_repeatenddate'));
    }
}
//-- Check if we have all the data to create the repeating field information
if ($scriptProperties['repeating'] == 1 && isset($scriptProperties['repeattype']) && isset($scriptProperties['repeatfrequency']) && !empty($scriptProperties['repeatenddate'])) {
    $repeatDates = _getRepeatDates($scriptProperties['repeattype'], $scriptProperties['repeatfrequency'], 365, $scriptProperties['startdate'], $scriptProperties['repeatenddate'], explode(',', substr($scriptProperties['repeaton'], 1)));
    $scriptProperties['repeatdates'] = $repeatDates;
    $scriptProperties['repeatenddate'] = end(explode(',', $repeatDates));
} else {
    //-- return $modx->error->failure("Repeat criteria not meet .<br>".$scriptProperties['repeattype']);
}
//-- Category check for required by submission and settings
if (empty($scriptProperties['categoryid'])) {
    $default_cat = $modx->getObject('mxCalendarCategories', array('isdefault' => 1));
    if ($default_cat->get('id')) {
        $scriptProperties['categoryid'] = $default_cat->get('id');
    } else {
        //-- Get the first published category
        $default_cat = $modx->getObject('mxCalendarCategories', array('active' => 1));
        if ($default_cat->get('id')) {
            $scriptProperties['categoryid'] = $default_cat->get('id');
Example #2
0
         $modx->error->addField('repeattype', $modx->lexicon('mxcalendars.err_event_req_repeattype'));
     } else {
         if (empty($_DATA['repeaton'])) {
             $modx->error->addField('repeaton', $modx->lexicon('mxcalendars.err_event_req_repeaton'));
         }
     }
     if (empty($_DATA['repeatfrequency'])) {
         $modx->error->addField('repeatfrequency', $modx->lexicon('mxcalendars.err_event_req_repeatfrequency'));
     }
     if (empty($_DATA['repeatenddate'])) {
         $modx->error->addField('repeatenddate', $modx->lexicon('mxcalendars.err_event_req_repeatenddate'));
     }
 }
 //-- Check if we have all the data to create the repeating field information
 if ($_DATA['repeating'] == 1 && isset($_DATA['repeattype']) && isset($_DATA['repeatfrequency']) && !empty($_DATA['repeatenddate'])) {
     $repeatDates = _getRepeatDates($_DATA['repeattype'], $_DATA['repeatfrequency'], 365, $_DATA['startdate'], $_DATA['repeatenddate'], explode(',', substr($_DATA['repeaton'], 1)));
     $_DATA['repeatdates'] = $repeatDates;
     $_DATA['repeatenddate'] = end(explode(',', $repeatDates));
 } else {
     //-- return $modx->error->failure("Repeat criteria not meet .<br>".$_DATA['repeattype']);
 }
 //-- Category check for required by submission and settings
 if (empty($_DATA['categoryid'])) {
     $default_cat = $modx->getObject('mxCalendarCategories', array('isdefault' => 1));
     if (is_object($default_cat)) {
         $_DATA['categoryid'] = $default_cat->get('id');
     } else {
         //-- Get the first published category
         $default_cat = $modx->getObject('mxCalendarCategories', array('active' => 1));
         if ($default_cat->getOne('id')) {
             $_DATA['categoryid'] = $default_cat->get('id');
Example #3
0
 public function beforeSet()
 {
     $thisid = $this->getProperty('id');
     $catArr = is_array($this->getProperty('cat')) ? $this->getProperty('cat') : explode(',', $this->getProperty('cat'));
     $rcats = array('catsid:NOT IN' => $catArr, 'AND:evid:=' => $thisid);
     $this->modx->removeCollection('GcCalendarCatsConnect', $rcats);
     foreach ($catArr as $cat) {
         $cats['evid'] = $thisid;
         $cats['catsid'] = $cat;
         $check = $this->modx->newQuery('GcCalendarCatsConnect');
         $check->where(array('catsid:=' => $cats['catsid'], 'AND:evid:=' => $cats['evid']));
         $chk_it = $this->modx->getCollection('GcCalendarCatsConnect', $check);
         if (empty($chk_it)) {
             $catsConnect = $this->modx->newObject('GcCalendarCatsConnect');
             $catsConnect->fromArray($cats);
             $catsConnect->save();
         }
     }
     $cidArr = is_array($this->getProperty('cid')) ? $this->getProperty('cid') : explode(',', $this->getProperty('cid'));
     $cancidArr = $this->getCals();
     $rcals = array('calid:NOT IN' => $cidArr, 'calid:IN' => $cancidArr, 'AND:evid:=' => $thisid);
     $this->modx->removeCollection('GcCalendarCalsConnect', $rcals);
     foreach ($cidArr as $cal) {
         $cals['evid'] = $thisid;
         $cals['calid'] = $cal;
         $check = $this->modx->newQuery('GcCalendarCalsConnect');
         $check->where(array('calid:=' => $cals['calid'], 'AND:evid:=' => $cals['evid']));
         $chk_it = $this->modx->getCollection('GcCalendarCalsConnect', $check);
         if (empty($chk_it)) {
             $calsConnect = $this->modx->newObject('GcCalendarCalsConnect');
             $calsConnect->fromArray($cals);
             $calsConnect->save();
         }
     }
     $og = $this->modx->getObject('GcCalendarEvents', $thisid);
     $ogstart = $og->get('start');
     $ogstarthis = date('g:i A', $ogstart);
     $ogstartymd = date('Y-m-d', $ogstart);
     $ogend = $og->get('end');
     $ogad = $og->get('ad');
     $ogendhis = date('g:i A', $ogend);
     $ogendymd = date('Y-m-d', $ogend);
     $ogad = $ogad == 1 ? 'true' : 'false';
     $startymd = $this->getProperty('startymd');
     $startymd = empty($startymd) ? $ogstartymd : $startymd;
     $starthis = $this->getProperty('starthis');
     $starthis = empty($starthis) ? $ogstarthis : $starthis;
     $endymd = $this->getProperty('endymd');
     $endymd = empty($endymd) ? $ogendhis : $endymd;
     $endhis = $this->getProperty('endhis');
     $endhis = empty($endhis) ? $ogendymd : $endhis;
     $ad = $this->getProperty('ad');
     $ad = empty($ad) ? $ogad : $ad;
     if (!empty($startymd) && !empty($starthis) && !empty($ad)) {
         if (strpos($startymd, 'T') !== false) {
             $start = substr($startymd, 0, strpos($startymd, 'T'));
         } else {
             $start = $startymd;
         }
         $start .= ' ';
         $start .= $ad == 'true' || $ad == '1' ? '12:00 AM' : $starthis;
         $this->setProperty('start', strtotime($start));
     }
     if (!empty($endymd) && !empty($endhis) && !empty($ad)) {
         if (strpos($endymd, 'T') !== false) {
             $end = substr($endymd, 0, strpos($endymd, 'T'));
         } else {
             $end = $endymd;
         }
         $end .= ' ';
         $end .= $ad == 'true' || $ad == '1' ? '12:00 AM' : $endhis;
         $this->setProperty('end', strtotime($end));
     }
     if (!empty($cidArr)) {
         $this->setProperty('cid', implode(',', $cidArr));
     }
     if (!empty($catArr)) {
         $this->setProperty('cat', implode(',', $catArr));
     }
     if (!empty($ad)) {
         $this->setProperty('ad', $this->getProperty('ad') == true ? 1 : 0);
     }
     $timediff = strtotime($end) - strtotime($start);
     //*repeating Events*//
     $ogrepeatenddate = $og->get('repeatenddate');
     $ogrepeaton = $og->get('repeaton');
     $ogrepeatonmo = $og->get('repeatonmo');
     $ogrepeatonmo = explode(',', $ogrepeatonmo);
     $ogrepeatonmoArr = array();
     $ogrepeatonmoArr['type'] = !empty($ogrepeatonmo) ? $ogrepeatonmo[0] : null;
     $ogrepeatonmoArr['week'] = count($ogrepeatonmo) > 1 ? $ogrepeatonmo[1] : null;
     $ogrepeating = $og->get('repeating');
     $ogrepeattype = $og->get('repeattype');
     $ogrepeatfrequency = $og->get('repeatfrequency');
     $repeatenddate = $this->getProperty('repeatenddate');
     $repeatenddate = empty($repeatenddate) ? date('Y-m-d', $ogrepeatenddate) : $repeatenddate;
     $repeatenddate = !empty($repeatenddate) ? strtotime($this->getProperty('repeatenddate') . ' ' . $endhis) : null;
     //$this->setProperty('repeatenddate',$repeatenddate);
     //-- Check if we have all the data to create the repeating field information
     $repeating = $this->getProperty('repeating');
     $repeating = empty($repeating) ? $ogrepeating : $repeating;
     $repeating = $repeating == 'true' || $repeating == 1 ? 1 : 0;
     $repeattype = $this->getProperty('repeattype');
     $repeattype = empty($repeattype) ? $ogrepeattype : $repeattype;
     $repeatfrequency = $this->getProperty('repeatfrequency');
     $repeatfrequency = empty($repeatfrequency) ? $ogrepeatfrequency : $repeatfrequency;
     $prtQ = $this->modx->newQuery('GcCalendarDates');
     $prtQ->where(array('evid:=' => $thisid, 'AND:pr:=' => 1));
     $prtime = $this->modx->getObject('GcCalendarDates', $prtQ);
     $prArr = array('start' => strtotime($start), 'end' => strtotime($end), 'evid' => $thisid, 'pr' => 1);
     if (empty($prtime)) {
         $prConnect = $this->modx->newObject('GcCalendarDates');
         $prConnect->fromArray($prArr);
         $prConnect->save();
     } else {
         $prtime->fromArray($prArr);
         $prtime->save();
     }
     $repeaton = $this->getProperty('repeaton');
     $repeaton = empty($repeaton) ? $ogrepeaton : $repeaton;
     $repeaton = $repeattype == 1 ? $repeaton : '';
     $repeatonmo = $this->getProperty('repeatonmo');
     $repeatonmo = empty($repeatonmo) ? $ogrepeatonmoArr : $repeatonmo;
     $repeatonmo = empty($repeatonmo) ? array("type" => "dom") : $repeatonmo;
     $repeatonmo = $repeattype == 2 ? $repeatonmo : '';
     $oldrep = array('ov:!=' => 1, 'AND:pr:!=' => 1, 'AND:evid:=' => $thisid);
     $this->modx->removeCollection('GcCalendarDates', $oldrep);
     if ($repeating == 1 && $repeattype !== null && $repeatfrequency !== null && $repeatenddate !== null && $start !== null) {
         $repeatDates = _getRepeatDates($repeattype, $repeatfrequency, 365, strtotime($start), $repeatenddate, explode(',', $this->getProperty('repeaton')), 'UNIX', json_encode($repeatonmo));
         //$this->setProperty('locationaddr',$repeatenddate.' '.$start);
         if (!empty($repeatDates)) {
             $repeatonmovals = array();
             if (!empty($repeatonmo)) {
                 foreach ($repeatonmo as $k => $repmo) {
                     $repeatonmovals[] = $repmo;
                 }
             }
             $this->setProperty('repeaton', $repeaton);
             $this->setProperty('repeatonmo', implode(',', $repeatonmovals));
             $this->setProperty('repeating', $repeating);
             $this->setProperty('repeatdates', null);
             $repeatDatesArr = explode(',', $repeatDates);
             foreach ($repeatDatesArr as $rd) {
                 $rend = $rd + $timediff;
                 if ($rd != $start && $rend != $end) {
                     $rArr = array('start' => $rd, 'end' => $rend, 'rep' => 1, 'evid' => $thisid);
                     $rdConnect = $this->modx->newObject('GcCalendarDates');
                     $rdConnect->fromArray($rArr);
                     $rdConnect->save();
                 }
             }
         } else {
             $this->setProperty('repeating', 0);
             $this->setProperty('repeaton', null);
             $this->setProperty('repeattype', null);
             $this->setProperty('repeatdates', null);
             $this->setProperty('repeatfrequency', null);
         }
     } else {
         $this->setProperty('repeating', 0);
         $this->setProperty('repeaton', null);
         $this->setProperty('repeattype', null);
         $this->setProperty('repeatdates', null);
         $this->setProperty('repeatfrequency', null);
     }
     $this->setProperty('repeatenddate', null);
     $fedate = $this->modx->newQuery('GcCalendarDates');
     $fedate->where(array('evid' => $thisid));
     $fedate->limit(1);
     $fedate->sortby('end', 'DESC');
     $feItt = $this->modx->getIterator('GcCalendarDates', $fedate);
     if (!empty($feItt)) {
         foreach ($feItt as $fI) {
             $this->setProperty('repeatenddate', $fI->get('end'));
         }
     }
     return parent::beforeSet();
 }
Example #4
0
 public function beforeSet()
 {
     $this->setProperty('cid', implode(',', $this->getProperty('cid')));
     $this->setProperty('cat', implode(',', $this->getProperty('cat')));
     $startymd = $this->getProperty('startymd');
     $starthis = $this->getProperty('starthis');
     $endymd = $this->getProperty('endymd');
     $endhis = $this->getProperty('endhis');
     $ad = $this->getProperty('ad');
     if (strpos($startymd, 'T') !== false) {
         $start = substr($startymd, 0, strpos($startymd, 'T'));
     } else {
         $start = $startymd;
     }
     $start .= ' ';
     $start .= $ad == 'true' || $ad == '1' ? '12:15 AM' : $starthis;
     $this->setProperty('start', strtotime($start));
     if (strpos($endymd, 'T') !== false) {
         $end = substr($endymd, 0, strpos($endymd, 'T'));
     } else {
         $end = $endymd;
     }
     $end .= ' ';
     $end .= $ad == 'true' || $ad == '1' ? '11:45 AM' : $endhis;
     $this->setProperty('end', strtotime($end));
     //account for browser checkbox behaviour
     if (!empty($ad)) {
         $this->setProperty('ad', $this->getProperty('ad') == true || $this->getProperty('ad') == 1 || $this->getProperty('ad') == 'on' || $this->getProperty('ad') == 'true' ? 1 : 0);
     }
     $repeatenddate = $this->getProperty('repeatenddate');
     $repeatenddate = !empty($repeatenddate) ? strtotime($this->getProperty('repeatenddate') . ' ' . $endhis) : null;
     //$this->setProperty('repeatenddate',$repeatenddate);
     //-- Check if we have all the data to create the repeating field information
     $repeating = $this->getProperty('repeating');
     $repeating = $repeating == 'true' || $repeating == 1 ? 1 : 0;
     $repeattype = $this->getProperty('repeattype');
     $repeatfrequency = $this->getProperty('repeatfrequency');
     $repeaton = $this->getProperty('repeaton');
     $repeaton = $repeattype == 1 ? $repeaton : '';
     if ($repeating == 1 && $repeattype !== null && $repeatfrequency !== null && $repeatenddate !== null && $start !== null) {
         $repeatDates = _getRepeatDates($repeattype, $repeatfrequency, 365, strtotime($start), $repeatenddate, explode(',', $this->getProperty('repeaton')));
         //$this->setProperty('locationaddr',$repeatenddate.' '.$start);
         if (!empty($repeatDates)) {
             $this->setProperty('repeaton', $repeaton);
             $this->setProperty('repeating', $repeating);
             $this->setProperty('repeatdates', $repeatDates);
             $this->setProperty('repeatenddate', end(explode(',', $repeatDates)));
         } else {
             $this->setProperty('repeating', 0);
             $this->setProperty('repeaton', null);
             $this->setProperty('repeattype', null);
             $this->setProperty('repeatdates', null);
             $this->setProperty('repeatfrequency', null);
             $this->setProperty('repeatenddate', null);
         }
     } else {
         $this->setProperty('repeating', 0);
         $this->setProperty('repeaton', null);
         $this->setProperty('repeattype', null);
         $this->setProperty('repeatdates', null);
         $this->setProperty('repeatfrequency', null);
         $this->setProperty('repeatenddate', null);
     }
     return parent::beforeSet();
 }
$mxcalendar->set('link', $hook->getProperty('fld13'));
// Set the new event to inactive so an Administrator can review and approve prior to listing
$mxcalendar->set('active', 0);
//-- Set a fixed (default) category for submissions [Main Calendar]
if ($hook->getProperty('fld18')) {
    $mxcalendar->set('categoryid', $hook->getProperty('fld18'));
}
//-- Set a static value of source to indicate it was user generated
$mxcalendar->set('source', 'user submission');
//-- Just some additional record house keeping for repeating
if ($hook->getProperty('fld15') !== null && $hook->getProperty('fld16') !== null) {
    $frequencymode = $hook->getProperty('fld15');
    // Daily, weekly, monthly, yearly
    $onDayOfWeek = array();
    $onDayOfWeek[] = strftime('%u', strtotime($hook->getProperty('fld2')));
    $repeatDates = _getRepeatDates($frequencymode, 1, 1, strtotime($hook->getProperty('fld2')), strtotime($hook->getProperty('fld16')), $onDayOfWeek);
    $mxcalendar->set('repeaton', ',' . implode(',', $onDayOfWeek) . ',');
    //** this one is required or the backend manager will fail to allow updating do to JS error
    $mxcalendar->set('repeating', 1);
    $mxcalendar->set('repeattype', $frequencymode);
    $mxcalendar->set('repeatdates', !empty($repeatDates) ? $repeatDates : '');
    $mxcalendar->set('repeatenddate', strtotime($hook->getProperty('fld16')));
    $mxcalendar->set('repeatfrequency', 1);
    // Add to log report if debug is set
    if ($hook->getProperty('debug') == '1') {
        $modx->log(modX::LOG_LEVEL_ERROR, '[mxFormBuilder] <h2>mxFormBuilder</h2> _getRpeatDate:<br />' . $repeatDates . ' by passing ' . print_r(array($frequencymode, 1, 1, $hook->getProperty('fld2'), $hook->getProperty('fld16'), $onDayOfWeek), true));
    }
} else {
    // No repeat
    $mxcalendar->set('repeaton', '');
    //** this one is required or the backend manager will fail to allow updating do to JS error