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