X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fprofile.php;h=2e75801cbb68e99443f5b615adbe3ecfb18ce003;hb=6faa01866d4ce153ec9f8a3895eed3791a4edd23;hp=97c5ddfa0119af87bff6d144dddf162a7a608c86;hpb=89cb2025f5f2aed0be3994c89ac473aa11535853;p=platal.git diff --git a/modules/profile.php b/modules/profile.php index 97c5ddf..2e75801 100644 --- a/modules/profile.php +++ b/modules/profile.php @@ -38,8 +38,9 @@ class ProfileModule extends PLModule 'profile/ajax/medal' => $this->make_hook('ajax_medal', AUTH_COOKIE, 'user', NO_AUTH), 'profile/networking' => $this->make_hook('networking', AUTH_PUBLIC), 'profile/ajax/job' => $this->make_hook('ajax_job', AUTH_COOKIE, 'user', NO_AUTH), - 'profile/ajax/secteur' => $this->make_hook('ajax_secteur', AUTH_COOKIE, 'user', NO_AUTH), - 'profile/ajax/ssecteur' => $this->make_hook('ajax_ssecteur', AUTH_COOKIE, 'user', NO_AUTH), + 'profile/ajax/sector' => $this->make_hook('ajax_sector', AUTH_COOKIE, 'user', NO_AUTH), + 'profile/ajax/sub_sector' => $this->make_hook('ajax_sub_sector', AUTH_COOKIE, 'user', NO_AUTH), + 'profile/ajax/alternates' => $this->make_hook('ajax_alternates', AUTH_COOKIE, 'user', NO_AUTH), 'profile/ajax/skill' => $this->make_hook('ajax_skill', AUTH_COOKIE, 'user', NO_AUTH), 'profile/ajax/searchname' => $this->make_hook('ajax_searchname', AUTH_COOKIE, 'user', NO_AUTH), 'profile/ajax/buildnames' => $this->make_hook('ajax_buildnames', AUTH_COOKIE, 'user', NO_AUTH), @@ -56,6 +57,7 @@ class ProfileModule extends PLModule 'referent/country' => $this->make_hook('ref_country', AUTH_COOKIE, 'user', NO_AUTH), 'groupes-x' => $this->make_hook('xnet', AUTH_COOKIE), + 'groupes-x/logo' => $this->make_hook('xnetlogo', AUTH_PUBLIC), 'vcard' => $this->make_hook('vcard', AUTH_COOKIE, 'user', NO_HTTPS), 'admin/binets' => $this->make_hook('admin_binets', AUTH_MDP, 'admin'), @@ -65,15 +67,12 @@ class ProfileModule extends PLModule 'admin/education_degree' => $this->make_hook('admin_education_degree', AUTH_MDP, 'admin'), 'admin/education_degree_set' => $this->make_hook('admin_education_degree_set', AUTH_MDP, 'admin'), 'admin/sections' => $this->make_hook('admin_sections', AUTH_MDP, 'admin'), - 'admin/secteurs' => $this->make_hook('admin_secteurs', AUTH_MDP, 'admin'), 'admin/networking' => $this->make_hook('admin_networking', AUTH_MDP, 'admin'), 'admin/trombino' => $this->make_hook('admin_trombino', AUTH_MDP, 'admin'), - 'admin/ss_secteurs' => $this->make_hook('admin_ss_secteurs', AUTH_MDP, 'admin'), - 'admin/fonctions' => $this->make_hook('admin_fonctions', AUTH_MDP, 'admin'), + 'admin/sectors' => $this->make_hook('admin_sectors', AUTH_MDP, 'admin'), 'admin/corps_enum' => $this->make_hook('admin_corps_enum', AUTH_MDP, 'admin'), 'admin/corps_rank' => $this->make_hook('admin_corps_rank', AUTH_MDP, 'admin'), 'admin/names' => $this->make_hook('admin_names', AUTH_MDP, 'admin'), - ); } @@ -113,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; @@ -134,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; } @@ -337,10 +335,10 @@ class ProfileModule extends PLModule if (!$user->ax_id) { $page->kill("Le matricule AX de {$user->hrid()} est inconnu"); } - http_redirect("http://www.polytechniciens.com/?page=AX_FICHE_ANCIEN&anc_id=" . $user->ax_id); + http_redirect("http://www.polytechniciens.com/?page=AX_FICHE_ANCIEN&ancc_id=" . $user->ax_id); } - function handler_p_edit(&$page, $user = null, $opened_tab = null, $mode = null) + function handler_p_edit(&$page, $user = null, $opened_tab = null, $mode = null, $success = null) { global $globals; @@ -385,26 +383,21 @@ class ProfileModule extends PLModule } $page->setTitle('Mon Profil'); + if (isset($success) && $success) { + $page->trigSuccess('Ton profil a bien été mis à jour.'); + } } 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 @@ -427,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()); @@ -435,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); @@ -458,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)); @@ -466,31 +459,27 @@ 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()); $page->assign('new', true); $res = XDB::query("SELECT id, name AS label FROM profile_job_sector_enum"); - $page->assign('secteurs', $res->fetchAllAssoc()); - $res = XDB::query("SELECT id, fonction_fr, FIND_IN_SET('titre', flags) AS title - FROM fonctions_def - ORDER BY id"); - $page->assign('fonctions', $res->fetchAllAssoc()); + $page->assign('sectors', $res->fetchAllAssoc()); require_once "emails.combobox.inc.php"; fill_email_combobox($page); } - function handler_ajax_secteur(&$page, $id, $jobid, $jobpref, $sect, $ssect = -1) + function handler_ajax_sector(&$page, $id, $jobid, $jobpref, $sect, $ssect = -1) { - header('Content-Type: text/html; charset=utf-8'); - $res = XDB::iterator("SELECT id, name AS label, FIND_IN_SET('optgroup', flags) AS optgroup + 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); - $page->changeTpl('profile/jobs.secteur.tpl', NO_SKIN); + $page->changeTpl('profile/jobs.sector.tpl', NO_SKIN); $page->assign('id', $id); - $page->assign('ssecteurs', $res); + $page->assign('subSectors', $res); $page->assign('sel', $ssect); if ($id != -1) { $page->assign('change', 1); @@ -499,21 +488,38 @@ class ProfileModule extends PLModule } } - function handler_ajax_ssecteur(&$page, $id, $ssect, $sssect = -1) + function handler_ajax_sub_sector(&$page, $id, $ssect, $sssect = -1) { header('Content-Type: text/html; charset=utf-8'); - $res = XDB::iterator("SELECT id, name AS label + $res = XDB::iterator("SELECT id, name FROM profile_job_subsubsector_enum WHERE subsectorid = {?}", $ssect); - $page->changeTpl('profile/jobs.soussecteur.tpl', NO_SKIN); + $page->changeTpl('profile/jobs.sub_sector.tpl', NO_SKIN); $page->assign('id', $id); - $page->assign('sssecteurs', $res); + $page->assign('subSubSectors', $res); $page->assign('sel', $sssect); } - function handler_ajax_skill(&$page, $cat, $id) + function handler_ajax_alternates(&$page, $id, $sssect) { header('Content-Type: text/html; charset=utf-8'); + $res = XDB::iterator('SELECT name + FROM profile_job_alternates + WHERE subsubsectorid = {?} + ORDER BY id', + $sssect); + $page->changeTpl('profile/jobs.alternates.tpl', NO_SKIN); + $alternate = $res->next(); + $alternates = $alternate['name']; + while ($alternate = $res->next()) { + $alternates .= ', ' . $alternate['name']; + } + $page->assign('alternates', $alternates); + } + + function handler_ajax_skill(&$page, $cat, $id) + { + pl_content_headers("text/html"); $page->changeTpl('profile/skill.skill.tpl', NO_SKIN); $page->assign('cat', $cat); $page->assign('id', $id); @@ -620,19 +626,20 @@ class ProfileModule extends PLModule WHERE uid = {?}', $user->id()); $page->assign('expertise', $res->fetchOneCell()); - //secteurs - $secteurs = $ss_secteurs = Array(); - $res = XDB::iterRow('SELECT s.name AS label, ss.name AS label - FROM profile_mentor_sector AS m - LEFT JOIN profile_job_sector_enum AS s ON(m.sectorid = s.id) - LEFT JOIN profile_job_subsector_enum AS ss ON(m.sectorid = ss.sectorid AND m.subsectorid = ss.id) - WHERE uid = {?}', $user->id()); - while (list($sec, $ssec) = $res->next()) { - $secteurs[] = $sec; - $ss_secteurs[] = $ssec; + // Sectors + $sectors = $subSectors = Array(); + $res = XDB::iterRow( + "SELECT s.name AS label, ss.name AS label + FROM profile_mentor_sector AS m + LEFT JOIN profile_job_sector_enum AS s ON(m.sectorid = s.id) + LEFT JOIN profile_job_subsector_enum AS ss ON(m.sectorid = ss.sectorid AND m.subsectorid = ss.id) + WHERE uid = {?}", $user->id()); + while (list($sector, $subSector) = $res->next()) { + $sectors[] = $sector; + $subSectors[] = $subSector; } - $page->assign_by_ref('secteurs', $secteurs); - $page->assign_by_ref('ss_secteurs', $ss_secteurs); + $page->assign_by_ref('sectors', $sectors); + $page->assign_by_ref('subSectors', $subSectors); // Countries. $res = XDB::query( @@ -652,32 +659,33 @@ class ProfileModule extends PLModule $page->setTitle('Conseil Pro'); - //recuperation des noms de secteurs - $res = XDB::iterRow("SELECT id, name AS label FROM profile_job_sector_enum"); - $secteurs[''] = ''; + // Retrieval of sector names + $res = XDB::iterRow("SELECT id, name AS label + FROM profile_job_sector_enum"); + $sectors[''] = ''; while (list($tmp_id, $tmp_label) = $res->next()) { - $secteurs[$tmp_id] = $tmp_label; + $sectors[$tmp_id] = $tmp_label; } - $page->assign_by_ref('secteurs', $secteurs); + $page->assign_by_ref('sectors', $sectors); // nb de mentors $res = XDB::query("SELECT count(*) FROM profile_mentor"); $page->assign('mentors_number', $res->fetchOneCell()); // On vient d'un formulaire - $where = array(); - $pays_sel = XDB::escape(Env::v('pays_sel')); - $secteur_sel = XDB::escape(Env::v('secteur')); - $ss_secteur_sel = XDB::escape(Env::v('ss_secteur')); - $expertise_champ = XDB::escape(Env::v('expertise')); + $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 ($secteur_sel != "''") { - $where[] = "ms.sectorid = $secteur_sel"; - if ($ss_secteur_sel != "''") { - $where[] = "ms.subsectorid = $ss_secteur_sel"; + if ($sectorSelection != "''") { + $where[] = "ms.sectorid = " . $sectorSelection; + if ($subSectorSelection != "''") { + $where[] = "ms.subsectorid = " . $subSectorSelection; } } if ($expertise_champ != "''") { @@ -702,11 +710,11 @@ class ProfileModule extends PLModule 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', 'setSSecteurs()'); + $page->assign('onchange', 'setSSectors()'); $page->assign('id', 'ssect_field'); - $page->assign('name', 'ss_secteur'); + $page->assign('name', 'subSector'); $it = XDB::iterator("SELECT id, name AS field FROM profile_job_subsector_enum WHERE sectorid = {?}", $sect); @@ -715,7 +723,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 = {?}' : ''); @@ -737,13 +745,35 @@ 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()); } + function handler_xnetlogo(&$page, $id) + { + if (is_null($id)) { + return PL_NOT_FOUND; + } + + $res = XDB::query('SELECT logo, logo_mime + FROM #groupex#.asso + WHERE id = {?}', $id); + list($logo, $logo_mime) = $res->fetchOneRow(); + + if (!empty($logo)) { + pl_cached_dynamic_content_headers($logo_mime); + echo $logo; + } else { + pl_cached_dynamic_content_headers("image/jpeg"); + readfile(dirname(__FILE__) . '/../htdocs/images/dflt_carre.jpg'); + } + + exit; + } + function handler_vcard(&$page, $x = null) { if (is_null($x)) { @@ -773,10 +803,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(); @@ -858,27 +887,14 @@ class ProfileModule extends PLModule $table_editor->describe('text','intitulé',true); $table_editor->apply($page, $action, $id); } - function handler_admin_ss_secteurs(&$page, $action = 'list', $id = null) { - $page->setTitle('Administration - Sous-secteurs'); - $page->assign('title', 'Gestion des sous-secteurs'); - $table_editor = new PLTableEditor('admin/ss_secteurs', 'emploi_ss_secteur', 'id', true); - $table_editor->describe('label', 'intitulé', true); - $table_editor->apply($page, $action, $id); - } - function handler_admin_fonctions(&$page, $action = 'list', $id = null) { - $page->setTitle('Administration - Fonctions'); - $page->assign('title', 'Gestion des fonctions'); - $table_editor = new PLTableEditor('admin/fonctions', 'fonctions_def', 'id', true); - $table_editor->describe('fonction_fr', 'intitulé', true); - $table_editor->describe('fonction_en', 'intitulé (ang)', true); - $table_editor->describe('flags', 'titre', true); - $table_editor->apply($page, $action, $id); - } - function handler_admin_secteurs(&$page, $action = 'list', $id = null) { + function handler_admin_sectors(&$page, $action = 'list', $id = null) { $page->setTitle('Administration - Secteurs'); $page->assign('title', 'Gestion des secteurs'); - $table_editor = new PLTableEditor('admin/secteurs', 'emploi_secteur', 'id', true); - $table_editor->describe('label', 'intitulé', true); + $table_editor = new PLTableEditor('admin/sectors', 'profile_job_subsubsector_enum', 'id', true); + $table_editor->describe('sectorid', 'id du secteur', false); + $table_editor->describe('subsectorid', 'id du sous-secteur', false); + $table_editor->describe('name', 'nom', true); + $table_editor->describe('flags', 'affichage', true); $table_editor->apply($page, $action, $id); } function handler_admin_networking(&$page, $action = 'list', $id = null) {