/** * Get events as JTableEvent objects * * @return array array of JTableEvent objects */ public function getEvents($start, $end, $all = false) { global $shareddb, $sharedtbl, $sharedlinktbl, $koid; //print_r($shareddb);return; $start = date("Y-m-d H:i:s", strtotime($start)); $end = date("Y-m-d H:i:s", strtotime($end)); $jinput = JFactory::getApplication()->input; $category = $jinput->get('category', 0, 'ARRAY'); $categorydepth = $jinput->get('categorydepth', 0, 'INTEGER'); $states = $jinput->get('state', array(1), 'ARRAY'); $past = $jinput->get('past', array(1), 'ARRAY'); if ($all) { $past = array(1, 2); } $db = JFactory::getDbo(); // If category is selected, include as many children categories as desired if ($category) { if ($categorydepth) { $allcategories = $category; foreach ($category as $catid) { // Get children elements of the category $query = $db->getQuery(true)->select($db->quoteName(array('id', 'parent_id')))->from($db->quoteName('#__categories'))->where($db->quoteName('extension') . ' = ' . $db->quote('com_content') . ' AND ' . $db->quoteName('published') . ' = 1'); $db->setQuery($query); $categories = $db->loadAssocList(); $allcategories = array_merge($allcategories, $this->getchildren($catid, 1, $categorydepth, $categories)); } $category = $allcategories; } } // Get events from database $events = array(); $query = $db->getQuery(true)->select($db->quoteName('article_id') . ', ' . $db->quoteName('koid'))->from($db->quoteName($shareddb) . '.' . $db->quoteName($sharedtbl))->where($db->quoteName('koid') . ' = ' . $db->quote($koid) . ' AND ' . $db->quoteName('end_time') . ' >= ' . $db->quote(date("Y-m-d H:i:s", strtotime($start))) . ' AND ' . $db->quoteName('start_time') . ' <= ' . $db->quote(date("Y-m-d H:i:s", strtotime($end)))); $db->setQuery($query); $result = $db->loadAssocList(); if (!$result) { return false; } foreach ($result as $event) { $eventObject = new JTableEvent($db); $eventObject->koid = $event['koid']; $eventObject->load($event['article_id']); $eventObject->article_id = $event['article_id']; // Filter out unwanted events if ($category && !in_array($eventObject->catid, $category)) { continue; } if ($states && !in_array($eventObject->state, $states)) { continue; } if (isset($_GET['date'])) { $date = explode("-", $_GET['date']); if (isset($date[0])) { if (strtotime(substr($eventObject->start_time, 0, 4)) > strtotime($date[0])) { continue; } if (strtotime(substr($eventObject->realEndTime(), 0, 4)) < strtotime($date[0])) { continue; } } if (isset($date[1])) { if (strtotime(substr($eventObject->start_time, 0, 7)) > strtotime($date[0] . '-' . $date[1])) { continue; } if (strtotime(substr($eventObject->realEndTime(), 0, 7)) < strtotime($date[0] . '-' . $date[1])) { continue; } } if (isset($date[2])) { if (strtotime(substr($eventObject->start_time, 0, 10)) > strtotime($_GET['date'])) { continue; } if (strtotime(substr($eventObject->realEndTime(), 0, 10)) < strtotime($_GET['date'])) { continue; } } } else { if (!in_array(1, $past)) { // Discard upcoming events if (strtotime(substr($eventObject->start_time, 0, 10)) > time()) { continue; } } if (!in_array(2, $past)) { // Discard past events if (strtotime(substr($eventObject->realEndTime(), 0, 10)) + 60 * 60 * 24 < time() && $eventObject->start_time != '0000-00-00 00:00:00') { continue; } } } $events[] = $eventObject; } // Use cmp-function to sort events by start time usort($events, array($this, "cmp")); if (!in_array(1, $past)) { $events = array_reverse($events); } return $events; }
/** * Store event details * * @return mixed false on failure, articleid on success. */ public function store() { global $admin, $koid; if (!isset($_POST['submit'])) { return false; } /////////////// // reCAPTCHA // /////////////// if (JFactory::getUser()->guest) { $privatekey = "6Lfj1PMSAAAAAJoag_aDaTNoZ-3mE4JYMwjfmAV5"; $resp = recaptcha_check_answer($privatekey, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]); if (!$resp->is_valid) { // What happens when the CAPTCHA was entered incorrect$ return "captcha-fail"; } } // End of reCAPTCHA // Create new event $db = JFactory::getDbo(); $event = new JTableEvent($db); // Check if event is being edited if ($admin && isset($_POST['articleid'])) { $event->koid = $koid; $event->load($_POST['articleid']); $event->article_id = $_POST['articleid']; } // Insert even information in the object $event->title = strip_tags($_POST['addEventFields']['eventName']); $event->catid = $_POST['addEventFields']['category']; // Create alias if creating new event if (!isset($_POST['articleid'])) { $event->alias = JFilterOutput::stringURLSafe($event->title); $table = JTable::getInstance('Content', 'JTable'); $i = 0; while ($table->load(array('alias' => $event->alias, 'catid' => $event->catid))) { $i++; $event->alias = JFilterOutput::stringURLSafe($event->title . $i); } } // Handle image if (isset($_FILES['addEventFields']) && !$_FILES['addEventFields']['error']['eventImg']) { if ($_FILES['addEventFields']['size']['eventImg'] < 8000000) { jimport('joomla.filesystem.file'); jimport('joomla.filesystem.folder'); $uploadPath = JPATH_SITE . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'stories' . DIRECTORY_SEPARATOR . 'opensubmit' . DIRECTORY_SEPARATOR . time() . '_' . preg_replace("/[^A-Za-z0-9\\._\\-]/", "_", $_FILES['addEventFields']['name']['eventImg']); if (!JFile::upload($_FILES['addEventFields']['tmp_name']['eventImg'], $uploadPath)) { unset($uploadPath); } $this->resizeImage($uploadPath); } } $desc = $_POST['addEventFields']['eventDesc']; $event->fulltext = ''; // Non-admins use simple textarea, no editor. Insert <p>-elements. if (!$admin) { $bodyparts = explode("\n", $desc); $event->introtext = strip_tags(array_shift($bodyparts)); if ($bodyparts) { foreach ($bodyparts as $bodypart) { if ($bodypart) { $event->fulltext .= '<p>' . strip_tags($bodypart) . '</p>'; } } } } elseif (strstr($desc, '<hr id="system-readmore" />')) { list($event->introtext, $event->fulltext) = explode('<hr id="system-readmore" />', $desc); } else { $event->introtext = $desc; } // If image is uploaded, add it to the introtext if (isset($uploadPath)) { $event->introtext = '<img src="' . strstr($uploadPath, 'images' . DIRECTORY_SEPARATOR . 'stories' . DIRECTORY_SEPARATOR) . '" alt="' . $_FILES['addEventFields']['name']['eventImg'] . '" style="margin:0.5em;float:left;">' . $event->introtext; } $event->start_time = strip_tags($_POST['addEventFields']['startday'] . ' ' . $_POST['addEventFields']['starthour'] . ':' . $_POST['addEventFields']['startminute'] . ':00'); if (!isset($_POST['addEventFields']['endday']) || $_POST['addEventFields']['endday'] == '') { $_POST['addEventFields']['endday'] = $_POST['addEventFields']['startday']; } $event->end_time = strip_tags($_POST['addEventFields']['endday'] . ' ' . $_POST['addEventFields']['endhour'] . ':' . $_POST['addEventFields']['endminute'] . ':00'); if (strtotime($event->end_time) < strtotime($event->start_time)) { $event->end_time = $event->start_time; } if (isset($_POST['addEventFields']['allday']) && $_POST['addEventFields']['allday']) { $event->whole_day = 1; } else { $event->whole_day = 0; } if (isset($_POST['addEventFields']['children']) && $_POST['addEventFields']['children']) { $event->children = 1; } else { $event->children = 0; } if (isset($_POST['addEventFields']['chargeable']) && $_POST['addEventFields']['chargeable']) { $event->chargeable = 1; } else { $event->chargeable = 0; } $event->publish_down = substr($event->realEndTime(), 0, 10) . ' 23:59:59'; // Location if (isset($_POST['no_location']) && $_POST['no_location']) { $event->location = 'null'; } elseif (!$_POST['latitude'] || !$_POST['longitude'] || !$_POST['zoom']) { $event->location = 'null'; } else { $event->location = strip_tags(str_replace('|*|', ' ', $_POST['latitude']) . '|*|' . str_replace('|*|', ' ', $_POST['longitude']) . '|*|' . str_replace('|*|', ' ', $_POST['zoom']) . '|*|' . str_replace('|*|', ' ', $_POST['locationdesc']) . '|*|' . str_replace('|*|', ' ', $_POST['locationname'])); } if (isset($_POST['addEventFields']['featured']) && $_POST['addEventFields']['featured']) { $event->featured = 1; } else { $event->featured = 0; } $event->url = strip_tags($_POST['addEventFields']['url']); // $event->tickets = $_POST['addEventFields']['tickets']; $event->contact = strip_tags($_POST['addEventFields']['contact']); $event->language = "*"; $event->access = 1; // store event $result = $event->store(); if (!$result) { return false; } $this->sendNotificationEmail(); return $event->getArticleId(); }