/**
  * Headlines constructor
  * 
  * @param string $pageContent Template content
  */
 function __construct($pageContent)
 {
     parent::__construct('.');
     parent::getSettings();
     $this->pageContent = $pageContent;
     \Cx\Core\Csrf\Controller\Csrf::add_placeholder($this->_objTpl);
 }
Ejemplo n.º 2
0
 /**
  * Create's new rss feed for the calendar module
  * 
  * @global array $_CONFIG
  * @global object $objDatabase
  */
 function creatFeed()
 {
     global $_CONFIG, $objDatabase;
     parent::getFrontendLanguages();
     parent::getSettings();
     $this->objEventManager->getEventlist();
     foreach ($this->arrFrontendLanguages as $langKey => $arrFrontendLanguage) {
         $objRSSWriter = new \RSSWriter();
         $objRSSWriter->characterEncoding = CONTREXX_CHARSET;
         $objRSSWriter->channelTitle = contrexx_raw2xml($this->arrSettings['rssFeedTitle']);
         $objRSSWriter->channelLink = contrexx_raw2xml($this->domainUrl . 'index.php?section=' . $this->moduleName);
         $objRSSWriter->channelDescription = contrexx_raw2xml($this->arrSettings['rssFeedDescription']);
         $objRSSWriter->channelLanguage = contrexx_raw2xml($arrFrontendLanguage['lang']);
         $objRSSWriter->channelCopyright = contrexx_raw2xml('Copyright ' . date('Y') . ', ' . $this->domainUrl);
         if (!empty($this->arrSettings['rssFeedImage'])) {
             $objRSSWriter->channelImageUrl = $this->arrSettings['rssFeedImage'];
             $objRSSWriter->channelImageTitle = $objRSSWriter->channelTitle;
             $objRSSWriter->channelImageLink = $objRSSWriter->channelLink;
         }
         $objRSSWriter->channelWebMaster = $_CONFIG['coreAdminEmail'];
         $objRSSWriter->channelLastBuildDate = date('r', mktime());
         foreach ($this->objEventManager->eventList as $eventKey => $objEvent) {
             $objFWUser = \FWUser::getFWUserObject();
             $showIn = explode(',', $objEvent->showIn);
             if (in_array($arrFrontendLanguage['id'], $showIn)) {
                 $itemTitle = contrexx_raw2xml(html_entity_decode($objEvent->arrData['title'][$arrFrontendLanguage['id']], ENT_QUOTES, CONTREXX_CHARSET));
                 $itemLink = $objEvent->type == 0 ? $this->domainUrl . $this->objEventManager->_getDetailLink($objEvent) : $objEvent->arrData['redirect'][$arrFrontendLanguage['id']];
                 $itemLink = contrexx_raw2xml(html_entity_decode($itemLink));
                 $itemDescription = contrexx_raw2xml($objEvent->arrData['description'][$arrFrontendLanguage['id']]);
                 if ($objUser = $objFWUser->objUser->getUser(intval($objEvent->author))) {
                     $itemAuthor = $objUser->getEmail();
                 } else {
                     $itemAuthor = "unknown";
                 }
                 $itemAuthor = contrexx_raw2xml($itemAuthor);
                 $itemCategory = array();
                 $itemComments = null;
                 $itemEnclosure = array();
                 $itemGuid = array();
                 $itemPubDate = contrexx_raw2xml($objEvent->startDate);
                 $itemSource = array();
                 $objRSSWriter->addItem($itemTitle, $itemLink, $itemDescription, $itemAuthor, $itemCategory, $itemComments, $itemEnclosure, $itemGuid, $itemPubDate, $itemSource);
             }
         }
         $objRSSWriter->feedType = 'xml';
         $objRSSWriter->xmlDocumentPath = \Env::get('cx')->getWebsiteFeedPath() . '/calendar_all_' . $arrFrontendLanguage['lang'] . '.' . $objRSSWriter->feedType;
         $objRSSWriter->write();
     }
 }
Ejemplo n.º 3
0
 /**
  * Save the event to the database
  *      
  * @param array $data
  * 
  * @return boolean true if saved successfully, false otherwise
  */
 function save($data)
 {
     global $objDatabase, $_LANGID, $_CONFIG, $objInit;
     parent::getSettings();
     if (empty($data['startDate']) || empty($data['endDate']) || empty($data['category']) || $data['seriesStatus'] == 1 && $data['seriesType'] == 2 && empty($data['seriesWeeklyDays'])) {
         return false;
     }
     foreach ($_POST['showIn'] as $key => $langId) {
         if (empty($_POST['title'][$langId]) && empty($_POST['title'][$_LANGID])) {
             return false;
         }
     }
     list($startDate, $strStartTime) = explode(' ', $data['startDate']);
     list($startHour, $startMin) = explode(':', $strStartTime);
     list($endDate, $strEndTime) = explode(' ', $data['endDate']);
     list($endHour, $endMin) = explode(':', $strEndTime);
     if ($data['all_day']) {
         list($startHour, $startMin) = array(0, 0);
         list($endHour, $endMin) = array(23, 59);
     }
     //event data
     $id = isset($data['copy']) && !empty($data['copy']) ? 0 : (isset($data['id']) ? intval($data['id']) : 0);
     $type = isset($data['type']) ? intval($data['type']) : 0;
     $startDate = date("Y-m-d H:i:s", parent::getDateTimestamp($startDate, intval($startHour), intval($startMin)));
     $endDate = date("Y-m-d H:i:s", parent::getDateTimestamp($endDate, intval($endHour), intval($endMin)));
     $google = isset($data['map'][$_LANGID]) ? intval($data['map'][$_LANGID]) : 0;
     $allDay = isset($data['all_day']) ? 1 : 0;
     $convertBBCode = $objInit->mode == 'frontend' && empty($id);
     $useCustomDateDisplay = isset($data['showDateSettings']) ? 1 : 0;
     $showStartDateList = isset($data['showStartDateList']) ? $data['showStartDateList'] : 0;
     $showEndDateList = isset($data['showEndDateList']) ? $data['showEndDateList'] : 0;
     if ($objInit->mode == 'backend') {
         // reset time values if "no time" is selected
         if ($data['showTimeTypeList'] == 0) {
             $showStartTimeList = 0;
             $showEndTimeList = 0;
         } else {
             $showStartTimeList = isset($data['showStartTimeList']) ? $data['showStartTimeList'] : '';
             $showEndTimeList = isset($data['showEndTimeList']) ? $data['showEndTimeList'] : '';
         }
         $showTimeTypeList = isset($data['showTimeTypeList']) ? $data['showTimeTypeList'] : '';
         $showStartDateDetail = isset($data['showStartDateDetail']) ? $data['showStartDateDetail'] : '';
         $showEndDateDetail = isset($data['showEndDateDetail']) ? $data['showEndDateDetail'] : '';
         // reset time values if "no time" is selected
         if ($data['showTimeTypeDetail'] == 0) {
             $showStartTimeDetail = 0;
             $showEndTimeDetail = 0;
         } else {
             $showStartTimeDetail = isset($data['showStartTimeDetail']) ? $data['showStartTimeDetail'] : '';
             $showEndTimeDetail = isset($data['showEndTimeDetail']) ? $data['showEndTimeDetail'] : '';
         }
         $showTimeTypeDetail = isset($data['showTimeTypeDetail']) ? $data['showTimeTypeDetail'] : '';
     } else {
         $showStartDateList = $this->arrSettings['showStartDateList'] == 1 ? 1 : 0;
         $showEndDateList = $this->arrSettings['showEndDateList'] == 1 ? 1 : 0;
         $showStartTimeList = $this->arrSettings['showStartTimeList'] == 1 ? 1 : 0;
         $showEndTimeList = $this->arrSettings['showEndTimeList'] == 1 ? 1 : 0;
         // reset time values if "no time" is selected
         if ($showStartTimeList == 1 || $showEndTimeList == 1) {
             $showTimeTypeList = 1;
         } else {
             $showStartTimeList = 0;
             $showEndTimeList = 0;
             $showTimeTypeList = 0;
         }
         $showStartDateDetail = $this->arrSettings['showStartDateDetail'] == 1 ? 1 : 0;
         $showEndDateDetail = $this->arrSettings['showEndDateDetail'] == 1 ? 1 : 0;
         $showStartTimeDetail = $this->arrSettings['showStartTimeDetail'] == 1 ? 1 : 0;
         $showEndTimeDetail = $this->arrSettings['showEndTimeDetail'] == 1 ? 1 : 0;
         // reset time values if "no time" is selected
         if ($showStartTimeDetail == 1 || $showEndTimeDetail == 1) {
             $showTimeTypeDetail = 1;
         } else {
             $showStartTimeDetail = 0;
             $showEndTimeDetail = 0;
             $showTimeTypeDetail = 0;
         }
     }
     $access = isset($data['access']) ? intval($data['access']) : 0;
     $priority = isset($data['priority']) ? intval($data['priority']) : 0;
     $placeMediadir = isset($data['placeMediadir']) ? intval($data['placeMediadir']) : 0;
     $hostMediadir = isset($data['hostMediadir']) ? intval($data['hostMediadir']) : 0;
     $price = isset($data['price']) ? contrexx_addslashes(contrexx_strip_tags($data['price'])) : 0;
     $link = isset($data['link']) ? contrexx_addslashes(contrexx_strip_tags($data['link'])) : '';
     $pic = isset($data['picture']) ? contrexx_addslashes(contrexx_strip_tags($data['picture'])) : '';
     $attach = isset($data['attachment']) ? contrexx_addslashes(contrexx_strip_tags($data['attachment'])) : '';
     $catId = isset($data['category']) ? intval($data['category']) : '';
     $showIn = isset($data['showIn']) ? contrexx_addslashes(contrexx_strip_tags(join(",", $data['showIn']))) : '';
     $invited_groups = isset($data['selectedGroups']) ? join(',', $data['selectedGroups']) : '';
     $invited_mails = isset($data['invitedMails']) ? contrexx_addslashes(contrexx_strip_tags($data['invitedMails'])) : '';
     $send_invitation = isset($data['sendInvitation']) ? intval($data['sendInvitation']) : 0;
     $invitationTemplate = isset($data['invitationEmailTemplate']) ? contrexx_input2db($data['invitationEmailTemplate']) : 0;
     $registration = isset($data['registration']) ? intval($data['registration']) : 0;
     $registration_form = isset($data['registrationForm']) ? intval($data['registrationForm']) : 0;
     $registration_num = isset($data['numSubscriber']) ? intval($data['numSubscriber']) : 0;
     $registration_notification = isset($data['notificationTo']) ? contrexx_addslashes(contrexx_strip_tags($data['notificationTo'])) : '';
     $email_template = isset($data['emailTemplate']) ? contrexx_input2db($data['emailTemplate']) : 0;
     $ticket_sales = isset($data['ticketSales']) ? intval($data['ticketSales']) : 0;
     $num_seating = isset($data['numSeating']) ? json_encode(explode(',', $data['numSeating'])) : '';
     $related_hosts = isset($data['selectedHosts']) ? $data['selectedHosts'] : '';
     $locationType = isset($data['eventLocationType']) ? (int) $data['eventLocationType'] : $this->arrSettings['placeData'];
     $hostType = isset($data['eventHostType']) ? (int) $data['eventHostType'] : $this->arrSettings['placeDataHost'];
     $place = isset($data['place']) ? contrexx_input2db(contrexx_strip_tags($data['place'])) : '';
     $street = isset($data['street']) ? contrexx_input2db(contrexx_strip_tags($data['street'])) : '';
     $zip = isset($data['zip']) ? contrexx_input2db(contrexx_strip_tags($data['zip'])) : '';
     $city = isset($data['city']) ? contrexx_input2db(contrexx_strip_tags($data['city'])) : '';
     $country = isset($data['country']) ? contrexx_input2db(contrexx_strip_tags($data['country'])) : '';
     $placeLink = isset($data['placeLink']) ? contrexx_input2db($data['placeLink']) : '';
     $placeMap = isset($data['placeMap']) ? contrexx_input2db($data['placeMap']) : '';
     $update_invitation_sent = $send_invitation == 1;
     if (!empty($placeLink)) {
         if (!preg_match('%^(?:ftp|http|https):\\/\\/%', $placeLink)) {
             $placeLink = "http://" . $placeLink;
         }
     }
     if ($objInit->mode == 'frontend') {
         $unique_id = intval($_REQUEST[self::MAP_FIELD_KEY]);
         if (!empty($unique_id)) {
             $picture = $this->_handleUpload('mapUpload', $unique_id);
             if (!empty($picture)) {
                 $placeMap = $picture;
             }
         }
     }
     $orgName = isset($data['organizerName']) ? contrexx_input2db($data['organizerName']) : '';
     $orgStreet = isset($data['organizerStreet']) ? contrexx_input2db($data['organizerStreet']) : '';
     $orgZip = isset($data['organizerZip']) ? contrexx_input2db($data['organizerZip']) : '';
     $orgCity = isset($data['organizerCity']) ? contrexx_input2db($data['organizerCity']) : '';
     $orgCountry = isset($data['organizerCountry']) ? contrexx_input2db($data['organizerCountry']) : '';
     $orgLink = isset($data['organizerLink']) ? contrexx_input2db($data['organizerLink']) : '';
     $orgEmail = isset($data['organizerEmail']) ? contrexx_input2db($data['organizerEmail']) : '';
     if (!empty($orgLink)) {
         if (!preg_match('%^(?:ftp|http|https):\\/\\/%', $orgLink)) {
             $orgLink = "http://" . $orgLink;
         }
     }
     // create thumb if not exists
     if (!file_exists(\Env::get('cx')->getWebsitePath() . "{$placeMap}.thumb")) {
         $objImage = new \ImageManager();
         $objImage->_createThumb(dirname(\Env::get('cx')->getWebsitePath() . "{$placeMap}") . "/", '', basename($placeMap), 180);
     }
     //frontend picture upload & thumbnail creation
     if ($objInit->mode == 'frontend') {
         $unique_id = intval($_REQUEST[self::PICTURE_FIELD_KEY]);
         $attachmentUniqueId = intval($_REQUEST[self::ATTACHMENT_FIELD_KEY]);
         if (!empty($unique_id)) {
             $picture = $this->_handleUpload('pictureUpload', $unique_id);
             if (!empty($picture)) {
                 //delete thumb
                 if (file_exists("{$this->uploadImgPath}{$pic}.thumb")) {
                     \Cx\Lib\FileSystem\FileSystem::delete_file($this->uploadImgPath . "/.{$pic}.thumb");
                 }
                 //delete image
                 if (file_exists("{$this->uploadImgPath}{$pic}")) {
                     \Cx\Lib\FileSystem\FileSystem::delete_file($this->uploadImgPath . "/.{$pic}");
                 }
                 $pic = $picture;
             }
         }
         if (!empty($attachmentUniqueId)) {
             $attachment = $this->_handleUpload('attachmentUpload', $attachmentUniqueId);
             if ($attachment) {
                 //delete file
                 if (file_exists("{$this->uploadImgPath}{$attach}")) {
                     \Cx\Lib\FileSystem\FileSystem::delete_file($this->uploadImgPath . "/.{$attach}");
                 }
                 $attach = $attachment;
             }
         }
     } else {
         // create thumb if not exists
         if (!file_exists(\Env::get('cx')->getWebsitePath() . "{$pic}.thumb")) {
             $objImage = new \ImageManager();
             $objImage->_createThumb(dirname(\Env::get('cx')->getWebsitePath() . "{$pic}") . "/", '', basename($pic), 180);
         }
     }
     $seriesStatus = isset($data['seriesStatus']) ? intval($data['seriesStatus']) : 0;
     //series pattern
     $seriesStatus = isset($data['seriesStatus']) ? intval($data['seriesStatus']) : 0;
     $seriesType = isset($data['seriesType']) ? intval($data['seriesType']) : 0;
     $seriesPatternCount = 0;
     $seriesPatternWeekday = 0;
     $seriesPatternDay = 0;
     $seriesPatternWeek = 0;
     $seriesPatternMonth = 0;
     $seriesPatternType = 0;
     $seriesPatternDouranceType = 0;
     $seriesPatternEnd = 0;
     $seriesExeptions = '';
     $seriesPatternEndDate = 0;
     if ($seriesStatus == 1) {
         if (!empty($data['seriesExeptions'])) {
             $exeptions = array();
             foreach ($data['seriesExeptions'] as $key => $exeptionDate) {
                 $exeptions[] = date("Y-m-d", parent::getDateTimestamp($exeptionDate, 23, 59));
             }
             sort($exeptions);
             $seriesExeptions = join(",", $exeptions);
         }
         switch ($seriesType) {
             case 1:
                 if ($seriesStatus == 1) {
                     $seriesPatternType = isset($data['seriesDaily']) ? intval($data['seriesDaily']) : 0;
                     if ($seriesPatternType == 1) {
                         $seriesPatternWeekday = 0;
                         $seriesPatternDay = isset($data['seriesDailyDays']) ? intval($data['seriesDailyDays']) : 0;
                     } else {
                         $seriesPatternWeekday = "1111100";
                         $seriesPatternDay = 0;
                     }
                     $seriesPatternWeek = 0;
                     $seriesPatternMonth = 0;
                     $seriesPatternCount = 0;
                 }
                 break;
             case 2:
                 if ($seriesStatus == 1) {
                     $seriesPatternWeek = isset($data['seriesWeeklyWeeks']) ? intval($data['seriesWeeklyWeeks']) : 0;
                     for ($i = 1; $i <= 7; $i++) {
                         if (isset($data['seriesWeeklyDays'][$i])) {
                             $weekdayPattern .= "1";
                         } else {
                             $weekdayPattern .= "0";
                         }
                     }
                     $seriesPatternWeekday = $weekdayPattern;
                     $seriesPatternCount = 0;
                     $seriesPatternDay = 0;
                     $seriesPatternMonth = 0;
                     $seriesPatternType = 0;
                 }
                 break;
             case 3:
                 if ($seriesStatus == 1) {
                     $seriesPatternType = isset($data['seriesMonthly']) ? intval($data['seriesMonthly']) : 0;
                     if ($seriesPatternType == 1) {
                         $seriesPatternMonth = isset($data['seriesMonthlyMonth_1']) ? intval($data['seriesMonthlyMonth_1']) : 0;
                         $seriesPatternDay = isset($data['seriesMonthlyDay']) ? intval($data['seriesMonthlyDay']) : 0;
                         $seriesPatternWeekday = 0;
                     } else {
                         $seriesPatternCount = isset($data['seriesMonthlyDayCount']) ? intval($data['seriesMonthlyDayCount']) : 0;
                         $seriesPatternMonth = isset($data['seriesMonthlyMonth_2']) ? intval($data['seriesMonthlyMonth_2']) : 0;
                         if ($seriesPatternMonth < 1) {
                             // the increment must be at least once a month, otherwise we will end up in a endless loop in the presence
                             $seriesPatternMonth = 1;
                         }
                         $seriesPatternWeekday = isset($data['seriesMonthlyWeekday']) ? $data['seriesMonthlyWeekday'] : '';
                         $seriesPatternDay = 0;
                     }
                     $seriesPatternWeek = 0;
                 }
                 break;
         }
         $seriesPatternDouranceType = isset($data['seriesDouranceType']) ? intval($data['seriesDouranceType']) : 0;
         switch ($seriesPatternDouranceType) {
             case 1:
                 $seriesPatternEnd = 0;
                 break;
             case 2:
                 $seriesPatternEnd = isset($data['seriesDouranceEvents']) ? intval($data['seriesDouranceEvents']) : 0;
                 break;
             case 3:
                 $seriesPatternEndDate = date("Y-m-d H:i:s", parent::getDateTimestamp($data['seriesDouranceDate'], 23, 59));
                 break;
         }
     }
     $formData = array('type' => $type, 'startdate' => $startDate, 'enddate' => $endDate, 'use_custom_date_display' => $useCustomDateDisplay, 'showStartDateList' => $showStartDateList, 'showEndDateList' => $showEndDateList, 'showStartTimeList' => $showStartTimeList, 'showEndTimeList' => $showEndTimeList, 'showTimeTypeList' => $showTimeTypeList, 'showStartDateDetail' => $showStartDateDetail, 'showEndDateDetail' => $showEndDateDetail, 'showStartTimeDetail' => $showStartTimeDetail, 'showEndTimeDetail' => $showEndTimeDetail, 'showTimeTypeDetail' => $showTimeTypeDetail, 'google' => $google, 'access' => $access, 'priority' => $priority, 'price' => $price, 'link' => $link, 'pic' => $pic, 'catid' => $catId, 'attach' => $attach, 'place_mediadir_id' => $placeMediadir, 'host_mediadir_id' => $hostMediadir, 'show_in' => $showIn, 'invited_groups' => $invited_groups, 'invited_mails' => $invited_mails, 'invitation_email_template' => json_encode($invitationTemplate), 'registration' => $registration, 'registration_form' => $registration_form, 'registration_num' => $registration_num, 'registration_notification' => $registration_notification, 'email_template' => json_encode($email_template), 'ticket_sales' => $ticket_sales, 'num_seating' => $num_seating, 'series_status' => $seriesStatus, 'series_type' => $seriesType, 'series_pattern_count' => $seriesPatternCount, 'series_pattern_weekday' => $seriesPatternWeekday, 'series_pattern_day' => $seriesPatternDay, 'series_pattern_week' => $seriesPatternWeek, 'series_pattern_month' => $seriesPatternMonth, 'series_pattern_type' => $seriesPatternType, 'series_pattern_dourance_type' => $seriesPatternDouranceType, 'series_pattern_end' => $seriesPatternEnd, 'series_pattern_end_date' => $seriesPatternEndDate, 'series_pattern_exceptions' => $seriesExeptions, 'all_day' => $allDay, 'location_type' => $locationType, 'host_type' => $hostType, 'place' => $place, 'place_id' => 0, 'place_street' => $street, 'place_zip' => $zip, 'place_city' => $city, 'place_country' => $country, 'place_link' => $placeLink, 'place_map' => $placeMap, 'org_name' => $orgName, 'org_street' => $orgStreet, 'org_zip' => $orgZip, 'org_city' => $orgCity, 'org_country' => $orgCountry, 'org_link' => $orgLink, 'org_email' => $orgEmail, 'invitation_sent' => $update_invitation_sent ? 1 : 0);
     if ($id != 0) {
         $query = \SQL::update("module_{$this->moduleTablePrefix}_event", $formData) . " WHERE id = '{$id}'";
         $objResult = $objDatabase->Execute($query);
         if ($objResult !== false) {
             $this->id = $id;
             $query = "DELETE FROM " . DBPREFIX . "module_" . $this->moduleTablePrefix . "_event_field\n                                WHERE event_id = '" . $id . "'";
             $objResult = $objDatabase->Execute($query);
             $query = "DELETE FROM " . DBPREFIX . "module_" . $this->moduleTablePrefix . "_rel_event_host\n                                WHERE event_id = '" . $id . "'";
             $objResult = $objDatabase->Execute($query);
         } else {
             return false;
         }
     } else {
         $objFWUser = \FWUser::getFWUserObject();
         $objUser = $objFWUser->objUser;
         if ($objInit->mode == 'frontend') {
             $status = 1;
             $confirmed = $this->arrSettings['confirmFrontendEvents'] == 1 ? 0 : 1;
             $author = $objUser->login() ? intval($objUser->getId()) : 0;
         } else {
             $status = 0;
             $confirmed = 1;
             $author = intval($objUser->getId());
         }
         $formData['status'] = $status;
         $formData['confirmed'] = $confirmed;
         $formData['author'] = $author;
         $query = \SQL::insert("module_{$this->moduleTablePrefix}_event", $formData);
         $objResult = $objDatabase->Execute($query);
         if ($objResult !== false) {
             $id = intval($objDatabase->Insert_ID());
             $this->id = $id;
         } else {
             return false;
         }
     }
     if ($id != 0) {
         foreach ($data['showIn'] as $key => $langId) {
             $title = contrexx_addslashes(contrexx_strip_tags($data['title'][$langId]));
             $description = contrexx_addslashes($data['description'][$langId]);
             if ($convertBBCode) {
                 $description = \Cx\Core\Wysiwyg\Wysiwyg::prepareBBCodeForDb($data['description'][$langId], true);
             }
             $redirect = contrexx_addslashes($data['calendar-redirect'][$langId]);
             if ($type == 0) {
                 $redirect = '';
             } else {
                 $description = '';
             }
             $query = "INSERT INTO " . DBPREFIX . "module_" . $this->moduleTablePrefix . "_event_field\n                            (`event_id`,`lang_id`,`title`, `description`,`redirect`)\n                          VALUES\n                            ('" . intval($id) . "','" . intval($langId) . "','" . $title . "','" . $description . "','" . $redirect . "')";
             $objResult = $objDatabase->Execute($query);
             if ($objResult === false) {
                 return false;
             }
         }
         if (!empty($related_hosts)) {
             foreach ($related_hosts as $key => $hostId) {
                 $query = "INSERT INTO " . DBPREFIX . "module_" . $this->moduleTablePrefix . "_rel_event_host\n                                      (`host_id`,`event_id`) \n                               VALUES ('" . intval($hostId) . "','" . intval($id) . "')";
                 $objResult = $objDatabase->Execute($query);
             }
         }
     }
     if ($send_invitation == 1) {
         $objMailManager = new \Cx\Modules\Calendar\Controller\CalendarMailManager();
         foreach ($invitationTemplate as $templateId) {
             $objMailManager->sendMail(intval($id), \Cx\Modules\Calendar\Controller\CalendarMailManager::MAIL_INVITATION, null, $templateId);
         }
     }
     return true;
 }
 /**
  * _setNextSeriesElement
  * 
  * @param object $objEvent Event object
  * 
  * @return null
  */
 function _setNextSeriesElement($objEvent)
 {
     $objCloneEvent = clone $objEvent;
     parent::getSettings();
     switch ($objCloneEvent->seriesData['seriesType']) {
         case 1:
             //daily
             if ($objCloneEvent->seriesData['seriesPatternType'] == 1) {
                 $hour = date("H", $objEvent->startDate);
                 $minutes = date("i", $objEvent->startDate);
                 $seconds = date("s", $objEvent->startDate);
                 $day = date("d", $objEvent->startDate) + $objEvent->seriesData['seriesPatternDay'];
                 $month = date("m", $objEvent->startDate);
                 $year = date("Y", $objEvent->startDate);
                 $objCloneEvent->startDate = mktime($hour, $minutes, $seconds, $month, $day, $year);
                 $compareDate = mktime(0, 0, 0, $month, $day, $year);
                 $hour = date("H", $objEvent->endDate);
                 $minutes = date("i", $objEvent->endDate);
                 $seconds = date("s", $objEvent->endDate);
                 $day = date("d", $objEvent->endDate) + $objEvent->seriesData['seriesPatternDay'];
                 $month = date("m", $objEvent->endDate);
                 $year = date("Y", $objEvent->endDate);
                 $objCloneEvent->endDate = mktime($hour, $minutes, $seconds, $month, $day, $year);
             } else {
                 $oldWeekday = date("w", $objEvent->startDate);
                 if ($oldWeekday == 5) {
                     $addDays = 3;
                 } else {
                     $addDays = 1;
                 }
                 $hour = date("H", $objEvent->startDate);
                 $minutes = date("i", $objEvent->startDate);
                 $seconds = date("s", $objEvent->startDate);
                 $day = date("d", $objEvent->startDate) + $addDays;
                 $month = date("m", $objEvent->startDate);
                 $year = date("Y", $objEvent->startDate);
                 $objCloneEvent->startDate = mktime($hour, $minutes, $seconds, $month, $day, $year);
                 $compareDate = mktime(0, 0, 0, $month, $day, $year);
                 $hour = date("H", $objEvent->endDate);
                 $minutes = date("i", $objEvent->endDate);
                 $seconds = date("s", $objEvent->endDate);
                 $day = date("d", $objEvent->endDate) + $addDays;
                 $month = date("m", $objEvent->endDate);
                 $year = date("Y", $objEvent->endDate);
                 $objCloneEvent->endDate = mktime($hour, $minutes, $seconds, $month, $day, $year);
             }
             break;
         case 2:
             //weekly
             $oldWeekday = date("w", $objEvent->startDate);
             $weekdayPattern = $objEvent->seriesData['seriesPatternWeekday'];
             $match = false;
             $i = 0;
             $oldKW = date("W", $objEvent->startDate);
             while (!$match) {
                 $i++;
                 if (substr($weekdayPattern, $oldWeekday, 1) == 1) {
                     $addDays = $i;
                     $match = true;
                 } else {
                     $oldWeekday++;
                 }
                 if ($oldWeekday > 6) {
                     $oldWeekday = 0;
                 }
                 if ($i > 8) {
                     break;
                 }
             }
             $hour = date("H", $objEvent->startDate);
             $minutes = date("i", $objEvent->startDate);
             $seconds = date("s", $objEvent->startDate);
             $day = date("d", $objEvent->startDate) + $addDays;
             $month = date("m", $objEvent->startDate);
             $year = date("Y", $objEvent->startDate);
             $newKW = date("W", mktime($hour, $minutes, $seconds, $month, $day, $year));
             $addWeeks = 0;
             if ($objEvent->seriesData['seriesPatternWeek'] > 1) {
                 if ($oldKW < $newKW) {
                     $addWeeks = ($objEvent->seriesData['seriesPatternWeek'] - 1) * 7;
                 }
             }
             $objCloneEvent->startDate = mktime($hour, $minutes, $seconds, $month, $day + $addWeeks, $year);
             $compareDate = mktime(0, 0, 0, $month, $day + $addWeeks, $year);
             $hour = date("H", $objEvent->endDate);
             $minutes = date("i", $objEvent->endDate);
             $seconds = date("s", $objEvent->endDate);
             $day = date("d", $objEvent->endDate) + $addDays + $addWeeks;
             $month = date("m", $objEvent->endDate);
             $year = date("Y", $objEvent->endDate);
             $objCloneEvent->endDate = mktime($hour, $minutes, $seconds, $month, $day, $year);
             break;
         case 3:
             //monthly
             if ($objCloneEvent->seriesData['seriesPatternType'] == 1) {
                 $monthDays = 0;
                 $hour = date("H", $objEvent->startDate);
                 $minutes = date("i", $objEvent->startDate);
                 $seconds = date("s", $objEvent->startDate);
                 $day = date("d", $objEvent->startDate);
                 $month = date("m", $objEvent->startDate);
                 $year = date("Y", $objEvent->startDate);
                 $monthDays = date("t", $objEvent->startDate);
                 $addDays = $monthDays - $day + $objEvent->seriesData['seriesPatternDay'];
                 $addMonths = $objEvent->seriesData['seriesPatternMonth'];
                 if ($addMonths > 1) {
                     for ($i = 1; $i < $addMonths; $i++) {
                         $nextMonthDays = date("t", mktime($hour, $minutes, $seconds, $month + $i, $day, $year));
                         $addDays = $addDays + $nextMonthDays;
                     }
                 }
                 $objCloneEvent->startDate = mktime($hour, $minutes, $seconds, $month, $day + $addDays, $year);
                 $compareDate = mktime(0, 0, 0, $month, $day + $addDays, $year);
                 $hour = date("H", $objEvent->endDate);
                 $minutes = date("i", $objEvent->endDate);
                 $seconds = date("s", $objEvent->endDate);
                 $day = date("d", $objEvent->endDate);
                 $month = date("m", $objEvent->endDate);
                 $year = date("Y", $objEvent->endDate);
                 $objCloneEvent->endDate = mktime($hour, $minutes, $seconds, $month, $day + $addDays, $year);
             } else {
                 $hour = date("H", $objEvent->startDate);
                 $minutes = date("i", $objEvent->startDate);
                 $seconds = date("s", $objEvent->startDate);
                 $day = date("d", $objEvent->startDate);
                 $month = date("m", $objEvent->startDate);
                 $year = date("Y", $objEvent->startDate);
                 $weekdayPattern = $objEvent->seriesData['seriesPatternWeekday'];
                 $countPattern = $objEvent->seriesData['seriesPatternCount'];
                 $monthPattern = $objEvent->seriesData['seriesPatternMonth'];
                 $nextMonth = $month + $monthPattern;
                 $match = false;
                 $i = 0;
                 while (!$match) {
                     if (substr($weekdayPattern, $i, 1) == 1) {
                         $weekday = $i + 1;
                         $match = true;
                     } else {
                         $i++;
                     }
                 }
                 if ($weekday > 6) {
                     $weekday = 0;
                 }
                 if ($countPattern < 5) {
                     $match = false;
                     $d = 1;
                     while (!$match) {
                         $checkDate = mktime($hour, $minutes, $seconds, $nextMonth, $d, $year);
                         $checkDay = date("w", $checkDate);
                         if ($checkDay == $weekday) {
                             $match = true;
                         } else {
                             $d++;
                         }
                     }
                     if ($countPattern > 1) {
                         $countPattern = 7 * ($countPattern - 1);
                     } else {
                         $countPattern = 0;
                     }
                 } else {
                     $match = false;
                     $d = date("t", mktime($hour, $minutes, $seconds, $nextMonth, $day, $year));
                     $countPattern = 0;
                     while (!$match) {
                         $checkDate = mktime($hour, $minutes, $seconds, $nextMonth, $d, $year);
                         $checkDay = date("w", $checkDate);
                         if ($checkDay == $weekday) {
                             $match = true;
                         } else {
                             $d--;
                         }
                     }
                 }
                 $addMonth = $nextMonth - $month;
                 $newDay = $d + $countPattern;
                 $objCloneEvent->startDate = mktime($hour, $minutes, $seconds, $month + $addMonth, $newDay, $year);
                 $compareDate = mktime(0, 0, 0, $month + $addMonth, $newDay, $year);
                 $hour = date("H", $objEvent->endDate);
                 $minutes = date("i", $objEvent->endDate);
                 $seconds = date("s", $objEvent->endDate);
                 $dayStart = $objEvent->startDate;
                 $dayEnd = $objEvent->endDate;
                 $dayDiff = date("d", $dayEnd - $dayStart) - 1;
                 $month = date("m", $objEvent->endDate);
                 $year = date("Y", $objEvent->endDate);
                 $objCloneEvent->endDate = mktime($hour, $minutes, $seconds, $month + $addMonth, $newDay + $dayDiff, $year);
             }
             break;
     }
     $isAllowedEvent = true;
     switch ($objCloneEvent->seriesData['seriesPatternDouranceType']) {
         case 1:
             $getNextEvent = false;
             if ($this->startDate != null) {
                 $lastDate = mktime(date("H", $this->startDate), date("i", $this->startDate), date("s", $this->startDate), date("m", $this->startDate), date("d", $this->startDate), date("Y", $this->startDate) + intval($this->arrSettings['maxSeriesEndsYear']) + 1);
                 if ($objCloneEvent->startDate <= $lastDate) {
                     $getNextEvent = true;
                 } else {
                     $getNextEvent = false;
                 }
             } elseif ($this->endDate != null) {
                 // start date will be null only on archive
                 if ($objCloneEvent->endDate <= $this->endDate) {
                     $getNextEvent = true;
                 } else {
                     $getNextEvent = false;
                 }
             }
             break;
         case 2:
             $objCloneEvent->seriesData['seriesPatternEnd'] = $objCloneEvent->seriesData['seriesPatternEnd'] - 1;
             if ($objCloneEvent->seriesData['seriesPatternEnd'] > 1) {
                 $getNextEvent = true;
             } else {
                 $getNextEvent = false;
             }
             // If pattern end count is true, then a event will be allowed to add in event list
             $isAllowedEvent = (bool) $objCloneEvent->seriesData['seriesPatternEnd'];
             break;
         case 3:
             if ($objCloneEvent->startDate <= $objCloneEvent->seriesData['seriesPatternEndDate']) {
                 $getNextEvent = true;
             } else {
                 // don't show the event when startdate is greater then seriesPatternEndDate
                 $isAllowedEvent = $getNextEvent = false;
             }
             break;
     }
     if ($isAllowedEvent && !in_array($compareDate, $objCloneEvent->seriesData['seriesPatternExceptions']) && self::_addToEventList($objCloneEvent)) {
         array_push($this->eventList, $objCloneEvent);
         if ($this->listType == 'upcoming') {
             // if list type is set to upcoming the the will be shown only once
             $getNextEvent = false;
         }
     }
     if ($getNextEvent) {
         self::_setNextSeriesElement($objCloneEvent);
     }
 }
Ejemplo n.º 5
0
 /**
  * Return's the mailing template list drop down
  * 
  * @param integer $selectedId Template list to be selected
  * @param action  $actionId   Action id
  * 
  * @return string Html drop down with the mail templates
  */
 function getTemplateDropdown($selectedId = null, $actionId = null, $languageId = null)
 {
     global $_ARRAYLANG;
     parent::getSettings();
     parent::getFrontendLanguages();
     if (empty($selectedId)) {
         if (empty($this->templateList[$actionId][$languageId])) {
             // if no templates are available in associated language (or template is deactivated), select default template
             foreach ($this->arrFrontendLanguages as $lang_id => $lang) {
                 foreach ($this->templateList[$actionId][$lang_id] as $objMail) {
                     if ($objMail->is_default) {
                         $selectedId = $objMail->id;
                         break;
                     }
                 }
                 if (!empty($selectedId)) {
                     break;
                 }
             }
         } else {
             // if default template is set for associated language, select default template
             foreach ($this->templateList[$actionId][$languageId] as $objMail) {
                 if ($objMail->is_default) {
                     $selectedId = $objMail->id;
                     break;
                 }
             }
             // if templates are available in associated language, select first template of own language
             if (empty($selectedId)) {
                 $mail = reset($this->templateList[$actionId][$languageId]);
                 $selectedId = $mail->id;
             }
         }
     }
     $options = '';
     foreach ($this->arrFrontendLanguages as $lang_id => $lang) {
         if (!empty($this->templateList[$actionId][$lang_id])) {
             $options .= '<optgroup label="' . $lang['name'] . '">';
             foreach ($this->templateList[$actionId][$lang_id] as $objMail) {
                 $options .= "<option value='{$objMail->id}'\r\n                                    " . ($selectedId == $objMail->id ? "selected='selected'" : '') . "\r\n                                    style='" . (!$objMail->status ? "color : #A0A0A0;" : '') . "'\r\n                                 >\r\n                                    {$objMail->title}\r\n                                   " . ($objMail->is_default ? " (" . $_ARRAYLANG["TXT_{$this->moduleLangVar}_DEFAULT"] . ")" : '') . "\r\n                                   " . (!$objMail->status ? " (" . $_ARRAYLANG["TXT_{$this->moduleLangVar}_INACTIVE"] . ")" : '') . "\r\n                                 </option>";
             }
             $options .= '</optgroup>';
         }
     }
     return $options;
 }
Ejemplo n.º 6
0
 /**
  * Add / Edit registration
  *      
  * @param integer $eventId Event id
  * @param integer $regId   Rgistration id
  */
 function modifyRegistration($eventId, $regId)
 {
     global $objDatabase, $_ARRAYLANG;
     $this->_objTpl->loadTemplateFile('module_calendar_modify_registration.html');
     if (isset($_POST['submitModifyRegistration'])) {
         $objRegistration = new \Cx\Modules\Calendar\Controller\CalendarRegistration(intval($_POST['form']));
         if ($objRegistration->save($_POST)) {
             switch ($_POST['registrationType']) {
                 case 0:
                     $tpl = 'd';
                     break;
                 case 1:
                 default:
                     $tpl = 'r';
                     break;
                 case 2:
                     $tpl = 'w';
                     break;
             }
             $tpl = !empty($_POST['regtpl']) ? $_POST['regtpl'] : $tpl;
             $this->okMessage = $_ARRAYLANG['TXT_CALENDAR_REGISTRATION_SUCCESSFULLY_SAVED'];
             \Cx\Core\Csrf\Controller\Csrf::header('Location: index.php?cmd=' . $this->moduleName . '&act=event_registrations&tpl=' . $tpl . '&id=' . $eventId);
         } else {
             $this->errMessage = $_ARRAYLANG['TXT_CALENDAR_REGISTRATION_CORRUPT_SAVED'];
         }
     }
     $objFWUser = \FWUser::getFWUserObject();
     $objUser = $objFWUser->objUser;
     $userId = intval($objUser->getId());
     $objEvent = new \Cx\Modules\Calendar\Controller\CalendarEvent($eventId);
     if ($regId != 0) {
         $this->_pageTitle = $_ARRAYLANG['TXT_CALENDAR_EVENT_EDIT_REGISTRATION'];
         $objRegistration = new \Cx\Modules\Calendar\Controller\CalendarRegistration($objEvent->registrationForm, $regId);
     } else {
         $this->_pageTitle = $_ARRAYLANG['TXT_CALENDAR_EVENT_INSERT_REGISTRATION'];
         $objRegistration = new \Cx\Modules\Calendar\Controller\CalendarRegistration($objEvent->registrationForm);
     }
     $objRegistrationManager = new \Cx\Modules\Calendar\Controller\CalendarRegistrationManager($eventId, true, true, true);
     $objRegistrationManager->getRegistrationList();
     $objRegistrationManager->showRegistrationInputfields($objEvent->registrationForm, $regId, $this->_objTpl);
     parent::getSettings();
     if ($this->arrSettings['paymentStatus'] == '1' && ($this->arrSettings['paymentBillStatus'] == '1' || $this->arrSettings['paymentYellowpayStatus'] == '1')) {
         $selectedBill = $objRegistration->paymentMethod == 1 ? 'selected="selected"' : '';
         $selectedYellowpay = $objRegistration->paymentMethod == 2 ? 'selected="selected"' : '';
         $paymentMethods = '<select style="width: 204px;" class="calendarSelect" name="paymentMethod">';
         $paymentMethods .= $this->arrSettings['paymentBillStatus'] == '1' ? '<option value="1" ' . $selectedBill . '>' . $_ARRAYLANG['TXT_CALENDAR_PAYMENT_BILL'] . '</option>' : '';
         $paymentMethods .= $this->arrSettings['paymentYellowpayStatus'] == '1' ? '<option value="2" ' . $selectedYellowpay . '>' . $_ARRAYLANG['TXT_CALENDAR_PAYMENT_YELLOWPAY'] . '</option>' : '';
         $paymentMethods .= '</select>';
         $this->_objTpl->setVariable(array('TXT_' . $this->moduleLangVar . '_PAYMENT_METHOD' => $_ARRAYLANG['TXT_CALENDAR_PAYMENT_METHOD'], 'TXT_' . $this->moduleLangVar . '_PAID' => $_ARRAYLANG['TXT_PAYMENT_COMPLETED'], $this->moduleLangVar . '_PAYMENT_METHODS' => $paymentMethods, $this->moduleLangVar . '_PAID' => $objRegistration->paid == true ? " checked='checked'" : ""));
         $this->_objTpl->parse('calendarRegistrationPayment');
     } else {
         $this->_objTpl->hideBlock('calendarRegistrationPayment');
     }
     $this->_objTpl->setGlobalVariable(array('TXT_' . $this->moduleLangVar . '_REGISTRATION_TITLE' => $this->_pageTitle, 'TXT_' . $this->moduleLangVar . '_SAVE' => $_ARRAYLANG['TXT_CALENDAR_SAVE'], 'TXT_' . $this->moduleLangVar . '_BACK' => $_ARRAYLANG['TXT_CALENDAR_BACK'], $this->moduleLangVar . '_EVENT_ID' => $eventId, $this->moduleLangVar . '_REGISTRATION_TPL' => $_GET['tpl'], $this->moduleLangVar . '_REGISTRATION_ID' => $regId, $this->moduleLangVar . '_REGISTRATION_TYPE' => $objRegistration->type, $this->moduleLangVar . '_FORM_ID' => $objEvent->registrationForm, $this->moduleLangVar . '_EVENT_DATE' => $objEvent->startDate, $this->moduleLangVar . '_USER_ID' => $userId));
 }
 /**
  * Returns the form list drop down
  *      
  * @param integer $selectedId selected option in the form
  * 
  * @return string HTML drop down menu 
  */
 function getFormDorpdown($selectedId = null)
 {
     global $_ARRAYLANG;
     parent::getSettings();
     $arrOptions = array();
     foreach ($this->formList as $key => $objForm) {
         $arrOptions[$objForm->id] = $objForm->title;
     }
     $options .= parent::buildDropdownmenu($arrOptions, $selectedId);
     return $options;
 }
 /**
  * Return's the category dropdown
  * 
  * @global array $_ARRAYLANG
  * @param integer $selectedId
  * @param integer $type
  * @return string Return's the html dropdown of the categories.
  */
 function getCategoryDropdown($selectedId = null, $type)
 {
     global $_ARRAYLANG;
     parent::getSettings();
     $arrOptions = array();
     foreach ($this->categoryList as $key => $objCategory) {
         if ($this->arrSettings['countCategoryEntries'] == 1) {
             $count = ' (' . $objCategory->countEntries(false, true) . ')';
         } else {
             $count = '';
         }
         $arrOptions[$objCategory->id] = $objCategory->name . $count;
     }
     switch (intval($type)) {
         case 1:
             $options = "<option value=''>" . $_ARRAYLANG['TXT_CALENDAR_ALL_CAT'] . "</option>";
             break;
         case 2:
             $options = "<option value=''>" . $_ARRAYLANG['TXT_CALENDAR_PLEASE_CHOOSE'] . "</option>";
             break;
         default:
             $options = "<option value=''></option>";
             break;
     }
     $options .= parent::buildDropdownmenu($arrOptions, $selectedId);
     return $options;
 }
Ejemplo n.º 9
0
 /**
  * Return's the settings Elements by its section id
  *      
  * @param object  $objTpl  Template object
  * @param integer $section section id
  * 
  * @return null
  */
 function _getSettingElements($objTpl, $section)
 {
     global $_ARRAYLANG, $objDatabase;
     parent::getSettings();
     $query = "SELECT id,title\r\n                    FROM " . DBPREFIX . "module_" . $this->moduleTablePrefix . "_settings_section\r\n                   WHERE parent='" . intval($section) . "'\r\n                ORDER BY `order` ASC";
     $objResult = $objDatabase->Execute($query);
     if ($objResult !== false) {
         while (!$objResult->EOF) {
             $objTpl->setVariable(array('TXT_CALENDAR_SECTION_NAME' => $_ARRAYLANG[$objResult->fields['title']]));
             $query = "SELECT  id,name,title,value,info,type,options,special\r\n                            FROM " . DBPREFIX . "module_" . $this->moduleTablePrefix . "_settings\r\n                           WHERE section_id='" . intval($objResult->fields['id']) . "'\r\n                        ORDER BY `order` ASC";
             $objResultSetting = $objDatabase->Execute($query);
             if ($objResultSetting !== false) {
                 $i = 0;
                 while (!$objResultSetting->EOF) {
                     $arrSetting = array();
                     $arrSetting = $this->_getSettingProperties($objResultSetting->fields['id'], $objResultSetting->fields['name'], $objResultSetting->fields['title'], $objResultSetting->fields['value'], $objResultSetting->fields['info'], $objResultSetting->fields['type'], $objResultSetting->fields['options'], $objResultSetting->fields['special']);
                     $objTpl->setVariable(array($this->moduleLangVar . '_SETTING_ROW' => $i % 2 == 0 ? 'row1' : 'row2', $this->moduleLangVar . '_SETTING_NAME' => $objResultSetting->fields['name'], 'TXT_' . $this->moduleLangVar . '_SETTING_NAME' => $_ARRAYLANG[$objResultSetting->fields['title']], $this->moduleLangVar . '_SETTING_VALUE' => $arrSetting['output'], $this->moduleLangVar . '_SETTING_INFO' => $arrSetting['infobox']));
                     $infoboxJS .= $arrSetting['infoboxJS'];
                     $i++;
                     $objTpl->parse('settingsList');
                     $objResultSetting->MoveNext();
                 }
             }
             $objTpl->parse('sectionList');
             $objResult->MoveNext();
         }
         $objTpl->setVariable(array($this->moduleLangVar . '_SETTING_INFO_JS' => $infoboxJS));
     }
 }