예제 #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;
 }
예제 #2
0
 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;
 }