cvs: docweb /include docweb_dao_common.class.php

From: Date: Mon, 07 Feb 2005 00:37:35 +0000
Subject: cvs: docweb /include docweb_dao_common.class.php
Groups: php.doc.web 
Request: Send a blank email to doc-web+get-598@lists.php.net to get a copy of this message
sean Sun Feb 6 19:37:35 2005 EDT Added files: /docweb/include docweb_dao_common.class.php Log: DAO Common class (for all of DocWeb) http://cvs.php.net/co.php/docweb/include/docweb_dao_common.class.php?r=1.1&p=1 Index: docweb/include/docweb_dao_common.class.php +++ docweb/include/docweb_dao_common.class.php <?php /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: +----------------------------------------------------------------------+ | PHP Documentation Site Source Code | +----------------------------------------------------------------------+ | Copyright (c) 2005 The PHP Group | | Copyright (c) 1997-2004 Dave Barr | +----------------------------------------------------------------------+ | This source file is subject to version 3.0 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_0.txt. | | If you did not receive a copy of the PHP license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Author: Sean Coates <sean@php.net> | +----------------------------------------------------------------------+ $Id: docweb_dao_common.class.php,v 1.1 2005/02/07 00:37:35 sean Exp $ */ define('DOCWEB_DAO_DB_FILE', SQLITE_DIR . 'docweb.sqlite'); class DocWeb_DAO_Common { /** * @var object PEAR::DB object */ var $DB; /** * Constructor - Connect to the DocWeb DB * * @param bool Check the schema & create missing tables? (set to true * from generation scripts) */ function DocWeb_DAO_Common($checkSchema = FALSE) { require_once 'PEAR.php'; require_once 'DB.php'; // PEAR::DB $this->dsn = 'sqlite:///' . DOCWEB_DAO_DB_FILE . '?mode=0666'; if (PEAR::isError($this->DB = DB::connect($this->dsn))) { echo "Error connecting to DocWeb database: ". DOCWEB_DAO_DB_FILE ."\n"; echo " * Error message: ". $this->DB->getMessage() ."\n"; die(); } if ($checkSchema) { $this->checkSchema(); } } /** * Stores a key-value pair in the meta_data table (deletes old pair, if * exists, and inserts a new pair) * * @param string $keyName name of unique key to stor * @param string $val value to associate with $keyName */ function storeMetaData($keyName, $val) { $sql = " DELETE FROM meta_data WHERE keyname = '" . $this->DB->escapeSimple($keyName) . "' "; if (PEAR::isError($this->DB->query($sql))) { die(" ** Store Meta Data (delete) query failed. (Key: '$keyName')\n"); } $sql = " INSERT INTO meta_data (keyname, val) VALUES ('" . $this->DB->escapeSimple($keyName) . "', '" . $this->DB->escapeSimple($val) . "') "; if (PEAR::isError($this->DB->query($sql))) { die(" ** Store Meta Data (insert) query failed. (Key: '$keyName', Val: '$val')\n"); } return TRUE; } /** * Logs the current time as meta_data (start time) (Helper method) * * @param string $type type to store */ function metaLogStartTime($type) { $this->storeMetaData("{$type}_start_time", time()); } /** * Logs the current time as meta_data (end time) (Helper method) * * @param string $type type to store */ function metaLogEndTime($type) { $this->storeMetaData("{$type}_end_time", time()); } /** * Checks if a given table already exists * * @param string $tableName table to check * @return bool */ function tableExists($tableName) { $sql = " SELECT COUNT(name) FROM sqlite_master WHERE type = 'table' AND name = '". sqlite_escape_string($tableName) ."' "; if (PEAR::isError($exists = $this->DB->getOne($sql))) { echo "Error checking table: $tableName.\n"; echo " * Error message: ". $r->getMessage() ."\n"; die(); } return $exists ? TRUE : FALSE; } /** * Creates the database schema * * Add any new tables. Tables should be preceeded with a call to the check * mechanism. Keep these organized. Also, leave them at the end of the file * (they'll be the most changed) */ function checkSchema() { // meta_data if (!$this->tableExists('meta_data')) { $sql = " CREATE TABLE meta_data ( keyname VARCHAR(100) PRIMARY KEY, val VARCHAR(255) ); "; if (PEAR::isError($create = $this->DB->query($sql))) { die("Query Error: ". $create->getMessage() ."\n"); } } // function_aliases if (!$this->tableExists('function_aliases')) { $sql = " CREATE TABLE function_aliases ( extension VARCHAR(100), alias VARCHAR(100), function VARCHAR(100) ) "; if (PEAR::isError($create = $this->DB->query($sql))) { die("Query Error: ". $create->getMessage() ."\n"); } } // all complete return TRUE; } } ?>

« previous php.doc.web (#598) next »