コード例 #1
0
 /**
  * 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;
 }