Source of file GroupDiscountConstraint.php
Size: 1,737 Bytes - Last Modified: 2021-12-24T06:35:13+00:00
/var/www/docs.ssmods.com/process/src/src/Extensions/Constraints/GroupDiscountConstraint.php
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 | <?php namespace SilverShop\Discounts\Extensions\Constraints; use SilverShop\Discounts\Model\Discount; use SilverStripe\Forms\FieldList; use SilverStripe\Forms\DropdownField; use SilverStripe\Security\Group; use SilverStripe\ORM\DataList; class GroupDiscountConstraint extends DiscountConstraint { private static $has_one = [ 'Group' => Group::class ]; public function updateCMSFields(FieldList $fields) { $fields->addFieldToTab( 'Root.Constraints.ConstraintsTabs.Membership', DropdownField::create( 'GroupID', _t(__CLASS__.'.MEMBERISINGROUP', 'Member is in group'), Group::get()->map('ID', 'Title') )->setHasEmptyDefault(true) ->setEmptyString(_t(__CLASS__.'.ANYORNOGROUP', 'Any or no group')) ); } public function filter(DataList $list) { $groupids = [0]; if ($member = $this->getMember()) { $groupids += $member->Groups() ->map('ID', 'ID') ->toArray(); } return $list->filter('GroupID', $groupids); } public function check(Discount $discount) { $group = $discount->Group(); $member = $this->getMember(); if ($group->exists() && (!$member || !$member->inGroup($group))) { $this->error( _t( 'Discount.GROUPED', 'Only specific members can use this discount.' ) ); return false; } return true; } public function getMember() { return isset($this->context['Member']) ? $this->context['Member'] : $this->order->Member(); } } |