# Coverage for Doctrine_Connection_Sqlite

Back to coverage report

1 | <?php
2 | /*
3 | * $Id: Sqlite.php 3032 2007-10-29 19:50:16Z meus $
4 | *
5 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
6 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
7 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
8 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
9 | * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
10 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
11 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
12 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
13 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
14 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
15 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
16 | *
17 | * This software consists of voluntary contributions made by many individuals
18 | * and is licensed under the LGPL. For more information, see
19 | * <http://www.phpdoctrine.org>.
20 | */
21 |
22 | Doctrine::autoload("Doctrine_Connection_Common");
23 |
24 | /**
25 | * Doctrine_Connection_Sqlite
26 | *
27 | * @package Doctrine
28 | * @subpackage Connection
29 | * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
30 | * @author Konsta Vesterinen <kvesteri@cc.hut.fi>
31 | * @author Lukas Smith <smith@pooteeweet.org> (PEAR MDB2 library)
32 | * @version $Revision: 3032 $
33 | * @link www.phpdoctrine.org
34 | * @since 1.0
35 | */
36 | class Doctrine_Connection_Sqlite extends Doctrine_Connection_Common
37 | {
38 | /**
39 | * @var string $driverName the name of this connection driver
40 | */
41 | protected $driverName = 'Sqlite';
42 |
43 | /**
44 | * the constructor
45 | *
46 | * @param Doctrine_Manager $manager
47 | * @param PDO $pdo database handle
48 | */
49 | public function __construct(Doctrine_Manager $manager, $adapter)
50 | {
51 | $this->supported = array('sequences' => 'emulated',
52 | 'indexes' => true,
53 | 'affected_rows' => true,
54 | 'summary_functions' => true,
55 | 'order_by_text' => true,
56 | 'current_id' => 'emulated',
57 | 'limit_queries' => true,
58 | 'LOBs' => true,
59 | 'replace' => true,
60 | 'transactions' => true,
61 | 'savepoints' => false,
62 | 'sub_selects' => true,
63 | 'auto_increment' => true,
64 | 'primary_key' => true,
65 | 'result_introspection' => false, // not implemented
66 | 'prepared_statements' => 'emulated',
67 | 'identifier_quoting' => true,
68 | 'pattern_escaping' => false,
69 | );
70 | parent::__construct($manager, $adapter);
71 |
72 | if ($this->isConnected) {
73 | $this->dbh->sqliteCreateFunction('mod', array('Doctrine_Expression_Sqlite', 'modImpl'), 2);
74 | $this->dbh->sqliteCreateFunction('concat', array('Doctrine_Expression_Sqlite', 'concatImpl'));
75 | $this->dbh->sqliteCreateFunction('md5', 'md5', 1);
76 | $this->dbh->sqliteCreateFunction('now', 'time', 0);
77 | }
78 | }
79 |
80 | /**
81 | * initializes database functions missing in sqlite
82 | *
83 | * @see Doctrine_Expression
84 | * @return void
85 | */
86 | public function connect()
87 | {
88 | if ($this->isConnected) {
89 | return false;
90 | }
91 |
92 | parent::connect();
93 |
94 | $this->dbh->sqliteCreateFunction('mod', array('Doctrine_Expression_Sqlite', 'modImpl'), 2);
95 | $this->dbh->sqliteCreateFunction('concat', array('Doctrine_Expression_Sqlite', 'concatImpl'));
96 | $this->dbh->sqliteCreateFunction('md5', 'md5', 1);
97 | $this->dbh->sqliteCreateFunction('now', 'time', 0);
98 | }
99 |
100 | /**
101 | * getDatabaseFile
102 | *
103 | * @param string $name the name of the database
104 | * @return string
105 | */
106 | public function getDatabaseFile($name)
107 | {
108 | return $name . '.db';
109 | }
110 | }