コード例 #1
0
 function CheckSign($sign, $userId, $calendarId)
 {
     return md5($userId . "||" . $calendarId . "||" . CECCalendar::GetUniqCalendarId()) == $sign;
 }
コード例 #2
0
ファイル: ws_calendar.php プロジェクト: mrdeadmouse/u136006
 function GetListItemChangesSinceToken($listName, $viewFields = '', $query = '', $rowLimit = 0, $changeToken = '')
 {
     global $APPLICATION, $USER;
     if (!($listName_original = CIntranetUtils::checkGUID($listName))) {
         return new CSoapFault('Data error', 'Wrong GUID - ' . $listName);
     }
     $listName = ToUpper(CIntranetUtils::makeGUID($listName_original));
     $obRes = CIBlockSection::GetList(array('SORT' => 'ASC'), array('XML_ID' => $listName_original));
     if (!($arSection = $obRes->Fetch())) {
         return new CSoapFault('List not found', 'List with ' . $listName . ' GUID is not found');
     }
     $arMethodParams = array('ownerType' => 'USER', 'ownerId' => $arSection['CREATED_BY'], 'bOwner' => true, 'iblockId' => $arSection['IBLOCK_ID'], 'sectionId' => $arSection['ID'], 'arCalendarIds' => array($arSection['ID']), 'forExport' => true);
     if ($changeToken) {
         $arMethodParams['bLoadAll'] = false;
         $arMethodParams['timestampFrom'] = ConvertTimeStamp($changeToken, 'FULL');
         if (!$arMethodParams['timestampFrom']) {
             return new CSoapFault('Params error', 'Wrong changeToken: ' . $changeToken);
         }
     } else {
         $arMethodParams['bLoadAll'] = true;
     }
     $obCalendar = new CEventCalendar();
     $obCalendar->Init(array('ownerType' => $arMethodParams['ownerType'], 'ownerId' => $arMethodParams['ownerId'], 'bOwner' => true, 'iblockId' => $arMethodParams['iblockId'], 'bCache' => false, 'userIblockId' => $arMethodParams['iblockId']));
     // dirty hack
     $arPermissions = $obCalendar->GetPermissions(array('setProperties' => true, 'ownerId' => $arSection['CREATED_BY']));
     $obCalendar->arCalenderIndex[$arSection['ID']]['PRIVATE_STATUS'] = CECCalendar::GetPrivateStatus($arSection['IBLOCK_ID'], $arSection['ID'], 'USER');
     $arCalendarEntries = $obCalendar->GetEvents($arMethodParams);
     $last_change = 0;
     $data = new CXMLCreator('listitems');
     $data->setAttribute('MinTimeBetweenSyncs', 0);
     $data->setAttribute('RecommendedTimeBetweenSyncs', 180);
     $data->setAttribute('TimeStamp', $this->__makeDateTime());
     $data->setAttribute('EffectivePermMask', 'FullMask');
     $data->addChild($obChanges = new CXMLCreator('Changes'));
     if (!$changeToken && !defined('OLD_OUTLOOK_VERSION')) {
         $obChanges->addChild($this->__getFieldsDefinition());
     }
     //TODO: the next thing is to do something like this for all deleted events.
     //$obChanges->addChild($obId = new CXMLCreator('Id'));
     //$obId->setAttribute('ChangeType', 'Delete');
     //$obId->setData('702');
     //<Id ChangeType="Delete">14</Id>
     $data->addChild($obData = new CXMLCreator('rs:data'));
     foreach ($arCalendarEntries as $key => $arRes) {
         if ($arRes['STATUS'] == 'Q') {
             continue;
         }
         $obData->addChild($this->__getRow($arRes, $listName, $last_change));
     }
     //$last_change = time();
     $obData->setAttribute('ItemCount', count($arCalendarEntries));
     $data->setAttribute('xmlns:rs', 'urn:schemas-microsoft-com:rowset');
     $data->setAttribute('xmlns:z', '#RowsetSchema');
     if ($last_change > 0) {
         $obChanges->setAttribute('LastChangeToken', $last_change);
     }
     return array('GetListItemChangesSinceTokenResult' => $data);
 }