コード例 #1
0
ファイル: calendar.php プロジェクト: kameli-2/helkacal
 /**
  * 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;
 }
コード例 #2
0
ファイル: view.html.php プロジェクト: kameli-2/helkacal
 /**
  * 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();
 }