Beispiel #1
0
function processWS()
{
    if (empty($_GET['ws']) || empty($_GET['term'])) {
        return;
    }
    $term = $_GET['term'];
    $LINKSDB = new linkdb(isLoggedIn() || $GLOBALS['config']['OPEN_SHAARLI']);
    // Read links from database (and filter private links if used it not logged in).
    header('Content-Type: application/json; charset=utf-8');
    // Search in tags (case insentitive, cumulative search)
    if ($_GET['ws'] == 'tags') {
        $tags = explode(' ', str_replace(',', ' ', $term));
        $last = array_pop($tags);
        // Get the last term ("a b c d" ==> "a b c", "d")
        $addtags = '';
        if ($tags) {
            $addtags = implode(' ', $tags) . ' ';
        }
        // We will pre-pend previous tags
        $suggested = array();
        /* To speed up things, we store list of tags in session */
        if (empty($_SESSION['tags'])) {
            $_SESSION['tags'] = $LINKSDB->allTags();
        }
        foreach ($_SESSION['tags'] as $key => $value) {
            if (startsWith($key, $last, $case = false) && !in_array($key, $tags)) {
                $suggested[$addtags . $key . ' '] = 0;
            }
        }
        echo json_encode(array_keys($suggested));
        exit;
    }
    // Search a single tag (case sentitive, single tag search)
    if ($_GET['ws'] == 'singletag') {
        /* To speed up things, we store list of tags in session */
        if (empty($_SESSION['tags'])) {
            $_SESSION['tags'] = $LINKSDB->allTags();
        }
        foreach ($_SESSION['tags'] as $key => $value) {
            if (startsWith($key, $term, $case = true)) {
                $suggested[$key] = 0;
            }
        }
        echo json_encode(array_keys($suggested));
        exit;
    }
}