if ($subject === '') { $subject = GetMessage('CRM_EMAIL_ACTION_DEFAULT_SUBJECT', array('#DATE#' => $now)); } $description = $message; $descriptionHtml = $messageHtml; //$description = preg_replace('/<br\s*[^>]*>/i', PHP_EOL, $message); //$description = preg_replace('/<(?:\/)?[a-z0-9]+[^>]*>/i', '', $description); $arFields = array('OWNER_ID' => $ownerID, 'OWNER_TYPE_ID' => CCrmOwnerType::ResolveID($ownerTypeName), 'TYPE_ID' => CCrmActivityType::Email, 'SUBJECT' => $subject, 'START_TIME' => $now, 'END_TIME' => $now, 'COMPLETED' => 'Y', 'RESPONSIBLE_ID' => $userID, 'PRIORITY' => CCrmActivityPriority::Medium, 'DESCRIPTION' => $description, 'DESCRIPTION_TYPE' => CCrmContentType::BBCode, 'DIRECTION' => CCrmActivityDirection::Outgoing, 'LOCATION' => '', 'NOTIFY_TYPE' => CCrmActivityNotifyType::None, 'BINDINGS' => array_values($arBindings)); if (count($arFields['BINDINGS']) === 1) { // In single bindind mode override owner data $arBinding = $arFields['BINDINGS'][0]; $arFields['OWNER_TYPE_ID'] = $arBinding['OWNER_TYPE_ID']; $arFields['OWNER_ID'] = $arBinding['OWNER_ID']; } $storageTypeID = isset($data['storageTypeID']) ? intval($data['storageTypeID']) : CCrmActivityStorageType::Undefined; if ($storageTypeID === CCrmActivityStorageType::Undefined || !CCrmActivityStorageType::IsDefined($storageTypeID)) { if ($isNew) { $storageTypeID = CCrmActivity::GetDefaultStorageTypeID(); } else { $storageTypeID = CCrmActivity::GetStorageTypeID($ID); if ($storageTypeID === CCrmActivityStorageType::Undefined) { $storageTypeID = CCrmActivity::GetDefaultStorageTypeID(); } } } $arFields['STORAGE_TYPE_ID'] = $storageTypeID; if ($storageTypeID === CCrmActivityStorageType::File) { $arUserFiles = isset($data['files']) && is_array($data['files']) ? $data['files'] : array(); if (!empty($arUserFiles) || !$isNew) { $arPermittedFiles = array(); $arPreviousFiles = array();
public static function DoSaveElementIDs($ID, $storageTypeID, $arElementIDs) { global $DB; $ID = intval($ID); $storageTypeID = intval($storageTypeID); if ($ID <= 0 || !CCrmActivityStorageType::IsDefined($storageTypeID) || !is_array($arElementIDs)) { self::RegisterError(array('text' => 'Invalid arguments are supplied.')); return false; } $DB->Query('DELETE FROM ' . self::ELEMENT_TABLE_NAME . ' WHERE ACTIVITY_ID = ' . $ID, false, 'File: ' . __FILE__ . '<br/>Line: ' . __LINE__); if (empty($arElementIDs)) { return true; } $arRows = array(); foreach ($arElementIDs as $elementID) { $arRows[] = array('ACTIVITY_ID' => $ID, 'STORAGE_TYPE_ID' => $storageTypeID, 'ELEMENT_ID' => $elementID); } $bulkColumns = ''; $bulkValues = array(); foreach ($arRows as &$row) { $data = $DB->PrepareInsert(self::ELEMENT_TABLE_NAME, $row); if ($bulkColumns === '') { $bulkColumns = $data[0]; } $bulkValues[] = $data[1]; } unset($row); $query = ''; foreach ($bulkValues as &$value) { $query .= ($query !== '' ? ',' : '') . '(' . $value . ')'; } if ($query !== '') { $sql = 'INSERT INTO ' . self::ELEMENT_TABLE_NAME . '(' . $bulkColumns . ') VALUES ' . $query . ' ON DUPLICATE KEY UPDATE ELEMENT_ID = ELEMENT_ID, STORAGE_TYPE_ID = STORAGE_TYPE_ID, ACTIVITY_ID = ACTIVITY_ID'; $DB->Query($sql, false, 'File: ' . __FILE__ . '<br/>Line: ' . __LINE__); } return true; }
public static function PrepareActivityItem(&$item, &$params, $options = null) { if (!is_array($options)) { $options = array(); } $itemID = intval($item['ID']); if (!isset($item['SUBJECT'])) { $item['SUBJECT'] = ''; } if (!isset($item['DESCRIPTION'])) { $item['DESCRIPTION'] = ''; } if (!isset($item['LOCATION'])) { $item['LOCATION'] = ''; } $typeID = isset($item['TYPE_ID']) ? intval($item['TYPE_ID']) : CCrmActivityType::Undefined; $item['TYPE_ID'] = $typeID; $direction = isset($item['DIRECTION']) ? intval($item['DIRECTION']) : CCrmActivityDirection::Undefined; $item['DIRECTION'] = $direction; $priority = isset($item['PRIORITY']) ? intval($item['PRIORITY']) : CCrmActivityPriority::None; $item['PRIORITY'] = $priority; $item['IS_IMPORTANT'] = $priority === CCrmActivityPriority::High; $completed = isset($item['COMPLETED']) ? $item['COMPLETED'] === 'Y' : false; $item['COMPLETED'] = $completed ? 'Y' : 'N'; if ($typeID === CCrmActivityType::Task) { $taskID = isset($item['ASSOCIATED_ENTITY_ID']) ? intval($item['ASSOCIATED_ENTITY_ID']) : 0; $item['SHOW_URL'] = $taskID > 0 && isset($params['TASK_SHOW_URL_TEMPLATE']) ? CComponentEngine::MakePathFromTemplate($params['TASK_SHOW_URL_TEMPLATE'], array('user_id' => isset($params['USER_ID']) ? $params['USER_ID'] : CCrmSecurityHelper::GetCurrentUserID(), 'task_id' => $taskID)) : ''; $item['DEAD_LINE'] = isset($item['DEADLINE']) ? $item['DEADLINE'] : (isset($item['END_TIME']) ? $item['END_TIME'] : ''); } else { if (isset($params['ACTIVITY_SHOW_URL_TEMPLATE'])) { $item['SHOW_URL'] = CComponentEngine::makePathFromTemplate($params['ACTIVITY_SHOW_URL_TEMPLATE'], array('activity_id' => $itemID)); } $item['DEAD_LINE'] = isset($item['DEADLINE']) ? $item['DEADLINE'] : (isset($item['START_TIME']) ? $item['START_TIME'] : ''); } //OWNER_TITLE $ownerTitle = ''; $ownerID = isset($item['OWNER_ID']) ? intval($item['OWNER_ID']) : 0; $item['OWNER_ID'] = $ownerID; $ownerTypeID = isset($item['OWNER_TYPE_ID']) ? intval($item['OWNER_TYPE_ID']) : 0; $item['OWNER_TYPE_ID'] = $ownerTypeID; if ($ownerID > 0 && $ownerTypeID > 0) { $ownerTitle = CCrmOwnerType::GetCaption($ownerTypeID, $ownerID); } $item['OWNER_TITLE'] = $ownerTitle; //OWNER_SHOW_URL $ownerShowUrl = ''; if ($ownerID > 0) { if ($ownerTypeID === CCrmOwnerType::Lead) { $ownerShowUrl = isset($params['LEAD_SHOW_URL_TEMPLATE']) ? CComponentEngine::makePathFromTemplate($params['LEAD_SHOW_URL_TEMPLATE'], array('lead_id' => $ownerID)) : ''; } elseif ($ownerTypeID === CCrmOwnerType::Contact) { $ownerShowUrl = isset($params['CONTACT_SHOW_URL_TEMPLATE']) ? CComponentEngine::makePathFromTemplate($params['CONTACT_SHOW_URL_TEMPLATE'], array('contact_id' => $ownerID)) : ''; } elseif ($ownerTypeID === CCrmOwnerType::Company) { $ownerShowUrl = isset($params['COMPANY_SHOW_URL_TEMPLATE']) ? CComponentEngine::makePathFromTemplate($params['COMPANY_SHOW_URL_TEMPLATE'], array('company_id' => $ownerID)) : ''; } elseif ($ownerTypeID === CCrmOwnerType::Deal) { $ownerShowUrl = isset($params['DEAL_SHOW_URL_TEMPLATE']) ? CComponentEngine::makePathFromTemplate($params['DEAL_SHOW_URL_TEMPLATE'], array('deal_id' => $ownerID)) : ''; } } $item['OWNER_SHOW_URL'] = $ownerShowUrl; //IS_EXPIRED if ($item['COMPLETED'] === 'Y') { $item['IS_EXPIRED'] = false; } else { $time = isset($item['DEAD_LINE']) ? MakeTimeStamp($item['DEAD_LINE']) : 0; $item['IS_EXPIRED'] = $time !== 0 && $time <= time() + CTimeZone::GetOffset(); } $responsibleID = isset($item['RESPONSIBLE_ID']) ? intval($item['RESPONSIBLE_ID']) : 0; $item['RESPONSIBLE_ID'] = $responsibleID; $item['RESPONSIBLE_SHOW_URL'] = $responsibleID > 0 ? CComponentEngine::MakePathFromTemplate($params['USER_PROFILE_URL_TEMPLATE'], array('user_id' => $responsibleID)) : ''; $item['RESPONSIBLE_FORMATTED_NAME'] = $responsibleID > 0 && isset($params['NAME_TEMPLATE']) ? CUser::FormatName($params['NAME_TEMPLATE'], array('LOGIN' => isset($item['RESPONSIBLE_LOGIN']) ? $item['RESPONSIBLE_LOGIN'] : '', 'NAME' => isset($item['RESPONSIBLE_NAME']) ? $item['RESPONSIBLE_NAME'] : '', 'LAST_NAME' => isset($item['RESPONSIBLE_LAST_NAME']) ? $item['RESPONSIBLE_LAST_NAME'] : '', 'SECOND_NAME' => isset($item['RESPONSIBLE_SECOND_NAME']) ? $item['RESPONSIBLE_SECOND_NAME'] : ''), true, false) : ''; //COMMUNICATIONS if ($itemID > 0 && isset($options['ENABLE_COMMUNICATIONS']) && $options['ENABLE_COMMUNICATIONS'] && !isset($item['COMMUNICATIONS'])) { $item['COMMUNICATIONS'] = CCrmActivity::GetCommunications($itemID); } $storageTypeID = isset($item['STORAGE_TYPE_ID']) ? intval($item['STORAGE_TYPE_ID']) : CCrmActivityStorageType::Undefined; if ($storageTypeID === CCrmActivityStorageType::Undefined || !CCrmActivityStorageType::IsDefined($storageTypeID)) { $storageTypeID = CCrmActivity::GetDefaultStorageTypeID(); } $item['STORAGE_TYPE_ID'] = $storageTypeID; $item['FILES'] = array(); $item['DISK_FILES'] = array(); $item['WEBDAV_ELEMENTS'] = array(); if (isset($options['ENABLE_FILES']) && $options['ENABLE_FILES']) { CCrmActivity::PrepareStorageElementIDs($item); CCrmActivity::PrepareStorageElementInfo($item); } }