/**
  * Filter roles
  * @param ilObject $object
  */
 protected function filterRoles(ilObject $source)
 {
     global $rbacreview;
     include_once './Services/DidacticTemplate/classes/class.ilDidacticTemplateFilterPatternFactory.php';
     $patterns = ilDidacticTemplateFilterPatternFactory::lookupPatternsByParentId($this->getActionId(), self::PATTERN_PARENT_TYPE);
     $filtered = array();
     foreach ($rbacreview->getParentRoleIds($source->getRefId()) as $role_id => $role) {
         foreach ($patterns as $pattern) {
             if ($pattern->valid(ilObject::_lookupTitle($role_id))) {
                 $GLOBALS['ilLog']->write(__METHOD__ . ' Role is valid: ' . ilObject::_lookupTitle($role_id));
                 $filtered[$role_id] = $role;
             }
         }
     }
     return $filtered;
 }
 /**
  * read action data
  * @global ilDB $ilDB
  * @return bool
  */
 public function read()
 {
     global $ilDB;
     if (!parent::read()) {
         return false;
     }
     $query = 'SELECT * FROM didactic_tpl_abr ' . 'WHERE action_id = ' . $ilDB->quote($this->getActionId());
     $res = $ilDB->query($query);
     while ($row = $res->fetchRow(DB_FETCHMODE_OBJECT)) {
         $this->setFilterType($row->filter_type);
     }
     // Read filter
     include_once './Services/DidacticTemplate/classes/class.ilDidacticTemplateFilterPatternFactory.php';
     foreach (ilDidacticTemplateFilterPatternFactory::lookupPatternsByParentId($this->getActionId(), self::PATTERN_PARENT_TYPE) as $pattern) {
         $this->addFilterPattern($pattern);
     }
 }