File: ADODB_sqlite.php

package info (click to toggle)
phpwiki 1.3.14-3
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 15,716 kB
  • ctags: 23,548
  • sloc: php: 88,295; sql: 1,476; sh: 1,378; perl: 765; makefile: 602; awk: 28
file content (67 lines) | stat: -rwxr-xr-x 2,074 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?php // -*-php-*-
rcs_id('$Id: ADODB_sqlite.php,v 1.5 2007/01/04 16:57:32 rurban Exp $');

require_once('lib/WikiDB/backend/ADODB.php');

/**
 * WikiDB layer for ADODB-sqlite, called by lib/WikiDB/ADODB.php.
 * Just to create a not existing database.
 * 
 * @author: Reini Urban
 */
class WikiDB_backend_ADODB_sqlite
extends WikiDB_backend_ADODB
{
    /**
     * Constructor.
     */
    function WikiDB_backend_ADODB_sqlite($dbparams) {
        $parsed = parseDSN($dbparams['dsn']);
        if (! file_exists($parsed['database'])) {
            // creating the empty database
            $db = $parsed['database'];
            $schema = FindFile("schemas/sqlite-initialize.sql");
            `sqlite $db < $schema`;
            `echo "CREATE USER wikiuser" | sqlite $db`;
        }
        $this->WikiDB_backend_ADODB($dbparams);
    }
    
    function _get_pageid($pagename, $create_if_missing = false) {
        $dbh = &$this->_dbh;
        $page_tbl = $this->_table_names['page_tbl'];
        $query = sprintf("SELECT id FROM $page_tbl WHERE pagename=%s",
                         $dbh->qstr($pagename));
        if (! $create_if_missing ) {
            $row = $dbh->GetRow($query);
            return $row ? $row[0] : false;
        }
	// attributes play this game.
        if ($pagename === '') return 0;

        $row = $dbh->GetRow($query);
        if (! $row ) {
            // atomic version 	
            // TODO: we have auto-increment since sqlite-2.3.4
            //   http://www.sqlite.org/faq.html#q1
            $rs = $dbh->Execute(sprintf("INSERT INTO $page_tbl"
                                        . " (id,pagename)"
              			        . " VALUES((SELECT max(id) FROM $page_tbl)+1, %s)",
                                        $dbh->qstr($pagename)));
            $id = $dbh->_insertid();
        } else {
            $id = $row[0];
        }
        return $id;
    }
};

// (c-file-style: "gnu")
// Local Variables:
// mode: php
// tab-width: 8
// c-basic-offset: 4
// c-hanging-comment-ender-p: nil
// indent-tabs-mode: nil
// End:   
?>