public static function FindContactCommunications($needle, $communicationType, $top = 50) { $needle = strval($needle); $communicationType = strval($communicationType); $top = intval($top); if ($needle === '') { return array(); } global $DB; $fieldMultiTableName = CCrmActivity::FIELD_MULTI_TABLE_NAME; $contactTableName = CCrmContact::TABLE_NAME; $companyTableName = CCrmCompany::TABLE_NAME; $result = array(); if ($communicationType === '') { //Search by FULL_NAME $sql = "SELECT C.ID AS ELEMENT_ID, '' AS VALUE_TYPE, '' AS VALUE, C.NAME, C.SECOND_NAME, C.LAST_NAME, CO.TITLE COMPANY_TITLE FROM {$contactTableName} C LEFT OUTER JOIN {$companyTableName} CO ON C.COMPANY_ID = CO.ID WHERE C.FULL_NAME LIKE '{$DB->ForSqlLike('%' . $needle . '%')}'"; if ($top > 0) { $sql = $DB->TopSql($sql, $top); } $dbRes = $DB->Query($sql, false, 'FILE: ' . __FILE__ . '<br /> LINE: ' . __LINE__); while ($arRes = $dbRes->Fetch()) { $result[] = CAllCrmActivity::ReadContactCommunication($arRes, $communicationType); } return $result; } //Search by FULL_NAME $sql = "SELECT FM.ELEMENT_ID, FM.VALUE_TYPE, FM.VALUE, C.NAME, C.SECOND_NAME, C.LAST_NAME, CO.TITLE COMPANY_TITLE FROM {$fieldMultiTableName} FM INNER JOIN {$contactTableName} C ON FM.ELEMENT_ID = C.ID AND FM.ENTITY_ID = 'CONTACT' AND FM.TYPE_ID = '{$DB->ForSql($communicationType)}' AND C.FULL_NAME LIKE '{$DB->ForSqlLike('%' . $needle . '%')}' LEFT OUTER JOIN {$companyTableName} CO ON C.COMPANY_ID = CO.ID"; if ($top > 0) { $sql = $DB->TopSql($sql, $top); } $dbRes = $DB->Query($sql, false, 'FILE: ' . __FILE__ . '<br /> LINE: ' . __LINE__); while ($arRes = $dbRes->Fetch()) { $result[] = CAllCrmActivity::ReadContactCommunication($arRes, $communicationType); } //Search by VALUE $sql = "SELECT FM.ELEMENT_ID, FM.VALUE_TYPE, FM.VALUE, C.NAME, C.SECOND_NAME, C.LAST_NAME, CO.TITLE COMPANY_TITLE FROM {$fieldMultiTableName} FM INNER JOIN {$contactTableName} C ON FM.ELEMENT_ID = C.ID AND FM.ENTITY_ID = 'CONTACT' AND FM.TYPE_ID = '{$DB->ForSql($communicationType)}' AND FM.VALUE LIKE '{$DB->ForSqlLike('%' . $needle . '%')}' LEFT OUTER JOIN {$companyTableName} CO ON C.COMPANY_ID = CO.ID"; if ($top > 0) { $sql = $DB->TopSql($sql, $top); } $dbRes = $DB->Query($sql, false, 'FILE: ' . __FILE__ . '<br /> LINE: ' . __LINE__); while ($arRes = $dbRes->Fetch()) { $result[] = CAllCrmActivity::ReadContactCommunication($arRes, $communicationType); } return $result; }