17c5fd8d6SMichael Grosse<?php 27c5fd8d6SMichael Grosse/** 37c5fd8d6SMichael Grosse * DokuWiki Plugin struct (Helper Component) 47c5fd8d6SMichael Grosse * 57c5fd8d6SMichael Grosse * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html 67c5fd8d6SMichael Grosse * @author Andreas Gohr, Michael Große <dokuwiki@cosmocode.de> 77c5fd8d6SMichael Grosse */ 87c5fd8d6SMichael Grosse 97c5fd8d6SMichael Grosse// must be run within Dokuwiki 107c5fd8d6SMichael Grosseif(!defined('DOKU_INC')) die(); 117c5fd8d6SMichael Grosse 127c5fd8d6SMichael Grosseclass helper_plugin_struct_imexport extends DokuWiki_Plugin { 137c5fd8d6SMichael Grosse 147c5fd8d6SMichael Grosse private $sqlite; 157c5fd8d6SMichael Grosse 167c5fd8d6SMichael Grosse public function getAllSchemasList() { 177c5fd8d6SMichael Grosse /** @var \helper_plugin_struct_db $helper */ 187c5fd8d6SMichael Grosse $helper = plugin_load('helper', 'struct_db'); 197c5fd8d6SMichael Grosse $this->sqlite = $helper->getDB(); 207c5fd8d6SMichael Grosse 217c5fd8d6SMichael Grosse $sql = 'SELECT DISTINCT(tbl) FROM schemas'; 227c5fd8d6SMichael Grosse $res = $this->sqlite->query($sql); 237c5fd8d6SMichael Grosse $schemas = $this->sqlite->res2arr($res); 247c5fd8d6SMichael Grosse $this->sqlite->res_close($res); 257c5fd8d6SMichael Grosse return $schemas; 267c5fd8d6SMichael Grosse } 277c5fd8d6SMichael Grosse 287c5fd8d6SMichael Grosse /** 297c5fd8d6SMichael Grosse * @param string $schema 307c5fd8d6SMichael Grosse * @param string[] $assignments 317c5fd8d6SMichael Grosse */ 327c5fd8d6SMichael Grosse public function replaceSchemaAssignmentPatterns($schema, $patterns) { 337c5fd8d6SMichael Grosse /** @var \helper_plugin_struct_db $helper */ 347c5fd8d6SMichael Grosse $helper = plugin_load('helper', 'struct_db', true); 357c5fd8d6SMichael Grosse $this->sqlite = $helper->getDB(); 367c5fd8d6SMichael Grosse $schema = $this->sqlite->escape_string($schema); 377c5fd8d6SMichael Grosse $sql = array(); 38*1bd268d2SMichael Grosse $sql[] = "DELETE FROM schema_assignments_patterns WHERE tbl = '$schema'"; 39*1bd268d2SMichael Grosse $sql[] = "DELETE FROM schema_assignments WHERE tbl = '$schema'"; 407c5fd8d6SMichael Grosse foreach ($patterns as $pattern) { 41*1bd268d2SMichael Grosse $pattern = $this->sqlite->escape_string($pattern); 42*1bd268d2SMichael Grosse $sql[] = "INSERT INTO schema_assignments_patterns (pattern, tbl) VALUES ('$pattern','$schema')"; 437c5fd8d6SMichael Grosse } 447c5fd8d6SMichael Grosse 457c5fd8d6SMichael Grosse var_dump($sql); 467c5fd8d6SMichael Grosse var_dump($this->sqlite->getAdapter()->getDbFile()); 477c5fd8d6SMichael Grosse $this->sqlite->doTransaction($sql); 487c5fd8d6SMichael Grosse } 497c5fd8d6SMichael Grosse 507c5fd8d6SMichael Grosse public function getSchemaAssignmentPatterns($schema) { 517c5fd8d6SMichael Grosse /** @var \helper_plugin_struct_db $helper */ 527c5fd8d6SMichael Grosse $helper = plugin_load('helper', 'struct_db', true); 537c5fd8d6SMichael Grosse $this->sqlite = $helper->getDB(); 547c5fd8d6SMichael Grosse 557c5fd8d6SMichael Grosse $sql = 'SELECT pattern FROM schema_assignments_patterns WHERE tbl = ?'; 567c5fd8d6SMichael Grosse $res = $this->sqlite->query($sql, $schema); 577c5fd8d6SMichael Grosse $patterns = $this->sqlite->res2arr($res); 587c5fd8d6SMichael Grosse $this->sqlite->res_close($res); 597c5fd8d6SMichael Grosse return array_map(function($elem){return $elem['pattern'];},$patterns); 607c5fd8d6SMichael Grosse } 617c5fd8d6SMichael Grosse 627c5fd8d6SMichael Grosse} 63