function handler_issues_promo($page, $action = '') { $page->changeTpl('fusionax/promo_issues.tpl'); if ($action == 'edit') { S::assert_xsrf_token(); $issues = XDB::rawIterRow('SELECT p.pid, pd.directory_name, pd.promo, pm.entry_year_ax, pe.entry_year, pe.grad_year FROM profile_merge_issues AS pm INNER JOIN profiles AS p ON (pm.pid = p.pid) INNER JOIN profile_display AS pd ON (pd.pid = p.pid) INNER JOIN profile_education AS pe ON (pe.pid = p.pid AND FIND_IN_SET(\'primary\', pe.flags)) WHERE FIND_IN_SET(\'promo\', pm.issues) ORDER BY pd.directory_name'); while (list($pid, $name, $promo, $deathAX, $deathXorgEntry, $deathXorgGrad) = $issues->next()) { $choiceXorg = Post::has('XORG_' . $pid); if (!(Post::has('display_' . $pid) && Post::has('entry_' . $pid) && Post::has('grad_' . $pid))) { continue; } $display = Post::i('display_' . $pid); $entry = Post::i('entry_' . $pid); $grad = Post::i('grad_' . $pid); if (!($grad <= $entry + 5 && $grad >= $entry + 3 && ($display >= $entry && $display <= $grad - 3))) { $page->trigError("La promotion de {$name} n'a pas été corrigée."); continue; } XDB::execute('UPDATE profile_display SET promo = {?} WHERE pid = {?}', 'X' . $display, $pid); XDB::execute('UPDATE profile_education SET entry_year = {?}, grad_year = {?} WHERE pid = {?} AND FIND_IN_SET(\'primary\', flags)', $entry, $grad, $pid); $page->trigSuccess("La promotion de {$name} a bien été corrigée."); } } $issues = XDB::rawFetchAllAssoc('SELECT p.pid, p.hrpid, pd.directory_name, pd.promo, pm.entry_year_ax, pe.entry_year, pe.grad_year FROM profile_merge_issues AS pm INNER JOIN profiles AS p ON (pm.pid = p.pid) INNER JOIN profile_display AS pd ON (pd.pid = p.pid) INNER JOIN profile_education AS pe ON (pe.pid = p.pid AND FIND_IN_SET(\'primary\', pe.flags)) WHERE FIND_IN_SET(\'promo\', pm.issues) ORDER BY pd.directory_name'); $page->assign('issues', $issues); $page->assign('total', count($issues)); }