xref: /plugin/struct/helper/imexport.php (revision 7c5fd8d6756c15818709cf52cb599c5f987bbb7b)
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