- Модуль: intranet
- Путь к файлу: ~/bitrix/modules/intranet/classes/general/ws_calendar.php
- Класс: CIntranetCalendarWS
- Вызов: CIntranetCalendarWS::UpdateListItems
function UpdateListItems($listName, $updates)
{
global $USER;
$arStatusValues = array_flip($this->arStatusValues);
$arPriorityValues = array_flip($this->arPriorityValues);
$arWeekDays = array_flip($this->arWeekDays);
if (!$listName_original = CIntranetUtils::checkGUID($listName))
{
return new CSoapFault('Data error', 'Wrong GUID - '.$listName);
}
$obResponse = new CXMLCreator('Results');
$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');
}
$bGroup = $arSection['SOCNET_GROUP_ID'] != '';
if ($bGroup)
{
CModule::IncludeModule('socialnetwork');
$arGroupTmp = CSocNetGroup::GetByID($arSection['SOCNET_GROUP_ID']);
if ($arGroupTmp["CLOSED"] == "Y")
if (COption::GetOptionString("socialnetwork", "work_with_closed_groups", "N") != "Y")
return new CSoapFault('Cannot modify archive group calendar', 'Cannot modify archive group calendar');
}
$obCalendar = new CEventCalendar();
$obCalendar->Init(array(
'ownerType' => $bGroup ? 'GROUP' : 'USER',
'ownerId' => $bGroup ? $arSection['SOCNET_GROUP_ID'] : ((is_object($USER) && $USER->GetID()) ? $USER->GetID() : false),
'bOwner' => true,
'iblockId' => $arSection['IBLOCK_ID'],
'bCache' => false,
//'userIblockId' => $arSection['IBLOCK_ID'],
));
// dirty hack
$arPermissions = $obCalendar->GetPermissions(
array(
'setProperties' => true, //'userId' => $USER->GetID(),//'ownerId' => $arSection['CREATED_BY'],
)
);
$obBatch = $updates->children[0];
$atrONERROR = $obBatch->getAttribute('OnError');
$atrDATEINUTC = $obBatch->getAttribute('DateInUtc');
$atrPROPERTIES = $obBatch->getAttribute('Properties');
$arChanges = $obBatch->children;
$arResultIDs = array();
$dateStart = ConvertTimeStamp(strtotime('-1 hour'), 'FULL');
$arResponseRows = array();
$arReplicationIDs = array();
foreach ($arChanges as $obMethod)
{
$arData = array('_command' => $obMethod->getAttribute('Cmd'));
foreach ($obMethod->children as $obField)
{
$name = $obField->getAttribute('Name');
if ($name == 'MetaInfo')
$name .= '_'.$obField->getAttribute('Property');
$arData[$name] = $obField->content;
}
if ($arData['_command'] == 'Delete')
{
$obRes = new CXMLCreator('Result');
$obRes->setAttribute('ID', $obMethod->getAttribute('ID').','.$arData['_command']);
$obRes->setAttribute('List', $listName);
$obRes->addChild($obNode = new CXMLCreator('ErrorCode'));
if (CECEvent::Delete(array(
'id' => $arData['ID'],
'ownerType' => $bGroup ? 'GROUP' : 'USER',
'ownerId' => $bGroup ? $arSection['SOCNET_GROUP_ID'] : ((is_object($USER) && $USER->GetID()) ? $USER->GetID() : false),
'bOwner' => true,
'iblockId' => $arSection['IBLOCK_ID'],
'RMiblockId' => $this->__getRMIblockID(),
'allowResMeeting' => true,
)))
{
$obCalendar->ClearCache('/event_calendar/events/'.$arSection['IBLOCK_ID'].'/');
$obNode->setData('0x00000000');
}
else
{
$obNode->setData('0x81020014');
}
/*
0x00000000 - ok
0x81020015 - data conflict
0x81020014 - generic error such as invalid value for Field
0x81020016 - item does not exist
*/
$obResponse->addChild($obRes);
}
elseif ($arData['_command'] == 'New' || $arData['_command'] == 'Update')
{
$q = ToLower($arData['Description']);
if (($pos = mb_strrpos($q, '