xref: /plugin/notification/helper/db.php (revision 13ec65d302db8274b868d86cb5da20fe06db33c2)
194db1f40SSzymon Olewniczak<?php
2*13ec65d3SAnna Dabrowska
394db1f40SSzymon Olewniczak/**
4*13ec65d3SAnna Dabrowska * DokuWiki Plugin notification (Helper Component)
594db1f40SSzymon Olewniczak *
694db1f40SSzymon Olewniczak * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
794db1f40SSzymon Olewniczak * @author  Szymon Olewniczak <dokuwiki@cosmocode.de>
894db1f40SSzymon Olewniczak */
994db1f40SSzymon Olewniczak
1094db1f40SSzymon Olewniczakclass helper_plugin_notification_db extends DokuWiki_Plugin
1194db1f40SSzymon Olewniczak{
1294db1f40SSzymon Olewniczak    /** @var helper_plugin_sqlite */
1394db1f40SSzymon Olewniczak    protected $sqlite;
1494db1f40SSzymon Olewniczak
1594db1f40SSzymon Olewniczak    /**
1694db1f40SSzymon Olewniczak     * helper_plugin_struct_db constructor.
1794db1f40SSzymon Olewniczak     */
1894db1f40SSzymon Olewniczak    public function __construct()
1994db1f40SSzymon Olewniczak    {
2094db1f40SSzymon Olewniczak        $this->init();
2194db1f40SSzymon Olewniczak    }
2294db1f40SSzymon Olewniczak
2394db1f40SSzymon Olewniczak    /**
2494db1f40SSzymon Olewniczak     * Initialize the database
2594db1f40SSzymon Olewniczak     *
2694db1f40SSzymon Olewniczak     * @throws Exception
2794db1f40SSzymon Olewniczak     */
2894db1f40SSzymon Olewniczak    protected function init()
2994db1f40SSzymon Olewniczak    {
3094db1f40SSzymon Olewniczak        /** @var helper_plugin_sqlite $sqlite */
3194db1f40SSzymon Olewniczak        $this->sqlite = plugin_load('helper', 'sqlite');
3294db1f40SSzymon Olewniczak        if (!$this->sqlite) {
3394db1f40SSzymon Olewniczak            if (defined('DOKU_UNITTEST')) {
3494db1f40SSzymon Olewniczak                throw new \Exception('Couldn\'t load sqlite.');
3594db1f40SSzymon Olewniczak            }
3694db1f40SSzymon Olewniczak            return;
3794db1f40SSzymon Olewniczak        }
3894db1f40SSzymon Olewniczak
3994db1f40SSzymon Olewniczak        if ($this->sqlite->getAdapter()->getName() != DOKU_EXT_PDO) {
4094db1f40SSzymon Olewniczak            if (defined('DOKU_UNITTEST')) {
4194db1f40SSzymon Olewniczak                throw new \Exception('Couldn\'t load PDO sqlite.');
4294db1f40SSzymon Olewniczak            }
4394db1f40SSzymon Olewniczak            $this->sqlite = null;
4494db1f40SSzymon Olewniczak            return;
4594db1f40SSzymon Olewniczak        }
4694db1f40SSzymon Olewniczak        $this->sqlite->getAdapter()->setUseNativeAlter(true);
4794db1f40SSzymon Olewniczak
4894db1f40SSzymon Olewniczak        // initialize the database connection
4994db1f40SSzymon Olewniczak        if (!$this->sqlite->init('notification', DOKU_PLUGIN . 'notification/db/')) {
5094db1f40SSzymon Olewniczak            if (defined('DOKU_UNITTEST')) {
5194db1f40SSzymon Olewniczak                throw new \Exception('Couldn\'t init sqlite.');
5294db1f40SSzymon Olewniczak            }
5394db1f40SSzymon Olewniczak            $this->sqlite = null;
5494db1f40SSzymon Olewniczak            return;
5594db1f40SSzymon Olewniczak        }
5694db1f40SSzymon Olewniczak    }
5794db1f40SSzymon Olewniczak
5894db1f40SSzymon Olewniczak    /**
5994db1f40SSzymon Olewniczak     * @return helper_plugin_sqlite|null
6094db1f40SSzymon Olewniczak     */
6194db1f40SSzymon Olewniczak    public function getDB()
6294db1f40SSzymon Olewniczak    {
6394db1f40SSzymon Olewniczak        global $conf;
6494db1f40SSzymon Olewniczak        $len = strlen($conf['metadir']);
6594db1f40SSzymon Olewniczak        if ($this->sqlite && $conf['metadir'] != substr($this->sqlite->getAdapter()->getDbFile(), 0, $len)) {
6694db1f40SSzymon Olewniczak            $this->init();
6794db1f40SSzymon Olewniczak        }
6894db1f40SSzymon Olewniczak        if (!$this->sqlite) {
6994db1f40SSzymon Olewniczak            msg($this->getLang('error sqlite missing'), -1);
7094db1f40SSzymon Olewniczak            return false;
7194db1f40SSzymon Olewniczak        }
7294db1f40SSzymon Olewniczak        return $this->sqlite;
7394db1f40SSzymon Olewniczak    }
7494db1f40SSzymon Olewniczak}
75