diff --git a/ext/shimmie_api/info.php b/ext/shimmie_api/info.php deleted file mode 100644 index 34d98675..00000000 --- a/ext/shimmie_api/info.php +++ /dev/null @@ -1,28 +0,0 @@ -Admin Warning - this exposes private data, eg IP addresses -

Developer Warning - the API is unstable; notably, private data may get hidden -

Usage: -

get_tags - List of all tags. (May contain unused tags) -

-

get_image - Get image via id. -

-

find_images - List of latest 12(?) images. -

get_user - Get user info. (Defaults to id=2 if both are empty) -

-"; -} diff --git a/ext/shimmie_api/main.php b/ext/shimmie_api/main.php deleted file mode 100644 index 9fe638ee..00000000 --- a/ext/shimmie_api/main.php +++ /dev/null @@ -1,170 +0,0 @@ -id; - assert($_id !== null); - $this->id = $_id; - $this->height = $img->height; - $this->width = $img->width; - $this->hash = $img->hash; - $this->filesize = $img->filesize; - $this->ext = $img->get_ext(); - $this->mime = $img->get_mime(); - $this->posted = strtotime($img->posted); - $this->source = $img->source; - $this->owner_id = $img->owner_id; - $this->tags = $img->get_tag_array(); - } -} - -class ShimmieApi extends Extension -{ - public function onPageRequest(PageRequestEvent $event) - { - global $page, $user; - - if ($event->page_matches("api/shimmie")) { - $page->set_mode(PageMode::DATA); - $page->set_mime(MimeType::TEXT); - - if ($event->page_matches("api/shimmie/get_tags")) { - if ($event->count_args() > 0) { - $tag = $event->get_arg(0); - } elseif (isset($_GET['tag'])) { - $tag = $_GET['tag']; - } else { - $tag = null; - } - $res = $this->api_get_tags($tag); - $page->set_data(json_encode($res)); - } elseif ($event->page_matches("api/shimmie/get_image")) { - $arg = $event->get_arg(0); - if (empty($arg) && isset($_GET['id'])) { - $arg = $_GET['id']; - } - $image = Image::by_id(int_escape($arg)); - // FIXME: handle null image - $image->get_tag_array(); // tag data isn't loaded into the object until necessary - $safe_image = new _SafeImage($image); - $page->set_data(json_encode($safe_image)); - } elseif ($event->page_matches("api/shimmie/find_images")) { - $search_terms = $event->get_search_terms(); - $page_number = $event->get_page_number(); - $page_size = $event->get_page_size(); - $images = Search::find_images(($page_number - 1) * $page_size, $page_size, $search_terms); - $safe_images = []; - foreach ($images as $image) { - $image->get_tag_array(); - $safe_images[] = new _SafeImage($image); - } - $page->set_data(json_encode($safe_images)); - } elseif ($event->page_matches("api/shimmie/get_user")) { - $query = $user->id; - $type = "id"; - if ($event->count_args() == 1) { - $query = $event->get_arg(0); - $type = "name"; - } elseif (isset($_GET['id'])) { - $query = $_GET['id']; - } elseif (isset($_GET['name'])) { - $query = $_GET['name']; - $type = "name"; - } - - $all = $this->api_get_user($type, $query); - $page->set_data(json_encode($all)); - } else { - $page->set_mode(PageMode::REDIRECT); - $page->set_redirect(make_link("ext_doc/shimmie_api")); - } - } - } - - /** - * #return string[] - */ - private function api_get_tags(?string $arg): array - { - global $database; - if (!empty($arg)) { - $all = $database->get_all("SELECT tag FROM tags WHERE tag LIKE :tag", ['tag' => $arg . "%"]); - } else { - $all = $database->get_all("SELECT tag FROM tags"); - } - $res = []; - foreach ($all as $row) { - $res[] = $row["tag"]; - } - return $res; - } - - private function api_get_user(string $type, string $query): array - { - global $database; - $all = $database->get_row( - "SELECT id, name, joindate, class FROM users WHERE $type=:query", - ['query' => $query] - ); - - if (!empty($all)) { - //FIXME?: For some weird reason, get_all seems to return twice. Unsetting second value to make things look nice.. - // - it returns data as eg array(0=>1234, 'id'=>1234, 1=>'bob', 'name'=>bob, ...); - for ($i = 0; $i < 4; $i++) { - unset($all[$i]); - } - $all['uploadcount'] = Search::count_images(["user_id=" . $all['id']]); - $all['commentcount'] = $database->get_one( - "SELECT COUNT(*) AS count FROM comments WHERE owner_id=:owner_id", - ["owner_id" => $all['id']] - ); - - if (isset($_GET['recent'])) { - $recents = $database->get_all( - "SELECT * FROM images WHERE owner_id=:owner_id ORDER BY id DESC LIMIT 0, 5", - ['owner_id' => $all['id']] - ); - - $i = 0; - foreach ($recents as $recent) { - $all['recentposts'][$i] = $recent; - unset($all['recentposts'][$i]['owner_id']); //We already know the owners id.. - unset($all['recentposts'][$i]['owner_ip']); - - for ($x = 0; $x < 14; $x++) { - unset($all['recentposts'][$i][$x]); - } - if (empty($all['recentposts'][$i]['author'])) { - unset($all['recentposts'][$i]['author']); - } - if ($all['recentposts'][$i]['notes'] > 0) { - $all['recentposts'][$i]['has_notes'] = "Y"; - } else { - $all['recentposts'][$i]['has_notes'] = "N"; - } - unset($all['recentposts'][$i]['notes']); - $i += 1; - } - } - } - return $all; - } -} diff --git a/ext/shimmie_api/test.php b/ext/shimmie_api/test.php deleted file mode 100644 index 9efa291f..00000000 --- a/ext/shimmie_api/test.php +++ /dev/null @@ -1,33 +0,0 @@ -log_in_as_user(); - $image_id = $this->post_image("tests/pbx_screenshot.jpg", "pbx"); - - // FIXME: get_page should support GET params - $this->get_page("api/shimmie/get_tags"); - $this->get_page("api/shimmie/get_tags/pb"); - //$this->get_page("api/shimmie/get_tags?tag=pb"); - $this->get_page("api/shimmie/get_image/$image_id"); - //$this->get_page("api/shimmie/get_image?id=$image_id"); - $this->get_page("api/shimmie/find_images"); - $this->get_page("api/shimmie/find_images/pbx"); - $this->get_page("api/shimmie/find_images/pbx/1"); - - $page = $this->get_page("api/shimmie/get_user/demo"); - $this->assertEquals(200, $page->code); - - //$this->get_page("api/shimmie/get_user?name=demo"); - //$this->get_page("api/shimmie/get_user?id=2"); - - // FIXME: test unspecified / bad values - // FIXME: test that json is encoded properly - } -}