public static function create(Member $login, array $data, PropelPDO $con) { $formData = \Invitation::initInvitationForm($data); $invitationsCount = InvitationQuery::create()->count(); $hash = \Tbmt\Cryption::getInvitationHash($login, $formData['type'], $invitationsCount . time()); $invitation = new Invitation(); $invitation->setHash($hash)->setMemberId($login->getId())->setType($formData['type'])->setFreeSignup($formData['free_signup'] ? 1 : 0)->setCreationDate(time())->save($con); return $invitation; }
public static function create(Member $login, array $data, PropelPDO $con) { $type = $data['type']; $hash = SystemStats::getIncreasedInvitationIncrementer($con); $invitation = new Invitation(); if ($type === \Member::TYPE_SUB_PROMOTER) { $invitation->setMeta(['promoter_num' => $data['promoter_num'], 'promoter_id' => $data['promoter_id']]); } $invitation->setHash($hash)->setMemberId($login->getId())->setType($type)->setFreeSignup(isset($data['free_signup']) && $data['free_signup'] ? 1 : 0)->setCreationDate(time())->save($con); return $invitation; }
public function testLevelApplyingWithFreeRegistration() { $sylvheim = Member::getByNum(\SystemStats::ACCOUNT_SYLVHEIM); $sylvheim_total = new TransactionTotalsAssertions($sylvheim, $this); /* Setup - This member is set as paid but no money is spread. * Because this one is just for testing purpose ---------------------------------------------*/ $marketingLeader = DbEntityHelper::createMember($sylvheim, ['Type' => Member::TYPE_MARKETINGLEADER]); $marketingLeader->reload(self::$propelCon); $marketingLeader_total = new TransactionTotalsAssertions($marketingLeader, $this); /* Create invitation ---------------------------------------------*/ $invitation = Invitation::create($marketingLeader, ['type' => Member::TYPE_ORGLEADER, 'free_signup' => 1], self::$propelCon); /* Create member with created invitation code ---------------------------------------------*/ list($valid, $data, $referralMember, $invitation) = \Member::validateSignupForm(array_merge(self::$singupFormData, ['referral_member_num' => $marketingLeader->getNum(), 'invitation_code' => $invitation->getHash()])); // Because the marketing leader is level 1 this org leader will be // transfered to be child of sylvheim $orgLeader = \Member::createFromSignup($data, $marketingLeader, $invitation, self::$propelCon); $orgLeader->reload(self::$propelCon); // Because orgleaders parent has to be sylvhelm, advertising someone first time // needs to bonus sylvheim DbEntityHelper::createSignupMember($orgLeader); // Spread money for creating this last member $sylvheim_total->add(Transaction::REASON_SYLVHEIM, 1); $sylvheim_total->add(Transaction::REASON_ADVERTISED_INDIRECT, 1); // VL_BONUS - because, orgleader was VL first member and got transferred to // sylvheimm, therefore there is no VL between sylvheim and ol when ol // inviteds member $sylvheim_total->add(Transaction::REASON_VL_BONUS, 1); // marketing leader gets nothing from ol's advertising. $sylvheim_total->assertTotals(); $marketingLeader_total->assertTotals(); }
function getInvitationMessage($invitation) { $search = array("\n", "\r"); $replace = array("<br/>", ""); $messageObj = Invitation::GetInstance()->GetInvitationMessageById($invitation['invitemessageid']); return str_replace($search, $replace, $messageObj['message']); }
static function GetInstance() { if (self::$instance == NULL) { self::$instance = new Invitation(); } return self::$instance; }
/** * @test */ public function it_can_invite_someone() { $id = $this->generator->generate(); $this->scenario->when(function () use($id) { return Invitation::invite($id, 'asm89'); })->then([new InvitedEvent($id, 'asm89')]); }
public static function GetInstance() { if (self::$instance == null) { self::$instance = new self(); } return self::$instance; }
/** * Shows the page to the user. * @param string $sub: The subpage string argument (if any). * [[Special:HelloWorld/subpage]]. */ public function execute($sub) { $out = $this->getOutput(); $request = $this->getRequest(); $user = $this->getUser(); // Set the page title, robot policies, etc. $this->setHeaders(); // If the user doesn't have the required 'SendToFollowers' permission, display an error if (!$user->isAllowed('getinvitationcode')) { $out->permissionRequired('getinvitationcode'); return; } $out->setPageTitle($this->msg('huijimiddleware-invitationcode')); // Is the database locked? if (wfReadOnly()) { $out->readOnlyPage(); return false; } // Blocked through Special:Block? No access for you! if ($user->isBlocked()) { $out->blockedPage(false); return false; } // Parses message from .i18n.php as wikitext and adds it to the // page output. $num = $request->getVal('num'); if ($num == '') { $num = 1; } Invitation::generateInvCode($num); $code = Invitation::getInvList($num); $out->addHtml($code); // $out->addWikiMsg( 'huijimiddleware-helloworld-intro' ); }
public static function show(Inputter $inputter, JSONOutputter $outputter) { // Show // $id = $inputter->additional_uri_arguments[0]; $error = null; UniversallyUniqueIdentifier::propertyIsValid('rawIdentifier', $id, $error); if (isset($error)) { $outputter->print_error($error); } // User ID // $client = new Everyman\Neo4j\Client('events.sb04.stations.graphenedb.com', 24789); $client->getTransport()->setAuth('Events', '3TP9LHROhv8LIcGmbYzq'); $query_string = 'MATCH (object:Invitation) WHERE object.' . UNIVERSALLY_UNIQUE_OBJECT_KEY_IDENTIFICATION . ' = \'' . $id . '\' RETURN object'; $query = new Everyman\Neo4j\Cypher\Query($client, $query_string); $result = $query->getResultSet(); if (count($result) > 0) { // Compare sent data is equal to data retrieved // $object = $result[0]['object']; // Print data // $outputter->print_data(array(Invitation::printer_dictionary($object))); } else { // Throw error, user doesn't exists // $error = Error::withDomain(PRIVATE_EVENTS_REST_CONTROLLER_ERROR_DOMAIN, PRIVATE_EVENTS_REST_CONTROLLER_ERROR_CODE_ENTITY_DOES_NOT_EXIST, 'Invitation with ID does not exist.'); $outputter->print_error($error); } }
public function fire() { $this->info(date('Y-m-d') . ' Running SendRecurringInvoices...'); $today = new DateTime(); $invoices = Invoice::with('account.timezone', 'invoice_items', 'client')->whereRaw('is_deleted IS FALSE AND deleted_at IS NULL AND is_recurring IS TRUE AND start_date <= ? AND (end_date IS NULL OR end_date >= ?)', array($today, $today))->get(); $this->info(count($invoices) . ' recurring invoice(s) found'); foreach ($invoices as $recurInvoice) { if ($recurInvoice->client->deleted_at) { continue; } date_default_timezone_set($recurInvoice->account->getTimezone()); $this->info('Processing Invoice ' . $recurInvoice->id . ' - Should send ' . ($recurInvoice->shouldSendToday() ? 'YES' : 'NO')); if (!$recurInvoice->shouldSendToday()) { continue; } $invoice = Invoice::createNew($recurInvoice); $invoice->client_id = $recurInvoice->client_id; $invoice->recurring_invoice_id = $recurInvoice->id; $invoice->invoice_number = 'R' . $recurInvoice->account->getNextInvoiceNumber(); $invoice->amount = $recurInvoice->amount; $invoice->balance = $recurInvoice->amount; $invoice->invoice_date = date_create()->format('Y-m-d'); $invoice->discount = $recurInvoice->discount; $invoice->po_number = $recurInvoice->po_number; $invoice->public_notes = $recurInvoice->public_notes; $invoice->terms = $recurInvoice->terms; $invoice->tax_name = $recurInvoice->tax_name; $invoice->tax_rate = $recurInvoice->tax_rate; $invoice->invoice_design_id = $recurInvoice->invoice_design_id; if ($invoice->client->payment_terms) { $invoice->due_date = date_create()->modify($invoice->client->payment_terms . ' day')->format('Y-m-d'); } $invoice->save(); foreach ($recurInvoice->invoice_items as $recurItem) { $item = InvoiceItem::createNew($recurItem); $item->product_id = $recurItem->product_id; $item->qty = $recurItem->qty; $item->cost = $recurItem->cost; $item->notes = Utils::processVariables($recurItem->notes); $item->product_key = Utils::processVariables($recurItem->product_key); $item->tax_name = $recurItem->tax_name; $item->tax_rate = $recurItem->tax_rate; $invoice->invoice_items()->save($item); } foreach ($recurInvoice->invitations as $recurInvitation) { $invitation = Invitation::createNew($recurInvitation); $invitation->contact_id = $recurInvitation->contact_id; $invitation->invitation_key = str_random(RANDOM_KEY_LENGTH); $invoice->invitations()->save($invitation); } $this->mailer->sendInvoice($invoice); $recurInvoice->last_sent_date = Carbon::now()->toDateTimeString(); $recurInvoice->save(); } $this->info('Done'); }
public function action_invitation_create() { $login = Session::getLogin(); $type = Arr::init($_REQUEST, 'type', TYPE_INT); if ($login->getType() <= $type || $type < \Member::TYPE_MEMBER || $type >= \Member::TYPE_CEO) { throw new PermissionDeniedException(); } \Invitation::create($login, $_REQUEST, \Propel::getConnection()); return ControllerDispatcher::renderModuleView(self::MODULE_NAME, 'index', ['member' => Session::getLogin(), 'tab' => 'invitation']); }
/** * Show the form for creating a new resource. * * @param string $code * @return Response */ public function create($code = null) { if ($code != null && is_null(Invitation::where('code', '=', $code)->where('used_by', '=', '0')->first())) { return View::make('admin.login.register')->withErrors(array('mainError' => 'Кодът Ви е грешен. Ако мислите, че няма грешка, моля въведете кода и имейла по-отдолу.')); } elseif (!is_null(Invitation::where('code', '=', $code)->where('used_by', '=', '0')->first())) { $email = Invitation::where('code', '=', $code)->first()->email; return View::make('admin.login.register')->with('code', $code)->with('email', $email); } return View::make('admin.login.register'); }
public function render(array $params = array()) { if (!isset($params['member']) && !$params['member'] instanceof \Member) { throw new \Exception('Invalid param member for account index view.'); } $this->member = $params['member']; $this->formVal = \Invitation::initInvitationForm(isset($params['formVal']) ? $params['formVal'] : $_REQUEST); $this->formErrors = isset($params['formErrors']) ? $params['formErrors'] : []; $this->invitations = \InvitationQuery::create()->filterByMemberId($this->member->getId())->orderBy('AcceptedDate', \Criteria::DESC)->orderBy('CreationDate', \Criteria::DESC)->limit(100)->find(); $this->invitationDateFormat = \Tbmt\Localizer::get('datetime_format_php.long'); return $this->renderFile(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'tab.invitation.account.html', $params); }
/** * Remove the specified resource from storage. * * @param int $id * @return Response */ public function destroy($id) { $invitation = Invitation::find($id); if (!is_null($invitation)) { if ($invitation->delete()) { return Redirect::route('admin.invitations.index')->withErrors(array('mainSuccess' => 'Поканата е успешно изтрита.')); } else { return Redirect::route('admin.invitations.index')->withErrors(array('mainError' => 'Грешка с базата данни.')); } } else { return Redirect::route('admin.invitations.index')->withErrors(array('mainError' => 'Поканата не е намерена.')); } }
public function getClientDatatable() { $search = Input::get('sSearch'); $invitationKey = Session::get('invitation_key'); $invitation = Invitation::where('invitation_key', '=', $invitationKey)->first(); if (!$invitation || $invitation->is_deleted) { return []; } $invoice = $invitation->invoice; if (!$invoice || $invoice->is_deleted) { return []; } return $this->invoiceRepo->getClientDatatable($invitation->contact_id, ENTITY_QUOTE, $search); }
public function inviteAction(Team $team, Player $player, Player $me) { if (!$me->canEdit($team)) { throw new ForbiddenException("You are not allowed to invite a player to that team!"); } elseif ($team->isMember($player->getId())) { throw new ForbiddenException("The specified player is already a member of that team."); } elseif (Invitation::hasOpenInvitation($player->getId(), $team->getId())) { throw new ForbiddenException("This player has already been invited to join the team."); } return $this->showConfirmationForm(function () use($team, $player, $me) { $invite = Invitation::sendInvite($player->getId(), $me->getId(), $team->getId()); Service::getDispatcher()->dispatch(Events::TEAM_INVITE, new TeamInviteEvent($invite)); return new RedirectResponse($team->getUrl()); }, "Are you sure you want to invite {$player->getEscapedUsername()} to {$team->getEscapedName()}?", "Player {$player->getUsername()} has been invited to {$team->getName()}"); }
/** * @see EventListener::execute() */ public function execute($eventObj, $className, $eventName) { if (MODULE_INVITATION) { if ($eventName === 'readParameters') { if (isset($_GET['invitationCode']) && !empty($_GET['invitationCode'])) { $eventObj->additionalFields['invitationCode'] = intval($_GET['invitationCode']); self::$invitation = new InvitationEditor(null, null, $eventObj->additionalFields['invitationCode']); } else { $eventObj->additionalFields['invitationCode'] = ''; } if (isset($_GET['email']) && !empty($_GET['email'])) { $eventObj->email = $_GET['email']; } } else { if ($eventName === 'readFormParameters') { if (isset($_POST['invitationCode']) && !empty($_POST['invitationCode'])) { $eventObj->additionalFields['invitationCode'] = intval($_POST['invitationCode']); self::$invitation = new InvitationEditor(null, null, $eventObj->additionalFields['invitationCode']); } } else { if ($eventName === 'assignVariables') { WCF::getTPL()->assign('invitationCode', $eventObj->additionalFields['invitationCode']); } else { if ($eventName === 'show') { WCF::getTPL()->append('additionalFields', WCF::getTPL()->fetch('registerInviteField')); } else { if ($eventName === 'validate') { try { if (REGISTER_INVITATION_NECESSARY && empty($eventObj->additionalFields['invitationCode'])) { throw new UserInputException('invitationCode'); } if (!Invitation::isValid($eventObj->email, $eventObj->additionalFields['invitationCode'])) { throw new UserInputException('invitationCode', 'false'); } } catch (UserInputException $e) { $eventObj->errorType[$e->getField()] = $e->getType(); } } else { if ($eventName === 'saved') { self::$invitation->seal(); } } } } } } } }
function setup_module($column, $module, $obj) { global $login_uid, $paging, $page_uid, $page_user, $total_groups; switch ($module) { // TODO Remove the Search Module ... case 'SearchGroupsModule': return "skip"; break; case 'MyGroupsModule': if (!$login_uid) { return "skip"; } if ($page_uid && $page_uid != $login_uid) { $obj->uid = $page_uid; $page_user = get_user(); $obj->title = ucfirst($page_user->first_name) . '\'s Groups'; $obj->user_name = $page_user->login_name; } else { $obj->uid = $login_uid; } // get pending group invitations for the logged-in user. $obj->mode = PUB; $pending_invitations = Invitation::get_pending_invitations_for_user_by_email($_SESSION["user"]["email"], $login_uid); $obj->pending_invitations = $pending_invitations; $obj->Paging["page"] = $paging["page"]; $obj->Paging["show"] = $paging["show"]; break; case 'GroupsCategoryModule': $obj->mode = PUB; $obj->total_groups = $total_groups; break; case 'GroupsDirectoryModule': $obj->Paging["page"] = $paging["page"]; $obj->Paging["show"] = $paging["show"]; $obj->total_groups = $total_groups; $obj->sort_by = @$_GET['sort_by']; if (@$_GET['keyword']) { $obj->name_string = $_GET['name_string']; $obj->keyword = $_GET['keyword']; $obj->uid = @$_GET['uid']; } if (@$_GET['uid']) { $obj->uid = $_GET['uid']; } break; } }
function render() { // invite status // if we have array of collection ids then find the invitation of each collection (group) if (is_array($this->collection_id_array) && count($this->collection_id_array) > 0) { $accepted = Invitation::get_accepted_invitations($_SESSION['user']['id'], '-1', $this->collection_id_array); } else { $accepted = Invitation::get_accepted_invitations($_SESSION['user']['id']); } $accepted_invitation = array(); if (!empty($accepted)) { $i = 0; foreach ($accepted as $ac) { $inv_user = new User(); $inv_user->load((int) $ac['inv_user_id']); $accepted_invitation[$i]['user_name'] = $inv_user->login_name; $accepted_invitation[$i]['first_name'] = $inv_user->first_name; $accepted_invitation[$i]['last_name'] = $inv_user->last_name; $accepted_invitation[$i]['picture'] = $inv_user->picture; $accepted_invitation[$i]['user_id'] = $inv_user->user_id; $i++; } } // if we have array of collection ids then find the invitation of each collection (group) if (is_array($this->collection_id_array) && count($this->collection_id_array) > 0) { $pending = Invitation::get_pending_invitations($_SESSION['user']['id'], '-1', $this->collection_id_array); } else { $pending = Invitation::get_pending_invitations($_SESSION['user']['id']); } $pending_invitation = array(); if (!empty($pending)) { $i = 0; foreach ($pending as $pe) { $pending_invitation[$i]['user_email'] = $pe['inv_user_email']; $i++; } } $this->accepted_invitation = $accepted_invitation; $this->pending_invitation = $pending_invitation; $this->inner_HTML = $this->generate_inner_html(); $content = parent::render(); return $content; }
/** * Handle the site * * @param array $remitem type of reminder to send and any special options * @return boolean true on success, false on failure */ function handle($remitem) { list($type, $opts) = $remitem; $qm = QueueManager::get(); try { switch ($type) { case UserConfirmRegReminderHandler::REGISTER_REMINDER: $confirm = new Confirm_address(); $confirm->address_type = $type; $confirm->find(); while ($confirm->fetch()) { try { $qm->enqueue(array($confirm, $opts), 'uregrem'); } catch (Exception $e) { common_log(LOG_WARNING, $e->getMessage()); continue; } } break; case UserInviteReminderHandler::INVITE_REMINDER: $invitation = new Invitation(); // Only send one reminder (the latest one), regardless of how many invitations a user has $sql = 'SELECT * FROM (SELECT * FROM invitation WHERE registered_user_id IS NULL ORDER BY created DESC) invitees GROUP BY invitees.address'; $invitation->query($sql); while ($invitation->fetch()) { try { $qm->enqueue(array($invitation, $opts), 'uinvrem'); } catch (Exception $e) { common_log(LOG_WARNING, $e->getMessage()); continue; } } break; default: // WTF? common_log(LOG_ERR, "Received unknown confirmation address type", __FILE__); } } catch (Exception $e) { common_log(LOG_ERR, $e->getMessage()); return false; } return true; }
public static function createMemberWithInvitation($referrer, $invitationData, $data = []) { if (is_numeric($invitationData)) { $invitationData = ['type' => $invitationData]; } $data = array_merge(self::$memberInvitation, $data); /* Create invitation ---------------------------------------------*/ $invitation = Invitation::create($referrer, $invitationData, self::$con); /* Create member with created invitation code ---------------------------------------------*/ list($valid, $data, $referralMember, $invitation) = \Member::validateSignupForm(array_merge($data, ['referral_member_num' => $referrer->getNum(), 'invitation_code' => $invitation->getHash()])); $member = \Member::createFromSignup($data, $referrer, $invitation, self::$con); $member->reload(self::$con); if (!isset($invitationData['free_signup']) || !$invitationData['free_signup']) { $member->onReceivedMemberFee(self::$currency, time(), false, self::$con); } return $member; }
public function testInvitationCanFreeFromFee() { // NOTE: This tests what happen if one of my third+ advertisings gets // deleted due to not paiing fee. /* Setup ---------------------------------------------*/ DbEntityHelper::setCon(self::$propelCon); $marketingLeader = DbEntityHelper::createMember(null, ['type' => Member::TYPE_MARKETINGLEADER]); $marketingLeader->reload(self::$propelCon); /* Create invitation ---------------------------------------------*/ $invitation = Invitation::create($marketingLeader, ['type' => Member::TYPE_ORGLEADER, 'free_signup' => 1], self::$propelCon); /* Create member with created invitation code ---------------------------------------------*/ list($valid, $data, $referralMember, $invitation) = \Member::validateSignupForm(array_merge(self::$singupFormData, ['referral_member_num' => $marketingLeader->getNum(), 'invitation_code' => $invitation->getHash()])); $member = \Member::createFromSignup($data, $marketingLeader, $invitation, self::$propelCon); $member->reload(self::$propelCon); /* Assert proper member type ---------------------------------------------*/ $this->assertEquals(Member::TYPE_ORGLEADER, $member->getType()); $this->assertNotNull($member->getPaidDate()); }
public function action_invitation_create() { $login = Session::getLogin(); $type = Arr::init($_REQUEST, 'type', TYPE_INT); if ($login->getType() < $type || $type < \Member::TYPE_MEMBER || $type > $login->getType() || $login->getFundsLevel() != \Member::FUNDS_LEVEL2) { throw new PermissionDeniedException(); } if ($type === \Member::TYPE_SUB_PROMOTER) { list($valid, $data, $recipient) = \Invitation::validateInvitationForm($_REQUEST); if ($valid !== true) { return ControllerDispatcher::renderModuleView(self::MODULE_NAME, 'index', ['member' => $login, 'tab' => 'invitation', 'formErrors' => $data, 'recipient' => $recipient, 'formVal' => $_REQUEST]); } if ($data['promoter_id'] === '') { $data['promoter_id'] = $recipient->getId(); return ControllerDispatcher::renderModuleView(self::MODULE_NAME, 'index', ['member' => $login, 'tab' => 'invitation', 'formVal' => $data, 'recipient' => $recipient]); } } else { $data = \Invitation::initInvitationForm($_REQUEST); } \Invitation::create($login, $data, \Propel::getConnection()); return ControllerDispatcher::renderModuleView(self::MODULE_NAME, 'index', ['member' => $login, 'tab' => 'invitation', 'successmsg' => true, 'formVal' => []]); }
<meta http-equiv="expires" content="31 Dec 2011 12:00:00 GMT"/> <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> <title><?php echo SITE_NAME; ?> - Worker Registration Page</title> <link href="css/site.css" rel="stylesheet" type="text/css"> </head> <body> <div id="container"> <?php $author = getWorkerAuthenticated(); $invitationList = Invitation::selectWorker($author->workerid); $expoList = array(); foreach ($invitationList as $invitation) { if (!is_null($invitation->expoid)) { $expoList[] = Expo::selectID($invitation->expoid); } } $_SESSION[PARAM_LIST] = $expoList; //setExpoCurrent(NULL); $invitationList = NULL; // gc hint // ok, start the html include 'section/header.php'; ?>
private function handlePOST_inviteSelected($request_data) { $message = trim($request_data['message']); if (empty($message)) { $msg = __("Invite message can't be empty."); } else { $msg = null; $message = nl2br($message); $selected_contacts = !empty($request_data['invite_selected']) ? $request_data['invite_selected'] : null; if ($selected_contacts) { foreach ($selected_contacts as $key => $cntct_id) { $contact = $this->contacts[$key]; // selected index = contacts index $inv = new Invitation(); $inv->user_id = PA::$login_uid; $inv->username = PA::$login_user->login_name; $user = PA::$login_user; // for invitation not for any group invitation collection id is -1 $inv->inv_collection_id = -1; $inv->inv_status = INVITATION_PENDING; $auth_token = get_invitation_token(LONG_EXPIRES, $contact['email']); $token = '&token=' . $auth_token; $link_desc = wordwrap(PA::$url . "/register.php?InvID={$inv->inv_id}", 120, "<br>", 1); $inv->register_url = "<a href=\"" . PA::$url . "/register.php?InvID={$inv->inv_id}\">{$link_desc}</a>"; $acc_link_desc = wordwrap(PA::$url . "/login.php?action=accept&InvID={$inv->inv_id}{$token}", 120, "<br>", 1); $inv->accept_url = "<a href=\"" . PA::$url . "/login.php?action=accept&InvID={$inv->inv_id}{$token}\">{$acc_link_desc}</a>"; $inv->inv_user_id = NULL; $inv->inv_user_first_name = $contact['name']; $inv->inv_email = $contact['email']; $inv->inv_summary = "Invitation from {$user->first_name} {$user->last_name} to join " . PA::$site_name; if ($message != CUSTOM_INVITATION_MESSAGE) { $inv->inv_message = !empty($message) ? $message : null; } try { $inv->send(); } catch (PAException $e) { $msg = "{$e->message}"; $save_error = true; } if (isset($save_error) && $save_error == true) { $msg = "Sorry: you are unable to invite a friend. <br /> Reason: " . $msg; } else { // invitation has been sent, now send mail PAMail::send('invite_pa', $inv->inv_email, PA::$login_user, $inv); $msg .= "<br />" . $contact['name'] . ", " . $contact['email']; } } // end for : invitation to multiple email $msg = "<br />Invitation message has been sent to: " . $msg; } else { $msg = __("Please, select one or more contacts."); } } $redirect_url = PA::$url . PA_ROUTE_USER_CONTACTS . "?type=contacts&stype=" . $this->type . "&msg=" . urlencode($msg); $this->controller->redirect($redirect_url); }
public function onRouterInitialized($m) { $m->connect('api/qvitter/check_email.json', array('action' => 'ApiQvitterCheckEmail')); $m->connect('api/qvitter/:nickname/lists/:id/subscribers.json', array('action' => 'ApiQvitterListSubscribers', 'nickname' => '[a-zA-Z0-9]+', 'id' => '[a-zA-Z0-9]+')); $m->connect('api/qvitter/:nickname/lists/:id/members.json', array('action' => 'ApiQvitterListMembers', 'nickname' => '[a-zA-Z0-9]+', 'id' => '[a-zA-Z0-9]+')); $m->connect('api/qvitter/:nickname/lists/:id/statuses.json', array('action' => 'ApiQvitterTimelineList', 'nickname' => '[a-zA-Z0-9]+', 'id' => '[a-zA-Z0-9]+')); $m->connect('api/qvitter/blocks.json', array('action' => 'ApiQvitterBlocks')); $m->connect('api/qvitter/hello.json', array('action' => 'ApiQvitterHello')); $m->connect('api/qvitter/mark_all_notifications_as_seen.json', array('action' => 'ApiQvitterMarkAllNotificationsAsSeen')); $m->connect('api/qvitter/favs_and_repeats/:notice_id.json', array('action' => 'ApiFavsAndRepeats'), array('notice_id' => '[0-9]+')); $m->connect('api/statuses/public_and_external_timeline.:format', array('action' => 'ApiTimelinePublicAndExternal', 'format' => '(xml|json|rss|atom|as)')); $m->connect('api/qvitter/update_bookmarks.json', array('action' => 'ApiQvitterUpdateBookmarks')); $m->connect('api/qvitter/set_profile_pref.json', array('action' => 'ApiQvitterSetProfilePref')); $m->connect('api/qvitter/update_link_color.json', array('action' => 'apiqvitterupdatelinkcolor')); $m->connect('api/qvitter/update_background_color.json', array('action' => 'apiqvitterupdatebackgroundcolor')); $m->connect('api/qvitter/checklogin.json', array('action' => 'apiqvitterchecklogin')); $m->connect('api/qvitter/allfollowing/:id.json', array('action' => 'apiqvitterallfollowing', 'id' => Nickname::INPUT_FMT)); $m->connect('api/qvitter/update_cover_photo.json', array('action' => 'ApiUpdateCoverPhoto')); $m->connect('api/qvitter/update_background_image.json', array('action' => 'ApiUpdateBackgroundImage')); $m->connect('api/qvitter/update_avatar.json', array('action' => 'ApiUpdateAvatar')); $m->connect('api/qvitter/upload_image.json', array('action' => 'ApiUploadImage')); $m->connect('api/qvitter/external_user_show.json', array('action' => 'ApiExternalUserShow')); $m->connect('api/qvitter/toggle_qvitter.json', array('action' => 'ApiToggleQvitter')); $m->connect('api/qvitter/statuses/notifications.json', array('action' => 'apiqvitternotifications')); $m->connect(':nickname/notifications', array('action' => 'qvitter', 'nickname' => Nickname::INPUT_FMT)); $m->connect('settings/qvitter', array('action' => 'qvittersettings')); $m->connect('panel/qvitter', array('action' => 'qvitteradminsettings')); $m->connect('main/qlogin', array('action' => 'qvitterlogin')); URLMapperOverwrite::overwrite_variable($m, 'api/statuses/update.:format', array('action' => 'ApiStatusesUpdate'), array('format' => '(xml|json)'), 'ApiQvitterStatusesUpdate'); // check if we should reroute UI to qvitter, and which home-stream the user wants (hide-replies or normal) $scoped = Profile::current(); $qvitter_enabled_by_user = 0; $qvitter_disabled_by_user = 0; if ($scoped instanceof Profile) { $qvitter_enabled_by_user = (int) $scoped->getPref('qvitter', 'enable_qvitter', false); $qvitter_disabled_by_user = (int) $scoped->getPref('qvitter', 'disable_qvitter', false); $this->qvitter_hide_replies = $scoped->getPref('qvitter', 'hide_replies', false); } // reroute to qvitter if we're logged out and qvitter is enabled by default if (static::settings('enabledbydefault') === true && is_null($scoped)) { $this->hijack_ui = true; } elseif (static::settings('enabledbydefault') === true && $qvitter_disabled_by_user == 0) { $this->hijack_ui = true; } elseif (static::settings('enabledbydefault') === false && $qvitter_enabled_by_user == 1) { $this->hijack_ui = true; } if ($this->hijack_ui === true) { // other plugins might want to reroute to qvitter Event::handle('QvitterHijackUI', array($m)); $m->connect('', array('action' => 'qvitter')); $m->connect('main/all', array('action' => 'qvitter')); $m->connect('main/public', array('action' => 'qvitter')); $m->connect('search/notice', array('action' => 'qvitter')); // if the user wants the twitter style home stream with hidden replies to non-friends if ($this->qvitter_hide_replies == 1) { URLMapperOverwrite::overwrite_variable($m, 'api/statuses/friends_timeline.:format', array('action' => 'ApiTimelineFriends'), array('format' => '(xml|json|rss|atom|as)'), 'ApiTimelineFriendsHiddenReplies'); } URLMapperOverwrite::overwrite_variable($m, ':nickname', array('action' => 'showstream'), array('nickname' => Nickname::DISPLAY_FMT), 'qvitter'); URLMapperOverwrite::overwrite_variable($m, ':nickname/', array('action' => 'showstream'), array('nickname' => Nickname::DISPLAY_FMT), 'qvitter'); URLMapperOverwrite::overwrite_variable($m, ':nickname/all', array('action' => 'all'), array('nickname' => Nickname::DISPLAY_FMT), 'qvitter'); URLMapperOverwrite::overwrite_variable($m, ':nickname/subscriptions', array('action' => 'subscriptions'), array('nickname' => Nickname::DISPLAY_FMT), 'qvitter'); URLMapperOverwrite::overwrite_variable($m, ':nickname/subscribers', array('action' => 'subscribers'), array('nickname' => Nickname::DISPLAY_FMT), 'qvitter'); URLMapperOverwrite::overwrite_variable($m, ':nickname/groups', array('action' => 'usergroups'), array('nickname' => Nickname::DISPLAY_FMT), 'qvitter'); URLMapperOverwrite::overwrite_variable($m, ':nickname/replies', array('action' => 'replies'), array('nickname' => Nickname::DISPLAY_FMT), 'qvitter'); URLMapperOverwrite::overwrite_variable($m, ':nickname/favorites', array('action' => 'showfavorites'), array('nickname' => Nickname::DISPLAY_FMT), 'qvitter'); URLMapperOverwrite::overwrite_variable($m, 'group/:nickname', array('action' => 'showgroup'), array('nickname' => Nickname::DISPLAY_FMT), 'qvitter'); URLMapperOverwrite::overwrite_variable($m, 'group/:nickname/members', array('action' => 'groupmembers'), array('nickname' => Nickname::DISPLAY_FMT), 'qvitter'); URLMapperOverwrite::overwrite_variable($m, ':nickname/all/:tag', array('action' => 'showprofiletag'), array('nickname' => Nickname::DISPLAY_FMT, 'tag' => Router::REGEX_TAG), 'qvitter'); URLMapperOverwrite::overwrite_variable($m, ':tagger/all/:tag/tagged', array('action' => 'peopletagged'), array('tagger' => Nickname::DISPLAY_FMT, 'tag' => Router::REGEX_TAG), 'qvitter'); URLMapperOverwrite::overwrite_variable($m, ':tagger/all/:tag/subscribers', array('action' => 'peopletagsubscribers'), array('tagger' => Nickname::DISPLAY_FMT, 'tag' => Router::REGEX_TAG), 'qvitter'); $m->connect('group/:nickname/admins', array('action' => 'qvitter'), array('nickname' => Nickname::DISPLAY_FMT)); URLMapperOverwrite::overwrite_variable($m, 'tag/:tag', array('action' => 'showstream'), array('tag' => Router::REGEX_TAG), 'qvitter'); URLMapperOverwrite::overwrite_variable($m, 'notice/:notice', array('action' => 'shownotice'), array('notice' => '[0-9]+'), 'qvitter'); URLMapperOverwrite::overwrite_variable($m, 'conversation/:id', array('action' => 'conversation'), array('id' => '[0-9]+'), 'qvitter'); } // if qvitter is opt-out, disable the default register page (if we don't have a valid invitation code) $valid_code = isset($_POST['code']) ? Invitation::getKV('code', $_POST['code']) : null; if (self::settings('enabledbydefault') && empty($valid_code)) { $m->connect('main/register', array('action' => 'qvitter')); } // add user arrays for some urls, to use to build profile cards // this way we don't have to request this in a separate http request if (isset($_GET['withuserarray'])) { switch (getPath($_REQUEST)) { case 'api/statuses/followers.json': case 'api/statuses/friends.json': case 'api/statusnet/groups/list.json': case 'api/statuses/mentions.json': case 'api/favorites.json': case 'api/statuses/friends_timeline.json': case 'api/statuses/user_timeline.json': // add logged in user's user array if (common_logged_in() && !isset($_GET['screen_name']) && !isset($_GET['id'])) { $profilecurrent = Profile::current(); header('Qvitter-User-Array: ' . json_encode($this->qvitterTwitterUserArray($profilecurrent))); } elseif (isset($_GET['screen_name']) || isset($_GET['id'])) { if (isset($_GET['screen_name'])) { $user = User::getKV('nickname', $_GET['screen_name']); } elseif (isset($_GET['id'])) { $user = User::getKV('id', $_GET['id']); } if ($user instanceof User) { header('Qvitter-User-Array: ' . json_encode($this->qvitterTwitterUserArray($user->getProfile()))); } } break; } } }
function createNewUser() { if (!Event::handle('StartRegistrationTry', array($this))) { return; } if (common_config('site', 'closed')) { // TRANS: Client error trying to register with registrations not allowed. $this->clientError(_m('Registration not allowed.')); return; } $invite = null; if (common_config('site', 'inviteonly')) { $code = $_SESSION['invitecode']; if (empty($code)) { // TRANS: Client error trying to register with registrations 'invite only'. $this->clientError(_m('Registration not allowed.')); return; } $invite = Invitation::staticGet($code); if (empty($invite)) { // TRANS: Client error trying to register with an invalid invitation code. $this->clientError(_m('Not a valid invitation code.')); return; } } try { $nickname = Nickname::normalize($this->trimmed('newname')); } catch (NicknameException $e) { $this->showForm($e->getMessage()); return; } if (!User::allowed_nickname($nickname)) { // TRANS: Form validation error displayed when picking a nickname that is not allowed. $this->showForm(_m('Nickname not allowed.')); return; } if (User::staticGet('nickname', $nickname)) { // TRANS: Form validation error displayed when picking a nickname that is already in use. $this->showForm(_m('Nickname already in use. Try another one.')); return; } $args = array('nickname' => $nickname, 'fullname' => $this->fbuser->name, 'homepage' => $this->fbuser->website, 'location' => $this->fbuser->location->name); // It's possible that the email address is already in our // DB. It's a unique key, so we need to check if ($this->isNewEmail($this->fbuser->email)) { $args['email'] = $this->fbuser->email; if (isset($this->fuser->verified) && $this->fuser->verified == true) { $args['email_confirmed'] = true; } } if (!empty($invite)) { $args['code'] = $invite->code; } $user = User::register($args); $result = $this->flinkUser($user->id, $this->fbuid); if (!$result) { // TRANS: Server error displayed when connecting to Facebook fails. $this->serverError(_m('Error connecting user to Facebook.')); return; } // Add a Foreign_user record Facebookclient::addFacebookUser($this->fbuser); $this->setAvatar($user); common_set_user($user); common_real_login(true); common_log(LOG_INFO, sprintf('Registered new user %s (%d) from Facebook user %s, (fbuid %d)', $user->nickname, $user->id, $this->fbuser->name, $this->fbuid), __FILE__); Event::handle('EndRegistrationTry', array($this)); $this->goHome($user->nickname); }
public function offsite_payment() { $payerId = Request::query('PayerID'); $token = Request::query('token'); $invitation = Invitation::with('invoice.client.currency', 'invoice.client.account.account_gateways.gateway')->where('transaction_reference', '=', $token)->firstOrFail(); $invoice = $invitation->invoice; $accountGateway = $invoice->client->account->account_gateways[0]; $gateway = self::createGateway($accountGateway); try { $details = self::getPaymentDetails($invoice); $response = $gateway->completePurchase($details)->send(); $ref = $response->getTransactionReference(); if ($response->isSuccessful()) { $payment = self::createPayment($invitation, $ref, $payerId); Session::flash('message', trans('texts.applied_payment')); return Redirect::to('view/' . $invitation->invitation_key); } else { $errorMessage = trans('texts.payment_error') . "\n\n" . $response->getMessage(); Session::flash('error', $errorMessage); Utils::logError($errorMessage); return Redirect::to('view/' . $invitation->invitation_key); } } catch (\Exception $e) { $errorMessage = trans('texts.payment_error'); Session::flash('error', $errorMessage); Utils::logError($errorMessage . "\n\n" . $e->getMessage()); return Redirect::to('view/' . $invitation->invitation_key); } }
function createNewUser() { # FIXME: save invite code before redirect, and check here if (common_config('site', 'closed')) { // TRANS: OpenID plugin message. No new user registration is allowed on the site. $this->clientError(_m('Registration not allowed.')); return; } $invite = null; if (common_config('site', 'inviteonly')) { $code = $_SESSION['invitecode']; if (empty($code)) { // TRANS: OpenID plugin message. No new user registration is allowed on the site without an invitation code, and none was provided. $this->clientError(_m('Registration not allowed.')); return; } $invite = Invitation::staticGet($code); if (empty($invite)) { // TRANS: OpenID plugin message. No new user registration is allowed on the site without an invitation code, and the one provided was not valid. $this->clientError(_m('Not a valid invitation code.')); return; } } $nickname = $this->trimmed('newname'); if (!Validate::string($nickname, array('min_length' => 1, 'max_length' => 64, 'format' => NICKNAME_FMT))) { // TRANS: OpenID plugin message. The entered new user name did not conform to the requirements. $this->showForm(_m('Nickname must have only lowercase letters and numbers and no spaces.')); return; } if (!User::allowed_nickname($nickname)) { // TRANS: OpenID plugin message. The entered new user name is blacklisted. $this->showForm(_m('Nickname not allowed.')); return; } if (User::staticGet('nickname', $nickname)) { // TRANS: OpenID plugin message. The entered new user name is already used. $this->showForm(_m('Nickname already in use. Try another one.')); return; } list($display, $canonical, $sreg) = $this->getSavedValues(); if (!$display || !$canonical) { // TRANS: OpenID plugin server error. A stored OpenID cannot be retrieved. $this->serverError(_m('Stored OpenID not found.')); return; } # Possible race condition... let's be paranoid $other = oid_get_user($canonical); if ($other) { // TRANS: OpenID plugin server error. $this->serverError(_m('Creating new account for OpenID that already has a user.')); return; } Event::handle('StartOpenIDCreateNewUser', array($canonical, &$sreg)); $location = ''; if (!empty($sreg['country'])) { if ($sreg['postcode']) { # XXX: use postcode to get city and region # XXX: also, store postcode somewhere -- it's valuable! $location = $sreg['postcode'] . ', ' . $sreg['country']; } else { $location = $sreg['country']; } } if (!empty($sreg['fullname']) && mb_strlen($sreg['fullname']) <= 255) { $fullname = $sreg['fullname']; } else { $fullname = ''; } if (!empty($sreg['email']) && Validate::email($sreg['email'], common_config('email', 'check_domain'))) { $email = $sreg['email']; } else { $email = ''; } # XXX: add language # XXX: add timezone $args = array('nickname' => $nickname, 'email' => $email, 'fullname' => $fullname, 'location' => $location); if (!empty($invite)) { $args['code'] = $invite->code; } $user = User::register($args); $result = oid_link_user($user->id, $canonical, $display); Event::handle('EndOpenIDCreateNewUser', array($user, $canonical, $sreg)); oid_set_last($display); common_set_user($user); common_real_login(true); if (isset($_SESSION['openid_rememberme']) && $_SESSION['openid_rememberme']) { common_rememberme($user); } unset($_SESSION['openid_rememberme']); common_redirect(common_local_url('showstream', array('nickname' => $user->nickname)), 303); }
$inv->inv_email = $invEmail; } $inv->inv_message = $mesg; if (!$err) { $inv->send(); $msg = "Your invitation has been sent."; } } break; case 'accept': $inv = Invitation::load($_GET['group_InvID']); $inv->accept(); header("Location: " . $base_url . "/groupmembers.php?action=join&gid=" . $inv->inv_collection_id); break; case 'deny': $inv = Invitation::load($_GET['group_InvID']); $inv->deny(); $msg = "Your denial has been sent to the group owner."; } } $header =& new Template(CURRENT_THEME_FSPATH . "/header.tpl"); $header->set('user_name', $user->first_name . ' ' . $user->last_name); $left_page =& new Template(CURRENT_THEME_FSPATH . "/left_page.tpl"); $left_page->set('img_path', $img_path); $center_content =& new Template(CURRENT_THEME_FSPATH . "/groupinvite.tpl"); $center_content->set('content_details', $content_details); $center_content->set('user_details', $user_details); $center_content->set('group_id', $group_details['id']); $center_content->set('group_title', $group_details['title']); $center_content->set('message', $msg); $center_content->set('error', $err);