"Theme Gallery", "version" => "0.1", "author" => "Starbeamrainbowlabs", "description" => "Adds a theme gallery page and optional automatic theme updates. Contacts a remote server, where IP addresses are stored in automatic server logs for security and attack mitigation purposes.", "id" => "feature-theme-gallery", "code" => function() { global $settings; /** * @api {get} ?action=theme-gallery Display the theme gallery * @apiName ThemeGallery * @apiGroup Utility * @apiPermission Moderator */ add_action("theme-gallery", function() { global $settings; $themes_available = []; $gallery_urls = explode(" ", $settings->css_theme_gallery_index_url); foreach($gallery_urls as $url) { if(empty($url)) continue; $next_obj = json_decode(file_get_contents($url)); if($next_obj === null) { http_response_code(503); exit(page_renderer::render_main("Error - Theme Gallery - $settings->sitename", "

Error: Failed to download theme index file from " . htmlentities($url) . ".")); } foreach($next_obj as $theme) { $theme->index_url = $url; $theme->root = dirname($url) . "/{$theme->id}"; $theme->url = "{$theme->root}/theme.css"; $theme->preview_large = "{$theme->root}/preview_large.png"; $theme->preview_small = "{$theme->root}/preview_small.png"; $themes_available[] = $theme; } } usort($themes_available, function($a, $b) { return strcmp($a->name, $b->name); }); $content = "

Theme Gallery

\n"; foreach($themes_available as $theme) { $content .= "

" . str_replace("\n", "

\n

", htmlentities($theme->description)) . "

By " . htmlentities($theme->author) . " (View CSS, View Index)

"; } $content .= "
"; exit(page_renderer::render_main("Theme Gallery - $settings->sitename", "$content")); }); add_help_section("26-random-redirect", "Jumping to a random page", "

$settings->sitename has a function that can send you to a random page. To use it, click here. $settings->admindetails_name ($settings->sitename's adminstrator) may have added it to one of the menus.

"); } ]); ?>