Example #1
0
 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;
 }
Example #2
0
 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;
 }
Example #3
0
 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();
 }
Example #4
0
function getInvitationMessage($invitation)
{
    $search = array("\n", "\r");
    $replace = array("<br/>", "");
    $messageObj = Invitation::GetInstance()->GetInvitationMessageById($invitation['invitemessageid']);
    return str_replace($search, $replace, $messageObj['message']);
}
Example #5
0
 static function GetInstance()
 {
     if (self::$instance == NULL) {
         self::$instance = new Invitation();
     }
     return self::$instance;
 }
Example #6
0
 /**
  * @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')]);
 }
Example #7
0
 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');
 }
Example #11
0
 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);
 }
Example #16
0
 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();
                             }
                         }
                     }
                 }
             }
         }
     }
 }
Example #18
0
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;
 }
Example #21
0
 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;
 }
Example #22
0
 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 = '&amp;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);
 }
Example #26
0
 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;
         }
     }
 }
Example #27
0
 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);
     }
 }
Example #29
0
 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);
 }
Example #30
0
                    $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);