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