Exemplo n.º 1
0
 public function execute()
 {
     $userRole = $this->getLoginRole();
     $searchFor = $this->getContext()->getRequest()->getParameter("searchFor");
     $searchStr = $this->getContext()->getRequest()->getParameter("searchString");
     $sortBy = $this->getContext()->getRequest()->getParameter("sortBy");
     $sortOrder = $this->getContext()->getRequest()->getParameter("sortOrder");
     if (!$sortOrder) {
         $sortOrder = 'ASC';
     }
     $searchRequest = $this->getContext()->getRequest()->getParameter("search");
     $isAllDbSearch = $this->getContext()->getRequest()->getParameter("all");
     // number of records to display in one search result page.
     $recPerPage = 20;
     $currentPage = $this->getContext()->getRequest()->getParameter("page");
     if (!$currentPage) {
         $currentPage = 0;
     }
     $startRec = $currentPage * $recPerPage;
     if (!$startRec) {
         $startRec = 0;
     }
     if ($searchFor == 'Member') {
         if (!$sortBy) {
             $sortBy = "lastname";
         }
         $criteria = true;
         $dao = new BaseDao("Member");
         $criteria = $this->buildMembersCriteria($searchRequest);
         if ($userRole == 'editor' && !$isAllDbSearch) {
             $editorAffiliates = $this->findEditorAffiliates();
             $members = array();
             foreach ($editorAffiliates as $aff) {
                 $members = array_merge($members, $aff->getMembers());
             }
             $ids = $this->getListOfCertainFieldValues($members, "id");
             $ids = array_unique($ids);
             $inCriterion = new Criterion("id", CRI_FUNCTION_IN, $ids);
             $criteria = new Criteria($inCriterion, CRI_LOGICAL_AND, $criteria);
         }
         $totalCount = $dao->searchByCriteria($criteria, null, 0, 0, true);
         $entries = $dao->searchByCriteriaWithOrder($criteria, null, $recPerPage, $startRec, $sortBy, $sortOrder);
     } else {
         $dao = new BaseDao("Affiliate");
         $criteria = true;
         if (!$sortBy) {
             $sortBy = "name";
         }
         $criteria = $this->buildAffiliateCriteria($searchRequest);
         if ($userRole == 'editor' && !$isAllDbSearch) {
             $editorAffiliates = $this->findEditorAffiliates();
             $ids = $this->getListOfCertainFieldValues($editorAffiliates, "id");
             $inCriterion = new Criterion("id", CRI_FUNCTION_IN, $ids);
             $criteria = new Criteria($inCriterion, CRI_LOGICAL_AND, $criteria);
         }
         $totalCount = $dao->searchByCriteria($criteria, null, 0, 0, true);
         $entries = $dao->searchByCriteriaWithOrder($criteria, null, $recPerPage, $startRec, $sortBy, $sortOrder);
     }
     foreach ($entries as $e) {
         $e->dig();
     }
     $request = $this->getContext()->getRequest();
     $request->setAttribute('entries', $entries);
     $request->setAttribute('count', $totalCount);
     $request->setAttribute('first', $startRec + 1);
     $request->setAttribute('end', $startRec + $recPerPage > $totalCount ? $totalCount : $startRec + $recPerPage);
     $request->setAttribute('str', $searchStr);
     $request->setAttribute("pageCount", ceil($totalCount / $recPerPage));
     $request->setAttribute("currentPage", $currentPage);
     $request->setAttribute("searchRequest", $searchRequest);
     $request->setAttribute("searchUrl", $this->buildSearchUrl($searchRequest));
     $request->setAttribute("sortUrl", $this->buildSortUrl($sortBy, $sortOrder));
     $request->setAttribute("sortBy", $sortBy);
     $request->setAttribute("sortOrder", $sortOrder);
     $request->setAttribute("allDbSearch", $isAllDbSearch);
     $request->setAttribute("userRole", $userRole);
     /*		if($totalCount/$recPerPage > 1)
     		{
     			$pages=array();
     			for($i=0;$i<ceil($totalCount/$recPerPage);$i++)
     				$pages[$i] = $i;
     			$request->setAttribute('pages', $pages);
     		}*/
     return $searchFor;
 }