Source of file OrderFeedback.php
Size: 5,884 Bytes - Last Modified: 2021-12-23T10:39:35+00:00
/var/www/docs.ssmods.com/process/src/src/Model/Process/OrderFeedback.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259 | <?php namespace Sunnysideup\Ecommerce\Model\Process; use SilverStripe\Core\Config\Config; use SilverStripe\Core\Injector\Injector; use SilverStripe\Forms\NumericField; use SilverStripe\ORM\DataObject; use SilverStripe\Security\Permission; use SilverStripe\Security\Security; use Sunnysideup\CmsEditLinkField\Api\CMSEditLinkAPI; use Sunnysideup\CmsEditLinkField\Forms\Fields\CMSEditLinkField; use Sunnysideup\Ecommerce\Interfaces\EditableEcommerceObject; use Sunnysideup\Ecommerce\Model\Extensions\EcommerceRole; use Sunnysideup\Ecommerce\Model\Order; use Sunnysideup\Ecommerce\Traits\OrderCached; // Class used to describe the steps in the checkout class OrderFeedback extends DataObject implements EditableEcommerceObject { use OrderCached; /** * standard SS variable. * * @var array */ private static $table_name = 'OrderFeedback'; private static $db = [ 'Rating' => 'Varchar', 'Note' => 'Text', 'Actioned' => 'Boolean', ]; /** * standard SS variable. * * @var array */ private static $has_one = [ 'Order' => Order::class, ]; /** * standard SS variable. * * @var array */ private static $searchable_fields = [ 'Rating' => 'PartialMatchFilter', 'Note' => 'PartialMatchFilter', 'OrderID' => [ 'field' => NumericField::class, 'title' => 'Order Number', ], ]; /** * standard SS variable. * * @var array */ private static $summary_fields = [ 'Order.Title' => 'Order', 'Created' => 'When', 'Rating' => 'Rating', 'Note' => 'Note', ]; /** * standard SS variable. * * @var array */ private static $casting = [ 'Title' => 'Varchar', ]; /** * standard SS variable. * * @var array */ private static $default_sorting = [ 'ID' => 'DESC', ]; /** * standard SS variable. * * @var string */ private static $singular_name = 'Order Feedback'; /** * standard SS variable. * * @var string */ private static $plural_name = 'Checkout Feedback Entries'; /** * Standard SS variable. * * @var string */ private static $description = 'Customer Order Feedback'; /** * standard SS variable. * * @return bool */ private static $can_create = false; public function i18n_singular_name() { return _t('OrderFeedback.SINGULAR_NAME', 'Order Feedback'); } public function i18n_plural_name() { return _t('OrderFeedback.PLURAL_NAME', 'Order Feedback Entries'); } /** * these are only created programmatically * standard SS method. * * @param \SilverStripe\Security\Member $member * @param mixed $context * * @return bool */ public function canCreate($member = null, $context = []) { return false; } /** * 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::canView($member); } /** * standard SS method. * * @param \SilverStripe\Security\Member $member * @param mixed $context * * @return bool */ public function canEdit($member = null, $context = []) { return false; } /** * standard SS method. * * @param \SilverStripe\Security\Member $member * * @return bool */ public function canDelete($member = null) { return false; } /** * standard SS method. * * @return \SilverStripe\Forms\FieldList */ public function getCMSFields() { $fields = parent::getCMSFields(); $fields->replaceField( 'OrderID', CMSEditLinkField::create( 'OrderID', Injector::inst()->get(Order::class)->singular_name(), $this->getOrderCached() ) ); return $fields; } /** * 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); } /** * casted variable. * * @return string */ public function Title() { return $this->getTitle(); } public function getTitle() { $string = $this->Created; if ($this->getOrderCached()) { $string .= ' (' . $this->getOrderCached()->getTitle() . ')'; } $string .= ' - ' . $this->Rating; if ($this->Note) { $string .= ' / ' . substr($this->Note, 0, 25); } return $string; } /** * Event handler called before writing to the database. */ protected function onBeforeWrite() { parent::onBeforeWrite(); $this->Note = str_replace(["\n", "\r"], ' ¶ ', $this->Note); $this->Note = str_replace(['¶ ¶'], ' ¶ ', $this->Note); $this->Note = str_replace(['¶ ¶'], ' ¶ ', $this->Note); $this->Note = str_replace(['¶ ¶'], ' ¶ ', $this->Note); } } |