Fix ML templates inclusion path
[platal.git] / modules / profile.php
index cd4bc6b..efcd84d 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2006 Polytechnique.org                              *
+ *  Copyright (C) 2003-2007 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
@@ -38,6 +38,7 @@ class ProfileModule extends PLModule
             'referent/search'  => $this->make_hook('ref_search', AUTH_COOKIE),
 
             'trombi'  => $this->make_hook('trombi', AUTH_COOKIE),
+            'groupes-x'        => $this->make_hook('xnet',      AUTH_COOKIE),
 
             'vcard'   => $this->make_hook('vcard',  AUTH_COOKIE),
             'admin/binets'     => $this->make_hook('admin_binets', AUTH_MDP, 'admin'),
@@ -115,7 +116,7 @@ class ProfileModule extends PLModule
 
     function handler_photo_change(&$page)
     {
-        $page->changeTpl('trombino.tpl');
+        $page->changeTpl('profile/trombino.tpl');
 
         require_once('validations.inc.php');
 
@@ -123,15 +124,19 @@ class ProfileModule extends PLModule
                     .'/'.S::v('forlife').'.jpg';
 
         if (Env::has('upload')) {
-            $file = isset($_FILES['userfile']['tmp_name'])
-                    ? $_FILES['userfile']['tmp_name']
-                    : Env::v('photo');
-            if ($data = file_get_contents($file)) {
-                if ($myphoto = new PhotoReq(S::v('uid'), $data)) {
+            if (isset($_FILES['userfile']['tmp_name']) 
+                    && !is_uploaded_file($_FILES['userfile']['tmp_name'])) {
+                $page->trig('Une erreur s\'est produite lors du transfert du fichier');
+            } else {
+                $file = is_uploaded_file($_FILES['userfile']['tmp_name'])
+                        ? $_FILES['userfile']['tmp_name']
+                        : Env::v('photo');
+                if ($data = file_get_contents($file)) {
+                    $myphoto = new PhotoReq(S::v('uid'), $data);
                     $myphoto->submit();
+                } else {
+                    $page->trig('Fichier inexistant ou vide');
                 }
-            } else {
-                $page->trig('Fichier inexistant ou vide');
             }
         } elseif (Env::has('trombi')) {
             $myphoto = new PhotoReq(S::v('uid'),
@@ -168,7 +173,7 @@ class ProfileModule extends PLModule
         global $globals;
         require_once 'user.func.inc.php';
 
-        $page->changeTpl('fiche.tpl', SIMPLE);
+        $page->changeTpl('profile/profile.tpl', SIMPLE);
 
         $view = 'private';
         if (!S::logged() || Env::v('view') == 'public') $view = 'public';
@@ -186,13 +191,25 @@ class ProfileModule extends PLModule
         }
 
         if (empty($login)) {
+            if (preg_match('/([-a-z]+)\.([-a-z]+)\.([0-9]{4})/i', $x, $matches)) {
+                $matches = str_replace('-', '_', $matches);
+                $res = XDB::query("SELECT user_id
+                                     FROM auth_user_md5
+                                    WHERE prenom LIKE {?} AND nom LIKE {?} AND promo = {?}
+                                          AND perms = 'pending'",
+                                  $matches[1], $matches[2], $matches[3]);
+                if ($res->numRows() == 1) {
+                    $uid = $res->fetchOneCell();
+                    pl_redirect('marketing/public/' . $uid);
+                }
+            }
             return PL_NOT_FOUND;
         }
 
         $new   = Env::v('modif') == 'new';
         $user  = get_user_details($login, S::v('uid'), $view);
-        $user['freetext'] = preg_replace('/((?:https?|ftp):\/\/(?:&amp;|\.*,*[a-z@0-9~%$£µ&i#\-+=_\/\?])*)/i',
-                                         '<a href="\\0">\\0</a>', $user['freetext']);
+        require_once('url_catcher.inc.php');
+        $user['freetext'] = url_catcher($user['freetext'], false);
         $title = $user['prenom'] . ' ' . empty($user['nom_usage']) ? $user['nom'] : $user['nom_usage'];
         $page->assign('xorg_title', $title);
 
@@ -245,7 +262,7 @@ class ProfileModule extends PLModule
     {
         global $globals;
 
-        $page->changeTpl('profil.tpl');
+        $page->changeTpl('profile/edit.tpl');
 
         $page->addCssLink('profil.css');
         $page->assign('xorg_title', 'Polytechnique.org - Mon Profil');
@@ -327,7 +344,7 @@ class ProfileModule extends PLModule
             if($page->nb_errs()) {
                 require_once "profil/assign_{$opened_tab}.inc.php";
                 $page->assign('onglet', $opened_tab);
-                $page->assign('onglet_tpl', "profil/$opened_tab.tpl");
+                $page->assign('onglet_tpl', "profile/$opened_tab.tpl");
                 return;
             }
 
@@ -348,7 +365,7 @@ class ProfileModule extends PLModule
             // mise a jour des champs relatifs au tab ouvert
             require_once "profil/update_{$opened_tab}.inc.php";
 
-            $log =& S::v('log');
+            $log =& $_SESSION['log'];
             $log->log('profil', $opened_tab);
             $page->assign('etat_update', 'ok');
         }
@@ -362,14 +379,14 @@ class ProfileModule extends PLModule
         require_once "profil/assign_{$opened_tab}.inc.php";
 
         $page->assign('onglet', $opened_tab);
-        $page->assign('onglet_tpl', "profil/$opened_tab.tpl");
+        $page->assign('onglet_tpl', "profile/$opened_tab.tpl");
 
         return;
     }
 
     function handler_p_orange(&$page)
     {
-        $page->changeTpl('orange.tpl');
+        $page->changeTpl('profile/orange.tpl');
 
         require_once 'validations.inc.php';
         require_once 'xorg.misc.inc.php';
@@ -425,7 +442,7 @@ class ProfileModule extends PLModule
             return PL_NOT_FOUND;
         }
 
-        $page->changeTpl('fiche_referent.tpl', SIMPLE);
+        $page->changeTpl('profile/fiche_referent.tpl', SIMPLE);
 
         $res = XDB::query(
                 "SELECT  prenom, nom, user_id, promo, cv, a.alias AS bestalias
@@ -483,7 +500,7 @@ class ProfileModule extends PLModule
 
     function handler_ref_search(&$page)
     {
-        $page->changeTpl('referent.tpl');
+        $page->changeTpl('profile/referent.tpl');
 
         $page->assign('xorg_title', 'Polytechnique.org - Conseil Pro');
 
@@ -595,7 +612,7 @@ class ProfileModule extends PLModule
 
     function handler_p_usage(&$page)
     {
-        $page->changeTpl('nomusage.tpl');
+        $page->changeTpl('profile/nomusage.tpl');
 
         require_once 'validations.inc.php';
         require_once 'xorg.misc.inc.php';
@@ -635,9 +652,7 @@ class ProfileModule extends PLModule
 
     function handler_trombi(&$page, $promo = null)
     {
-        require_once 'trombi.inc.php';
-
-        $page->changeTpl('trombipromo.tpl');
+        $page->changeTpl('profile/trombipromo.tpl');
         $page->assign('xorg_title', 'Polytechnique.org - Trombi Promo');
 
         if (is_null($promo)) {
@@ -658,6 +673,21 @@ class ProfileModule extends PLModule
         }
     }
 
+    function handler_xnet(&$page)
+    {
+        $page->changeTpl('profile/groupesx.tpl');
+        $page->assign('xorg_title', 'Polytechnique.org - Promo, Groupes X, Binets');
+        
+        $req = XDB::query('
+            SELECT m.asso_id, a.nom, diminutif, a.logo IS NOT NULL AS has_logo, 
+                   COUNT(e.eid) AS events, mail_domain AS lists
+              FROM groupex.membres AS m 
+        INNER JOIN groupex.asso AS a ON(m.asso_id = a.id)
+         LEFT JOIN groupex.evenements AS e ON(e.asso_id = m.asso_id AND e.archive = 0)
+             WHERE uid = {?} GROUP BY m.asso_id ORDER BY a.nom', S::i('uid'));
+        $page->assign('assos', $req->fetchAllAssoc());
+    }
+    
     function handler_vcard(&$page, $x = null)
     {
         if (is_null($x)) {
@@ -676,7 +706,7 @@ class ProfileModule extends PLModule
     }
 
     function handler_admin_trombino(&$page, $uid = null, $action = null) {
-        $page->changeTpl('admin/admin_trombino.tpl');
+        $page->changeTpl('profile/admin_trombino.tpl');
         $page->assign('xorg_title','Polytechnique.org - Administration - Trombino');
         $page->assign('uid', $uid);
         
@@ -744,9 +774,10 @@ class ProfileModule extends PLModule
         $table_editor = new PLTableEditor('admin/medals','profile_medals','id');
         $table_editor->describe('text', 'intitulé',  true);
         $table_editor->describe('img',  'nom de l\'image', false);
+        $table_editor->describe('flags', 'valider', true);
         $table_editor->apply($page, $action, $id);
         if ($id && $action == 'edit') {
-            $page->changeTpl('admin/gerer_decos.tpl');
+            $page->changeTpl('profile/admin_decos.tpl');
         
             $mid = $id;