$result['status'] = 1; try { if (!isset($_POST['id']) || !isset($_POST['answer']) && !isset($_POST['status'])) { throw new UnexpectedValueException(); } $id = (int) $_POST['id']; $answer = isset($_POST['answer']) ? (int) $_POST['answer'] : (int) $_POST['status']; if (isset($_POST['mw']) && $_POST['mw'] == 1) { require_once '../lib/lib_multiwords.php'; check_permission(PERM_MULTITOKENS); MultiWordTask::register_answer($id, $_SESSION['user_id'], $answer); } else { if (isset($_POST['moder'])) { if (isset($_POST['status'])) { $result['status'] = save_moderated_status($id, $answer); } else { $result['status'] = save_moderated_answer($id, $answer, (int) $_POST['manual']); } } else { check_logged(); update_annot_instance($id, $answer); $am = new AchievementsManager((int) $_SESSION['user_id']); $am->emit(EventTypes::TASK_DONE); } } } catch (Exception $e) { $result['status'] = $e->getMessage(); $result['error'] = 1; } log_timing(true); die(json_encode($result));
if (is_logged()) { $smarty->assign('is_openid', is_user_openid($_SESSION['user_id']) ? 1 : 0); } $smarty->assign('user_permission_dict', user_has_permission(PERM_DICT) ? 1 : 0); $smarty->assign('user_permission_disamb', user_has_permission(PERM_DISAMB) ? 1 : 0); $smarty->assign('user_permission_adder', user_has_permission(PERM_ADDER) ? 1 : 0); $smarty->assign('user_permission_check_tokens', user_has_permission(PERM_CHECK_TOKENS) ? 1 : 0); $smarty->assign('user_permission_check_morph', user_has_permission(PERM_MORPH_MODER) ? 1 : 0); $smarty->assign('user_permission_merge', user_has_permission(PERM_MORPH_SUPERMODER) ? 1 : 0); $smarty->assign('user_permission_syntax', user_has_permission(PERM_SYNTAX) ? 1 : 0); $smarty->assign('user_permission_check_syntax', user_has_permission(PERM_SYNTAX_MODER) ? 1 : 0); $smarty->assign('readonly', file_exists($config['project']['readonly_flag']) ? 1 : 0); $smarty->assign('goals', $config['goals']); $smarty->assign('game_is_on', 0); //$smarty->configLoad(__DIR__.'/../templates/achievements/titles.conf', NULL); // smarty->configLoad is a piece of shit which can not handle multiple sections at once. // reverting to something much simplier. $titles = json_decode(file_get_contents(__DIR__ . '/../templates/achievements/titles.json'), TRUE); $smarty->assign('achievements_titles', $titles); if (is_logged()) { if (game_is_on()) { $smarty->assign('game_is_on', 1); $am = new AchievementsManager($_SESSION['user_id']); $smarty->assign('achievements', $a = $am->pull_all()); $smarty->assign('achievements_unseen', array_filter($a, function ($e) { return !$e->seen; })); } } // alert messages $smarty->assign('alerts', alert_getall());
$smarty->assign('main', get_extended_pools_stats()); $smarty->assign('moder', get_moderation_stats()); $smarty->display('ext_charts.tpl'); break; case 'export': $smarty->assign('active_page', 'downloads'); $smarty->display('static/doc/export.tpl'); break; case 'faq': $smarty->assign('active_page', 'about'); $smarty->assign('content', get_wiki_page('FAQ')); $smarty->assign('title', 'FAQ'); $smarty->display('static/faq.tpl'); break; case 'achievements': $am = new AchievementsManager($_SESSION['user_id']); $smarty->assign('stats', $am->pull_stats()); $smarty->assign('manager', $am); $smarty->display('achievements/all_achievements.tpl'); break; default: header("Location:index.php"); break; } } else { if (!is_admin()) { if (is_logged()) { $smarty->assign('available', get_available_tasks($_SESSION['user_id'], true, $config['misc']['mainpage_tasks_limit'], true)); $tagset_id = get_current_tagset(); $smarty->assign('ner_tagset_id', $tagset_id); $smarty->assign('ner_tasks', get_books_with_NE($tagset_id));
function user_award_for_signup($user_id) { $am = new AchievementsManager($user_id); $am->emit(EventTypes::SIGNED_UP); }
<?php require_once '../lib/header_ajax.php'; require_once '../lib/lib_achievements.php'; if (!is_logged()) { return; } $am = new AchievementsManager((int) $_SESSION['user_id']); $am->emit(EventTypes::WANT_MORE); echo json_encode($result);
require_once 'lib/lib_achievements.php'; if (isset($_GET['act'])) { $action = $_GET['act']; } else { $action = ''; } switch ($action) { case 'save': save_user_options($_POST); alert_set('success', 'Настройки сохранены'); header('Location:options.php'); break; case 'save_team': save_user_team($_POST['team_id'], $_POST['new_team_name']); if ($_POST['team_id'] || $_POST['new_team_name']) { $am = new AchievementsManager((int) $_SESSION['user_id']); $am->emit(EventTypes::JOINED_TEAM); } alert_set('success', 'Настройки сохранены'); header('Location:options.php'); break; case 'readonly_on': set_readonly_on(); header('Location:options.php'); break; case 'readonly_off': set_readonly_off(); header('Location:options.php'); break; default: check_logged();
$am2 = new AchievementsManager($_SESSION['user_id']); $smarty->assign('achievement', $am2->get_closest()); } $smarty->display('qa/morph_annot_thanks.tpl'); } break; case 'my': if (!isset($_GET['pool_id']) || !$_GET['pool_id']) { throw new UnexpectedValueException('Wrong pool_id'); } if ($t = get_my_answers((int) $_GET['pool_id'], 0)) { $smarty->assign('packet', $t); $smarty->display('qa/morph_annot.tpl'); } else { show_error("Не нашлось примеров."); } break; case 'pause': $smarty->assign('next_pool_id', get_next_pool($_SESSION['user_id'], (int) $_GET['pool_id'])); if (game_is_on()) { $am2 = new AchievementsManager($_SESSION['user_id']); $smarty->assign('achievement', $am2->get_closest()); } $smarty->display('qa/morph_annot_thanks.tpl'); break; default: $smarty->assign('available', get_available_tasks($_SESSION['user_id'])); $smarty->assign('complexity', array(0 => 'Сложность неизвестна', 1 => 'Очень простые задания', 2 => 'Простые задания', 3 => 'Сложные задания', 4 => 'Очень сложные задания')); $smarty->display('qa/tasks.tpl'); } log_timing();
<?php require_once '../lib/header.php'; require_once '../lib/lib_achievements.php'; $user_id = $_SESSION['user_id']; try { if (!$user_id) { throw new UnexpectedValueException(); } $badge_id = $_POST['badge_id']; $am = new AchievementsManager($user_id); $am->set_all_seen(); break; } catch (Exception $e) { $result['error'] = 1; } log_timing(true); die(json_encode($result));
<?php if (php_sapi_name() == 'cli') { set_include_path(get_include_path() . PATH_SEPARATOR . __DIR__ . PATH_SEPARATOR . __DIR__ . '/..'); require_once "lib/header.php"; require_once "lib/lib_achievements.php"; if (date("j") != 1) { die("Today is not the first day of the month, finishing.\n"); } print "Pinging dog achievement recalculation.. \n"; // get all users which registered the same day as today $users = sql_pe("SELECT user_id FROM users\n \tWHERE DATE(FROM_UNIXTIME(user_reg)) < DATE_SUB(DATE(NOW()), INTERVAL 15 DAY)\n \t ", array()); print "Month(s) (or at least 15 days) since registration passed for " . count($users) . " user(s)\n"; foreach ($users as $u) { $am = new AchievementsManager((int) $u['user_id']); $am->emit(EventTypes::MONTH_PASSED); } print "Achievements pinged, finishing\n"; }