summaryrefslogtreecommitdiff
path: root/search.php
blob: a66fc4148ad35805c4a3831658fdc371e8b402c1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<?php
    require 'common.php';
?>
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0"/>

        <title>Manup &emsp; &emsp; &emsp; &emsp; &emsp; &emsp; &emsp;  Lonely MAN near You</title>

        <link rel="icon" type="image/png"    sizes="128x128" href="imgs/logo-goog.png"/>
        <link rel="icon" type="image/png"    sizes="32x32"   href="imgs/logo-goog32.png"/>
        <link rel="icon" type="image/png"    sizes="16x16"   href="imgs/logo-goog16.png"/>
        <!--<link rel="icon" type="image/x-icon" sizes="16x16"   href="imgs/logo-goog16.ico"/>-->

        <link rel="stylesheet" href="style/normalize.css"/>
        <link rel="stylesheet" href="style/main.css"/>
        <link rel="stylesheet" href="style/search.css"/>
        <link rel="stylesheet" href="style/man.css"/>
    </head>
    <body>
        <div id="main">
            <header>
                <a id="logo" href="/">
                    <h1>
                        <span id="logo-let">L</span>
                        <span id="logo-me">m</span>
                        <code id="logo-man">m</code>
                        <span id="logo-that">t</span>
                        <span id="logo-for">F</span>
                        <span id="logo-you">y</span>
                    </h1>
                    <div id="logo-ver_wrap">
                        <span id="logo-ver">BETA!</span>
                    </div>
                </a>
                <nav id="search_pane">
                    <form>
                        <div id="query_wrap">
                            <input  id="query" type='searcg' value='<?=$query;?>' name='query'  required/>
                            <button id="def"   type='submit' value='man'      name='action' class="btn-def" aria-hidden="true" tabindex="-1"></button>
                            <button id="mank"  type='submit' value='apropos'  name='action' title="apropos(1)">-k</button>
                            <button id="man"   type='submit' value='man'      name='action' title="Feeling lucky, punk?" class="btn-acc">
                                <div id="query_icon"></div>
                            </button>
                        </div>
                    </form>
                </nav>
                <nav id="topnav">
                    <a href="https://cabin.digital">Cabin</a>
                    <a href="#"><span id="topnav_icon"></span></a>
                    <button class="btn-acc">Man up</button>
                </nav>
            </header>
            <section id="results">
<?php
    $found_man = false;
    if($action === "man")
    {
        $arg_section = "";
        if(!empty($section))
            $arg_section = "-s ". escapeshellarg($section);

        $res = exec("man -M $manpath -T html -O fragment $arg_section "
             . escapeshellarg($query), $lines, $ret);
        if($ret === 0)
        {
            $url = "$root/?query=". urlencode($query) ."&ampsection=1&action=lmmtfy";

            echo "<nav id='lmmtfy'><div><div>";
            echo " <label for='lmmtfy_url'>LmmtFy URL</label></div>";
            echo " <textarea id='lmmtfy_url' wrap='off' rows='1' readonly>".$url."</textarea>";
            echo " <button id='lmmtfy_copy' class='jsonly'>Copy</button></div><nav>";
            echo "<article class='manpage'>". implode(PHP_EOL, $lines) ."</article>";
            echo "<script src='/js/copy.js'></script>";

            $found_man = true;
        }
    }

    if(($action === "apropos") || !$found_man)
    {
        $res = exec("man -M $manpath -k " . escapeshellarg($query), $lines, $ret);
        if($ret === 0)
        {
            $n = count($lines);
            $s = $n > 1 ? "s" : "";
            echo "<p class='hint'> Found $n result$s</p>";

            foreach($lines as $line)
            {
                $split = explode(") - ", $line);
                $full  = $split[0];
                $desc  = $split[1];

                $split = explode("(", $full);
                $name  = explode(",", $split[0])[0];
                $sect  = strtolower(explode(",", $split[1])[0]);

                $url = "$root/search.php?query=". urlencode($name) ."&section=". urlencode($sect)
                       ."&action=man";

                echo '<dl>';
                echo "  <dt><a href='".$url."'>$full)</a></dt>";
                echo "  <dd>$desc</dd>";
                echo '</dl>';
            }
        }
        else echo "<p class='hint'> No results.</p>";
    }
?>
            </section>
            <footer>
                <p class="center">
                    Copyleft <span class="copyleft">&copy;</span> 2024
                    <a href="mailto:manup@cabin.digital">dweller</a> from
                    <a href="https://cabin.digital">cabin.digital</a>.
                    All Wrongs Reserved.
                </p>
            </footer>
        </div>
    </body>
</html>