1*7c5fd8d6SMichael Grosse<?php 2*7c5fd8d6SMichael Grosse/** 3*7c5fd8d6SMichael Grosse * DokuWiki Plugin struct (Helper Component) 4*7c5fd8d6SMichael Grosse * 5*7c5fd8d6SMichael Grosse * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html 6*7c5fd8d6SMichael Grosse * @author Andreas Gohr, Michael Große <dokuwiki@cosmocode.de> 7*7c5fd8d6SMichael Grosse */ 8*7c5fd8d6SMichael Grosse 9*7c5fd8d6SMichael Grosse// must be run within Dokuwiki 10*7c5fd8d6SMichael Grosseif(!defined('DOKU_INC')) die(); 11*7c5fd8d6SMichael Grosse 12*7c5fd8d6SMichael Grosseclass helper_plugin_struct_imexport extends DokuWiki_Plugin { 13*7c5fd8d6SMichael Grosse 14*7c5fd8d6SMichael Grosse private $sqlite; 15*7c5fd8d6SMichael Grosse 16*7c5fd8d6SMichael Grosse public function getAllSchemasList() { 17*7c5fd8d6SMichael Grosse /** @var \helper_plugin_struct_db $helper */ 18*7c5fd8d6SMichael Grosse $helper = plugin_load('helper', 'struct_db'); 19*7c5fd8d6SMichael Grosse $this->sqlite = $helper->getDB(); 20*7c5fd8d6SMichael Grosse 21*7c5fd8d6SMichael Grosse $sql = 'SELECT DISTINCT(tbl) FROM schemas'; 22*7c5fd8d6SMichael Grosse $res = $this->sqlite->query($sql); 23*7c5fd8d6SMichael Grosse $schemas = $this->sqlite->res2arr($res); 24*7c5fd8d6SMichael Grosse $this->sqlite->res_close($res); 25*7c5fd8d6SMichael Grosse return $schemas; 26*7c5fd8d6SMichael Grosse } 27*7c5fd8d6SMichael Grosse 28*7c5fd8d6SMichael Grosse /** 29*7c5fd8d6SMichael Grosse * @param string $schema 30*7c5fd8d6SMichael Grosse * @param string[] $assignments 31*7c5fd8d6SMichael Grosse */ 32*7c5fd8d6SMichael Grosse public function replaceSchemaAssignmentPatterns($schema, $patterns) { 33*7c5fd8d6SMichael Grosse /** @var \helper_plugin_struct_db $helper */ 34*7c5fd8d6SMichael Grosse $helper = plugin_load('helper', 'struct_db', true); 35*7c5fd8d6SMichael Grosse $this->sqlite = $helper->getDB(); 36*7c5fd8d6SMichael Grosse $schema = $this->sqlite->escape_string($schema); 37*7c5fd8d6SMichael Grosse $sql = array(); 38*7c5fd8d6SMichael Grosse $sql[] = 'DELETE FROM schema_assignments_patterns WHERE tbl = \'' . $schema . '\''; 39*7c5fd8d6SMichael Grosse foreach ($patterns as $pattern) { 40*7c5fd8d6SMichael Grosse $sql[] = 'INSERT INTO schema_assignments_patterns (pattern, tbl) VALUES (\''.$this->sqlite->escape_string($pattern) .'\',\''.$schema.'\')'; 41*7c5fd8d6SMichael Grosse } 42*7c5fd8d6SMichael Grosse 43*7c5fd8d6SMichael Grosse var_dump($sql); 44*7c5fd8d6SMichael Grosse var_dump($this->sqlite->getAdapter()->getDbFile()); 45*7c5fd8d6SMichael Grosse $this->sqlite->doTransaction($sql); 46*7c5fd8d6SMichael Grosse } 47*7c5fd8d6SMichael Grosse 48*7c5fd8d6SMichael Grosse public function getSchemaAssignmentPatterns($schema) { 49*7c5fd8d6SMichael Grosse /** @var \helper_plugin_struct_db $helper */ 50*7c5fd8d6SMichael Grosse $helper = plugin_load('helper', 'struct_db', true); 51*7c5fd8d6SMichael Grosse $this->sqlite = $helper->getDB(); 52*7c5fd8d6SMichael Grosse 53*7c5fd8d6SMichael Grosse $sql = 'SELECT pattern FROM schema_assignments_patterns WHERE tbl = ?'; 54*7c5fd8d6SMichael Grosse $res = $this->sqlite->query($sql, $schema); 55*7c5fd8d6SMichael Grosse $patterns = $this->sqlite->res2arr($res); 56*7c5fd8d6SMichael Grosse $this->sqlite->res_close($res); 57*7c5fd8d6SMichael Grosse return array_map(function($elem){return $elem['pattern'];},$patterns); 58*7c5fd8d6SMichael Grosse } 59*7c5fd8d6SMichael Grosse 60*7c5fd8d6SMichael Grosse} 61