示例#1
0
 /**
  * Liefert den Searcher
  *
  * @return 	tx_rnbase_util_SearchBase
  */
 protected function getSearcher()
 {
     tx_rnbase::load('tx_rnbase_util_SearchBase');
     $searcher = tx_rnbase_util_SearchBase::getInstance($this->getSearchClass());
     if (!$searcher instanceof tx_rnbase_util_SearchBase) {
         throw new Exception(get_class($this) . '->getSearchClass() has to return a classname' . ' of class which extends tx_rnbase_util_SearchBase!');
     }
     return $searcher;
 }
 /**
  *
  * @param tx_rnbase_IParameters $parameters
  * @param tx_rnbase_configurations $configurations
  * @param ArrayObject $viewData
  * @return string error msg or null
  */
 public function handleRequest(&$parameters, &$configurations, &$viewData)
 {
     // confIdExtended setzen
     $this->confIdExtended = $configurations->get($this->getConfId() . 'extendedConfId');
     $this->confIdExtended = $this->confIdExtended ? $this->confIdExtended : 'default';
     $confId = $this->getExtendedConfId();
     // Filter erstellen.
     /* @var $filter tx_rnbase_filter_BaseFilter */
     $filter = tx_rnbase_filter_BaseFilter::createFilter($parameters, $configurations, $viewData, $confId . 'filter.');
     $fields = $options = array();
     // Searcher instanzieren. Konfiguriert wird er über die options['searchdef']
     /* @var $searcher tx_rnbase_util_SearchGeneric */
     tx_rnbase::load('tx_rnbase_util_SearchBase');
     $searcher = tx_rnbase_util_SearchBase::getInstance('tx_rnbase_util_SearchGeneric');
     // Dem Filter den Searcher übergeben, fall er diese Möglichkeit bietet.
     if (method_exists($filter, 'setSearcher')) {
         $filter->setSearcher($searcher);
     }
     // Suche initialisieren und nur ausführen wenn der Filter es erlaubt.
     if ($doSearch = $filter->init($fields, $options)) {
         // Soll ein PageBrowser verwendet werden?
         if ($configurations->get($confId . 'pagebrowser')) {
             $pbOptions = array('searchcallback' => array($searcher, 'search'));
             $cbOptions['pbid'] = ($var = $configurations->get($confId . 'pagebrowser.cbid')) ? $var : 'pb' . $this->confIdExtended;
             $filter->handlePageBrowser($configurations, $confId . 'pagebrowser', $viewData, $fields, $options, $pbOptions);
         }
         // Soll ein CharBrowser verwendet werden?
         if ($configurations->get($confId . 'charbrowser')) {
             // optionen sammeln
             $cbOptions = array('searchcallback' => array($searcher, 'search'));
             $cbOptions['colname'] = ($var = $configurations->get($confId . 'charbrowser.colname')) ? $var : 'title';
             $cbOptions['specials'] = ($var = $configurations->get($confId . 'charbrowser.specials')) ? $var : 'last';
             $cbOptions['cbid'] = ($var = $configurations->get($confId . 'charbrowser.cbid')) ? $var : 'cb' . $this->confIdExtended;
             $filter->handleCharBrowser($configurations, $confId . 'charbrowser', $viewData, $fields, $options, $cbOptions);
         }
         // items besorgen.
         $items = $searcher->search($fields, $options);
     } else {
         $items = array();
     }
     $viewData->offsetSet('items', $items);
     $viewData->offsetSet('searched', $doSearch);
     return null;
 }
 /**
  * Return an instantiated dummy model without any content
  *
  * This is used only to access several model info methods like
  * getTableName(), getColumnNames() etc.
  *
  * @return Tx_Rnbase_Domain_Model_RecordInterface
  */
 private function getDummyModel()
 {
     if (!$this->dummyModel) {
         $searcher = tx_rnbase_util_SearchBase::getInstance($this->getSearchClass());
         $this->dummyModel = tx_rnbase::makeInstance($searcher->getWrapperClass(), array('uid' => 0));
     }
     return $this->dummyModel;
 }
 /**
  *
  * @return 	tx_rnbase_util_SearchBase
  */
 protected function getSearcher()
 {
     return tx_rnbase_util_SearchBase::getInstance($this->getSearchClass());
 }