/**
  * @verbatim
  * Helper method that installs filter groups based on
  * the given XML node which represents a <filterGroups>
  * element.
  * @endverbatim
  * @param $filterGroupsNode XMLNode
  */
 function installFilterGroups($filterGroupsNode)
 {
     // Install filter groups.
     $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO');
     /* @var $filterGroupDao FilterGroupDAO */
     import('lib.pkp.classes.filter.FilterGroup');
     foreach ($filterGroupsNode->getChildren() as $filterGroupNode) {
         /* @var $filterGroupNode XMLNode */
         $filterGroupSymbolic = $filterGroupNode->getAttribute('symbolic');
         // Make sure that the filter group has not been
         // installed before to guarantee idempotence.
         $existingFilterGroup =& $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic);
         if (!is_null($existingFilterGroup)) {
             continue;
         }
         // Instantiate and configure the filter group.
         $filterGroup = new FilterGroup();
         $filterGroup->setSymbolic($filterGroupSymbolic);
         $filterGroup->setDisplayName($filterGroupNode->getAttribute('displayName'));
         $filterGroup->setDescription($filterGroupNode->getAttribute('description'));
         $filterGroup->setInputType($filterGroupNode->getAttribute('inputType'));
         $filterGroup->setOutputType($filterGroupNode->getAttribute('outputType'));
         // Install the filter group.
         $installedGroupId = $filterGroupDao->insertObject($filterGroup);
         assert(is_integer($installedGroupId));
         unset($filterGroup);
     }
 }
 /**
  * @covers FilterGroupDAO
  */
 public function testFilterGroupCrud()
 {
     $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO');
     /* @var $filterGroupDao FilterGroupDAO */
     // Instantiate a test filter group object.
     $testFilterGroup = new FilterGroup();
     $testFilterGroup->setSymbolic('some-symbol');
     $testFilterGroup->setDisplayName('translation.key.displayName');
     $testFilterGroup->setDescription('translation.key.description');
     $testFilterGroup->setInputType('primitive::string');
     $testFilterGroup->setOutputType('primitive::integer');
     // Insert filter group instance.
     $filterGroupId = $filterGroupDao->insertObject($testFilterGroup, 9999);
     self::assertTrue(is_numeric($filterGroupId));
     self::assertTrue($filterGroupId > 0);
     // Retrieve filter group instance by id.
     $filterGroupById =& $filterGroupDao->getObjectById($filterGroupId);
     self::assertEquals($testFilterGroup, $filterGroupById);
     // Update filter group instance.
     $testFilterGroup->setSymbolic('some-other-symbol');
     $testFilterGroup->setDisplayName('translation.key.otherDisplayName');
     $testFilterGroup->setDescription('translation.key.otherDescription');
     $testFilterGroup->setInputType('primitive::integer');
     $testFilterGroup->setOutputType('primitive::string');
     $filterGroupDao->updateObject($testFilterGroup);
     $filterGroupAfterUpdate =& $filterGroupDao->getObject($testFilterGroup);
     self::assertEquals($testFilterGroup, $filterGroupAfterUpdate);
     // Retrieve filter group instance by symbolic name.
     $filterGroupBySymbolic =& $filterGroupDao->getObjectBySymbolic('some-other-symbol');
     self::assertEquals($testFilterGroup, $filterGroupAfterUpdate);
     // Delete filter group instance.
     $filterGroupDao->deleteObjectById($filterGroupId);
     self::assertNull($filterGroupDao->getObjectById($filterGroupId));
 }
示例#3
0
 protected function setUp()
 {
     parent::setUp();
     // Create a test filter group.
     $someGroup = new FilterGroup();
     $someGroup->setSymbolic('test-filter-group');
     $someGroup->setDisplayName('some.test.filter.group.display');
     $someGroup->setDescription('some.test.filter.group.description');
     $someGroup->setInputType('primitive::string');
     $someGroup->setOutputType('primitive::string');
     $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO');
     /* @var $filterGroupDao FilterGroupDAO */
     self::assertTrue(is_integer($filterGroupId = $filterGroupDao->insertObject($someGroup)));
 }
示例#4
0
 protected function setUp()
 {
     // Clean up from earlier tests.
     $filterDao = DAORegistry::getDAO('FilterDAO');
     /* @var $filterDao FilterDAO */
     $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO');
     /* @var $filterGroupDao FilterGroupDAO */
     foreach ($filterDao->getObjectsByGroup('test-filter-group', 9999) as $filter) {
         $filterDao->deleteObject($filter);
     }
     $filterGroupDao->deleteObjectBySymbolic('test-filter-group');
     // Create a test filter group.
     $someGroup = new FilterGroup();
     $someGroup->setSymbolic('test-filter-group');
     $someGroup->setDisplayName('some.test.filter.group.display');
     $someGroup->setDescription('some.test.filter.group.description');
     $someGroup->setInputType('primitive::string');
     $someGroup->setOutputType('primitive::string');
     self::assertTrue(is_integer($filterGroupId = $filterGroupDao->insertObject($someGroup)));
 }
示例#5
0
 /**
  * @covers FilterHelper
  */
 public function testCompareFilters()
 {
     $filterHelper = new FilterHelper();
     import('lib.pkp.classes.filter.FilterGroup');
     $someGroup = new FilterGroup();
     $someGroup->setInputType('primitive::string');
     $someGroup->setOutputType('primitive::string');
     import('lib.pkp.classes.filter.PersistableFilter');
     $filterA = new PersistableFilter($someGroup);
     $filterBSettings = array('some-key' => 'some-value');
     $filterBSubfilters = array();
     self::assertFalse($filterHelper->compareFilters($filterA, $filterBSettings, $filterBSubfilters));
     import('lib.pkp.classes.filter.FilterSetting');
     $filterA->addSetting(new FilterSetting('some-key', null, null));
     self::assertFalse($filterHelper->compareFilters($filterA, $filterBSettings, $filterBSubfilters));
     $filterA->setData('some-key', 'some-value');
     self::assertTrue($filterHelper->compareFilters($filterA, $filterBSettings, $filterBSubfilters));
     $filterA = new CompositeFilter($someGroup);
     $filterBSettings = array();
     $filterBSubfilter = new CompositeFilter($someGroup);
     $filterBSubfilter->setSeq(1);
     $filterBSubfilters = array($filterBSubfilter);
     self::assertFalse($filterHelper->compareFilters($filterA, $filterBSettings, $filterBSubfilters));
     $filterASubfilter = new OtherCompositeFilter($someGroup);
     $filterA->addFilter($filterASubfilter);
     self::assertFalse($filterHelper->compareFilters($filterA, $filterBSettings, $filterBSubfilters));
     $filterA = new CompositeFilter($someGroup);
     $filterASubfilter = new CompositeFilter($someGroup);
     $filterA->addFilter($filterASubfilter);
     self::assertTrue($filterHelper->compareFilters($filterA, $filterBSettings, $filterBSubfilters));
     $filterBSubfilter->addSetting(new FilterSetting('some-key', null, null));
     $filterASubfilter->addSetting(new FilterSetting('some-key', null, null));
     $filterBSubfilter->setData('some-key', 'some-value');
     self::assertFalse($filterHelper->compareFilters($filterA, $filterBSettings, $filterBSubfilters));
     $filterASubfilter->setData('some-key', 'some-value');
     self::assertTrue($filterHelper->compareFilters($filterA, $filterBSettings, $filterBSubfilters));
 }
 /**
  * Internal function to return a filter group
  * object from a row.
  *
  * @param $row array
  * @return FilterGroup
  */
 function &_fromRow(&$row)
 {
     // Instantiate the filter group.
     $filterGroup = new FilterGroup();
     // Configure the filter group.
     $filterGroup->setId((int) $row['filter_group_id']);
     $filterGroup->setSymbolic($row['symbolic']);
     $filterGroup->setDisplayName($row['display_name']);
     $filterGroup->setDescription($row['description']);
     $filterGroup->setInputType($row['input_type']);
     $filterGroup->setOutputType($row['output_type']);
     return $filterGroup;
 }
示例#7
0
 /**
  * There are certain generic filters (e.g. CompositeFilters)
  * that sometimes need to be persisted and sometimes are
  * instantiated and used in code only.
  *
  * As we don't have multiple inheritance in PHP we'll have
  * to use the more general filter type (PersistableFilter) as
  * the base class of these "hybrid" filters.
  *
  * This means that we carry around some structure (e.g. filter
  * groups) that do only make sense when a filter is actually
  * being persisted and otherwise create unnecessary code.
  *
  * We provide this helper function to instantiate a temporary
  * filter group on the fly with only an input and an output type
  * which takes away at least some of the cruft.
  *
  * @param $inputType string
  * @param $outputType string
  */
 function tempGroup($inputType, $outputType)
 {
     $temporaryGroup = new FilterGroup();
     $temporaryGroup->setSymbolic(FILTER_GROUP_TEMPORARY_ONLY);
     $temporaryGroup->setInputType($inputType);
     $temporaryGroup->setOutputType($outputType);
     return $temporaryGroup;
 }