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), '');
 }
Exemple #2
0
 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;
 }
Exemple #13
0
 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;
 }
Exemple #14
0
 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;
 }
Exemple #15
0
 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;
 }
Exemple #23
0
    $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;
Exemple #24
0
        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
Exemple #25
0
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 !== '') {
Exemple #26
0
",
				{
					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 
Exemple #27
0
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)) {
Exemple #28
0
 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;
 }
Exemple #29
0
<?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))));
 }