Source of file SearchReplacement.php
Size: 5,875 Bytes - Last Modified: 2021-12-23T10:39:35+00:00
/var/www/docs.ssmods.com/process/src/src/Model/Search/SearchReplacement.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 | <?php namespace Sunnysideup\Ecommerce\Model\Search; use SilverStripe\Core\Config\Config; use SilverStripe\ORM\DataObject; use SilverStripe\Security\Permission; use SilverStripe\Security\Security; use Sunnysideup\CmsEditLinkField\Api\CMSEditLinkAPI; use Sunnysideup\Ecommerce\Interfaces\EditableEcommerceObject; use Sunnysideup\Ecommerce\Model\Extensions\EcommerceRole; /** * This dataobject * saves search replacements * as in Smoogle will be replaced by Google. */ class SearchReplacement extends DataObject implements EditableEcommerceObject { private static $table_name = 'SearchReplacement'; private static $db = [ 'Search' => 'Varchar(255)', 'Replace' => 'Varchar(255)', 'ReplaceWholePhrase' => 'Boolean', ]; private static $indexes = [ 'SearchIndex' => [ 'type' => 'unique', 'columns' => ['Search'], ], 'Replace' => true, ]; private static $summary_fields = [ 'Search' => 'Search Alias (e.g. nz)', 'Replace' => 'Actual Search Phrase (e.g. new zealand)', ]; private static $field_labels = [ 'Search' => 'Search Alias (e.g. nz)', 'Replace' => 'Actual Search Phrase (e.g. new zealand)', 'ReplaceWholePhrase' => 'Replace Whole Phrase Only', ]; /** * standard SS variable. * * @var string */ private static $singular_name = 'Search Replacement'; /** * standard SS variable. * * @var string */ private static $plural_name = 'Search Replacements'; private static $separator = ','; public function i18n_singular_name() { return $this->Config()->get('singular_name'); } public function i18n_plural_name() { return $this->Config()->get('plural_name'); } public function fieldLabels($includerelations = true) { return [ 'Search' => 'When someone searches for ... ', 'Replace' => 'It is replaced by - proper name ...', ]; } /** * standard SS method. * * @param \SilverStripe\Security\Member $member * @param mixed $context * * @return bool */ public function canCreate($member = null, $context = []) { if (! $member) { $member = Security::getCurrentUser(); } $extended = $this->extendedCan(__FUNCTION__, $member); if (null !== $extended) { return $extended; } if (Permission::checkMember($member, Config::inst()->get(EcommerceRole::class, 'admin_permission_code'))) { return true; } return parent::canEdit($member); } /** * standard SS method. * * @param \SilverStripe\Security\Member $member * @param mixed $context * * @return bool */ public function canView($member = null, $context = []) { if (! $member) { $member = Security::getCurrentUser(); } $extended = $this->extendedCan(__FUNCTION__, $member); if (null !== $extended) { return $extended; } if (Permission::checkMember($member, Config::inst()->get(EcommerceRole::class, 'admin_permission_code'))) { return true; } return parent::canEdit($member); } /** * standard SS method. * * @param \SilverStripe\Security\Member $member * @param mixed $context * * @return bool */ public function canEdit($member = null, $context = []) { if (! $member) { $member = Security::getCurrentUser(); } $extended = $this->extendedCan(__FUNCTION__, $member); if (null !== $extended) { return $extended; } if (Permission::checkMember($member, Config::inst()->get(EcommerceRole::class, 'admin_permission_code'))) { return true; } return parent::canEdit($member); } /** * standard SS method. * * @param \SilverStripe\Security\Member $member * * @return bool */ public function canDelete($member = null) { if (! $member) { $member = Security::getCurrentUser(); } $extended = $this->extendedCan(__FUNCTION__, $member); if (null !== $extended) { return $extended; } if (Permission::checkMember($member, Config::inst()->get(EcommerceRole::class, 'admin_permission_code'))) { return true; } return parent::canEdit($member); } /** * link to edit the record. * * @param null|string $action - e.g. edit * * @return string */ public function CMSEditLink($action = null) { return CMSEditLinkAPI::find_edit_link_for_object($this, $action); } public function getCMSFields() { $fields = parent::getCMSFields(); $fields->dataFieldByName('Search') ->setDescription( 'e.g. Sonny<br />' . 'You can enter more than one search phrase and separate by: ' . $this->Config()->get('separator') . '' ) ; $fields->dataFieldByName('Replace') ->setDescription( 'e.g. Sony' ) ; return $fields; } protected function onBeforeWrite() { parent::onBeforeWrite(); //all lower case and make replace double spaces $this->Search = trim(preg_replace('#\s+#', ' ', strtolower($this->Search))); $searchArray = []; foreach (explode(',', $this->Search) as $term) { $searchArray[] = trim($term); } $this->Search = implode(',', $searchArray); $this->Replace = strtolower($this->Replace); } } |