Пример #1
0
 /**
  * Возвращает количество подходящих соискателей по фильтру, переданному с http://hh.ru/employer/resumesSearch.do
  * а также линк на результаты.
  *
  * @param array $filter
  *   <hh:getFrlCount>
  *     <v-p> <!-- фильтр, массив -->
  *       <v k="kword">тест,программирование, буш, Java Script</v> <!-- ключевые слова, через запятую -->
  *       <v k="regions">1001,456</v> <!-- ид. ХХ-регионов. Если выбран родитель, то подразумевается, что должны быть включены все дети -->
  *       <v k="fields">1,2,3</v> <!-- ид. ХХ-профобластей. Если указана, то необходимо включить все специализации, относящиеся к этой области -->
  *       <v k="specs">1,2,3</v> <!-- ид. отдельный ХХ-специализаций -->
  *       <v k="cost">          <!-- месячная зарплата -->
  *         <v k="from">12</v>       <!-- от -->
  *         <v k="to">999</v>        <!-- до -->
  *         <v k="currency">USD</v>  <!-- валюта -->
  *       </v>
  *       <v k="wo_cost">1</v> <!-- включать ли в поиск людей, не указавших ЗП -->
  *       <v k="age">          <!-- возраст -->
  *         <v k="from">12</v>  <!-- от -->
  *         <v k="to">999</v>   <!-- до -->
  *       </v>
  *       <v k="wo_age">1</v>  <!-- включать ли в поиск людей, не указавших возраст -->
  *     </v-p>
  *   </hh:getFrlCount>
  *
  * @return array 
  */
 protected function x____getFrlCount($args)
 {
     list($filter) = $args;
     require_once ABS_PATH . '/classes/freelancer.php';
     require_once ABS_PATH . '/classes/memBuff.php';
     if (!is_array($filter)) {
         $filter = array();
     }
     $hh = new hh();
     $memBuff = new memBuff();
     $memkey = md5($hh->packFilter($filter));
     if ($mret = $memBuff->get($memkey)) {
         return $mret;
     }
     if ($filter['kword']) {
         require_once ABS_PATH . '/classes/kwords.php';
         $kwords = new kwords();
         $filter['orig_kwords'] = $filter['kword'];
         $filter['kword'] = $kwords->getKeys($filter['kword']);
     }
     if ($filter['regions']) {
         list($filter['country'], $filter['city']) = $hh->getCCByHHRegions($filter['regions']);
         unset($filter['regions']);
     }
     $pp1 = $pp2 = array();
     if ($filter['fields']) {
         if ($ppx = $hh->getProfessionsByHHFields($filter['fields'])) {
             $pp1 = $ppx;
         }
         unset($filter['fields']);
     }
     if ($filter['specs']) {
         if ($ppx = $hh->getProfessionsByHHSpecs($filter['specs'])) {
             $pp2 = $ppx;
         }
         unset($filter['specs']);
     }
     if ($pp1 || $pp2) {
         $filter['prof'][1] = $pp1 + $pp2;
     }
     if ($filter['cost']) {
         $filter['cost']['type_date'] = 1;
         $filter['cost']['cost_from'] = $filter['cost']['from'];
         $filter['cost']['cost_to'] = $filter['cost']['to'];
         if (($filter['cost']['cost_type'] = hh::$hh_currency2ex[strtoupper($filter['cost']['currency'])]) < 0) {
             $hhc = $hh->getHHCurrency($filter['cost']['currency']);
             $filter['cost']['cost_type'] = freelancer::RUR;
             $filter['cost']['cost_from'] /= $hhc['rate'];
             $filter['cost']['cost_to'] /= $hhc['rate'];
         }
         $filter['cost'] = array($filter['cost']);
     }
     if (isset($filter['wo_cost'])) {
         $filter['wo_cost'] = $this->ex2pg($filter['wo_cost'], EXTERNAL_DT_BOOL);
     }
     if ($filter['age']) {
         $filter['age'][0] = (int) $filter['age']['from'];
         $filter['age'][1] = (int) $filter['age']['to'];
     }
     if (isset($filter['wo_age'])) {
         $filter['wo_age'] = $this->ex2pg($filter['wo_age'], EXTERNAL_DT_BOOL);
     }
     if ($count = freelancer::getFrlCount($filter)) {
         $link = $hh->saveFilter($filter);
     }
     $ret = array('count' => $count, 'link' => $GLOBALS['host'] . '/freelancers/?hhf=' . $link);
     $memBuff->set($memkey, $ret, 1800);
     return $ret;
 }