function handlers()
{
return array(
- 'phpinfo' => $this->make_hook('phpinfo', AUTH_MDP, 'admin'),
+ 'phpinfo' => $this->make_hook('phpinfo', AUTH_MDP, 'admin'),
'get_rights' => $this->make_hook('get_rights', AUTH_COOKIE, 'admin'),
'set_skin' => $this->make_hook('set_skin', AUTH_COOKIE, 'admin'),
- 'admin' => $this->make_hook('default', AUTH_MDP, 'admin'),
- 'admin/dead-but-active' => $this->make_hook('dead_but_active', AUTH_MDP, 'admin'),
- 'admin/deaths' => $this->make_hook('deaths', AUTH_MDP, 'admin'),
- 'admin/downtime' => $this->make_hook('downtime', AUTH_MDP, 'admin'),
- 'admin/homonyms' => $this->make_hook('homonyms', AUTH_MDP, 'admin'),
- 'admin/logger' => $this->make_hook('logger', AUTH_MDP, 'admin'),
- 'admin/logger/actions' => $this->make_hook('logger_actions', AUTH_MDP, 'admin'),
- 'admin/postfix/blacklist' => $this->make_hook('postfix_blacklist', AUTH_MDP, 'admin'),
- 'admin/postfix/delayed' => $this->make_hook('postfix_delayed', AUTH_MDP, 'admin'),
- 'admin/postfix/regexp_bounces' => $this->make_hook('postfix_regexpsbounces', AUTH_MDP, 'admin'),
- 'admin/postfix/whitelist' => $this->make_hook('postfix_whitelist', AUTH_MDP, 'admin'),
- 'admin/mx/broken' => $this->make_hook('mx_broken', AUTH_MDP, 'admin'),
- 'admin/skins' => $this->make_hook('skins', AUTH_MDP, 'admin'),
- 'admin/user' => $this->make_hook('user', AUTH_MDP, 'admin'),
- 'admin/add_accounts' => $this->make_hook('add_accounts', AUTH_MDP, 'admin'),
- 'admin/validate' => $this->make_hook('validate', AUTH_MDP, 'admin,edit_directory'),
- 'admin/validate/answers' => $this->make_hook('validate_answers', AUTH_MDP, 'admin'),
- 'admin/wiki' => $this->make_hook('wiki', AUTH_MDP, 'admin'),
- 'admin/ipwatch' => $this->make_hook('ipwatch', AUTH_MDP, 'admin'),
- 'admin/icons' => $this->make_hook('icons', AUTH_MDP, 'admin'),
- 'admin/geocoding' => $this->make_hook('geocoding', AUTH_MDP, 'admin'),
- 'admin/accounts' => $this->make_hook('accounts', AUTH_MDP, 'admin'),
- 'admin/account/watch' => $this->make_hook('account_watch', AUTH_MDP, 'admin'),
- 'admin/account/types' => $this->make_hook('account_types', AUTH_MDP, 'admin'),
- 'admin/xnet_without_group' => $this->make_hook('xnet_without_group', AUTH_MDP, 'admin'),
- 'admin/jobs' => $this->make_hook('jobs', AUTH_MDP, 'admin,edit_directory'),
- 'admin/profile' => $this->make_hook('profile', AUTH_MDP, 'admin,edit_directory')
+ 'admin' => $this->make_hook('default', AUTH_MDP, 'admin'),
+ 'admin/dead-but-active' => $this->make_hook('dead_but_active', AUTH_MDP, 'admin'),
+ 'admin/deaths' => $this->make_hook('deaths', AUTH_MDP, 'admin'),
+ 'admin/downtime' => $this->make_hook('downtime', AUTH_MDP, 'admin'),
+ 'admin/homonyms' => $this->make_hook('homonyms', AUTH_MDP, 'admin'),
+ 'admin/logger' => $this->make_hook('logger', AUTH_MDP, 'admin'),
+ 'admin/logger/actions' => $this->make_hook('logger_actions', AUTH_MDP, 'admin'),
+ 'admin/postfix/blacklist' => $this->make_hook('postfix_blacklist', AUTH_MDP, 'admin'),
+ 'admin/postfix/delayed' => $this->make_hook('postfix_delayed', AUTH_MDP, 'admin'),
+ 'admin/postfix/regexp_bounces' => $this->make_hook('postfix_regexpsbounces', AUTH_MDP, 'admin'),
+ 'admin/postfix/whitelist' => $this->make_hook('postfix_whitelist', AUTH_MDP, 'admin'),
+ 'admin/mx/broken' => $this->make_hook('mx_broken', AUTH_MDP, 'admin'),
+ 'admin/skins' => $this->make_hook('skins', AUTH_MDP, 'admin'),
+ 'admin/user' => $this->make_hook('user', AUTH_MDP, 'admin'),
+ 'admin/add_accounts' => $this->make_hook('add_accounts', AUTH_MDP, 'admin'),
+ 'admin/validate' => $this->make_hook('validate', AUTH_MDP, 'admin,edit_directory'),
+ 'admin/validate/answers' => $this->make_hook('validate_answers', AUTH_MDP, 'admin'),
+ 'admin/wiki' => $this->make_hook('wiki', AUTH_MDP, 'admin'),
+ 'admin/ipwatch' => $this->make_hook('ipwatch', AUTH_MDP, 'admin'),
+ 'admin/icons' => $this->make_hook('icons', AUTH_MDP, 'admin'),
+ 'admin/geocoding' => $this->make_hook('geocoding', AUTH_MDP, 'admin'),
+ 'admin/accounts' => $this->make_hook('accounts', AUTH_MDP, 'admin'),
+ 'admin/account/watch' => $this->make_hook('account_watch', AUTH_MDP, 'admin'),
+ 'admin/account/types' => $this->make_hook('account_types', AUTH_MDP, 'admin'),
+ 'admin/xnet_without_group' => $this->make_hook('xnet_without_group', AUTH_MDP, 'admin'),
+ 'admin/jobs' => $this->make_hook('jobs', AUTH_MDP, 'admin,edit_directory'),
+ 'admin/profile' => $this->make_hook('profile', AUTH_MDP, 'admin,edit_directory'),
+ 'admin/phd' => $this->make_hook('phd', AUTH_MDP, 'admin')
);
}
$degreeid = $eduDegrees[Profile::DEGREE_D];
$grad_year = $promotion;
$entry_year = $promotion - 3;
- $promo = 'D' . $promotion;
+ $promo = 'D (en cours)';
$hrpromo = $promo;
$type = 'phd';
break;
default:
- $page->killError("La formation n'est pas reconnue:" . Env::t('edu_type') . '.');
+ $page->killError("La formation n'est pas reconnue : " . Env::t('edu_type') . '.');
}
XDB::startTransaction();
ORDER BY pd.directory_name');
$page->assign('updates', $res);
}
+
+ function handler_phd($page, $promo = null, $validate = false)
+ {
+ $page->changeTpl('admin/phd.tpl');
+ $eduDegrees = DirEnum::getOptions(DirEnum::EDUDEGREES);
+ $eduDegrees = array_flip($eduDegrees);
+
+ if (is_null($promo)) {
+ $promo_list = XDB::fetchColumn('SELECT DISTINCT(grad_year)
+ FROM profile_education
+ WHERE FIND_IN_SET(\'primary\', flags) AND NOT FIND_IN_SET(\'completed\', flags) AND degreeid = {?}
+ ORDER BY grad_year',
+ $eduDegrees[Profile::DEGREE_D]);
+ $page->assign('promo_list', $promo_list);
+ $page->assign('nothing', count($promo_list) == 0);
+ return;
+ }
+
+ if ($validate) {
+ S::assert_xsrf_token();
+
+ $list = XDB::iterator('SELECT pe.pid, pd.directory_name
+ FROM profile_education AS pe
+ INNER JOIN profile_display AS pd ON (pe.pid = pd.pid)
+ WHERE FIND_IN_SET(\'primary\', pe.flags) AND NOT FIND_IN_SET(\'completed\', pe.flags)
+ AND pe.degreeid = {?} AND pe.grad_year = {?}',
+ $eduDegrees[Profile::DEGREE_D], $promo);
+ while ($res = $list->next()) {
+ $pid = $res['pid'];
+ $name = $res['directory_name'];
+ if (Post::b('completed_' . $pid)) {
+ $grad_year = Post::t('grad_year_' . $pid);
+ XDB::execute('UPDATE profile_education
+ SET flags = \'primary,completed\', grad_year = {?}
+ WHERE FIND_IN_SET(\'primary\', flags) AND pid = {?}',
+ $grad_year, $pid);
+ XDB::execute('UPDATE profile_display
+ SET promo = {?}
+ WHERE pid = {?}',
+ 'D' . $grad_year, $pid);
+ $page->trigSuccess("Promotion de $name validée.");
+ }
+ }
+ }
+
+ $list = XDB::iterator('SELECT pe.pid, pd.directory_name
+ FROM profile_education AS pe
+ INNER JOIN profile_display AS pd ON (pe.pid = pd.pid)
+ WHERE FIND_IN_SET(\'primary\', pe.flags) AND NOT FIND_IN_SET(\'completed\', pe.flags)
+ AND pe.degreeid = {?} AND pe.grad_year = {?}
+ ORDER BY pd.directory_name',
+ $eduDegrees[Profile::DEGREE_D], $promo);
+ $page->assign('list', $list);
+ $page->assign('promo', $promo);
+ }
}
// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: