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