xref: /plugin/notification/helper/db.php (revision 6cdebc539ff0654a6c1d30517990fc9fc0a7a4d7)
194db1f40SSzymon Olewniczak<?php
213ec65d3SAnna Dabrowska
3*6cdebc53SAnna Dabrowskause dokuwiki\Extension\Plugin;
4*6cdebc53SAnna Dabrowska
594db1f40SSzymon Olewniczak/**
613ec65d3SAnna Dabrowska * DokuWiki Plugin notification (Helper Component)
794db1f40SSzymon Olewniczak *
894db1f40SSzymon Olewniczak * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
994db1f40SSzymon Olewniczak * @author  Szymon Olewniczak <dokuwiki@cosmocode.de>
1094db1f40SSzymon Olewniczak */
11*6cdebc53SAnna Dabrowskaclass helper_plugin_notification_db extends Plugin
1294db1f40SSzymon Olewniczak{
1394db1f40SSzymon Olewniczak    /** @var helper_plugin_sqlite */
1494db1f40SSzymon Olewniczak    protected $sqlite;
1594db1f40SSzymon Olewniczak
1694db1f40SSzymon Olewniczak    /**
1794db1f40SSzymon Olewniczak     * helper_plugin_struct_db constructor.
1894db1f40SSzymon Olewniczak     */
1994db1f40SSzymon Olewniczak    public function __construct()
2094db1f40SSzymon Olewniczak    {
2194db1f40SSzymon Olewniczak        $this->init();
2294db1f40SSzymon Olewniczak    }
2394db1f40SSzymon Olewniczak
2494db1f40SSzymon Olewniczak    /**
2594db1f40SSzymon Olewniczak     * Initialize the database
2694db1f40SSzymon Olewniczak     *
2794db1f40SSzymon Olewniczak     * @throws Exception
2894db1f40SSzymon Olewniczak     */
2994db1f40SSzymon Olewniczak    protected function init()
3094db1f40SSzymon Olewniczak    {
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