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(); } }
/** * Handles manage requests action * * @param sfWebRequest $request Web request object */ public function executeManageRequests($request) { $jotag = TagPeer::getFromField(TagPeer::JOTAG, $request->getParameter('jotag')); $this->jotag = $jotag; $this->forward404Unless($this->jotag && TagPeer::isValid($this->jotag) && $this->jotag->getUser()->getId() == $this->getUser()->getSubscriberId()); // && ($jotag->getTagPrivacy()->getPrivacyType() == TagPrivacyPeer::PRIVACY_AUTH)); $this->pending = $jotag->getTagAuthsJoinUser(TagAuthPeer::buildPendingCriteria()); $this->authorized = $jotag->getTagAuthsJoinUser(TagAuthPeer::buildAuthorizedCriteria()); $this->denied = $jotag->getTagAuthsJoinUser(TagAuthPeer::buildDeniedCriteria()); }