setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); self::$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // ERRMODE_WARNING | ERRMODE_EXCEPTION | ERRMODE_SILENT } catch(Exception $e) { echo "Impossible d'accéder à la base de données SQLite : ".$e->getMessage(); die(); } self::$req0 = self::$pdo->prepare('INSERT INTO plugins(libelle) VALUES(:libelle)'); self::$req0->bindParam('libelle', self::$libelle, PDO::PARAM_STR); self::$req1 = self::$pdo->prepare('INSERT INTO items(plugin, code, libelle) VALUES(:plugin, :code, :libelle)'); self::$req1->bindParam('plugin', self::$plugin, PDO::PARAM_INT); self::$req1->bindParam('code', self::$code, PDO::PARAM_STR); self::$req1->bindParam('libelle', self::$libelle, PDO::PARAM_STR); self::$req2 = self::$pdo->prepare('INSERT INTO links(link, item) VALUES(:link, :item)'); self::$req2->bindParam('link', self::$link, PDO::PARAM_INT); self::$req2->bindParam('item', self::$item, PDO::PARAM_INT); self::$req3 = self::$pdo->prepare('INSERT INTO nodes(child, parent, rank) VALUES(:child, :parent, :rank)'); self::$req3->bindParam('child', self::$child, PDO::PARAM_INT); self::$req3->bindParam('parent', self::$parent, PDO::PARAM_INT); self::$req3->bindParam('rank', self::$rank, PDO::PARAM_INT); } static function removePlugin($plugin_name) { $select_clause="SELECT id FROM plugins WHERE libelle = '$plugin_name'"; // Parce que je n'ai pas réussi à faire correctement marcher le DELETE CASCADE ! self::$pdo->exec("DELETE FROM nodes WHERE parent IN (SELECT DISTINCT id FROM items WHERE plugin IN ( $select_clause ))"); self::$pdo->exec("DELETE FROM nodes WHERE child IN (SELECT DISTINCT id FROM items WHERE plugin IN ( $select_clause ))"); self::$pdo->exec("DELETE FROM links WHERE item IN (SELECT DISTINCT id FROM items WHERE plugin IN ( $select_clause ))"); self::$pdo->exec("DELETE FROM links WHERE link = 1 AND id IN ( SELECT id FROM v_items_tree WHERE parent IS NULL)"); self::$pdo->exec("DELETE FROM items WHERE plugin IN ( $select_clause)"); self::$pdo->exec("DELETE FROM plugins WHERE libelle = '$plugin_name' "); // Parce que je n'ai pas réussi à faire correctement marcher le DELETE CASCADE ! self::$pdo->exec('VACUUM'); } static function addPlugin($plugin_name) { self::$libelle = $plugin_name; self::$req0->execute(); self::$plugin = self::$pdo->lastInsertId(); } static function setCurPlugin($plugin_name) { $sql = self::$pdo->prepare("SELECT id FROM plugins WHERE libelle = '$plugin_name'"); $sql->execute(); $row = $sql->fetch(PDO::FETCH_NUM); self::$plugin = $row[0]; } } ?>