function handlers()
{
return array(
- 'photo' => $this->make_hook('photo', AUTH_PUBLIC),
- 'trombi' => $this->make_hook('trombi', AUTH_COOKIE),
+ 'photo' => $this->make_hook('photo', AUTH_PUBLIC),
+ 'photo/change' => $this->make_hook('photo_change', AUTH_MDP),
+
+ 'fiche.php' => $this->make_hook('fiche', AUTH_PUBLIC),
+ 'profile' => $this->make_hook('profile', AUTH_PUBLIC),
+ 'profile/orange' => $this->make_hook('p_orange', AUTH_MDP),
+ 'profile/referent' => $this->make_hook('p_referent', AUTH_MDP),
+ 'profile/usage' => $this->make_hook('p_usage', AUTH_MDP),
+
+ 'trombi' => $this->make_hook('trombi', AUTH_COOKIE),
+
+ 'vcard' => $this->make_hook('vcard', AUTH_COOKIE),
);
}
+ /* XXX COMPAT */
+ function handler_fiche(&$page)
+ {
+ return $this->handler_profile($page, Env::get('user'));
+ }
+
+
function _trombi_getlist($offset, $limit)
{
global $globals;
echo $data;
} else {
Header('Content-type: image/png');
- echo file_get_contents(dirname(__FILE__).'../htdocs/images/none.png');
+ echo file_get_contents(dirname(__FILE__).'/../htdocs/images/none.png');
}
}
exit;
}
+ function handler_photo_change(&$page)
+ {
+ global $globals;
+
+ $page->changeTpl('trombino.tpl');
+
+ require_once('validations.inc.php');
+
+ $trombi_x = '/home/web/trombino/photos'.Session::get('promo')
+ .'/'.Session::get('forlife').'.jpg';
+
+ if (Env::has('upload')) {
+ $file = isset($_FILES['userfile']['tmp_name'])
+ ? $_FILES['userfile']['tmp_name']
+ : Env::get('photo');
+ if ($data = file_get_contents($file)) {
+ if ($myphoto = new PhotoReq(Session::getInt('uid'), $data)) {
+ $myphoto->submit();
+ }
+ } else {
+ $page->trig('Fichier inexistant ou vide');
+ }
+ } elseif (Env::has('trombi')) {
+ $myphoto = new PhotoReq(Session::getInt('uid'),
+ file_get_contents($trombi_x));
+ if ($myphoto) {
+ $myphoto->commit();
+ $myphoto->clean();
+ }
+ } elseif (Env::get('suppr')) {
+ $globals->xdb->execute('DELETE FROM photo WHERE uid = {?}',
+ Session::getInt('uid'));
+ $globals->xdb->execute('DELETE FROM requests
+ WHERE user_id = {?} AND type="photo"',
+ Session::getInt('uid'));
+ } elseif (Env::get('cancel')) {
+ $sql = $globals->xdb->query('DELETE FROM requests
+ WHERE user_id={?} AND type="photo"',
+ Session::getInt('uid'));
+ }
+
+ $sql = $globals->xdb->query('SELECT COUNT(*) FROM requests
+ WHERE user_id={?} AND type="photo"',
+ Session::getInt('uid'));
+ $page->assign('submited', $sql->fetchOneCell());
+ $page->assign('has_trombi_x', file_exists($trombi_x));
+
+ return PL_OK;
+ }
+
+ function handler_profile(&$page, $x = null)
+ {
+ if (is_null($x)) {
+ return PL_NOT_FOUND;
+ }
+
+ global $globals;
+ require_once 'user.func.inc.php';
+
+ $page->changeTpl('fiche.tpl');
+ $page->assign('simple', true);
+
+ $view = 'private';
+ if (!logged() || Env::get('view') == 'public') $view = 'public';
+ if (logged() && Env::get('view') == 'ax') $view = 'ax';
+
+ if (is_numeric($x)) {
+ $res = $globals->xdb->query(
+ "SELECT alias
+ FROM aliases AS a
+ INNER JOIN auth_user_md5 AS u ON (a.id=u.user_id AND a.type='a_vie')
+ WHERE matricule={?}", $x);
+ $login = $res->fetchOneCell();
+ } else {
+ $login = get_user_forlife($x);
+ }
+
+ if (empty($login)) {
+ return PL_NOT_FOUND;
+ }
+
+ $new = Env::get('modif') == 'new';
+ $user = get_user_details($login, Session::getInt('uid'), $view);
+ $title = $user['prenom'] . ' ' . empty($user['nom_usage']) ? $user['nom'] : $user['nom_usage'];
+ $page->assign('xorg_title', $title);
+
+ // photo
+
+ $photo = $globals->baseurl.'/photo/'.$user['forlife'].($new ? '/req' : '');
+
+ if(!isset($user['y']) and !isset($user['x'])) {
+ list($user['x'], $user['y']) = getimagesize("images/none.png");
+ }
+ if(!isset($user['y']) or $user['y'] < 1) $user['y']=1;
+ if(!isset($user['x']) or $user['x'] < 1) $user['x']=1;
+ if($user['x'] > 240){
+ $user['y'] = (integer)($user['y']*240/$user['x']);
+ $user['x'] = 240;
+ }
+ if($user['y'] > 300){
+ $user['x'] = (integer)($user['x']*300/$user['y']);
+ $user['y'] = 300;
+ }
+ if($user['x'] < 160){
+ $user['y'] = (integer)($user['y']*160/$user['x']);
+ $user['x'] = 160;
+ }
+
+ $page->assign('logged', has_user_right('private', $view));
+ if (!has_user_right($user['photo_pub'], $view)) {
+ $photo = "";
+ }
+
+ $page->assign_by_ref('x', $user);
+ $page->assign('photo_url', $photo);
+ // alias virtual
+ $res = $globals->xdb->query(
+ "SELECT alias
+ FROM virtual
+ INNER JOIN virtual_redirect USING(vid)
+ INNER JOIN auth_user_quick ON ( user_id = {?} AND emails_alias_pub = 'public' )
+ WHERE ( redirect={?} OR redirect={?} )
+ AND alias LIKE '%@{$globals->mail->alias_dom}'",
+ Session::getInt('uid'),
+ $user['forlife'].'@'.$globals->mail->domain,
+ $user['forlife'].'@'.$globals->mail->domain2);
+ $page->assign('virtualalias', $res->fetchOneCell());
+
+ $page->addJsLink('javascript/close_on_esc.js');
+
+ return PL_OK;
+ }
+
+ function handler_p_orange(&$page)
+ {
+ global $globals;
+
+ $page->changeTpl('orange.tpl');
+
+ require_once 'validations.inc.php';
+ require_once 'xorg.misc.inc.php';
+
+ $res = $globals->xdb->query(
+ "SELECT u.promo,u.promo_sortie
+ FROM auth_user_md5 AS u
+ WHERE user_id={?}", Session::getInt('uid'));
+
+ list($promo,$promo_sortie_old) = $res->fetchOneRow();
+ $page->assign('promo_sortie_old', $promo_sortie_old);
+ $page->assign('promo', $promo);
+
+ if (!Env::has('promo_sortie')) {
+ return PL_OK;
+ }
+
+ $promo_sortie = Env::getInt('promo_sortie');
+
+ if ($promo_sortie < 1000 || $promo_sortie > 9999) {
+ $page->trig('L\'année de sortie doit être un nombre de quatre chiffres');
+ }
+ elseif ($promo_sortie < $promo + 3) {
+ $page->trig('Trop tôt');
+ }
+ elseif ($promo_sortie == $promo_sortie_old) {
+ $page->trig('Tu appartiens déjà à la promotion correspondante à cette année de sortie.');
+ }
+ elseif ($promo_sortie == $promo + 3) {
+ $globals->xdb->execute(
+ "UPDATE auth_user_md5 set promo_sortie={?}
+ WHERE user_id={?}",$promo_sortie,Session::getInt('uid'));
+ $page->trig('Ton statut "orange" a été supprimé.');
+ $page->assign('promo_sortie_old', $promo_sortie);
+ }
+ else {
+ $page->assign('promo_sortie', $promo_sortie);
+
+ if (Env::has('submit')) {
+ $myorange = new OrangeReq(Session::getInt('uid'),
+ $promo_sortie);
+ $myorange->submit();
+ $page->assign('myorange', $myorange);
+ }
+ }
+
+ return PL_OK;
+ }
+
+ function handler_p_referent(&$page, $x = null)
+ {
+ global $globals;
+
+ require_once 'user.func.inc.php';
+
+ if (is_null($x)) {
+ return PL_NOT_FOUND;
+ }
+
+ $page->changeTpl('fiche_referent.tpl');
+ $page->assign('simple', true);
+
+ $res = $globals->xdb->query(
+ "SELECT prenom, nom, user_id, promo, cv, a.alias AS bestalias
+ FROM auth_user_md5 AS u
+ INNER JOIN aliases AS a ON (u.user_id=a.id AND FIND_IN_SET('bestalias',a.flags))
+ INNER JOIN aliases AS a1 ON (u.user_id=a1.id
+ AND a1.alias = {?}
+ AND a1.type!='homonyme')", $x);
+
+ if ($res->numRows() != 1) {
+ return PL_NOT_FOUND;
+ }
+
+ list($prenom, $nom, $user_id, $promo, $cv, $bestalias) = $res->fetchOneRow();
+
+ $page->assign('prenom', $prenom);
+ $page->assign('nom', $nom);
+ $page->assign('promo', $promo);
+ $page->assign('cv', $cv);
+ $page->assign('bestalias', $bestalias);
+ $page->assign('adr_pro', get_user_details_pro($user_id));
+
+ ///// recuperations infos referent
+
+ //expertise
+ $res = $globals->xdb->query("SELECT expertise FROM mentor WHERE uid = {?}", $user_id);
+ $page->assign('expertise', $res->fetchOneCell());
+
+ //secteurs
+ $secteurs = $ss_secteurs = Array();
+ $res = $globals->xdb->iterRow(
+ "SELECT s.label, ss.label
+ FROM mentor_secteurs AS m
+ LEFT JOIN emploi_secteur AS s ON(m.secteur = s.id)
+ LEFT JOIN emploi_ss_secteur AS ss ON(m.secteur = ss.secteur AND m.ss_secteur = ss.id)
+ WHERE uid = {?}", $user_id);
+ while (list($sec, $ssec) = $res->next()) {
+ $secteurs[] = $sec;
+ $ss_secteurs[] = $ssec;
+ }
+ $page->assign_by_ref('secteurs', $secteurs);
+ $page->assign_by_ref('ss_secteurs', $ss_secteurs);
+
+ //pays
+ $res = $globals->xdb->query(
+ "SELECT gp.pays
+ FROM mentor_pays AS m
+ LEFT JOIN geoloc_pays AS gp ON(m.pid = gp.a2)
+ WHERE uid = {?}", $user_id);
+ $page->assign('pays', $res->fetchColumn());
+
+ $page->addJsLink('javascript/close_on_esc.js');
+ return PL_OK;
+ }
+
+ function handler_p_usage(&$page)
+ {
+ global $globals;
+
+ $page->changeTpl('nomusage.tpl');
+
+ require_once 'validations.inc.php';
+ require_once 'xorg.misc.inc.php';
+
+ $res = $globals->xdb->query(
+ "SELECT u.nom,u.nom_usage,u.flags,e.alias
+ FROM auth_user_md5 AS u
+ LEFT JOIN aliases AS e ON(u.user_id = e.id AND FIND_IN_SET('usage',e.flags))
+ WHERE user_id={?}", Session::getInt('uid'));
+
+ list($nom,$usage_old,$flags,$alias_old) = $res->fetchOneRow();
+ $flags = new flagset($flags);
+ $page->assign('usage_old', $usage_old);
+ $page->assign('alias_old', $alias_old);
+
+ $nom_usage = replace_accent(trim(Env::get('nom_usage')));
+ $nom_usage = strtoupper($nom_usage);
+ $page->assign('usage_req', $nom_usage);
+
+ if (Env::has('submit') && ($nom_usage != $usage_old)) {
+ // on vient de recevoir une requete, differente de l'ancien nom d'usage
+ if ($nom_usage == $nom) {
+ $page->assign('same', true);
+ } else { // le nom de mariage est distinct du nom à l'X
+ // on calcule l'alias pour l'afficher
+ $reason = Env::get('reason');
+ if ($reason == 'other') {
+ $reason = Env::get('other_reason');
+ }
+ $myusage = new UsageReq(Session::getInt('uid'), $nom_usage, $reason);
+ $myusage->submit();
+ $page->assign('myusage', $myusage);
+ }
+ }
+
+ return PL_OK;
+ }
+
function handler_trombi(&$page, $promo = null)
{
require_once 'trombi.inc.php';
return PL_OK;
}
+
+ function format_adr($params, &$smarty)
+ {
+ // $adr1, $adr2, $adr3, $postcode, $city, $region, $country
+ extract($params['adr']);
+ $adr = $adr1;
+ $adr = trim("$adr\n$adr2");
+ $adr = trim("$adr\n$adr3");
+ return quoted_printable_encode(";;$adr;$city;$region;$postcode;$country");
+ }
+
+ function handler_vcard(&$page, $x = null)
+ {
+ if (is_null($x)) {
+ return PL_NOT_FOUND;
+ }
+
+ global $globals;
+
+ if (substr($x, -4) == '.vcf') {
+ $x = substr($x, 0, strlen($x) - 4);
+ }
+
+ new_nonhtml_page('vcard.tpl', AUTH_COOKIE);
+ require_once 'xorg.misc.inc.php';
+ require_once 'user.func.inc.php';
+
+ $page->register_modifier('qp_enc', 'quoted_printable_encode');
+ $page->register_function('format_adr', array($this, 'format_adr'));
+
+ $login = get_user_forlife($x);
+ $user = get_user_details($login);
+
+ // alias virtual
+ $res = $globals->xdb->query(
+ "SELECT alias
+ FROM virtual
+ INNER JOIN virtual_redirect USING(vid)
+ INNER JOIN auth_user_quick ON ( user_id = {?} AND emails_alias_pub = 'public' )
+ WHERE ( redirect={?} OR redirect={?} )
+ AND alias LIKE '%@{$globals->mail->alias_dom}'",
+ Session::getInt('uid'),
+ $user['forlife'].'@'.$globals->mail->domain,
+ $user['forlife'].'@'.$globals->mail->domain2);
+
+ $user['virtualalias'] = $res->fetchOneCell();
+
+ $page->assign_by_ref('vcard', $user);
+
+ header("Pragma: ");
+ header("Cache-Control: ");
+ header("Content-type: text/x-vcard\n");
+ header("Content-Transfer-Encoding: Quoted-Printable\n");
+
+ return PL_OK;
+ }
}
?>