xref: /template/strap/ComboStrap/PageRules.php (revision 37748cd8654635afbeca80942126742f0f4cc346)
1*37748cd8SNickeau<?php
2*37748cd8SNickeau
3*37748cd8SNickeaunamespace ComboStrap;
4*37748cd8SNickeau
5*37748cd8SNickeau/**
6*37748cd8SNickeau * The manager that handles the redirection metadata
7*37748cd8SNickeau *
8*37748cd8SNickeau */
9*37748cd8SNickeau
10*37748cd8SNickeauclass PageRules
11*37748cd8SNickeau{
12*37748cd8SNickeau
13*37748cd8SNickeau    // Name of the column
14*37748cd8SNickeau    // Used also in the HTML form as name
15*37748cd8SNickeau    const ID_NAME = 'ID';
16*37748cd8SNickeau    const PRIORITY_NAME = 'PRIORITY';
17*37748cd8SNickeau    const MATCHER_NAME = 'MATCHER';
18*37748cd8SNickeau    const TARGET_NAME = 'TARGET';
19*37748cd8SNickeau    const TIMESTAMP_NAME = 'TIMESTAMP';
20*37748cd8SNickeau
21*37748cd8SNickeau
22*37748cd8SNickeau
23*37748cd8SNickeau
24*37748cd8SNickeau
25*37748cd8SNickeau    /**
26*37748cd8SNickeau     * Delete Redirection
27*37748cd8SNickeau     * @param string $ruleId
28*37748cd8SNickeau     */
29*37748cd8SNickeau    function deleteRule($ruleId)
30*37748cd8SNickeau    {
31*37748cd8SNickeau
32*37748cd8SNickeau        $sqlite = Sqlite::getSqlite();
33*37748cd8SNickeau        $res = $sqlite->query('delete from PAGE_RULES where id = ?', $ruleId);
34*37748cd8SNickeau        if (!$res) {
35*37748cd8SNickeau            LogUtility::msg("Something went wrong when deleting the redirections");
36*37748cd8SNickeau        }
37*37748cd8SNickeau        $sqlite->res_close($res);
38*37748cd8SNickeau
39*37748cd8SNickeau
40*37748cd8SNickeau    }
41*37748cd8SNickeau
42*37748cd8SNickeau
43*37748cd8SNickeau    /**
44*37748cd8SNickeau     * Is Redirection of a page Id Present
45*37748cd8SNickeau     * @param integer $id
46*37748cd8SNickeau     * @return boolean
47*37748cd8SNickeau     */
48*37748cd8SNickeau    function ruleExists($id)
49*37748cd8SNickeau    {
50*37748cd8SNickeau        $id = strtolower($id);
51*37748cd8SNickeau
52*37748cd8SNickeau
53*37748cd8SNickeau        $sqlite = Sqlite::getSqlite();
54*37748cd8SNickeau        $res = $sqlite->query("SELECT count(*) FROM PAGE_RULES where ID = ?", $id);
55*37748cd8SNickeau        $exists = null;
56*37748cd8SNickeau        if ($sqlite->res2single($res) == 1) {
57*37748cd8SNickeau            $exists = true;
58*37748cd8SNickeau        } else {
59*37748cd8SNickeau            $exists = false;
60*37748cd8SNickeau        }
61*37748cd8SNickeau        $sqlite->res_close($res);
62*37748cd8SNickeau        return $exists;
63*37748cd8SNickeau
64*37748cd8SNickeau
65*37748cd8SNickeau    }
66*37748cd8SNickeau
67*37748cd8SNickeau    /**
68*37748cd8SNickeau     * Is Redirection of a page Id Present
69*37748cd8SNickeau     * @param integer $pattern
70*37748cd8SNickeau     * @return boolean
71*37748cd8SNickeau     */
72*37748cd8SNickeau    function patternExists($pattern)
73*37748cd8SNickeau    {
74*37748cd8SNickeau
75*37748cd8SNickeau
76*37748cd8SNickeau        $sqlite = Sqlite::getSqlite();
77*37748cd8SNickeau        $res = $sqlite->query("SELECT count(*) FROM PAGE_RULES where MATCHER = ?", $pattern);
78*37748cd8SNickeau        $exists = null;
79*37748cd8SNickeau        if ($sqlite->res2single($res) == 1) {
80*37748cd8SNickeau            $exists = true;
81*37748cd8SNickeau        } else {
82*37748cd8SNickeau            $exists = false;
83*37748cd8SNickeau        }
84*37748cd8SNickeau        $sqlite->res_close($res);
85*37748cd8SNickeau        return $exists;
86*37748cd8SNickeau
87*37748cd8SNickeau
88*37748cd8SNickeau    }
89*37748cd8SNickeau
90*37748cd8SNickeau
91*37748cd8SNickeau    /**
92*37748cd8SNickeau     * @param $sourcePageId
93*37748cd8SNickeau     * @param $targetPageId
94*37748cd8SNickeau     * @param $priority
95*37748cd8SNickeau     * @return int - the rule id
96*37748cd8SNickeau     */
97*37748cd8SNickeau    function addRule($sourcePageId, $targetPageId, $priority)
98*37748cd8SNickeau    {
99*37748cd8SNickeau        $currentDate = date("c");
100*37748cd8SNickeau        return $this->addRuleWithDate($sourcePageId, $targetPageId, $priority, $currentDate);
101*37748cd8SNickeau    }
102*37748cd8SNickeau
103*37748cd8SNickeau    /**
104*37748cd8SNickeau     * Add Redirection
105*37748cd8SNickeau     * This function was needed to migrate the date of the file conf store
106*37748cd8SNickeau     * You would use normally the function addRedirection
107*37748cd8SNickeau     * @param string $matcher
108*37748cd8SNickeau     * @param string $target
109*37748cd8SNickeau     * @param $priority
110*37748cd8SNickeau     * @param $creationDate
111*37748cd8SNickeau     * @return int - the last id
112*37748cd8SNickeau     */
113*37748cd8SNickeau    function addRuleWithDate($matcher, $target, $priority, $creationDate)
114*37748cd8SNickeau    {
115*37748cd8SNickeau
116*37748cd8SNickeau        $entry = array(
117*37748cd8SNickeau            'target' => $target,
118*37748cd8SNickeau            'timestamp' => $creationDate,
119*37748cd8SNickeau            'matcher' => $matcher,
120*37748cd8SNickeau            'priority' => $priority
121*37748cd8SNickeau        );
122*37748cd8SNickeau
123*37748cd8SNickeau        $sqlite = Sqlite::getSqlite();
124*37748cd8SNickeau        $res = $sqlite->storeEntry('PAGE_RULES', $entry);
125*37748cd8SNickeau        if (!$res) {
126*37748cd8SNickeau            LogUtility::msg("There was a problem during insertion");
127*37748cd8SNickeau        }
128*37748cd8SNickeau        $lastInsertId = $sqlite->getAdapter()->getDb()->lastInsertId();
129*37748cd8SNickeau        $sqlite->res_close($res);
130*37748cd8SNickeau        return $lastInsertId;
131*37748cd8SNickeau
132*37748cd8SNickeau    }
133*37748cd8SNickeau
134*37748cd8SNickeau    function updateRule($id, $matcher, $target, $priority)
135*37748cd8SNickeau    {
136*37748cd8SNickeau        $updateDate = date("c");
137*37748cd8SNickeau
138*37748cd8SNickeau        $entry = array(
139*37748cd8SNickeau            'matcher' => $matcher,
140*37748cd8SNickeau            'target' => $target,
141*37748cd8SNickeau            'priority' => $priority,
142*37748cd8SNickeau            'timestamp' => $updateDate,
143*37748cd8SNickeau            'íd' => $id
144*37748cd8SNickeau        );
145*37748cd8SNickeau
146*37748cd8SNickeau        $statement = 'update PAGE_RULES set matcher = ?, target = ?, priority = ?, timestamp = ? where id = ?';
147*37748cd8SNickeau        $res = $this->sqlite->query($statement, $entry);
148*37748cd8SNickeau        if (!$res) {
149*37748cd8SNickeau            LogUtility::msg("There was a problem during the update");
150*37748cd8SNickeau        }
151*37748cd8SNickeau        $this->sqlite->res_close($res);
152*37748cd8SNickeau
153*37748cd8SNickeau    }
154*37748cd8SNickeau
155*37748cd8SNickeau
156*37748cd8SNickeau    /**
157*37748cd8SNickeau     * Delete all rules
158*37748cd8SNickeau     * Use with caution
159*37748cd8SNickeau     */
160*37748cd8SNickeau    function deleteAll()
161*37748cd8SNickeau    {
162*37748cd8SNickeau
163*37748cd8SNickeau        $sqlite = Sqlite::getSqlite();
164*37748cd8SNickeau        $res = $sqlite->query("delete from PAGE_RULES");
165*37748cd8SNickeau        if (!$res) {
166*37748cd8SNickeau            LogUtility::msg('Errors during delete of all redirections');
167*37748cd8SNickeau        }
168*37748cd8SNickeau        $sqlite->res_close($res);
169*37748cd8SNickeau
170*37748cd8SNickeau    }
171*37748cd8SNickeau
172*37748cd8SNickeau    /**
173*37748cd8SNickeau     * Return the number of page rules
174*37748cd8SNickeau     * @return integer
175*37748cd8SNickeau     */
176*37748cd8SNickeau    function count()
177*37748cd8SNickeau    {
178*37748cd8SNickeau
179*37748cd8SNickeau        $sqlite = Sqlite::getSqlite();
180*37748cd8SNickeau        $res = $sqlite->query("select count(1) from PAGE_RULES");
181*37748cd8SNickeau        if (!$res) {
182*37748cd8SNickeau            LogUtility::msg('Errors during delete of all redirections');
183*37748cd8SNickeau        }
184*37748cd8SNickeau        $value = $sqlite->res2single($res);
185*37748cd8SNickeau        $sqlite->res_close($res);
186*37748cd8SNickeau        return $value;
187*37748cd8SNickeau
188*37748cd8SNickeau    }
189*37748cd8SNickeau
190*37748cd8SNickeau
191*37748cd8SNickeau    /**
192*37748cd8SNickeau     * @return array
193*37748cd8SNickeau     */
194*37748cd8SNickeau    function getRules()
195*37748cd8SNickeau    {
196*37748cd8SNickeau
197*37748cd8SNickeau        $sqlite = Sqlite::getSqlite();
198*37748cd8SNickeau        $res = $sqlite->query("select * from PAGE_RULES order by PRIORITY asc");
199*37748cd8SNickeau        if (!$res) {
200*37748cd8SNickeau            throw new \RuntimeException('Errors during select of all redirections');
201*37748cd8SNickeau        }
202*37748cd8SNickeau        return $sqlite->res2arr($res);
203*37748cd8SNickeau
204*37748cd8SNickeau
205*37748cd8SNickeau    }
206*37748cd8SNickeau
207*37748cd8SNickeau    public function getRule($id)
208*37748cd8SNickeau    {
209*37748cd8SNickeau        $sqlite = Sqlite::getSqlite();
210*37748cd8SNickeau        $res = $sqlite->query("SELECT * FROM PAGE_RULES where ID = ?", $id);
211*37748cd8SNickeau
212*37748cd8SNickeau        $array = $sqlite->res2row($res);
213*37748cd8SNickeau        $sqlite->res_close($res);
214*37748cd8SNickeau        return $array;
215*37748cd8SNickeau
216*37748cd8SNickeau    }
217*37748cd8SNickeau
218*37748cd8SNickeau
219*37748cd8SNickeau
220*37748cd8SNickeau
221*37748cd8SNickeau}
222