source: spip-zone/_plugins_/indexer/trunk/Sources/SpipDocuments.php @ 82748

Last change on this file since 82748 was 82748, checked in by fil@…, 7 years ago

pensez à moi qui n'ai pas de crochets [] pour désigner les array()

File size: 3.0 KB
Line 
1<?php
2
3namespace Spip\Indexer\Sources;
4
5use \Indexer\Sources\SourceInterface;
6
7class SpipDocuments implements SourceInterface {
8
9    /** SPIP récent ? spip_xx_liens ou spip_xx_yy */
10    private $tables_liens = true;
11
12    public function __construct() {}
13
14    public function __toString() { return get_class($this); }
15
16    /**
17     * Retourne les documents ayant certaines conditions
18     *
19     * @param mixed $start     Condition qui remplira `$column >= $start`
20     * @param mixed $end       Condition qui remplira `$column < $end`
21     * @param string $column   Colonne affectée
22     * @return \Indexer\Sources\Documents[]
23     */
24    public function getDocuments($start = 0, $end = 0, $column = 'id_element') {}
25
26    /**
27     * Retourne tous les documents (Peut provoquer des problèmes de mémoire !)
28     * @return \Indexer\Sources\Documents[]
29     */
30    public function getAllDocuments() {
31        return $this->getDocuments();
32    }
33
34
35
36    /** @param bool $bool */
37    public function setTablesLiens($bool) {
38        $this->tables_liens = $bool;
39    }
40
41    public function getObjectId($objet, $id_objet){
42        return crc32($GLOBALS['meta']['adresse_site'] . $objet) + intval($id_objet);
43    }
44
45    public function getAuthorsProperties($objet, $id_objet) {
46        if ($this->tables_liens) {
47            $auteurs = sql_allfetsel('a.nom', 'spip_auteurs AS a, spip_auteurs_liens AS al', array(
48                "al.id_objet = " . intval($id_objet),
49                "al.objet    = " . sql_quote($objet),
50                "a.id_auteur = al.id_auteur",
51            ));
52        } else {
53            $auteurs = sql_allfetsel('a.nom', 'spip_auteurs AS a, spip_auteurs_articles AS al', array(
54                "al.id_article = " . intval($id_objet),
55                "a.id_auteur = al.id_auteur",
56            ));
57        }
58        return array_map('array_shift', $auteurs);
59    }
60
61
62    public function getTagsProperties($objet, $id_objet) {
63        if ($this->tables_liens) {
64            $tags = sql_allfetsel('m.titre', 'spip_mots AS m, spip_mots_liens AS ml', array(
65                "ml.id_objet = " . intval($id_objet),
66                "ml.objet    = " . sql_quote($objet),
67                "m.id_mot = ml.id_mot",
68            ));
69        } else {
70            $tags = sql_allfetsel('m.titre', 'spip_mots AS m, spip_mots_articles AS ml', array(
71                "ml.id_article = " . intval($id_objet),
72                "m.id_mot = ml.id_mot",
73            ));
74        }
75        return array_map('array_shift', $tags);
76    }
77
78
79    public function getBounds() {
80        return array('min' => 0, 'max' => 0);
81    }
82
83    /**
84     * Crée un tableau de parts
85     *
86     * @param int $count
87     * @return array
88    **/
89    public function getParts($count) {
90        $bornes = $this->getBounds();
91        $parts = array();
92        for ($i = $bornes['min']; $i <= $bornes['max']; $i += $count) {
93            $parts[] = array(
94                'start' => $i,
95                'end'   => $i + $count
96            );
97        }
98        return $parts;
99    }
100}
Note: See TracBrowser for help on using the repository browser.