Ejemplo n.º 1
0
$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));
Ejemplo n.º 2
0
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());
Ejemplo n.º 3
0
            $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));
Ejemplo n.º 4
0
function user_award_for_signup($user_id)
{
    $am = new AchievementsManager($user_id);
    $am->emit(EventTypes::SIGNED_UP);
}
Ejemplo n.º 5
0
<?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);
Ejemplo n.º 6
0
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();
Ejemplo n.º 7
0
                $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();
Ejemplo n.º 8
0
<?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";
}