function get_thread_by_post_func($xmlrpc_params) { global $db, $mybb, $position; $input = Tapatalk_Input::filterXmlInput(array('post_id' => Tapatalk_Input::INT, 'posts_per_request' => Tapatalk_Input::INT, 'return_html' => Tapatalk_Input::INT), $xmlrpc_params); $post = get_post($input['post_id']); if (!$input['posts_per_request']) { $input['posts_per_request'] = 20; } if (is_moderator($post['fid'])) { $visible = "AND (visible='0' OR visible='1')"; } else { $visible = "AND visible='1'"; } $query = $db->simple_select("posts", "COUNT(*) AS position", "pid < '{$input['post_id']}' and tid='{$post['tid']}' {$visible}"); $position = $db->fetch_field($query, 'position'); $page = floor($position / $input['posts_per_request']) + 1; $position = $position + 1; $response = get_thread_func(new xmlrpcval(array(new xmlrpcval($post['tid'], "string"), new xmlrpcval(($page - 1) * $input['posts_per_request'], 'int'), new xmlrpcval(($page - 1) * $input['posts_per_request'] + $input['posts_per_request'], 'int'), new xmlrpcval(!!$input['return_html'], 'boolean')), 'array')); return $response; }
function testApiFunction($func, $silent = true, $all = false) { global $server_param, $error; echo "Testing {$func}... "; $time = microtime(true); if (in_array($func, array('remove_attachment', 'upload_avatar', 'delete_conversation'))) { echo "Skipped.\r\n"; return; } $resp = false; $pass = 0; if (substr($func, 0, 2) == 'm_') { require_once "include/moderation.php"; } else { require_once "include/" . str_replace("_func", "", $server_param[$func]['function']) . ".php"; } try { ob_start(); $error = ""; switch ($func) { case "authorize_user": $resp = authorize_user_func(new xmlrpcval(array(new xmlrpcval("Darkimmortal", "string"), new xmlrpcval("9989", "string")), "array")); break; case "get_board_stat": $resp = get_board_stat_func(new xmlrpcval(array(), "array")); break; case "get_box": $resp = get_box_func(new xmlrpcval(array(new xmlrpcval("0", "string"), new xmlrpcval("0", "int"), new xmlrpcval("25", "int")), "array")); break; case "get_box_info": $resp = get_box_info_func(new xmlrpcval(array(), "array")); break; case "get_config": $resp = get_config_func(new xmlrpcval(array(), "array")); break; case "get_conversation": $resp = get_conversation_func(new xmlrpcval(array(new xmlrpcval("2", "string"), new xmlrpcval("0", "int"), new xmlrpcval("25", "int")), "array")); break; case "get_conversations": $resp = get_conversations_func(new xmlrpcval(array(new xmlrpcval("0", "int"), new xmlrpcval("25", "int")), "array")); break; case "m_stick_topic": $resp = m_stick_topic_func(new xmlrpcval(array(new xmlrpcval("2", "int"), new xmlrpcval("2", "int")), "array")); break; case "m_ban_user": $resp = m_ban_user_func(new xmlrpcval(array(new xmlrpcval("another user", "string"), new xmlrpcval("1", "int"), new xmlrpcval("testing ban...", "string")), "array")); break; case "get_dashboard": $resp = get_dashboard_func(new xmlrpcval(array(new xmlrpcval(false, "boolean")), "array")); break; case "get_forum": $resp = get_forum_func(new xmlrpcval(array(), "array")); break; case "upload_attach": $resp = upload_attach_func(new xmlrpcval(array(new xmlrpcval("2", "string"), new xmlrpcval("", "string"), new xmlrpcval("aaaa", "string")), "array")); break; case "create_message": $resp = create_message_func(new xmlrpcval(array(new xmlrpcval(array(new xmlrpcval("Darkimmortal ", "string"), new xmlrpcval("another user", "string")), "array"), new xmlrpcval("test pm #" . mt_rand(0, 99999), "string"), new xmlrpcval("UNIT TEST PM #" . mt_rand(0, 99999) . " [b]lol [i]test[/i][/b]", "string"), new xmlrpcval(1, "int"), new xmlrpcval("0", "string")), "array")); break; case "get_box": $resp = get_box_func(new xmlrpcval(array(new xmlrpcval("1", "string"), new xmlrpcval("0", "string"), new xmlrpcval("25", "string")), "array")); break; case "get_message": $resp = get_message_func(new xmlrpcval(array(new xmlrpcval("5", "string"), new xmlrpcval("1", "string"), new xmlrpcval(true, "boolean")), "array")); break; case "get_quote_pm": $resp = get_quote_pm_func(new xmlrpcval(array(new xmlrpcval("5", "string")), "array")); break; case "delete_message": $resp = delete_message_func(new xmlrpcval(array(new xmlrpcval("8", "string"), new xmlrpcval("1", "string")), "array")); break; case "mark_pm_unread": $resp = mark_pm_unread_func(new xmlrpcval(array(new xmlrpcval("5", "string"), new xmlrpcval("1", "string")), "array")); break; case "get_box": $resp = get_box_info_func(new xmlrpcval(array(), "array")); break; case "get_id_by_url": $resp = get_id_by_url_func(new xmlrpcval(array(new xmlrpcval("http://kiririn/mybb/showthread.php?tid=3&pid=20#pid20", "string")), "array")); break; case "get_inbox_stat": $resp = get_inbox_stat_func(new xmlrpcval(array(new xmlrpcval("0", "string"), new xmlrpcval("0", "string")), "array")); break; case "get_latest_topic": $resp = get_latest_topic_func(new xmlrpcval(array(new xmlrpcval("0", "int"), new xmlrpcval("25", "int")), "array")); break; case "get_new_topic": $resp = get_new_topic_func(new xmlrpcval(array(new xmlrpcval("0", "int"), new xmlrpcval("25", "int")), "array")); break; case "get_online_users": $resp = get_online_users_func(new xmlrpcval(array(), "array")); break; case "get_participated_topic": $resp = get_participated_topic_func(new xmlrpcval(array(new xmlrpcval("Darkimmortal", "string"), new xmlrpcval("0", "int"), new xmlrpcval("10", "int")), "array")); break; case "get_quote_conversation": $resp = get_quote_conversation_func(new xmlrpcval(array(new xmlrpcval("2", "string"), new xmlrpcval("2", "string")), "array")); break; case "get_quote_post": $resp = get_quote_post_func(new xmlrpcval(array(new xmlrpcval("2", "string")), "array")); break; case "get_raw_post": $resp = get_raw_post_func(new xmlrpcval(array(new xmlrpcval("2", "string")), "array")); break; case "get_subscribed_forum": $resp = get_subscribed_forum_func(new xmlrpcval(array(), "array")); break; case "get_subscribed_topic": $resp = get_subscribed_topic_func(new xmlrpcval(array(new xmlrpcval("0", "int"), new xmlrpcval("25", "int")), "array")); break; case "get_thread": $resp = get_thread_func(new xmlrpcval(array(new xmlrpcval("5", "string"), new xmlrpcval("0", "int"), new xmlrpcval("25", "int"), new xmlrpcval(true, "boolean")), "array")); break; case "get_thread_by_post": $resp = get_thread_by_post_func(new xmlrpcval(array(new xmlrpcval("2", "string"), new xmlrpcval("20", "int"), new xmlrpcval(true, "boolean")), "array")); break; case "get_thread_by_unread": $resp = get_thread_by_unread_func(new xmlrpcval(array(new xmlrpcval("2", "string"), new xmlrpcval("20", "int"), new xmlrpcval(true, "boolean")), "array")); break; case "get_topic": $resp = get_topic_func(new xmlrpcval(array(new xmlrpcval("2", "string"), new xmlrpcval("0", "int"), new xmlrpcval("25", "int"), new xmlrpcval("", "string")), "array")); break; case "get_unread_topic": $resp = get_unread_topic_func(new xmlrpcval(array(new xmlrpcval("0", "int"), new xmlrpcval("25", "int"), new xmlrpcval(array("not_in" => new xmlrpcval(array(), "array"), "only_in" => new xmlrpcval(array(new xmlrpcval("2", "string")), "array")), "struct")), "array")); break; case "get_user_info": $resp = get_user_info_func(new xmlrpcval(array(new xmlrpcval("Darkimmortal", "string")), "array")); break; case "get_user_reply_post": $resp = get_user_reply_post_func(new xmlrpcval(array(new xmlrpcval("Darkimmortal", "string")), "array")); break; case "get_user_topic": $resp = get_user_topic_func(new xmlrpcval(array(new xmlrpcval("Darkimmortal", "string")), "array")); break; case "invite_participant": $resp = invite_participant_func(new xmlrpcval(array(new xmlrpcval(array(new xmlrpcval("another user", "string")), "array"), new xmlrpcval("2", "string")), "array")); break; case "like_post": $resp = like_post_func(new xmlrpcval(array(new xmlrpcval("39", "string")), "array")); break; case "login": $resp = login_func(new xmlrpcval(array(new xmlrpcval("Darkimmortal", "string"), new xmlrpcval("9989", "string")), "array")); break; case "login_forum": $resp = login_forum_func(new xmlrpcval(array(new xmlrpcval("5", "int"), new xmlrpcval("1", "string")), "array")); break; case "logout_user": if (!$all) { $resp = logout_user_func(new xmlrpcval(array(), "array")); } break; case "mark_all_as_read": $resp = mark_all_as_read_func(new xmlrpcval(array(), "array")); break; case "new_conversation": $resp = new_conversation_func(new xmlrpcval(array(new xmlrpcval(array(new xmlrpcval("another user", "string")), "array"), new xmlrpcval("unit test conversation", "string"), new xmlrpcval("[b]lol [i]test[/i][/b]", "string")), "array")); break; case "new_topic": $resp = new_topic_func(new xmlrpcval(array(new xmlrpcval("2", "string"), new xmlrpcval("unit test topic #" . mt_rand(0, 99999), "string"), new xmlrpcval("[b]lol [i]test[/i][/b]", "string"), new xmlrpcval("", "string"), new xmlrpcval(array(), "array"), new xmlrpcval("", "string")), "array")); break; case "reply_conversation": $resp = reply_conversation_func(new xmlrpcval(array(new xmlrpcval("2", "string"), new xmlrpcval("UNIT TEST REPLY [b]lol [i]test[/i][/b]", "string")), "array")); break; case "reply_post": $resp = reply_post_func(new xmlrpcval(array(new xmlrpcval("2", "string"), new xmlrpcval("2", "string"), new xmlrpcval("unit test reply #" . mt_rand(0, 99999), "string"), new xmlrpcval("UNIT TEST REPLY #" . mt_rand(0, 99999) . " [b]lol [i]test[/i][/b]", "string"), new xmlrpcval(array(), "array"), new xmlrpcval("", "string"), new xmlrpcval(true, "boolean")), "array")); break; case "reply_topic": $resp = reply_topic_func(new xmlrpcval(array(new xmlrpcval("2", "string"), new xmlrpcval("2", "string"), new xmlrpcval("unit test reply #" . mt_rand(0, 99999), "string"), new xmlrpcval("UNIT TEST REPLY #" . mt_rand(0, 99999) . " [b]lol [i]test[/i][/b]", "string"), new xmlrpcval(array(), "array"), new xmlrpcval("", "string"), new xmlrpcval(true, "boolean")), "array")); break; case "report_pm": $resp = report_pm_func(new xmlrpcval(array(), "array")); break; case "report_post": $resp = report_post_func(new xmlrpcval(array(new xmlrpcval("2", "string"), new xmlrpcval("unit test report reason #" . mt_rand(0, 99999), "string")), "array")); break; case "save_raw_post": $resp = save_raw_post_func(new xmlrpcval(array(new xmlrpcval("14", "string"), new xmlrpcval("unit test edit title #" . mt_rand(0, 99999), "string"), new xmlrpcval("[color=red]unit test edit #" . mt_rand(0, 99999) . "[/color] :cool:", "string"), new xmlrpcval(true, "boolean")), "array")); break; case "search_post": $resp = search_post_func(new xmlrpcval(array(new xmlrpcval("test", "string"), new xmlrpcval("0", "int"), new xmlrpcval("25", "int"), new xmlrpcval("", "string")), "array")); break; case "search_topic": $resp = search_topic_func(new xmlrpcval(array(new xmlrpcval("test", "string"), new xmlrpcval("0", "int"), new xmlrpcval("25", "int"), new xmlrpcval("", "string")), "array")); break; case "subscribe_forum": $resp = subscribe_forum_func(new xmlrpcval(array(), "array")); break; case "subscribe_topic": $resp = subscribe_topic_func(new xmlrpcval(array(new xmlrpcval("23", "string")), "array")); break; case "unlike_post": $resp = unlike_post_func(new xmlrpcval(array(new xmlrpcval("39", "string")), "array")); break; case "unsubscribe_forum": $resp = unsubscribe_forum_func(new xmlrpcval(array(), "array")); break; case "unsubscribe_topic": $resp = unsubscribe_topic_func(new xmlrpcval(array(new xmlrpcval("23", "string")), "array")); break; default: echo "Unknown function/no unit test implemented yet."; $pass = 2; } //$ob = ob_get_clean(); if ($pass < 2) { $pass = 1; } if (strlen($error) > 0) { $pass = -1; } } catch (Exception $e) { $pass = 0; echo "*FAILED*:\r\n"; throw $e; echo "\r\n"; } if ($pass === 1) { echo "Passed! ("; echo round(microtime(true) - $time, 4); echo ")"; } if ($pass < 1 && $resp !== false && !$silent || !$all) { echo "\r\n"; var_dump($resp); //var_dump($ob); } if ($pass == -1) { echo "*FAILED*: "; } echo $error; echo "\r\n"; }