Source of file Contact.php
Size: 8,462 Bytes - Last Modified: 2021-12-24T05:16:40+00:00
/var/www/docs.ssmods.com/process/src/code/model/Contact.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333 | <?php /** * Details on a particular contact * * @author ilateral * @package Contacts */ class Contact extends DataObject implements PermissionProvider { private static $db = array( "Salutation" => "Varchar(20)", "FirstName" => "Varchar(255)", "MiddleName" => "Varchar(255)", "Surname" => "Varchar(255)", "Company" => "Varchar(255)", "Phone" => "Varchar(15)", "Mobile" => "Varchar(15)", "Email" => "Varchar(255)", "Address1" => "Varchar(255)", "Address2" => "Varchar(255)", "City" => "Varchar(255)", "County" => "Varchar(255)", "Country" => "Varchar(255)", "PostCode" => "Varchar(10)", "Source" => "Text" ); private static $has_many = array( "Notes" => "Note" ); private static $many_many = array( 'Tags' => 'ContactTag' ); private static $belongs_many_many = array( 'Lists' => 'ContactList' ); private static $casting = array( 'TagsList' => 'Varchar', 'FlaggedNice' => 'Boolean', 'FullName' => 'Varchar', 'Name' => 'Varchar' ); private static $summary_fields = array( "FlaggedNice" =>"Flagged", "FirstName" => "FirstName", "Surname" => "Surname", "Email" => "Email", "Address1" => "Address1", "Address2" => "Address2", "City" => "City", "PostCode" => "PostCode", "TagsList" => "TagsList" ); public function getFlaggedNice() { $obj = HTMLText::create(); $obj->setValue(($this->Flagged)? '<span class="red">✱</span>' : ''); return $obj; } private static $default_sort = '"FirstName" ASC, "Surname" ASC'; private static $searchable_fields = array( "Salutation", "FirstName", "MiddleName", "Surname", "Email", "Address1", "Address2", "City", "Country", "PostCode", "Tags.Title", "Lists.Title" ); public function getTitle() { $t = ''; if (!empty($this->Salutation)) { $t = "$this->Salutation "; } $f = ''; if (!empty($this->FirstName)) { $f = "$this->FirstName "; } $m = ''; if (!empty($this->MiddleName)) { $m = "$this->MiddleName "; } $s = ''; if (!empty($this->Surname)) { $s = "$this->Surname "; } $e = ''; if (!empty($this->Email)) { $e = "($this->Email)"; } return $t.$f.$m.$s.$e; } public function getFullName() { $t = ''; if (!empty($this->Salutation)) $t = "$this->Salutation "; $f = ''; if (!empty($this->FirstName)) $f = "$this->FirstName "; $m = ''; if (!empty($this->MiddleName)) $m = "$this->MiddleName "; $s = ''; if (!empty($this->Surname)) $s = "$this->Surname "; return $t.' '.$f.' '.$m.' '.$s; } /** * Get the complete name of the member * * @return string Returns the first- and surname of the member. */ public function getName() { return ($this->Surname) ? trim($this->FirstName . ' ' . $this->Surname) : $this->FirstName; } public function getTagsList() { $return = ""; $tags = $this->Tags(); $i = 1; foreach ($tags as $tag) { $return .= $tag->Title; if ($i < $tags->count()) { $return .= ", "; } $i++; } return $return; } public function getFlagged() { $flagged = false; foreach ($this->Notes() as $note) { if ($note->Flag) { $flagged = true; } } return $flagged; } public function getCMSFields() { $fields = parent::getCMSFields(); $fields->removeByName("Tags"); $fields->removeByName("Notes"); $tag_field = TagField::create( 'Tags', null, ContactTag::get(), $this->Tags() )->setRightTitle(_t( "Contacts.TagDescription", "List of tags related to this contact, seperated by a comma." ))->setShouldLazyLoad(true); if ($this->ID) { $gridField = GridField::create('Notes', 'Notes', $this->Notes()); $config = GridFieldConfig_RelationEditor::create(); $gridField->setConfig($config); $fields->addFieldToTab( "Root.Notes", $gridField ); } $fields->addFieldToTab( "Root.Main", $tag_field ); return $fields; } public function getCMSValidator() { return new RequiredFields(array( "FirstName", "Surname" )); } public function providePermissions() { return array( "CONTACTS_MANAGE" => array( 'name' => _t( 'Contacts.PERMISSION_MANAGE_CONTACTS_DESCRIPTION', 'Manage contacts' ), 'help' => _t( 'Contacts.PERMISSION_MANAGE_CONTACTS_HELP', 'Allow creation and editing of contacts' ), 'category' => _t('Contacts.Contacts', 'Contacts') ), "CONTACTS_DELETE" => array( 'name' => _t( 'Contacts.PERMISSION_DELETE_CONTACTS_DESCRIPTION', 'Delete contacts' ), 'help' => _t( 'Contacts.PERMISSION_DELETE_CONTACTS_HELP', 'Allow deleting of contacts' ), 'category' => _t('Contacts.Contacts', 'Contacts') ) ); } public function canView($member = false) { $extended = $this->extendedCan(__FUNCTION__, $member); if ($extended !== null) { return $extended; } if ($member instanceof Member) { $memberID = $member->ID; } elseif (is_numeric($member)) { $memberID = $member; } else { $memberID = Member::currentUserID(); } if ($memberID && Permission::checkMember($memberID, array("ADMIN", "CONTACTS_MANAGE"))) { return true; } return false; } public function canCreate($member = null) { $extended = $this->extendedCan(__FUNCTION__, $member); if ($extended !== null) { return $extended; } if ($member instanceof Member) { $memberID = $member->ID; } elseif (is_numeric($member)) { $memberID = $member; } else { $memberID = Member::currentUserID(); } if ($memberID && Permission::checkMember($memberID, array("ADMIN", "CONTACTS_MANAGE"))) { return true; } return false; } public function canEdit($member = null) { $extended = $this->extendedCan(__FUNCTION__, $member); if ($extended !== null) { return $extended; } if ($member instanceof Member) { $memberID = $member->ID; } elseif (is_numeric($member)) { $memberID = $member; } else { $memberID = Member::currentUserID(); } if ($memberID && Permission::checkMember($memberID, array("ADMIN", "CONTACTS_MANAGE"))) { return true; } return false; } public function canDelete($member = null) { $extended = $this->extendedCan(__FUNCTION__, $member); if ($extended !== null) { return $extended; } if ($member instanceof Member) { $memberID = $member->ID; } elseif (is_numeric($member)) { $memberID = $member; } else { $memberID = Member::currentUserID(); } if ($memberID && Permission::checkMember($memberID, array("ADMIN", "CONTACTS_DELETE"))) { return true; } return false; } } |