# Source for file Sqlite.php

Documentation is available at Sqlite.php

1. <?php
2. /*
3. * $Id: Sqlite.php 2285 2007-08-29 19:07:43Z jackbravo $
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.com>.
20. */
21. Doctrine::autoload("Doctrine_Connection_Common");
22. /**
23. * Doctrine_Connection_Sqlite
24. *
25. * @package Doctrine
26. * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
27. * @author Konsta Vesterinen <kvesteri@cc.hut.fi>
28. * @author Lukas Smith <smith@pooteeweet.org> (PEAR MDB2 library)
29. * @version $Revision: 2285 $
30. * @category Object Relational Mapping
31. * @link www.phpdoctrine.com
32. * @since 1.0
33. */
34. class Doctrine_Connection_Sqlite extends Doctrine_Connection_Common
35. {
36. /**
37. * @var string $driverName the name of this connection driver
38. */
39. protected $driverName = 'Sqlite';
40. /**
41. * the constructor
42. *
43. * @param Doctrine_Manager $manager
44. * @param PDO $pdo database handle
45. */
46. public function __construct(Doctrine_Manager $manager, $adapter)
47. {
49. $this->supported = array(
50. 'sequences' => 'emulated',
51. 'indexes' => true,
52. 'affected_rows' => true,
53. 'summary_functions' => true,
54. 'order_by_text' => true,
55. 'current_id' => 'emulated',
56. 'limit_queries' => true,
57. 'LOBs' => true,
58. 'replace' => true,
59. 'transactions' => true,
60. 'savepoints' => false,
61. 'sub_selects' => true,
62. 'auto_increment' => true,
63. 'primary_key' => true,
64. 'result_introspection' => false, // not implemented
65. 'prepared_statements' => 'emulated',
66. 'identifier_quoting' => true,
67. 'pattern_escaping' => false,
68. );
69. /**
70. $this->options['base_transaction_name'] = '___php_Doctrine_sqlite_auto_commit_off';
71. $this->options['fixed_float'] = 0;
72. $this->options['database_path'] = '';
73. $this->options['database_extension'] = '';
74. $this->options['server_version'] = '';
75. */
76. parent::__construct($manager, $adapter);
77. }
78. /**
79. * initializes database functions missing in sqlite
80. *
81. * @see Doctrine_Expression
82. * @return void
83. */
84. public function connect()
85. {
86. parent::connect();
88. $this->dbh->sqliteCreateFunction('mod', array('Doctrine_Expression_Sqlite', 'modImpl'), 2);
89. $this->dbh->sqliteCreateFunction('concat', array('Doctrine_Expression_Sqlite', 'concatImpl'));
90. $this->dbh->sqliteCreateFunction('md5', 'md5', 1);
91. $this->dbh->sqliteCreateFunction('now', 'time', 0);
92. }
93. /**
94. * getDatabaseFile
95. *
96. * @param string $name the name of the database
97. * @return string
98. */
99. public function getDatabaseFile($name)
100. {
101. return $name . '.db';
102. }
103. }