<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>File Source for SwamSqliteDatabase.class.inc</title>
<link rel="stylesheet" href="../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<h1>Source for file SwamSqliteDatabase.class.inc</h1>
<p>Documentation is available at <a href="../swam/_database---SwamSqliteDatabase.class.inc.html">SwamSqliteDatabase.class.inc</a></p>
<div class="src-code">
<div class="src-code"><ol><li><div class="src-line"><a name="a1"></a><span class="src-php"><?php</span></div></li>
<li><div class="src-line"><a name="a2"></a> </div></li>
<li><div class="src-line"><a name="a3"></a><span class="src-comm">/*</span></div></li>
<li><div class="src-line"><a name="a4"></a><span class="src-comm">* SWAM (Simple Web Account Manager) is a personal finance manager</span></div></li>
<li><div class="src-line"><a name="a5"></a><span class="src-comm">* written in PHP.</span></div></li>
<li><div class="src-line"><a name="a6"></a><span class="src-comm">* Copyright (C) 2004-2009 Mathieu Peltier.</span></div></li>
<li><div class="src-line"><a name="a7"></a><span class="src-comm">* Contact: mpeltier at users.sourceforge.net</span></div></li>
<li><div class="src-line"><a name="a8"></a><span class="src-comm">*</span></div></li>
<li><div class="src-line"><a name="a9"></a><span class="src-comm">* This program is free software: you can redistribute it and/or modify</span></div></li>
<li><div class="src-line"><a name="a10"></a><span class="src-comm">* it under the terms of the GNU General Public License as published by</span></div></li>
<li><div class="src-line"><a name="a11"></a><span class="src-comm">* the Free Software Foundation, either version 3 of the License, or</span></div></li>
<li><div class="src-line"><a name="a12"></a><span class="src-comm">* (at your option) any later version.</span></div></li>
<li><div class="src-line"><a name="a13"></a><span class="src-comm">*</span></div></li>
<li><div class="src-line"><a name="a14"></a><span class="src-comm">* This program is distributed in the hope that it will be useful, but</span></div></li>
<li><div class="src-line"><a name="a15"></a><span class="src-comm">* WITHOUT ANY WARRANTY; without even the implied warranty of</span></div></li>
<li><div class="src-line"><a name="a16"></a><span class="src-comm">* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span></div></li>
<li><div class="src-line"><a name="a17"></a><span class="src-comm">* General Public License for more details.</span></div></li>
<li><div class="src-line"><a name="a18"></a><span class="src-comm">*</span></div></li>
<li><div class="src-line"><a name="a19"></a><span class="src-comm">* You should have received a copy of the GNU General Public License</span></div></li>
<li><div class="src-line"><a name="a20"></a><span class="src-comm">* along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div></li>
<li><div class="src-line"><a name="a21"></a><span class="src-comm">*</span></div></li>
<li><div class="src-line"><a name="a22"></a><span class="src-comm">* Initial developer(s): Mathieu Peltier.</span></div></li>
<li><div class="src-line"><a name="a23"></a><span class="src-comm">* Contributor(s):</span></div></li>
<li><div class="src-line"><a name="a24"></a><span class="src-comm">*/</span></div></li>
<li><div class="src-line"><a name="a25"></a> </div></li>
<li><div class="src-line"><a name="a26"></a><span class="src-doc">/**</span></div></li>
<li><div class="src-line"><a name="a27"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@package</span><span class="src-doc"> swam</span></div></li>
<li><div class="src-line"><a name="a28"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@author</span><span class="src-doc"> Mathieu Peltier <hide@address.com></span></div></li>
<li><div class="src-line"><a name="a29"></a><span class="src-doc"> */</span></div></li>
<li><div class="src-line"><a name="a30"></a> </div></li>
<li><div class="src-line"><a name="a31"></a><span class="src-inc">require_once</span><span class="src-sym">(</span><span class="src-str">'pre.inc'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a32"></a> </div></li>
<li><div class="src-line"><a name="a33"></a><span class="src-doc">/**</span></div></li>
<li><div class="src-line"><a name="a34"></a><span class="src-doc"> * SQLite IDatabase implementation.</span></div></li>
<li><div class="src-line"><a name="a35"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a36"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@package</span><span class="src-doc"> swam</span></div></li>
<li><div class="src-line"><a name="a37"></a><span class="src-doc"> */</span></div></li>
<li><div class="src-line"><a name="a38"></a><span class="src-key">class </span><a href="../swam/SwamSqliteDatabase.html">SwamSqliteDatabase</a> <span class="src-key">extends </span><a href="../swam/Database.html">Database</a> <span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a39"></a> </div></li>
<li><div class="src-line"><a name="a40"></a> <span class="src-doc">/** Contains SQL create statement to use for table creation. */</span></div></li>
<li><div class="src-line"><a name="a41"></a> <span class="src-key">private </span><span class="src-var">$tables</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a42"></a> </div></li>
<li><div class="src-line"><a name="a43"></a> <span class="src-doc">/** The database file. */</span></div></li>
<li><div class="src-line"><a name="a44"></a> <span class="src-key">private </span><span class="src-var">$database_file</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a45"></a> </div></li>
<li><div class="src-line"><a name="a46"></a> <span class="src-comm">// -----------------------------</span></div></li>
<li><div class="src-line"><a name="a47"></a> <span class="src-comm">// Constructor</span></div></li>
<li><div class="src-line"><a name="a48"></a> <span class="src-comm">// -----------------------------</span></div></li>
<li><div class="src-line"><a name="a49"></a> </div></li>
<li><div class="src-line"><a name="a50"></a> <span class="src-doc">/**</span></div></li>
<li><div class="src-line"><a name="a51"></a><span class="src-doc"> * Creates a new SwamSqliteDatabase object.</span></div></li>
<li><div class="src-line"><a name="a52"></a><span class="src-doc"> */</span></div></li>
<li><div class="src-line"><a name="a53"></a> <span class="src-key">public </span><span class="src-key">function </span><a href="../swam/SwamSqliteDatabase.html#method__construct">__construct</a><span class="src-sym">(</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a54"></a> </div></li>
<li><div class="src-line"><a name="a55"></a> <span class="src-comm">// Sanity checks</span></div></li>
<li><div class="src-line"><a name="a56"></a> <span class="src-key">if </span><span class="src-sym">(</span><a href="http://www.php.net/substr">substr</a><span class="src-sym">(</span><span class="src-id"><a href="../swam/_config.inc.html#defineSWAM_DATASOURCE">SWAM_DATASOURCE</a></span><span class="src-sym">, </span><span class="src-num">0</span><span class="src-sym">, </span><span class="src-num">7</span><span class="src-sym">) </span>== <span class="src-str">'sqlite2:'</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a57"></a> <span class="src-comm">// dsn begins with sqlite2:</span></div></li>
<li><div class="src-line"><a name="a58"></a> <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">database_file </span>= <a href="http://www.php.net/substr">substr</a><span class="src-sym">(</span><span class="src-id"><a href="../swam/_config.inc.html#defineSWAM_DATASOURCE">SWAM_DATASOURCE</a></span><span class="src-sym">, </span><span class="src-num">8</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a59"></a> <span class="src-sym">} </span><span class="src-key">else </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a60"></a> <span class="src-comm">// dsn begins with sqlite:</span></div></li>
<li><div class="src-line"><a name="a61"></a> <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">database_file </span>= <a href="http://www.php.net/substr">substr</a><span class="src-sym">(</span><span class="src-id"><a href="../swam/_config.inc.html#defineSWAM_DATASOURCE">SWAM_DATASOURCE</a></span><span class="src-sym">, </span><span class="src-num">7</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a62"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a63"></a> <span class="src-key">if </span><span class="src-sym">(</span><a href="http://www.php.net/is_file">is_file</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">database_file</span><span class="src-sym">)) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a64"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-sym">!</span><a href="http://www.php.net/is_readable">is_readable</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">database_file</span><span class="src-sym">)) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a65"></a> throw <span class="src-key">new </span><span class="src-id"><a href="../swam/DatabaseException.html">DatabaseException</a></span><span class="src-sym">(</span><span class="src-id"><a href="../swam/Utils.html">Utils</a></span><span class="src-sym">::</span><a href="../swam/Utils.html#methodsafe_sprintf">safe_sprintf</a><span class="src-sym">(</span><a href="http://www.php.net/_">_</a><span class="src-sym">(</span><span class="src-str">'Cannot access to the database file %s.'</span><span class="src-sym">)</span><span class="src-sym">, </span><span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">database_file</span><span class="src-sym">))</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a66"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a67"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-sym">!</span><a href="http://www.php.net/is_writable">is_writable</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">database_file</span><span class="src-sym">)) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a68"></a> throw <span class="src-key">new </span><span class="src-id"><a href="../swam/DatabaseException.html">DatabaseException</a></span><span class="src-sym">(</span><span class="src-id"><a href="../swam/Utils.html">Utils</a></span><span class="src-sym">::</span><a href="../swam/Utils.html#methodsafe_sprintf">safe_sprintf</a><span class="src-sym">(</span><a href="http://www.php.net/_">_</a><span class="src-sym">(</span><span class="src-str">'Cannot write into the database file %s.'</span><span class="src-sym">)</span><span class="src-sym">, </span><span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">database_file</span><span class="src-sym">))</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a69"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a70"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a71"></a> </div></li>
<li><div class="src-line"><a name="a72"></a> <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">tables </span>= <span class="src-key">array</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a73"></a> </div></li>
<li><div class="src-line"><a name="a74"></a> <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">tables</span><span class="src-sym">[</span><span class="src-str">'t_user'</span><span class="src-sym">] </span>= <span class="src-str">'CREATE TABLE t_user(</span></div></li>
<li><div class="src-line"><a name="a75"></a><span class="src-str"> user_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,</span></div></li>
<li><div class="src-line"><a name="a76"></a><span class="src-str"> first_name VARCHAR(' </span>. <span class="src-id"><a href="../swam/User.html">User</a></span><span class="src-sym">::</span><span class="src-id">FIRST_NAME_MAX_LENGTH </span>. <span class="src-str">'),</span></div></li>
<li><div class="src-line"><a name="a77"></a><span class="src-str"> last_name VARCHAR(' </span>. <span class="src-id"><a href="../swam/User.html">User</a></span><span class="src-sym">::</span><span class="src-id">LAST_NAME_MAX_LENGTH </span>. <span class="src-str">'),</span></div></li>
<li><div class="src-line"><a name="a78"></a><span class="src-str"> email VARCHAR(' </span>. <span class="src-id"><a href="../swam/User.html">User</a></span><span class="src-sym">::</span><span class="src-id">EMAIL_MAX_LENGTH </span>. <span class="src-str">') NOT NULL,</span></div></li>
<li><div class="src-line"><a name="a79"></a><span class="src-str"> login VARCHAR(' </span>. <span class="src-id"><a href="../swam/User.html">User</a></span><span class="src-sym">::</span><span class="src-id">LOGIN_MAX_LENGTH </span>. <span class="src-str">') NOT NULL UNIQUE,</span></div></li>
<li><div class="src-line"><a name="a80"></a><span class="src-str"> crypted_password VARCHAR(' </span>. <span class="src-id"><a href="../swam/User.html">User</a></span><span class="src-sym">::</span><span class="src-id">PASSWORD_MAX_LENGTH </span>. <span class="src-str">') NOT NULL,</span></div></li>
<li><div class="src-line"><a name="a81"></a><span class="src-str"> show_closed_accounts DEFAULT 0,</span></div></li>
<li><div class="src-line"><a name="a82"></a><span class="src-str"> is_valid BOOLEAN DEFAULT 0,</span></div></li>
<li><div class="src-line"><a name="a83"></a><span class="src-str"> confirmation_hash VARCHAR(50) NOT NULL</span></div></li>
<li><div class="src-line"><a name="a84"></a><span class="src-str"> )'</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a85"></a> </div></li>
<li><div class="src-line"><a name="a86"></a> <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">tables</span><span class="src-sym">[</span><span class="src-str">'t_account'</span><span class="src-sym">] </span>= <span class="src-str">'CREATE TABLE t_account(</span></div></li>
<li><div class="src-line"><a name="a87"></a><span class="src-str"> account_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,</span></div></li>
<li><div class="src-line"><a name="a88"></a><span class="src-str"> owner_id INTEGER CONSTRAINT fk_owner_id REFERENCES t_user(user_id) ON UPDATE CASCADE ON DELETE CASCADE,</span></div></li>
<li><div class="src-line"><a name="a89"></a><span class="src-str"> name VARCHAR(' </span>. <span class="src-id"><a href="../swam/Account.html">Account</a></span><span class="src-sym">::</span><span class="src-id">NAME_MAX_LENGTH </span>. <span class="src-str">') NOT NULL,</span></div></li>
<li><div class="src-line"><a name="a90"></a><span class="src-str"> bank_name VARCHAR(' </span>. <span class="src-id"><a href="../swam/Account.html">Account</a></span><span class="src-sym">::</span><span class="src-id">BANK_NAME_MAX_LENGTH </span>. <span class="src-str">') NOT NULL,</span></div></li>
<li><div class="src-line"><a name="a91"></a><span class="src-str"> currency_code VARCHAR(3) NOT NULL,</span></div></li>
<li><div class="src-line"><a name="a92"></a><span class="src-str"> comment VARCHAR(' </span>. <span class="src-id"><a href="../swam/Account.html">Account</a></span><span class="src-sym">::</span><span class="src-id">COMMENT_MAX_LENGTH </span>. <span class="src-str">'),</span></div></li>
<li><div class="src-line"><a name="a93"></a><span class="src-str"> is_opened BOOLEAN DEFAULT 0,</span></div></li>
<li><div class="src-line"><a name="a94"></a><span class="src-str"> UNIQUE(name, bank_name)</span></div></li>
<li><div class="src-line"><a name="a95"></a><span class="src-str"> )'</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a96"></a> </div></li>
<li><div class="src-line"><a name="a97"></a> <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">tables</span><span class="src-sym">[</span><span class="src-str">'t_transaction'</span><span class="src-sym">] </span>= <span class="src-str">'CREATE TABLE t_transaction(</span></div></li>
<li><div class="src-line"><a name="a98"></a><span class="src-str"> transaction_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,</span></div></li>
<li><div class="src-line"><a name="a99"></a><span class="src-str"> name VARCHAR(' </span>. <span class="src-id"><a href="../swam/Transaction.html">Transaction</a></span><span class="src-sym">::</span><span class="src-id">NAME_MAX_LENGTH </span>. <span class="src-str">'),</span></div></li>
<li><div class="src-line"><a name="a100"></a><span class="src-str"> account_id INTEGER NOT NULL CONSTRAINT fk_account_id REFERENCES t_account(account_id) ON UPDATE CASCADE ON DELETE CASCADE,</span></div></li>
<li><div class="src-line"><a name="a101"></a><span class="src-str"> amount DECIMAL(10, 2),</span></div></li>
<li><div class="src-line"><a name="a102"></a><span class="src-str"> is_debit BOOLEAN DEFAULT 1,</span></div></li>
<li><div class="src-line"><a name="a103"></a><span class="src-str"> mean_of_payment_code VARCHAR(20),</span></div></li>
<li><div class="src-line"><a name="a104"></a><span class="src-str"> date DATE,</span></div></li>
<li><div class="src-line"><a name="a105"></a><span class="src-str"> comment VARCHAR(' </span>. <span class="src-id"><a href="../swam/Transaction.html">Transaction</a></span><span class="src-sym">::</span><span class="src-id">COMMENT_MAX_LENGTH </span>. <span class="src-str">'),</span></div></li>
<li><div class="src-line"><a name="a106"></a><span class="src-str"> is_valid BOOLEAN DEFAULT 0</span></div></li>
<li><div class="src-line"><a name="a107"></a><span class="src-str"> )'</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a108"></a> </div></li>
<li><div class="src-line"><a name="a109"></a> <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">tables</span><span class="src-sym">[</span><span class="src-str">'t_transaction_template'</span><span class="src-sym">] </span>= <span class="src-str">'CREATE TABLE t_transaction_template(</span></div></li>
<li><div class="src-line"><a name="a110"></a><span class="src-str"> transaction_template_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,</span></div></li>
<li><div class="src-line"><a name="a111"></a><span class="src-str"> name VARCHAR(' </span>. <span class="src-id"><a href="../swam/Transaction.html">Transaction</a></span><span class="src-sym">::</span><span class="src-id">NAME_MAX_LENGTH </span>. <span class="src-str">'),</span></div></li>
<li><div class="src-line"><a name="a112"></a><span class="src-str"> account_id INTEGER NOT NULL CONSTRAINT fk_account_id REFERENCES t_account(account_id) ON UPDATE CASCADE ON DELETE CASCADE,</span></div></li>
<li><div class="src-line"><a name="a113"></a><span class="src-str"> amount DECIMAL(10, 2),</span></div></li>
<li><div class="src-line"><a name="a114"></a><span class="src-str"> is_debit BOOLEAN DEFAULT 1,</span></div></li>
<li><div class="src-line"><a name="a115"></a><span class="src-str"> mean_of_payment_code VARCHAR(20),</span></div></li>
<li><div class="src-line"><a name="a116"></a><span class="src-str"> date INTEGER,</span></div></li>
<li><div class="src-line"><a name="a117"></a><span class="src-str"> comment VARCHAR(' </span>. <span class="src-id"><a href="../swam/Transaction.html">Transaction</a></span><span class="src-sym">::</span><span class="src-id">COMMENT_MAX_LENGTH </span>. <span class="src-str">'),</span></div></li>
<li><div class="src-line"><a name="a118"></a><span class="src-str"> is_valid BOOLEAN DEFAULT 0</span></div></li>
<li><div class="src-line"><a name="a119"></a><span class="src-str"> )'</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a120"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a121"></a> </div></li>
<li><div class="src-line"><a name="a122"></a> <span class="src-doc">/**</span></div></li>
<li><div class="src-line"><a name="a123"></a><span class="src-doc"> * Gets the database file.</span></div></li>
<li><div class="src-line"><a name="a124"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a125"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">string </span></div></li>
<li><div class="src-line"><a name="a126"></a><span class="src-doc"> */</span></div></li>
<li><div class="src-line"><a name="a127"></a> <span class="src-key">public </span><span class="src-key">function </span><a href="../swam/SwamSqliteDatabase.html#methodget_database_file">get_database_file</a><span class="src-sym">(</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a128"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">database_file</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a129"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a130"></a> </div></li>
<li><div class="src-line"><a name="a131"></a> <span class="src-doc">/**</span></div></li>
<li><div class="src-line"><a name="a132"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@see</span><span class="src-doc"> Database::get_create_statement($table)</span></div></li>
<li><div class="src-line"><a name="a133"></a><span class="src-doc"> */</span></div></li>
<li><div class="src-line"><a name="a134"></a> <span class="src-key">protected </span><span class="src-key">function </span><a href="../swam/SwamSqliteDatabase.html#methodget_create_statement">get_create_statement</a><span class="src-sym">(</span><span class="src-var">$table</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a135"></a> <span class="src-key">return </span><span class="src-id"><a href="../swam/Utils.html">Utils</a></span><span class="src-sym">::</span><a href="../swam/Utils.html#methodget_string">get_string</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">tables</span><span class="src-sym">, </span><span class="src-var">$table</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a136"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a137"></a> </div></li>
<li><div class="src-line"><a name="a138"></a> <span class="src-doc">/**</span></div></li>
<li><div class="src-line"><a name="a139"></a><span class="src-doc"> * Makes sure that database file permissions are 0600.</span></div></li>
<li><div class="src-line"><a name="a140"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a141"></a><span class="src-doc"> * TODO: is there any PDO driver option for doing this? Another</span></div></li>
<li><div class="src-line"><a name="a142"></a><span class="src-doc"> * solution would be to use the SQLiteDatabase constructor while</span></div></li>
<li><div class="src-line"><a name="a143"></a><span class="src-doc"> * setting the mode parameter, but this feature is currently not</span></div></li>
<li><div class="src-line"><a name="a144"></a><span class="src-doc"> * working, as reported at:</span></div></li>
<li><div class="src-line"><a name="a145"></a><span class="src-doc"> * http://www.php.net/manual/en/function.sqlite-open.php</span></div></li>
<li><div class="src-line"><a name="a146"></a><span class="src-doc"> */</span></div></li>
<li><div class="src-line"><a name="a147"></a> <span class="src-key">private </span><span class="src-key">function </span><span class="src-id">set_database_file_permissions</span><span class="src-sym">(</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a148"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-sym">!</span><span class="src-sym">@</span><a href="http://www.php.net/chmod">chmod</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">database_file</span><span class="src-sym">, </span><span class="src-num">0600</span><span class="src-sym">)) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a149"></a> throw <span class="src-key">new </span><span class="src-id"><a href="../swam/DatabaseException.html">DatabaseException</a></span><span class="src-sym">(</span><span class="src-id"><a href="../swam/Utils.html">Utils</a></span><span class="src-sym">::</span><a href="../swam/Utils.html#methodsafe_sprintf">safe_sprintf</a><span class="src-sym">(</span><a href="http://www.php.net/_">_</a><span class="src-sym">(</span><span class="src-str">'Failed to set database file permissions %s.'</span><span class="src-sym">)</span><span class="src-sym">, </span><span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">database_file</span><span class="src-sym">))</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a150"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a151"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a152"></a> </div></li>
<li><div class="src-line"><a name="a153"></a> <span class="src-doc">/**</span></div></li>
<li><div class="src-line"><a name="a154"></a><span class="src-doc"> * As SQLite does not support foreign keys - the REFERENCES</span></div></li>
<li><div class="src-line"><a name="a155"></a><span class="src-doc"> * contraints are parsed but ignored - FOREIGN KEY and ON DELETE</span></div></li>
<li><div class="src-line"><a name="a156"></a><span class="src-doc"> * CASCADE constraints are simulated using triggers obtained from</span></div></li>
<li><div class="src-line"><a name="a157"></a><span class="src-doc"> * online generator:</span></div></li>
<li><div class="src-line"><a name="a158"></a><span class="src-doc"> * http://www.rcs-comp.com/site/index.php/view/Utilities-SQLite_foreign_key_trigger_generator.</span></div></li>
<li><div class="src-line"><a name="a159"></a><span class="src-doc"> * See also: http://www.sqlite.org/cvstrac/wiki?p=ForeignKeyTriggers</span></div></li>
<li><div class="src-line"><a name="a160"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a161"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@see</span><span class="src-doc"> Database::initialize($create_demo_user)</span></div></li>
<li><div class="src-line"><a name="a162"></a><span class="src-doc"> */</span></div></li>
<li><div class="src-line"><a name="a163"></a> <span class="src-key">public </span><span class="src-key">function </span><a href="../swam/SwamSqliteDatabase.html#methodinitialize">initialize</a><span class="src-sym">(</span><span class="src-var">$create_demo_user</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a164"></a> </div></li>
<li><div class="src-line"><a name="a165"></a> <span class="src-var">$dbh </span>= <span class="src-id">parent</span><span class="src-sym">::</span><a href="../swam/Database.html#methodget_connection">get_connection</a><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a166"></a> <span class="src-var">$dbh</span><span class="src-sym">-></span><span class="src-id">exec</span><span class="src-sym">(</span><a href="http://www.php.net/sprintf">sprintf</a><span class="src-sym">(</span><span class="src-str">"PRAGMA encoding = '%s'"</span><span class="src-sym">, </span><span class="src-id"><a href="../swam/_constants.inc.html#defineSWAM_CHARSET">SWAM_CHARSET</a></span><span class="src-sym">))</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a167"></a> </div></li>
<li><div class="src-line"><a name="a168"></a> <span class="src-id">parent</span><span class="src-sym">::</span><a href="../swam/Database.html#methodinitialize">initialize</a><span class="src-sym">(</span><span class="src-var">$create_demo_user</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a169"></a> </div></li>
<li><div class="src-line"><a name="a170"></a> <span class="src-comm">/* t_account table */</span></div></li>
<li><div class="src-line"><a name="a171"></a> </div></li>
<li><div class="src-line"><a name="a172"></a> <span class="src-comm">// Foreign key preventing insert</span></div></li>
<li><div class="src-line"><a name="a173"></a> try <span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a174"></a> <span class="src-var">$dbh</span><span class="src-sym">-></span><span class="src-id">exec</span><span class="src-sym">(</span><span class="src-str">'DROP TRIGGER fki_t_account_owner_id_t_user_user_id'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a175"></a> <span class="src-sym">} </span>catch <span class="src-sym">(</span><span class="src-id">PDOException </span><span class="src-var">$ignore</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a176"></a> <span class="src-comm">// TODO: rethrow if exception is not "Trigger not found"</span></div></li>
<li><div class="src-line"><a name="a177"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a178"></a> <span class="src-var">$dbh</span><span class="src-sym">-></span><span class="src-id">exec</span><span class="src-sym">(</span><span class="src-str">"CREATE TRIGGER fki_t_account_owner_id_t_user_user_id</span></div></li>
<li><div class="src-line"><a name="a179"></a><span class="src-str">BEFORE INSERT ON [t_account]</span></div></li>
<li><div class="src-line"><a name="a180"></a><span class="src-str">FOR EACH ROW BEGIN</span></div></li>
<li><div class="src-line"><a name="a181"></a><span class="src-str"> SELECT RAISE(ROLLBACK, 'insert on table \"t_account\" violates foreign key constraint \"fki_t_account_owner_id_t_user_user_id\"')</span></div></li>
<li><div class="src-line"><a name="a182"></a><span class="src-str"> WHERE NEW.owner_id IS NOT NULL AND (SELECT user_id FROM t_user WHERE user_id = NEW.owner_id) IS NULL;</span></div></li>
<li><div class="src-line"><a name="a183"></a><span class="src-str">END;"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a184"></a> </div></li>
<li><div class="src-line"><a name="a185"></a> <span class="src-comm">// Foreign key preventing update</span></div></li>
<li><div class="src-line"><a name="a186"></a> try <span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a187"></a> <span class="src-var">$dbh</span><span class="src-sym">-></span><span class="src-id">exec</span><span class="src-sym">(</span><span class="src-str">'DROP TRIGGER fku_t_account_owner_id_t_user_user_id'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a188"></a> <span class="src-sym">} </span>catch <span class="src-sym">(</span><span class="src-id">PDOException </span><span class="src-var">$ignore</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a189"></a> <span class="src-comm">// TODO: rethrow if exception is not "Trigger not found"</span></div></li>
<li><div class="src-line"><a name="a190"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a191"></a> <span class="src-var">$dbh</span><span class="src-sym">-></span><span class="src-id">exec</span><span class="src-sym">(</span><span class="src-str">"CREATE TRIGGER fku_t_account_owner_id_t_user_user_id</span></div></li>
<li><div class="src-line"><a name="a192"></a><span class="src-str">BEFORE UPDATE ON [t_account]</span></div></li>
<li><div class="src-line"><a name="a193"></a><span class="src-str">FOR EACH ROW BEGIN</span></div></li>
<li><div class="src-line"><a name="a194"></a><span class="src-str"> SELECT RAISE(ROLLBACK, 'update on table \"t_account\" violates foreign key constraint \"fku_t_account_owner_id_t_user_user_id\"')</span></div></li>
<li><div class="src-line"><a name="a195"></a><span class="src-str"> WHERE NEW.owner_id IS NOT NULL AND (SELECT user_id FROM t_user WHERE user_id = NEW.owner_id) IS NULL;</span></div></li>
<li><div class="src-line"><a name="a196"></a><span class="src-str">END;"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a197"></a> </div></li>
<li><div class="src-line"><a name="a198"></a> <span class="src-comm">// Cascading delete</span></div></li>
<li><div class="src-line"><a name="a199"></a> try <span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a200"></a> <span class="src-var">$dbh</span><span class="src-sym">-></span><span class="src-id">exec</span><span class="src-sym">(</span><span class="src-str">'DROP TRIGGER fkdc_t_account_owner_id_t_user_user_id'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a201"></a> <span class="src-sym">} </span>catch <span class="src-sym">(</span><span class="src-id">PDOException </span><span class="src-var">$ignore</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a202"></a> <span class="src-comm">// TODO: rethrow if exception is not "Trigger not found"</span></div></li>
<li><div class="src-line"><a name="a203"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a204"></a> <span class="src-var">$dbh</span><span class="src-sym">-></span><span class="src-id">exec</span><span class="src-sym">(</span><span class="src-str">"CREATE TRIGGER fkdc_t_account_owner_id_t_user_user_id</span></div></li>
<li><div class="src-line"><a name="a205"></a><span class="src-str">BEFORE DELETE ON t_user</span></div></li>
<li><div class="src-line"><a name="a206"></a><span class="src-str">FOR EACH ROW BEGIN</span></div></li>
<li><div class="src-line"><a name="a207"></a><span class="src-str"> DELETE FROM t_account WHERE t_account.owner_id = OLD.user_id;</span></div></li>
<li><div class="src-line"><a name="a208"></a><span class="src-str">END;"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a209"></a> </div></li>
<li><div class="src-line"><a name="a210"></a> <span class="src-id"><a href="../swam/FileLog.html">FileLog</a></span><span class="src-sym">::</span><a href="../swam/FileLog.html#methodinstance">instance</a><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">-></span><span class="src-id">info</span><span class="src-sym">(</span><span class="src-str">"Created triggers for t_account table (sqlitedb)"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a211"></a> </div></li>
<li><div class="src-line"><a name="a212"></a> <span class="src-comm">/* t_transaction table */</span></div></li>
<li><div class="src-line"><a name="a213"></a> </div></li>
<li><div class="src-line"><a name="a214"></a> <span class="src-comm">// Foreign key preventing insert</span></div></li>
<li><div class="src-line"><a name="a215"></a> try <span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a216"></a> <span class="src-var">$dbh</span><span class="src-sym">-></span><span class="src-id">exec</span><span class="src-sym">(</span><span class="src-str">'DROP TRIGGER fki_t_transaction_account_id_t_account_account_id;'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a217"></a> <span class="src-sym">} </span>catch <span class="src-sym">(</span><span class="src-id">PDOException </span><span class="src-var">$ignore</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a218"></a> <span class="src-comm">// TODO: rethrow if exception is not "Trigger not found"</span></div></li>
<li><div class="src-line"><a name="a219"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a220"></a> <span class="src-var">$dbh</span><span class="src-sym">-></span><span class="src-id">exec</span><span class="src-sym">(</span><span class="src-str">"CREATE TRIGGER fki_t_transaction_account_id_t_account_account_id</span></div></li>
<li><div class="src-line"><a name="a221"></a><span class="src-str">BEFORE INSERT ON [t_transaction]</span></div></li>
<li><div class="src-line"><a name="a222"></a><span class="src-str">FOR EACH ROW BEGIN</span></div></li>
<li><div class="src-line"><a name="a223"></a><span class="src-str"> SELECT RAISE(ROLLBACK, 'insert on table \"t_transaction\" violates foreign key constraint \"fki_t_transaction_account_id_t_account_account_id\"')</span></div></li>
<li><div class="src-line"><a name="a224"></a><span class="src-str"> WHERE (SELECT account_id FROM t_account WHERE account_id = NEW.account_id) IS NULL;</span></div></li>
<li><div class="src-line"><a name="a225"></a><span class="src-str">END;"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a226"></a> </div></li>
<li><div class="src-line"><a name="a227"></a> <span class="src-comm">// Foreign key preventing update</span></div></li>
<li><div class="src-line"><a name="a228"></a> try <span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a229"></a> <span class="src-var">$dbh</span><span class="src-sym">-></span><span class="src-id">exec</span><span class="src-sym">(</span><span class="src-str">'DROP TRIGGER fku_t_transaction_account_id_t_account_account_id;'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a230"></a> <span class="src-sym">} </span>catch <span class="src-sym">(</span><span class="src-id">PDOException </span><span class="src-var">$ignore</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a231"></a> <span class="src-comm">// TODO: rethrow if exception is not "Trigger not found"</span></div></li>
<li><div class="src-line"><a name="a232"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a233"></a> <span class="src-var">$dbh</span><span class="src-sym">-></span><span class="src-id">exec</span><span class="src-sym">(</span><span class="src-str">"CREATE TRIGGER fku_t_transaction_account_id_t_account_account_id</span></div></li>
<li><div class="src-line"><a name="a234"></a><span class="src-str">BEFORE UPDATE ON [t_transaction]</span></div></li>
<li><div class="src-line"><a name="a235"></a><span class="src-str">FOR EACH ROW BEGIN</span></div></li>
<li><div class="src-line"><a name="a236"></a><span class="src-str"> SELECT RAISE(ROLLBACK, 'update on table \"t_transaction\" violates foreign key constraint \"fku_t_transaction_account_id_t_account_account_id\"')</span></div></li>
<li><div class="src-line"><a name="a237"></a><span class="src-str"> WHERE (SELECT account_id FROM t_account WHERE account_id = NEW.account_id) IS NULL;</span></div></li>
<li><div class="src-line"><a name="a238"></a><span class="src-str">END;"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a239"></a> </div></li>
<li><div class="src-line"><a name="a240"></a> <span class="src-comm">// Cascading delete</span></div></li>
<li><div class="src-line"><a name="a241"></a> try <span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a242"></a> <span class="src-var">$dbh</span><span class="src-sym">-></span><span class="src-id">exec</span><span class="src-sym">(</span><span class="src-str">'DROP TRIGGER fkdc_t_transaction_account_id_t_account_account_id;'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a243"></a> <span class="src-sym">} </span>catch <span class="src-sym">(</span><span class="src-id">PDOException </span><span class="src-var">$ignore</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a244"></a> <span class="src-comm">// TODO: rethrow if exception is not "Trigger not found"</span></div></li>
<li><div class="src-line"><a name="a245"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a246"></a> <span class="src-var">$dbh</span><span class="src-sym">-></span><span class="src-id">exec</span><span class="src-sym">(</span><span class="src-str">'CREATE TRIGGER fkdc_t_transaction_account_id_t_account_account_id</span></div></li>
<li><div class="src-line"><a name="a247"></a><span class="src-str">BEFORE DELETE ON t_account</span></div></li>
<li><div class="src-line"><a name="a248"></a><span class="src-str">FOR EACH ROW BEGIN</span></div></li>
<li><div class="src-line"><a name="a249"></a><span class="src-str"> DELETE FROM t_transaction WHERE t_transaction.account_id = OLD.account_id;</span></div></li>
<li><div class="src-line"><a name="a250"></a><span class="src-str">END;'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a251"></a> </div></li>
<li><div class="src-line"><a name="a252"></a> <span class="src-id"><a href="../swam/FileLog.html">FileLog</a></span><span class="src-sym">::</span><a href="../swam/FileLog.html#methodinstance">instance</a><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">-></span><span class="src-id">info</span><span class="src-sym">(</span><span class="src-str">"Created triggers for t_transaction table (sqlitedb)"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a253"></a> </div></li>
<li><div class="src-line"><a name="a254"></a> <span class="src-comm">/* t_transaction_template */</span></div></li>
<li><div class="src-line"><a name="a255"></a> </div></li>
<li><div class="src-line"><a name="a256"></a> <span class="src-comm">// Foreign key preventing insert</span></div></li>
<li><div class="src-line"><a name="a257"></a> try <span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a258"></a> <span class="src-var">$dbh</span><span class="src-sym">-></span><span class="src-id">exec</span><span class="src-sym">(</span><span class="src-str">'DROP TRIGGER fki_t_transaction_template_account_id_t_account_account_id;'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a259"></a> <span class="src-sym">} </span>catch <span class="src-sym">(</span><span class="src-id">PDOException </span><span class="src-var">$ignore</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a260"></a> <span class="src-comm">// TODO: rethrow if exception is not "Trigger not found"</span></div></li>
<li><div class="src-line"><a name="a261"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a262"></a> <span class="src-var">$dbh</span><span class="src-sym">-></span><span class="src-id">exec</span><span class="src-sym">(</span><span class="src-str">"CREATE TRIGGER fki_t_transaction_template_account_id_t_account_account_id</span></div></li>
<li><div class="src-line"><a name="a263"></a><span class="src-str">BEFORE INSERT ON [t_transaction_template]</span></div></li>
<li><div class="src-line"><a name="a264"></a><span class="src-str">FOR EACH ROW BEGIN</span></div></li>
<li><div class="src-line"><a name="a265"></a><span class="src-str"> SELECT RAISE(ROLLBACK, 'insert on table \"t_transaction_template\" violates foreign key constraint \"fki_t_transaction_template_account_id_t_account_account_id\"')</span></div></li>
<li><div class="src-line"><a name="a266"></a><span class="src-str"> WHERE (SELECT account_id FROM t_account WHERE account_id = NEW.account_id) IS NULL;</span></div></li>
<li><div class="src-line"><a name="a267"></a><span class="src-str">END;"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a268"></a> </div></li>
<li><div class="src-line"><a name="a269"></a> <span class="src-comm">// Foreign key preventing update</span></div></li>
<li><div class="src-line"><a name="a270"></a> try <span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a271"></a> <span class="src-var">$dbh</span><span class="src-sym">-></span><span class="src-id">exec</span><span class="src-sym">(</span><span class="src-str">'DROP TRIGGER fku_t_transaction_template_account_id_t_account_account_id;'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a272"></a> <span class="src-sym">} </span>catch <span class="src-sym">(</span><span class="src-id">PDOException </span><span class="src-var">$ignore</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a273"></a> <span class="src-comm">// TODO: rethrow if exception is not "Trigger not found"</span></div></li>
<li><div class="src-line"><a name="a274"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a275"></a> <span class="src-var">$dbh</span><span class="src-sym">-></span><span class="src-id">exec</span><span class="src-sym">(</span><span class="src-str">"CREATE TRIGGER fku_t_transaction_template_account_id_t_account_account_id</span></div></li>
<li><div class="src-line"><a name="a276"></a><span class="src-str">BEFORE UPDATE ON [t_transaction_template]</span></div></li>
<li><div class="src-line"><a name="a277"></a><span class="src-str">FOR EACH ROW BEGIN</span></div></li>
<li><div class="src-line"><a name="a278"></a><span class="src-str"> SELECT RAISE(ROLLBACK, 'update on table \"t_transaction_template\" violates foreign key constraint \"fku_t_transaction_template_account_id_t_account_account_id\"')</span></div></li>
<li><div class="src-line"><a name="a279"></a><span class="src-str"> WHERE (SELECT account_id FROM t_account WHERE account_id = NEW.account_id) IS NULL;</span></div></li>
<li><div class="src-line"><a name="a280"></a><span class="src-str">END;"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a281"></a> </div></li>
<li><div class="src-line"><a name="a282"></a> <span class="src-comm">// Cascading delete</span></div></li>
<li><div class="src-line"><a name="a283"></a> try <span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a284"></a> <span class="src-var">$dbh</span><span class="src-sym">-></span><span class="src-id">exec</span><span class="src-sym">(</span><span class="src-str">'DROP TRIGGER fkdc_t_transaction_template_account_id_t_account_account_id;'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a285"></a> <span class="src-sym">} </span>catch <span class="src-sym">(</span><span class="src-id">PDOException </span><span class="src-var">$ignore</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a286"></a> <span class="src-comm">// TODO: rethrow if exception is not "Trigger not found"</span></div></li>
<li><div class="src-line"><a name="a287"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a288"></a> <span class="src-var">$dbh</span><span class="src-sym">-></span><span class="src-id">exec</span><span class="src-sym">(</span><span class="src-str">'CREATE TRIGGER fkdc_t_transaction_template_account_id_t_account_account_id</span></div></li>
<li><div class="src-line"><a name="a289"></a><span class="src-str">BEFORE DELETE ON t_account</span></div></li>
<li><div class="src-line"><a name="a290"></a><span class="src-str">FOR EACH ROW BEGIN</span></div></li>
<li><div class="src-line"><a name="a291"></a><span class="src-str"> DELETE FROM t_transaction_template WHERE t_transaction_template.account_id = OLD.account_id;</span></div></li>
<li><div class="src-line"><a name="a292"></a><span class="src-str">END;'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a293"></a> </div></li>
<li><div class="src-line"><a name="a294"></a> <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-id">set_database_file_permissions</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a295"></a> </div></li>
<li><div class="src-line"><a name="a296"></a> <span class="src-id"><a href="../swam/FileLog.html">FileLog</a></span><span class="src-sym">::</span><a href="../swam/FileLog.html#methodinstance">instance</a><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">-></span><span class="src-id">info</span><span class="src-sym">(</span><span class="src-str">"Created triggers for t_transaction_template table (sqlitedb)"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a297"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a298"></a> </div></li>
<li><div class="src-line"><a name="a299"></a> <span class="src-doc">/**</span></div></li>
<li><div class="src-line"><a name="a300"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@see</span><span class="src-doc"> IDatabase::vacuum()</span></div></li>
<li><div class="src-line"><a name="a301"></a><span class="src-doc"> */</span></div></li>
<li><div class="src-line"><a name="a302"></a> <span class="src-key">public </span><span class="src-key">function </span><a href="../swam/SwamSqliteDatabase.html#methodvacuum">vacuum</a><span class="src-sym">(</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a303"></a> <span class="src-var">$dbh </span>= <span class="src-id"><a href="../swam/Database.html">Database</a></span><span class="src-sym">::</span><a href="../swam/Database.html#methodinstance">instance</a><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">-></span><span class="src-id">get_connection</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a304"></a> <span class="src-var">$dbh</span><span class="src-sym">-></span><span class="src-id">exec</span><span class="src-sym">(</span><span class="src-str">'VACUUM;'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a305"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a306"></a><span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a307"></a> </div></li>
<li><div class="src-line"><a name="a308"></a><span class="src-php">?></span></div></li>
</ol></div>
</div>
<p class="notes" id="credit">
Documentation generated on Thu, 20 Aug 2009 01:04:18 +0200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.1</a>
</p>
</body>
</html>