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