From e3852feccea3e569a14ee1cc85597bb8eee2a0b4 Mon Sep 17 00:00:00 2001 From: Thomas Gelf Date: Wed, 18 May 2016 22:01:55 +0200 Subject: [PATCH] PropertyModifierBitmask: new bitmask modifier --- .../PropertyModifierBitmask.php | 35 +++++++++++++++++++ run.php | 1 + 2 files changed, 36 insertions(+) create mode 100644 library/Director/PropertyModifier/PropertyModifierBitmask.php diff --git a/library/Director/PropertyModifier/PropertyModifierBitmask.php b/library/Director/PropertyModifier/PropertyModifierBitmask.php new file mode 100644 index 00000000..6eb8a148 --- /dev/null +++ b/library/Director/PropertyModifier/PropertyModifierBitmask.php @@ -0,0 +1,35 @@ +addElement('text', 'bitmask', array( + 'label' => 'Bitmask', + 'description' => $form->translate( + 'The numeric bitmask you want to apply. In case you have a hexadecimal' + . ' or binary mask please transform it to a deximal number first. The' + . ' result of this modifier is a boolean value, telling whether the' + . ' given mask applies to the numeric value in your source column' + ), + 'required' => true, + )); + } + + public function getName() + { + return 'Bitmask match (numeric)'; + } + + public function transform($value) + { + $mask = (int) $this->getSetting('bitmask'); + return (((int) $value) & $mask) === $mask; + } +} diff --git a/run.php b/run.php index 01170726..c3e770dc 100644 --- a/run.php +++ b/run.php @@ -31,6 +31,7 @@ $this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\Pro $this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierExtractFromDN'); $this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierFromAdSid'); $this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierFromLatin1'); +$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierBitmask'); $this->provideHook('director/Job', $prefix . 'Job\\HousekeepingJob'); $this->provideHook('director/Job', $prefix . 'Job\\ConfigJob');