Пример #1
0
 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;
 }