'; $o .= '
'; $o .= '

' . t('Documentation Search') . ' - ' . htmlspecialchars($_REQUEST['search']) . '

'; $o .= '
'; $o .= '
'; $r = search_doc_files($_REQUEST['search']); if ($r) { $o .= ''; $o .= '
'; $o .= ''; } return $o; } if (argc() > 2 && argv(argc() - 2) === 'assets') { $path = ''; for ($x = 1; $x < argc(); $x++) { if (strlen($path)) { $path .= '/'; } $path .= argv($x); } $realpath = 'doc/' . $path; //Set the content-type header as appropriate $imageInfo = getimagesize($realpath); switch ($imageInfo[2]) { case IMAGETYPE_JPEG: header("Content-Type: image/jpeg"); break; case IMAGETYPE_GIF: header("Content-Type: image/gif"); break; case IMAGETYPE_PNG: header("Content-Type: image/png"); break; default: break; } header("Content-Length: " . filesize($realpath)); // dump the picture and stop the script readfile($realpath); killme(); } $heading = ''; if (argc() === 1) { $files = self::listdir('doc'); if ($files) { foreach ($files as $file) { if ((!strpos($file, '/site/')) && file_exists(str_replace('doc/', 'doc/site/', $file))) { continue; } if (strpos($file, 'README')) { continue; } if (preg_match('/\/(..|..-..)\//', $file, $matches)) { $language = $matches[1]; } else { $language = t('Unknown language'); } if ($language === substr(App::$language, 0, 2)) { $language = ''; } $link = str_replace(['doc/', '.mc'], ['help/', ''], $file); if (str_contains($link, '/global/') || str_contains($link, '/media/')) { continue; } $content .= '' . (($language) ? " [$language]" : '') . EOL; } } } else { $content = get_help_content(); } return replace_macros(Theme::get_template('help.tpl'), [ '$title' => t('$Projectname Documentation'), '$tocHeading' => t('Contents'), '$content' => $content, '$heading' => $heading, '$language' => $language ]); } public static function listdir($path) { $results = []; $handle = opendir($path); if (!$handle) { return $results; } while (false !== ($file = readdir($handle))) { if ($file === '.' || $file === '..') { continue; } if (is_dir($path . '/' . $file)) { $results = array_merge($results, self::listdir($path . '/' . $file)); } else { $results[] = $path . '/' . $file; } } closedir($handle); return $results; } }