PHP Classes

File: www/used/index.php

Recommend this page to a friend!
  Classes of Engin Ypsilon   Get Used Class   www/used/index.php   Download  
File: www/used/index.php
Role: Auxiliary script
Content type: text/plain
Description: Auxiliary script
Class: Get Used Class
Parse PHP script to extract the namespaces it uses
Author: By
Last change: Typos & Script fixes, removed unused ressources
Date: 6 months ago
Size: 4,649 bytes
 

Contents

Class file image Download
<?php error_reporting(E_ALL);

/**
 * Use Many\Dev\Used temporary as a Webservice
 * using PHPs dev-server
 *
 * ~$ cd ~/bin/many/get-used/www/used
 * ~$ php -S localhost:8000
 * ~$ firefox http://localhost:8000
 *
 * # Or, set an Alias in ~/.bash_aliases
 *
 * ~$ alias phpserver='firefox http://localhost:8000; php -S localhost:8000'
 * # and run
 * ~$ cd ~/bin/many/get-used/www/used
 * ~$ phpserver
 */

/** shell_exec() extension is required */
if (!function_exists('shell_exec'))
    exit(
'PHP shell_exec() extension is required<hr /><b>'.php_ini_loaded_file().'</b>');

/** @return string valid html */
function h() {return htmlspecialchars(...func_get_args());}

/**
 * @var string $executable path, Aliases don't work here out of the box, so
 * @var string $commentOut Comment existing use Keywords out
 * @var array $getConfig Used config
 * @var array $exec collects commandos ain an array ['php', '-S', 'localhost'] = 'php -S localhost'
 * @var array $getable available $_GET-keys
 * @var array $usedOptions arg options
 */
$executable = '~/bin/many/get-used/GetUsed.php';
$commentOut = 'false' !== ($_GET['comment_out'] ?? false) ? null : 'false';
$getConfig = json_decode(shell_exec("{$executable} -c"), true)['config'] ?? [];
$exec = ["{$executable} return=json"];
$getable = $getConfig['args'] ?? [];
$usedOptions = $getConfig['options'] ?? [];

/**
 * @var string|null Set output content type, default: json
 */
$returnType = null;
if (
'terminal' === ($_GET['return'] ?? false)) {
   
$returnType = 'terminal';
   
$exec[0] .= ' return=terminal';
    unset(
$_GET['return']);
}


/**
 * @var array prepare shell command and exec
 */
if ($_GET['file'] ?? null) {
   
// allowed parameters to args
   
foreach($getable as $key) {
        if (
$getCmd = ($_GET[$key] ?? null) AND is_string($getCmd)) {
            if (
in_array($getCmd, $usedOptions))
               
$exec[] = $getCmd;
            else
$exec[] = sprintf('%s=%s', $key, $getCmd);
        }
    }

   
// run cmd
   
$out = json_decode($execRun = shell_exec(implode(' ', $exec)), true);

    if (
$execRun AND (!$out OR $returnType))
       
$out['print'] = ($returnType ? null : "unexpected content\n\n") . print_r($execRun, true);

   
// check if -option is requested
   
foreach(array_keys($usedOptions) as $opt)
        if (
$out[$opt] ?? false) {
           
$out['print'] = json_encode($out, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
            break;
        }
}


/**
 * @var mixed Link to File for VSCode
 */
$linkToFile = $_GET['file'] ?? null;
$explLink = $linkToFile ? explode(' ', $linkToFile) : $linkToFile;
if ((
$explLink[0] ?? null) AND !is_file($explLink[0]))
   
$linkToFile = null;


/**
 * @var mixed Template Engin 1999 eypsilon
 */
?><!DOCTYPE html>
<html><head><meta charset="utf-8" />
<title><?= h($linkToFile ?? 'Many\Dev\Used') ?> | local-dev-many-title</title>
<meta name="description" content="Many\Dev\Used - use Keywords generator" />
<link rel="icon" sizes="16x16" href="/assets/favicon.ico" />
<style><?= file_get_contents(dirname(__FILE__) . '/assets/style.css') ?></style>
</head><body>

<header>
    <form action="" method="get">
        <div>
            <span>file</span>
            <input type="text" name="file" value="<?= h($_GET['file'] ?? '') ?>" required />
            <label title="Remove comments from use Keywords - '// '">
                uncomment <input type="checkbox" name="comment_out" value="false" <?= 'false' === $commentOut ? 'checked' : null ?> />
            </label>
            <label title="Return Terminal Response">
                trmnal <input type="checkbox" name="return" value="terminal" <?= $returnType ? 'checked' : null ?> />
            </label>
        </div>
        <div>
            <button type="submit">Get</button>
            <?= $_GET ? '<a href="/" title="reset">?</a>' : null ?>
<?= $linkToFile ? sprintf('<a href="vscode://file//%1$s" title="vscode %1$s">%1$s</a>', $linkToFile) : null ?>
</div>
    </form>
</header>

<main>
    <pre><?= ($out['print'] ?? null) ? trim(h($out['print'])) : "\n/**\n * Nothing to use\n */" ?></pre>
    <pre><b>shell_exec(</b><?= "\n " . h(implode("\n ", explode(' ', implode(' ', $exec)))) . "\n" ?><b>)</b></pre>
    <?= ($execRun ?? null) ? '<pre>' . h(implode(' ', $exec)) . '</pre>' : null ?>
</main>

<footer>
    <h1>Many\Dev\Used</h1>
    <nav><?php foreach($usedOptions as $key => $short)
       
$navs[] = sprintf($short === ($_GET['file'] ?? null) ? '<a>%1$s</a>' : '<a href="?file=%2$s">%1$s</a>', $key, $short);
   
?><?= implode(' / ', $navs ?? []) ?></nav>
</footer>

</body></html>