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;
}
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());
if (is_null($id)) {
return PL_NOT_FOUND;
}
- $pid = (!is_numeric($id) || S::admin()) ? Profile::getPID($id) : null;
- if (is_null($pid)) {
- if (S::logged()) {
- $page->trigError($id . " inconnu dans l'annuaire.");
- }
- return PL_NOT_FOUND;
- }
-
- // Now that we know this is an existing profile, we can switch to the
- // appropriate template.
- $page->changeTpl('profile/profile.tpl', SIMPLE);
// Determines the access level at which the profile will be displayed.
if (!S::logged() || !S::user()->checkPerms('directory_ax') || Env::v('view') == 'public') {
$page->assign('with_pending_pic', true);
}
- // Fetches profile's and profile's owner information and redirects to
- // marketing if the owner has not subscribed and the requirer has logged in.
- $profile = Profile::get($pid, Profile::FETCH_ALL, $view);
- $owner = $profile->owner();
+ $pid = (!is_numeric($id) || S::admin()) ? Profile::getPID($id) : null;
+ if (is_null($pid)) {
+ $owner = User::getSilent($id);
+ if ($owner) {
+ $profile = $owner->profile(true, Profile::FETCH_ALL, $view);
+ if ($profile) {
+ $pid = $profile->id();
+ }
+ }
+ } else {
+ // Fetches profile's and profile's owner information and redirects to
+ // marketing if the owner has not subscribed and the requirer has logged in.
+ $profile = Profile::get($pid, Profile::FETCH_ALL, $view);
+ $owner = $profile->owner();
+ }
+ if (is_null($pid)) {
+ if (S::logged()) {
+ $page->kill($id . " inconnu dans l'annuaire.");
+ }
+ return PL_NOT_FOUND;
+ }
+ // Now that we know this is an existing profile, we can switch to the
+ // appropriate template.
+ $page->changeTpl('profile/profile.tpl', SIMPLE);
// Profile view are logged.
if (S::logged()) {
{
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');
$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);
$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)
// 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());
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);
}
}
$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();
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();
$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);
$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');