aboutsummaryrefslogtreecommitdiff
path: root/lib/classes/searchtypes/SearchType.php
blob: b4f9b685c17d5f55c26f78123312d6e8687336b5 (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
<?php
# Lifter010: TODO
/**
 * SQLSearch.php - A class-structure for alle search-objects in Stud.IP.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License as
 * published by the Free Software Foundation; either version 2 of
 * the License, or (at your option) any later version.
 *
 * @author      Rasmus <fuhse@data-quest.de>
 * @license     http://www.gnu.org/licenses/gpl-2.0.html GPL version 2
 * @category    Stud.IP
 */

/**
 * A class-structure for alle search-objects in Stud.IP.
 * It is (mainly?) used in QuickSearch to display searchresults and the
 * layout of them.
 *
 * @author Rasmus Fuhse
 *
 */
abstract class SearchType
{
    public $extendedLayout = false;


    /**
     * title of the search like "search for courses" or just "courses"
     *
     * @return string
     */
    public function getTitle()
    {
        return "";
    }

    /**
     * Returns an URL to a picture of that type. Return "" for nothing found.
     * For example: "return CourseAvatar::getAvatar($id)->getURL(Avatar::SMALL)".
     *
     * @param string $id
     *
     * @return: string URL to a picture
     */
    public function getAvatar($id)
    {
        return "";
    }

    /**
     * Returns an HTML-Tag of a picture of that type. Return "" for nothing found.
     * For example: "return CourseAvatar::getAvatar($id)->getImageTag(Avatar::SMALL)".
     *
     * @param string $id
     *
     * @return string HTML of a picture
     */
    public function getAvatarImageTag($id)
    {
        return "";
    }

    /**
     * Returns the results to a given keyword. To get the results is the
     * job of this routine and it does not even need to come from a database.
     * The results should be an array in the form
     * array (
     *   array($key, $name),
     *   array($key, $name),
     *   ...
     * )
     * where $key is an identifier like user_id and $name is a displayed text
     * that should appear to represent that ID.
     *
     * @param string $keyword
     * @param string $contextual_data
     * @param int $limit maximum number of results (default: all)
     * @param int $offset return results starting from this row (default: 0)
     *
     * @return array
     */
    public function getResults($keyword, $contextual_data = [], $limit = PHP_INT_MAX, $offset = 0)
    {
        return [["", _("Die Suchklasse, die Sie verwenden, enthält keine Methode getResults.")]];
    }

    public function __toString()
    {
        $query_id = md5(serialize($this));
        $_SESSION['QuickSearches'][$query_id]['object'] = serialize($this);
        $_SESSION['QuickSearches'][$query_id]['includePath'] = $this->includePath();
        $_SESSION['QuickSearches'][$query_id]['time'] = time();
        return $query_id;
    }

    /**
     * Returns the path to this file, so that this class can be autoloaded and is
     * always available when necessary.
     * Should be: "return __file__;"
     *
     * @return string path to this file
     */
    abstract public function includePath();
}