Example #1
0
 /**
  * Filter records by relations set in custom filter
  * @param \DataContainer $dc in BE
  */
 public function filterByRelations($dc)
 {
     if (empty(static::$arrFilterableFields)) {
         return;
     }
     $arrIds = is_array($GLOBALS['TL_DCA'][$dc->table]['list']['sorting']['root']) ? $GLOBALS['TL_DCA'][$dc->table]['list']['sorting']['root'] : array();
     $blnFilter = false;
     $session = \Session::getInstance()->getData();
     foreach (array_keys(static::$arrFilterableFields) as $field) {
         if (isset($session['filter'][$dc->table][$field])) {
             $blnFilter = true;
             $ids = Model::getReferenceValues($dc->table, $field, $session['filter'][$dc->table][$field]);
             $arrIds = empty($arrIds) ? $ids : array_intersect($arrIds, $ids);
         }
     }
     if ($blnFilter) {
         $GLOBALS['TL_DCA'][$dc->table]['list']['sorting']['root'] = empty($arrIds) ? array(0) : array_unique($arrIds);
     }
 }