public function getFormattedExceptionDate()
 {
     if (!$this->ExceptionDate) {
         return "--";
     }
     return CalendarUtil::get_date_format() == "mdy" ? $this->obj('ExceptionDate')->Format('m-d-Y') : $this->obj('ExceptionDate')->Format('d-m-Y');
 }
 /**
  * @param $savedCalendar
  * @return Report
  */
 public static function makeReportBySavedCalendar(SavedCalendar $savedCalendar)
 {
     $report = new Report();
     if ($savedCalendar->id > 0) {
         $report->setId((int) $savedCalendar->id);
     }
     $report->setDescription($savedCalendar->description);
     if ($savedCalendar->moduleClassName != null) {
         $report->setModuleClassName($savedCalendar->moduleClassName);
     }
     if ($savedCalendar->name != null) {
         $report->setName($savedCalendar->name);
     }
     $report->setOwner($savedCalendar->owner);
     $report->setType(Report::TYPE_ROWS_AND_COLUMNS);
     $explicitReadWriteModelPermissions = ExplicitReadWriteModelPermissionsUtil::makeBySecurableItem($savedCalendar);
     $report->setExplicitReadWriteModelPermissions($explicitReadWriteModelPermissions);
     if ($savedCalendar->serializedData != null) {
         $unserializedData = unserialize($savedCalendar->serializedData);
         if (isset($unserializedData['filtersStructure'])) {
             $report->setFiltersStructure($unserializedData['filtersStructure']);
         }
         CalendarUtil::makeComponentFormAndPopulateReportFromData($unserializedData[ComponentForReportForm::TYPE_FILTERS], $report, 'Filter');
     }
     return $report;
 }
 /**
  * @param RedBeanModel $model
  * @param array $explicitReadWriteModelPermissions
  */
 protected function afterSetAttributesDuringSave($model, $explicitReadWriteModelPermissions)
 {
     assert('$model instanceof SavedCalendar');
     $postData = PostUtil::getData();
     $wizardFormClassName = ReportToWizardFormAdapter::getFormClassNameByType(Report::TYPE_ROWS_AND_COLUMNS);
     if (isset($postData[$wizardFormClassName])) {
         CalendarUtil::populateFiltersDataInModel($model, $postData[$wizardFormClassName]);
     }
 }
 /**
  * Renders title.
  * @return string
  */
 protected function renderTitleContent()
 {
     $title = ZurmoHtml::tag('h3', array(), Zurmo::t('CalendarsModule', 'My Shared Calendars'));
     $link = ZurmoHtml::link(ZurmoHtml::tag('span', array('class' => 'z-label'), 'Y'), '#', array('class' => 'white-button selectsharedcal'));
     $content = ZurmoHtml::tag('div', array('class' => 'cal-list-header clearfix'), $title . $link);
     $script = CalendarUtil::registerSharedCalendarModalScript(Yii::app()->createUrl('calendars/default/modalList'), '.selectsharedcal');
     Yii::app()->clientScript->registerScript('selectsharedcalscript', $script, ClientScript::POS_END);
     return $content;
 }
 function MonthNavigator($url_segment = null, $start_date = null)
 {
     $cal = CalendarUtil::get_calendar_for($url_segment);
     if ($cal) {
         if ($start_date !== null) {
             $start_date = new sfDate(CalendarUtil::getDateFromString($start_date));
         }
         return new MonthNavigator($cal, $start_date);
     }
     return false;
 }
Esempio n. 6
0
 private function loadNewSchedules()
 {
     $uid = Yii::app()->user->uid;
     $st = time();
     $schedules = Calendars::model()->fetchNewSchedule($uid, $st);
     if (!empty($schedules)) {
         foreach ($schedules as $k => $schedule) {
             $schedules[$k]["dateAndWeekDay"] = CalendarUtil::getDateAndWeekDay(date("Y-m-d", $schedule["starttime"]));
             $schedules[$k]["category"] = Calendars::model()->handleColor($schedule["category"]);
             $schedules[$k]["cutSubject"] = StringUtil::cutStr($schedule["subject"], 30);
         }
     }
     return $schedules;
 }
 public function __construct($items = null)
 {
     parent::__construct();
     if (CalendarDateTime::dmy()) {
         $firstName = "Day";
         $firstFunc = "getDaysMap";
         $secondName = "Month";
         $secondFunc = "getMonthsMap";
     } else {
         $firstName = "Month";
         $firstFunc = "getMonthsMap";
         $secondName = "Day";
         $secondFunc = "getDaysMap";
     }
     $this->addFilterField(new FieldGroup(new DropdownField('Start' . $firstName, _t('CalendarFilterFieldSet.START', 'Start'), CalendarUtil::$firstFunc()), new DropdownField('Start' . $secondName, '', CalendarUtil::$secondFunc()), new DropdownField('StartYear', '', CalendarUtil::getYearsMap())));
     $this->addFilterField(new FieldGroup(new DropdownField('End' . $firstName, _t('CalendarFilterFieldSet.END', 'End'), CalendarUtil::$firstFunc()), new DropdownField('End' . $secondName, '', CalendarUtil::$secondFunc()), new DropdownField('EndYear', '', CalendarUtil::getYearsMap())));
 }
Esempio n. 8
0
 public function actionSubTask()
 {
     if (!UserUtil::checkIsSub(Ibos::app()->user->uid, $this->uid)) {
         $this->error(Ibos::lang("No permission to view task"), $this->createUrl("task/index"));
     }
     $postComp = EnvUtil::getRequest("complete");
     $this->complete = empty($postComp) ? 0 : $postComp;
     if (EnvUtil::getRequest("param") == "search") {
         $this->search();
     }
     $this->_condition = CalendarUtil::joinCondition($this->_condition, "uid = " . $this->uid);
     $data = Tasks::model()->fetchTaskByComplete($this->_condition, $this->complete);
     $data["complete"] = $this->complete;
     $data["user"] = User::model()->fetchByUid($this->uid);
     $data["supUid"] = UserUtil::getSupUid($this->uid);
     $data["allowEditTask"] = CalendarUtil::getIsAllowEidtTask();
     $this->setPageTitle(Ibos::lang("Subordinate task"));
     $this->setPageState("breadCrumbs", array(array("name" => Ibos::lang("Personal Office")), array("name" => Ibos::lang("Calendar arrangement"), "url" => $this->createUrl("schedule/index")), array("name" => Ibos::lang("Subordinate task"))));
     $this->render("subtask", $data);
 }
Esempio n. 9
0
 public function actionAdd()
 {
     if (!Ibos::app()->request->getIsAjaxRequest()) {
         $this->error(IBos::lang("Parameters error", "error"), $this->createUrl("schedule/index"));
     }
     if (!$this->checkAddPermission()) {
         $this->ajaxReturn(array("isSuccess" => false, "msg" => Ibos::lang("No permission to add schedule")));
     }
     $getStartTime = EnvUtil::getRequest("CalendarStartTime");
     $sTime = empty($getStartTime) ? date("y-m-d h:i", time()) : $getStartTime;
     $getEndTime = EnvUtil::getRequest("CalendarEndTime");
     $eTime = empty($getEndTime) ? date("y-m-d h:i", time()) : $getEndTime;
     $getTitle = EnvUtil::getRequest("CalendarTitle");
     $title = empty($getTitle) ? "" : $getTitle;
     if ($this->uid != $this->upuid) {
         $title .= " (" . User::model()->fetchRealnameByUid($this->upuid) . ")";
     }
     $getIsAllDayEvent = EnvUtil::getRequest("IsAllDayEvent");
     $isAllDayEvent = empty($getIsAllDayEvent) ? 0 : intval($getIsAllDayEvent);
     $getCategory = EnvUtil::getRequest("Category");
     $category = empty($getCategory) ? -1 : $getCategory;
     $schedule = array("uid" => $this->uid, "subject" => $title, "starttime" => CalendarUtil::js2PhpTime($sTime), "endtime" => CalendarUtil::js2PhpTime($eTime), "isalldayevent" => $isAllDayEvent, "category" => $category, "uptime" => time(), "upuid" => $this->upuid);
     $addId = Calendars::model()->add($schedule, true);
     if ($addId) {
         $ret["isSuccess"] = true;
         $ret["msg"] = "success";
         $ret["data"] = intval($addId);
         if ($this->upuid != $this->uid) {
             $config = array("{sender}" => User::model()->fetchRealnameByUid($this->upuid), "{subject}" => $title, "{url}" => Ibos::app()->urlManager->createUrl("calendar/schedule/index"));
             Notify::model()->sendNotify($this->uid, "add_calendar_message", $config, $this->upuid);
         }
     } else {
         $ret["isSuccess"] = false;
         $ret["msg"] = "fail";
     }
     $this->ajaxReturn($ret);
 }
Esempio n. 10
0
 private function handleLoops($loops)
 {
     if (!empty($loops)) {
         foreach ($loops as $k => $v) {
             $loops[$k]["subject"] = StringUtil::cutStr($v["subject"], 12);
             $loops[$k]["uptime"] = date("Y-m-d H:i", $v["uptime"]);
             $time = date("H:i", $v["starttime"]) . "至" . date("H:i", $v["endtime"]);
             switch ($v["recurringtype"]) {
                 case "week":
                     $recurringtime = CalendarUtil::digitalToDay($v["recurringtime"]);
                     $loops[$k]["cycle"] = "每周" . $recurringtime . " " . $time;
                     break;
                 case "month":
                     $loops[$k]["cycle"] = "每月" . $v["recurringtime"] . "号 " . $time;
                     break;
                 case "year":
                     $monthDay = explode("-", $v["recurringtime"]);
                     $loops[$k]["cycle"] = "每年" . $monthDay[0] . "月" . $monthDay[1] . "号 " . $time;
                     break;
             }
         }
     }
     return $loops;
 }
Esempio n. 11
0
<script>
	Ibos.app.s({
		calSettings : {
			// 日程开始时间
			minTime: new moment(Ibos.date.numberToTime(<?php 
echo CalendarUtil::getSetupStartTime(Ibos::app()->user->uid);
?>
), "HH:mm"),
			// 日程结束时间
			maxTime: new moment(Ibos.date.numberToTime(<?php 
echo CalendarUtil::getSetupEndTime(Ibos::app()->user->uid);
?>
), "HH:mm"),
			hiddenDays: [<?php 
echo CalendarUtil::getSetupHiddenDays(Ibos::app()->user->uid);
?>
],
			uid: Ibos.app.g('uid'),
			addable: true,	
			editable: true
		}
	});
	Ibos.app.setPageParam({
		FORMHASH: "<?php 
echo FORMHASH;
?>
"
	});
</script>
<script src='<?php 
 /**
  * Renders content.
  * @return string
  */
 protected function renderContent()
 {
     $content = CalendarUtil::makeCalendarItemsList($this->data, $this->field, $this->itemClass, $this->listType);
     $content = $this->wrapContent($content);
     $title = $this->renderTitleContent();
     return ZurmoHtml::tag('div', array('class' => 'calendars-list-container'), $title . $content);
 }
 /**
  * Gets dropdown array for date and datetime fields.
  * @return array
  */
 protected function getDropDownArray()
 {
     return CalendarUtil::getModelAttributesForSelectedModule($this->model->moduleClassName);
 }
Esempio n. 14
0
 public static function getDateFromURL()
 {
     $params = Director::urlParams();
     if (isset($params['Action'])) {
         return CalendarUtil::getDateFromString($params['Action']);
     } else {
         return false;
     }
 }
 public function CalendarFilterForm()
 {
     if ($date = CalendarUtil::getDateFromURL()) {
         $date_obj = new sfDate($date);
     } elseif ($date = DataObject::get_one($this->getDateTimeClass(), "EventID = {$this->ID}", "StartDate ASC")) {
         $date_obj = new sfDate($date->StartDate);
     } else {
         return false;
     }
     $controller_name = $this->Parent()->class . "_Controller";
     if (class_exists($controller_name)) {
         $controller = new $controller_name($this->Parent());
         $controller->parseURL();
         return $controller->CalendarFilterForm($date_obj);
     }
 }
 public static function getDateFromURL()
 {
     $params = Controller::curr()->urlParams;
     if (isset($params['ID'])) {
         return CalendarUtil::getDateFromString($params['ID']);
     } else {
         return false;
     }
 }
 /**
  * Get the list of calendar items
  * @param array $calendarItems
  * @param array $models
  * @param SavedCalendar $savedCalendar
  */
 protected function resolveRedBeanModelsToCalendarItems(&$calendarItems, array $models, SavedCalendar $savedCalendar)
 {
     foreach ($models as $model) {
         $calendarItems[] = CalendarUtil::makeCalendarItemByModel($model, $savedCalendar);
     }
 }
Esempio n. 18
0
 public function DateHeader()
 {
     switch ($this->view) {
         case "day":
             return CalendarUtil::localize($this->start_date->get(), null, CalendarUtil::ONE_DAY_HEADER);
             break;
         case "month":
             return CalendarUtil::localize($this->start_date->get(), null, CalendarUtil::MONTH_HEADER);
             break;
         case "year":
             return CalendarUtil::localize($this->start_date->get(), null, CalendarUtil::YEAR_HEADER);
             break;
         case "range":
             list($strStartDate, $strEndDate) = CalendarUtil::getDateString($this->start_date->date(), $this->end_date->date());
             return $strStartDate . $strEndDate;
             break;
         default:
             return $this->DefaultDateHeader;
             break;
     }
 }
 /**
  * Renders content.
  * @return string
  */
 protected function renderContent()
 {
     Yii::app()->clientScript->registerScriptFile(Yii::app()->getAssetManager()->publish(Yii::getPathOfAlias('application.modules.calendars.assets')) . '/CalendarsUtil.js', CClientScript::POS_END);
     //Right
     $rightSideContent = $this->renderOverMaxCountText() . $this->renderFullCalendarContent();
     $right = ZurmoHtml::tag('div', array('class' => 'right-column'), $rightSideContent);
     //Left
     $content = $this->renderSmallCalendarContent();
     $content .= $this->renderMyCalendarsContent();
     $content .= $this->renderSubscribedToCalendarsContent();
     $left = ZurmoHtml::tag('div', array('class' => 'left-column'), $content);
     $params = LabelUtil::getTranslationParamsForAllModules();
     $title = ZurmoHtml::tag('h1', array(), Zurmo::t('CalendarsModule', 'CalendarsModuleSingularLabel', $params));
     $view = ZurmoHtml::tag('div', array('class' => 'calendar-view'), $left . $right);
     $wrapper = ZurmoHtml::tag('div', array('class' => 'wrapper'), $title . $view);
     CalendarUtil::registerSelectCalendarScript($this->dataProvider->getStartDate(), $this->dataProvider->getEndDate());
     CalendarUtil::registerCalendarUnsubscriptionScript($this->dataProvider->getStartDate(), $this->dataProvider->getEndDate());
     CalendarUtil::registerSavedCalendarDeleteScript($this->dataProvider->getStartDate(), $this->dataProvider->getEndDate());
     return $wrapper;
 }
 public function _Dates()
 {
     list($strStartDate, $strEndDate) = CalendarUtil::getDateString($this->StartDate, $this->EndDate);
     $html = "<span class='dtstart' title='" . $this->MicroformatStart() . "'>" . $strStartDate . "</span>";
     $html .= $strEndDate != "" ? self::$date_delimiter : "";
     $html .= "<span class='dtend' title='" . $this->MicroformatEnd() . "'>";
     $html .= $strEndDate != "" ? $strEndDate : "";
     $html .= "</span>";
     return $html;
 }
 public function handleShow($request)
 {
     $calendar = DataObject::get_by_id($request->param('CalendarClass'), $request->param('CalendarID'));
     if ($calendar) {
         $default_view = $request->param('DefaultView') == "1";
         $c = new LiveCalendarWidget($calendar, new sfDate(CalendarUtil::getDateFromString($request->param('CurrentMonth'))), null, $default_view);
         $c->setAnchorStart($request->param('AnchorStart'));
         $c->setAnchorEnd($request->param('AnchorEnd'));
         echo $c->forTemplate();
     } else {
         return false;
     }
 }
 /**
  * @covers CalendarItemsDataProviderFactory::getDataProviderByDateRangeType
  * @covers CalendarItemsDataProvider::fetchData
  * @covers CalendarRowsAndColumnsReportDataProvider::makeSelectQueryAdapter
  * @covers CalendarRowsAndColumnsReportDataProvider::resolveSqlQueryAdapterForCount
  * @covers CalendarRowsAndColumnsReportDataProvider::getData
  */
 public function testGetDataProviderByDateRangeType()
 {
     Yii::app()->user->userModel = User::getByUsername('super');
     $product = ProductTestHelper::createProductByNameForOwner('Test Product', Yii::app()->user->userModel);
     $savedCalendar = CalendarTestHelper::createSavedCalendarByName('Test Cal', '#315AB0');
     $currentDateTime = new DateTime('NOW');
     $currentDateTime->add(new DateInterval('P1D'));
     $savedCalendarSubscriptions = SavedCalendarSubscriptions::makeByUser(Yii::app()->user->userModel, (string) $savedCalendar->id);
     $dp = CalendarItemsDataProviderFactory::getDataProviderByDateRangeType($savedCalendarSubscriptions, '2014-01-01', $currentDateTime->format('Y-m-d'), SavedCalendar::DATERANGE_TYPE_MONTH);
     $this->assertInstanceOf('CalendarItemsDataProvider', $dp);
     $this->assertEquals('2014-01-01', $dp->getStartDate());
     $this->assertEquals($currentDateTime->format('Y-m-d'), $dp->getEndDate());
     $this->assertEquals(SavedCalendar::DATERANGE_TYPE_MONTH, $dp->getDateRangeType());
     $savedCalendarsData = $dp->getSavedCalendarSubscriptions()->getMySavedCalendarsAndSelected();
     $keys = array_keys($savedCalendarsData);
     $this->assertEquals($savedCalendar->id, $keys[0]);
     $items = CalendarUtil::getFullCalendarItems($dp);
     $this->assertCount(1, $items);
     $this->assertEquals($product->id, $items[0]['modelId']);
 }
 /**
  * Add my subscribed calendars.
  * @param SavedCalendarSubscriptions $savedCalendarSubscriptions
  * @param User $user
  * @param string $subscribedCalendarIds
  * @return \SavedCalendarSubscriptions
  */
 private static function addMySubscribedCalendars(SavedCalendarSubscriptions $savedCalendarSubscriptions, User $user, $subscribedCalendarIds)
 {
     $mySubscribedCalendars = CalendarUtil::getUserSubscribedCalendars($user);
     if (count($mySubscribedCalendars) > 0) {
         ZurmoConfigurationUtil::setByUserAndModuleName($user, 'CalendarsModule', 'mySubscribedCalendarSelections', $subscribedCalendarIds);
         $subscribedCalendarIdArray = array();
         if ($subscribedCalendarIds != null) {
             $subscribedCalendarIdArray = explode(',', $subscribedCalendarIds);
             // Not Coding Standard
         }
         foreach ($mySubscribedCalendars as $key => $mySubscribedCalendar) {
             CalendarUtil::setSharedCalendarColor($mySubscribedCalendar);
             if (in_array($mySubscribedCalendar->id, $subscribedCalendarIdArray)) {
                 $savedCalendarSubscriptions->addSubscribedToCalendar($mySubscribedCalendar, true);
             } else {
                 $savedCalendarSubscriptions->addSubscribedToCalendar($mySubscribedCalendar, false);
             }
         }
     }
 }
 /**
  * Get events for the selected calendars.
  * @param string $selectedMyCalendarIds
  * @param string $selectedSharedCalendarIds
  * @param string $startDate
  * @param string $endDate
  * @param string $dateRangeType
  */
 public function actionGetDayEvents($selectedMyCalendarIds = null, $selectedSharedCalendarIds = null, $startDate = null, $endDate = null, $dateRangeType = null)
 {
     $dataProvider = CalendarUtil::processAndGetDataProviderForEventsData($selectedMyCalendarIds, $selectedSharedCalendarIds, $startDate, $endDate, $dateRangeType, false);
     $items = CalendarUtil::processDataProviderAndGetCalendarItems($dataProvider);
     $modifiedItems = array();
     foreach ($items as $item) {
         $item['start'] = CalendarUtil::getFullCalendarFormattedDateTimeElement($item['start']);
         $startDateTime = strtotime($item['start']);
         if (date('Y-m-d', $startDateTime) == $startDate) {
             $item['end'] = CalendarUtil::getFullCalendarFormattedDateTimeElement($item['end']);
             $modifiedItems[] = $item;
         }
     }
     $modifiedItems = CalendarUtil::populateDetailsUrlForCalendarItems($modifiedItems);
     $calItemListView = new CalendarItemsListView($this->getId(), $this->getModule()->getId(), $modifiedItems, GetUtil::getData());
     Yii::app()->getClientScript()->setToAjaxMode();
     echo $calItemListView->render();
 }
Esempio n. 25
0
 public function getFormattedEndTime()
 {
     if (!$this->EndTime) {
         return "--";
     }
     return CalendarUtil::get_time_format() == "12" ? $this->obj('EndTime')->Nice() : $this->obj('EndTime')->Nice24();
 }
Esempio n. 26
0
 public function updateSchedule($calendarid, $st, $et, $sj, $cg, $su = null)
 {
     $modifyData = array("starttime" => CalendarUtil::js2PhpTime($st), "endtime" => CalendarUtil::js2PhpTime($et), "subject" => $sj, "category" => $cg, "status" => $su);
     if (is_null($su)) {
         unset($modifyData["status"]);
     }
     $modifyResult = $this->modify($calendarid, $modifyData);
     if ($modifyResult) {
         $ret["isSuccess"] = true;
         $ret["msg"] = "操作成功";
     } else {
         $ret["isSuccess"] = false;
         $ret["msg"] = "操作失败";
     }
     return $ret;
 }
 /**
  * @return string
  */
 public function getTitle()
 {
     $parts = CalendarUtil::get_date_string($this->StartDate, $this->EndDate);
     if ($parts) {
         $date = implode(' ', $parts);
     } else {
         $date = 'No date';
     }
     if ($this->AllDay) {
         return sprintf(_t('EventManagement.DATEALLDAY', '%s (all day)'), $date);
     }
     if (!$this->StartTime) {
         return $date;
     }
     $time = $this->obj('StartTime')->Nice();
     if ($this->EndTime) {
         $time .= ' - ' . $this->obj('EndTime')->Nice();
     }
     return "{$date} {$time}";
 }
Esempio n. 28
0
 /**
  * Populate details url for calendar items.
  * @param array $items
  * @return array
  */
 public static function populateDetailsUrlForCalendarItems($items)
 {
     assert('is_array($items)');
     $moduleClassNames = CalendarUtil::getAvailableModulesForCalendar();
     foreach ($items as $index => $item) {
         foreach ($moduleClassNames as $moduleClassName => $label) {
             if ($moduleClassName::getPrimaryModelName() == $item['modelClass']) {
                 $moduleId = $moduleClassName::getDirectoryName();
                 $item['detailsUrl'] = Yii::app()->createUrl($moduleId . '/default/details', array('id' => $item['modelId']));
                 $items[$index] = $item;
             }
         }
     }
     return $items;
 }
 public function MonthJumpForm()
 {
     $this->parseURL($this->getRequest());
     $dummy = sfDate::getInstance($this->startDate);
     $range = range($dummy->subtractYear(3)->format('Y'), $dummy->addYear(6)->format('Y'));
     $year_map = array_combine($range, $range);
     $f = new Form($this, "MonthJumpForm", new FieldList($m = new DropdownField('Month', '', CalendarUtil::get_months_map('%B')), $y = new DropdownField('Year', '', $year_map)), new FieldList(new FormAction('doMonthJump', _t('Calendar.JUMP', 'Go'))));
     if ($this->startDate) {
         $m->setValue($this->startDate->format('m'));
         $y->setValue($this->startDate->format('Y'));
     } else {
         $m->setValue(date('m'));
         $y->setValue(date('Y'));
     }
     return $f;
 }
 /**
  * Get modules available to be used with calendar.
  * @return array
  */
 protected function getAvailableModulesForCalendar()
 {
     $moduleClassNames = CalendarUtil::getAvailableModulesForCalendar();
     asort($moduleClassNames);
     return $moduleClassNames;
 }