public function onBeforeDelete() { if ($this->triggered) { return; } $this->triggered = true; PublisherSubscriberManager::getInstance()->publish(ISummitEntityEvent::DeletedEntity, array($this->owner)); }
private function __construct() { $this_var = $this; PublisherSubscriberManager::getInstance()->subscribe('dataobject_publish', function ($do) use($this_var) { $this_var->update(); }); PublisherSubscriberManager::getInstance()->subscribe('dataobject_unpublish', function ($do) use($this_var) { $this_var->update(); }); }
if ($join_table !== 'SummitAttendee_Schedule') { return; } $attendee_id = $list->getForeignID(); $attendee = SummitAttendee::get()->byID($attendee_id); $metadata = ''; $event = new SummitEntityEvent(); $event->EntityClassName = 'MySchedule'; $event->EntityID = $item->ID; $event->Type = 'INSERT'; $event->OwnerID = $attendee->MemberID; $event->SummitID = $summit_id; $event->Metadata = $metadata; $event->write(); }); PublisherSubscriberManager::getInstance()->subscribe('manymanylist_removed_item', function ($list, $item) { if (!$item instanceof ISummitEvent) { return; } $summit_id = $item->getField("SummitID"); if (is_null($summit_id) || $summit_id == 0) { $summit_id = Summit::ActiveSummitID(); } $metadata = ''; $join_table = $list->getJoinTable(); if ($join_table !== 'SummitAttendee_Schedule') { return; } $attendee_id = $list->getForeignID(); $attendee = SummitAttendee::get()->byID($attendee_id); $event = new SummitEntityEvent();
<?php /** * Copyright 2015 OpenStack Foundation * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. **/ PublisherSubscriberManager::getInstance()->subscribe('survey_organization_selected', function ($member, $organization_name) { //create the affiliation as current $organization_name = Convert::raw2sql(trim($organization_name)); if (!empty($organization_name)) { $org = Org::get()->filter(array('Name' => $organization_name))->first(); if (!$org) { $org = new Org(); $org->Name = $organization_name; $org->IsStandardizedOrg = false; $org->write(); //register new request $new_request = new OrganizationRegistrationRequest(); $new_request->MemberID = $member->getIdentifier(); $new_request->OrganizationID = $org->ID; $new_request->write(); } // If a new org name was provided for the member, find / create the new org and update the member record
function doRegister($data, $form) { if (!isset($data["Affiliations"]) || empty($data["Affiliations"])) { //Set error message $form->AddErrorMessage('Affiliations', "Sorry, You must at least enter one valid Affiliation.", 'bad'); //Set form data from submitted values Session::set("FormInfo.Form_RegistrationForm.data", $data); //Return back to form return $this->redirectBack(); } $new_affiliations = json_decode($data["Affiliations"]); //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.", 'bad'); //Set form data from submitted values Session::set("FormInfo.Form_RegistrationForm.data", $data); //Return back to form return $this->redirectBack(); } //Otherwise create new member and log them in $Member = new Member(); $form->saveInto($Member); if (isset($data['Gender'])) { $Gender = $data['Gender']; if ($Gender != 'Male' && $Gender != 'Female' && $Gender != 'Prefer not to say') { $Member->Gender = Convert::raw2sql($data['GenderSpecify']); } } $Member->write(); if ($data['MembershipType'] == 'foundation') { $Member->upgradeToFoundationMember(); } else { $Member->convert2SiteUser(); } //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); foreach ($new_affiliations as $key => $newAffiliation) { $dbAffiliation = new Affiliation(); $org_name = Convert::raw2sql($newAffiliation->OrgName); $org_name = trim($org_name); AffiliationController::Save($dbAffiliation, $newAffiliation, $org_name, $Member); } PublisherSubscriberManager::getInstance()->publish('new_user_registered', array($Member->ID)); //Get profile page if ($ProfilePage = EditProfilePage::get()->first()) { //send Thank you email $config = SiteConfig::current_site_config(); if ($config->RegistrationSendMail && !empty($config->RegistrationFromMessage) && !empty($config->RegistrationSubjectMessage) && !empty($config->RegistrationHTMLMessage) && !empty($config->RegistrationPlainTextMessage)) { $registration_email = new CustomEmail($config->RegistrationFromMessage, $Member->Email, $data['MembershipType'] == 'foundation' ? 'Thank you for becoming an OpenStack Foundation Member' : 'Thank you for becoming an OpenStack Community Member', $config->RegistrationHTMLMessage, $config->RegistrationPlainTextMessage); $registration_email->send(); } //Redirect to profile page with success message return OpenStackIdCommon::loginMember($member, $ProfilePage->Link('?success=1')); } }
<?php /** * Copyright 2014 Openstack Foundation * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. **/ //decorators Object::add_extension('Member', 'ICLAMemberDecorator'); Object::add_extension('Company', 'ICLACompanyDecorator'); Object::add_extension('SangriaPage_Controller', 'SangriaPageICLACompaniesExtension'); Object::add_extension('EditProfilePage_Controller', 'EditProfilePageICLAExtension'); PublisherSubscriberManager::getInstance()->subscribe('new_user_registered', function ($member_id) { //check if user has pending invitations $team_manager = new CCLATeamManager(new SapphireTeamInvitationRepository(), new SapphireCLAMemberRepository(), new TeamInvitationFactory(), new TeamFactory(), new CCLAValidatorFactory(), new SapphireTeamRepository(), SapphireTransactionManager::getInstance()); $team_manager->verifyInvitations($member_id, new TeamInvitationEmailSender(new SapphireTeamInvitationRepository())); });
/** * Register an speaker and confirm the registration request if exists * @param array $data * @param IMessageSenderService $sender_service * @return Member * @throws EntityValidationException * @throws Exception */ public function registerSpeaker(array $data, IMessageSenderService $sender_service) { $repository = $this->repository; $group_repository = $this->group_repository; $factory = $this->factory; $group_factory = $this->group_factory; $speaker_registration_request_manager = $this->speaker_registration_request_manager; try { return $this->tx_manager->transaction(function () use($data, $repository, $group_repository, $factory, $group_factory, $speaker_registration_request_manager, $sender_service) { $mandatory_fields = array('Email' => 'Email', 'FirstName' => 'First Name', 'Surname' => 'Surname', 'Password' => 'Password'); foreach ($mandatory_fields as $mf => $fn) { if (!isset($data[$mf]) || empty($data[$mf])) { throw new EntityValidationException(sprintf('%s is a mandatory field!.', $fn)); } } if (!isset($data['Password']['_Password']) || !isset($data['Password']['_ConfirmPassword']) || $data['Password']['_ConfirmPassword'] !== $data['Password']['_Password']) { throw new EntityValidationException('Password is a mandatory field!.'); } $old_member = $repository->findByEmail(Convert::raw2sql($data['Email'])); if (!is_null($old_member)) { throw new EntityValidationException('Sorry, that email address already exists. Please choose another.'); } $member = $factory->buildReduced($data); $member->write(); $member->convert2SiteUser(); $speakers_group = $group_repository->getByCode(ISecurityGroupFactory::SpeakersGroupCode); if (is_null($speakers_group)) { // create group $speakers_group = $group_factory->build(ISecurityGroupFactory::SpeakersGroupCode); $speakers_group->write(); } $member->addToGroupByCode(ISecurityGroupFactory::SpeakersGroupCode); if (!empty($data[SpeakerRegistrationRequest::ConfirmationTokenParamName])) { $speaker_registration_token = $data[SpeakerRegistrationRequest::ConfirmationTokenParamName]; $speaker_registration_request_manager->confirm($speaker_registration_token, $member); } if (!is_null($sender_service)) { $sender_service->send($member); } //force write, $member->write(); PublisherSubscriberManager::getInstance()->publish('new_user_registered', array($member->ID)); return $member; }); } catch (EntityValidationException $ex1) { SS_Log::log($ex1->getMessage(), SS_Log::WARN); throw $ex1; } catch (Exception $ex) { SS_Log::log($ex->getMessage(), SS_Log::ERR); throw $ex; } }
/** * @param $member_id * @param $event_id * @return mixed */ public function removeEventFromSchedule($member_id, $event_id) { $this_var = $this; $summitevent_repository = $this->summitevent_repository; $attendee_repository = $this->attendee_repository; return $this->tx_manager->transaction(function () use($this_var, $member_id, $event_id, $attendee_repository, $summitevent_repository) { $event = $summitevent_repository->getById($event_id); if (!$event) { throw new NotFoundEntityException('Event', sprintf('id %s', $event_id)); } $attendee = $attendee_repository->getByMemberAndSummit($member_id, $event->Summit->getIdentifier()); if (!$attendee) { throw new NotFoundEntityException('Attendee', sprintf('id %s', $event_id)); } $attendee->removeFromSchedule($event); PublisherSubscriberManager::getInstance()->publish(ISummitEntityEvent::RemovedToSchedule, array($member_id, $event)); return $attendee; }); }
/** * @param array $data * @param ISurveyStep $current_step * @return ISurveyStep */ public function completeStep(ISurveyStep $current_step, array $data) { $template_repository = $this->template_repository; $survey_repository = $this->survey_repository; $survey_builder = $this->survey_builder; $member_repository = $this->member_repository; return $this->tx_manager->transaction(function () use($current_step, $data, $survey_builder, $member_repository, $template_repository, $survey_repository) { $current_survey = $current_step->survey(); if ($current_step instanceof ISurveyRegularStep) { $current_step->clearAnswers(); foreach ($current_step->template()->getQuestions() as $q) { if (isset($data[$q->name()])) { // its has an answer set if ($q->name() === SurveyOrganizationQuestionTemplate::FieldName) { //publish event PublisherSubscriberManager::getInstance()->publish('survey_organization_selected', array($current_survey->createdBy(), $data[$q->name()])); } $current_step->addAnswer($survey_builder->buildAnswer($q, $data[$q->name()])); } } } return $current_survey->completeCurrentStep(); }); }
public function onBeforeDelete() { PublisherSubscriberManager::getInstance()->publish(ISummitEntityEvent::DeletedEntity, array($this->owner)); }
/** * @return void */ public function onAfterUnpublish() { PublisherSubscriberManager::getInstance()->publish('dataobject_unpublish', array($this)); }
/** * @param array $data * @param EditProfilePage $profile_page * @param IMessageSenderService $sender_service * @return null * @throws Exception */ public function register(array $data, EditProfilePage $profile_page, IMessageSenderService $sender_service) { $repository = $this->repository; $group_repository = $this->group_repository; $factory = $this->factory; $group_factory = $this->group_factory; $affiliation_factory = $this->affiliation_factory; $org_repository = $this->org_repository; $org_factory = $this->org_factory; // we use an external ref to member bc is there is any error on TX, Member table does not // support transactions bc its MyISam $member = null; try { $this->tx_manager->transaction(function () use($data, $profile_page, $repository, $group_repository, $org_repository, $factory, $group_factory, $affiliation_factory, $org_factory, $sender_service, &$member) { if (!isset($data["HiddenAffiliations"]) || empty($data["HiddenAffiliations"])) { throw new EntityValidationException(array('You must at least enter one valid Affiliation.')); } $old_member = $repository->findByEmail(Convert::raw2sql($data['Email'])); if (!is_null($old_member)) { throw new EntityValidationException(array('Sorry, that email address already exists. Please choose another.')); } $member = $factory->build($data); //force write, will write immediatly bc MyIsam engine $member->write(); $affiliations_data = json_decode($data["HiddenAffiliations"]); if (is_null($affiliations_data)) { throw new EntityValidationException(array('You must at least enter one valid Affiliation.')); } if ($data['MembershipType'] === 'foundation') { $member->upgradeToFoundationMember(); } else { $member->convert2SiteUser(); } $users_group = $group_repository->getByCode(ISecurityGroupFactory::UsersGroupCode); if (is_null($users_group)) { // create group $users_group = $group_factory->build(ISecurityGroupFactory::UsersGroupCode); $users_group->write(); } $member->addToGroupByCode(ISecurityGroupFactory::UsersGroupCode); foreach ($affiliations_data as $key => $d) { $org_name = trim($d->OrgName); $org = $org_repository->getByName($org_name); if (is_null($org)) { $org = $org_factory->build($org_name); $org->write(); } $affiliation = $affiliation_factory->build($d, $member, $org); $affiliation->write(); } if (!is_null($profile_page)) { $sender_service->send($member); } //force write, $member->write(); return $member; }); } catch (Exception $ex) { if (!is_null($member)) { $member->delete(); } throw $ex; } PublisherSubscriberManager::getInstance()->publish('new_user_registered', array($member->ID)); return $member; }
public function remove($item) { parent::remove($item); PublisherSubscriberManager::getInstance()->publish('manymanylist_removed_item', array($this, $item)); }