Move paiement db in x4dat (tables payment*).
[platal.git] / modules / profile.php
index 287e1a4..4bf9813 100644 (file)
@@ -112,10 +112,10 @@ class ProfileModule extends PLModule
 
         // Display the photo, or a default one when not available.
         if ($photo_type && $photo_data != null) {
-            header('Content-type: image/' . $photo_type);
+            pl_cached_dynamic_content_headers("image/$photo_type");
             echo $photo_data;
         } else {
-            header('Content-type: image/png');
+            pl_cached_dynamic_content_headers("image/png");
             echo file_get_contents(dirname(__FILE__).'/../htdocs/images/none.png');
         }
         exit;
@@ -133,8 +133,7 @@ class ProfileModule extends PLModule
         $img  = $thumb ?
             dirname(__FILE__).'/../htdocs/images/medals/thumb/' . $res->fetchOneCell() :
             dirname(__FILE__).'/../htdocs/images/medals/' . $res->fetchOneCell();
-        $type = mime_content_type($img);
-        header("Content-Type: $type");
+        pl_cached_content_headers(mime_content_type($img));
         echo file_get_contents($img);
         exit;
     }
@@ -391,22 +390,14 @@ class ProfileModule extends PLModule
 
     function handler_education_js(&$page)
     {
-        header('Content-Type: text/javascript; charset=utf-8');
-        header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
-        header('Last-Modified:' . gmdate('D, d M Y H:i:s') . ' GMT');
-        header('Cache-Control: no-cache, must-revalidate');
-        header('Pragma: no-cache');
+        pl_cached_content_headers("text/javascript", "utf-8");
         $page->changeTpl('profile/education.js.tpl', NO_SKIN);
-        require_once "education.func.inc.php";
+        require_once 'education.func.inc.php';
     }
 
     function handler_grades_js(&$page)
     {
-        header('Content-Type: text/javascript; charset=utf-8');
-        header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
-        header('Last-Modified:' . gmdate('D, d M Y H:i:s') . ' GMT');
-        header('Cache-Control: no-cache, must-revalidate');
-        header('Pragma: no-cache');
+        pl_cached_content_headers("text/javascript", "utf-8");
         $page->changeTpl('profile/grades.js.tpl', NO_SKIN);
         $res    = XDB::iterator("SELECT  *
                                    FROM  profile_medals_grades
@@ -429,7 +420,7 @@ class ProfileModule extends PLModule
 
     function handler_ajax_address(&$page, $id)
     {
-        header('Content-Type: text/html; charset=utf-8');
+        pl_content_headers("text/html");
         $page->changeTpl('profile/adresses.address.tpl', NO_SKIN);
         $page->assign('i', $id);
         $page->assign('address', array());
@@ -437,7 +428,7 @@ class ProfileModule extends PLModule
 
     function handler_ajax_tel(&$page, $prefid, $prefname, $telid)
     {
-        header('Content-Type: text/html; charset=utf-8');
+        pl_content_headers("text/html");
         $page->changeTpl('profile/phone.tpl', NO_SKIN);
         $page->assign('prefid', $prefid);
         $page->assign('prefname', $prefname);
@@ -460,7 +451,7 @@ class ProfileModule extends PLModule
 
     function handler_ajax_medal(&$page, $id)
     {
-        header('Content-Type: text/html; charset=utf-8');
+        pl_content_headers("text/html");
         $page->changeTpl('profile/deco.medal.tpl', NO_SKIN);
         $page->assign('id', $id);
         $page->assign('medal', array('valid' => 0, 'grade' => 0));
@@ -468,7 +459,7 @@ class ProfileModule extends PLModule
 
     function handler_ajax_job(&$page, $id)
     {
-        header('Content-Type: text/html; charset=utf-8');
+        pl_content_headers("text/html");
         $page->changeTpl('profile/jobs.job.tpl', NO_SKIN);
         $page->assign('i', $id);
         $page->assign('job', array());
@@ -482,7 +473,7 @@ class ProfileModule extends PLModule
 
     function handler_ajax_sector(&$page, $id, $jobid, $jobpref, $sect, $ssect = -1)
     {
-        header('Content-Type: text/html; charset=utf-8');
+        pl_content_headers("text/html");
         $res = XDB::iterator("SELECT  id, name, FIND_IN_SET('optgroup', flags) AS optgroup
                                 FROM  profile_job_subsector_enum
                                WHERE  sectorid = {?}", $sect);
@@ -528,7 +519,7 @@ class ProfileModule extends PLModule
 
     function handler_ajax_skill(&$page, $cat, $id)
     {
-        header('Content-Type: text/html; charset=utf-8');
+        pl_content_headers("text/html");
         $page->changeTpl('profile/skill.skill.tpl', NO_SKIN);
         $page->assign('cat', $cat);
         $page->assign('id', $id);
@@ -668,13 +659,11 @@ class ProfileModule extends PLModule
 
         $page->setTitle('Conseil Pro');
 
+        require_once "directory.enums.inc.php";
+
         // Retrieval of sector names
-        $res = XDB::iterRow("SELECT  id, name AS label
-                               FROM  profile_job_sector_enum");
+        $sectors = DirEnum::getOptionsArray(DirEnum::SECTORS);
         $sectors[''] = '';
-        while (list($tmp_id, $tmp_label) = $res->next()) {
-            $sectors[$tmp_id] = $tmp_label;
-        }
         $page->assign_by_ref('sectors', $sectors);
 
         // nb de mentors
@@ -682,44 +671,25 @@ class ProfileModule extends PLModule
         $page->assign('mentors_number', $res->fetchOneCell());
 
         // On vient d'un formulaire
-        $where              = array();
-        $pays_sel           = XDB::escape(Env::v('pays_sel'));
-        $sectorSelection    = XDB::escape(Env::v('sector'));
-        $subSectorSelection = XDB::escape(Env::v('subSector'));
-        $expertise_champ    = XDB::escape(Env::v('expertise'));
-
-        if ($pays_sel != "''") {
-            $where[] = "mp.country = $pays_sel";
-        }
-        if ($sectorSelection != "''") {
-            $where[] = "ms.sectorid = " . $sectorSelection;
-            if ($subSectorSelection != "''") {
-                $where[] = "ms.subsectorid = " . $subSectorSelection;
-            }
-        }
-        if ($expertise_champ != "''") {
-            $where[] = "MATCH(m.expertise) AGAINST($expertise_champ)";
-        }
-
-        if ($where) {
-            $where = join(' AND ', $where);
-
-            $set = new UserSet("INNER JOIN  profile_mentor          AS m  ON (m.uid = u.user_id)
-                                 LEFT JOIN  profile_mentor_country  AS mp ON (mp.uid = m.uid)
-                                 LEFT JOIN  profile_mentor_sector   AS ms ON (ms.uid = m.uid)",
-                               $where);
+        require_once 'ufbuilder.inc.php';
+        $ufb = new UFB_MentorSearch();
+        if (!$ufb->isEmpty()) {
+            require_once 'userset.inc.php';
+            $ufc = $ufb->getUFC();
+            $set = new ProfileSet($ufc);
             $set->addMod('mentor', 'Référents');
             $set->apply('referent/search', $page, $action, $subaction);
             if ($set->count() > 100) {
                 $page->assign('recherche_trop_large', true);
             }
         }
+
         $page->changeTpl('profile/referent.tpl');
     }
 
     function handler_ref_sect(&$page, $sect)
     {
-        header('Content-Type: text/html; charset=utf-8');
+        pl_content_headers("text/html");
         $page->changeTpl('include/field.select.tpl', NO_SKIN);
         $page->assign('onchange', 'setSSectors()');
         $page->assign('id', 'ssect_field');
@@ -732,7 +702,7 @@ class ProfileModule extends PLModule
 
     function handler_ref_country(&$page, $sect, $ssect = '')
     {
-        header('Content-Type: text/html; charset=utf-8');
+        pl_content_headers("text/html");
         $page->changeTpl('include/field.select.tpl', NO_SKIN);
         $page->assign('name', 'pays_sel');
         $where = ($ssect ? ' AND ms.subsectorid = {?}' : '');
@@ -754,9 +724,9 @@ class ProfileModule extends PLModule
         $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)
+              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());
     }
@@ -768,15 +738,15 @@ class ProfileModule extends PLModule
         }
 
         $res = XDB::query('SELECT  logo, logo_mime
-                             FROM  groupex.asso
+                             FROM  #groupex#.asso
                             WHERE  id = {?}', $id);
         list($logo, $logo_mime) = $res->fetchOneRow();
 
         if (!empty($logo)) {
-            header("Content-type: $mime");
+            pl_cached_dynamic_content_headers($logo_mime);
             echo $logo;
         } else {
-            header('Content-type: image/jpeg');
+            pl_cached_dynamic_content_headers("image/jpeg");
             readfile(dirname(__FILE__) . '/../htdocs/images/dflt_carre.jpg');
         }
 
@@ -812,10 +782,9 @@ class ProfileModule extends PLModule
 
         switch ($action) {
             case "original":
-                header("Content-type: image/jpeg");
+                pl_cached_content_headers("image/jpeg");
                readfile("/home/web/trombino/photos" . $user->promo() . "/" . $user->login() . ".jpg");
                 exit;
-               break;
 
             case "new":
                 S::assert_xsrf_token();