function user_login_openid($token) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://loginza.ru/api/authinfo?token={$token}"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $arr = json_decode(curl_exec($ch), true); if (isset($arr['error_type'])) { print $arr['error_message']; return 0; } $id = trim($arr['identity']); if (!$id) { throw new Exception(); } //check if the user exists $res = sql_pe("SELECT user_id FROM `users` WHERE user_name=? LIMIT 1", array($id)); sql_begin(); $user_id = sizeof($res) ? $res[0]['user_id'] : make_new_user($id, 'notagreed', '', $id); $alias_uid = check_for_user_alias($user_id); if ($alias_uid) { $user_id = $alias_uid; } $token = remember_user($user_id, false); $row = sql_fetch_array(sql_query("SELECT user_shown_name, user_passwd, user_level FROM users WHERE user_id = {$user_id} LIMIT 1")); init_session($user_id, $row['user_shown_name'], get_user_options($user_id), get_user_permissions($user_id), $token, $row['user_level']); sql_commit(); user_award_for_signup($user_id); if ($row['user_passwd'] == 'notagreed') { $_SESSION['user_pending'] = 1; return 2; } return 1; }
} else { $all_forms = false; } $answer['answer'] = get_search_results($_GET['query'], !$all_forms); foreach ($answer['answer']['results'] as &$res) { $parts = array(); foreach (get_book_parents($res['book_id'], true) as $p) { $parts[] = $p['title']; } $res['text_fullname'] = join(': ', array_reverse($parts)); } break; case 'login': $user_id = user_check_password($_POST['login'], $_POST['password']); if ($user_id) { $token = remember_user($user_id, false, false); $answer['answer'] = array('user_id' => $user_id, 'token' => $token); } else { $answer['error'] = 'Incorrect login or password'; } break; case 'get_available_morph_tasks': $answer['answer'] = array('tasks' => get_available_tasks($user_id, true)); break; case 'get_morph_task': if (empty($_POST['pool_id']) || empty($_POST['size'])) { throw new UnexpectedValueException("Wrong args"); } // timeout is in seconds $answer['answer'] = get_annotation_packet($_POST['pool_id'], $_POST['size'], $user_id, $_POST['timeout']); break;