Esempio n. 1
0
 public static function ManageConnections($arConnections = array(), $Params = array())
 {
     global $APPLICATION;
     $ownerId = isset($Params['ownerId']) ? $Params['ownerId'] : self::$ownerId;
     $bSync = false;
     $l = count($arConnections);
     for ($i = 0; $i < $l; $i++) {
         $con = $arConnections[$i];
         $conId = intVal($con['id']);
         if ($conId <= 0) {
             if ($con['del'] == 'Y') {
                 continue;
             }
             if (!CCalendar::CheckCalDavUrl($con['link'], $con['user_name'], $con['pass'])) {
                 return GetMessage("EC_CALDAV_URL_ERROR");
             }
             CDavConnection::Add(array("ENTITY_TYPE" => 'user', "ENTITY_ID" => self::$ownerId, "ACCOUNT_TYPE" => 'caldav', "NAME" => $con['name'], "SERVER" => $con['link'], "SERVER_USERNAME" => $con['user_name'], "SERVER_PASSWORD" => $con['pass']));
             $bSync = true;
         } elseif ($con['del'] != 'Y') {
             $arFields = array("NAME" => $con['name'], "SERVER" => $con['link'], "SERVER_USERNAME" => $con['user_name']);
             if ($con['pass'] !== 'bxec_not_modify_pass') {
                 $arFields["SERVER_PASSWORD"] = $con['pass'];
             }
             CDavConnection::Update($conId, $arFields);
             $bSync = true;
         } else {
             CDavConnection::Delete($conId);
             $res = CCalendarSect::GetList(array('arFilter' => array('CAL_TYPE' => 'user', 'OWNER_ID' => $ownerId, 'CAL_DAV_CON' => $conId)));
             foreach ($res as $sect) {
                 if ($con['del_calendars'] == 'Y') {
                     // Delete all callendars from this connection
                     CCalendarSect::Delete($sect['ID']);
                 } else {
                     CCalendarSect::Edit(array('arFields' => array("ID" => $sect['ID'], "CAL_DAV_CON" => '', 'CAL_DAV_CAL' => '', 'CAL_DAV_MOD' => '')));
                 }
             }
         }
     }
     if ($err = $APPLICATION->GetException()) {
         return $err->GetString();
     }
     if ($bSync) {
         CDavGroupdavClientCalendar::DataSync("user", self::$ownerId);
     }
     $res = CDavConnection::GetList(array("ID" => "DESC"), array("ENTITY_TYPE" => "user", "ENTITY_ID" => self::$ownerId, "ACCOUNT_TYPE" => 'caldav'), false, false);
     while ($arCon = $res->Fetch()) {
         if (strpos($arCon['LAST_RESULT'], "[200]") === false) {
             return GetMessage('EC_CALDAV_CONNECTION_ERROR', array('#CONNECTION_NAME#' => $arCon['NAME'], '#ERROR_STR#' => $arCon['LAST_RESULT']));
         }
     }
     return true;
 }
 public static function DoCheckCalDAVServer($scheme, $host = null, $port = null, $username = null, $password = null, $path = null)
 {
     if ($scheme . "!" == intval($scheme) . "!") {
         $scheme = intval($scheme);
         if ($scheme <= 0) {
             return false;
         }
         $arConnection = CDavConnection::GetById($scheme);
         if (!is_array($arConnection)) {
             return false;
         }
         $scheme = $arConnection["SERVER_SCHEME"];
         $host = $arConnection["SERVER_HOST"];
         $port = $arConnection["SERVER_PORT"];
         $username = $arConnection["SERVER_USERNAME"];
         $password = $arConnection["SERVER_PASSWORD"];
         $path = $arConnection["SERVER_PATH"];
     }
     $client = new CDavGroupdavClientCalendar($scheme, $host, $port, $username, $password);
     if (CDav::UseProxy()) {
         $arProxy = CDav::GetProxySettings();
         $client->SetProxy($arProxy["PROXY_SCHEME"], $arProxy["PROXY_HOST"], $arProxy["PROXY_PORT"], $arProxy["PROXY_USERNAME"], $arProxy["PROXY_PASSWORD"]);
     }
     return $client->CheckWebdavServer($path);
 }
Esempio n. 3
0
 function Delete($arParams)
 {
     global $DB, $USER;
     $iblockId = $arParams['iblockId'];
     $ownerType = $arParams['ownerType'];
     $ownerId = $arParams['ownerId'];
     $ID = $arParams['id'];
     $userId = $arParams['userId'];
     if ($USER) {
         $ownerName = $USER->GetFullName();
     } else {
         $rs = CUser::GetByID($userId);
         if ($arUser = $rs->Fetch()) {
             $name = trim($arUser['NAME'] . ' ' . $arUser['LAST_NAME']);
         }
     }
     $pathToUserCalendar = $arParams['pathToUserCalendar'];
     $arFilter = array("ID" => $ID, "IBLOCK_ID" => $iblockId);
     if ($arParams['bCheckPermissions'] !== false) {
         $arFilter[$ownerType == 'USER' ? "CREATED_BY" : "SOCNET_GROUP_ID"] = $ownerId;
     }
     $rsElement = CIBlockElement::GetList(array(), $arFilter, false, false, array("ID", "XML_ID", "IBLOCK_ID", "PROPERTY_PRIVATE", "PROPERTY_ACCESSIBILITY", "PROPERTY_IMPORTANCE", "PROPERTY_PARENT", "PROPERTY_LOCATION", "NAME", "DETAIL_TEXT", "IBLOCK_SECTION_ID", "ACTIVE_FROM", "ACTIVE_TO", "CREATED_BY", "PROPERTY_BXDAVEX_LABEL", "PROPERTY_BXDAVCD_LABEL"));
     if ($arElement = $rsElement->Fetch()) {
         $DB->StartTransaction();
         // PROPERTY_PARENT_VALUE - id of parent iblock element in meeting
         if (strlen($arElement["PROPERTY_PARENT_VALUE"]) > 0 && $arParams['bJustDel'] !== true) {
             if ($ownerType == 'USER') {
                 $rsHost = CIBlockElement::GetList(array(), array("=ID" => $arElement["PROPERTY_PARENT_VALUE"], "CREATED_BY" => $arElement['CREATED_BY']), false, false, array("ID", "IBLOCK_ID"));
                 // Owner delete mirror of the original event in the personal calendar
                 if ($arHost = $rsHost->Fetch()) {
                     CECEvent::Delete(array('bCheckPermissions' => false, 'id' => intVal($arHost['ID']), 'iblockId' => intVal($arHost['IBLOCK_ID']), 'ownerType' => '', 'ownerId' => 0, 'userId' => $userId, 'pathToUserCalendar' => $arParams['pathToUserCalendar'], 'pathToGroupCalendar' => $arParams['pathToGroupCalendar'], 'userIblockId' => $arParams['userIblockId'], 'RMiblockId' => $arParams['RMiblockId'], 'allowResMeeting' => $arParams['allowResMeeting'], 'VMiblockId' => $arParams['VMiblockId'], 'allowVideoMeeting' => $arParams['allowVideoMeeting']));
                     $this->ClearCache($this->cachePath . 'events/' . $arHost['IBLOCK_ID'] . '/');
                     return true;
                 }
             }
             // If no exchange
             CIBlockElement::SetPropertyValues($arElement["ID"], $arElement["IBLOCK_ID"], CEventCalendar::GetConfirmedID($iblockId, "N"), "CONFIRMED");
         } else {
             if ($arParams['bSyncDAV'] !== false) {
                 // Exchange
                 if (CEventCalendar::IsExchangeEnabled() && $ownerType == 'USER' && strlen($arElement['PROPERTY_BXDAVEX_LABEL_VALUE']) > 0) {
                     $eventXmlId = $arElement['XML_ID'];
                     $exchRes = CDavExchangeCalendar::DoDeleteItem($ownerId, $eventXmlId);
                     if ($exchRes !== true) {
                         return CEventCalendar::CollectExchangeErros($exchRes);
                     }
                 }
                 if (CEventCalendar::IsCalDAVEnabled() && $ownerType == 'USER' && strlen($arElement['PROPERTY_BXDAVCD_LABEL_VALUE']) > 0) {
                     $connectionId = CECCalendar::GetCalDAVConnectionId($iblockId, $arElement['IBLOCK_SECTION_ID']);
                     $calendarCalDAVXmlId = CECCalendar::GetCalDAVXmlId($iblockId, $arElement['IBLOCK_SECTION_ID']);
                     $DAVRes = CDavGroupdavClientCalendar::DoDeleteItem($connectionId, $calendarCalDAVXmlId, $arElement['XML_ID']);
                     if ($DAVRes !== true) {
                         return CEventCalendar::CollectCalDAVErros($DAVRes);
                     }
                 }
             }
             if (strlen($arElement["PROPERTY_LOCATION_VALUE"]) > 0) {
                 $loc = CEventCalendar::ParseLocation($arElement["PROPERTY_LOCATION_VALUE"]);
                 if ($loc['mrid'] == $arParams['VMiblockId'] && $loc['mrevid'] > 0) {
                     CEventCalendar::ReleaseVR(array('mrevid' => $loc['mrevid'], 'mrid' => $loc['mrid'], 'VMiblockId' => $arParams['VMiblockId'], 'allowVideoMeeting' => $arParams['allowVideoMeeting']));
                 } elseif ($loc['mrid'] > 0 && $loc['mrevid'] > 0) {
                     CEventCalendar::ReleaseMR(array('mrevid' => $loc['mrevid'], 'mrid' => $loc['mrid'], 'RMiblockId' => $arParams['RMiblockId'], 'allowResMeeting' => $arParams['allowResMeeting']));
                 }
             }
             $arGuests = CECEvent::GetGuests($arParams['userIblockId'], $ID);
             $obElement = new CIBlockElement();
             foreach ($arGuests as $guest_id => $arCalendarEvent) {
                 $res = CECEvent::Delete(array('id' => $arCalendarEvent["ID"], 'iblockId' => $arParams['userIblockId'], 'ownerType' => "USER", 'ownerId' => $guest_id, 'userId' => $userId, 'bJustDel' => true));
                 if ($userId == $guest_id) {
                     continue;
                 }
                 if ($arCalendarEvent["PROPERTY_VALUES"]["CONFIRMED"] != "N") {
                     // Send message
                     CEventCalendar::SendInvitationMessage(array('type' => "cancel", 'email' => $arCalendarEvent["CREATED_BY"]["EMAIL"], 'name' => $arCalendarEvent['NAME'], "from" => $arCalendarEvent["ACTIVE_FROM"], "to" => $arCalendarEvent["ACTIVE_TO"], "desc" => $arCalendarEvent['DETAIL_TEXT'], "pathToUserCalendar" => $pathToUserCalendar, "guestId" => $guest_id, "guestName" => $arCalendarEvent["CREATED_BY"]["FULL_NAME"], "userId" => $userId, "ownerName" => $ownerName));
                 }
             }
             if ($ownerType != 'USER') {
                 CEventCalendar::ClearCache('event_calendar/events/' . $arParams['userIblockId'] . '/');
             }
             // Deleting
             if (!CIBlockElement::Delete($ID)) {
                 $DB->Rollback();
                 return '[ECD1]' . GetMessage('EC_EVENT_ERROR_DEL');
             }
         }
         // log changes for socnet
         /*			if($this->bSocNetLog && $ownerType && !$arElement["PROPERTY_PRIVATE_VALUE"] && !$arParams['dontLogEvent'])
         			{
         				CEventCalendar::SocNetLog(
         					array(
         						'target' => 'delete_event',
         						'id' => $ID,
         						'name' => $arElement['NAME'],
         						'desc' => $arElement['DETAIL_TEXT'],
         						'from' => $arElement['ACTIVE_FROM'],
         						'to' => $arElement['ACTIVE_TO'],
         						'calendarId' => $arElement['IBLOCK_SECTION_ID'],
         						'accessibility' => $arElement["PROPERTY_ACCESSIBILITY_VALUE"],
         						'importance' => $arElement["PROPERTY_IMPORTANCE_VALUE"],
         						'pathToGroupCalendar' =>  $arParams["pathToGroupCalendar"],
         						'pathToUserCalendar' =>  $arParams["pathToUserCalendar"],
         						'iblockId' => $iblockId,
         						'ownerType' => $ownerType,
         						'ownerId' => $ownerId
         					)
         				);
         			}*/
         $DB->Commit();
     } else {
         return '[ECD2]' . GetMessage('EC_EVENT_NOT_FOUND');
     }
     return true;
 }
Esempio n. 4
0
COption::SetOptionString("intranet", "iblock_type_calendar", "events");
$rsIBlock = CIBlock::GetList(array(), array("CODE" => "calendar_employees", "TYPE" => "events", "SITE_ID" => WIZARD_SITE_ID));
if ($arIBlock = $rsIBlock->Fetch()) {
    COption::SetOptionString("intranet", "iblock_calendar", $arIBlock["ID"], false, WIZARD_SITE_ID);
}
COption::SetOptionString('intranet', 'iblock_type_tasks', 'services', false, WIZARD_SITE_ID);
$rsIBlock = CIBlock::GetList(array(), array("CODE" => "intranet_tasks", "TYPE" => "services", "SITE_ID" => WIZARD_SITE_ID));
if ($arIBlock = $rsIBlock->Fetch()) {
    COption::SetOptionString("intranet", "iblock_tasks", $arIBlock["ID"], false, WIZARD_SITE_ID);
}
COption::SetOptionString('intranet', 'path_user', WIZARD_SITE_DIR . 'company/personal/user/#USER_ID#/', false, WIZARD_SITE_ID);
COption::SetOptionString('intranet', 'path_task_user', WIZARD_SITE_DIR . 'company/personal/user/#USER_ID#/tasks/', false, WIZARD_SITE_ID);
COption::SetOptionString('intranet', 'path_task_user_entry', WIZARD_SITE_DIR . 'company/personal/user/#USER_ID#/tasks/task/view/#TASK_ID#/', false, WIZARD_SITE_ID);
COption::SetOptionString('intranet', 'path_task_group', WIZARD_SITE_DIR . 'workgroups/group/#GROUP_ID#/tasks/', false, WIZARD_SITE_ID);
COption::SetOptionString('intranet', 'path_task_group_entry', WIZARD_SITE_DIR . 'workgroups/group/#GROUP_ID#/tasks/task/view/#TASK_ID#/', false, WIZARD_SITE_ID);
if (CModule::IncludeModule("tasks")) {
    COption::SetOptionString("intranet", "use_tasks_2_0", "Y");
}
if (CModule::IncludeModule("dav")) {
    CAgent::AddAgent("CDavGroupdavClientCalendar::DataSync();", "dav", "N", 60);
    COption::SetOptionString("dav", "agent_calendar_caldav", "Y");
    if (LANGUAGE_ID == "de") {
        COption::SetOptionString("dav", "timezone", "Europe/Berlin");
    } elseif (LANGUAGE_ID == "en") {
        COption::SetOptionString("dav", "timezone", "America/New_York");
    } else {
        COption::SetOptionString("dav", "timezone", "Europe/Moscow");
    }
    CDavExchangeCalendar::InitUserEntity();
    CDavGroupdavClientCalendar::InitUserEntity();
}