X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=include%2Fmarketing.inc.php;h=e91b730054aee1d07747321aeb5c4bdede36f6e9;hb=30e6bbe345c7eafc85a7896ad82c15b88aa6ddec;hp=be7dcbfdd7361712b4650c8bec267ea6c9d9f598;hpb=a6391000e89c59f3c26d1a62bb06857df706bf50;p=platal.git diff --git a/include/marketing.inc.php b/include/marketing.inc.php index be7dcbf..e91b730 100644 --- a/include/marketing.inc.php +++ b/include/marketing.inc.php @@ -1,6 +1,6 @@ user = $this->getUser($uid, $email); $this->sender_mail = $this->getFrom($from, $sender); - $this->engine =& $this->getEngine($type, $data, $from == 'user' ? $sender : null); + $this->engine =& $this->getEngine($type, $data, $from == 'user' ? $sender : null, $personal_notes); $this->type = $type; $this->data = $data; $this->from = $from; $this->sender = $sender; + $this->personal_notes = $personal_notes; } private function getUser($uid, $email) @@ -65,8 +67,8 @@ class Marketing 'sexe' => $user->isFemale(), 'mail' => $email, 'to' => '"' . $user->fullName() . '" <' . $email . '>', - 'forlife_email' => $user->login() . '@' . $globals->mail->domain, - 'forlife_email2' => $user->login() . '@' . $globals->mail->domain2, + 'forlife_email' => $user->forlifeEmail(), + 'forlife_email2' => $user->forlifeEmailAlternate() ); } @@ -75,18 +77,18 @@ class Marketing global $globals; if ($from == 'staff' || !($user = User::getSilent($sender))) { - return '"L\'équipe de Polytechnique.org" mail->domain . '>'; + return "\"L'équipe de Polytechnique.org\" mail->domain . '>'; } return '"' . $user->fullName() . '" <' . $user->bestEmail() . '>'; } - private function &getEngine($type, $data, $from) + private function &getEngine($type, $data, $from, $personal_notes) { $class = $type . 'Marketing'; if (!class_exists($class, false)) { $class= 'DefaultMarketing'; } - $engine = new $class($data, $from); + $engine = new $class($data, $from, $personal_notes); if (!$engine instanceof MarketingEngine) { $engine = null; } @@ -113,9 +115,8 @@ class Marketing $text = $this->engine->getText($this->user); } $sender = substr($this->sender_mail, 1, strpos($this->sender_mail, '"', 2)-1); - $text = str_replace(array("%%hash%%", "%%sender%%"), - array($this->hash, $this->sender_mail), - $text); + $text = str_replace(array('%%hash%%', '%%sender%%', '%%personal_notes%%'), + array($this->hash, "Cordialement,\n-- \n" . $this->sender_mail, ''), $text); $mailer = new PlMailer(); $mailer->setFrom($this->sender_mail); $mailer->addTo($this->user['mail']); @@ -128,15 +129,15 @@ class Marketing public function add($valid = true) { XDB::execute('INSERT IGNORE INTO register_marketing - (uid, sender, email, date, last, nb, type, hash, message, message_data) - VALUES ({?}, {?}, {?}, NOW(), 0, 0, {?}, {?}, {?}, {?})', + (uid, sender, email, date, last, nb, type, hash, message, message_data, personal_notes) + VALUES ({?}, {?}, {?}, NOW(), 0, 0, {?}, {?}, {?}, {?}, {?})', $this->user['id'], $this->sender, $this->user['mail'], $this->from, $this->hash, - $this->type, $this->data); + $this->type, $this->data, $this->personal_notes); $this->engine->process($this->user); if ($valid) { - require_once 'validations.inc.php'; - $valid = new MarkReq(User::getSilent($this->sender), $this->user['user'], $this->user['mail'], - $this->from == 'user', $this->type, $this->data); + $sender = User::getSilent($this->sender); + $valid = new MarkReq($sender, $this->user['user'], $this->user['mail'], + $this->from == 'user', $this->type, $this->data, $this->personal_notes); $valid->submit(); } return true; @@ -163,7 +164,7 @@ class Marketing static public function get($uid, $email, $recentOnly = false) { - $res = XDB::query("SELECT uid, email, message, message_data, type, sender + $res = XDB::query("SELECT uid, email, message, message_data, type, sender, personal_notes FROM register_marketing WHERE uid = {?} AND email = {?}".( @@ -172,8 +173,8 @@ class Marketing if ($res->numRows() == 0) { return null; } - list ($uid, $email, $type, $data, $from, $sender) = $res->fetchOneRow(); - return new Marketing($uid, $email, $type, $data, $from, $sender); + list ($uid, $email, $type, $data, $from, $sender, $personal_notes) = $res->fetchOneRow(); + return new Marketing($uid, $email, $type, $data, $from, $sender, $personal_notes); } static public function clear($uid, $email = null) @@ -185,18 +186,12 @@ class Marketing } } - static public function getAliveUsersCount() - { - $uf = new UserFilter(new UFC_Not(new UFC_Dead())); - return $uf->getTotalCount(); - } - - static public function relance(PlUser &$user, $nbx = -1) + static public function relance(PlUser $user, $nbx = -1) { global $globals; if ($nbx < 0) { - $nbx = self::getAliveUsersCount(); + $nbx = $globals->core->NbIns; } $res = XDB::fetchOneCell('SELECT r.date, r.email, r.bestalias @@ -222,7 +217,7 @@ class Marketing $mymail->assign('baseurl', $globals->baseurl); $mymail->assign('lins_id', $hash); $mymail->assign('lemail', $email); - $mymail->assign('subj', $alias.'@'.$globals->mail->domain); + $mymail->assign('subj', ucfirst($globals->mail->domain) . ' : ' . $alias); $mymail->send(); XDB::execute('UPDATE register_pending SET hash={?}, password={?}, relance=NOW() @@ -233,30 +228,37 @@ class Marketing interface MarketingEngine { - public function __construct($data, $from); + public function __construct($data, $from, $personal_notes = null); public function getTitle(); public function getText(array $user); public function process(array $user); } -// class AnnuaireMarketing implements MarketingEngine { protected $titre; protected $intro; protected $signature; + protected $personal_notes; - public function __construct($data, $from) + public function __construct($data, $from, $personal_notes = null) { $this->titre = "Rejoins la communauté polytechnicienne sur Internet"; $this->intro = " Tu n'as pas de fiche dans l'annuaire des polytechniciens sur Internet. " . "Pour y figurer, il te suffit de visiter cette page ou de copier cette adresse " . "dans la barre de ton navigateur :"; if ($from === null) { - $this->signature = "L'équipe de Polytechnique.org,\n" - . "Le portail des élèves & anciens élèves de l'École polytechnique"; + $page = new XorgPage(); + $page->changeTpl('include/signature.mail.tpl', NO_SKIN); + $page->assign('mail_part', 'text'); + $this->signature = $page->raw(); + } else { + $this->signature = '%%sender%%'; + } + if (is_null($personal_notes) || $personal_notes == '') { + $this->personal_notes = '%%personal_notes%%'; } else { - $this->signature = "%%sender%%"; + $this->personal_notes = "\n" . $personal_notes . "\n"; } } @@ -275,12 +277,17 @@ class AnnuaireMarketing implements MarketingEngine return $this->signature; } - protected function prepareText(PlPage &$page, array $user) + public function getPersonalNotes() + { + return $this->personal_notes; + } + + protected function prepareText(PlPage $page, array $user) { $page->assign('intro', $this->getIntro()); $page->assign('u', $user); $page->assign('sign', $this->getSignature()); - $page->assign('num_users', self::getAliveUsersCount()); + $page->assign('personal_notes', $this->getPersonalNotes()); } public function getText(array $user) @@ -300,7 +307,7 @@ class ListMarketing extends AnnuaireMarketing { private $name; private $domain; - public function __construct($data, $from) + public function __construct($data, $from, $personal_notes = null) { list($this->name, $this->domain) = explode('@', $data); if ($from && ($user = User::getSilent($from))) { @@ -322,16 +329,16 @@ class ListMarketing extends AnnuaireMarketing public function process(array $user) { - return XDB::execute("REPLACE INTO register_subs (uid, type, sub, domain) - VALUES ({?}, 'list', {?}, {?})", - $user['id'], $this->name, $this->domain); + return XDB::execute("INSERT IGNORE INTO register_subs (uid, type, sub, domain) + VALUES ({?}, 'list', {?}, {?})", + $user['id'], $this->name, $this->domain); } } class GroupMarketing extends AnnuaireMarketing { private $group; - public function __construct($data, $from) + public function __construct($data, $from, $personal_notes = null) { $this->group = $data; if ($from && ($user = User::getSilent($from))) { @@ -352,9 +359,9 @@ class GroupMarketing extends AnnuaireMarketing public function process(array $user) { - return XDB::execute("REPLACE INTO register_subs (uid, type, sub, domain) - VALUES ({?}, 'group', {?}, '')", - $user['id'], $this->group); + return XDB::execute("INSERT IGNORE INTO register_subs (uid, type, sub, domain) + VALUES ({?}, 'group', {?}, '')", + $user['id'], $this->group); } }