xref: /plugin/structnotification/helper/db.php (revision 22ceb3ec42ad0c0a0966c8a1084e9b54fe097c53)
1922aade7SSzymon Olewniczak<?php
2*22ceb3ecSAnna Dabrowska
3*22ceb3ecSAnna Dabrowskause dokuwiki\Extension\Plugin;
4*22ceb3ecSAnna Dabrowska
5922aade7SSzymon Olewniczak/**
6*22ceb3ecSAnna Dabrowska * DokuWiki Plugin structnotification (Helper Component)
7922aade7SSzymon Olewniczak *
8922aade7SSzymon Olewniczak * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
9922aade7SSzymon Olewniczak * @author  Szymon Olewniczak <dokuwiki@cosmocode.de>
10922aade7SSzymon Olewniczak */
11*22ceb3ecSAnna Dabrowskaclass helper_plugin_structnotification_db extends Plugin
12922aade7SSzymon Olewniczak{
13922aade7SSzymon Olewniczak    /** @var helper_plugin_sqlite */
14922aade7SSzymon Olewniczak    protected $sqlite;
15922aade7SSzymon Olewniczak
16922aade7SSzymon Olewniczak    /**
17922aade7SSzymon Olewniczak     * helper_plugin_struct_db constructor.
18922aade7SSzymon Olewniczak     */
19922aade7SSzymon Olewniczak    public function __construct()
20922aade7SSzymon Olewniczak    {
21922aade7SSzymon Olewniczak        $this->init();
22922aade7SSzymon Olewniczak    }
23922aade7SSzymon Olewniczak
24922aade7SSzymon Olewniczak    /**
25922aade7SSzymon Olewniczak     * Initialize the database
26922aade7SSzymon Olewniczak     *
27922aade7SSzymon Olewniczak     * @throws Exception
28922aade7SSzymon Olewniczak     */
29922aade7SSzymon Olewniczak    protected function init()
30922aade7SSzymon Olewniczak    {
31922aade7SSzymon Olewniczak        $this->sqlite = plugin_load('helper', 'sqlite');
32922aade7SSzymon Olewniczak        if (!$this->sqlite) {
33922aade7SSzymon Olewniczak            if (defined('DOKU_UNITTEST')) {
34922aade7SSzymon Olewniczak                throw new \Exception('Couldn\'t load sqlite.');
35922aade7SSzymon Olewniczak            }
36922aade7SSzymon Olewniczak            return;
37922aade7SSzymon Olewniczak        }
38922aade7SSzymon Olewniczak
39922aade7SSzymon Olewniczak        if ($this->sqlite->getAdapter()->getName() != DOKU_EXT_PDO) {
40922aade7SSzymon Olewniczak            if (defined('DOKU_UNITTEST')) {
41922aade7SSzymon Olewniczak                throw new \Exception('Couldn\'t load PDO sqlite.');
42922aade7SSzymon Olewniczak            }
43922aade7SSzymon Olewniczak            $this->sqlite = null;
44922aade7SSzymon Olewniczak            return;
45922aade7SSzymon Olewniczak        }
46922aade7SSzymon Olewniczak        $this->sqlite->getAdapter()->setUseNativeAlter(true);
47922aade7SSzymon Olewniczak
48922aade7SSzymon Olewniczak        // initialize the database connection
49922aade7SSzymon Olewniczak        if (!$this->sqlite->init('structnotification', DOKU_PLUGIN . 'structnotification/db/')) {
50922aade7SSzymon Olewniczak            if (defined('DOKU_UNITTEST')) {
51922aade7SSzymon Olewniczak                throw new \Exception('Couldn\'t init sqlite.');
52922aade7SSzymon Olewniczak            }
53922aade7SSzymon Olewniczak            $this->sqlite = null;
54922aade7SSzymon Olewniczak        }
55922aade7SSzymon Olewniczak    }
56922aade7SSzymon Olewniczak
57922aade7SSzymon Olewniczak    /**
58*22ceb3ecSAnna Dabrowska     * @return helper_plugin_sqlite|null|bool
59922aade7SSzymon Olewniczak     */
60922aade7SSzymon Olewniczak    public function getDB()
61922aade7SSzymon Olewniczak    {
62922aade7SSzymon Olewniczak        global $conf;
63922aade7SSzymon Olewniczak        $len = strlen($conf['metadir']);
64922aade7SSzymon Olewniczak        if ($this->sqlite && $conf['metadir'] != substr($this->sqlite->getAdapter()->getDbFile(), 0, $len)) {
65922aade7SSzymon Olewniczak            $this->init();
66922aade7SSzymon Olewniczak        }
67922aade7SSzymon Olewniczak        if (!$this->sqlite) {
68922aade7SSzymon Olewniczak            msg($this->getLang('error sqlite missing'), -1);
69922aade7SSzymon Olewniczak            return false;
70922aade7SSzymon Olewniczak        }
71922aade7SSzymon Olewniczak        return $this->sqlite;
72922aade7SSzymon Olewniczak    }
73922aade7SSzymon Olewniczak}
74