Exemplo n.º 1
0
 public static function merge($data)
 {
     static $connection = false;
     static $helper = false;
     if (!$connection) {
         $connection = \Bitrix\Main\Application::getConnection();
         $helper = $connection->getSqlHelper();
     }
     $userId = isset($data['USER_ID']) && intval($data['USER_ID']) > 0 ? intval($data['USER_ID']) : $GLOBALS['USER']->getId();
     if (is_array($data['CODE'])) {
         $dataModified = $data;
         foreach ($data['CODE'] as $code) {
             $dataModified['CODE'] = $code;
             FinderDestTable::merge($dataModified);
         }
         return;
     } else {
         $insertFields = array('USER_ID' => $userId, 'CODE' => strtoupper($data['CODE']), 'CONTEXT' => isset($data['CONTEXT']) ? strtoupper($data['CONTEXT']) : '', 'LAST_USE_DATE' => new \Bitrix\Main\DB\SqlExpression($helper->getCurrentDateTimeFunction()));
         if (preg_match('/^U(\\d+)$/i', $data['CODE'], $matches)) {
             $insertFields['CODE_USER_ID'] = intval($matches[1]);
             $insertFields['CODE_TYPE'] = 'U';
         } elseif (preg_match('/^SG(\\d+)$/i', $data['CODE'], $matches)) {
             $insertFields['CODE_TYPE'] = 'SG';
         } elseif (preg_match('/^D(\\d+)$/i', $data['CODE'], $matches) || preg_match('/^DR(\\d+)$/i', $data['CODE'], $matches)) {
             $insertFields['CODE_TYPE'] = 'D';
         } elseif (preg_match('/^CRMCONTACT(\\d+)$/i', $data['CODE'], $matches) || preg_match('/^CRMCOMPANY(\\d+)$/i', $data['CODE'], $matches) || preg_match('/^CRMDEAL(\\d+)$/i', $data['CODE'], $matches) || preg_match('/^CRMLEAD(\\d+)$/i', $data['CODE'], $matches)) {
             $insertFields['CODE_TYPE'] = 'CRM';
         }
         $merge = $helper->prepareMerge('b_finder_dest', array('USER_ID', 'CODE'), $insertFields, array('LAST_USE_DATE' => new \Bitrix\Main\DB\SqlExpression($helper->getCurrentDateTimeFunction())));
         if ($merge[0] != "") {
             $connection->query($merge[0]);
         }
         $cache = new \CPHPCache();
         $cache->cleanDir('/sonet/log_dest_sort/' . intval($userId / 100));
     }
 }