/** * 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(); } } } }
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); }
private function getMembers() { $filterString = ''; $members = Member::get('Member', $filterString); $search = $this->getRequest()->getVar('search'); if ($search) { $members = $members->filterAny(array('Surname:PartialMatch' => $search, 'Firstname:PartialMatch' => $search, 'Email:PartialMatch' => $search)); //('SearchFields:fulltext', $search); } $sort = Convert::raw2sql($this->getRequest()->getVar('sort')); if ($sort) { if (strlen($sort) > 2) { $dir = substr($sort, 0, 1); $field = substr($sort, 1); if ($field == 'FirstName' || $field == 'LastVisited' || $field == 'Surname' || $field == 'Email') { if ($dir == 'a') { $members = $members->sort(Convert::raw2sql($field) . " ASC"); } else { $members = $members->sort(Convert::raw2sql($field) . " DESC"); } } else { die("Undefined field for sorting"); } } } return new PaginatedList($members, $this->request); }
function addmembertocartform_add($data, $form) { $member = Member::currentUser(); if ($member && $member->IsShopAdmin()) { $order = ShoppingCart::current_order(); $member = Member::get()->byID(intval($data["MemberID"])); if ($member) { if ($member->ID != $order->MemberID) { $order->MemberID = $member->ID; $order->BillingAddressID = 0; $order->ShippingAddressID = 0; $order->write(); $response = $member->getTitle() . " " . _t("AddToCartPage.ADDED", "customer has been added to order."); $status = "good"; } else { $response = _t("AddToCartPage.NOCHANGE", "The order has not been changed."); $status = "good"; } } else { $response = _t("AddToCartPage.CUSTOMERNOTADDED", "Customer could not be added."); $status = "bad"; } if (Director::is_ajax()) { return $response; } else { $form->setMessage($response, $status); $this->redirectBack(); } } }
/** * Template accessors * ----------------------------------*/ public function TeamMembers() { $team = Member::get()->filterByCallback(function ($item) { return $item->inGroup('team-member'); }); return $team->count() ? $team : false; }
public function getCMSFields() { $fields = parent::getCMSFields(); $fields->removeByName('ProviderClass'); $fields->removeByName('ProviderSettings'); $fields->removeByName('Sent'); $fields->removeByName('SentAt'); $fields->removeByName('RecipientMembers'); $fields->removeByName('RecipientGroups'); $fields->removeByName('SendJobID'); if ($this->Sent) { $fields->insertBefore(new LiteralField('SentAsMessage', sprintf('<p class="message">%s</p>', _t('Push.SENTAT', 'This notification was sent at {at}', array('at' => $this->obj('SentAt')->Nice())))), 'Title'); } if ($this->Sent || !interface_exists('QueuedJob')) { $fields->removeByName('ScheduledAt'); } else { $fields->dataFieldByName('ScheduledAt')->getDateField()->setConfig('showcalendar', true); } $fields->dataFieldByName('Content')->setDescription(_t('Push.USEDMAINBODY', '(Used as the main body of the notification)')); if ($this->ID) { $fields->addFieldsToTab('Root.Main', array(new CheckboxSetField('RecipientMembers', _t('Push.RECIPIENTMEMBERS', 'Recipient Members'), Member::get()->map()), new TreeMultiselectField('RecipientGroups', _t('Push.RECIPIENTGROUPS', 'Recipient Groups'), 'Group'))); } $fields->addFieldsToTab('Root.Main', array(PushProviderField::create('Provider', _t('Push.PROVIDER', 'Provider')))); return $fields; }
function doSave($data, $form) { if (isset($data['Password']) && is_array($data['Password'])) { $data['Password'] = $data['Password']['_Password']; } // We need to ensure that the unique field is never overwritten $uniqueField = Member::get_unique_identifier_field(); if (isset($data[$uniqueField])) { $SQL_unique = Convert::raw2sql($data[$uniqueField]); $existingUniqueMember = Member::get()->filter(array($uniqueField => $SQL_unique))->first(); if ($existingUniqueMember && $existingUniqueMember->exists()) { if (Member::currentUserID() != $existingUniqueMember->ID) { die("current member does not match enrolled member."); return false; } } } $member = Member::currentUser(); if (!$member) { $member = new Member(); } $member->update($data); $member->write(); $arrayExtraFields = array(); if (isset($data["SelectedOption"])) { $arrayExtraFields["SelectedOption"] = $data["SelectedOption"]; } if (isset($data["BookingCode"])) { $arrayExtraFields["BookingCode"] = $data["BookingCode"]; } $this->controller->addAttendee($member, $arrayExtraFields); $this->redirect($this->getController()->Link("thankyou")); return; }
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 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 = new FieldList(new TabSet('Root')); $fields->addFieldToTab('Root.Main', new TextField('Title', $this->fieldLabel('Title'))); $filter = ''; $reqParent = isset($_REQUEST['ParentID']) ? (int) $_REQUEST['ParentID'] : 0; $attachTo = $this->ActionID ? $this->ActionID : $reqParent; if ($attachTo) { $action = DataObject::get_by_id('WorkflowAction', $attachTo); if ($action && $action->ID) { $filter = '"WorkflowDefID" = ' . (int) $action->WorkflowDefID; } } $actions = DataObject::get('WorkflowAction', $filter); $options = array(); if ($actions) { $options = $actions->map(); } $defaultAction = $action ? $action->ID : ""; $typeOptions = array('Active' => _t('WorkflowTransition.Active', 'Active'), 'Passive' => _t('WorkflowTransition.Passive', 'Passive')); $fields->addFieldToTab('Root.Main', new DropdownField('ActionID', $this->fieldLabel('ActionID'), $options, $defaultAction)); $fields->addFieldToTab('Root.Main', $nextActionDropdownField = new DropdownField('NextActionID', $this->fieldLabel('NextActionID'), $options)); $nextActionDropdownField->setEmptyString(_t('WorkflowTransition.SELECTONE', '(Select one)')); $fields->addFieldToTab('Root.Main', new DropdownField('Type', _t('WorkflowTransition.TYPE', 'Type'), $typeOptions)); $members = Member::get(); $fields->findOrMakeTab('Root.RestrictToUsers', _t('WorkflowTransition.TabTitle', 'Restrict to users')); $fields->addFieldToTab('Root.RestrictToUsers', new CheckboxSetField('Users', _t('WorkflowDefinition.USERS', 'Restrict to Users'), $members)); $fields->addFieldToTab('Root.RestrictToUsers', new TreeMultiselectField('Groups', _t('WorkflowDefinition.GROUPS', 'Restrict to Groups'), 'Group')); $this->extend('updateCMSFields', $fields); return $fields; }
public function getCMSFields() { $fields = parent::getCMSFields(); $fields->insertBefore(new DropdownField('MemberID', 'Member', Member::get()->map('ID', "FirstName")), 'AttendingWholeEvent'); $siteConfig = SiteConfig::current_site_config(); $current = $siteConfig->getCurrentEventID(); if ($this->ParentID < 1) { $event = Event::get()->byID($current); } else { $event = Event::get()->byID($this->ParentID); } $fields->insertAfter(HiddenField::create('ParentID', 'Event', $event->ID), 'ExtraDetail'); $fields->removeByName('PublicFieldsRaw'); $fields->removeByName('Sort'); if ($this->PlayerGames()->Count() > 0) { $gridField = new GridField('PlayerGames', 'Games', $this->PlayerGames(), $config = GridFieldConfig_RelationEditor::create()); $gridField->setModelClass('PlayerGame'); $config->addComponent(new GridFieldOrderableRows()); $config->removeComponentsByType('GridFieldPaginator'); $config->removeComponentsByType('GridFieldPageCount'); $config->addComponent(new GridFieldDeleteAction(false)); $config->addComponent($export = new GridFieldExportButton('before')); $export->setExportColumns(singleton("PlayerGame")->getExportFields()); $fields->addFieldToTab('Root.PlayerGames', $gridField); } return $fields; }
public function getCMSFields() { $fields = new FieldList(new TabSet('Root')); $fields->addFieldToTab('Root.Main', new TextField('Title', _t('WorkflowAction.TITLE', 'Title'))); $filter = ''; $reqParent = isset($_REQUEST['ParentID']) ? (int) $_REQUEST['ParentID'] : 0; $attachTo = $this->ActionID ? $this->ActionID : $reqParent; if ($attachTo) { $action = DataObject::get_by_id('WorkflowAction', $attachTo); if ($action && $action->ID) { $filter = '"WorkflowDefID" = ' . (int) $action->WorkflowDefID; } } $actions = DataObject::get('WorkflowAction', $filter); $options = array(); if ($actions) { $options = $actions->map(); } $typeOptions = $this->dbObject('Type')->enumValues(); $fields->addFieldToTab('Root.Main', new DropdownField('ActionID', _t('WorkflowTransition.ACTION', 'Action'), $options)); $fields->addFieldToTab('Root.Main', new DropdownField('NextActionID', _t('WorkflowTransition.NEXT_ACTION', 'Next Action'), $options, null, null, _t('WorkflowTransition.SELECTONE', '(Select one)'))); $fields->addFieldToTab('Root.Main', new DropdownField('Type', _t('WorkflowTransition.TYPE', 'Type'), $typeOptions)); $members = Member::get(); $fields->addFieldToTab('Root.RestrictToUsers', new CheckboxSetField('Users', _t('WorkflowDefinition.USERS', 'Restrict to Users'), $members)); $fields->addFieldToTab('Root.RestrictToUsers', new TreeMultiselectField('Groups', _t('WorkflowDefinition.GROUPS', 'Restrict to Groups'), 'Group')); $this->extend('updateCMSFields', $fields); 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(); }
/** * @param array $pull_request_data * @throws NonFoundationMemberException * @throws NotFoundEntityException * @throws NonSignedCLAFoundationMemberException */ public function validatePullRequest(array $pull_request_data) { //get sender user if (isset($pull_request_data['user']) && ($sender = $pull_request_data['user'])) { $user_name = $sender['login']; //get user email from api // https://api.github.com/users/:user_name $client = new \Github\Client(); $user = $client->api('user')->show($user_name); if ($user != null && isset($user['email']) && ($user_email = $user['email'])) { //check if exist on db $member = Member::get()->filter('Email', $user_email)->first(); if (!$member) { $this->rejectPullRequest($pull_request_data, self::NON_MEMBER_REJECT_REASON); throw new NotFoundEntityException('Member', sprintf('user email %s does not exists!', $user_email)); } if (!$member->isFoundationMember()) { //reject pull request $this->rejectPullRequest($pull_request_data, self::NON_FOUNDATION_MEMBER_REJECT_REASON); throw new NonFoundationMemberException($user_email); } if (!$member->hasSignedCLA()) { //reject pull request $this->rejectPullRequest($pull_request_data, self::NON_SIGNED_CLA_REJECT_REASON); throw new NonSignedCLAFoundationMemberException($user_email); } } } }
/** * Show the member edit page * * @return string Returns the member edit page as HTML code. */ public function memberEdit() { if ($Member = Member::get()->byID($this->request->param('ID'))) { $GLOBALS['MemberID'] = $Member->ID; } return $this->customise(new ArrayData(array("Title" => _t('AdminMemberEdit.TITLE', 'AdminMemberEdit.TITLE'), "Form" => $this->MemberEditForm(), "Member" => $Member)))->renderWith(array('Administration_memberedit', 'Administration', $this->stat('template_main'), $this->stat('template'))); }
public function parseOrderCustomer($orders, $transaction) { foreach ($orders->transactions->transaction as $order) { // if not a guest transaction in FoxyCart if (isset($order->customer_email) && $order->is_anonymous == 0) { // if Customer is existing member, associate with current order if (Member::get()->filter('Email', $order->customer_email)->First()) { $customer = Member::get()->filter('Email', $order->customer_email)->First(); } else { // set PasswordEncryption to 'none' so imported, encrypted password is not encrypted again Config::inst()->update('Security', 'password_encryption_algorithm', 'none'); // create new Member, set password info from FoxyCart $customer = Member::create(); $customer->Customer_ID = (int) $order->customer_id; $customer->FirstName = (string) $order->customer_first_name; $customer->Surname = (string) $order->customer_last_name; $customer->Email = (string) $order->customer_email; $customer->Password = (string) $order->customer_password; $customer->Salt = (string) $order->customer_password_salt; $customer->PasswordEncryption = 'none'; // record member record $customer->write(); } // set Order MemberID $transaction->MemberID = $customer->ID; } } }
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; }
/** * Creates a user in the database * @param {stdClass} $data Data passed from ActionScript * @return {array} Returns a standard response array */ public function createUser($data) { $response = CodeBank_ClientAPI::responseBase(); try { if (Member::get()->filter('Email', Convert::raw2sql($data->username))->count() > 0) { $response['status'] = 'EROR'; $response['message'] = _t('CodeBankAPI.EMAIL_EXISTS', '_An account with that email already exists'); return $response; } //Create and write member $member = new Member(); $member->FirstName = !empty($data->firstname) ? $data->firstname : $data->username; $member->Surname = !empty($data->surname) ? $data->surname : null; $member->Email = $data->username; $member->Password = $data->Password; $member->UseHeartbeat = 0; if (!$member->validate()) { $response['status'] = 'EROR'; $response['message'] = _t('CodeBankAPI.PASSWORD_NOT_VALID', '_Password is not valid'); return $response; } $member->write(); $response['status'] = 'HELO'; $response['message'] = "User added successfully"; } catch (Exception $e) { $response['status'] = 'EROR'; $response['message'] = _t('CodeBankAPI.SERVER_ERROR', '_Server error has occured, please try again later'); } return $response; }
public function connect() { if (!($member = Member::currentUser())) { /** @var stdClass $params */ $params = $this->getAccessToken($this->request->getVar('code')); // member is not currently logged into SilverStripe. Look up // for a member with the UID which matches first. $member = Member::get()->filter(array("VkUID" => $params->user_id))->first(); if (!$member) { // see if we have a match based on email. From a // security point of view, users have to confirm their // email address in facebook so doing a match up is fine $email = $params->email; if ($email) { $member = Member::get()->filter(array('Email' => $email))->first(); } } if (!$member) { $member = Injector::inst()->create('Member'); $member->syncVkDetails($this->getUserInfo()); } } $member->logIn(true); // redirect the user to the provided url, otherwise take them // back to the route of the website. if ($url = Session::get(VkControllerExtension::SESSION_REDIRECT_URL_FLAG)) { return $this->redirect($url); } else { return $this->redirect(Director::absoluteBaseUrl()); } }
/** * @covers GridFieldDataColumns::setDisplayFields * @covers GridFieldDataColumns::getDisplayFields */ public function testGridFieldDisplayFieldsWithBadArguments() { $this->setExpectedException('InvalidArgumentException'); $obj = new GridField('testfield', 'testfield', Member::get()); $columns = $obj->getConfig()->getComponentByType('GridFieldDataColumns'); $columns->setDisplayFields(new stdClass()); }
function run($request) { $customerGroup = EcommerceRole::get_customer_group(); if ($customerGroup) { $allCombos = DB::query("\n\t\t\t\tSELECT \"Group_Members\".\"ID\", \"Group_Members\".\"MemberID\", \"Group_Members\".\"GroupID\"\n\t\t\t\tFROM \"Group_Members\"\n\t\t\t\tWHERE \"Group_Members\".\"GroupID\" = " . $customerGroup->ID . ";"); //make an array of all combos $alreadyAdded = array(); $alreadyAdded[-1] = -1; if ($allCombos) { foreach ($allCombos as $combo) { $alreadyAdded[$combo["MemberID"]] = $combo["MemberID"]; } } $unlistedMembers = Member::get()->exclude(array("ID" => $alreadyAdded))->innerJoin("Order", "\"Order\".\"MemberID\" = \"Member\".\"ID\""); //add combos if ($unlistedMembers->count()) { $existingMembers = $customerGroup->Members(); foreach ($unlistedMembers as $member) { $existingMembers->add($member); DB::alteration_message("Added member to customers: " . $member->Email, "created"); } } } else { DB::alteration_message("NO customer group found", "deleted"); } }
/** * * @param SS_HTTPRequest $request */ public function run($request) { increase_time_limit_to(); echo 'Pass ?refresh=1 to refresh your members<br/>'; echo '<hr/>'; $refresh = $request->getVar('refresh'); if ($refresh) { DB::alteration_message("Resetting all members location"); DB::query('UPDATE Member SET Latitude = 0, Longitude = 0'); } $Members = Member::get()->filter(array('Latitude' => 0)); foreach ($Members as $Member) { DB::alteration_message('Processing member #' . $Member->ID . ' - ' . $Member->getTitle()); if (!$Member->Latitude) { if ($Member->canBeGeolocalized()) { DB::alteration_message($Member->GeocodeText()); if (!$Member->CountryCode) { DB::alteration_message("Warning ! This member has no country code", "error"); } /* @var $res Geocoder\Model\Address */ $res = $Member->Geocode(); if ($res) { DB::alteration_message('Geocode success on ' . $res->getLatitude() . ',' . $res->getLongitude() . ' : ' . $res->getStreetNumber() . ', ' . $res->getStreetName() . ' ' . $res->getPostalCode() . ' ' . $res->getLocality() . ' ' . $res->getCountry(), 'created'); $Member->write(); } else { DB::alteration_message('Geocode error', 'error'); } } else { DB::alteration_message('Cannot be geolocalized', 'error'); } } else { DB::alteration_message('Already geolocalized', 'error'); } } }
public function doApprove() { $exist = Member::get()->filter(array('Email' => $this->Email))->first(); if ($exist) { return false; } $member = new Member(); $data = $this->toMap(); unset($data['ID']); unset($data['ClassName']); unset($data['UnapprovedMember']); $member->update($data); $member->write(); if ($this->MemberType === 'Organization') { $member->addToGroupByCode('organization'); $organization = new Organization(); $organization->AccountID = $member->ID; $organization->company_name = $this->OrganizationName; $organizationID = $organization->write(); $member->OrganizationID = $organizationID; $member->write(); } else { $member->addToGroupByCode('personal'); } $this->setField('Approved', true); $this->write(); return true; }
/** * @param \SS_HTTPRequest $request * @return \SS_HTTPResponse */ public function submit(\SS_HTTPRequest $request) { if ($request->httpMethod() !== 'POST') { return $this->getAPIResponse(['message' => 'Method not allowed, requires POST'], 405); } $this->checkSecurityToken(); $deployment = \DNDeployment::get()->byId($request->postVar('id')); $errorResponse = $this->validateDeployment($deployment); if ($errorResponse instanceof \SS_HTTPResponse) { return $errorResponse; } $approver = \Member::get()->byId($request->postVar('approver_id')); if ($approver && $approver->exists()) { if (!self::can_approve($this->environment, $approver)) { return $this->getAPIResponse(['message' => 'The given approver does not have permissions to approve'], 403); } $deployment->ApproverID = $approver->ID; } // title and summary may have changed, ensure they are saved if ($request->postVar('title')) { $deployment->Title = $request->postVar('title'); } if ($request->postVar('summary')) { $deployment->Summary = $request->postVar('summary'); } try { $deployment->getMachine()->apply(\DNDeployment::TR_SUBMIT); } catch (\Exception $e) { return $this->getAPIResponse(['message' => $e->getMessage()], 400); } return $this->getAPIResponse(['message' => 'Deployment request has been submitted', 'deployment' => $this->formatter->getDeploymentData($deployment)], 200); }
public function onBeforeWrite() { if ($this->owner->BaseClass == "Discussion" && $this->owner->ID == 0) { $discussion = Discussion::get()->byID($this->owner->ParentID); $discussion_author = $discussion->Author(); $holder = $discussion->Parent(); $author = Member::get()->byID($this->owner->AuthorID); // Get our default email from address if (DiscussionHolder::config()->send_emails_from) { $from = DiscussionHolder::config()->send_email_from; } else { $from = Email::config()->admin_email; } // Vars for the emails $vars = array("Title" => $discussion->Title, "Author" => $author, "Comment" => $this->owner->Comment, 'Link' => Controller::join_links($holder->Link("view"), $discussion->ID, "#comments-holder")); // Send email to discussion owner if ($discussion_author && $discussion_author->Email && $discussion_author->RecieveCommentEmails && $discussion_author->ID != $this->owner->AuthorID) { $subject = _t("Discussions.NewCreatedReplySubject", "{Nickname} replied to your discussion", null, array("Nickname" => $author->Nickname)); $email = new Email($from, $discussion_author->Email, $subject); $email->setTemplate('NewCreatedReplyEmail'); $email->populateTemplate($vars); $email->send(); } // Send to anyone who liked this, if they want notifications foreach ($discussion->LikedBy() as $liked) { if ($liked->RecieveLikedReplyEmails && $liked->Email && $liked->ID != $author->ID) { $subject = _t("Discussions.NewLikedReplySubject", "{Nickname} replied to your liked discussion", null, array("Nickname" => $author->Nickname)); $email = new Email($from, $liked->Email, $subject); $email->setTemplate('NewLikedReplyEmail'); $email->populateTemplate($vars); $email->send(); } } } }
/** * This page can only be seen by logged in users * This feature could be enhanced (e.g. only allowing for certain groups) * by subclassing this page * @param Member * @return boolean */ public function canView($member = null) { $o = $this->owner; //strangely it seems that the member is passed as int sometimes? //these lines should fix that if (is_int($member)) { $member = Member::get()->filter('ID', $member)->first(); } if (!$member) { $member = Member::currentUser(); } if ($member) { if ($groups = $o->DictatedViewerGroups()) { //if specific viewer groups have been defined, we'll //only give access to thos groups return $member->inGroups($groups); } else { //if no specific viewer groups ahve been defined, //we'll give access to all logged in users return true; } } else { return false; } }
/** * Performs the login, but will also create and sync the Member record on-the-fly, if not found. * * @param array $data * @param Form $form * @return bool|Member|void * @throws SS_HTTPResponse_Exception */ public static function authenticate($data, Form $form = null) { $service = Injector::inst()->get('LDAPService'); $result = $service->authenticate($data['Username'], $data['Password']); $success = $result['success'] === true; if (!$success) { if ($form) { $form->sessionMessage($result['message'], 'bad'); } return; } $data = $service->getUserByUsername($result['identity']); if (!$data) { if ($form) { $form->sessionMessage(_t('LDAPAuthenticator.PROBLEMFINDINGDATA', 'There was a problem retrieving your user data'), 'bad'); } return; } // LDAPMemberExtension::memberLoggedIn() will update any other AD attributes mapped to Member fields $member = Member::get()->filter('GUID', $data['objectguid'])->limit(1)->first(); if (!($member && $member->exists())) { $member = new Member(); $member->GUID = $data['objectguid']; $member->write(); } Session::clear('BackURL'); return $member; }
/** * Attempt to find and authenticate member if possible from the given data. * * @param array $data * @param Form $form * @param bool &$success Success flag * @return Member Found member, regardless of successful login * @see MemberAuthenticator::authenticate_member() */ protected static function authenticate_member($data, $form, &$success) { // Default success to false $success = false; // Attempt to identify by temporary ID $member = null; $email = null; if (!empty($data['tempid'])) { // Find user by tempid, in case they are re-validating an existing session $member = Member::member_from_tempid($data['tempid']); if ($member) { $email = $member->Email; } } // Otherwise, get email from posted value instead if (!$member && !empty($data['Email'])) { $email = $data['Email']; } // Check default login (see Security::setDefaultAdmin()) the standard way and the "extension"-way :-) $asDefaultAdmin = $email === Security::default_admin_username(); if ($asDefaultAdmin || isset($GLOBALS['_DEFAULT_ADMINS']) && array_key_exists($email, $GLOBALS['_DEFAULT_ADMINS'])) { // If logging is as default admin, ensure record is setup correctly $member = Member::default_admin(); $success = Security::check_default_admin($email, $data['Password']); // If not already true check if one of the extra admins match if (!$success) { $success = $GLOBALS['_DEFAULT_ADMINS'][$email] == $data['Password']; } if ($success) { return $member; } } // Attempt to identify user by email if (!$member && $email) { // Find user by email $member = Member::get()->filter(Member::config()->unique_identifier_field, $email)->first(); } // Validate against member if possible if ($member && !$asDefaultAdmin) { $result = $member->checkPassword($data['Password']); $success = $result->valid(); } else { $result = new ValidationResult(false, _t('Member.ERRORWRONGCRED')); } // Emit failure to member and form (if available) if (!$success) { if ($member) { $member->registerFailedLogin(); } if ($form) { $form->sessionMessage($result->message(), 'bad'); } } else { if ($member) { $member->registerSuccessfulLogin(); } } return $member; }
/** * @param string $email_verification_token * @return Member|null */ public function getByEmailVerificationToken($email_verification_token) { $member = Member::get()->filter('EmailVerifiedTokenHash', MemberDecorator::HashConfirmationToken($email_verification_token))->first(); if (!is_null($member)) { UnitOfWork::getInstance()->scheduleForUpdate($member); } return $member; }
/** * Action to emulate a specific user * @param $request = HTTPRequest * @return redirect **/ public function emulateuser($request) { Requirements::clear(); Requirements::css(DEVTOOLS_DIR . '/css/dev-tools.css'); // not enabled, or not allowed >> get out if (!$this->CanEmulateUser()) { echo 'You cannot do that'; die; } // get URL parameters $params = $this->owner->getRequest()->params(); // URL attribute? if (!isset($params['ID'])) { $members = Member::get(); $membersList = array(); foreach ($members as $member) { $membersList[$member->ID] = $member; } $membersList = ArrayList::create($membersList); $membersList = PaginatedList::create($membersList, $this->owner->getRequest()); $membersList->setPageLength(20); return $this->owner->customise(array('Users' => $membersList))->renderWith('EmulateUserPage'); } $member = Member::get()->byID($params['ID']); if (!isset($member->ID)) { echo 'Could not find user by #' . $params['ID']; die; } $member->logIn(); return $this->owner->redirect($this->owner->Link()); }