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