public function XrequireDefaultRecords() { foreach ($this->config()->get('records') as $code => $record) { if ($record['IsDev'] && Director::isDev() || $record['IsTest'] && Director::isTest() || $record['IsLive'] && Director::isLive()) { if (!($discountType = StreakDiscountType::get_by_code($code))) { $discountType = StreakDiscountType::create(); DB::alteration_message("Added discount type '{$code}'", "changed"); } // if the record is using default code then update from config. if ($code == self::DefaultCode) { $record['Code'] = $this->config()->get('default_code'); } else { $record['Code'] = $code; } $title = $record['Title']; // if the record is using default title then update from config as hasn't changed, if different // then leave alone if ($title == self::DefaultTitle) { $record['Title'] = $this->config()->get('default_title'); } $data = array_diff_key($record, array_flip(array('IsDev', 'IsTest', 'IsLive'))); $discountType->update($data); $discountType->write(); } } }
/** * Returns the one or more active DiscountTypes (site, member, product) in order of preference (or an empty array if none found). * *@return array */ public function resolveDiscountTypes() { $discountTypes = array(); if (StreakConfig::streak_config()->StreakSiteWideDiscountID) { $discountTypes['SiteWide'] = StreakDiscountType::get()->byID(StreakConfig::streak_config()->StreakSiteWideDiscountID); } if (Member::currentUserID()) { $discountTypes['Member'] = StreakDiscountType::get()->byID(Member::currentUser()->StreakDiscountTypeID); } if ($this->owner->StreakDiscountTypeID) { $discountTypes['Product'] = $this->owner->StreakDiscountType(); } return array_filter($discountTypes); }
public function provideConfigFields(FieldList $fields) { $fields->push(new Select2Field(self::FieldName, 'Site wide discount', StreakDiscountType::get()->map()->toArray())); }
/** * Add discount type field to member * @param FieldList $fields */ public function updateCMSFields(FieldList $fields) { $fields->insertAfter($field = new DropdownField(self::FieldName . 'ID', StreakDiscountType::config()->get('singular_name'), StreakDiscountType::get()->map()->toArray()), 'Email'); $field->setEmptyString('None'); }
public static function discount_codes($discountOnly = true) { return StreakDiscountType::get()->setQueriedColumns(array('ID', self::CodeFieldName))->filter(static::ColumnFieldName, true)->distinct(self::CodeFieldName)->map('ID', self::CodeFieldName)->toArray(); }
public static function get_by_code($code) { return StreakDiscountType::get()->filter('Code', $code)->first(); }