private function doSave(&$msg) { if (!JEVHelper::isEventCreator()) { JError::raiseError(403, JText::_('ALERTNOTAUTH')); } // clean out the cache $cache =& JFactory::getCache('com_jevents'); $cache->clean(JEV_COM_COMPONENT); // JREQUEST_ALLOWHTML requires at least Joomla 1.5 svn9979 (past 1.5 stable) $array = JRequest::get('request', JREQUEST_ALLOWHTML); // Should we allow raw content through unfiltered $params = JComponentHelper::getParams(JEV_COM_COMPONENT); if ($params->get("allowraw", 0)) { $array['jevcontent'] = JRequest::getString("jevcontent", "", "POST", JREQUEST_ALLOWRAW); } if (!JEVHelper::canCreateEvent($array)) { JError::raiseError(403, JText::_('ALERTNOTAUTH')); } $rrule = SaveIcalEvent::generateRRule($array); // ensure authorised if (isset($array["evid"]) && $array["evid"] > 0) { $event = $this->queryModel->getEventById(intval($array["evid"]), 1, "icaldb"); if (!$event || !JEVHelper::canEditEvent($event)) { JError::raiseError(403, JText::_('ALERTNOTAUTH')); } } $clearout = false; // remove all exceptions since they are no longer needed if (isset($array["evid"]) && $array["evid"] > 0) { $clearout = true; } if ($event = SaveIcalEvent::save($array, $this->queryModel, $rrule)) { $row = new jIcalEventDB($event); if (JEVHelper::canPublishEvent($row)) { $msg = JText::_("Event_Saved", true); } else { $msg = JText::_("EVENT_SAVED_UNDER_REVIEW", true); } if ($clearout) { $db = JFactory::getDBO(); $query = "DELETE FROM #__jevents_exception WHERE eventid = " . $array["evid"]; $db->setQuery($query); $db->query(); // TODO clear out old exception details } } else { $msg = JText::_("Event Not Saved", true); } return $row; }
private function doSave(&$msg) { if (!JEVHelper::isEventCreator()) { throw new Exception(JText::_('ALERTNOTAUTH'), 403); return false; } // clean out the cache $cache = JFactory::getCache('com_jevents'); $cache->clean(JEV_COM_COMPONENT); // JREQUEST_ALLOWHTML requires at least Joomla 1.5 svn9979 (past 1.5 stable) $array = JRequest::get('request', JREQUEST_ALLOWHTML); // Should we allow raw content through unfiltered $params = JComponentHelper::getParams(JEV_COM_COMPONENT); if ($params->get("allowraw", 0)) { $array['jevcontent'] = JRequest::getString("jevcontent", "", "POST", JREQUEST_ALLOWRAW); $array['extra_info'] = JRequest::getString("extra_info", "", "POST", JREQUEST_ALLOWRAW); } // convert nl2br if there is no HTML if (strip_tags($array['jevcontent']) == $array['jevcontent']) { $array['jevcontent'] = nl2br($array['jevcontent']); } if (strip_tags($array['extra_info']) == $array['extra_info']) { $array['extra_info'] = nl2br($array['extra_info']); } // convert event data to objewct so we can test permissions $eventobj = new stdClass(); foreach ($array as $key => $val) { $newkey = "_" . $key; $eventobj->{$newkey} = $val; } $eventobj->_icsid = $eventobj->_ics_id; if (is_array($eventobj->_catid)) { $eventobj->_catid = current($eventobj->_catid); } if (!JEVHelper::canCreateEvent($eventobj)) { throw new Exception(JText::_('ALERTNOTAUTH'), 403); return false; } $rrule = SaveIcalEvent::generateRRule($array); // ensure authorised if (isset($array["evid"]) && $array["evid"] > 0) { $event = $this->queryModel->getEventById(intval($array["evid"]), 1, "icaldb"); if (!$event || !JEVHelper::canEditEvent($event)) { throw new Exception(JText::_('ALERTNOTAUTH'), 403); return false; } } $clearout = false; // remove all exceptions since they are no longer needed if (isset($array["evid"]) && $array["evid"] > 0 && JRequest::getInt("updaterepeats", 1)) { $clearout = true; } if ($event = SaveIcalEvent::save($array, $this->queryModel, $rrule)) { $row = new jIcalEventRepeat($event); if (JEVHelper::canPublishEvent($row)) { $msg = JText::_("Event_Saved", true); } else { $msg = JText::_("EVENT_SAVED_UNDER_REVIEW", true); } if ($clearout) { $db = JFactory::getDBO(); $query = "DELETE FROM #__jevents_exception WHERE eventid = " . $array["evid"]; $db->setQuery($query); $db->query(); // TODO clear out old exception details } } else { $msg = JText::_("Event Not Saved", true); $row = null; } return $row; }