public function save() { $form = Form::load('logbook.views.AddBlogEntry'); if($form->validate()) { $auth = new Author(); $auth->clause('user_id',Application::current()->user()->id()); if($auth->id()) { $item = new Entry(); $item->parse(); $item->set('author_id',$auth->id()); if(!Application::param('entry_date')) $item->set('entry_date',date('Y-m-d H:i:s')); $item->synch(); Entry::setTagsAndSave($item,Application::param('entry_tags')); $group = new Group(); $group->noForeign(); $author_id = $item->get('author_id'); $entry_id = $item->get('entry_id'); if($groups = $group->fetch()) { foreach($groups as $group) { if(file_exists(Application::MANAGED_CODE.'lbk_default_access_'.$group->get('access_id'))) { $data = file_get_contents(Application::MANAGED_CODE.'lbk_default_access_'.$group->get('access_id')); $perms = unserialize($data); ManageGroupAccess::setPermissionsOnEntryForGroup($author_id,$entry_id,$group->id(),$perms); } } } Application::setUrlParam('author_id',Application::param('author_id')); Application::setUrlParam('entry_id',Application::param('entry_id')); LogbookAccess::publishLookupTables(); $this->redirectOnSave(); } else die('You are not an author!'); } }
public function doAdd(array $data) { if ($Member = Member::get()->filter(array("Email" => $data['Email']))->first()) { $this->addErrorMessage('Email', 'Die Emailadresse ist bereits vergeben.', 'bad'); $this->controller->redirectBack(); return false; } $Member = new Member(); $this->saveInto($Member); $Member->write(); // find a group with ADMIN permission $adminGroup = Group::get()->where("Code='administrators'")->First(); // Member noch als Administrator festlegen if (isset($data['Admin'])) { $adminGroup->Members()->add($Member); } else { $adminGroup->Members()->remove($Member); } // find a group with ADMIN permission $authorGroup = Group::get()->where("Code='content-authors'")->First(); // Member noch als Administrator festlegen if (isset($data['Author'])) { $authorGroup->Members()->add($Member); } else { $authorGroup->Members()->remove($Member); } $this->controller->redirect('administration/members'); }
public function getCMSFields() { $fields = parent::getCMSFields(); $fields->removeFieldFromTab('Root', 'Pages'); $fields->removeFieldsFromTab('Root.Main', array('SortOrder', 'showBlockbyClass', 'shownInClass', 'MemberVisibility')); $fields->addFieldToTab('Root.Main', LiteralField::create('Status', 'Published: ' . $this->Published()), 'Title'); $memberGroups = Group::get(); $sourcemap = $memberGroups->map('Code', 'Title'); $source = array('anonymous' => 'Anonymous visitors'); foreach ($sourcemap as $mapping => $key) { $source[$mapping] = $key; } $memberVisibility = new CheckboxSetField($name = "MemberVisibility", $title = "Show block for specific groups", $source); $memberVisibility->setDescription('Show this block only for the selected group(s). If you select no groups, the block will be visible to all members.'); $availabelClasses = $this->availableClasses(); $inClass = new CheckboxSetField($name = "shownInClass", $title = "Show block for specific content types", $availabelClasses); $filterSelector = OptionsetField::create('showBlockbyClass', 'Choose filter set', array('0' => 'by page', '1' => 'by page/data type'))->setDescription('<p><br /><strong>by page</strong>: block will be displayed in the selected page(s)<br /><strong>by page/data type</strong>: block will be displayed on the pages created with the particular page/data type. e.g. is <strong>"InternalPage"</strong> is picked, the block will be displayed, and will ONLY be displayed on all <strong>Internal Pages</strong></p>'); $availablePages = Page::get()->exclude('ClassName', array('ErrorPage', 'RedirectorPage', 'VirtualPage')); $pageSelector = new CheckboxSetField($name = "Pages", $title = "Show on Page(s)", $availablePages->map('ID', 'Title')); if ($this->canConfigPageAndType(Member::currentUser())) { $fields->addFieldsToTab('Root.VisibilitySettings', array($filterSelector, $pageSelector, $inClass)); } if ($this->canConfigMemberVisibility(Member::currentUser())) { $fields->addFieldToTab('Root.VisibilitySettings', $memberVisibility); } if (!$fields->fieldByName('Options')) { $fields->insertBefore($right = RightSidebar::create('Options'), 'Root'); } $fields->addFieldsToTab('Options', array(CheckboxField::create('addMarginTop', 'add "margin-top" class to block wrapper'), CheckboxField::create('addMarginBottom', 'add "margin-bottom" class to block wrapper'))); return $fields; }
public function Register($data, Form $form) { if (!Member::currentUser()) { $member = new Member(); // Debug::show($form); $form->saveInto($member); if (Group::get()->filter('Title', 'Subscribed')->count() == 0) { $group = Group::create(); $group->Title = 'Subscribed'; $group->write(); } else { $group = Group::get()->filter('Title', 'Subscribed')->First(); } if (Member::get()->filter('Email', $data['Email'])) { $form->addErrorMessage('Email', 'That email address is already in use. <a href="Security/login">login</a>', 'bad', true, true); //Controller::curr()->redirect('register'); } else { //has to be called before setting group $member->write(); if (!$member->inGroup($group)) { $member->Groups()->add($group); } } } Controller::curr()->redirectBack(); }
public function requireDefaultRecords() { parent::requireDefaultRecords(); // Add default author group if no other group exists $frontend_group = Group::get()->filter("Code", "users-frontend"); if (!$frontend_group->exists()) { $frontend_group = new Group(); $frontend_group->Code = 'users-frontend'; $frontend_group->Title = "Frontend Users"; $frontend_group->Sort = 1; $frontend_group->write(); Permission::grant($frontend_group->ID, 'USERS_MANAGE_ACCOUNT'); DB::alteration_message('Front end users group created', 'created'); } // Add a verified users group (only used if we turn on // verification) $verify_group = Group::get()->filter("Code", "users-verified"); if (!$verify_group->exists()) { $verify_group = new Group(); $verify_group->Code = 'users-verified'; $verify_group->Title = "Verified Users"; $verify_group->Sort = 1; $verify_group->write(); Permission::grant($verify_group->ID, 'USERS_VERIFIED'); DB::alteration_message('Verified users group created', 'created'); } }
public function getEditForm($id = null, $fields = null) { // TODO Duplicate record fetching (see parent implementation) if (!$id) { $id = $this->currentPageID(); } $form = parent::getEditForm($id); // TODO Duplicate record fetching (see parent implementation) $record = $this->getRecord($id); if ($record && !$record->canView()) { return Security::permissionFailure($this); } $memberList = GridField::create('Members', false, Member::get(), $memberListConfig = GridFieldConfig_RecordEditor::create()->addComponent(new GridFieldButtonRow('after'))->addComponent(new GridFieldExportButton('buttons-after-left')))->addExtraClass("members_grid"); if ($record && method_exists($record, 'getValidator')) { $validator = $record->getValidator(); } else { $validator = Injector::inst()->get('Member')->getValidator(); } $memberListConfig->getComponentByType('GridFieldDetailForm')->setValidator($validator); $groupList = GridField::create('Groups', false, Group::get(), GridFieldConfig_RecordEditor::create()); $columns = $groupList->getConfig()->getComponentByType('GridFieldDataColumns'); $columns->setDisplayFields(array('Breadcrumbs' => singleton('Group')->fieldLabel('Title'))); $columns->setFieldFormatting(array('Breadcrumbs' => function ($val, $item) { return Convert::raw2xml($item->getBreadcrumbs(' > ')); })); $fields = new FieldList($root = new TabSet('Root', $usersTab = new Tab('Users', _t('SecurityAdmin.Users', 'Users'), $memberList, new LiteralField('MembersCautionText', sprintf('<p class="caution-remove"><strong>%s</strong></p>', _t('SecurityAdmin.MemberListCaution', 'Caution: Removing members from this list will remove them from all groups and the' . ' database')))), $groupsTab = new Tab('Groups', singleton('Group')->i18n_plural_name(), $groupList)), new HiddenField('ID', false, 0)); // Add import capabilities. Limit to admin since the import logic can affect assigned permissions if (Permission::check('ADMIN')) { $fields->addFieldsToTab('Root.Users', array(new HeaderField(_t('SecurityAdmin.IMPORTUSERS', 'Import users'), 3), new LiteralField('MemberImportFormIframe', sprintf('<iframe src="%s" id="MemberImportFormIframe" width="100%%" height="250px" frameBorder="0">' . '</iframe>', $this->Link('memberimport'))))); $fields->addFieldsToTab('Root.Groups', array(new HeaderField(_t('SecurityAdmin.IMPORTGROUPS', 'Import groups'), 3), new LiteralField('GroupImportFormIframe', sprintf('<iframe src="%s" id="GroupImportFormIframe" width="100%%" height="250px" frameBorder="0">' . '</iframe>', $this->Link('groupimport'))))); } // Tab nav in CMS is rendered through separate template $root->setTemplate('CMSTabSet'); // Add roles editing interface if (Permission::check('APPLY_ROLES')) { $rolesField = GridField::create('Roles', false, PermissionRole::get(), GridFieldConfig_RecordEditor::create()); $rolesTab = $fields->findOrMakeTab('Root.Roles', _t('SecurityAdmin.TABROLES', 'Roles')); $rolesTab->push($rolesField); } $actionParam = $this->getRequest()->param('Action'); if ($actionParam == 'groups') { $groupsTab->addExtraClass('ui-state-active'); } elseif ($actionParam == 'users') { $usersTab->addExtraClass('ui-state-active'); } elseif ($actionParam == 'roles') { $rolesTab->addExtraClass('ui-state-active'); } $actions = new FieldList(); $form = Form::create($this, 'EditForm', $fields, $actions)->setHTMLID('Form_EditForm'); $form->addExtraClass('cms-edit-form'); $form->setTemplate($this->getTemplatesWithSuffix('_EditForm')); // Tab nav in CMS is rendered through separate template if ($form->Fields()->hasTabset()) { $form->Fields()->findOrMakeTab('Root')->setTemplate('CMSTabSet'); } $form->addExtraClass('center ss-tabset cms-tabset ' . $this->BaseCSSClasses()); $form->setAttribute('data-pjax-fragment', 'CurrentForm'); $this->extend('updateEditForm', $form); return $form; }
public function TechnicalCommitteeMembers() { //Group_Member $group = Group::get()->filter('Code', 'technical-committee')->first(); $res = $group->getManyManyComponents("Members", '', 'Member.FirstName, Member.SurName'); return $res; }
function StartSurvey($data, $form) { //Check for existing member email address if ($member = Member::get()->filter('Email', Convert::raw2sql($data['Email']))->first()) { //Set error message $form->AddErrorMessage('Email', "Sorry, that email address already exists. Please choose another or login with that email.", 'bad'); //Set form data from submitted values Session::set("FormInfo.Form_DeploymentSurveyRegistrationForm.data", $data); //Return back to form return Controller::curr()->redirectBack(); } //Otherwise create new member and log them in $Member = new Member(); $form->saveInto($Member); $Member->write(); //Find or create the 'user' group if (!($userGroup = Group::get()->filter('Code', 'users')->first())) { $userGroup = new Group(); $userGroup->Code = "users"; $userGroup->Title = "Users"; $userGroup->Write(); $Member->Groups()->add($userGroup); } //Add member to user group $Member->Groups()->add($userGroup); $BackURL = Controller::curr()->Link('AboutYou'); return OpenStackIdCommon::loginMember($Member, $BackURL); }
public function SupportingCastMembers() { //Group_Member $group = Group::get()->filter('Code', 'supporting-cast')->first(); $res = $group->getManyManyComponents("Members", '', 'Group_Members.SortOrder ASC'); return $res; }
public function doEdit(array $data) { if ($Member = Member::get()->byID($data['ID'])) { $this->saveInto($Member); $Member->changePassword($data['Password']['_Password']); $Member->Changed = true; $Member->write(); // find a group with ADMIN permission $adminGroup = Group::get()->where("Code='administrators'")->First(); // Member noch als Administrator festlegen if (isset($data['Admin'])) { $adminGroup->Members()->add($Member); } else { $adminGroup->Members()->remove($Member); } // find a group with ADMIN permission $authorGroup = Group::get()->where("Code='content-authors'")->First(); // Member noch als Administrator festlegen if (isset($data['Author'])) { $authorGroup->Members()->add($Member); } else { $authorGroup->Members()->remove($Member); } } $this->controller->redirect('administration/members'); }
public function processRecord($record, $columnMap, &$results, $preview = false) { $objID = parent::processRecord($record, $columnMap, $results, $preview); $_cache_groupByCode = array(); // Add to predefined groups $member = DataObject::get_by_id($this->objectClass, $objID); foreach ($this->groups as $group) { // TODO This isnt the most memory effective way to add members to a group $member->Groups()->add($group); } // Add to groups defined in CSV if (isset($record['Groups']) && $record['Groups']) { $groupCodes = explode(',', $record['Groups']); foreach ($groupCodes as $groupCode) { $groupCode = Convert::raw2url($groupCode); if (!isset($_cache_groupByCode[$groupCode])) { $group = Group::get()->filter('Code', $groupCode)->first(); if (!$group) { $group = new Group(); $group->Code = $groupCode; $group->Title = $groupCode; $group->write(); } $member->Groups()->add($group); $_cache_groupByCode[$groupCode] = $group; } } } $member->destroy(); unset($member); return $objID; }
/** * Creates a member in a group with the correct permissions. * Example: Given I am logged in with "ADMIN" permissions * * @Given /^I am logged in with "([^"]*)" permissions$/ */ function iAmLoggedInWithPermissions($permCode) { if (!isset($this->cache_generatedMembers[$permCode])) { $group = \Group::get()->filter('Title', "{$permCode} group")->first(); if (!$group) { $group = \Injector::inst()->create('Group'); } $group->Title = "{$permCode} group"; $group->write(); $permission = \Injector::inst()->create('Permission'); $permission->Code = $permCode; $permission->write(); $group->Permissions()->add($permission); $member = \DataObject::get_one('Member', sprintf('"Email" = \'%s\'', "{$permCode}@example.org")); if (!$member) { $member = \Injector::inst()->create('Member'); } // make sure any validation for password is skipped, since we're not testing complexity here $validator = \Member::password_validator(); \Member::set_password_validator(null); $member->FirstName = $permCode; $member->Surname = "User"; $member->Email = "{$permCode}@example.org"; $member->PasswordEncryption = "none"; $member->changePassword('Secret!123'); $member->write(); $group->Members()->add($member); \Member::set_password_validator($validator); $this->cache_generatedMembers[$permCode] = $member; } return new Step\Given(sprintf('I log in with "%s" and "%s"', "{$permCode}@example.org", 'Secret!123')); }
/** * If the REMOTE_USER is set and is in the Member table, log that member in. If * not, and Config::inst()->get('AuthRemoteUserExtension', 'auto_create_user') is set, add that * Member to the configured group, and log the new user in. Otherwise, do nothing. */ public function onAfterInit() { if (isset($_SERVER['REMOTE_USER'])) { $unique_identifier = $_SERVER['REMOTE_USER']; } elseif (isset($_SERVER['REDIRECT_REMOTE_USER'])) { $unique_identifier = $_SERVER['REDIRECT_REMOTE_USER']; } if (isset($unique_identifier)) { $unique_identifier_field = Member::config()->unique_identifier_field; $member = Member::get()->filter($unique_identifier_field, $unique_identifier)->first(); if ($member) { $member->logIn(); $this->owner->redirectBack(); } elseif (Config::inst()->get('AuthRemoteUserExtension', 'auto_create_user') && strlen(Config::inst()->get('AuthRemoteUserExtension', 'auto_user_group'))) { $group = Group::get()->filter('Title', Config::inst()->get('AuthRemoteUserExtension', 'auto_user_group'))->first(); if ($group) { $member = new Member(); $member->{$unique_identifier_field} = $unique_identifier; $member->write(); $member->Groups()->add($group); $member->logIn(); } } } }
public function getCMSFields() { $summit_id = isset($_REQUEST['SummitID']) ? $_REQUEST['SummitID'] : Summit::ActiveSummitID(); Requirements::javascript('summit/javascript/SummitPushNotification.js'); $f = new FieldList($rootTab = new TabSet("Root", $tabMain = new Tab('Main'))); $f->addFieldToTab('Root.Main', $txt = new TextareaField('Message', 'Message')); $txt->setAttribute('required', 'true'); $f->addFieldToTab('Root.Main', $ddl_channel = new DropdownField('Channel', 'Channel', singleton('SummitPushNotification')->dbObject('Channel')->enumValues())); $f->addFieldToTab('Root.Main', $ddl_events = new DropdownField('EventID', 'Event', SummitEvent::get()->filter(['Published' => 1, 'SummitID' => $summit_id])->sort('Title', 'ASC')->Map('ID', 'FormattedTitle'))); $f->addFieldToTab('Root.Main', $ddl_groups = new DropdownField('GroupID', 'Group', Group::get()->sort('Title', 'ASC')->Map('ID', 'Title'))); $f->addFieldToTab('Root.Main', new HiddenField('SummitID', 'SummitID')); $ddl_channel->setEmptyString('--SELECT A CHANNEL--'); $ddl_channel->setAttribute('required', 'true'); $ddl_events->setEmptyString('--SELECT AN EVENT--'); $ddl_events->addExtraClass('hidden'); $ddl_groups->setEmptyString('--SELECT A GROUP--'); $ddl_groups->addExtraClass('hidden'); $config = GridFieldConfig_RelationEditor::create(50); $config->removeComponentsByType('GridFieldAddExistingAutocompleter'); $config->removeComponentsByType('GridFieldAddNewButton'); $config->addComponent($auto_completer = new CustomGridFieldAddExistingAutocompleter('buttons-before-right')); $auto_completer->setResultsFormat('$Title ($Email)'); $recipients = new GridField('Recipients', 'Member Recipients', $this->Recipients(), $config); $f->addFieldToTab('Root.Main', $recipients); return $f; }
public function getCMSFields() { $fields = parent::getCMSFields(); $fields->replaceField("From", $from = new DateField("From", "Valid From - add any date and time")); $fields->replaceField("Until", $until = new DateField("Until", "Valid Until - add any date and time")); $fields->replaceField("NewPrice", new CurrencyField("NewPrice", "PRICE (OPTION 1 / 3) - only enter if there is a set new price independent of the 'standard' price.")); $fields->replaceField("Percentage", new NumericField("Percentage", "PERCENTAGE (OPTIONAL 2/ 3) discount from 0 (0% discount) to 100 (100% discount).")); $fields->replaceField("Reduction", new CurrencyField("Reduction", "REDUCTION (OPTION 3 /3 ) - e.g. if you enter 2.00 then the new price will be the standard product price minus 2.")); if (!$this->ID) { $fields->addFieldToTab("Root.Main", new LiteralField("SaveFirst", "<p>Please save first - and then select security groups / countries</p>")); $fields->removeByName("NoLongerValid"); } if ($groups = Group::get()->count()) { $groups = Group::get(); $fields->replaceField("Groups", new CheckboxSetField("Groups", "Who", $groups->map()->toArray())); } else { $fields->removeByName("Groups"); } if ($ecommerceCountries = EcommerceCountry::get()) { $fields->replaceField("EcommerceCountries", new CheckboxSetField("EcommerceCountries", "Where", $ecommerceCountries->map()->toArray())); } else { $fields->removeByName("EcommerceCountries"); } if (DiscountCouponOption::get()->count()) { $fields->replaceField("DiscountCouponOptions", new CheckboxSetField("DiscountCouponOptions", "Discount Coupons", DiscountCouponOption::get()->map()->toArray())); } else { $fields->removeByName("DiscountCouponOptions"); } $from->setConfig('showcalendar', true); $until->setConfig('showcalendar', true); return $fields; }
/** * @return FieldList */ public function getCMSFields() { $fields = parent::getCMSFields(); $opsMember = array(); foreach (Group::get() as $group) { if ($group->Permissions()->filter("Code", "INCIDENTS.STAFF")->count()) { foreach ($group->Members() as $member) { $opsMember[$member->ID] = $member->FirstName . ' ' . $member->Surname . ' <' . $member->Email . '>'; } } } $assignable = new DropdownField('AssigneeID', 'Assigned to', $opsMember); $fields->replaceField('AssigneeID', $assignable); $startTime = new DatetimeField('StartTime', 'Start time'); $startTime->getDateField()->setConfig('showcalendar', 1); $fields->replaceField('StartTime', $startTime); $endTime = new DatetimeField('EndTime', 'End time'); $endTime->getDateField()->setConfig('showcalendar', 1); $fields->replaceField('EndTime', $endTime); $interimReportLink = new TextField('InterimReportLink', 'Interim report link'); $fields->replaceField('InterimReportLink', $interimReportLink); $interimSent = new CheckboxField('InterimReportSent', 'Interim report sent?'); $fields->insertAfter($interimSent, 'InterimReportLink'); $finalReportLink = new TextField('FinalReportLink', 'Final report link'); $fields->replaceField('FinalReportLink', $finalReportLink); $interimSent = new CheckboxField('FinalReportSent', 'Final report sent?'); $fields->insertAfter($interimSent, 'FinalReportLink'); return $fields; }
public function BoardOfDirectorsMembers() { //Group_Member $group = Group::get()->filter('Code', 'board-of-directors')->first(); $res = $group->getManyManyComponents("Members", '', 'Member.FirstName, Member.SurName'); return $res; }
/** * @param $member * @param $category_id * @throws ValidationException * @throws null */ public static function addChair($member, $category_id) { $priorChair = SummitTrackChair::get()->filter('MemberID', $member->ID)->first(); $category = PresentationCategory::get()->byID($category_id); if (!$priorChair) { $chair = new self(); $chair->MemberID = $member->ID; $chair->write(); $chair->Categories()->add($category); //Find or create the 'track-chairs' group if (!($Group = Group::get()->filter('Code', 'track-chairs')->first())) { $Group = new Group(); $Group->Code = "track-chairs"; $Group->Title = "Track Chairs"; $Group->Write(); $member->Groups()->add($Group); } //Add member to the group $member->Groups()->add($Group); return $chair->ID; } else { $priorChair->Categories()->add($category); $priorChair->Member()->addToGroupByCode('track-chairs'); return $priorChair->ID; } }
/** * * @param FieldList $fields * @return void */ public function updateCMSFields(FieldList $fields) { $controller = Controller::curr(); if ($controller instanceof SecuredAssetAdmin || $controller instanceof CMSSecuredFileAddController) { Requirements::combine_files('securedassetsadmincmsfields.js', array(SECURED_FILES_MODULE_DIR . '/thirdparty/javascript/jquery-ui/timepicker/jquery-ui-sliderAccess.js', SECURED_FILES_MODULE_DIR . '/thirdparty/javascript/jquery-ui/timepicker/jquery-ui-timepicker-addon.min.js', SECURED_FILES_MODULE_DIR . "/javascript/SecuredFilesLeftAndMain.js")); Requirements::css(SECURED_FILES_MODULE_DIR . '/thirdparty/javascript/jquery-ui/timepicker/jquery-ui-timepicker-addon.min.css'); Requirements::css(SECURED_FILES_MODULE_DIR . "/css/SecuredFilesLeftAndMain.css"); Requirements::javascript(SECURED_FILES_MODULE_DIR . "/javascript/SecuredFilesLeftAndMain.js"); if ($this->isFile()) { $buttonsSecurity = $this->showButtonsSecurity(); $buttonsEmbargoExpiry = $this->showButtonsEmbargoExpiry(); // Embargo field $embargoTypeField = new OptionSetField("EmbargoType", "", array("None" => _t('AdvancedSecuredFiles.NONENICE', "None"), "Indefinitely" => _t('AdvancedSecuredFiles.INDEFINITELYNICE', "Hide document indefinitely"), "UntilAFixedDate" => _t('AdvancedSecuredFiles.UNTILAFIXEDDATENICE', 'Hide until set date'))); $embargoUntilDateField = DatetimeField::create('EmbargoedUntilDate', ''); $embargoUntilDateField->getDateField()->setConfig('showcalendar', true)->setConfig('dateformat', 'dd-MM-yyyy')->setConfig('datavalueformat', 'dd-MM-yyyy')->setAttribute('readonly', true); $embargoUntilDateField->getTimeField()->setAttribute('readonly', true); // Expiry field $expireTypeField = new OptionSetField("ExpiryType", "", array("None" => _t('AdvancedSecuredFiles.NONENICE', "None"), "AtAFixedDate" => _t('AdvancedSecuredFiles.ATAFIXEDDATENICE', 'Set file to expire on'))); $expiryDatetime = DatetimeField::create('ExpireAtDate', ''); $expiryDatetime->getDateField()->setConfig('showcalendar', true)->setConfig('dateformat', 'dd-MM-yyyy')->setConfig('datavalueformat', 'dd-MM-yyyy')->setAttribute('readonly', true); $expiryDatetime->getTimeField()->setAttribute('readonly', true); $securitySettingsGroup = FieldGroup::create(FieldGroup::create($embargoTypeField, $embargoUntilDateField)->addExtraClass('embargo option-change-datetime')->setName("EmbargoGroupField"), FieldGroup::create($expireTypeField, $expiryDatetime)->addExtraClass('expiry option-change-datetime')->setName("ExpiryGroupField")); } else { $buttonsSecurity = $this->showButtonsSecurity(); $buttonsEmbargoExpiry = ''; $securitySettingsGroup = FieldGroup::create(); } $canViewTypeField = new OptionSetField("CanViewType", "", array("Inherit" => _t('AdvancedSecuredFiles.INHERIT', "Inherit from parent folder"), "Anyone" => _t('SiteTree.ACCESSANYONE', 'Anyone'), "LoggedInUsers" => _t('SiteTree.ACCESSLOGGEDIN', 'Logged-in users'), "OnlyTheseUsers" => _t('SiteTree.ACCESSONLYTHESE', 'Only these people (choose from list)'))); $canEditTypeField = new OptionSetField("CanEditType", "", array("Inherit" => _t('AdvancedSecuredFiles.INHERIT', "Inherit from parent folder"), "LoggedInUsers" => _t('SiteTree.ACCESSLOGGEDIN', 'Logged-in users'), "OnlyTheseUsers" => _t('SiteTree.ACCESSONLYTHESE', 'Only these people (choose from list)'))); $groupsMap = array(); foreach (Group::get() as $group) { // Listboxfield values are escaped, use ASCII char instead of » $groupsMap[$group->ID] = $group->getBreadcrumbs(' > '); } asort($groupsMap); $viewerGroupsField = ListboxField::create("ViewerGroups", _t('AdvancedSecuredFiles.VIEWERGROUPS', "Viewer Groups"))->setMultiple(true)->setSource($groupsMap)->setAttribute('data-placeholder', _t('AdvancedSecuredFiles.GroupPlaceholder', 'Click to select group')); $editorGroupsField = ListBoxField::create("EditorGroups", _t('AdvancedSecuredFiles.EDITORGROUPS', "Editor Groups"))->setMultiple(true)->setSource($groupsMap)->setAttribute('data-placeholder', _t('AdvancedSecuredFiles.GroupPlaceholder', 'Click to select group')); $securitySettingsGroup->push(FieldGroup::create($canViewTypeField, $viewerGroupsField)->addExtraClass('whocanview option-change-listbox')->setName("CanViewGroupField")); $securitySettingsGroup->push(FieldGroup::create($canEditTypeField, $editorGroupsField)->addExtraClass('whocanedit option-change-listbox')->setName("CanEditGroupField")); $securitySettingsGroup->setName("SecuritySettingsGroupField")->addExtraClass('security-settings'); $showAdvanced = AdvancedAssetsFilesSiteConfig::is_security_enabled() || $this->isFile() && AdvancedAssetsFilesSiteConfig::is_embargoexpiry_enabled(); if ($showAdvanced) { $fields->insertAfter(LiteralField::create('BottomTaskSelection', $this->owner->renderWith('componentField', ArrayData::create(array('ComponentSecurity' => AdvancedAssetsFilesSiteConfig::component_cms_icon('security'), 'ComponentEmbargoExpiry' => AdvancedAssetsFilesSiteConfig::component_cms_icon('embargoexpiry'), 'ButtonsSecurity' => $buttonsSecurity, 'ButtonsEmbargoExpiry' => $buttonsEmbargoExpiry)))), "ParentID"); $fields->insertAfter($securitySettingsGroup, "BottomTaskSelection"); } } if (!is_a($this->owner, "Folder") && is_a($this->owner, "File")) { $parentIDField = $fields->dataFieldByName("ParentID"); if ($controller instanceof SecuredAssetAdmin) { $securedRoot = FileSecured::getSecuredRoot(); $parentIDField->setTreeBaseID($securedRoot->ID); $parentIDField->setFilterFunction(create_function('$node', "return \$node->Secured == 1;")); } else { $parentIDField->setFilterFunction(create_function('$node', "return \$node->Secured == 0;")); } // SilverStripe core has a bug for search function now, so disable it for now. $parentIDField->setShowSearch(false); } }
public function getCMSFields() { Requirements::add_i18n_javascript(BLOCKS_DIR . '/javascript/lang'); // this line is a temporary patch until I can work out why this dependency isn't being // loaded in some cases... if (!$this->blockManager) { $this->blockManager = singleton('BlockManager'); } $fields = parent::getCMSFields(); // ClassNmae - block type/class field $classes = $this->blockManager->getBlockClasses(); $fields->addFieldToTab('Root.Main', DropdownField::create('ClassName', 'Block Type', $classes)->addExtraClass('block-type'), 'Title'); // BlockArea - display areas field if on page edit controller if (Controller::curr()->class == 'CMSPageEditController') { $currentPage = Controller::curr()->currentPage(); $fields->addFieldToTab('Root.Main', DropdownField::create('ManyMany[BlockArea]', 'BlockArea', $this->blockManager->getAreasForPageType($currentPage->ClassName))->setHasEmptyDefault(true)->setRightTitle($currentPage->areasPreviewButton()), 'ClassName'); } $fields->removeFieldFromTab('Root', 'BlockSets'); $fields->removeFieldFromTab('Root', 'Pages'); // legacy fields, will be removed in later release $fields->removeByName('Weight'); $fields->removeByName('Area'); $fields->removeByName('Published'); if ($this->blockManager->getUseExtraCSSClasses()) { $fields->addFieldToTab('Root.Main', $fields->dataFieldByName('ExtraCSSClasses'), 'Title'); } else { $fields->removeByName('ExtraCSSClasses'); } // Viewer groups $fields->removeFieldFromTab('Root', 'ViewerGroups'); $groupsMap = Group::get()->map('ID', 'Breadcrumbs')->toArray(); asort($groupsMap); $viewersOptionsField = new OptionsetField("CanViewType", _t('SiteTree.ACCESSHEADER', "Who can view this page?")); $viewerGroupsField = ListboxField::create("ViewerGroups", _t('SiteTree.VIEWERGROUPS', "Viewer Groups"))->setMultiple(true)->setSource($groupsMap)->setAttribute('data-placeholder', _t('SiteTree.GroupPlaceholder', 'Click to select group')); $viewersOptionsSource = array(); $viewersOptionsSource["Anyone"] = _t('SiteTree.ACCESSANYONE', "Anyone"); $viewersOptionsSource["LoggedInUsers"] = _t('SiteTree.ACCESSLOGGEDIN', "Logged-in users"); $viewersOptionsSource["OnlyTheseUsers"] = _t('SiteTree.ACCESSONLYTHESE', "Only these people (choose from list)"); $viewersOptionsField->setSource($viewersOptionsSource)->setValue("Anyone"); $fields->addFieldsToTab('Root.ViewerGroups', array($viewersOptionsField, $viewerGroupsField)); // Disabled for now, until we can list ALL pages this block is applied to (inc via sets) // As otherwise it could be misleading // Show a GridField (list only) with pages which this block is used on // $fields->removeFieldFromTab('Root.Pages', 'Pages'); // $fields->addFieldsToTab('Root.Pages', // new GridField( // 'Pages', // 'Used on pages', // $this->Pages(), // $gconf = GridFieldConfig_Base::create())); // enhance gridfield with edit links to pages if GFEditSiteTreeItemButtons is available // a GFRecordEditor (default) combined with BetterButtons already gives the possibility to // edit versioned records (Pages), but STbutton loads them in their own interface instead // of GFdetailform // if(class_exists('GridFieldEditSiteTreeItemButton')){ // $gconf->addComponent(new GridFieldEditSiteTreeItemButton()); // } return $fields; }
public function run($request) { $groups = Group::get(); echo 'Pass ?drop=1 to drop groups without members<br/>'; echo 'Want more dropping? Pass ?permission=1 to also drop groups without permissions even if they have members<br/>'; echo 'Pass ?merge=1 to merge groups with the same code<br/>'; echo 'Want to merge across subsites ? Pass ?subsite=1 to disable subsite filters<br/>'; echo '<hr/>'; $merge = $request->getVar('merge'); $drop = $request->getVar('drop'); $dropNoPermission = $request->getVar('permission'); $subsite = $request->getVar('subsite'); if (class_exists('Subsite') && $subsite) { Subsite::$disable_subsite_filter = true; } if ($drop) { DB::alteration_message("Dropping groups with no members"); if ($dropNoPermission) { DB::alteration_message("Also dropping groups with no permissions"); } foreach ($groups as $group) { if (!$group->Members()->count()) { DB::alteration_message("Removing group {$group->ID} because it has no members", "deleted"); $group->delete(); } if ($dropNoPermission) { $c = $group->Permissions()->count(); if (!$c) { DB::alteration_message("Removing group {$group->ID} because it has no permissions", "deleted"); $group->delete(); } } } } if ($merge) { DB::alteration_message("Merging groups with duplicated codes"); $index = array(); /* @var $group Group */ foreach ($groups as $group) { DB::alteration_message("Found group " . $group->Code); if (!isset($index[$group->Code])) { $index[$group->Code] = $group; DB::alteration_message("First instance of group, do not merge"); continue; } $mergeGroup = $index[$group->Code]; DB::alteration_message('Merge group ' . $group->ID . ' with ' . $mergeGroup->ID, 'repaired'); $i = 0; foreach ($group->Members() as $m) { $i++; $mergeGroup->Members()->add($m); } DB::alteration_message('Added ' . $i . ' members to group', 'created'); DB::alteration_message("Group " . $group->ID . ' was deleted', 'deleted'); $group->delete(); } } DB::alteration_message('All done!'); }
/** * @return FieldList */ public function getCMSFields() { $fields = parent::getCMSFields(); $fields->removeByName('Default'); $fields->removeByName('Validation'); $fields->addFieldToTab('Root.Main', DropdownField::create("GroupID", _t('EditableFormField.GROUP', 'Group'), Group::get()->map())->setEmptyString(' ')); return $fields; }
/** * {@inheritDoc} */ public function unserialize($data) { $data = unserialize($data); $group = \Group::get($data['group']); $players = \Player::arrayIdToModel($data['players']); $teams = \Team::arrayIdToModel($data['teams']); $this->__construct($group, array_merge($players, $teams)); }
/** * Dictated Viewer Groups * If any viewer groups have been dictated via public $dictatedViewerGroups = array() * on the object, those viewer groups are returned here * Else nothing is returned */ public function DictatedViewerGroups() { $gArr = $this->owner->dictatedViewerGroups; if (is_array($gArr) && !empty($gArr)) { $groups = Group::get()->filter('Code', $gArr); return $groups; } }
public function action_delete() { $id = $this->request->param('id'); if (!Group::get(User::get($id, 'group_id'), 'is_admin')) { DB::delete('users')->where('id', '=', $id)->execute(); Messages::save('User successfully deleted!', 'info'); } $this->redirect('/security/users'); }
public function updateCMSFields(FieldList $fields) { $group = Group::get()->filter(array('code' => BlogEntry::config()->defaultGroup))->first(); $contentAuthors = $group->Members()->map('ID', 'Title'); $fields->insertAfter(HTMLEditorField::create("Summary")->setRows(4), "Content"); $fields->insertAfter(UploadField::create("FeatureImage"), "Summary"); $fields->insertAfter(DropdownField::create('AuthorMemberID', 'Author (Member)', $contentAuthors)->setEmptyString('(Select one)'), 'Date'); $fields->removeByName('Author'); $fields->insertAfter(TextField::create('Author', "Guest Author"), "AuthorMemberID"); }
function entry_user_handler() { $this->check_login(); $params = $this->input->post(); if (isset($params['save_x'])) { $aktif = isset($params['aktif']) ? '1' : '0'; $user = new User(); switch ($params['type']) { case 'add': $this->padiauth->create_custom_user($params['username'], $params['password'], $params['email'], $params['group']); $this->access_log->insert_log('Create user ' . $params['username'] . '(' . $params['email'] . ')'); redirect(base_url() . 'index.php/back_end/show_user_management/page'); break; case 'edit': $user->where('id', $params['id'])->update(array('username' => $params['username'], 'email' => $params['email'], 'group_id' => $params['group'], 'status' => $params['aktif'])); $this->access_log->insert_log('Edit User ' . $params['username'] . '(' . $params['email'] . ')'); if ($params['password'] != '') { $user = new User(); $user->where('id', $params['id'])->get(); if ($params['password'] == $params['password2']) { $this->padiauth->change_password_user($params['password'], $params['id'], $user->salt); $this->access_log->insert_log('Change password ' . $params['username'] . '(' . $params['email'] . ')'); redirect(base_url() . 'index.php/back_end/show_user_management/page'); } else { $groups = new Group(); $groups->get(); $data = array('view_data' => 'entry_user', 'groups' => $groups->get_groups(), 'alert' => 'Password not match', 'type' => 'edit', 'id' => $user->id, 'name' => $user->username, 'email' => $user->email, 'group' => $user->group, 'aktif' => $user->status == '1' ? TRUE : FALSE); $this->access_log->insert_log('Error change password ' . $params['username'] . '(' . $params['email'] . ')'); $this->load->view('index', $data); } } else { redirect(base_url() . 'index.php/back_end/show_user_management/page'); } break; } } if (isset($params['hapus_member'])) { $user = new User(); $user->where('id', $params['id'])->get(); foreach ($params['member_id'] as $member_id) { echo $member_id; $member = new User(); $member->where('id', $member_id)->get(); $user->delete_user($member); echo $member->username; } redirect(base_url() . 'index.php/back_end/entry_user/type/edit/id/' . $params['id']); } if (isset($params['advanced_preference'])) { redirect(base_url() . 'index.php/back_end/advanced_user_preferences/id/' . $params['id']); } if (isset($params['cancel_x'])) { redirect(base_url() . 'index.php/back_end/show_user_management/page'); } }
public function updateCMSFields($fields) { $topLevelGroups = Group::get()->filter('ParentID', 0)->map()->toArray(); $groups = ListboxField::create('LoggedInGroups', 'Groups representing logged in users', $topLevelGroups); $groups->setMultiple(true); $fields->addFieldToTab('Root.MicroBlogSettings', $groups); $allGroups = Group::get()->map()->toArray(); $groups = ListboxField::create('TargetedGroups', 'Groups users can selectively post to', $allGroups); $groups->setMultiple(true); $fields->addFieldToTab('Root.MicroBlogSettings', $groups); }
public function testUnsavedGroups() { $member = $this->objFromFixture('GroupTest_Member', 'admin'); $group = new Group(); // Can save user to unsaved group $group->Members()->add($member); $this->assertEquals(array($member->ID), array_values($group->Members()->getIDList())); // Persists after writing to DB $group->write(); $group = Group::get()->byID($group->ID); $this->assertEquals(array($member->ID), array_values($group->Members()->getIDList())); }
public function getSettingsFields() { $fields = parent::getSettingsFields(); $groupsMap = array(); foreach (Group::get() as $group) { // Listboxfield values are escaped, use ASCII char instead of » $groupsMap[$group->ID] = $group->getBreadcrumbs(' > '); } asort($groupsMap); $fields->addFieldToTab("Root.Settings", ListboxField::create("PosterGroups", _t("Discussion.PosterGroups", "Groups that can post"))->setMultiple(true)->setSource($groupsMap)->setValue(null, $this->PosterGroups()), "CanViewType"); $fields->addFieldToTab("Root.Settings", ListboxField::create("ModeratorGroups", _t("Discussion.ModeratorGroups", "Groups that can moderate"))->setMultiple(true)->setSource($groupsMap)->setValue(null, $this->ModeratorGroups()), "CanViewType"); return $fields; }