Пример #1
0
 public function isAccessible()
 {
     $listingTypeID = SJB_Array::get($this->params, 'listing_type_id');
     if ($listingTypeID) {
         $permissionLabel = 'view_' . strtolower($listingTypeID) . '_details';
         $this->setPermissionLabel($permissionLabel);
         $allow = parent::isAccessible() && SJB_System::isUserAccessThisPage();
         $listingID = SJB_Request::getVar('listing_id', false);
         $passedParametersViaUri = SJB_Request::getVar('passed_parameters_via_uri', false);
         if (!$listingID && $passedParametersViaUri) {
             $passedParametersViaUri = SJB_UrlParamProvider::getParams();
             if (isset($passedParametersViaUri[0])) {
                 $listingID = $passedParametersViaUri[0];
             }
         }
         if (SJB_UserManager::isUserLoggedIn()) {
             $currentUser = SJB_UserManager::getCurrentUser();
             if (!$allow && $listingID) {
                 $pageID = SJB_PageManager::getPageParentURI(SJB_Navigator::getURI(), SJB_System::getSystemSettings('SYSTEM_ACCESS_TYPE'), false);
                 $pageHasBeenVisited = SJB_ContractManager::isPageViewed($currentUser->getSID(), $pageID, $listingID);
                 if ($pageHasBeenVisited || strpos($pageID, 'print') !== false) {
                     $allow = true;
                 }
             }
             if (!$allow && 'Resume' == $listingTypeID && $listingID) {
                 // if view resume not allowed by ACL, check applications table
                 // for current resume ID, applied for one of current user jobs
                 // if present in applications - allow current user to view resume
                 // check for all jobs of current user
                 $cuJobs = SJB_ListingManager::getListingsByUserSID($currentUser->getSID());
                 $listingSids = array();
                 foreach ($cuJobs as $job) {
                     $listingSids[] = $job->getSID();
                 }
                 if (!empty($listingSids)) {
                     $result = SJB_DB::query('SELECT * FROM `applications` WHERE `resume` = ?n AND `listing_id` IN (?l) LIMIT 1', $listingID, $listingSids);
                     if (!empty($result)) {
                         $allow = true;
                     }
                 }
             }
         }
         return $allow;
     }
     return parent::isAccessible() && SJB_System::isUserAccessThisPage();
 }
Пример #2
0
 public function execute()
 {
     $tp = SJB_System::getTemplateProcessor();
     $displayTemplate = 'view.tpl';
     $errors = array();
     $filename = SJB_Request::getVar('filename', false);
     if ($filename) {
         $appsID = SJB_Request::getVar('appsID', false);
         if ($appsID) {
             $file = SJB_UploadFileManager::openApplicationFile($filename, $appsID);
             if (!$file) {
                 $errors['NO_SUCH_FILE'] = true;
             }
         } else {
             $errors['NO_SUCH_APPS'] = true;
         }
     }
     $cu = SJB_UserManager::getUserInfoBySID(SJB_Request::getVar('user_sid', null));
     $tp->assign('user_sid', $cu['sid']);
     $tp->assign('username', $cu['username']);
     $appJobId = SJB_Request::getVar('appJobId', false);
     // посортируем чего-нибуть
     $orderBy = SJB_Request::getVar('orderBy', 'date');
     $order = SJB_Request::getVar('order', 'desc');
     $tp->assign('orderBy', $orderBy);
     $tp->assign('order', $order);
     if (!empty($orderBy) && isset($order)) {
         switch ($orderBy) {
             case 'date':
                 $orderInfo = array('sorting_field' => 'date', 'sorting_order' => $order);
                 break;
             case 'title':
                 $orderInfo = array('sorting_field' => 'Title', 'sorting_order' => $order, 'inner_join' => array('table' => 'listings', 'field1' => 'sid', 'field2' => 'listing_id'));
                 break;
             case 'applicant':
                 $orderInfo = false;
                 $sortByUsername = true;
                 break;
             case 'status':
                 $orderInfo = array('sorting_field' => 'status', 'sorting_order' => $order);
                 break;
             case 'company':
                 $orderInfo = array('sorting_field' => 'CompanyName', 'sorting_order' => $order, 'inner_join' => array('table' => 'listings', 'field1' => 'sid', 'field2' => 'listing_id'), 'inner_join2' => array('table1' => 'users', 'table2' => 'listings', 'field1' => 'sid', 'field2' => 'user_sid'));
                 break;
         }
     }
     if ($cu['user_group_sid'] == 41) {
         // Работадатель
         if (isset($_REQUEST['action'])) {
             switch ($_REQUEST['action']) {
                 case 'approve':
                     if (isset($_POST['applications'])) {
                         foreach ($_POST['applications'] as $key => $value) {
                             SJB_Applications::accept($key);
                         }
                     }
                     break;
                 case 'reject':
                     if (isset($_POST['applications'])) {
                         foreach ($_POST['applications'] as $key => $value) {
                             SJB_Applications::reject($key);
                         }
                     }
                     break;
                 case 'delete':
                     if (isset($_POST['applications'])) {
                         foreach ($_POST['applications'] as $key => $value) {
                             SJB_Applications::hideEmp($key);
                         }
                     }
                     break;
             }
         }
         if ($appJobId) {
             $apps = SJB_Applications::getByJob($appJobId, $orderInfo);
         } else {
             $apps = SJB_Applications::getByEmployer($cu['sid'], $orderInfo);
         }
         for ($i = 0; $i < count($apps); ++$i) {
             $apps[$i]['job'] = SJB_ListingManager::getListingInfoBySID($apps[$i]['listing_id']);
             if (isset($apps[$i]['resume']) && !empty($apps[$i]['resume'])) {
                 $apps[$i]['resumeInfo'] = SJB_ListingManager::getListingInfoBySID($apps[$i]['resume']);
             }
             if ($apps[$i]['jobseeker_id'] == 0) {
                 $apps[$i]['user']['FirstName'] = $apps[$i]['username'];
             } else {
                 $apps[$i]['user'] = SJB_UserManager::getUserInfoBySID($apps[$i]['jobseeker_id']);
             }
         }
         $jobs = SJB_ListingManager::getListingsByUserSID($cu['sid']);
         $appJobs = array();
         foreach ($jobs as $job) {
             $appJobs[] = array('title' => $job->details->properties['Title']->value, 'id' => $job->sid);
         }
         $tp->assign('appJobs', $appJobs);
         $tp->assign('current_filter', $appJobId);
     } else {
         // Соискатель
         if (SJB_Request::getVar('action', '', SJB_Request::METHOD_POST) == 'Delete selected') {
             if (isset($_POST['applications'])) {
                 foreach ($_POST['applications'] as $key => $value) {
                     SJB_Applications::hideJS($key);
                 }
             }
         }
         $apps = SJB_Applications::getByJobseeker($cu['sid'], $orderInfo);
         for ($i = 0; $i < count($apps); ++$i) {
             $apps[$i]['job'] = SJB_ListingManager::getListingInfoBySID($apps[$i]['listing_id']);
             $apps[$i]['company'] = SJB_UserManager::getUserInfoBySID($apps[$i]['job']['user_sid']);
         }
         $displayTemplate = 'view_seeker.tpl';
     }
     if (isset($sortByUsername)) {
         $order = $order == 'desc' ? SORT_DESC : SORT_ASC;
         foreach ($apps as $key => $value) {
             if (!isset($apps[$key]['user']['FirstName'])) {
                 $apps[$key]['user']['FirstName'] = '';
             }
             if (!isset($apps[$key]['user']['LastName'])) {
                 $apps[$key]['user']['LastName'] = '';
             }
             $sortKeys[$key] = $apps[$key]['user']['FirstName'] . ' ' . $apps[$key]['user']['LastName'];
         }
         if ($apps) {
             array_multisort($sortKeys, $order, SORT_REGULAR, $apps);
         }
     }
     $userGroupInfo = SJB_UserGroupManager::getUserGroupInfoBySID($cu['user_group_sid']);
     SJB_System::setGlobalTemplateVariable('wikiExtraParam', $userGroupInfo['id']);
     $tp->assign('METADATA', SJB_Application::getApplicationMeta());
     $tp->assign("user_group_info", $userGroupInfo);
     $tp->assign('applications', $apps);
     $tp->assign('errors', $errors);
     $tp->display($displayTemplate);
 }