Source of file SentEmail.php
Size: 2,957 Bytes - Last Modified: 2021-12-23T10:56:37+00:00
/var/www/docs.ssmods.com/process/src/code/SentEmail.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 | <?php /** * Defines a record that stores an email that was sent via {@link Permamail} * * @author Uncle Cheese <unclecheese@leftandmain.com> * @package silverstripe-permamail */ class SentEmail extends DataObject { private static $db = array ( 'To' => 'Varchar', 'From' => 'Varchar', 'Subject' => 'Varchar', 'Body' => 'HTMLText', 'CC' => 'Text', 'BCC' => 'Text', 'SerializedEmail' => 'Text' ); private static $summary_fields = array ( 'Created.Nice' => 'Date', 'To' => 'To', 'Subject' => 'Subject' ); private static $default_sort = 'Created DESC'; /** * Defines a list of methods that can be invoked by BetterButtons custom actions * @var array */ private static $better_buttons_actions = array ( 'resend' ); /** * Gets a list of actions for the ModelAdmin interface * @return FieldList */ public function getBetterButtonsActions() { $fields = parent::getBetterButtonsActions(); $fields->push(BetterButtonCustomAction::create('resend','Resend') ->setRedirectType(BetterButtonCustomAction::REFRESH) ); $this->extend('updateBetterButtonsActions', $fields); return $fields; } /** * Gets a list of form fields for editing the record. * These records should never be edited, so a readonly list of fields * is forced. * * @return FieldList */ public function getCMSFields() { preg_match("/<body[^>]*>(.*?)<\/body>/is", $this->Body, $matches); $contents = $matches ? $matches[1] : ""; $f = FieldList::create( ReadonlyField::create('To'), ReadonlyField::create('Subject'), ReadonlyField::create('BCC'), ReadonlyField::create('CC'), HeaderField::create('Email contents', 5), LiteralField::create('BodyContents', "<div class='field'>{$contents}</div>") ); $this->extend('updateCMSFields', $f); return $f; } /** * Gets the {@link Permamail} object that was used to send this email * @return Permamail */ public function getEmail() { if($this->SerializedEmail) { return unserialize($this->SerializedEmail); } return false; } /** * A BetterButtons custom action that allows the email to be resent */ public function resend() { if($e = $this->getEmail()) { $e->send(); return 'Sent'; } return 'Could not send email'; } /** * Defines the view permission * @param Member $member * @return boolean */ public function canView($member = null) { return Permission::check('CMS_ACCESS_CMSMain'); } /** * Defines the edit permission * @param Member $member * @return boolean */ public function canEdit($member = null) { return false; } /** * Defines the create permission * @param Member $member * @return boolean */ public function canCreate($member = null) { return false; } /** * Defines the delete permission * @param Member $member * @return boolean */ public function canDelete($member = null) { return Permission::check('CMS_ACCESS_CMSMain'); } } |