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; }