コード例 #1
0
ファイル: freetray.php プロジェクト: kapai69/fl-ru-damp
 /**
  * Возвращает ленту проектов.
  * 
  * @param int   $kind      тип проектов (-1=5=Все проекты; 2=Конкурсы; 4=В офис; 6=Только для про)
  * @param array $filter    массив с фильтром проектов (тот же, что для projects::getProjects(), но разделы в таком виде: [[1,2,3], [44,55,66]], где по индексу 0 -- разделы, по 1 -- подразделы)
  * @param int   $page_size кол-во проектов на странице.
  *
  * @return array
  */
 protected function x____getProjects($args)
 {
     list($kind, $filter, $page_size) = $args;
     require_once ABS_PATH . '/classes/projects.php';
     require_once ABS_PATH . '/classes/projects_filter.php';
     require_once ABS_PATH . '/classes/professions.php';
     $result = null;
     $projects = new new_projects();
     $kind = $kind ? (int) $kind : $this->_mCfg['default_kind'];
     $page_size = (int) $page_size;
     $limit = $page_size > $this->_mCfg['max_page_size'] ? $this->_mCfg['max_page_size'] : ($page_size < $this->_mCfg['min_page_size'] ? $this->_mCfg['page_size'] : $page_size);
     if ($filter) {
         $filter['active'] = $this->ex2pg(EXTERNAL_TRUE, EXTERNAL_DT_BOOL);
         $filter['wo_cost'] = $this->ex2pg($filter['wo_cost'], EXTERNAL_DT_BOOL);
         $filter['only_sbr'] = $this->ex2pg($filter['prefer_sbr'], EXTERNAL_DT_BOOL);
         if ($filter['my_specs']) {
             $filter['my_specs'] = $this->ex2pg($filter['my_specs'], EXTERNAL_DT_BOOL);
             $filter['user_specs'] = professions::GetProfessionsByUser($this->_sess->_uid, false, true);
         }
         if (isset($filter['categories']) && is_array($filter['categories'])) {
             $filter['categories'] = intarrPgSql($filter['categories']);
             $cats = $filter['categories'];
             $filter['categories'] = array();
             foreach ($cats as $i => $arr) {
                 if ($i > 1) {
                     break;
                 }
                 if (is_array($arr) && !isNulArray($arr)) {
                     if ($i == 1) {
                         $arr = professions::GetMirroredProfs(implode(',', $arr));
                     }
                     $filter['categories'][$i] = array_fill_keys($arr, $i);
                 }
             }
         }
         list($filter['cost_from'], $filter['cost_to']) = projects_filters::preCosts($filter['cost_from'], $filter['cost_to']);
     }
     if ($prjs = $projects->getLastProjects($kind, $filter, $limit, true)) {
         foreach ($prjs as $key => $p) {
             $row = $this->pg2exRow($this->_mCfg['fields'], $p);
             if ($row['logo']) {
                 $row['logo'] = WDCPREFIX . '/' . $row['logo'];
             }
             if ($attach = $projects->getAllAttach($p['id'])) {
                 $row['attach'] = array();
                 foreach ($attach as $a) {
                     $att = $this->pg2exRow($this->_mCfg['attach-fields'], $a);
                     $att['link'] = WDCPREFIX . '/' . $a['path'] . $a['name'];
                     $row['attach'][] = $att;
                 }
             }
             $result[$key] = $row;
         }
     }
     return $result;
 }
コード例 #2
0
ファイル: mobile.php プロジェクト: Nikitian/fl-ru-damp
 /**
  * Получение одного проекта
  * 
  * @param  array $aParams массив входящих данных
  * @return array $aResult ответ
  */
 protected function x____projects_get($aParams = array())
 {
     $this->_validDevice($aParams);
     $sId = __paramValue('int', $aParams['id'], null, true);
     if (!empty($sId)) {
         require_once ABS_PATH . '/classes/projects.php';
         $oPrj = new new_projects();
         $aProject = $oPrj->GetPrjCust($sId);
         $aAttaches = $oPrj->getAllAttach($sId);
         if (!empty($aProject)) {
             if ($aProject['is_banned'] || $aProject['is_blocked']) {
                 // работодатель или проест заблокированы
                 $this->error(EXTERNAL_ERR_PROJECT_NOT_FOUND);
             }
             $aResult = array('item' => $this->_getProjectData($aProject));
             $nUid = get_uid(false);
             $aSpecs = new_projects::getSpecs($sId);
             if (is_array($aSpecs) && $aSpecs) {
                 $aResult['item']['category_id'] = $aSpecs[0]['category_id'];
                 $aResult['item']['subcategory_id'] = $aSpecs[0]['subcategory_id'];
             }
             $aResult['item']['attaches'] = array();
             if ($aAttaches) {
                 foreach ($aAttaches as $attach) {
                     $aResult['item']['attaches'][] = array("url" => WDCPREFIX . '/' . $attach['path'], "file" => $attach['name']);
                 }
             }
             $aResult['item']['responses'] = array();
             if ($aProject['kind'] == 7) {
                 // конкурс
                 require_once ABS_PATH . '/classes/contest.php';
                 $oContest = new contest($sId, $nUid, is_emp(), $aProject['user_id'] == $nUid, false, is_pro());
                 $oContest->GetOffers();
                 if (is_array($oContest->offers) && $oContest->offers) {
                     foreach ($oContest->offers as $aOne) {
                         $aResult['item']['responses'][] = $this->_getContestOfferData($aOne);
                     }
                 }
             } else {
                 // проект
                 require_once ABS_PATH . '/classes/projects_offers.php';
                 require_once ABS_PATH . '/classes/projects_offers_dialogue.php';
                 $oPrjOffers = new projects_offers();
                 $obj_dialogue = new projects_offers_dialogue();
                 $nOffersCnt = 0;
                 if (is_emp()) {
                     // залогинен работодатель
                     $aOffers = $oPrjOffers->GetPrjOffers($nOffersCnt, $sId, 'ALL', 0, $nUid, $aProject['user_id'] == $nUid, 'date', $aProject['user_id'] == $nUid ? 'a' : 'nor');
                 } else {
                     $aOffers = $oPrjOffers->GetPrjOffers($nOffersCnt, $sId, 'ALL', 0, $nUid, false, null, 'nor');
                 }
                 // Диалоги по предложениям к данному проекту и все остальное
                 if (is_array($aOffers) && $aOffers) {
                     foreach ($aOffers as $key => $value) {
                         $aOffers[$key]['exec_id'] = $aProject['exec_id'];
                         $aOffers[$key]['emp_uid'] = $aProject['user_id'];
                         $aOffers[$key]['dialogue'] = $obj_dialogue->GetDialogueForOffer($value['id']);
                         $aResult['item']['responses'][] = $this->_getProjectOfferData($aOffers[$key]);
                     }
                 }
                 $aResult['item']['responses_count'] = $nOffersCnt;
                 $aResult['item']['is_responses_exists'] = $oPrjOffers->OfferExist($sId, $nUid) ? 1 : 2;
                 // Наличие предложения данного юзера по данному проекту
                 if ($aResult['item']['is_responses_exists'] == 1) {
                     // Предложение данного пользователя по данному проекту
                     $user_offer = $oPrjOffers->GetPrjOffer($sId, $nUid);
                     $user_offer['exec_id'] = $aProject['exec_id'];
                     $user_offer['emp_uid'] = $aProject['user_id'];
                     // Диалог по предложению данного пользователя
                     $user_offer['dialogue'] = $obj_dialogue->GetDialogueForOffer($user_offer['id']);
                     $aResult['item']['responses'][] = $this->_getProjectOfferData($user_offer);
                 }
             }
         } else {
             $this->error(EXTERNAL_ERR_PROJECT_NOT_FOUND);
         }
     } else {
         $this->error(EXTERNAL_ERR_EMPTY_PROJECT_ID);
     }
     return $aResult;
 }