/**
  * This function is called in addBrowseTableColumns() to filter the names displayed
  * by AnswerModelSnippetGeneric.
  *
  * @see \Gems_Tracker_Snippets_AnswerModelSnippetGeneric
  *
  * @param \MUtil_Model_Bridge_TableBridge $bridge
  * @param \MUtil_Model_ModelAbstract $model
  * @param array $currentNames The current names in use (allows chaining)
  * @return array Of the names of labels that should be shown
  */
 public function filterAnswers(\MUtil_Model_Bridge_TableBridge $bridge, \MUtil_Model_ModelAbstract $model, array $currentNames)
 {
     $repeater = $model->loadRepeatable();
     $table = $bridge->getTable();
     $table->setRepeater($repeater);
     // Filter unless option 'fullanswers' is true, can be set as get or post var.
     $requestFullAnswers = \Zend_Controller_Front::getInstance()->getRequest()->getParam('fullanswers', false);
     if (!$repeater->__start()) {
         return $currentNames;
     }
     $keys = array();
     if ($requestFullAnswers !== false) {
         // No filtering
         return $model->getItemsOrdered();
     } else {
         foreach ($model->getItemNames() as $name) {
             $start = substr(strtolower($name), 0, $this->IncludeLength);
             if (in_array($start, $this->IncludeStarts)) {
                 $keys[$name] = $name;
             }
         }
     }
     $answers = $this->token->getRawAnswers();
     // Prevent errors when no answers present
     if (!empty($answers)) {
         $results = array_intersect($currentNames, array_keys($keys), array_keys($answers));
     } else {
         $results = array_intersect($currentNames, array_keys($keys));
     }
     $results = $this->restoreHeaderPositions($model, $results);
     if ($results) {
         return $results;
     }
     return $this->getHeaders($model, $currentNames);
 }
Beispiel #2
0
 /**
  * Get the repeater source for the lazy data
  *
  * @return \MUtil_Lazy_RepeatableInterface
  */
 public function getRepeater()
 {
     if (!$this->_repeater) {
         if ($this->_chainedBridge && $this->_chainedBridge->hasRepeater()) {
             $this->setRepeater($this->_chainedBridge->getRepeater());
         } else {
             $this->setRepeater($this->model->loadRepeatable());
         }
     }
     return $this->_repeater;
 }
 /**
  * Function that allows for overruling the repeater loading.
  *
  * @param \MUtil_Model_ModelAbstract $model
  * @return \MUtil_Lazy_RepeatableInterface
  */
 public function getRepeater(\MUtil_Model_ModelAbstract $model)
 {
     return $model->loadRepeatable();
 }