]> CyberLeo.Net >> Repos - SourceForge/phpwiki.git/blob - lib/WikiDB/backend/ADODB_sqlite.php
Remove rcs_id
[SourceForge/phpwiki.git] / lib / WikiDB / backend / ADODB_sqlite.php
1 <?php // -*-php-*-
2 // $Id$
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         // attributes play this game.
40         if ($pagename === '') return 0;
41
42         $row = $dbh->GetRow($query);
43         if (! $row ) {
44             // atomic version 
45             // TODO: we have auto-increment since sqlite-2.3.4
46             //   http://www.sqlite.org/faq.html#q1
47             $rs = $dbh->Execute(sprintf("INSERT INTO $page_tbl"
48                                         . " (id,pagename)"
49                                         . " VALUES((SELECT max(id) FROM $page_tbl)+1, %s)",
50                                         $dbh->qstr($pagename)));
51             $id = $dbh->_insertid();
52         } else {
53             $id = $row[0];
54         }
55         return $id;
56     }
57 };
58
59 // Local Variables:
60 // mode: php
61 // tab-width: 8
62 // c-basic-offset: 4
63 // c-hanging-comment-ender-p: nil
64 // indent-tabs-mode: nil
65 // End: 
66 ?>