diff --git a/inc/api.php b/inc/api.php index 52419445..9175ede2 100644 --- a/inc/api.php +++ b/inc/api.php @@ -45,8 +45,9 @@ class Api { ); $this->fileFields = array( - 'thumbheight' => 'tn_h', - 'thumbwidth' => 'tn_w', + 'file_id' => 'id', + 'type' => 'mime', + 'extension' => 'ext', 'height' => 'h', 'width' => 'w', 'size' => 'fsize', @@ -90,13 +91,12 @@ class Api { } private function translateFile($file, $post, &$apiPost) { + global $config; + $this->translateFields($this->fileFields, $file, $apiPost); $apiPost['filename'] = @substr($file->name, 0, strrpos($file->name, '.')); - $dotPos = strrpos($file->file, '.'); - $apiPost['ext'] = substr($file->file, $dotPos); - $apiPost['tim'] = substr($file->file, 0, $dotPos); if (isset ($file->thumb) && $file->thumb) { - $apiPost['spoiler'] = $file->thumb === 'spoiler' ? 1 : 0; + $apiPost['spoiler'] = $file->thumb === 'spoiler'; } if (isset ($file->hash) && $file->hash) { $apiPost['md5'] = base64_encode(hex2bin($file->hash)); @@ -104,6 +104,20 @@ class Api { else if (isset ($post->filehash) && $post->filehash) { $apiPost['md5'] = base64_encode(hex2bin($post->filehash)); } + + $apiPost['file_path'] = $config['uri_img'] . $file->file; + + // Pick the correct thumbnail + if (!isset ($file->thumb) || $file->thumb === 'file') { + $thumbFile = $config['file_icons']['default']; + if (isset($file->extension) && isset($config['file_icons'][$file->extension])) { + $thumbFile = $config['file_icons'][$file->extension]; + } + + $apiPost['thumb_path'] = $config['root'] . sprintf($config['file_thumb'], $thumbFile); + } else { + $apiPost['thumb_path'] = $config['uri_thumb'] . $file->thumb; + } } private function translatePost($post, $threadsPage = false) { @@ -138,21 +152,13 @@ class Api { } // Handle files - // Note: 4chan only supports one file, so only the first file is taken into account for 4chan-compatible API. if (isset($post->files) && $post->files && !$threadsPage) { - $file = $post->files[0]; - $this->translateFile($file, $post, $apiPost); - if (sizeof($post->files) > 1) { - $extra_files = array(); - foreach ($post->files as $i => $f) { - if ($i == 0) continue; + $apiPost['files'] = []; + foreach ($post->files as $f) { + $file = array(); + $this->translateFile($f, $post, $file); - $extra_file = array(); - $this->translateFile($f, $post, $extra_file); - - $extra_files[] = $extra_file; - } - $apiPost['extra_files'] = $extra_files; + $apiPost['files'][] = $file; } } diff --git a/status.php b/status.php index dcda0af3..b02a650b 100644 --- a/status.php +++ b/status.php @@ -1,13 +1,17 @@ 'overboard', 'title' => 'Overboard']; -$board_list[] = ['uri' => 'sfw', 'title' => 'SFW Overboard']; -$board_list[] = ['uri' => 'alt', 'title' => 'Alternate Overboard']; +foreach ($overboards_config as $overboard) { + $board_list[] = $overboard; +} /** * Allowed fields for the board object: * - code: The board code ('b', 'tech', ...) * - name: The board user-readable name ('Siberia', ...) - * - description: The board description ('Leftist Politically Incorrect', ...) * - sfw: Is this board sfw? * - alternate_spoilers: Does this board use the alunya spoiler? + * - posting_enabled: Can new posts be created belonging to this board? */ $boards = []; foreach ($board_list as $board) { - // Skip archives - if (endsWith($board['uri'], '_archive')) { + // Skip non-whitelisted boards + if (!in_array($board['uri'], $whitelist)) { continue; }