]> CyberLeo.Net >> Repos - SourceForge/phpwiki.git/blob - lib/WikiDB/backend/ADODB_sqlite.php
add an sqlite user also
[SourceForge/phpwiki.git] / lib / WikiDB / backend / ADODB_sqlite.php
1 <?php // -*-php-*-
2 rcs_id('$Id: ADODB_sqlite.php,v 1.4 2006-08-15 13:42:20 rurban Exp $');
3
4 require_once('lib/WikiDB/backend/ADODB.php');
5
6 /**
7  * WikiDB layer for ADODB-sqlite, called by lib/WikiDB/ADODB.php.
8  * Just to create a not existing database.
9  * 
10  * @author: Reini Urban
11  */
12 class WikiDB_backend_ADODB_sqlite
13 extends WikiDB_backend_ADODB
14 {
15     /**
16      * Constructor.
17      */
18     function WikiDB_backend_ADODB_sqlite($dbparams) {
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         $dbh = &$this->_dbh;
32         $page_tbl = $this->_table_names['page_tbl'];
33         $query = sprintf("SELECT id FROM $page_tbl WHERE pagename=%s",
34                          $dbh->qstr($pagename));
35         if (! $create_if_missing ) {
36             $row = $dbh->GetRow($query);
37             return $row ? $row[0] : false;
38         }
39         $row = $dbh->GetRow($query);
40         if (! $row ) {
41             // atomic version   
42             // TODO: we have auto-increment since sqlite-2.3.4
43             //   http://www.sqlite.org/faq.html#q1
44             $rs = $dbh->Execute(sprintf("INSERT INTO $page_tbl"
45                                         . " (id,pagename)"
46                                         . " VALUES((SELECT max(id) FROM $page_tbl)+1, %s)",
47                                         $dbh->qstr($pagename)));
48             $id = $dbh->_insertid();
49         } else {
50             $id = $row[0];
51         }
52         return $id;
53     }
54 };
55
56 // (c-file-style: "gnu")
57 // Local Variables:
58 // mode: php
59 // tab-width: 8
60 // c-basic-offset: 4
61 // c-hanging-comment-ender-p: nil
62 // indent-tabs-mode: nil
63 // End:   
64 ?>