From 10b057be614c239d3885ca8188a66d04edbe5b0d Mon Sep 17 00:00:00 2001 From: x2000habouzit Date: Tue, 4 Jul 2006 22:43:32 +0000 Subject: [PATCH] small joke, forgotten add git-svn-id: svn+ssh://murphy/home/svn/platal/trunk@375 839d8a87-29fc-0310-9880-83ba4fa771e5 --- modules/marketing.php | 312 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 312 insertions(+) create mode 100644 modules/marketing.php diff --git a/modules/marketing.php b/modules/marketing.php new file mode 100644 index 0000000..8fbcebc --- /dev/null +++ b/modules/marketing.php @@ -0,0 +1,312 @@ + $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), + ); + } + + function handler_marketing(&$page) + { + global $globals; + + $page->changeTpl('marketing/index.tpl'); + + $page->assign('xorg_title','Polytechnique.org - Marketing'); + + // Quelques statistiques + + $res = $globals->xdb->query( + "SELECT COUNT(*) AS vivants, + COUNT(NULLIF(perms='admin' OR perms='user', 0)) AS inscrits, + 100*COUNT(NULLIF(perms='admin' OR perms='user', 0))/COUNT(*) AS ins_rate, + COUNT(NULLIF(promo >= 1972, 0)) AS vivants72, + COUNT(NULLIF(promo >= 1972 AND (perms='admin' OR perms='user'), 0)) AS inscrits72, + 100 * COUNT(NULLIF(promo >= 1972 AND (perms='admin' OR perms='user'), 0)) / + COUNT(NULLIF(promo >= 1972, 0)) AS ins72_rate, + COUNT(NULLIF(FIND_IN_SET('femme', flags), 0)) AS vivantes, + COUNT(NULLIF(FIND_IN_SET('femme', flags) AND (perms='admin' OR perms='user'), 0)) AS inscrites, + 100 * COUNT(NULLIF(FIND_IN_SET('femme', flags) AND (perms='admin' OR perms='user'), 0)) / + COUNT(NULLIF(FIND_IN_SET('femme', flags), 0)) AS inse_rate + FROM auth_user_md5 + WHERE deces = 0"); + $stats = $res->fetchOneAssoc(); + $page->assign('stats', $stats); + + $res = $globals->xdb->query("SELECT count(*) FROM auth_user_md5 WHERE date_ins > ". + date('Ymd000000', strtotime('1 week ago'))); + $page->assign('nbInsSem', $res->fetchOneCell()); + + $res = $globals->xdb->query("SELECT count(*) FROM register_pending WHERE hash != 'INSCRIT'"); + $page->assign('nbInsEnCours', $res->fetchOneCell()); + + $res = $globals->xdb->query("SELECT count(*) FROM register_marketing"); + $page->assign('nbInsMarket', $res->fetchOneCell()); + + $res = $globals->xdb->query("SELECT count(*) FROM register_mstats + WHERE TO_DAYS(NOW()) - TO_DAYS(success) <= 7"); + $page->assign('nbInsMarkOK', $res->fetchOneCell()); + + return PL_OK; + } + + function handler_private(&$page, $uid = null) + { + global $globals; + + $page->changeTpl('marketing/private.tpl'); + + if (is_null($uid)) { + return PL_NOT_FOUND; + } + + $res = $globals->xdb->query("SELECT nom, prenom, promo, matricule + FROM auth_user_md5 + WHERE user_id={?} AND perms='pending'", $uid); + + if (list($nom, $prenom, $promo, $matricule) = $res->fetchOneRow()) { + require_once('register.inc.php'); + $matricule_X = get_X_mat($matricule); + $page->gassign('nom'); + $page->gassign('prenom'); + $page->gassign('promo'); + $page->gassign('matricule'); + $page->assign('matricule_X',$matricule_X); + } else { + $page->kill('uid invalide'); + } + + if (Env::has('del')) { + $globals->xdb->execute('DELETE FROM register_marketing WHERE uid={?} AND email={?}', + $uid, Env::get('del')); + } + + if (Env::has('rel') && !Env::has('valider')) { + require_once('marketing.inc.php'); + list($to, $title, $text) = mark_text_mail($uid, Env::get('rel')); + $from = mark_from_mail($uid, Env::get('rel')); + $page->assign('rel_from_user', $from); + $page->assign('rel_from_staff', + "\"Equipe Polytechnique.org\" "); + $page->assign('rel_to', $to); + $page->assign('rel_title', $title); + $page->assign('rel_text', $text); + } + + if (Env::get('valider') == 'Envoyer') { + require_once('marketing.inc.php'); + mark_send_mail($uid, Env::get('rel'), Env::get('from'), + Env::get('to'), Env::get('title'), + Env::get('message')); + $page->trig("Mail envoyé"); + } + + if (Env::has('relance')) { + require_once('marketing.inc.php'); + if (relance($uid)) { + $page->trig('relance faite'); + } + } + + if (Env::get('action') == 'ajouter') { + $globals->xdb->execute( + "INSERT INTO register_marketing + SET uid = {?}, sender = {?}, email = {?}, + date = NOW(), type = {?}", + $uid, Session::get('uid'), Env::get('email'), Env::get('type')); + } + + $res = $globals->xdb->iterator( + "SELECT r.*, a.alias + FROM register_marketing AS r + INNER JOIN aliases AS a ON (r.sender=a.id AND a.type = 'a_vie') + WHERE uid={?} + ORDER BY date", $uid); + $page->assign('addr', $res); + + $res = $globals->xdb->query("SELECT date, relance FROM register_pending + WHERE uid = {?}", $uid); + if (list($pending, $relance) = $res->fetchOneCell()) { + $page->gassign('pending'); + $page->gassign('relance'); + } + + return PL_OK; + } + + function handler_promo(&$page, $promo = null) + { + global $globals; + + $page->changeTpl('marketing/promo.tpl'); + + if (!$promo) { + $promo = Env::has('promo') ? Env::getInt('promo') : Session::getInt('promo'); + } + $page->assign('promo', $promo); + + $sql = "SELECT u.user_id, u.nom, u.prenom, u.last_known_email, u.matricule_ax, + IF(MAX(m.last)>p.relance, MAX(m.last), p.relance) AS dern_rel, p.email + FROM auth_user_md5 AS u + LEFT JOIN register_pending AS p ON p.uid = u.user_id + LEFT JOIN register_marketing AS m ON m.uid = u.user_id + WHERE u.promo = {?} AND u.deces = 0 AND u.perms='pending' + GROUP BY u.user_id + ORDER BY nom, prenom"; + $page->assign('nonins', $globals->xdb->iterator($sql, $promo)); + + return PL_OK; + } + + function handler_public(&$page, $uid = null) + { + global $globals; + + $page->changeTpl('marketing/public.tpl'); + + if (is_null($uid)) { + return PL_NOT_FOUND; + } + + $res = $globals->xdb->query("SELECT nom, prenom, promo FROM auth_user_md5 + WHERE user_id={?} AND perms='pending'", $uid); + + if (list($nom, $prenom, $promo) = $res->fetchOneRow()) { + $page->assign('prenom', $prenom); + $page->assign('nom', $nom); + $page->assign('promo', $promo); + + if (Env::has('valide')) { + require_once('xorg.misc.inc.php'); + + $email = trim(Env::get('mail')); + $res = $globals->xdb->query('SELECT COUNT(*) FROM register_marketing + WHERE uid={?} AND email={?}', $uid, $email); + + if (!isvalid_email_redirection($email)) { + $page->trig("Email invalide !"); + } elseif ($res->fetchOneCell()) { + $page->assign('already', true); + } else { + $page->assign('ok', true); + $globals->xdb->execute( + "INSERT INTO register_marketing (uid,sender,email,date,last,nb,type,hash) + VALUES ({?}, {?}, {?}, NOW(), 0, 0, {?}, '')", + $uid, Session::getInt('uid'), $email, Env::get('origine')); + require_once('validations.inc.php'); + $req = new MarkReq(Session::getInt('uid'), $uid, $email, + Env::get('origine')=='user'); + $req->submit(); + } + } + } + + return PL_OK; + } + + function handler_week(&$page) + { + global $globals; + + $page->changeTpl('marketing/this_week.tpl'); + + $sort = Get::get('sort') == 'promo' ? 'promo' : 'date_ins'; + + $sql = "SELECT a.alias AS forlife, u.date_ins, u.promo, u.nom, u.prenom + FROM auth_user_md5 AS u + INNER JOIN aliases AS a ON (u.user_id = a.id AND a.type='a_vie') + WHERE u.date_ins > ".date("Ymd000000", strtotime ('1 week ago'))." + ORDER BY u.$sort DESC"; + $page->assign('ins', $globals->xdb->iterator($sql)); + + return PL_OK; + } + + function handler_volontaire(&$page) + { + global $globals; + + $page->changeTpl('marketing/volontaire.tpl'); + + $res = $globals->xdb->query( + "SELECT + DISTINCT a.promo + FROM register_marketing AS m + INNER JOIN auth_user_md5 AS a ON a.user_id = m.uid + ORDER BY a.promo"); + $page->assign('promos', $res->fetchColumn()); + + + if (Env::has('promo')) { + $sql = "SELECT a.nom, a.prenom, a.user_id, + m.email, sa.alias AS forlife + FROM register_marketing AS m + INNER JOIN auth_user_md5 AS a ON a.user_id = m.uid AND a.promo = {?} + INNER JOIN aliases AS sa ON (m.sender = sa.id AND sa.type='a_vie') + ORDER BY a.nom"; + $page->assign('addr', $globals->xdb->iterator($sql, Env::get('promo'))); + } + + return PL_OK; + } + + function handler_relance(&$page) + { + global $globals; + + $page->changeTpl('marketing/relance.tpl'); + + if (Post::has('relancer')) { + $res = $globals->xdb->query("SELECT COUNT(*) FROM auth_user_md5 WHERE deces=0"); + $nbdix = $res->fetchOneCell(); + + $sent = Array(); + foreach (array_keys($_POST['relance']) as $uid) { + if ($tmp = relance($uid, $nbdix)) { + $sent[] = $tmp.' a été relancé'; + } + } + $page->assign('sent', $sent); + } + + $sql = "SELECT r.date, r.relance, r.uid, u.promo, u.nom, u.prenom + FROM register_pending AS r + INNER JOIN auth_user_md5 AS u ON r. uid = u.user_id + WHERE hash!='INSCRIT' + ORDER BY date DESC"; + $page->assign('relance', $globals->xdb->iterator($sql)); + + return PL_OK; + } +} + +?> -- 2.1.4