]> CyberLeo.Net >> Repos - SourceForge/phpwiki.git/blob - lib/WikiDB/backend/ADODB_sqlite.php
Reformat code
[SourceForge/phpwiki.git] / lib / WikiDB / backend / ADODB_sqlite.php
1 <?php
2
3 require_once 'lib/WikiDB/backend/ADODB.php';
4
5 /**
6  * WikiDB layer for ADODB-sqlite, called by lib/WikiDB/ADODB.php.
7  * Just to create a not existing database.
8  *
9  * @author: Reini Urban
10  */
11 class WikiDB_backend_ADODB_sqlite
12     extends WikiDB_backend_ADODB
13 {
14     /**
15      * Constructor.
16      */
17     function WikiDB_backend_ADODB_sqlite($dbparams)
18     {
19         $parsed = parseDSN($dbparams['dsn']);
20         if (!file_exists($parsed['database'])) {
21             // creating the empty database
22             $db = $parsed['database'];
23             $schema = FindFile("schemas/sqlite-initialize.sql");
24             `sqlite $db < $schema`;
25             `echo "CREATE USER wikiuser" | sqlite $db`;
26         }
27         $this->WikiDB_backend_ADODB($dbparams);
28     }
29
30     function _get_pageid($pagename, $create_if_missing = false)
31     {
32         $dbh = &$this->_dbh;
33         $page_tbl = $this->_table_names['page_tbl'];
34         $query = sprintf("SELECT id FROM $page_tbl WHERE pagename=%s",
35             $dbh->qstr($pagename));
36         if (!$create_if_missing) {
37             $row = $dbh->GetRow($query);
38             return $row ? $row[0] : false;
39         }
40         // attributes play this game.
41         if ($pagename === '') return 0;
42
43         $row = $dbh->GetRow($query);
44         if (!$row) {
45             // atomic version
46             // TODO: we have auto-increment since sqlite-2.3.4
47             //   http://www.sqlite.org/faq.html#q1
48             $rs = $dbh->Execute(sprintf("INSERT INTO $page_tbl"
49                     . " (id,pagename)"
50                     . " VALUES((SELECT max(id) FROM $page_tbl)+1, %s)",
51                 $dbh->qstr($pagename)));
52             $id = $dbh->_insertid();
53         } else {
54             $id = $row[0];
55         }
56         return $id;
57     }
58 }
59
60 ;
61
62 // Local Variables:
63 // mode: php
64 // tab-width: 8
65 // c-basic-offset: 4
66 // c-hanging-comment-ender-p: nil
67 // indent-tabs-mode: nil
68 // End: