protected static function save() { $ary = array(); foreach (self::$items as $entityTypeID => $time) { $ary[\CCrmOwnerType::ResolveName($entityTypeID)] = $time->format(\DateTime::ISO8601); } Main\Config\Option::set('crm', 'crm_uf_history', serialize($ary), ''); }
function __CrmDedupeListErrorText(Merger\EntityMergerException $e) { __IncludeLang(dirname(__FILE__) . '/lang/' . LANGUAGE_ID . '/' . basename(__FILE__)); $entityTypeID = $e->getEntityTypeID(); $entityID = $e->getEntityID(); $code = $e->getCode(); if ($code === Merger\EntityMergerException::GENERAL) { return GetMessage('CRM_DEDUPE_LIST_MERGE_GENERAL_ERROR'); } elseif ($code === Merger\EntityMergerException::NOT_FOUND) { return GetMessage('CRM_DEDUPE_LIST_MERGE_ERROR_NOT_FOUND', array('#ID#' => $entityID)); } $title = CCrmOwnerType::GetCaption($entityTypeID, $entityID, false); if (strlen($title) > 20) { $title = substr($title, 0, 17) . '...'; } if ($code === Merger\EntityMergerException::READ_DENIED) { return GetMessage('CRM_DEDUPE_LIST_MERGE_ERROR_READ_DENIED', array('#TITLE#' => $title, '#ID#' => $entityID)); } elseif ($code === Merger\EntityMergerException::UPDATE_DENIED) { return GetMessage('CRM_DEDUPE_LIST_MERGE_ERROR_UPDATE_DENIED', array('#TITLE#' => $title, '#ID#' => $entityID)); } elseif ($code === Merger\EntityMergerException::DELETE_DENIED) { return GetMessage('CRM_DEDUPE_LIST_MERGE_ERROR_DELETE_DENIED', array('#TITLE#' => $title, '#ID#' => $entityID)); } elseif ($code === Merger\EntityMergerException::UPDATE_FAILED) { return GetMessage('CRM_DEDUPE_LIST_MERGE_ERROR_UPDATE_FAILED', array('#TITLE#' => $title, '#ID#' => $entityID)); } elseif ($code === Merger\EntityMergerException::DELETE_FAILED) { return GetMessage('CRM_DEDUPE_LIST_MERGE_ERROR_DELETE_FAILED', array('#TITLE#' => $title, '#ID#' => $entityID)); } return $e->getMessage(); }
public static function GetDocumentNames($ownerTypeID, $ownerID) { if (!(IsModuleInstalled('bizproc') && CModule::IncludeModule('bizproc'))) { return false; } $ownerTypeID = intval($ownerTypeID); $ownerID = intval($ownerID); $docName = self::ResolveDocumentName($ownerTypeID); if ($docName === '') { return array(); } $ownerTypeName = CCrmOwnerType::ResolveName($ownerTypeID); if ($ownerTypeName === '') { return array(); } /*$arDocumentStates = CBPDocument::GetDocumentStates( array('crm', $docName, $ownerTypeName), array('crm', $docName, $ownerTypeName.'_'.$ownerID) );*/ $arDocumentStates = CBPStateService::GetDocumentStates(array('crm', $docName, $ownerTypeName . '_' . $ownerID)); $result = array(); foreach ($arDocumentStates as $arDocumentState) { if ($arDocumentState['ID'] !== '' && $arDocumentState['TEMPLATE_NAME'] !== '') { $result[] = $arDocumentState['TEMPLATE_NAME']; } } return $result; }
public function execute(array $contextData = null) { /** @var DealConverter $converter */ $converter = $this->converter; if (is_array($contextData) && !empty($contextData)) { $converter->setContextData(array_merge($converter->getContextData(), $contextData)); } $result = false; try { $converter->initialize(); do { $converter->executePhase(); } while ($converter->moveToNextPhase()); $resultData = $converter->getResultData(); if (isset($resultData[\CCrmOwnerType::InvoiceName])) { $this->redirectUrl = \CCrmOwnerType::GetEditUrl(\CCrmOwnerType::Invoice, $resultData[\CCrmOwnerType::InvoiceName], false); } elseif (isset($resultData[\CCrmOwnerType::QuoteName])) { $this->redirectUrl = \CCrmOwnerType::GetEditUrl(\CCrmOwnerType::Quote, $resultData[\CCrmOwnerType::QuoteName], false); } $result = true; } catch (EntityConversionException $e) { $this->exception = $e; if ($e->getTargetType() === EntityConversionException::TARG_DST) { $this->redirectUrl = \CCrmOwnerType::GetEditUrl($e->getDestinationEntityTypeID(), 0, false) . '?conv_deal_id=' . $converter->getEntityID(); } } catch (\Exception $e) { $this->errorText = $e->getMessage(); } $this->save(); return $result; }
public function __construct($entityTypeID, $seedID, $targID, $typeID) { if (!is_int($entityTypeID)) { $entityTypeID = (int) $entityTypeID; } if (!\CCrmOwnerType::IsDefined($entityTypeID)) { throw new Main\ArgumentException('Is not defined', 'entityTypeID'); } $this->entityTypeID = $entityTypeID; if (!is_int($seedID)) { $seedID = (int) $seedID; } if ($seedID <= 0) { throw new Main\ArgumentException('Must be greater than zero', 'seedID'); } $this->seedID = $seedID; if (!is_int($targID)) { $targID = (int) $targID; } if ($targID <= 0) { throw new Main\ArgumentException('Must be greater than zero', 'targID'); } $this->targID = $targID; if (!is_int($typeID)) { $typeID = (int) $typeID; } if (!self::isTypeDefined($typeID)) { throw new Main\ArgumentException('Is not defined', 'typeID'); } $this->typeID = $typeID; }
public function __construct($dstEntityTypeID, $srcEntityTypeID, $srcEntityID) { parent::__construct($dstEntityTypeID); $this->srcEntityTypeID = $srcEntityTypeID; $this->srcEntityTypeName = \CCrmOwnerType::ResolveName($srcEntityTypeID); $this->srcEntityID = $srcEntityID; }
public static function CheckImportPermission($enitityType, $userPermissions = null) { $enitityTypeName = is_numeric($enitityType) ? CCrmOwnerType::ResolveName($enitityType) : strtoupper(strval($enitityType)); if (!$userPermissions) { $userPermissions = self::GetUserPermissions(); } return !$userPermissions->HavePerm($enitityTypeName, BX_CRM_PERM_NONE, 'IMPORT'); }
protected function __construct($entityTypeID) { if (!is_int($entityTypeID)) { throw new Main\ArgumentTypeException('entityTypeID', 'integer'); } if (!\CCrmOwnerType::IsDefined($entityTypeID)) { throw new Main\NotSupportedException("Entity ID: '{$entityTypeID}' is not supported in current context"); } $this->entityTypeID = $entityTypeID; }
/** * Create conversion map for destination entity type * @static * @param int $entityTypeID Destination Entity Type ID * @return EntityConversionMap */ public static function createMap($entityTypeID) { if (!is_int($entityTypeID)) { $entityTypeID = (int) $entityTypeID; } if (!\CCrmOwnerType::IsDefined($entityTypeID)) { throw new Main\ArgumentOutOfRangeException('dstEntityTypeID', \CCrmOwnerType::FirstOwnerType, \CCrmOwnerType::LastOwnerType); } if ($entityTypeID !== \CCrmOwnerType::Deal && $entityTypeID !== \CCrmOwnerType::Invoice) { $dstEntityTypeName = \CCrmOwnerType::ResolveName($entityTypeID); throw new Main\NotSupportedException("Entity type: '{$dstEntityTypeName}' is not supported in current context"); } $map = new EntityConversionMap(\CCrmOwnerType::Quote, $entityTypeID); if ($entityTypeID === \CCrmOwnerType::Deal) { //region Deal Map Static Field Bindings $map->createItem('TITLE'); $map->createItem('COMMENTS'); $map->createItem('ASSIGNED_BY_ID'); $map->createItem('OPENED'); $map->createItem('OPPORTUNITY'); $map->createItem('CURRENCY_ID'); $map->createItem('TAX_VALUE'); $map->createItem('EXCH_RATE'); $map->createItem('LOCATION_ID'); $map->createItem('LEAD_ID'); $map->createItem('COMPANY_ID'); $map->createItem('CONTACT_ID'); $map->createItem('PRODUCT_ROWS'); //endregion //region Invoice Map User Field Bindings $intersections = UserFieldSynchronizer::getIntersection(\CCrmOwnerType::Quote, \CCrmOwnerType::Deal); foreach ($intersections as $intersection) { $map->createItem($intersection['SRC_FIELD_NAME'], $intersection['DST_FIELD_NAME']); } //endregion } if ($entityTypeID === \CCrmOwnerType::Invoice) { //region Invoice Map Static Field Bindings $map->createItem('TITLE', 'ORDER_TOPIC'); $map->createItem('COMPANY_ID', 'UF_COMPANY_ID'); $map->createItem('CONTACT_ID', 'UF_CONTACT_ID'); $map->createItem('DEAL_ID', 'UF_DEAL_ID'); $map->createItem('ASSIGNED_BY_ID', 'RESPONSIBLE_ID'); $map->createItem('COMMENTS'); $map->createItem('PRODUCT_ROWS'); //endregion //region Invoice Map User Field Bindings $intersections = UserFieldSynchronizer::getIntersection(\CCrmOwnerType::Quote, \CCrmOwnerType::Invoice); foreach ($intersections as $intersection) { $map->createItem($intersection['SRC_FIELD_NAME'], $intersection['DST_FIELD_NAME']); } //endregion } return $map; }
public function internalize(array $params) { $this->items = array(); foreach ($params as $k => $v) { $entityTypeID = \CCrmOwnerType::ResolveID($k); if ($entityTypeID !== \CCrmOwnerType::Undefined) { $item = new EntityConversionConfigItem($entityTypeID); $item->internalize($v); $this->addItem($item); } } }
/** * @return Duplicate */ public function createDuplicate($entityTypeID, $rootEntityID, $userID, $enablePermissionCheck, $enableRanking, $limit = 0) { if ($entityTypeID !== \CCrmOwnerType::Lead && $entityTypeID !== \CCrmOwnerType::Contact && $entityTypeID !== \CCrmOwnerType::Company) { throw new Main\NotSupportedException("Entity type: '" . \CCrmOwnerType::ResolveName($entityTypeID) . "' is not supported in current context"); } /** @var Duplicate $dup **/ $dup = new Duplicate($this, array()); $query = static::createQuery(); $query->addSelect('ENTITY_ID'); $query->addFilter('=ENTITY_TYPE_ID', $entityTypeID); static::setQueryFilter($query, $this->getMatches()); if ($enablePermissionCheck) { $permissions = isset($params['PERMISSIONS']) ? $params['PERMISSIONS'] : null; if ($permissions === null) { $permissions = \CCrmPerms::GetUserPermissions($userID); } $permissionSql = \CCrmPerms::BuildSql(\CCrmOwnerType::ResolveName($entityTypeID), '', 'READ', array('RAW_QUERY' => true, 'PERMS' => $permissions)); if ($permissionSql === false) { //Access denied; return null; } if ($permissionSql !== '') { $query->addFilter('@ENTITY_ID', new Main\DB\SqlExpression($permissionSql)); } } if ($limit > 0) { $query->setLimit($limit); } if ($rootEntityID > 0) { $dup->setRootEntityID($rootEntityID); $query->addFilter('!ENTITY_ID', $rootEntityID); $query->addFilter('!@ENTITY_ID', DuplicateIndexMismatch::prepareQueryField($this, $entityTypeID, $rootEntityID, $userID)); } $dbResult = $query->exec(); $rankings = array(); while ($fields = $dbResult->fetch()) { $entityID = isset($fields['ENTITY_ID']) ? intval($fields['ENTITY_ID']) : 0; if ($entityID <= 0) { continue; } $entity = new DuplicateEntity($entityTypeID, $entityID); if ($enableRanking) { $rankings[] = $entity->getRanking(); } $dup->addEntity($entity); } $this->onAfterDuplicateCreated($dup, $entityTypeID, $userID, $enablePermissionCheck, $enableRanking, $rankings); if ($enableRanking) { DuplicateEntityRanking::initializeBulk($rankings, array('CHECK_PERMISSIONS' => $enablePermissionCheck, 'USER_ID' => $userID)); } return $dup; }
protected function preparePermissionSql() { if ($this->permissionSql !== null) { return $this->permissionSql; } $userID = $this->getUserID(); if (\CCrmPerms::IsAdmin($userID)) { $this->permissionSql = ''; } else { $this->permissionSql = \CCrmPerms::BuildSql(\CCrmOwnerType::ResolveName($this->getEntityTypeID()), '', 'READ', array('RAW_QUERY' => true, 'PERMS' => \CCrmPerms::GetUserPermissions($userID))); } return $this->permissionSql; }
public function setEntityTypeID($entityTypeID) { if (!is_integer($entityTypeID)) { $entityTypeID = intval($entityTypeID); } if (!\CCrmOwnerType::IsDefined($entityTypeID)) { $entityTypeID = \CCrmOwnerType::Undefined; } if ($this->entityTypeID === $entityTypeID) { return; } $this->entityTypeID = $entityTypeID; }
public static function ParseEntityKey($key, &$entityInfo) { if (preg_match(self::$ENTITY_KEY, strval($key), $match) !== 1) { $entityInfo = array(); return false; } $entityTypeAbbr = strtoupper($match[1]); $entityID = intval($match[2]); $entityTypeID = CCrmOwnerType::ResolveID($entityTypeAbbr); $entityTypeName = CCrmOwnerType::ResolveName($entityTypeID); $entityInfo = array('ENTITY_TYPE_ABBR' => $entityTypeAbbr, 'ENTITY_TYPE_ID' => $entityTypeID, 'ENTITY_TYPE_NAME' => $entityTypeName, 'ENTITY_ID' => $entityID); return true; }
public static function GetDefaultGrigID($entityTypeID) { $entityTypeID = (int) $entityTypeID; if (!CCrmOwnerType::IsDefined($entityTypeID)) { return ''; } if ($entityTypeID === CCrmOwnerType::Lead) { return 'CRM_LEAD_LIST_V12'; } elseif ($entityTypeID === CCrmOwnerType::Deal) { return 'CRM_DEAL_LIST_V12'; } elseif ($entityTypeID === CCrmOwnerType::Contact) { return 'CRM_CONTACT_LIST_V12'; } elseif ($entityTypeID === CCrmOwnerType::Company) { return 'CRM_COMPANY_LIST_V12'; } return ''; }
public static function deleteByEntity($entityTypeID, $entityID) { if (!is_int($entityTypeID)) { $entityTypeID = (int) $entityTypeID; } if (!\CCrmOwnerType::IsDefined($entityTypeID)) { throw new Main\ArgumentException("Is not defined or invalid", 'entityTypeID'); } if (!is_int($entityID)) { $entityID = (int) $entityID; } if ($entityID <= 0) { throw new Main\ArgumentException("Must be greater than zero", 'entityID'); } $connection = Main\Application::getConnection(); $connection->queryExecute("DELETE FROM b_crm_dp_index_mismatch WHERE ENTITY_TYPE_ID = {$entityTypeID} AND L_ENTITY_ID = {$entityID}"); $connection->queryExecute("DELETE FROM b_crm_dp_index_mismatch WHERE ENTITY_TYPE_ID = {$entityTypeID} AND R_ENTITY_ID = {$entityID}"); }
/** Create new entity merger by specified entity type ID * @static * @param int $entityTypeID * @param int $currentUserID * @param bool $enablePermissionCheck * @return EntityMerger */ public static function create($entityTypeID, $currentUserID, $enablePermissionCheck = false) { if (!is_int($entityTypeID)) { $entityTypeID = (int) $entityTypeID; } if (!\CCrmOwnerType::IsDefined($entityTypeID)) { throw new Main\ArgumentException('Is not defined', 'entityTypeID'); } if ($entityTypeID === \CCrmOwnerType::Lead) { return new LeadMerger($currentUserID, $enablePermissionCheck); } elseif ($entityTypeID === \CCrmOwnerType::Contact) { return new ContactMerger($currentUserID, $enablePermissionCheck); } elseif ($entityTypeID === \CCrmOwnerType::Company) { return new CompanyMerger($currentUserID, $enablePermissionCheck); } else { throw new Main\NotSupportedException("Entity type: '" . \CCrmOwnerType::ResolveName($entityTypeID) . "' is not supported in current context"); } }
public function enabledFor($entityTypeID, $enable) { if (!is_int($entityTypeID)) { throw new Main\ArgumentTypeException('entityTypeID', 'integer'); } if (!\CCrmOwnerType::IsDefined($entityTypeID)) { throw new Main\NotSupportedException("Entity ID: '{$entityTypeID}' is not supported in current context"); } if (!is_bool($enable)) { if (is_numeric($enable)) { $enable = $enable > 0; } elseif (is_string($enable)) { $enable = strtoupper($enable) === 'Y'; } else { $enable = false; } } $this->settings['enableFor'][\CCrmOwnerType::ResolveName($entityTypeID)] = $enable ? 'Y' : 'N'; }
public function canRead($userId) { if ($this->canRead !== null) { return $this->canRead; } /** @noinspection PhpDynamicAsStaticMethodCallInspection */ if (\CSocNetUser::isCurrentUserModuleAdmin()) { $this->canRead = true; return $this->canRead; } if ($comment = $this->loadLogCommentData()) { if (strpos($comment["EVENT_ID"], "crm_") === 0) { $queryLog = \CSocNetLog::getList(array(), array("ID" => intval($comment["LOG_ID"])), false, false, array("ID", "ENTITY_TYPE", "ENTITY_ID")); if (($log = $queryLog->fetch()) && Loader::includeModule("crm")) { $userPermissions = \CCrmPerms::getUserPermissions($userId); if ($log["ENTITY_TYPE"] == "CRMACTIVITY") { $bindings = \CCRMActivity::getBindings($log["ENTITY_ID"]); foreach ($bindings as $binding) { if (\CCrmAuthorizationHelper::checkReadPermission(\CCrmOwnerType::resolveName($binding["OWNER_TYPE_ID"]), $binding["OWNER_ID"], $userPermissions)) { $this->canRead = true; return $this->canRead; } } } else { if (\CCrmAuthorizationHelper::checkReadPermission(\CCrmLiveFeedEntity::resolveEntityTypeID($log["ENTITY_TYPE"]), $log["ENTITY_ID"], $userPermissions)) { $this->canRead = true; return $this->canRead; } elseif (intval($comment["LOG_ID"]) > 0 && \CSocNetLogRights::checkForUser($comment["LOG_ID"], $userId)) { $this->canRead = true; return $this->canRead; } } } } elseif (intval($comment["LOG_ID"]) > 0 && \CSocNetLogRights::checkForUser($comment["LOG_ID"], $userId)) { $this->canRead = true; return $this->canRead; } } $this->canRead = false; return $this->canRead; }
public static function PrepareTemplate($template, $entityTypeID, $entityID, $contentTypeID = 0) { $template = strval($template); if ($template === '') { return ''; } $entityTypeName = CCrmOwnerType::ResolveName($entityTypeID); $entityID = intval($entityID); if ($entityTypeName === '' || $entityID <= 0) { return $template; } $matches = null; $result = preg_match_all('/#' . $entityTypeName . '\\.[^#]+#/i', $template, $matches, PREG_OFFSET_CAPTURE); if (!(is_int($result) && $result > 0)) { return $template; } $mapper = self::ResolveMapper($entityTypeID, $entityID); if ($mapper === null) { return $template; } $contentTypeID = intval($contentTypeID); if (!CCrmContentType::IsDefined($contentTypeID)) { $contentTypeID = CCrmContentType::PlainText; } $mapper->SetContentType($contentTypeID); $replaceKeys = array(); $replaceValues = array(); foreach ($matches[0] as &$match) { $key = $match[0]; if (isset($replacements[$key])) { continue; } $path = substr($key, 1, strlen($key) - 2); $replaceKeys[] = $key; $replaceValues[] = $mapper->MapPath($path); } unset($match); return !empty($replaceKeys) ? str_replace($replaceKeys, $replaceValues, $template) : $template; }
public static function create(array $fields = null, $sourceEntityTypeID = \CCrmOwnerType::Undefined, $destinationEntityTypeID = \CCrmOwnerType::Undefined) { if (!is_int($sourceEntityTypeID)) { throw new Main\ArgumentTypeException('sourceEntityTypeID', 'integer'); } if (!is_int($destinationEntityTypeID)) { throw new Main\ArgumentTypeException('destinationEntityTypeID', 'integer'); } if ($sourceEntityTypeID !== \CCrmOwnerType::Undefined && !\CCrmOwnerType::IsDefined($sourceEntityTypeID)) { $sourceEntityTypeID = \CCrmOwnerType::Undefined; } if ($destinationEntityTypeID !== \CCrmOwnerType::Undefined && !\CCrmOwnerType::IsDefined($destinationEntityTypeID)) { $destinationEntityTypeID = \CCrmOwnerType::Undefined; } if (\CCrmOwnerType::IsDefined($sourceEntityTypeID) && !\CCrmOwnerType::IsDefined($destinationEntityTypeID)) { $destinationEntityTypeID = $sourceEntityTypeID; } $adapter = null; if ($sourceEntityTypeID !== \CCrmOwnerType::Undefined && $destinationEntityTypeID !== \CCrmOwnerType::Undefined) { if ($sourceEntityTypeID === \CCrmOwnerType::Lead) { if ($destinationEntityTypeID === \CCrmOwnerType::Company) { $adapter = new EntityAdapter(\CCrmOwnerType::Lead, \CCrmOwnerType::Company, new Mapper(array('COMPANY_TITLE' => 'TITLE'))); } } elseif ($sourceEntityTypeID === \CCrmOwnerType::Company) { if ($destinationEntityTypeID === \CCrmOwnerType::Lead) { $adapter = new EntityAdapter(\CCrmOwnerType::Company, \CCrmOwnerType::Lead, new Mapper(array('TITLE' => 'COMPANY_TITLE'))); } } } if ($adapter === null) { $adapter = new EntityAdapter($sourceEntityTypeID, $destinationEntityTypeID); } if ($fields !== null) { $adapter->setFields($fields); } return $adapter; }
public function GetTypeMap($typeID) { $typeID = intval($typeID); if (!CCrmOwnerType::IsDefined($typeID)) { return null; } if (!isset(self::$MAP_BY_LANG[LANGUAGE_ID])) { self::$MAP_BY_LANG[LANGUAGE_ID] = array(); } if (isset(self::$MAP_BY_LANG[LANGUAGE_ID][$typeID])) { return self::$MAP_BY_LANG[LANGUAGE_ID][$typeID]; } IncludeModuleLangFile(__FILE__); if ($typeID === CCrmOwnerType::Lead) { return self::$MAP_BY_LANG[LANGUAGE_ID][CCrmOwnerType::Lead] = array('typeId' => CCrmOwnerType::Lead, 'typeName' => CCrmOwnerType::ResolveName(CCrmOwnerType::Lead), 'fields' => array(array('id' => 'ID', 'name' => 'ID'), array('id' => 'TITLE', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_TITLE')), array('id' => 'LAST_NAME', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_LAST_NAME')), array('id' => 'NAME', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_NAME')), array('id' => 'SECOND_NAME', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_SECOND_NAME')), array('id' => 'FORMATTED_NAME', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_FORMATTED_NAME')), array('id' => 'COMPANY_TITLE', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_COMPANY_TITLE')), array('id' => 'SOURCE', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_SOURCE')), array('id' => 'SOURCE_DESCRIPTION', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_SOURCE_DESCRIPTION')), array('id' => 'STATUS', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_STATUS')), array('id' => 'STATUS_DESCRIPTION', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_STATUS_DESCRIPTION')), array('id' => 'POST', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_POST')), array('id' => 'ADDRESS', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_ADDRESS')), array('id' => 'CURRENCY', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_CURRENCY')), array('id' => 'OPPORTUNITY', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_OPPORTUNITY')), array('id' => 'OPPORTUNITY_FORMATTED', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_OPPORTUNITY_FORMATTED')), array('id' => 'ASSIGNED_BY_FULL_NAME', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_ASSIGNED_BY_FULL_NAME')), array('id' => 'ASSIGNED_BY_WORK_POSITION', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_ASSIGNED_BY_POST')), array('id' => 'CREATED_BY_FULL_NAME', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_CREATED_BY_FULL_NAME')), array('id' => 'MODIFY_BY_FULL_NAME', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_MODIFY_BY_FULL_NAME')), array('id' => 'DATE_CREATE', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_DATE_CREATE')), array('id' => 'DATE_MODIFY', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_DATE_MODIFY')), array('id' => 'COMMENTS', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_COMMENTS')))); } elseif ($typeID === CCrmOwnerType::Deal) { return self::$MAP_BY_LANG[LANGUAGE_ID][CCrmOwnerType::Deal] = array('typeId' => CCrmOwnerType::Deal, 'typeName' => CCrmOwnerType::ResolveName(CCrmOwnerType::Deal), 'fields' => array(array('id' => 'ID', 'name' => 'ID'), array('id' => 'TITLE', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_TITLE')), array('id' => 'TYPE', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_TYPE')), array('id' => 'STAGE', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_STAGE')), array('id' => 'PROBABILITY', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_PROBABILITY')), array('id' => 'CURRENCY', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_CURRENCY')), array('id' => 'OPPORTUNITY', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_OPPORTUNITY')), array('id' => 'OPPORTUNITY_FORMATTED', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_OPPORTUNITY_FORMATTED')), array('id' => 'COMPANY', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_COMPANY'), 'typeId' => CCrmOwnerType::Company), array('id' => 'CONTACT', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_CONTACT'), 'typeId' => CCrmOwnerType::Contact), array('id' => 'BEGINDATE', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_BEGINDATE')), array('id' => 'CLOSEDATE', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_CLOSEDATE')), array('id' => 'ASSIGNED_BY_FULL_NAME', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_ASSIGNED_BY_FULL_NAME')), array('id' => 'ASSIGNED_BY_WORK_POSITION', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_ASSIGNED_BY_POST')), array('id' => 'CREATED_BY_FULL_NAME', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_CREATED_BY_FULL_NAME')), array('id' => 'MODIFY_BY_FULL_NAME', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_MODIFY_BY_FULL_NAME')), array('id' => 'DATE_CREATE', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_DATE_CREATE')), array('id' => 'DATE_MODIFY', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_DATE_MODIFY')), array('id' => 'COMMENTS', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_COMMENTS')))); } elseif ($typeID === CCrmOwnerType::Contact) { return self::$MAP_BY_LANG[LANGUAGE_ID][CCrmOwnerType::Contact] = array('typeId' => CCrmOwnerType::Contact, 'typeName' => CCrmOwnerType::ResolveName(CCrmOwnerType::Contact), 'fields' => array(array('id' => 'ID', 'name' => 'ID'), array('id' => 'LAST_NAME', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_LAST_NAME')), array('id' => 'NAME', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_NAME')), array('id' => 'SECOND_NAME', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_SECOND_NAME')), array('id' => 'FORMATTED_NAME', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_FORMATTED_NAME')), array('id' => 'POST', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_POST')), array('id' => 'ADDRESS', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_ADDRESS')), array('id' => 'TYPE', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_TYPE')), array('id' => 'SOURCE', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_SOURCE')), array('id' => 'SOURCE_DESCRIPTION', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_STATUS_DESCRIPTION')), array('id' => 'COMPANY', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_COMPANY'), 'typeId' => CCrmOwnerType::Company), array('id' => 'ASSIGNED_BY_FULL_NAME', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_ASSIGNED_BY_FULL_NAME')), array('id' => 'ASSIGNED_BY_WORK_POSITION', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_ASSIGNED_BY_POST')), array('id' => 'CREATED_BY_FULL_NAME', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_CREATED_BY_FULL_NAME')), array('id' => 'MODIFY_BY_FULL_NAME', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_MODIFY_BY_FULL_NAME')), array('id' => 'DATE_CREATE', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_DATE_CREATE')), array('id' => 'DATE_MODIFY', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_DATE_MODIFY')), array('id' => 'COMMENTS', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_COMMENTS')))); } elseif ($typeID === CCrmOwnerType::Company) { return self::$MAP_BY_LANG[LANGUAGE_ID][CCrmOwnerType::Company] = array('typeId' => CCrmOwnerType::Company, 'typeName' => CCrmOwnerType::ResolveName(CCrmOwnerType::Company), 'fields' => array(array('id' => 'ID', 'name' => 'ID'), array('id' => 'TITLE', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_TITLE')), array('id' => 'TYPE', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_COMPANY_TYPE')), array('id' => 'ADDRESS', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_ACTUAL_ADDRESS')), array('id' => 'ADDRESS_LEGAL', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_ADDRESS_LEGAL')), array('id' => 'BANKING_DETAILS', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_BANKING_DETAILS')), array('id' => 'INDUSTRY', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_INDUSTRY')), array('id' => 'EMPLOYEES', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_EMPLOYEES')), array('id' => 'CURRENCY', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_CURRENCY')), array('id' => 'REVENUE', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_REVENUE')), array('id' => 'REVENUE_FORMATTED', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_REVENUE_FORMATTED')), array('id' => 'ASSIGNED_BY_FULL_NAME', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_ASSIGNED_BY_FULL_NAME')), array('id' => 'ASSIGNED_BY_WORK_POSITION', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_ASSIGNED_BY_POST')), array('id' => 'CREATED_BY_FULL_NAME', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_CREATED_BY_FULL_NAME')), array('id' => 'MODIFY_BY_FULL_NAME', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_MODIFY_BY_FULL_NAME')), array('id' => 'DATE_CREATE', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_DATE_CREATE')), array('id' => 'DATE_MODIFY', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_DATE_MODIFY')), array('id' => 'COMMENTS', 'name' => GetMessage('CRM_TEMPLATE_ADAPTER_COMMENTS')))); } return null; }
$entityID = $arParams['ENTITY_ID'] = intval($_GET['entity_id']); } $arResult['ENTITY_ID'] = $entityID; if ($entityTypeID <= CCrmOwnerType::Undefined) { ShowError(GetMessage('CRM_PRODUCT_LIST_OWNER_TYPE_NOT_DEFINED')); return; } if ($entityTypeID !== CCrmOwnerType::Deal && $entityTypeID !== CCrmOwnerType::Lead && $entityTypeID !== CCrmOwnerType::Invoice) { ShowError(GetMessage('CRM_PRODUCT_LIST_OWNER_TYPE_NOT_SUPPORTED')); return; } if ($entityID <= 0) { ShowError(GetMessage('CRM_PRODUCT_LIST_OWNER_ID_NOT_DEFINED')); return; } $entityTypeName = CCrmOwnerType::ResolveName($entityTypeID); $userPerms = CCrmPerms::GetCurrentUserPermissions(); if (!CCrmAuthorizationHelper::CheckReadPermission($entityTypeName, $entityID, $userPerms)) { ShowError(GetMessage('CRM_PERMISSION_DENIED')); return; } $arParams['UID'] = isset($arParams['UID']) ? $arParams['UID'] : ''; if (!isset($arParams['UID']) || $arParams['UID'] === '') { $arParams['UID'] = 'mobile_crm_product_row_list'; } $arResult['UID'] = $arParams['UID']; $arResult['ITEMS'] = array(); $arResult['TAX_MODE'] = 'NONE'; if ($entityTypeID === CCrmOwnerType::Deal) { $dbRes = CCrmDeal::GetListEx(array(), array('ID' => $entityID, 'CHECK_PERMISSIONS' => 'N'), false, false, array('TITLE', 'CURRENCY_ID', 'OPPORTUNITY')); $arOwner = $dbRes ? $dbRes->Fetch() : null;
if (isset($filter['GRID_FILTER_APPLIED']) && $filter['GRID_FILTER_APPLIED'] && isset($filter['GRID_FILTER_ID'])) { $filterID = $filter['GRID_FILTER_ID']; $arResult['GRID_FILTER_ID'] = $filterID; $arResult['GRID_FILTER_NAME'] = isset($arResult['FILTER_PRESETS'][$filterID]) ? $arResult['FILTER_PRESETS'][$filterID]['name'] : GetMessage('M_CRM_CONTACT_LIST_FILTER_CUSTOM'); } else { $arResult['GRID_FILTER_NAME'] = GetMessage('M_CRM_CONTACT_LIST_FILTER_CUSTOM'); } if (isset($filter['FULL_NAME'])) { $filter['%FULL_NAME'] = $filter['FULL_NAME']; unset($filter['FULL_NAME']); } } } if ($companyID > 0) { $arResult['RUBRIC']['ENABLED'] = true; $arResult['RUBRIC']['TITLE'] = CCrmOwnerType::GetCaption(CCrmOwnerType::Company, $companyID); $filter['=COMPANY_ID'] = $companyID; } //Setup default filter name ('NONE') if it is not assigned if (!isset($arResult['GRID_FILTER_NAME']) || $arResult['GRID_FILTER_NAME'] === '') { $arResult['GRID_FILTER_NAME'] = GetMessage('M_CRM_CONTACT_LIST_FILTER_NONE'); } $arResult['ITEMS'] = array(); $dbRes = CCrmContact::GetListEx($sort, $filter, false, $navParams, $select); $dbRes->NavStart($navParams['nPageSize'], false); $arResult['PAGE_NAVNUM'] = intval($dbRes->NavNum); // pager index $arResult['PAGE_NUMBER'] = intval($dbRes->NavPageNomer); // current page index $arResult['PAGE_NAVCOUNT'] = intval($dbRes->NavPageCount); // page count
if ($siteID !== '') { define('SITE_ID', $siteID); } require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php'; if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) { die; } if (!CModule::IncludeModule('crm') || !CCrmSecurityHelper::IsAuthorized() || !check_bitrix_sessid()) { die; } $params = isset($_REQUEST['PARAMS']) ? $_REQUEST['PARAMS'] : array(); $entityTypeName = isset($params['ENTITY_TYPE_NAME']) ? strtoupper($params['ENTITY_TYPE_NAME']) : ''; if ($entityTypeName === '') { die; } $entityTypeID = CCrmOwnerType::ResolveID($entityTypeName); if ($entityTypeID === CCrmOwnerType::Undefined) { die; } $entityID = isset($params['ENTITY_ID']) ? $params['ENTITY_ID'] : 0; if ($entityID <= 0) { die; } $userPermissions = CCrmPerms::GetCurrentUserPermissions(); if (!CCrmAuthorizationHelper::CheckReadPermission($entityTypeName, $entityID, $userPermissions)) { die; } $formID = isset($params['FORM_ID']) ? $params['FORM_ID'] : ''; $pathToUserProfile = isset($params['PATH_TO_USER_PROFILE']) ? $params['PATH_TO_USER_PROFILE'] : ''; $postFormUri = isset($params['POST_FORM_URI']) ? $params['POST_FORM_URI'] : ''; if ($postFormUri !== '') {
", { userId: <?php echo $arResult['USER_ID']; ?> , entityTypeName: "<?php echo CCrmOwnerType::ResolveName($entityTypeID); ?> ", typeData: <?php echo CUtil::PhpToJSObject($arResult['TYPE_INFOS']); ?> , layoutName: "<?php echo CUtil::JSEscape(CCrmOwnerType::ResolveName($layoutID)); ?> ", enableLayout: <?php echo $enableLayout ? 'true' : 'false'; ?> , tableId: "<?php echo CUtil::JSEscape($listID); ?> ", serviceUrl: "<?php echo '/bitrix/components/bitrix/crm.dedupe.list/ajax.php?' . bitrix_sessid_get(); ?> ", itemData: <?php
if (!CModule::IncludeModule('crm') || !CCrmSecurityHelper::IsAuthorized() || !check_bitrix_sessid()) { die; } $componentData = isset($_REQUEST['PARAMS']) && is_array($_REQUEST['PARAMS']) ? $_REQUEST['PARAMS'] : array(); $componentParams = isset($componentData['params']) && is_array($componentData['params']) ? $componentData['params'] : array(); //Sanitaizing of Bindings (Only one binding is allowed in current context) $bindings = isset($componentParams['BINDINGS']) && is_array($componentParams['BINDINGS']) ? $componentParams['BINDINGS'] : array(); if (empty($bindings)) { die; } $binding = $bindings[0]; if (!is_array($binding)) { die; } $ownerTypeName = isset($binding['TYPE_NAME']) ? $binding['TYPE_NAME'] : ''; $ownerTypeID = CCrmOwnerType::ResolveID($ownerTypeName); $ownerID = isset($binding['ID']) ? (int) $binding['ID'] : 0; if ($ownerTypeID === CCrmOwnerType::Undefined || $ownerID <= 0) { die; } $userPermissions = CCrmPerms::GetCurrentUserPermissions(); if (!CCrmActivity::CheckReadPermission($ownerTypeID, $ownerID, $userPermissions)) { die; } if (count($bindings) > 1) { array_splice($bindings, 1); } $componentParams['BINDINGS'] = $componentData['params']['BINDINGS'] = $bindings; //Sanitaizing of Permission Type $permissionType = isset($componentParams['PERMISSION_TYPE']) ? strtoupper($componentParams['PERMISSION_TYPE']) : 'READ'; if ($permissionType !== 'READ' && !CCrmActivity::CheckUpdatePermission($ownerTypeID, $ownerID, $userPermissions)) {
public static function TrySendEmail($ID, &$arFields, &$arErrors) { global $APPLICATION; if (!CModule::IncludeModule('subscribe')) { $arErrors[] = array('CODE' => self::ERR_CANT_LOAD_SUBSCRIBE); return false; } $ID = intval($ID); if ($ID <= 0 && isset($arFields['ID'])) { $ID = intval($arFields['ID']); } if ($ID <= 0 || !is_array($arFields)) { $arErrors[] = array('CODE' => self::ERR_INVALID_DATA); return false; } $typeID = isset($arFields['TYPE_ID']) ? intval($arFields['TYPE_ID']) : CCrmActivityType::Undefined; if ($typeID !== CCrmActivityType::Email) { $arErrors[] = array('CODE' => self::ERR_INVALID_DATA); return false; } $urn = CCrmActivity::PrepareUrn($arFields); if (!($urn !== '' && CCrmActivity::Update($ID, array('URN' => $urn), false, false))) { $arErrors[] = array('CODE' => self::ERR_CANT_UPDATE_ACTIVITY); return false; } $settings = isset($arFields['SETTINGS']) && is_array($arFields['SETTINGS']) ? $arFields['SETTINGS'] : array(); // Creating Email --> $crmEmail = CCrmMailHelper::ExtractEmail(COption::GetOptionString('crm', 'mail', '')); $from = isset($settings['MESSAGE_FROM']) ? trim(strval($settings['MESSAGE_FROM'])) : ''; if ($from === '') { if ($crmEmail !== '') { $from = $crmEmail; } else { $arErrors[] = array('CODE' => self::ERR_CANT_FIND_EMAIL_FROM); } } elseif (!check_email($from)) { $arErrors[] = array('CODE' => self::ERR_INVALID_EMAIL, 'DATA' => array('EMAIL' => $from)); } //Save user email in settings --> if ($from !== CUserOptions::GetOption('crm', 'activity_email_addresser', '')) { CUserOptions::SetOption('crm', 'activity_email_addresser', $from); } //<-- Save user email in settings $to = array(); $commData = isset($arFields['COMMUNICATIONS']) ? $arFields['COMMUNICATIONS'] : array(); foreach ($commData as &$commDatum) { $commType = isset($commDatum['TYPE']) ? strtoupper(strval($commDatum['TYPE'])) : ''; $commValue = isset($commDatum['VALUE']) ? strval($commDatum['VALUE']) : ''; if ($commType !== 'EMAIL' || $commValue === '') { continue; } if (!check_email($commValue)) { $arErrors[] = array('CODE' => self::ERR_INVALID_EMAIL, 'DATA' => array('EMAIL' => $commValue)); continue; } $to[] = strtolower(trim($commValue)); } unset($commDatum); if (count($to) == 0) { $arErrors[] = array('CODE' => self::ERR_CANT_FIND_EMAIL_TO); } if (!empty($arErrors)) { return false; } // Try to resolve posting charset --> $postingCharset = ''; $siteCharset = defined('LANG_CHARSET') ? LANG_CHARSET : (defined('SITE_CHARSET') ? SITE_CHARSET : 'windows-1251'); $arSupportedCharset = explode(',', COption::GetOptionString('subscribe', 'posting_charset')); if (count($arSupportedCharset) === 0) { $postingCharset = $siteCharset; } else { foreach ($arSupportedCharset as $curCharset) { if (strcasecmp($curCharset, $siteCharset) === 0) { $postingCharset = $curCharset; break; } } if ($postingCharset === '') { $postingCharset = $arSupportedCharset[0]; } } //<-- Try to resolve posting charset $subject = isset($arFields['SUBJECT']) ? $arFields['SUBJECT'] : ''; $description = isset($arFields['DESCRIPTION']) ? $arFields['DESCRIPTION'] : ''; $descriptionType = isset($arFields['DESCRIPTION_TYPE']) ? intval($arFields['DESCRIPTION_TYPE']) : CCrmContentType::PlainText; $descriptionHtml = ''; if ($descriptionType === CCrmContentType::Html) { $descriptionHtml = $description; } elseif ($descriptionType === CCrmContentType::BBCode) { $parser = new CTextParser(); $descriptionHtml = $parser->convertText($description); } elseif ($descriptionType === CCrmContentType::PlainText) { $descriptionHtml = htmlspecialcharsbx($description); } $postingData = array('STATUS' => 'D', 'FROM_FIELD' => $from, 'TO_FIELD' => $from, 'BCC_FIELD' => implode(',', $to), 'SUBJECT' => $subject, 'BODY_TYPE' => 'html', 'BODY' => $descriptionHtml, 'DIRECT_SEND' => 'Y', 'SUBSCR_FORMAT' => 'html', 'CHARSET' => $postingCharset); CCrmActivity::InjectUrnInMessage($postingData, $urn, CCrmEMailCodeAllocation::GetCurrent()); $posting = new CPosting(); $postingID = $posting->Add($postingData); if ($postingID === false) { $arErrors[] = array('CODE' => self::ERR_CANT_ADD_POSTING, 'MESSAGE' => $posting->LAST_ERROR); return false; } $arUpdateFields = array('COMPLETED' => 'Y', 'ASSOCIATED_ENTITY_ID' => $postingID, 'SETTINGS' => $settings); $fromEmail = strtolower(trim(CCrmMailHelper::ExtractEmail($from))); if ($crmEmail !== '' && $fromEmail !== $crmEmail) { $arUpdateFields['SETTINGS']['MESSAGE_HEADERS'] = array('Reply-To' => "<{$fromEmail}>, <{$crmEmail}>"); } $arUpdateFields['SETTINGS']['IS_MESSAGE_SENT'] = true; if (!CCrmActivity::Update($ID, $arUpdateFields, false, false)) { $arErrors[] = array('CODE' => self::ERR_CANT_UPDATE_ACTIVITY); return false; } // <-- Creating Email // Attaching files --> $storageTypeID = isset($arFields['STORAGE_TYPE_ID']) ? intval($arFields['STORAGE_TYPE_ID']) : StorageType::Undefined; $storageElementsID = isset($arFields['STORAGE_ELEMENT_IDS']) && is_array($arFields['STORAGE_ELEMENT_IDS']) ? $arFields['STORAGE_ELEMENT_IDS'] : array(); $arRawFiles = StorageManager::makeFileArray($storageElementsID, $storageTypeID); foreach ($arRawFiles as &$arRawFile) { if (!$posting->SaveFile($postingID, $arRawFile)) { $arErrors[] = array('CODE' => self::ERR_CANT_SAVE_POSTING_FILE, 'MESSAGE' => $posting->LAST_ERROR); return false; } } unset($arRawFile); // <-- Attaching files // Sending Email --> if ($posting->ChangeStatus($postingID, 'P')) { $rsAgents = CAgent::GetList(array('ID' => 'DESC'), array('MODULE_ID' => 'subscribe', 'NAME' => 'CPosting::AutoSend(' . $postingID . ',%')); if (!$rsAgents->Fetch()) { CAgent::AddAgent('CPosting::AutoSend(' . $postingID . ',true);', 'subscribe', 'N', 0); } } // Try add event to entity $CCrmEvent = new CCrmEvent(); $ownerID = isset($arFields['OWNER_ID']) ? intval($arFields['OWNER_ID']) : 0; $ownerTypeID = isset($arFields['OWNER_TYPE_ID']) ? intval($arFields['OWNER_TYPE_ID']) : 0; if ($ownerID > 0 && $ownerTypeID > 0) { $eventText = ''; $eventText .= GetMessage('CRM_ACTIVITY_EMAIL_SUBJECT') . ': ' . $subject . "\n\r"; $eventText .= GetMessage('CRM_ACTIVITY_EMAIL_FROM') . ': ' . $from . "\n\r"; $eventText .= GetMessage('CRM_ACTIVITY_EMAIL_TO') . ': ' . implode(',', $to) . "\n\r\n\r"; $eventText .= $description; // Register event only for owner $CCrmEvent->Add(array('ENTITY' => array($ownerID => array('ENTITY_TYPE' => CCrmOwnerType::ResolveName($ownerTypeID), 'ENTITY_ID' => $ownerID)), 'EVENT_ID' => 'MESSAGE', 'EVENT_TEXT_1' => $eventText, 'FILES' => $arRawFiles)); } // <-- Sending Email return true; }
<?php if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) { die; } global $APPLICATION; $APPLICATION->SetAdditionalCSS("/bitrix/themes/.default/crm-entity-show.css"); $arTabs = array(); $arTabs[] = array('id' => 'tab_1', 'name' => GetMessage('CRM_TAB_1'), 'title' => GetMessage('CRM_TAB_1_TITLE'), 'icon' => '', 'fields' => $arResult['FIELDS']['tab_1']); $entityTypeCategories = CCrmOwnerType::GetAllCategoryCaptions(); $elementID = isset($arResult['ELEMENT']['ID']) ? $arResult['ELEMENT']['ID'] : 0; $arResult['CRM_CUSTOM_PAGE_TITLE'] = $elementID > 0 ? GetMessage('CRM_COMPANY_EDIT_TITLE', array('#ID#' => $elementID, '#TITLE#' => isset($arResult['ELEMENT']['TITLE']) ? $arResult['ELEMENT']['TITLE'] : '')) : GetMessage('CRM_COMPANY_CREATE_TITLE'); $formCustomHtml = '<input type="hidden" name="company_id" value="' . $elementID . '"/>'; $APPLICATION->IncludeComponent('bitrix:crm.interface.form', 'edit', array('FORM_ID' => $arResult['FORM_ID'], 'GRID_ID' => $arResult['GRID_ID'], 'TABS' => $arTabs, 'BUTTONS' => array('standard_buttons' => true, 'back_url' => $arResult['BACK_URL'], 'custom_html' => $formCustomHtml), 'IS_NEW' => $elementID <= 0, 'USER_FIELD_ENTITY_ID' => CCrmCompany::$sUFEntityID, 'TITLE' => $arResult['CRM_CUSTOM_PAGE_TITLE'], 'ENABLE_TACTILE_INTERFACE' => 'Y', 'DATA' => $arResult['ELEMENT'], 'SHOW_SETTINGS' => 'Y')); if ($arResult['DUPLICATE_CONTROL']['ENABLED']) { ?> <script type="text/javascript"> BX.ready( function() { var formID = "form_" + "<?php echo CUtil::JSEscape($arResult['FORM_ID']); ?> "; var form = BX(formID); BX.CrmDuplicateSummaryPopup.messages = { title: "<?php echo GetMessageJS("CRM_COMPANY_EDIT_DUP_CTRL_SHORT_SUMMARY_TITLE"); ?>
public static function registerEntityStatistics($entityTypeID, $entityID, array $entityFields) { $lastChanged = 0; $completeness = 0; if ($entityTypeID === \CCrmOwnerType::Contact) { if (isset($entityFields['DATE_MODIFY']) && $entityFields['DATE_MODIFY'] !== '') { $lastChanged = MakeTimeStamp($entityFields['DATE_MODIFY']); } if (isset($entityFields['NAME']) && $entityFields['NAME'] !== '') { $completeness++; } if (isset($entityFields['SECOND_NAME']) && $entityFields['SECOND_NAME'] !== '') { $completeness++; } if (isset($entityFields['LAST_NAME']) && $entityFields['LAST_NAME'] !== '') { $completeness++; } } elseif ($entityTypeID === \CCrmOwnerType::Company) { if (isset($entityFields['DATE_MODIFY']) && $entityFields['DATE_MODIFY'] !== '') { $lastChanged = MakeTimeStamp($entityFields['DATE_MODIFY']); } if (isset($entityFields['TITLE']) && $entityFields['TITLE'] !== '') { $completeness++; } if (isset($entityFields['ADDRESS']) && $entityFields['ADDRESS'] !== '') { $completeness++; } if (isset($entityFields['ADDRESS_LEGAL']) && $entityFields['ADDRESS_LEGAL'] !== '') { $completeness++; } } elseif ($entityTypeID === \CCrmOwnerType::Lead) { if (isset($entityFields['DATE_MODIFY']) && $entityFields['DATE_MODIFY'] !== '') { $lastChanged = MakeTimeStamp($entityFields['DATE_MODIFY']); } if (isset($entityFields['TITLE']) && $entityFields['TITLE'] !== '') { $completeness++; } if (isset($entityFields['COMPANY_TITLE']) && $entityFields['COMPANY_TITLE'] !== '') { $completeness++; } if (isset($entityFields['NAME']) && $entityFields['NAME'] !== '') { $completeness++; } if (isset($entityFields['SECOND_NAME']) && $entityFields['SECOND_NAME'] !== '') { $completeness++; } if (isset($entityFields['LAST_NAME']) && $entityFields['LAST_NAME'] !== '') { $completeness++; } if (isset($entityFields['ADDRESS']) && $entityFields['ADDRESS'] !== '') { $completeness++; } } else { throw new Main\NotSupportedException('Entity type: ' . \CCrmOwnerType::ResolveName($entityTypeID) . ' is not supported in current context'); } if ($lastChanged <= 0) { $lastChanged = time() + \CTimeZone::GetOffset(); } $completeness += count(DuplicateCommunicationCriterion::getRegisteredTypes($entityTypeID, $entityID)); Entity\DuplicateEntityStatisticsTable::upsert(array('ENTITY_TYPE_ID' => $entityTypeID, 'ENTITY_ID' => $entityID, 'RANKING_DATA' => serialize(array('LAST_CHANGED' => $lastChanged, 'COMPLETENESS' => $completeness)))); }