X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fmarketing.php;h=ac5cff5fbb35a3a28f7a6e300197bb2609b4b37b;hb=c65aed9897893d27bc93744c801d289724ef5b7b;hp=822b7aecba6ee45318a63377f6d8a5c31c7f5055;hpb=6bc4c6ef44c78ac6b9520ac1a8d9d4720a3828e2;p=platal.git diff --git a/modules/marketing.php b/modules/marketing.php index 822b7ae..ac5cff5 100644 --- a/modules/marketing.php +++ b/modules/marketing.php @@ -24,15 +24,15 @@ class MarketingModule extends PLModule function handlers() { return array( - 'marketing' => $this->make_hook('marketing', AUTH_MDP, 'admin'), - 'marketing/promo' => $this->make_hook('promo', AUTH_MDP, 'admin'), - 'marketing/relance' => $this->make_hook('relance', AUTH_MDP, 'admin'), - 'marketing/this_week' => $this->make_hook('week', AUTH_MDP, 'admin'), - 'marketing/volontaire' => $this->make_hook('volontaire', AUTH_MDP, 'admin'), - - 'marketing/private' => $this->make_hook('private', AUTH_MDP, 'admin'), - 'marketing/public' => $this->make_hook('public', AUTH_COOKIE), - 'marketing/broken' => $this->make_hook('broken', AUTH_COOKIE), + 'marketing' => $this->make_hook('marketing', AUTH_PASSWD, 'admin'), + 'marketing/promo' => $this->make_hook('promo', AUTH_PASSWD, 'admin'), + 'marketing/relance' => $this->make_hook('relance', AUTH_PASSWD, 'admin'), + 'marketing/this_week' => $this->make_hook('week', AUTH_PASSWD, 'admin'), + 'marketing/volontaire' => $this->make_hook('volontaire', AUTH_PASSWD, 'admin'), + + 'marketing/private' => $this->make_hook('private', AUTH_PASSWD, 'admin'), + 'marketing/public' => $this->make_hook('public', AUTH_COOKIE, 'user'), + 'marketing/broken' => $this->make_hook('broken', AUTH_COOKIE, 'user'), ); } @@ -41,25 +41,37 @@ class MarketingModule extends PLModule $page->changeTpl('marketing/index.tpl'); $page->setTitle('Marketing'); - $alive = new UserFilter(new PFC_Not(new UFC_Dead())); - $registered = new UserFilter(new PFC_And(new UFC_Registered(), new PFC_Not(new UFC_Dead()))); - $alive72 = new UserFilter(new PFC_And(new UFC_Promo('>=', UserFilter::GRADE_ING, 1972), new PFC_Not(new UFC_Dead()))); - $registered72 = new UserFilter(new PFC_And(new UFC_Registered(), new UFC_Promo('>=', UserFilter::GRADE_ING, 1972), new PFC_Not(new UFC_Dead()))); - $aliveWomen = new UserFilter(new PFC_And(new UFC_Sex(User::GENDER_FEMALE) , new PFC_Not(new UFC_Dead()))); - $registeredWomen = new UserFilter(new PFC_And(new UFC_Registered(), new UFC_Sex(User::GENDER_FEMALE), new PFC_Not(new UFC_Dead()))); + $alive = array( + 'all' => new ProfileFilter(new PFC_Not(new UFC_Dead())), + 'women' => new ProfileFilter(new PFC_And(new UFC_Sex(User::GENDER_FEMALE) , new PFC_Not(new UFC_Dead()))), + 'x' => new ProfileFilter(new PFC_And(new PFC_Not(new UFC_Dead()), new UFC_AccountType('x'))), + '72' => new ProfileFilter(new PFC_And(new UFC_Promo('>=', UserFilter::GRADE_ING, 1972), new PFC_Not(new UFC_Dead()))), + 'master' => new ProfileFilter(new PFC_And(new PFC_Not(new UFC_Dead()), new UFC_AccountType('master'))), + 'phd' => new ProfileFilter(new PFC_And(new PFC_Not(new UFC_Dead()), new UFC_AccountType('phd'))) + ); + $registered = array( + 'all' => new ProfileFilter(new PFC_And(new UFC_Registered(true), new PFC_Not(new UFC_Dead()))), + 'women' => new ProfileFilter(new PFC_And(new UFC_Registered(true), new UFC_Sex(User::GENDER_FEMALE), new PFC_Not(new UFC_Dead()))), + 'x' => new ProfileFilter(new PFC_And(new UFC_Registered(true), new PFC_Not(new UFC_Dead()), new UFC_AccountType('x'))), + '72' => new ProfileFilter(new PFC_And(new UFC_Registered(true), new UFC_Promo('>=', UserFilter::GRADE_ING, 1972), new PFC_Not(new UFC_Dead()))), + 'master' => new ProfileFilter(new PFC_And(new UFC_Registered(true), new PFC_Not(new UFC_Dead()), new UFC_AccountType('master'))), + 'phd' => new ProfileFilter(new PFC_And(new UFC_Registered(true), new PFC_Not(new UFC_Dead()), new UFC_AccountType('phd'))) + ); $statistics = array( - 'alive' => $alive->getTotalCount(), - 'registered' => $registered->getTotalCount(), - 'alive72' => $alive72->getTotalCount(), - 'registered72' => $registered72->getTotalCount(), - 'womenAlive' => $aliveWomen->getTotalCount(), - 'womenRegistered' => $registeredWomen->getTotalCount(), + 'all' => array('description' => "Étudiants et anciens de l'X"), + 'women' => array('description' => "Étudiantes et anciennes de l'X"), + 'x' => array('description' => 'X'), + '72' => array('description' => 'X vivants depuis la promo 1972'), + 'master' => array('description' => "Masters de l'X"), + 'phd' => array('description' => "Docteurs de l'X") ); - $statistics['registeredRate'] = $statistics['registered'] / $statistics['alive'] * 100; - $statistics['registeredRate72'] = $statistics['registered72'] / $statistics['alive72'] * 100; - $statistics['womenRegisteredRate'] = $statistics['womenRegistered'] / $statistics['womenAlive'] * 100; + foreach ($statistics as $key => &$data) { + $data['alive'] = $alive[$key]->getTotalCount(); + $data['registered'] = $registered[$key]->getTotalCount(); + $data['rate'] = round($data['registered'] / $data['alive'] * 100, 2); + } - $registeredWeek = new UserFilter(new PFC_And(new UFC_Registered(false, '>=', strtotime('1 week ago')), new PFC_Not(new UFC_Dead()))); + $registeredWeek = new ProfileFilter(new PFC_And(new UFC_Registered(true, '>=', strtotime('1 week ago')), new PFC_Not(new UFC_Dead()))); $registrationPending = XDB::fetchOneCell('SELECT COUNT(*) FROM register_pending'); $registrations = array( @@ -225,7 +237,7 @@ class MarketingModule extends PLModule if (Post::has('mail')) { $email = valide_email(Post::v('mail')); } - if (Post::has('valide') && isvalid_email_redirection($email)) { + if (Post::has('valide') && isvalid_email_redirection($email, $user)) { S::assert_xsrf_token(); // security stuff @@ -261,8 +273,9 @@ class MarketingModule extends PLModule $page->assign('promo', $promo); $uf = new UserFilter(new PFC_And(new UFC_Promo('=', UserFilter::DISPLAY, $promo), - new PFC_Not(new UFC_Registered())), - array(new UFO_Name(Profile::LASTNAME), new UFO_Name(Profile::FIRSTNAME))); + new PFC_Not(new UFC_Registered()), + new PFC_Not(new UFC_Dead())), + array(new UFO_Name())); $users = $uf->getUsers(); $page->assign('nonins', $users); } @@ -290,7 +303,7 @@ class MarketingModule extends PLModule $email = trim(Post::v('mail')); require_once 'emails.inc.php'; - if (!isvalid_email_redirection($email)) { + if (!isvalid_email_redirection($email, $user)) { $page->trigError('Email invalide !'); } else { // On cherche les marketings précédents sur cette adresse @@ -315,8 +328,8 @@ class MarketingModule extends PLModule $market = new AnnuaireMarketing(null, true); $text = $market->getText(array( 'sexe' => $user->isFemale(), - 'forlife_email' => $user->login() . '@' . $globals->mail->domain, - 'forlife_email2' => $user->login() . '@' . $globals->mail->domain2 + 'forlife_email' => $user->forlifeEmail(), + 'forlife_email2' => $user->forlifeEmailAlternate() )); $text = str_replace('%%hash%%', '', $text); $text = str_replace('%%personal_notes%%', '', $text);