X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fprofile.php;h=2728a0829e2506d30d25e6499379820890b9cd43;hb=190efb3a08127072aa3e0876a79e7bf76aa77051;hp=e3239d28a59d05636759c9cc36e39317fa9c77f5;hpb=1c4a1d0a32c52851e9ffbbf585bb206c9a472dc9;p=platal.git diff --git a/modules/profile.php b/modules/profile.php index e3239d2..2728a08 100644 --- a/modules/profile.php +++ b/modules/profile.php @@ -139,25 +139,25 @@ class ProfileModule extends PLModule exit; } - /** Tries to return the correct user from given hrpid - * Will redirect to $returnurl$hrpid if $hrpid was empty + /** Tries to return the correct profile from a given hrpid. */ - private function findProfile($returnurl, $hrpid = null) + private function findProfile($hrpid = null) { if (is_null($hrpid)) { $user = S::user(); if (!$user->hasProfile()) { return PL_NOT_FOUND; } else { - pl_redirect($returnurl . $user->profile()->hrid()); + $profile = $user->profile(); } } else { $profile = Profile::get($hrpid); - if (!$profile) { - return PL_NOT_FOUND; - } else if (!S::user()->canEdit($profile) && Platal::notAllowed()) { - return PL_FORBIDDEN; - } + } + + if (!$profile) { + return PL_NOT_FOUND; + } else if (!S::user()->canEdit($profile) && Platal::notAllowed()) { + return PL_FORBIDDEN; } return $profile; } @@ -165,10 +165,13 @@ class ProfileModule extends PLModule function handler_photo_change(&$page, $hrpid = null) { global $globals; - $profile = $this->findProfile('photo/change/', $hrpid); + $profile = $this->findProfile($hrpid); if (! ($profile instanceof Profile) && ($profile == PL_NOT_FOUND || $profile == PL_FORBIDDEN)) { return $profile; } + if (is_null($hrpid)) { + pl_redirect('photo/change/' . $profile->hrid()); + } $page->changeTpl('profile/trombino.tpl'); $page->assign('hrpid', $profile->hrid()); @@ -310,13 +313,23 @@ class ProfileModule extends PLModule { global $globals; - $profile = $this->findProfile('profile/edit/', $hrpid); + if (in_array($hrpid, array('general', 'adresses', 'emploi', 'poly', 'deco', 'skill', 'mentor'))) { + $aux = $opened_tab; + $opened_tab = $hrpid; + $hrpid = $aux; + $url_error = true; + } else { + $url_error = false; + } + $profile = $this->findProfile($hrpid); if (! ($profile instanceof Profile) && ($profile == PL_NOT_FOUND || $profile == PL_FORBIDDEN)) { return $profile; } + if (is_null($hrpid) || $url_error) { + pl_redirect('profile/edit/' . $profile->hrid() . (is_null($opened_tab) ? '' : '/' . $opened_tab)); + } // Build the page - $page->addJsLink('ajax.js'); $page->addJsLink('education.js', false); /* dynamic content */ $page->addJsLink('grades.js', false); /* dynamic content */ $page->addJsLink('profile.js'); @@ -387,7 +400,7 @@ class ProfileModule extends PLModule $page->assign('address', array()); } - function handler_ajax_tel(&$page, $prefid, $prefname, $telid) + function handler_ajax_tel(&$page, $prefid, $prefname, $telid, $subField, $mainField, $mainId) { pl_content_headers("text/html"); $page->changeTpl('profile/phone.tpl', NO_SKIN); @@ -396,6 +409,11 @@ class ProfileModule extends PLModule $page->assign('telid', $telid); $phone = new Phone(); $page->assign('tel', $phone->toFormArray()); + if ($mainField) { + $page->assign('subField', $subField); + $page->assign('mainField', $mainField); + $page->assign('mainId', $mainId); + } } function handler_ajax_edu(&$page, $eduid, $class) @@ -501,7 +519,7 @@ class ProfileModule extends PLModule // Retrieves referents' countries. $res = XDB::query( - "SELECT gc.countryFR + "SELECT gc.country FROM profile_mentor_country AS m LEFT JOIN geoloc_countries AS gc ON (m.country = gc.iso_3166_1_a2) WHERE pid = {?}", $pf->id()); @@ -515,11 +533,11 @@ class ProfileModule extends PLModule pl_content_headers("text/html"); $page->changeTpl('include/field.select.tpl', NO_SKIN); $page->assign('name', 'pays_sel'); - $it = XDB::iterator("SELECT gc.iso_3166_1_a2 AS id, gc.countryFR AS field + $it = XDB::iterator("SELECT gc.iso_3166_1_a2 AS id, gc.country AS field FROM geoloc_countries AS gc INNER JOIN profile_mentor_country AS mp ON (mp.country = gc.iso_3166_1_a2) GROUP BY iso_3166_1_a2 - ORDER BY countryFR"); + ORDER BY country"); $page->assign('list', $it); } @@ -595,8 +613,9 @@ class ProfileModule extends PLModule } $res .= "\n"; } - XDB::query('REPLACE INTO search_autocomplete - VALUES ({?}, {?}, {?}, NOW())', + XDB::query('INSERT INTO search_autocomplete (name, query, result, generated) + VALUES ({?}, {?}, {?}, NOW()) + ON DUPLICATE KEY UPDATE result = VALUES(result), generated = VALUES(generated)', $type, $q_normalized, $res); echo $res; exit(); @@ -675,13 +694,14 @@ class ProfileModule extends PLModule S::assert_xsrf_token(); $data = file_get_contents($_FILES['userfile']['tmp_name']); - list($x, $y) = getimagesize($_FILES['userfile']['tmp_name']); - $mimetype = substr($_FILES['userfile']['type'], 6); - unlink($_FILES['userfile']['tmp_name']); - XDB::execute( - "REPLACE INTO profile_photos SET pid={?}, attachmime = {?}, attach={?}, x={?}, y={?}", - $user->profile()->id(), $mimetype, $data, $x, $y); - break; + list($x, $y) = getimagesize($_FILES['userfile']['tmp_name']); + $mimetype = substr($_FILES['userfile']['type'], 6); + unlink($_FILES['userfile']['tmp_name']); + XDB::execute('INSERT INTO profile_photos (pid, attachmime, attach, x, y) + VALUES ({?}, {?}, {?}, {?}, {?}) + ON DUPLICATE KEY UPDATE attachmime = VALUES(attachmime), attach = VALUES(attach), x = VALUES(x), y = VALUES(y)', + $user->profile()->id(), $mimetype, $data, $x, $y); + break; case "delete": S::assert_xsrf_token(); @@ -736,10 +756,10 @@ class ProfileModule extends PLModule $table_editor->describe('degree', 'niveau', true); $table_editor->apply($page, $action, $id); } - function handler_admin_education_degree_set(&$page, $action = 'list', $id = null) { + function handler_admin_education_degree_set(&$page, $action = 'list', $id = null, $id2 = null) { $page->setTitle('Administration - Correspondances formations - niveau de formation'); $page->assign('title', 'Gestion des correspondances formations - niveau de formation'); - $table_editor = new PLTableEditor('admin/education_degree_set', 'profile_education_degree', 'eduid', true); + $table_editor = new PLTableEditor('admin/education_degree_set', 'profile_education_degree', 'eduid', true, 'degreeid'); $table_editor->describe('eduid', 'id formation', true); $table_editor->describe('degreeid', 'id niveau', true); @@ -750,7 +770,7 @@ class ProfileModule extends PLModule $table_editor->add_option_table('profile_education_degree_enum','profile_education_degree_enum.id = t.degreeid'); $table_editor->add_option_field('profile_education_degree_enum.degree', 'degree_name', 'niveau'); - $table_editor->apply($page, $action, $id); + $table_editor->apply($page, $action, $id, $id2); } function handler_admin_sections(&$page, $action = 'list', $id = null) { $page->setTitle('Administration - Sections');