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 OnSocNetGroupDelete($groupId) { $groupId = intVal($groupId); if ($groupId > 0) { $res = CCalendarSect::GetList(array('arFilter' => array('CAL_TYPE' => 'group', 'OWNER_ID' => $groupId), 'checkPermissions' => false)); foreach ($res as $sect) { CCalendarSect::Delete($sect['ID'], false); } } return true; }