Esempio n. 1
0
 public function executeInvite($request)
 {
     $user = $this->getUser()->getSubscriber();
     // fetch list of invites already sent by this user and hydrate users
     $this->invites = $user->getInvites();
     $this->wbForm = new InviteWebmailForm(array('provider' => 'yahoo'));
     $this->show_more = false;
     if ($request->isMethod('post')) {
         $this->form = new InviteForm($request->getParameter('invite'));
         if ($request->getParameter('step') == 'step2') {
             $message = trim($request->getParameter('message'));
             // re-validate emails
             $this->form->bind($request->getParameter('invite'));
             if (!$this->form->isValid()) {
                 // not valid, most likely user tried to mess up, so redirect back to invite
                 $this->redirect('@invite');
             }
             $emails = $this->form->getValue("emails");
             $requested = $request->getParameter("chkEmail");
             $jotags = $request->getParameter("jotags");
             $jotag_objects = array();
             // check selected jotags
             if ($jotags) {
                 foreach ($jotags as $tag) {
                     $obj = TagPeer::getFromField(TagPeer::JOTAG, $tag);
                     if ($obj && $obj->getUserId() == $user->getId() && TagPeer::isValid($obj)) {
                         $jotag_objects[] = $obj;
                     }
                 }
             }
             $sent = 0;
             foreach ($emails as $k => $email) {
                 if (!EmailPeer::getFromField(EmailPeer::EMAIL, $email["email"]) && !EmailPeer::getFromField(EmailPeer::ACTUAL_EMAIL, $email["email"])) {
                     if (in_array($k, $requested)) {
                         // create new invite
                         $invite = InvitePeer::newInvite($email, $user, $jotag_objects);
                         // send invite
                         Mailer::sendEmail($email["email"], 'invite', array('user' => $user, 'email' => $email, 'invite' => $invite, 'message' => $message), $this->getUser()->getSubscriber()->getPreferedLanguage());
                         $sent++;
                     }
                 }
             }
             $this->setMessage("SENT", "SUCCESS", $sent);
             $this->redirect('@invite');
         } else {
             $this->form->bind($request->getParameter('invite'));
             if ($this->form->isValid()) {
                 // here we have an already parsed email address
                 $this->emails = $this->form->getValue('emails');
                 $this->user = $user;
                 // check emails already registered in the system
                 $registered_count = 0;
                 $total_emails = 0;
                 foreach ($this->emails as $k => $v) {
                     if (!$v["email"]) {
                         continue;
                     }
                     $total_emails++;
                     if (EmailPeer::getFromField(EmailPeer::EMAIL, $v["email"]) || EmailPeer::getFromField(EmailPeer::ACTUAL_EMAIL, $v["email"])) {
                         $this->emails[$k]["registered"] = true;
                         $registered_count++;
                     } else {
                         $this->emails[$k]["registered"] = false;
                     }
                 }
                 // if all emails are already registered, redirect back to invite page
                 if ($registered_count == $total_emails) {
                     $this->setMessage("ALL_REGISTERED", "SUCCESS");
                     $this->redirect("@invite");
                 }
                 return $this->setTemplate('inviteStep2');
             } else {
                 // error in form, check if we should show extra lines
                 $invites = $request->getParameter('invite');
                 $invites = $invites["emails"];
                 for ($i = 3; $i < 6; $i++) {
                     if (@$invites[$i]["first_name"] || @$invites[$i]["last_name"] || @$invites[$i]["email"]) {
                         $this->show_more = true;
                         break;
                     }
                 }
             }
         }
     } else {
         $this->form = new InviteForm();
     }
 }
Esempio n. 2
0
<?php

require_once dirname(__FILE__) . '/../config/ProjectConfiguration.class.php';
$configuration = ProjectConfiguration::getApplicationConfiguration('frontend', 'prod', false);
// initialize instance
sfContext::createInstance($configuration);
// set default TIMEZONE
$tz = OptionPeer::retrieveOption('TIMEZONE');
if ($tz) {
    date_default_timezone_set($tz);
}
$c = new Criteria();
$expiration_age = OptionPeer::retrieveOption('INVITE_AGE') * 24 * 3600;
$c->add(InvitePeer::CREATED_AT, time() - $expiration_age, Criteria::LESS_EQUAL);
InvitePeer::doDelete($c);