/** * 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(); }