/**
  * (non-PHPdoc)
  * @see Syncroton_Data_IDataSearch::search()
  */
 public function search(Syncroton_Model_StoreRequest $store)
 {
     $storeResponse = new Syncroton_Model_StoreResponse();
     if (!isset($store->query['and']) || !isset($store->query['and']['freeText'])) {
         $storeResponse->total = 0;
         return $storeResponse;
     }
     $filter = new $this->_contentFilterClass(array(array('field' => 'query', 'operator' => 'contains', 'value' => $store->query['and']['freeText'])));
     if (isset($store->query['and']['collections'])) {
         // @todo search for multiple folders
         $folderId = $store->query['and']['collections'][0];
     } else {
         $folderId = Expressomail_Controller_Folder::getInstance()->getByBackendAndGlobalName(Tinebase_Core::getPreference('Expressomail')->{Expressomail_Preference::DEFAULTACCOUNT}, 'INBOX')->getId();
     }
     $this->_addContainerFilter($filter, $folderId);
     if (isset($store->options['range'])) {
         $pagination = new Tinebase_Model_Pagination(array('start' => $store->options['range'][0], 'limit' => $store->options['range'][1] - $store->options['range'][0]));
     } else {
         $pagination = null;
     }
     $serverIds = $this->_contentController->search($filter, $pagination, false, true, 'sync');
     $totalCount = $this->_contentController->searchCount($filter, 'sync');
     foreach ($serverIds as $serverId) {
         $email = $this->getEntry(new Syncroton_Model_SyncCollection(array('collectionId' => $folderId, 'options' => $store->options)), $serverId);
         $storeResponse->result[] = new Syncroton_Model_StoreResponseResult(array('class' => 'Email', 'longId' => $folderId . ActiveSync_Frontend_Abstract::LONGID_DELIMITER . $serverId, 'collectionId' => $folderId, 'properties' => $email));
     }
     $storeResponse->total = $totalCount;
     if (count($storeResponse->result) > 0) {
         $storeResponse->range = array($store->options['range'][0], $store->options['range'][1]);
     }
     return $storeResponse;
 }