/** * Format search results. * * @param string $order * @param array $items * @param array $folders * @param array $communities * @param array $users * @return array * @throws Zend_Exception */ private function _formatResults($order, $items, $folders, $communities, $users) { foreach ($users as $key => $user) { $users[$key]->name = $user->getLastname(); $users[$key]->date_update = $user->getCreation(); } foreach ($communities as $key => $community) { $communities[$key]->date_update = $community->getCreation(); } $results = array_merge($folders, $items, $communities, $users); Zend_Loader::loadClass('SortdaoComponent', BASE_PATH . '/core/controllers/components'); Zend_Loader::loadClass('DateComponent', BASE_PATH . '/core/controllers/components'); $sortdaoComponent = new SortdaoComponent(); $dateComponent = new DateComponent(); switch ($order) { case 'relevance': $sortdaoComponent->field = 'score'; $sortdaoComponent->field2 = 'name'; $sortdaoComponent->order = 'desc'; $sortdaoComponent->order2 = 'asc'; foreach ($results as $key => $result) { if (!isset($result->score)) { $results[$key]->score = 1; } } usort($results, array($sortdaoComponent, 'sortByNumberThenName')); break; case 'name': $sortdaoComponent->field = 'name'; $sortdaoComponent->order = 'asc'; usort($results, array($sortdaoComponent, 'sortByName')); break; case 'date': $sortdaoComponent->field = 'date_update'; $sortdaoComponent->order = 'asc'; usort($results, array($sortdaoComponent, 'sortByDate')); break; case 'view': $sortdaoComponent->field = 'view'; $sortdaoComponent->order = 'desc'; usort($results, array($sortdaoComponent, 'sortByNumber')); break; default: throw new Zend_Exception('Error in order parameter, not one of the expected values.'); break; } $resultsArray = array(); foreach ($results as $result) { $tmp = $result->toArray(); if ($result instanceof UserDao) { $tmp['resultType'] = 'user'; $tmp['formattedDate'] = $dateComponent->formatDate($result->getCreation()); } if ($result instanceof ItemDao) { $tmp['resultType'] = 'item'; $tmp['formattedDate'] = $dateComponent->formatDate($result->getDateUpdate()); } if ($result instanceof CommunityDao) { $tmp['resultType'] = 'community'; $tmp['formattedDate'] = $dateComponent->formatDate($result->getCreation()); } if ($result instanceof FolderDao) { $tmp['resultType'] = 'folder'; $tmp['formattedDate'] = $dateComponent->formatDate($result->getDateUpdate()); } unset($tmp['password']); unset($tmp['email']); $resultsArray[] = $tmp; } return $resultsArray; }