X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;ds=sidebyside;f=classes%2Fuser.php;h=55d8d1ab9b518af168c65a836743cda539cc1bea;hb=bf52ec4e8de2e1c22020f7fffbf543ab4ee7f41a;hp=a54b904ad6b50e1c2c3b4f4311f244ddddee4baf;hpb=8def9eb54fa949fce13b35a4e26add2a8118e6aa;p=platal.git diff --git a/classes/user.php b/classes/user.php index a54b904..55d8d1a 100644 --- a/classes/user.php +++ b/classes/user.php @@ -179,7 +179,7 @@ class User extends PlUser CONCAT(af.alias, \'@' . $globals->mail->domain2 . '\') AS forlife_alternate, IF (ab.alias IS NULL, a.email, CONCAT(ab.alias, \'@' . $globals->mail->domain . '\')) AS bestalias, CONCAT(ab.alias, \'@' . $globals->mail->domain2 . '\') AS bestalias_alternate, - a.full_name, a.display_name, a.sex = \'female\' AS gender, + a.full_name, a.directory_name, a.display_name, a.sex = \'female\' AS gender, IF(a.state = \'active\', at.perms, \'\') AS perms, a.email_format, a.is_admin, a.state, a.type, a.skin, FIND_IN_SET(\'watch\', a.flags) AS watch, a.comment, @@ -307,7 +307,7 @@ class User extends PlUser public function directoryName() { if (!$this->hasProfile()) { - return $this->full_name; + return $this->directory_name; } return $this->profile()->directory_name; } @@ -401,32 +401,58 @@ class User extends PlUser */ private function fetchMarketingData() { - if (isset($this->last_known_email)) { + if (isset($this->pending_registration_date)) { return; } - // FIXME: We should fetch the last known email as well as the pending registration email (they aren't the same !) - $infos = XDB::fetchOneAssoc('SELECT IF (MAX(m.last) > p.relance, MAX(m.last), p.relance) AS last_relance, - p.email AS last_known_email - FROM register_pending AS p - LEFT JOIN register_marketing AS m ON (p.uid = m.uid) - WHERE p.uid = {?} - GROUP BY p.uid', $this->id()); - if (!$infos) { - $infos = array('last_relance' => null, 'last_known_email' => null); + $infos = XDB::fetchOneAssoc('SELECT rp.date AS pending_registration_date, rp.email AS pending_registration_email, + rm.last AS last_marketing_date, rm.email AS last_marketing_email + FROM accounts AS a + LEFT JOIN register_pending AS rp ON (rp.uid = a.uid) + LEFT JOIN register_marketing AS rm ON (rm.uid = a.uid AND rm.last != \'0000-00-00\') + WHERE a.uid = {?} + ORDER BY rm.last DESC', $this->id()); + if (is_null($infos)) { + $infos = array( + 'pending_registration_date' => null, + 'pending_registration_email' => null, + 'last_marketing_date' => null, + 'last_marketing_email' => null + ); } $this->fillFromArray($infos); } - public function lastMarketingRelance() + public function pendingRegistrationDate() + { + $this->fetchMarketingData(); + return $this->pending_registration_date; + } + + public function pendingRegistrationEmail() + { + $this->fetchMarketingData(); + return $this->pending_registration_email; + } + + public function lastMarketingDate() { $this->fetchMarketingData(); - return $this->last_relance; + return $this->last_marketing_date; + } + + public function lastMarketingEmail() + { + $this->fetchMarketingData(); + return $this->last_marketing_email; } public function lastKnownEmail() { $this->fetchMarketingData(); - return $this->last_known_email; + if ($this->pending_registration_email > $this->last_marketing_date) { + return $this->pending_registration_email; + } + return $this->last_marketing_email; }