*/
// must be run within Dokuwiki
if (!defined('DOKU_INC')) die();
if (!defined('DOKU_LF')) define('DOKU_LF', "\n");
if (!defined('DOKU_TAB')) define('DOKU_TAB', "\t");
if (!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
require_once(DOKU_PLUGIN.'admin.php');
class admin_plugin_sqlite extends DokuWiki_Admin_Plugin {
function getInfo() {
return confToHash(dirname(__FILE__).'plugin.info.txt');
}
function getMenuSort() { return 500; }
function forAdminOnly() { return true; }
function handle() {
}
function html() {
global $ID;
echo $this->locale_xhtml('intro');
if($_REQUEST['db'] && checkSecurityToken()){
echo '
';
echo '
';
echo ' ';
echo ' ';
echo ' ';
$form = new Doku_Form(array('class'=>'sqliteplugin'));
$form->startFieldset('SQL Command');
$form->addHidden('id',$ID);
$form->addHidden('do','admin');
$form->addHidden('page','sqlite');
$form->addHidden('db',$_REQUEST['db']);
$form->addHidden('version', $_REQUEST['version']);
$form->addElement('
');
$form->addElement('
');
$form->endFieldset();
$form->printForm();
if($_REQUEST['sql']){
/** @var $DBI helper_plugin_sqlite */
$DBI =& plugin_load('helper', 'sqlite');
if(!$DBI->init($_REQUEST['db'],'')) return;
$sql = explode(";",$_REQUEST['sql']);
foreach($sql as $s){
$s = preg_replace('!^\s*--.*$!m', '', $s);
$s = trim($s);
if(!$s) continue;
$time_start = microtime(true);
$res = $DBI->query("$s;");
if ($res === false) continue;
$result = $DBI->res2arr($res);
$time_end = microtime(true);
$time = $time_end - $time_start;
$cnt = $DBI->res2count($res);
msg($cnt.' affected rows in '.($time<0.0001 ? substr($time,0,5).substr($time,-3) : substr($time,0,7)).' seconds',1);
if(!$cnt) continue;
echo '
';
$ths = array_keys($result[0]);
echo '
';
echo '';
foreach($ths as $th){
echo ''.hsc($th).' ';
}
echo ' ';
foreach($result as $row){
echo '';
$tds = array_values($row);
foreach($tds as $td){
echo ''.hsc($td).' ';
}
echo ' ';
}
echo '
';
echo '';
}
}
echo '
';
}
}
function getTOC(){
global $conf;
global $ID;
$toc = array();
$fileextensions = array('sqlite2'=>'.sqlite','sqlite3'=>'.sqlite3');
foreach($fileextensions as $dbformat => $fileextension){
$toc[] = array(
'link' => '',
'title' => $dbformat.':',
'level' => 1,
'type' => 'ul',
);
$dbfiles = glob($conf['metadir'].'/*'.$fileextension);
if(is_array($dbfiles)) foreach($dbfiles as $file){
$db = basename($file,$fileextension);
$toc[] = array(
'link' => wl($ID,array('do'=>'admin','page'=>'sqlite','db'=>$db,'version'=>$dbformat,'sectok'=>getSecurityToken())),
'title' => $this->getLang('db').' '.$db,
'level' => 2,
'type' => 'ul',
);
}
}
return $toc;
}
}
// vim:ts=4:sw=4:et: