- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_event.php
- Класс: \CCrmEvent
- Вызов: CCrmEvent::Delete
public function Delete($ID, $arOptions = array())
{
global $USER;
if(isset($arOptions['CURRENT_USER']))
{
$iUserId = intval($arOptions['CURRENT_USER']);
}
else
{
$iUserId = $USER->GetId();
}
$err_mess = (self::err_mess()).'
Function: Delete
Line: ';
$ID = intval($ID);
$db_events = GetModuleEvents('crm', 'OnBeforeCrmEventDelete');
while($arEvent = $db_events->Fetch())
ExecuteModuleEventEx($arEvent, array($ID));
// if not admin - delete only self items
if (!CCrmPerms::IsAdmin($iUserId))
{
$sql = "SELECT CER.ID
FROM
b_crm_event_relations CER,
b_crm_event CE
WHERE
CE.ID = CER.EVENT_ID
AND CER.ID = '$ID'
AND CER.ASSIGNED_BY_ID = '".$iUserId."' AND CE.EVENT_TYPE = 0";
$res = $this->cdb->Query($sql, false, $err_mess.__LINE__);
if (!$res->Fetch())
return false;
}
// check unrelated events
$sql = "SELECT EVENT_ID, COUNT(ID) as CNT
FROM b_crm_event_relations
WHERE EVENT_ID = (SELECT EVENT_ID FROM b_crm_event_relations WHERE ID = '$ID')
GROUP BY EVENT_ID";
$res = $this->cdb->Query($sql, false, $err_mess.__LINE__);
if ($row = $res->Fetch())
{
// delete event
if ($row['CNT'] == 1)
{
$obRes = $this->cdb->Query("SELECT ID, FILES FROM b_crm_event WHERE ID = '$row[EVENT_ID]'", false, $err_mess.__LINE__);
if (($aRow = $obRes->Fetch()) !== false)
{
if (($arFiles = unserialize($aRow['FILES'], ['allowed_classes' => false])) !== false)
{
foreach ($arFiles as $iFileId)
CFile::Delete((int) $iFileId);
}
$this->cdb->Query("DELETE FROM b_crm_event WHERE ID = '$row[EVENT_ID]'", false, $err_mess.__LINE__);
}
}
}
// delete event relation
$res = $this->cdb->Query("DELETE FROM b_crm_event_relations WHERE ID = '$ID'", false, $err_mess.__LINE__);
return $res;
}