%PDF- %PDF-
Direktori : /proc/self/root/home/bitrix/www/bitrix/activities/bitrix/calendaractivity/ |
Current File : //proc/self/root/home/bitrix/www/bitrix/activities/bitrix/calendaractivity/calendaractivity.php |
<? if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); class CBPCalendarActivity extends CBPActivity { public function __construct($name) { parent::__construct($name); $this->arProperties = array( "Title" => "", "CalendarUser" => "", "CalendarName" => "", "CalendarDesrc" => "", "CalendarFrom" => "", "CalendarTo" => "", ); } public function Execute() { if (!CModule::IncludeModule("intranet")) return CBPActivityExecutionStatus::Closed; $calendarIblockId = COption::GetOptionInt("intranet", 'iblock_calendar', 0); if ($calendarIblockId <= 0) return CBPActivityExecutionStatus::Closed; $rootActivity = $this->GetRootActivity(); $documentId = $rootActivity->GetDocumentId(); $arCalendarUser = CBPHelper::ExtractUsers($this->CalendarUser, $documentId); foreach ($arCalendarUser as $calendarUser) { $Params = array( 'iblockId' => $calendarIblockId, 'ownerType' => "USER", 'ownerId' => $calendarUser, 'cacheTime' => 0, 'pageUrl' => false, 'allowSuperpose' => false, 'allowResMeeting' => false, 'allowVideoMeeting' => false, 'userIblockId' => $calendarIblockId ); $EC = new CEventCalendar; $EC->Init($Params); $sectionId = $EC->GetSectionIDByOwnerId($calendarUser, 'USER', $calendarIblockId); if ($sectionId <= 0) $sectionId = CEventCalendar::CreateSectionForOwner($calendarUser, "USER", $calendarIblockId); $arGuestCalendars = $EC->GetCalendars(array( 'sectionId' => $sectionId, 'iblockId' => $calendarIblockId, 'ownerType' => 'USER', 'ownerId' => $calendarUser, 'bOwner' => true, 'forExport' => true, 'bOnlyID' => true )); $arParams = array( 'iblockId' => $calendarIblockId, 'ownerType' => "USER", 'ownerId' => $calendarUser, 'sectionId' => $sectionId, 'bNew' => true, 'name' => $this->CalendarName, 'desc' => $this->CalendarDesrc, 'dateFrom' => cutZeroTime($this->CalendarFrom), 'dateTo' => cutZeroTime($this->CalendarTo), 'isMeeting' => false, 'prop' => array( 'PERIOD_TYPE' => 'NONE', 'ACCESSIBILITY' => 'busy', //'quest', 'free','absent' 'IMPORTANCE' => 'normal', // 'high', 'low' 'PRIVATE' => false, ), 'userId' => $calendarUser, 'userIblockId' => $calendarIblockId, 'location' => array('new' => '', 'change' => true) ); if (count($arGuestCalendars) > 0) $arParams["calendarId"] = $arGuestCalendars[0]; $EC->SaveEvent($arParams); } if (isset($EC)) $EC->ClearCache($EC->cachePath.'events/'.$calendarIblockId.'/'); return CBPActivityExecutionStatus::Closed; } public static function ValidateProperties($arTestProperties = array(), CBPWorkflowTemplateUser $user = null) { $arErrors = array(); if (!array_key_exists("CalendarUser", $arTestProperties) || count($arTestProperties["CalendarUser"]) <= 0) $arErrors[] = array("code" => "NotExist", "parameter" => "CalendarUser", "message" => GetMessage("BPSNMA_EMPTY_CALENDARUSER")); if (!array_key_exists("CalendarName", $arTestProperties) || count($arTestProperties["CalendarName"]) <= 0) $arErrors[] = array("code" => "NotExist", "parameter" => "CalendarName", "message" => GetMessage("BPSNMA_EMPTY_CALENDARNAME")); if (!array_key_exists("CalendarFrom", $arTestProperties) || strlen($arTestProperties["CalendarFrom"]) <= 0) $arErrors[] = array("code" => "NotExist", "parameter" => "CalendarFrom", "message" => GetMessage("BPSNMA_EMPTY_CALENDARFROM")); if (!array_key_exists("CalendarTo", $arTestProperties) || strlen($arTestProperties["CalendarTo"]) <= 0) $arErrors[] = array("code" => "NotExist", "parameter" => "CalendarTo", "message" => GetMessage("BPSNMA_EMPTY_CALENDARTO")); return array_merge($arErrors, parent::ValidateProperties($arTestProperties, $user)); } public static function GetPropertiesDialog($documentType, $activityName, $arWorkflowTemplate, $arWorkflowParameters, $arWorkflowVariables, $arCurrentValues = null, $formName = "") { $runtime = CBPRuntime::GetRuntime(); $arMap = array( "CalendarUser" => "calendar_user", "CalendarName" => "calendar_name", "CalendarDesrc" => "calendar_desrc", "CalendarFrom" => "calendar_from", "CalendarTo" => "calendar_to", ); if (!is_array($arWorkflowParameters)) $arWorkflowParameters = array(); if (!is_array($arWorkflowVariables)) $arWorkflowVariables = array(); if (!is_array($arCurrentValues)) { $arCurrentActivity = &CBPWorkflowTemplateLoader::FindActivityByName($arWorkflowTemplate, $activityName); if (is_array($arCurrentActivity["Properties"])) { foreach ($arMap as $k => $v) { if (array_key_exists($k, $arCurrentActivity["Properties"])) { if ($k == "CalendarUser") $arCurrentValues[$arMap[$k]] = CBPHelper::UsersArrayToString($arCurrentActivity["Properties"][$k], $arWorkflowTemplate, $documentType); else $arCurrentValues[$arMap[$k]] = $arCurrentActivity["Properties"][$k]; } else { $arCurrentValues[$arMap[$k]] = ""; } } } else { foreach ($arMap as $k => $v) $arCurrentValues[$arMap[$k]] = ""; } } return $runtime->ExecuteResourceFile( __FILE__, "properties_dialog.php", array( "arCurrentValues" => $arCurrentValues, "formName" => $formName, ) ); } public static function GetPropertiesDialogValues($documentType, $activityName, &$arWorkflowTemplate, &$arWorkflowParameters, &$arWorkflowVariables, $arCurrentValues, &$arErrors) { $arErrors = array(); $runtime = CBPRuntime::GetRuntime(); $arMap = array( "calendar_user" => "CalendarUser", "calendar_name" => "CalendarName", "calendar_desrc" => "CalendarDesrc", "calendar_from" => "CalendarFrom", "calendar_to" => "CalendarTo", ); $arProperties = array(); foreach ($arMap as $key => $value) { if ($key == "calendar_user") continue; $arProperties[$value] = $arCurrentValues[$key]; } $arProperties["CalendarUser"] = CBPHelper::UsersStringToArray($arCurrentValues["calendar_user"], $documentType, $arErrors); if (count($arErrors) > 0) return false; $arErrors = self::ValidateProperties($arProperties, new CBPWorkflowTemplateUser(CBPWorkflowTemplateUser::CurrentUser)); if (count($arErrors) > 0) return false; $arCurrentActivity = &CBPWorkflowTemplateLoader::FindActivityByName($arWorkflowTemplate, $activityName); $arCurrentActivity["Properties"] = $arProperties; return true; } } ?>