Files
parsecsv-for-php/tests/report/parsecsv.lib.php.html
William Knauss a6f8c708f9 1
2014-06-05 01:51:46 -04:00

1602 lines
226 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Code Coverage for C:\Users\Admin\Documents\GitHub\parsecsv/parsecsv.lib.php</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/bootstrap-responsive.min.css" rel="stylesheet">
<link href="css/style.css" rel="stylesheet">
<!--[if lt IE 9]>
<script src="js/html5shiv.js"></script>
<![endif]-->
</head>
<body>
<header>
<div class="container">
<div class="row">
<div class="span12">
<ul class="breadcrumb">
<li><a href="index.html">C:\Users\Admin\Documents\GitHub\parsecsv</a> <span class="divider">/</span></li>
<li class="active">parsecsv.lib.php</li>
</ul>
</div>
</div>
</div>
</header>
<div class="container">
<table class="table table-bordered">
<thead>
<tr>
<td>&nbsp;</td>
<td colspan="10"><div align="center"><strong>Code Coverage</strong></div></td>
</tr>
<tr>
<td>&nbsp;</td>
<td colspan="3"><div align="center"><strong>Classes and Traits</strong></div></td>
<td colspan="4"><div align="center"><strong>Functions and Methods</strong></div></td>
<td colspan="3"><div align="center"><strong>Lines</strong></div></td>
</tr>
</thead>
<tbody>
<tr>
<td class="danger">Total</td>
<td class="danger big"> <div class="progress progress-danger" style="width: 100px;">
<div class="bar" style="width: 0.00%;"></div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
<td class="danger big"> <div class="progress progress-danger" style="width: 100px;">
<div class="bar" style="width: 5.56%;"></div>
</div>
</td>
<td class="danger small"><div align="right">5.56%</div></td>
<td class="danger small"><div align="right">1&nbsp;/&nbsp;18</div></td>
<td class="danger small"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></td>
<td class="danger big"> <div class="progress progress-danger" style="width: 100px;">
<div class="bar" style="width: 19.27%;"></div>
</div>
</td>
<td class="danger small"><div align="right">19.27%</div></td>
<td class="danger small"><div align="right">84&nbsp;/&nbsp;436</div></td>
</tr>
<tr>
<td class="danger">parseCSV</td>
<td class="danger big"> <div class="progress progress-danger" style="width: 100px;">
<div class="bar" style="width: 0.00%;"></div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
<td class="danger big"> <div class="progress progress-danger" style="width: 100px;">
<div class="bar" style="width: 5.56%;"></div>
</div>
</td>
<td class="danger small"><div align="right">5.56%</div></td>
<td class="danger small"><div align="right">1&nbsp;/&nbsp;18</div></td>
<td class="danger small">22319.46</td>
<td class="danger big"> <div class="progress progress-danger" style="width: 100px;">
<div class="bar" style="width: 19.27%;"></div>
</div>
</td>
<td class="danger small"><div align="right">19.27%</div></td>
<td class="danger small"><div align="right">84&nbsp;/&nbsp;436</div></td>
</tr>
<tr>
<td class="success" colspan="4">&nbsp;<a href="#353">__construct ($input = null, $offset = null, $limit = null, $conditions = null)</a></td>
<td class="success big"> <div class="progress progress-success" style="width: 100px;">
<div class="bar" style="width: 100.00%;"></div>
</div>
</td>
<td class="success small"><div align="right">100.00%</div></td>
<td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
<td class="success small">5</td>
<td class="success big"> <div class="progress progress-success" style="width: 100px;">
<div class="bar" style="width: 100.00%;"></div>
</div>
</td>
<td class="success small"><div align="right">100.00%</div></td>
<td class="success small"><div align="right">13&nbsp;/&nbsp;13</div></td>
</tr>
<tr>
<td class="danger" colspan="4">&nbsp;<a href="#389">parse ($input = null, $offset = null, $limit = null, $conditions = null)</a></td>
<td class="danger big"> <div class="progress progress-danger" style="width: 100px;">
<div class="bar" style="width: 0.00%;"></div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
<td class="danger small">16.00</td>
<td class="warning big"> <div class="progress progress-warning" style="width: 100px;">
<div class="bar" style="width: 50.00%;"></div>
</div>
</td>
<td class="warning small"><div align="right">50.00%</div></td>
<td class="warning small"><div align="right">11&nbsp;/&nbsp;22</div></td>
</tr>
<tr>
<td class="danger" colspan="4">&nbsp;<a href="#435">save ($file = null, $data = array(), $append = false, $fields = array())</a></td>
<td class="danger big"> <div class="progress progress-danger" style="width: 100px;">
<div class="bar" style="width: 0.00%;"></div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
<td class="danger small">20</td>
<td class="danger big"> <div class="progress progress-danger" style="width: 100px;">
<div class="bar" style="width: 0.00%;"></div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;6</div></td>
</tr>
<tr>
<td class="danger" colspan="4">&nbsp;<a href="#458">output ($filename = null, $data = array(), $fields = array(), $delimiter = null)</a></td>
<td class="danger big"> <div class="progress progress-danger" style="width: 100px;">
<div class="bar" style="width: 0.00%;"></div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
<td class="danger small">20</td>
<td class="danger big"> <div class="progress progress-danger" style="width: 100px;">
<div class="bar" style="width: 0.00%;"></div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;17</div></td>
</tr>
<tr>
<td class="danger" colspan="4">&nbsp;<a href="#491">encoding ($input = null, $output = null)</a></td>
<td class="danger big"> <div class="progress progress-danger" style="width: 100px;">
<div class="bar" style="width: 0.00%;"></div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
<td class="danger small">12</td>
<td class="danger big"> <div class="progress progress-danger" style="width: 100px;">
<div class="bar" style="width: 0.00%;"></div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;8</div></td>
</tr>
<tr>
<td class="danger" colspan="4">&nbsp;<a href="#516">auto ($file = null, $parse = true, $search_depth = null, $preferred = null, $enclosure = null)</a></td>
<td class="danger big"> <div class="progress progress-danger" style="width: 100px;">
<div class="bar" style="width: 0.00%;"></div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
<td class="danger small">756</td>
<td class="danger big"> <div class="progress progress-danger" style="width: 100px;">
<div class="bar" style="width: 0.00%;"></div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;65</div></td>
</tr>
<tr>
<td class="danger" colspan="4">&nbsp;<a href="#627">parse_file ($file = null)</a></td>
<td class="danger big"> <div class="progress progress-danger" style="width: 100px;">
<div class="bar" style="width: 0.00%;"></div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
<td class="danger small">20</td>
<td class="danger big"> <div class="progress progress-danger" style="width: 100px;">
<div class="bar" style="width: 0.00%;"></div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;7</div></td>
</tr>
<tr>
<td class="danger" colspan="4">&nbsp;<a href="#647">parse_string ($data = null)</a></td>
<td class="danger big"> <div class="progress progress-danger" style="width: 100px;">
<div class="bar" style="width: 0.00%;"></div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
<td class="danger small">644.69</td>
<td class="warning big"> <div class="progress progress-warning" style="width: 100px;">
<div class="bar" style="width: 42.74%;"></div>
</div>
</td>
<td class="warning small"><div align="right">42.74%</div></td>
<td class="warning small"><div align="right">53&nbsp;/&nbsp;124</div></td>
</tr>
<tr>
<td class="danger" colspan="4">&nbsp;<a href="#825">unparse ( $data = array(), $fields = array(), $append = false , $is_php = false, $delimiter = null)</a></td>
<td class="danger big"> <div class="progress progress-danger" style="width: 100px;">
<div class="bar" style="width: 0.00%;"></div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
<td class="danger small">182</td>
<td class="danger big"> <div class="progress progress-danger" style="width: 100px;">
<div class="bar" style="width: 0.00%;"></div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;26</div></td>
</tr>
<tr>
<td class="danger" colspan="4">&nbsp;<a href="#872">load_data ($input = null)</a></td>
<td class="danger big"> <div class="progress progress-danger" style="width: 100px;">
<div class="bar" style="width: 0.00%;"></div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
<td class="danger small">110</td>
<td class="danger big"> <div class="progress progress-danger" style="width: 100px;">
<div class="bar" style="width: 0.00%;"></div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;25</div></td>
</tr>
<tr>
<td class="danger" colspan="4">&nbsp;<a href="#924">_validate_row_conditions ($row = array(), $conditions = null)</a></td>
<td class="danger big"> <div class="progress progress-danger" style="width: 100px;">
<div class="bar" style="width: 0.00%;"></div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
<td class="danger small">55.88</td>
<td class="danger big"> <div class="progress progress-danger" style="width: 100px;">
<div class="bar" style="width: 16.67%;"></div>
</div>
</td>
<td class="danger small"><div align="right">16.67%</div></td>
<td class="danger small"><div align="right">3&nbsp;/&nbsp;18</div></td>
</tr>
<tr>
<td class="danger" colspan="4">&nbsp;<a href="#963">_validate_row_condition ($row, $condition)</a></td>
<td class="danger big"> <div class="progress progress-danger" style="width: 100px;">
<div class="bar" style="width: 0.00%;"></div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
<td class="danger small">870</td>
<td class="danger big"> <div class="progress progress-danger" style="width: 100px;">
<div class="bar" style="width: 0.00%;"></div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;47</div></td>
</tr>
<tr>
<td class="danger" colspan="4">&nbsp;<a href="#1040">_validate_offset ($current_row)</a></td>
<td class="danger big"> <div class="progress progress-danger" style="width: 100px;">
<div class="bar" style="width: 0.00%;"></div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
<td class="danger small">4.59</td>
<td class="warning big"> <div class="progress progress-warning" style="width: 100px;">
<div class="bar" style="width: 66.67%;"></div>
</div>
</td>
<td class="warning small"><div align="right">66.67%</div></td>
<td class="warning small"><div align="right">2&nbsp;/&nbsp;3</div></td>
</tr>
<tr>
<td class="danger" colspan="4">&nbsp;<a href="#1057">_enclose_value ($value = null, $delimiter = null)</a></td>
<td class="danger big"> <div class="progress progress-danger" style="width: 100px;">
<div class="bar" style="width: 0.00%;"></div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
<td class="danger small">72</td>
<td class="danger big"> <div class="progress progress-danger" style="width: 100px;">
<div class="bar" style="width: 0.00%;"></div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;12</div></td>
</tr>
<tr>
<td class="danger" colspan="4">&nbsp;<a href="#1081">_check_data ($file = null)</a></td>
<td class="danger big"> <div class="progress progress-danger" style="width: 100px;">
<div class="bar" style="width: 0.00%;"></div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
<td class="danger small">4.12</td>
<td class="warning big"> <div class="progress progress-warning" style="width: 100px;">
<div class="bar" style="width: 50.00%;"></div>
</div>
</td>
<td class="warning small"><div align="right">50.00%</div></td>
<td class="warning small"><div align="right">2&nbsp;/&nbsp;4</div></td>
</tr>
<tr>
<td class="danger" colspan="4">&nbsp;<a href="#1103">_check_count ($char, $array, $depth, $preferred)</a></td>
<td class="danger big"> <div class="progress progress-danger" style="width: 100px;">
<div class="bar" style="width: 0.00%;"></div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
<td class="danger small">132</td>
<td class="danger big"> <div class="progress progress-danger" style="width: 100px;">
<div class="bar" style="width: 0.00%;"></div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;24</div></td>
</tr>
<tr>
<td class="danger" colspan="4">&nbsp;<a href="#1145">_rfile ($file = null)</a></td>
<td class="danger big"> <div class="progress progress-danger" style="width: 100px;">
<div class="bar" style="width: 0.00%;"></div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
<td class="danger small">12</td>
<td class="danger big"> <div class="progress progress-danger" style="width: 100px;">
<div class="bar" style="width: 0.00%;"></div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;7</div></td>
</tr>
<tr>
<td class="danger" colspan="4">&nbsp;<a href="#1170">_wfile ($file, $string = '', $mode = 'wb', $lock = 2)</a></td>
<td class="danger big"> <div class="progress progress-danger" style="width: 100px;">
<div class="bar" style="width: 0.00%;"></div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
<td class="danger small">20</td>
<td class="danger big"> <div class="progress progress-danger" style="width: 100px;">
<div class="bar" style="width: 0.00%;"></div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;8</div></td>
</tr>
</tbody>
</table>
<table class="table table-borderless table-condensed">
<tbody>
<tr><td><div align="right"><a name="1"></a><a href="#1">1</a></div></td><td class="codeLine">&lt;?php</td></tr>
<tr><td><div align="right"><a name="2"></a><a href="#2">2</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="3"></a><a href="#3">3</a></div></td><td class="codeLine">class parseCSV {</td></tr>
<tr><td><div align="right"><a name="4"></a><a href="#4">4</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="5"></a><a href="#5">5</a></div></td><td class="codeLine"> /*</td></tr>
<tr><td><div align="right"><a name="6"></a><a href="#6">6</a></div></td><td class="codeLine"> Class: parseCSV v0.4.3 beta</td></tr>
<tr><td><div align="right"><a name="7"></a><a href="#7">7</a></div></td><td class="codeLine"> https://github.com/parsecsv/parsecsv-for-php</td></tr>
<tr><td><div align="right"><a name="8"></a><a href="#8">8</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="9"></a><a href="#9">9</a></div></td><td class="codeLine"> Fully conforms to the specifications lined out on wikipedia:</td></tr>
<tr><td><div align="right"><a name="10"></a><a href="#10">10</a></div></td><td class="codeLine"> - http://en.wikipedia.org/wiki/Comma-separated_values</td></tr>
<tr><td><div align="right"><a name="11"></a><a href="#11">11</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="12"></a><a href="#12">12</a></div></td><td class="codeLine"> Based on the concept of Ming Hong Ng's CsvFileParser class:</td></tr>
<tr><td><div align="right"><a name="13"></a><a href="#13">13</a></div></td><td class="codeLine"> - http://minghong.blogspot.com/2006/07/csv-parser-for-php.html</td></tr>
<tr><td><div align="right"><a name="14"></a><a href="#14">14</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="15"></a><a href="#15">15</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="16"></a><a href="#16">16</a></div></td><td class="codeLine"> (The MIT license)</td></tr>
<tr><td><div align="right"><a name="17"></a><a href="#17">17</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="18"></a><a href="#18">18</a></div></td><td class="codeLine"> Copyright (c) 2014 Jim Myhrberg.</td></tr>
<tr><td><div align="right"><a name="19"></a><a href="#19">19</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="20"></a><a href="#20">20</a></div></td><td class="codeLine"> Permission is hereby granted, free of charge, to any person obtaining a copy</td></tr>
<tr><td><div align="right"><a name="21"></a><a href="#21">21</a></div></td><td class="codeLine"> of this software and associated documentation files (the &quot;Software&quot;), to deal</td></tr>
<tr><td><div align="right"><a name="22"></a><a href="#22">22</a></div></td><td class="codeLine"> in the Software without restriction, including without limitation the rights</td></tr>
<tr><td><div align="right"><a name="23"></a><a href="#23">23</a></div></td><td class="codeLine"> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</td></tr>
<tr><td><div align="right"><a name="24"></a><a href="#24">24</a></div></td><td class="codeLine"> copies of the Software, and to permit persons to whom the Software is</td></tr>
<tr><td><div align="right"><a name="25"></a><a href="#25">25</a></div></td><td class="codeLine"> furnished to do so, subject to the following conditions:</td></tr>
<tr><td><div align="right"><a name="26"></a><a href="#26">26</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="27"></a><a href="#27">27</a></div></td><td class="codeLine"> The above copyright notice and this permission notice shall be included in</td></tr>
<tr><td><div align="right"><a name="28"></a><a href="#28">28</a></div></td><td class="codeLine"> all copies or substantial portions of the Software.</td></tr>
<tr><td><div align="right"><a name="29"></a><a href="#29">29</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="30"></a><a href="#30">30</a></div></td><td class="codeLine"> THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</td></tr>
<tr><td><div align="right"><a name="31"></a><a href="#31">31</a></div></td><td class="codeLine"> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</td></tr>
<tr><td><div align="right"><a name="32"></a><a href="#32">32</a></div></td><td class="codeLine"> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</td></tr>
<tr><td><div align="right"><a name="33"></a><a href="#33">33</a></div></td><td class="codeLine"> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</td></tr>
<tr><td><div align="right"><a name="34"></a><a href="#34">34</a></div></td><td class="codeLine"> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</td></tr>
<tr><td><div align="right"><a name="35"></a><a href="#35">35</a></div></td><td class="codeLine"> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN</td></tr>
<tr><td><div align="right"><a name="36"></a><a href="#36">36</a></div></td><td class="codeLine"> THE SOFTWARE.</td></tr>
<tr><td><div align="right"><a name="37"></a><a href="#37">37</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="38"></a><a href="#38">38</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="39"></a><a href="#39">39</a></div></td><td class="codeLine"> Code Examples</td></tr>
<tr><td><div align="right"><a name="40"></a><a href="#40">40</a></div></td><td class="codeLine"> ----------------</td></tr>
<tr><td><div align="right"><a name="41"></a><a href="#41">41</a></div></td><td class="codeLine"> # general usage</td></tr>
<tr><td><div align="right"><a name="42"></a><a href="#42">42</a></div></td><td class="codeLine"> $csv = new parseCSV('data.csv');</td></tr>
<tr><td><div align="right"><a name="43"></a><a href="#43">43</a></div></td><td class="codeLine"> print_r($csv-&gt;data);</td></tr>
<tr><td><div align="right"><a name="44"></a><a href="#44">44</a></div></td><td class="codeLine"> ----------------</td></tr>
<tr><td><div align="right"><a name="45"></a><a href="#45">45</a></div></td><td class="codeLine"> # tab delimited, and encoding conversion</td></tr>
<tr><td><div align="right"><a name="46"></a><a href="#46">46</a></div></td><td class="codeLine"> $csv = new parseCSV();</td></tr>
<tr><td><div align="right"><a name="47"></a><a href="#47">47</a></div></td><td class="codeLine"> $csv-&gt;encoding('UTF-16', 'UTF-8');</td></tr>
<tr><td><div align="right"><a name="48"></a><a href="#48">48</a></div></td><td class="codeLine"> $csv-&gt;delimiter = &quot;\t&quot;;</td></tr>
<tr><td><div align="right"><a name="49"></a><a href="#49">49</a></div></td><td class="codeLine"> $csv-&gt;parse('data.tsv');</td></tr>
<tr><td><div align="right"><a name="50"></a><a href="#50">50</a></div></td><td class="codeLine"> print_r($csv-&gt;data);</td></tr>
<tr><td><div align="right"><a name="51"></a><a href="#51">51</a></div></td><td class="codeLine"> ----------------</td></tr>
<tr><td><div align="right"><a name="52"></a><a href="#52">52</a></div></td><td class="codeLine"> # auto-detect delimiter character</td></tr>
<tr><td><div align="right"><a name="53"></a><a href="#53">53</a></div></td><td class="codeLine"> $csv = new parseCSV();</td></tr>
<tr><td><div align="right"><a name="54"></a><a href="#54">54</a></div></td><td class="codeLine"> $csv-&gt;auto('data.csv');</td></tr>
<tr><td><div align="right"><a name="55"></a><a href="#55">55</a></div></td><td class="codeLine"> print_r($csv-&gt;data);</td></tr>
<tr><td><div align="right"><a name="56"></a><a href="#56">56</a></div></td><td class="codeLine"> ----------------</td></tr>
<tr><td><div align="right"><a name="57"></a><a href="#57">57</a></div></td><td class="codeLine"> # modify data in a csv file</td></tr>
<tr><td><div align="right"><a name="58"></a><a href="#58">58</a></div></td><td class="codeLine"> $csv = new parseCSV();</td></tr>
<tr><td><div align="right"><a name="59"></a><a href="#59">59</a></div></td><td class="codeLine"> $csv-&gt;sort_by = 'id';</td></tr>
<tr><td><div align="right"><a name="60"></a><a href="#60">60</a></div></td><td class="codeLine"> $csv-&gt;parse('data.csv');</td></tr>
<tr><td><div align="right"><a name="61"></a><a href="#61">61</a></div></td><td class="codeLine"> # &quot;4&quot; is the value of the &quot;id&quot; column of the CSV row</td></tr>
<tr><td><div align="right"><a name="62"></a><a href="#62">62</a></div></td><td class="codeLine"> $csv-&gt;data[4] = array('firstname' =&gt; 'John', 'lastname' =&gt; 'Doe', 'email' =&gt; 'john@doe.com');</td></tr>
<tr><td><div align="right"><a name="63"></a><a href="#63">63</a></div></td><td class="codeLine"> $csv-&gt;save();</td></tr>
<tr><td><div align="right"><a name="64"></a><a href="#64">64</a></div></td><td class="codeLine"> ----------------</td></tr>
<tr><td><div align="right"><a name="65"></a><a href="#65">65</a></div></td><td class="codeLine"> # add row/entry to end of CSV file</td></tr>
<tr><td><div align="right"><a name="66"></a><a href="#66">66</a></div></td><td class="codeLine"> # - only recommended when you know the extact sctructure of the file</td></tr>
<tr><td><div align="right"><a name="67"></a><a href="#67">67</a></div></td><td class="codeLine"> $csv = new parseCSV();</td></tr>
<tr><td><div align="right"><a name="68"></a><a href="#68">68</a></div></td><td class="codeLine"> $csv-&gt;save('data.csv', array(array('1986', 'Home', 'Nowhere', '')), true);</td></tr>
<tr><td><div align="right"><a name="69"></a><a href="#69">69</a></div></td><td class="codeLine"> ----------------</td></tr>
<tr><td><div align="right"><a name="70"></a><a href="#70">70</a></div></td><td class="codeLine"> # convert 2D array to csv data and send headers</td></tr>
<tr><td><div align="right"><a name="71"></a><a href="#71">71</a></div></td><td class="codeLine"> # to browser to treat output as a file and download it</td></tr>
<tr><td><div align="right"><a name="72"></a><a href="#72">72</a></div></td><td class="codeLine"> $csv = new parseCSV();</td></tr>
<tr><td><div align="right"><a name="73"></a><a href="#73">73</a></div></td><td class="codeLine"> $csv-&gt;output('movies.csv', $array, array('field 1', 'field 2'), ',');</td></tr>
<tr><td><div align="right"><a name="74"></a><a href="#74">74</a></div></td><td class="codeLine"> ----------------</td></tr>
<tr><td><div align="right"><a name="75"></a><a href="#75">75</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="76"></a><a href="#76">76</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="77"></a><a href="#77">77</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="78"></a><a href="#78">78</a></div></td><td class="codeLine"> * Configuration</td></tr>
<tr><td><div align="right"><a name="79"></a><a href="#79">79</a></div></td><td class="codeLine"> * - set these options with $object-&gt;var_name = 'value';</td></tr>
<tr><td><div align="right"><a name="80"></a><a href="#80">80</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="81"></a><a href="#81">81</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="82"></a><a href="#82">82</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="83"></a><a href="#83">83</a></div></td><td class="codeLine"> * Heading</td></tr>
<tr><td><div align="right"><a name="84"></a><a href="#84">84</a></div></td><td class="codeLine"> * Use first line/entry as field names</td></tr>
<tr><td><div align="right"><a name="85"></a><a href="#85">85</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="86"></a><a href="#86">86</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="87"></a><a href="#87">87</a></div></td><td class="codeLine"> * @var bool</td></tr>
<tr><td><div align="right"><a name="88"></a><a href="#88">88</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="89"></a><a href="#89">89</a></div></td><td class="codeLine"> public $heading = true;</td></tr>
<tr><td><div align="right"><a name="90"></a><a href="#90">90</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="91"></a><a href="#91">91</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="92"></a><a href="#92">92</a></div></td><td class="codeLine"> * Fields</td></tr>
<tr><td><div align="right"><a name="93"></a><a href="#93">93</a></div></td><td class="codeLine"> * Override field names</td></tr>
<tr><td><div align="right"><a name="94"></a><a href="#94">94</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="95"></a><a href="#95">95</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="96"></a><a href="#96">96</a></div></td><td class="codeLine"> * @var array</td></tr>
<tr><td><div align="right"><a name="97"></a><a href="#97">97</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="98"></a><a href="#98">98</a></div></td><td class="codeLine"> public $fields = array();</td></tr>
<tr><td><div align="right"><a name="99"></a><a href="#99">99</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="100"></a><a href="#100">100</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="101"></a><a href="#101">101</a></div></td><td class="codeLine"> * Sort By</td></tr>
<tr><td><div align="right"><a name="102"></a><a href="#102">102</a></div></td><td class="codeLine"> * Sort csv by this field</td></tr>
<tr><td><div align="right"><a name="103"></a><a href="#103">103</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="104"></a><a href="#104">104</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="105"></a><a href="#105">105</a></div></td><td class="codeLine"> * @var string</td></tr>
<tr><td><div align="right"><a name="106"></a><a href="#106">106</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="107"></a><a href="#107">107</a></div></td><td class="codeLine"> public $sort_by = null;</td></tr>
<tr><td><div align="right"><a name="108"></a><a href="#108">108</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="109"></a><a href="#109">109</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="110"></a><a href="#110">110</a></div></td><td class="codeLine"> * Sort Reverse</td></tr>
<tr><td><div align="right"><a name="111"></a><a href="#111">111</a></div></td><td class="codeLine"> * Reverse the sort function</td></tr>
<tr><td><div align="right"><a name="112"></a><a href="#112">112</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="113"></a><a href="#113">113</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="114"></a><a href="#114">114</a></div></td><td class="codeLine"> * @var bool</td></tr>
<tr><td><div align="right"><a name="115"></a><a href="#115">115</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="116"></a><a href="#116">116</a></div></td><td class="codeLine"> public $sort_reverse = false;</td></tr>
<tr><td><div align="right"><a name="117"></a><a href="#117">117</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="118"></a><a href="#118">118</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="119"></a><a href="#119">119</a></div></td><td class="codeLine"> * Sort Type</td></tr>
<tr><td><div align="right"><a name="120"></a><a href="#120">120</a></div></td><td class="codeLine"> * Sort behavior passed to sort methods</td></tr>
<tr><td><div align="right"><a name="121"></a><a href="#121">121</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="122"></a><a href="#122">122</a></div></td><td class="codeLine"> * regular = SORT_REGULAR</td></tr>
<tr><td><div align="right"><a name="123"></a><a href="#123">123</a></div></td><td class="codeLine"> * numeric = SORT_NUMERIC</td></tr>
<tr><td><div align="right"><a name="124"></a><a href="#124">124</a></div></td><td class="codeLine"> * string = SORT_STRING</td></tr>
<tr><td><div align="right"><a name="125"></a><a href="#125">125</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="126"></a><a href="#126">126</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="127"></a><a href="#127">127</a></div></td><td class="codeLine"> * @var string</td></tr>
<tr><td><div align="right"><a name="128"></a><a href="#128">128</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="129"></a><a href="#129">129</a></div></td><td class="codeLine"> public $sort_type = null;</td></tr>
<tr><td><div align="right"><a name="130"></a><a href="#130">130</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="131"></a><a href="#131">131</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="132"></a><a href="#132">132</a></div></td><td class="codeLine"> * Delimiter</td></tr>
<tr><td><div align="right"><a name="133"></a><a href="#133">133</a></div></td><td class="codeLine"> * Delimiter character</td></tr>
<tr><td><div align="right"><a name="134"></a><a href="#134">134</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="135"></a><a href="#135">135</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="136"></a><a href="#136">136</a></div></td><td class="codeLine"> * @var string</td></tr>
<tr><td><div align="right"><a name="137"></a><a href="#137">137</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="138"></a><a href="#138">138</a></div></td><td class="codeLine"> public $delimiter = ',';</td></tr>
<tr><td><div align="right"><a name="139"></a><a href="#139">139</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="140"></a><a href="#140">140</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="141"></a><a href="#141">141</a></div></td><td class="codeLine"> * Enclosure</td></tr>
<tr><td><div align="right"><a name="142"></a><a href="#142">142</a></div></td><td class="codeLine"> * Enclosure character</td></tr>
<tr><td><div align="right"><a name="143"></a><a href="#143">143</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="144"></a><a href="#144">144</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="145"></a><a href="#145">145</a></div></td><td class="codeLine"> * @var string</td></tr>
<tr><td><div align="right"><a name="146"></a><a href="#146">146</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="147"></a><a href="#147">147</a></div></td><td class="codeLine"> public $enclosure = '&quot;';</td></tr>
<tr><td><div align="right"><a name="148"></a><a href="#148">148</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="149"></a><a href="#149">149</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="150"></a><a href="#150">150</a></div></td><td class="codeLine"> * Enclose All</td></tr>
<tr><td><div align="right"><a name="151"></a><a href="#151">151</a></div></td><td class="codeLine"> * Force enclosing all columns</td></tr>
<tr><td><div align="right"><a name="152"></a><a href="#152">152</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="153"></a><a href="#153">153</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="154"></a><a href="#154">154</a></div></td><td class="codeLine"> * @var bool</td></tr>
<tr><td><div align="right"><a name="155"></a><a href="#155">155</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="156"></a><a href="#156">156</a></div></td><td class="codeLine"> public $enclose_all = false;</td></tr>
<tr><td><div align="right"><a name="157"></a><a href="#157">157</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="158"></a><a href="#158">158</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="159"></a><a href="#159">159</a></div></td><td class="codeLine"> * Conditions</td></tr>
<tr><td><div align="right"><a name="160"></a><a href="#160">160</a></div></td><td class="codeLine"> * Basic SQL-Like conditions for row matching</td></tr>
<tr><td><div align="right"><a name="161"></a><a href="#161">161</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="162"></a><a href="#162">162</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="163"></a><a href="#163">163</a></div></td><td class="codeLine"> * @var string</td></tr>
<tr><td><div align="right"><a name="164"></a><a href="#164">164</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="165"></a><a href="#165">165</a></div></td><td class="codeLine"> public $conditions = null;</td></tr>
<tr><td><div align="right"><a name="166"></a><a href="#166">166</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="167"></a><a href="#167">167</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="168"></a><a href="#168">168</a></div></td><td class="codeLine"> * Offset</td></tr>
<tr><td><div align="right"><a name="169"></a><a href="#169">169</a></div></td><td class="codeLine"> * Number of rows to ignore from beginning of data</td></tr>
<tr><td><div align="right"><a name="170"></a><a href="#170">170</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="171"></a><a href="#171">171</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="172"></a><a href="#172">172</a></div></td><td class="codeLine"> * @var int</td></tr>
<tr><td><div align="right"><a name="173"></a><a href="#173">173</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="174"></a><a href="#174">174</a></div></td><td class="codeLine"> public $offset = null;</td></tr>
<tr><td><div align="right"><a name="175"></a><a href="#175">175</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="176"></a><a href="#176">176</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="177"></a><a href="#177">177</a></div></td><td class="codeLine"> * Limit</td></tr>
<tr><td><div align="right"><a name="178"></a><a href="#178">178</a></div></td><td class="codeLine"> * Limits the number of returned rows to the specified amount</td></tr>
<tr><td><div align="right"><a name="179"></a><a href="#179">179</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="180"></a><a href="#180">180</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="181"></a><a href="#181">181</a></div></td><td class="codeLine"> * @var int</td></tr>
<tr><td><div align="right"><a name="182"></a><a href="#182">182</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="183"></a><a href="#183">183</a></div></td><td class="codeLine"> public $limit = null;</td></tr>
<tr><td><div align="right"><a name="184"></a><a href="#184">184</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="185"></a><a href="#185">185</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="186"></a><a href="#186">186</a></div></td><td class="codeLine"> * Auto Depth</td></tr>
<tr><td><div align="right"><a name="187"></a><a href="#187">187</a></div></td><td class="codeLine"> * Number of rows to analyze when attempting to auto-detect delimiter</td></tr>
<tr><td><div align="right"><a name="188"></a><a href="#188">188</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="189"></a><a href="#189">189</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="190"></a><a href="#190">190</a></div></td><td class="codeLine"> * @var int</td></tr>
<tr><td><div align="right"><a name="191"></a><a href="#191">191</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="192"></a><a href="#192">192</a></div></td><td class="codeLine"> public $auto_depth = 15;</td></tr>
<tr><td><div align="right"><a name="193"></a><a href="#193">193</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="194"></a><a href="#194">194</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="195"></a><a href="#195">195</a></div></td><td class="codeLine"> * Auto Non Charts</td></tr>
<tr><td><div align="right"><a name="196"></a><a href="#196">196</a></div></td><td class="codeLine"> * Characters that should be ignored when attempting to auto-detect delimiter</td></tr>
<tr><td><div align="right"><a name="197"></a><a href="#197">197</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="198"></a><a href="#198">198</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="199"></a><a href="#199">199</a></div></td><td class="codeLine"> * @var string</td></tr>
<tr><td><div align="right"><a name="200"></a><a href="#200">200</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="201"></a><a href="#201">201</a></div></td><td class="codeLine"> public $auto_non_chars = &quot;a-zA-Z0-9\n\r&quot;;</td></tr>
<tr><td><div align="right"><a name="202"></a><a href="#202">202</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="203"></a><a href="#203">203</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="204"></a><a href="#204">204</a></div></td><td class="codeLine"> * Auto Preferred</td></tr>
<tr><td><div align="right"><a name="205"></a><a href="#205">205</a></div></td><td class="codeLine"> * preferred delimiter characters, only used when all filtering method</td></tr>
<tr><td><div align="right"><a name="206"></a><a href="#206">206</a></div></td><td class="codeLine"> * returns multiple possible delimiters (happens very rarely)</td></tr>
<tr><td><div align="right"><a name="207"></a><a href="#207">207</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="208"></a><a href="#208">208</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="209"></a><a href="#209">209</a></div></td><td class="codeLine"> * @var string</td></tr>
<tr><td><div align="right"><a name="210"></a><a href="#210">210</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="211"></a><a href="#211">211</a></div></td><td class="codeLine"> public $auto_preferred = &quot;,;\t.:|&quot;;</td></tr>
<tr><td><div align="right"><a name="212"></a><a href="#212">212</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="213"></a><a href="#213">213</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="214"></a><a href="#214">214</a></div></td><td class="codeLine"> * Convert Encoding</td></tr>
<tr><td><div align="right"><a name="215"></a><a href="#215">215</a></div></td><td class="codeLine"> * Should we convert the csv encoding?</td></tr>
<tr><td><div align="right"><a name="216"></a><a href="#216">216</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="217"></a><a href="#217">217</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="218"></a><a href="#218">218</a></div></td><td class="codeLine"> * @var bool</td></tr>
<tr><td><div align="right"><a name="219"></a><a href="#219">219</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="220"></a><a href="#220">220</a></div></td><td class="codeLine"> public $convert_encoding = false;</td></tr>
<tr><td><div align="right"><a name="221"></a><a href="#221">221</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="222"></a><a href="#222">222</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="223"></a><a href="#223">223</a></div></td><td class="codeLine"> * Input Encoding</td></tr>
<tr><td><div align="right"><a name="224"></a><a href="#224">224</a></div></td><td class="codeLine"> * Set the input encoding</td></tr>
<tr><td><div align="right"><a name="225"></a><a href="#225">225</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="226"></a><a href="#226">226</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="227"></a><a href="#227">227</a></div></td><td class="codeLine"> * @var string</td></tr>
<tr><td><div align="right"><a name="228"></a><a href="#228">228</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="229"></a><a href="#229">229</a></div></td><td class="codeLine"> public $input_encoding = 'ISO-8859-1';</td></tr>
<tr><td><div align="right"><a name="230"></a><a href="#230">230</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="231"></a><a href="#231">231</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="232"></a><a href="#232">232</a></div></td><td class="codeLine"> * Output Encoding</td></tr>
<tr><td><div align="right"><a name="233"></a><a href="#233">233</a></div></td><td class="codeLine"> * Set the output encoding</td></tr>
<tr><td><div align="right"><a name="234"></a><a href="#234">234</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="235"></a><a href="#235">235</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="236"></a><a href="#236">236</a></div></td><td class="codeLine"> * @var string</td></tr>
<tr><td><div align="right"><a name="237"></a><a href="#237">237</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="238"></a><a href="#238">238</a></div></td><td class="codeLine"> public $output_encoding = 'ISO-8859-1';</td></tr>
<tr><td><div align="right"><a name="239"></a><a href="#239">239</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="240"></a><a href="#240">240</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="241"></a><a href="#241">241</a></div></td><td class="codeLine"> * Linefeed</td></tr>
<tr><td><div align="right"><a name="242"></a><a href="#242">242</a></div></td><td class="codeLine"> * Line feed characters used by unparse, save, and output methods</td></tr>
<tr><td><div align="right"><a name="243"></a><a href="#243">243</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="244"></a><a href="#244">244</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="245"></a><a href="#245">245</a></div></td><td class="codeLine"> * @var string</td></tr>
<tr><td><div align="right"><a name="246"></a><a href="#246">246</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="247"></a><a href="#247">247</a></div></td><td class="codeLine"> public $linefeed = &quot;\r&quot;;</td></tr>
<tr><td><div align="right"><a name="248"></a><a href="#248">248</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="249"></a><a href="#249">249</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="250"></a><a href="#250">250</a></div></td><td class="codeLine"> * Output Delimiter</td></tr>
<tr><td><div align="right"><a name="251"></a><a href="#251">251</a></div></td><td class="codeLine"> * Sets the output delimiter used by the output method</td></tr>
<tr><td><div align="right"><a name="252"></a><a href="#252">252</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="253"></a><a href="#253">253</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="254"></a><a href="#254">254</a></div></td><td class="codeLine"> * @var string</td></tr>
<tr><td><div align="right"><a name="255"></a><a href="#255">255</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="256"></a><a href="#256">256</a></div></td><td class="codeLine"> public $output_delimiter = ',';</td></tr>
<tr><td><div align="right"><a name="257"></a><a href="#257">257</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="258"></a><a href="#258">258</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="259"></a><a href="#259">259</a></div></td><td class="codeLine"> * Output filename</td></tr>
<tr><td><div align="right"><a name="260"></a><a href="#260">260</a></div></td><td class="codeLine"> * Sets the output filename</td></tr>
<tr><td><div align="right"><a name="261"></a><a href="#261">261</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="262"></a><a href="#262">262</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="263"></a><a href="#263">263</a></div></td><td class="codeLine"> * @var string</td></tr>
<tr><td><div align="right"><a name="264"></a><a href="#264">264</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="265"></a><a href="#265">265</a></div></td><td class="codeLine"> public $output_filename = 'data.csv';</td></tr>
<tr><td><div align="right"><a name="266"></a><a href="#266">266</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="267"></a><a href="#267">267</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="268"></a><a href="#268">268</a></div></td><td class="codeLine"> * Keep File Data</td></tr>
<tr><td><div align="right"><a name="269"></a><a href="#269">269</a></div></td><td class="codeLine"> * keep raw file data in memory after successful parsing (useful for debugging)</td></tr>
<tr><td><div align="right"><a name="270"></a><a href="#270">270</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="271"></a><a href="#271">271</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="272"></a><a href="#272">272</a></div></td><td class="codeLine"> * @var bool</td></tr>
<tr><td><div align="right"><a name="273"></a><a href="#273">273</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="274"></a><a href="#274">274</a></div></td><td class="codeLine"> public $keep_file_data = false;</td></tr>
<tr><td><div align="right"><a name="275"></a><a href="#275">275</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="276"></a><a href="#276">276</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="277"></a><a href="#277">277</a></div></td><td class="codeLine"> * Internal variables</td></tr>
<tr><td><div align="right"><a name="278"></a><a href="#278">278</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="279"></a><a href="#279">279</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="280"></a><a href="#280">280</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="281"></a><a href="#281">281</a></div></td><td class="codeLine"> * File</td></tr>
<tr><td><div align="right"><a name="282"></a><a href="#282">282</a></div></td><td class="codeLine"> * Current Filename</td></tr>
<tr><td><div align="right"><a name="283"></a><a href="#283">283</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="284"></a><a href="#284">284</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="285"></a><a href="#285">285</a></div></td><td class="codeLine"> * @var string</td></tr>
<tr><td><div align="right"><a name="286"></a><a href="#286">286</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="287"></a><a href="#287">287</a></div></td><td class="codeLine"> public $file;</td></tr>
<tr><td><div align="right"><a name="288"></a><a href="#288">288</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="289"></a><a href="#289">289</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="290"></a><a href="#290">290</a></div></td><td class="codeLine"> * File Data</td></tr>
<tr><td><div align="right"><a name="291"></a><a href="#291">291</a></div></td><td class="codeLine"> * Current file data</td></tr>
<tr><td><div align="right"><a name="292"></a><a href="#292">292</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="293"></a><a href="#293">293</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="294"></a><a href="#294">294</a></div></td><td class="codeLine"> * @var string</td></tr>
<tr><td><div align="right"><a name="295"></a><a href="#295">295</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="296"></a><a href="#296">296</a></div></td><td class="codeLine"> public $file_data;</td></tr>
<tr><td><div align="right"><a name="297"></a><a href="#297">297</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="298"></a><a href="#298">298</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="299"></a><a href="#299">299</a></div></td><td class="codeLine"> * Error</td></tr>
<tr><td><div align="right"><a name="300"></a><a href="#300">300</a></div></td><td class="codeLine"> * Contains the error code if one occured</td></tr>
<tr><td><div align="right"><a name="301"></a><a href="#301">301</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="302"></a><a href="#302">302</a></div></td><td class="codeLine"> * 0 = No errors found. Everything should be fine :)</td></tr>
<tr><td><div align="right"><a name="303"></a><a href="#303">303</a></div></td><td class="codeLine"> * 1 = Hopefully correctable syntax error was found.</td></tr>
<tr><td><div align="right"><a name="304"></a><a href="#304">304</a></div></td><td class="codeLine"> * 2 = Enclosure character (double quote by default)</td></tr>
<tr><td><div align="right"><a name="305"></a><a href="#305">305</a></div></td><td class="codeLine"> * was found in non-enclosed field. This means</td></tr>
<tr><td><div align="right"><a name="306"></a><a href="#306">306</a></div></td><td class="codeLine"> * the file is either corrupt, or does not</td></tr>
<tr><td><div align="right"><a name="307"></a><a href="#307">307</a></div></td><td class="codeLine"> * standard CSV formatting. Please validate</td></tr>
<tr><td><div align="right"><a name="308"></a><a href="#308">308</a></div></td><td class="codeLine"> * the parsed data yourself.</td></tr>
<tr><td><div align="right"><a name="309"></a><a href="#309">309</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="310"></a><a href="#310">310</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="311"></a><a href="#311">311</a></div></td><td class="codeLine"> * @var int</td></tr>
<tr><td><div align="right"><a name="312"></a><a href="#312">312</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="313"></a><a href="#313">313</a></div></td><td class="codeLine"> public $error = 0;</td></tr>
<tr><td><div align="right"><a name="314"></a><a href="#314">314</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="315"></a><a href="#315">315</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="316"></a><a href="#316">316</a></div></td><td class="codeLine"> * Error Information</td></tr>
<tr><td><div align="right"><a name="317"></a><a href="#317">317</a></div></td><td class="codeLine"> * Detailed error information</td></tr>
<tr><td><div align="right"><a name="318"></a><a href="#318">318</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="319"></a><a href="#319">319</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="320"></a><a href="#320">320</a></div></td><td class="codeLine"> * @var array</td></tr>
<tr><td><div align="right"><a name="321"></a><a href="#321">321</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="322"></a><a href="#322">322</a></div></td><td class="codeLine"> public $error_info = array();</td></tr>
<tr><td><div align="right"><a name="323"></a><a href="#323">323</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="324"></a><a href="#324">324</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="325"></a><a href="#325">325</a></div></td><td class="codeLine"> * Titles</td></tr>
<tr><td><div align="right"><a name="326"></a><a href="#326">326</a></div></td><td class="codeLine"> * CSV titles if they exists</td></tr>
<tr><td><div align="right"><a name="327"></a><a href="#327">327</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="328"></a><a href="#328">328</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="329"></a><a href="#329">329</a></div></td><td class="codeLine"> * @var array</td></tr>
<tr><td><div align="right"><a name="330"></a><a href="#330">330</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="331"></a><a href="#331">331</a></div></td><td class="codeLine"> public $titles = array();</td></tr>
<tr><td><div align="right"><a name="332"></a><a href="#332">332</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="333"></a><a href="#333">333</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="334"></a><a href="#334">334</a></div></td><td class="codeLine"> * Data</td></tr>
<tr><td><div align="right"><a name="335"></a><a href="#335">335</a></div></td><td class="codeLine"> * Two dimensional array of CSV data</td></tr>
<tr><td><div align="right"><a name="336"></a><a href="#336">336</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="337"></a><a href="#337">337</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="338"></a><a href="#338">338</a></div></td><td class="codeLine"> * @var array</td></tr>
<tr><td><div align="right"><a name="339"></a><a href="#339">339</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="340"></a><a href="#340">340</a></div></td><td class="codeLine"> public $data = array();</td></tr>
<tr><td><div align="right"><a name="341"></a><a href="#341">341</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="342"></a><a href="#342">342</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="343"></a><a href="#343">343</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="344"></a><a href="#344">344</a></div></td><td class="codeLine"> * Constructor</td></tr>
<tr><td><div align="right"><a name="345"></a><a href="#345">345</a></div></td><td class="codeLine"> * Class constructor</td></tr>
<tr><td><div align="right"><a name="346"></a><a href="#346">346</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="347"></a><a href="#347">347</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="348"></a><a href="#348">348</a></div></td><td class="codeLine"> * @param [string] input The CSV string or a direct filepath</td></tr>
<tr><td><div align="right"><a name="349"></a><a href="#349">349</a></div></td><td class="codeLine"> * @param [integer] offset Number of rows to ignore from the beginning of the data</td></tr>
<tr><td><div align="right"><a name="350"></a><a href="#350">350</a></div></td><td class="codeLine"> * @param [integer] limit Limits the number of returned rows to specified amount</td></tr>
<tr><td><div align="right"><a name="351"></a><a href="#351">351</a></div></td><td class="codeLine"> * @param [string] conditions Basic SQL-like conditions for row matching</td></tr>
<tr><td><div align="right"><a name="352"></a><a href="#352">352</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="353"></a><a href="#353">353</a></div></td><td class="codeLine"> public function __construct ($input = null, $offset = null, $limit = null, $conditions = null) {</td></tr>
<tr class="success popin" data-title="34 tests cover line 354" data-content="&lt;ul&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_heading_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_fields_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_sort_by_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_sort_reverse_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_sort_type_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_delimiter_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_enclosure_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_enclose_all_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_conditions_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_offset_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_limit_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_auto_depth_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_auto_non_chars_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_auto_preferred_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_convert_encoding_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_input_encoding_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_output_encoding_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_linefeed_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_output_delimiter_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_output_filename_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_keep_file_data_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_file_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_file_data_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_error_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_error_info_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_titles_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_data_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;worthless_properties_Test::test_propertiesCount&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;worthless_properties_Test::test_property_names&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;worthless_properties_Test::test_count_public_properties&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;construct_methods_Test::test_offset_param&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;construct_methods_Test::test_limit_param&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;construct_methods_Test::test_conditions_param&lt;/li&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="354"></a><a href="#354">354</a></div></td><td class="codeLine"> if ( $offset !== null ) {</td></tr>
<tr class="success popin" data-title="1 test covers line 355" data-content="&lt;ul&gt;&lt;li class=&quot;success&quot;&gt;construct_methods_Test::test_offset_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="355"></a><a href="#355">355</a></div></td><td class="codeLine"> $this-&gt;offset = $offset;</td></tr>
<tr class="success popin" data-title="1 test covers line 356" data-content="&lt;ul&gt;&lt;li class=&quot;success&quot;&gt;construct_methods_Test::test_offset_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="356"></a><a href="#356">356</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="357"></a><a href="#357">357</a></div></td><td class="codeLine"></td></tr>
<tr class="success popin" data-title="34 tests cover line 358" data-content="&lt;ul&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_heading_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_fields_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_sort_by_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_sort_reverse_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_sort_type_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_delimiter_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_enclosure_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_enclose_all_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_conditions_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_offset_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_limit_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_auto_depth_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_auto_non_chars_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_auto_preferred_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_convert_encoding_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_input_encoding_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_output_encoding_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_linefeed_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_output_delimiter_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_output_filename_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_keep_file_data_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_file_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_file_data_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_error_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_error_info_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_titles_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_data_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;worthless_properties_Test::test_propertiesCount&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;worthless_properties_Test::test_property_names&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;worthless_properties_Test::test_count_public_properties&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;construct_methods_Test::test_offset_param&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;construct_methods_Test::test_limit_param&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;construct_methods_Test::test_conditions_param&lt;/li&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="358"></a><a href="#358">358</a></div></td><td class="codeLine"> if ( $limit !== null ) {</td></tr>
<tr class="success popin" data-title="1 test covers line 359" data-content="&lt;ul&gt;&lt;li class=&quot;success&quot;&gt;construct_methods_Test::test_limit_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="359"></a><a href="#359">359</a></div></td><td class="codeLine"> $this-&gt;limit = $limit;</td></tr>
<tr class="success popin" data-title="1 test covers line 360" data-content="&lt;ul&gt;&lt;li class=&quot;success&quot;&gt;construct_methods_Test::test_limit_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="360"></a><a href="#360">360</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="361"></a><a href="#361">361</a></div></td><td class="codeLine"></td></tr>
<tr class="success popin" data-title="34 tests cover line 362" data-content="&lt;ul&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_heading_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_fields_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_sort_by_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_sort_reverse_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_sort_type_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_delimiter_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_enclosure_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_enclose_all_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_conditions_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_offset_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_limit_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_auto_depth_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_auto_non_chars_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_auto_preferred_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_convert_encoding_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_input_encoding_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_output_encoding_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_linefeed_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_output_delimiter_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_output_filename_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_keep_file_data_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_file_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_file_data_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_error_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_error_info_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_titles_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_data_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;worthless_properties_Test::test_propertiesCount&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;worthless_properties_Test::test_property_names&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;worthless_properties_Test::test_count_public_properties&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;construct_methods_Test::test_offset_param&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;construct_methods_Test::test_limit_param&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;construct_methods_Test::test_conditions_param&lt;/li&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="362"></a><a href="#362">362</a></div></td><td class="codeLine"> if ( count($conditions) &gt; 0 ) {</td></tr>
<tr class="success popin" data-title="1 test covers line 363" data-content="&lt;ul&gt;&lt;li class=&quot;success&quot;&gt;construct_methods_Test::test_conditions_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="363"></a><a href="#363">363</a></div></td><td class="codeLine"> $this-&gt;conditions = $conditions;</td></tr>
<tr class="success popin" data-title="1 test covers line 364" data-content="&lt;ul&gt;&lt;li class=&quot;success&quot;&gt;construct_methods_Test::test_conditions_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="364"></a><a href="#364">364</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="365"></a><a href="#365">365</a></div></td><td class="codeLine"></td></tr>
<tr class="success popin" data-title="34 tests cover line 366" data-content="&lt;ul&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_heading_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_fields_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_sort_by_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_sort_reverse_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_sort_type_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_delimiter_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_enclosure_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_enclose_all_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_conditions_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_offset_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_limit_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_auto_depth_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_auto_non_chars_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_auto_preferred_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_convert_encoding_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_input_encoding_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_output_encoding_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_linefeed_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_output_delimiter_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_output_filename_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_keep_file_data_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_file_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_file_data_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_error_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_error_info_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_titles_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_data_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;worthless_properties_Test::test_propertiesCount&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;worthless_properties_Test::test_property_names&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;worthless_properties_Test::test_count_public_properties&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;construct_methods_Test::test_offset_param&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;construct_methods_Test::test_limit_param&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;construct_methods_Test::test_conditions_param&lt;/li&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="366"></a><a href="#366">366</a></div></td><td class="codeLine"> if ( !empty($input) ) {</td></tr>
<tr class="success popin" data-title="1 test covers line 367" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="367"></a><a href="#367">367</a></div></td><td class="codeLine"> $this-&gt;parse($input);</td></tr>
<tr class="success popin" data-title="1 test covers line 368" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="368"></a><a href="#368">368</a></div></td><td class="codeLine"> }</td></tr>
<tr class="success popin" data-title="34 tests cover line 369" data-content="&lt;ul&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_heading_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_fields_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_sort_by_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_sort_reverse_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_sort_type_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_delimiter_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_enclosure_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_enclose_all_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_conditions_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_offset_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_limit_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_auto_depth_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_auto_non_chars_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_auto_preferred_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_convert_encoding_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_input_encoding_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_output_encoding_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_linefeed_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_output_delimiter_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_output_filename_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_keep_file_data_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_file_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_file_data_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_error_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_error_info_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_titles_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;default_values_properties_Test::test_data_default&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;worthless_properties_Test::test_propertiesCount&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;worthless_properties_Test::test_property_names&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;worthless_properties_Test::test_count_public_properties&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;construct_methods_Test::test_offset_param&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;construct_methods_Test::test_limit_param&lt;/li&gt;&lt;li class=&quot;success&quot;&gt;construct_methods_Test::test_conditions_param&lt;/li&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="369"></a><a href="#369">369</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="370"></a><a href="#370">370</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="371"></a><a href="#371">371</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="372"></a><a href="#372">372</a></div></td><td class="codeLine"> // ==============================================</td></tr>
<tr><td><div align="right"><a name="373"></a><a href="#373">373</a></div></td><td class="codeLine"> // ----- [ Main Functions ] ---------------------</td></tr>
<tr><td><div align="right"><a name="374"></a><a href="#374">374</a></div></td><td class="codeLine"> // ==============================================</td></tr>
<tr><td><div align="right"><a name="375"></a><a href="#375">375</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="376"></a><a href="#376">376</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="377"></a><a href="#377">377</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="378"></a><a href="#378">378</a></div></td><td class="codeLine"> * Parse</td></tr>
<tr><td><div align="right"><a name="379"></a><a href="#379">379</a></div></td><td class="codeLine"> * Parse a CSV file or string</td></tr>
<tr><td><div align="right"><a name="380"></a><a href="#380">380</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="381"></a><a href="#381">381</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="382"></a><a href="#382">382</a></div></td><td class="codeLine"> * @param [string] input The CSV string or a direct filepath</td></tr>
<tr><td><div align="right"><a name="383"></a><a href="#383">383</a></div></td><td class="codeLine"> * @param [integer] offset Number of rows to ignore from the beginning of the data</td></tr>
<tr><td><div align="right"><a name="384"></a><a href="#384">384</a></div></td><td class="codeLine"> * @param [integer] limit Limits the number of returned rows to specified amount</td></tr>
<tr><td><div align="right"><a name="385"></a><a href="#385">385</a></div></td><td class="codeLine"> * @param [string] conditions Basic SQL-like conditions for row matching</td></tr>
<tr><td><div align="right"><a name="386"></a><a href="#386">386</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="387"></a><a href="#387">387</a></div></td><td class="codeLine"> * @return [bool]</td></tr>
<tr><td><div align="right"><a name="388"></a><a href="#388">388</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="389"></a><a href="#389">389</a></div></td><td class="codeLine"> public function parse ($input = null, $offset = null, $limit = null, $conditions = null) {</td></tr>
<tr class="success popin" data-title="1 test covers line 390" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="390"></a><a href="#390">390</a></div></td><td class="codeLine"> if ( $input === null ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="391"></a><a href="#391">391</a></div></td><td class="codeLine"> $input = $this-&gt;file;</td></tr>
<tr class="danger"><td><div align="right"><a name="392"></a><a href="#392">392</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="393"></a><a href="#393">393</a></div></td><td class="codeLine"></td></tr>
<tr class="success popin" data-title="1 test covers line 394" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="394"></a><a href="#394">394</a></div></td><td class="codeLine"> if ( !empty($input) ) {</td></tr>
<tr class="success popin" data-title="1 test covers line 395" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="395"></a><a href="#395">395</a></div></td><td class="codeLine"> if ( $offset !== null ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="396"></a><a href="#396">396</a></div></td><td class="codeLine"> $this-&gt;offset = $offset;</td></tr>
<tr class="danger"><td><div align="right"><a name="397"></a><a href="#397">397</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="398"></a><a href="#398">398</a></div></td><td class="codeLine"></td></tr>
<tr class="success popin" data-title="1 test covers line 399" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="399"></a><a href="#399">399</a></div></td><td class="codeLine"> if ($limit !== null ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="400"></a><a href="#400">400</a></div></td><td class="codeLine"> $this-&gt;limit = $limit;</td></tr>
<tr class="danger"><td><div align="right"><a name="401"></a><a href="#401">401</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="402"></a><a href="#402">402</a></div></td><td class="codeLine"></td></tr>
<tr class="success popin" data-title="1 test covers line 403" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="403"></a><a href="#403">403</a></div></td><td class="codeLine"> if ( count($conditions) &gt; 0 ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="404"></a><a href="#404">404</a></div></td><td class="codeLine"> $this-&gt;conditions = $conditions;</td></tr>
<tr class="danger"><td><div align="right"><a name="405"></a><a href="#405">405</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="406"></a><a href="#406">406</a></div></td><td class="codeLine"></td></tr>
<tr class="success popin" data-title="1 test covers line 407" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="407"></a><a href="#407">407</a></div></td><td class="codeLine"> if ( is_readable($input) ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="408"></a><a href="#408">408</a></div></td><td class="codeLine"> $this-&gt;data = $this-&gt;parse_file($input);</td></tr>
<tr class="danger"><td><div align="right"><a name="409"></a><a href="#409">409</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="410"></a><a href="#410">410</a></div></td><td class="codeLine"> else {</td></tr>
<tr class="success popin" data-title="1 test covers line 411" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="411"></a><a href="#411">411</a></div></td><td class="codeLine"> $this-&gt;file_data = &amp;$input;</td></tr>
<tr class="success popin" data-title="1 test covers line 412" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="412"></a><a href="#412">412</a></div></td><td class="codeLine"> $this-&gt;data = $this-&gt;parse_string();</td></tr>
<tr><td><div align="right"><a name="413"></a><a href="#413">413</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="414"></a><a href="#414">414</a></div></td><td class="codeLine"></td></tr>
<tr class="success popin" data-title="1 test covers line 415" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="415"></a><a href="#415">415</a></div></td><td class="codeLine"> if ( $this-&gt;data === false ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="416"></a><a href="#416">416</a></div></td><td class="codeLine"> return false;</td></tr>
<tr><td><div align="right"><a name="417"></a><a href="#417">417</a></div></td><td class="codeLine"> }</td></tr>
<tr class="success popin" data-title="1 test covers line 418" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="418"></a><a href="#418">418</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="419"></a><a href="#419">419</a></div></td><td class="codeLine"></td></tr>
<tr class="success popin" data-title="1 test covers line 420" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="420"></a><a href="#420">420</a></div></td><td class="codeLine"> return true;</td></tr>
<tr><td><div align="right"><a name="421"></a><a href="#421">421</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="422"></a><a href="#422">422</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="423"></a><a href="#423">423</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="424"></a><a href="#424">424</a></div></td><td class="codeLine"> * Save</td></tr>
<tr><td><div align="right"><a name="425"></a><a href="#425">425</a></div></td><td class="codeLine"> * Save changes, or write a new file and/or data</td></tr>
<tr><td><div align="right"><a name="426"></a><a href="#426">426</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="427"></a><a href="#427">427</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="428"></a><a href="#428">428</a></div></td><td class="codeLine"> * @param [string] $file File location to save to</td></tr>
<tr><td><div align="right"><a name="429"></a><a href="#429">429</a></div></td><td class="codeLine"> * @param [array] $data 2D array of data</td></tr>
<tr><td><div align="right"><a name="430"></a><a href="#430">430</a></div></td><td class="codeLine"> * @param [bool] $append Append current data to end of target CSV, if file exists</td></tr>
<tr><td><div align="right"><a name="431"></a><a href="#431">431</a></div></td><td class="codeLine"> * @param [array] $fields Field names</td></tr>
<tr><td><div align="right"><a name="432"></a><a href="#432">432</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="433"></a><a href="#433">433</a></div></td><td class="codeLine"> * @return [bool]</td></tr>
<tr><td><div align="right"><a name="434"></a><a href="#434">434</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="435"></a><a href="#435">435</a></div></td><td class="codeLine"> public function save ($file = null, $data = array(), $append = false, $fields = array()) {</td></tr>
<tr class="danger"><td><div align="right"><a name="436"></a><a href="#436">436</a></div></td><td class="codeLine"> if ( empty($file) ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="437"></a><a href="#437">437</a></div></td><td class="codeLine"> $file = &amp;$this-&gt;file;</td></tr>
<tr class="danger"><td><div align="right"><a name="438"></a><a href="#438">438</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="439"></a><a href="#439">439</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="440"></a><a href="#440">440</a></div></td><td class="codeLine"> $mode = ($append) ? 'at' : 'wt';</td></tr>
<tr class="danger"><td><div align="right"><a name="441"></a><a href="#441">441</a></div></td><td class="codeLine"> $is_php = (preg_match('/\.php$/i', $file)) ? true : false;</td></tr>
<tr><td><div align="right"><a name="442"></a><a href="#442">442</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="443"></a><a href="#443">443</a></div></td><td class="codeLine"> return $this-&gt;_wfile($file, $this-&gt;unparse($data, $fields, $append, $is_php), $mode);</td></tr>
<tr><td><div align="right"><a name="444"></a><a href="#444">444</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="445"></a><a href="#445">445</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="446"></a><a href="#446">446</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="447"></a><a href="#447">447</a></div></td><td class="codeLine"> * Output</td></tr>
<tr><td><div align="right"><a name="448"></a><a href="#448">448</a></div></td><td class="codeLine"> * Generate a CSV based string for output.</td></tr>
<tr><td><div align="right"><a name="449"></a><a href="#449">449</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="450"></a><a href="#450">450</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="451"></a><a href="#451">451</a></div></td><td class="codeLine"> * @param [string] $filename If specified, headers and data will be output directly to browser as a downloable file</td></tr>
<tr><td><div align="right"><a name="452"></a><a href="#452">452</a></div></td><td class="codeLine"> * @param [array] $data 2D array with data</td></tr>
<tr><td><div align="right"><a name="453"></a><a href="#453">453</a></div></td><td class="codeLine"> * @param [array] $fields Field names</td></tr>
<tr><td><div align="right"><a name="454"></a><a href="#454">454</a></div></td><td class="codeLine"> * @param [type] $delimiter delimiter used to separate data</td></tr>
<tr><td><div align="right"><a name="455"></a><a href="#455">455</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="456"></a><a href="#456">456</a></div></td><td class="codeLine"> * @return [string]</td></tr>
<tr><td><div align="right"><a name="457"></a><a href="#457">457</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="458"></a><a href="#458">458</a></div></td><td class="codeLine"> public function output ($filename = null, $data = array(), $fields = array(), $delimiter = null) {</td></tr>
<tr class="danger"><td><div align="right"><a name="459"></a><a href="#459">459</a></div></td><td class="codeLine"> if ( empty($filename) ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="460"></a><a href="#460">460</a></div></td><td class="codeLine"> $filename = $this-&gt;output_filename;</td></tr>
<tr class="danger"><td><div align="right"><a name="461"></a><a href="#461">461</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="462"></a><a href="#462">462</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="463"></a><a href="#463">463</a></div></td><td class="codeLine"> if ( $delimiter === null ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="464"></a><a href="#464">464</a></div></td><td class="codeLine"> $delimiter = $this-&gt;output_delimiter;</td></tr>
<tr class="danger"><td><div align="right"><a name="465"></a><a href="#465">465</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="466"></a><a href="#466">466</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="467"></a><a href="#467">467</a></div></td><td class="codeLine"> $data = $this-&gt;unparse($data, $fields, null, null, $delimiter);</td></tr>
<tr><td><div align="right"><a name="468"></a><a href="#468">468</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="469"></a><a href="#469">469</a></div></td><td class="codeLine"> if ( $filename !== null ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="470"></a><a href="#470">470</a></div></td><td class="codeLine"> header('Content-type: application/csv');</td></tr>
<tr class="danger"><td><div align="right"><a name="471"></a><a href="#471">471</a></div></td><td class="codeLine"> header('Content-Length: '.strlen($data));</td></tr>
<tr class="danger"><td><div align="right"><a name="472"></a><a href="#472">472</a></div></td><td class="codeLine"> header('Cache-Control: no-cache, must-revalidate');</td></tr>
<tr class="danger"><td><div align="right"><a name="473"></a><a href="#473">473</a></div></td><td class="codeLine"> header('Pragma: no-cache');</td></tr>
<tr class="danger"><td><div align="right"><a name="474"></a><a href="#474">474</a></div></td><td class="codeLine"> header('Expires: 0');</td></tr>
<tr class="danger"><td><div align="right"><a name="475"></a><a href="#475">475</a></div></td><td class="codeLine"> header('Content-Disposition: attachment; filename=&quot;'.$filename.'&quot;; modification-date=&quot;'.date('r').'&quot;;');</td></tr>
<tr><td><div align="right"><a name="476"></a><a href="#476">476</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="477"></a><a href="#477">477</a></div></td><td class="codeLine"> echo $data;</td></tr>
<tr class="danger"><td><div align="right"><a name="478"></a><a href="#478">478</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="479"></a><a href="#479">479</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="480"></a><a href="#480">480</a></div></td><td class="codeLine"> return $data;</td></tr>
<tr><td><div align="right"><a name="481"></a><a href="#481">481</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="482"></a><a href="#482">482</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="483"></a><a href="#483">483</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="484"></a><a href="#484">484</a></div></td><td class="codeLine"> * Encoding</td></tr>
<tr><td><div align="right"><a name="485"></a><a href="#485">485</a></div></td><td class="codeLine"> * Convert character encoding</td></tr>
<tr><td><div align="right"><a name="486"></a><a href="#486">486</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="487"></a><a href="#487">487</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="488"></a><a href="#488">488</a></div></td><td class="codeLine"> * @param [string] $input Input character encoding, uses default if left blank</td></tr>
<tr><td><div align="right"><a name="489"></a><a href="#489">489</a></div></td><td class="codeLine"> * @param [string] $output Output character encoding, uses default if left blank</td></tr>
<tr><td><div align="right"><a name="490"></a><a href="#490">490</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="491"></a><a href="#491">491</a></div></td><td class="codeLine"> public function encoding ($input = null, $output = null) {</td></tr>
<tr class="danger"><td><div align="right"><a name="492"></a><a href="#492">492</a></div></td><td class="codeLine"> $this-&gt;convert_encoding = true;</td></tr>
<tr class="danger"><td><div align="right"><a name="493"></a><a href="#493">493</a></div></td><td class="codeLine"> if ( $input !== null ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="494"></a><a href="#494">494</a></div></td><td class="codeLine"> $this-&gt;input_encoding = $input;</td></tr>
<tr class="danger"><td><div align="right"><a name="495"></a><a href="#495">495</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="496"></a><a href="#496">496</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="497"></a><a href="#497">497</a></div></td><td class="codeLine"> if ( $output !== null ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="498"></a><a href="#498">498</a></div></td><td class="codeLine"> $this-&gt;output_encoding = $output;</td></tr>
<tr class="danger"><td><div align="right"><a name="499"></a><a href="#499">499</a></div></td><td class="codeLine"> }</td></tr>
<tr class="danger"><td><div align="right"><a name="500"></a><a href="#500">500</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="501"></a><a href="#501">501</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="502"></a><a href="#502">502</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="503"></a><a href="#503">503</a></div></td><td class="codeLine"> * Auto</td></tr>
<tr><td><div align="right"><a name="504"></a><a href="#504">504</a></div></td><td class="codeLine"> * Auto-Detect Delimiter: Find delimiter by analyzing a specific number of</td></tr>
<tr><td><div align="right"><a name="505"></a><a href="#505">505</a></div></td><td class="codeLine"> * rows to determine most probable delimiter character</td></tr>
<tr><td><div align="right"><a name="506"></a><a href="#506">506</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="507"></a><a href="#507">507</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="508"></a><a href="#508">508</a></div></td><td class="codeLine"> * @param [string] $file Local CSV file</td></tr>
<tr><td><div align="right"><a name="509"></a><a href="#509">509</a></div></td><td class="codeLine"> * @param [bool] $parse True/false parse file directly</td></tr>
<tr><td><div align="right"><a name="510"></a><a href="#510">510</a></div></td><td class="codeLine"> * @param [int] $search_depth Number of rows to analyze</td></tr>
<tr><td><div align="right"><a name="511"></a><a href="#511">511</a></div></td><td class="codeLine"> * @param [string] $preferred Preferred delimiter characters</td></tr>
<tr><td><div align="right"><a name="512"></a><a href="#512">512</a></div></td><td class="codeLine"> * @param [string] $enclosure Enclosure character, default is double quote (&quot;).</td></tr>
<tr><td><div align="right"><a name="513"></a><a href="#513">513</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="514"></a><a href="#514">514</a></div></td><td class="codeLine"> * @return [string]</td></tr>
<tr><td><div align="right"><a name="515"></a><a href="#515">515</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="516"></a><a href="#516">516</a></div></td><td class="codeLine"> public function auto ($file = null, $parse = true, $search_depth = null, $preferred = null, $enclosure = null) {</td></tr>
<tr class="danger"><td><div align="right"><a name="517"></a><a href="#517">517</a></div></td><td class="codeLine"> if ( $file === null ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="518"></a><a href="#518">518</a></div></td><td class="codeLine"> $file = $this-&gt;file;</td></tr>
<tr class="danger"><td><div align="right"><a name="519"></a><a href="#519">519</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="520"></a><a href="#520">520</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="521"></a><a href="#521">521</a></div></td><td class="codeLine"> if ( empty($search_depth) ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="522"></a><a href="#522">522</a></div></td><td class="codeLine"> $search_depth = $this-&gt;auto_depth;</td></tr>
<tr class="danger"><td><div align="right"><a name="523"></a><a href="#523">523</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="524"></a><a href="#524">524</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="525"></a><a href="#525">525</a></div></td><td class="codeLine"> if ( $enclosure === null ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="526"></a><a href="#526">526</a></div></td><td class="codeLine"> $enclosure = $this-&gt;enclosure;</td></tr>
<tr class="danger"><td><div align="right"><a name="527"></a><a href="#527">527</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="528"></a><a href="#528">528</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="529"></a><a href="#529">529</a></div></td><td class="codeLine"> if ( $preferred === null ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="530"></a><a href="#530">530</a></div></td><td class="codeLine"> $preferred = $this-&gt;auto_preferred;</td></tr>
<tr class="danger"><td><div align="right"><a name="531"></a><a href="#531">531</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="532"></a><a href="#532">532</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="533"></a><a href="#533">533</a></div></td><td class="codeLine"> if ( empty($this-&gt;file_data) ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="534"></a><a href="#534">534</a></div></td><td class="codeLine"> if ( $this-&gt;_check_data($file) ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="535"></a><a href="#535">535</a></div></td><td class="codeLine"> $data = &amp;$this-&gt;file_data;</td></tr>
<tr class="danger"><td><div align="right"><a name="536"></a><a href="#536">536</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="537"></a><a href="#537">537</a></div></td><td class="codeLine"> else {</td></tr>
<tr class="danger"><td><div align="right"><a name="538"></a><a href="#538">538</a></div></td><td class="codeLine"> return false;</td></tr>
<tr><td><div align="right"><a name="539"></a><a href="#539">539</a></div></td><td class="codeLine"> }</td></tr>
<tr class="danger"><td><div align="right"><a name="540"></a><a href="#540">540</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="541"></a><a href="#541">541</a></div></td><td class="codeLine"> else {</td></tr>
<tr class="danger"><td><div align="right"><a name="542"></a><a href="#542">542</a></div></td><td class="codeLine"> $data = &amp;$this-&gt;file_data;</td></tr>
<tr><td><div align="right"><a name="543"></a><a href="#543">543</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="544"></a><a href="#544">544</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="545"></a><a href="#545">545</a></div></td><td class="codeLine"> $chars = array();</td></tr>
<tr class="danger"><td><div align="right"><a name="546"></a><a href="#546">546</a></div></td><td class="codeLine"> $strlen = strlen($data);</td></tr>
<tr class="danger"><td><div align="right"><a name="547"></a><a href="#547">547</a></div></td><td class="codeLine"> $enclosed = false;</td></tr>
<tr class="danger"><td><div align="right"><a name="548"></a><a href="#548">548</a></div></td><td class="codeLine"> $n = 1;</td></tr>
<tr class="danger"><td><div align="right"><a name="549"></a><a href="#549">549</a></div></td><td class="codeLine"> $to_end = true;</td></tr>
<tr><td><div align="right"><a name="550"></a><a href="#550">550</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="551"></a><a href="#551">551</a></div></td><td class="codeLine"> // walk specific depth finding posssible delimiter characters</td></tr>
<tr class="danger"><td><div align="right"><a name="552"></a><a href="#552">552</a></div></td><td class="codeLine"> for ( $i=0; $i &lt; $strlen; $i++ ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="553"></a><a href="#553">553</a></div></td><td class="codeLine"> $ch = $data{$i};</td></tr>
<tr class="danger"><td><div align="right"><a name="554"></a><a href="#554">554</a></div></td><td class="codeLine"> $nch = ( isset($data{$i+1}) ) ? $data{$i+1} : false ;</td></tr>
<tr class="danger"><td><div align="right"><a name="555"></a><a href="#555">555</a></div></td><td class="codeLine"> $pch = ( isset($data{$i-1}) ) ? $data{$i-1} : false ;</td></tr>
<tr><td><div align="right"><a name="556"></a><a href="#556">556</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="557"></a><a href="#557">557</a></div></td><td class="codeLine"> // open and closing quotes</td></tr>
<tr class="danger"><td><div align="right"><a name="558"></a><a href="#558">558</a></div></td><td class="codeLine"> if ( $ch == $enclosure ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="559"></a><a href="#559">559</a></div></td><td class="codeLine"> if ( !$enclosed || $nch != $enclosure ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="560"></a><a href="#560">560</a></div></td><td class="codeLine"> $enclosed = ( $enclosed ) ? false : true ;</td></tr>
<tr class="danger"><td><div align="right"><a name="561"></a><a href="#561">561</a></div></td><td class="codeLine"> }</td></tr>
<tr class="danger"><td><div align="right"><a name="562"></a><a href="#562">562</a></div></td><td class="codeLine"> elseif ( $enclosed ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="563"></a><a href="#563">563</a></div></td><td class="codeLine"> $i++;</td></tr>
<tr class="danger"><td><div align="right"><a name="564"></a><a href="#564">564</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="565"></a><a href="#565">565</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="566"></a><a href="#566">566</a></div></td><td class="codeLine"> // end of row</td></tr>
<tr class="danger"><td><div align="right"><a name="567"></a><a href="#567">567</a></div></td><td class="codeLine"> }</td></tr>
<tr class="danger"><td><div align="right"><a name="568"></a><a href="#568">568</a></div></td><td class="codeLine"> elseif ( ($ch == &quot;\n&quot; &amp;&amp; $pch != &quot;\r&quot; || $ch == &quot;\r&quot;) &amp;&amp; !$enclosed ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="569"></a><a href="#569">569</a></div></td><td class="codeLine"> if ( $n &gt;= $search_depth ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="570"></a><a href="#570">570</a></div></td><td class="codeLine"> $strlen = 0;</td></tr>
<tr class="danger"><td><div align="right"><a name="571"></a><a href="#571">571</a></div></td><td class="codeLine"> $to_end = false;</td></tr>
<tr class="danger"><td><div align="right"><a name="572"></a><a href="#572">572</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="573"></a><a href="#573">573</a></div></td><td class="codeLine"> else {</td></tr>
<tr class="danger"><td><div align="right"><a name="574"></a><a href="#574">574</a></div></td><td class="codeLine"> $n++;</td></tr>
<tr><td><div align="right"><a name="575"></a><a href="#575">575</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="576"></a><a href="#576">576</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="577"></a><a href="#577">577</a></div></td><td class="codeLine"> // count character</td></tr>
<tr class="danger"><td><div align="right"><a name="578"></a><a href="#578">578</a></div></td><td class="codeLine"> }</td></tr>
<tr class="danger"><td><div align="right"><a name="579"></a><a href="#579">579</a></div></td><td class="codeLine"> elseif (!$enclosed) {</td></tr>
<tr class="danger"><td><div align="right"><a name="580"></a><a href="#580">580</a></div></td><td class="codeLine"> if ( !preg_match('/['.preg_quote($this-&gt;auto_non_chars, '/').']/i', $ch) ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="581"></a><a href="#581">581</a></div></td><td class="codeLine"> if ( !isset($chars[$ch][$n]) ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="582"></a><a href="#582">582</a></div></td><td class="codeLine"> $chars[$ch][$n] = 1;</td></tr>
<tr class="danger"><td><div align="right"><a name="583"></a><a href="#583">583</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="584"></a><a href="#584">584</a></div></td><td class="codeLine"> else {</td></tr>
<tr class="danger"><td><div align="right"><a name="585"></a><a href="#585">585</a></div></td><td class="codeLine"> $chars[$ch][$n]++;</td></tr>
<tr><td><div align="right"><a name="586"></a><a href="#586">586</a></div></td><td class="codeLine"> }</td></tr>
<tr class="danger"><td><div align="right"><a name="587"></a><a href="#587">587</a></div></td><td class="codeLine"> }</td></tr>
<tr class="danger"><td><div align="right"><a name="588"></a><a href="#588">588</a></div></td><td class="codeLine"> }</td></tr>
<tr class="danger"><td><div align="right"><a name="589"></a><a href="#589">589</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="590"></a><a href="#590">590</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="591"></a><a href="#591">591</a></div></td><td class="codeLine"> // filtering</td></tr>
<tr class="danger"><td><div align="right"><a name="592"></a><a href="#592">592</a></div></td><td class="codeLine"> $depth = ( $to_end ) ? $n-1 : $n ;</td></tr>
<tr class="danger"><td><div align="right"><a name="593"></a><a href="#593">593</a></div></td><td class="codeLine"> $filtered = array();</td></tr>
<tr class="danger"><td><div align="right"><a name="594"></a><a href="#594">594</a></div></td><td class="codeLine"> foreach( $chars as $char =&gt; $value ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="595"></a><a href="#595">595</a></div></td><td class="codeLine"> if ( $match = $this-&gt;_check_count($char, $value, $depth, $preferred) ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="596"></a><a href="#596">596</a></div></td><td class="codeLine"> $filtered[$match] = $char;</td></tr>
<tr class="danger"><td><div align="right"><a name="597"></a><a href="#597">597</a></div></td><td class="codeLine"> }</td></tr>
<tr class="danger"><td><div align="right"><a name="598"></a><a href="#598">598</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="599"></a><a href="#599">599</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="600"></a><a href="#600">600</a></div></td><td class="codeLine"> // capture most probable delimiter</td></tr>
<tr class="danger"><td><div align="right"><a name="601"></a><a href="#601">601</a></div></td><td class="codeLine"> ksort($filtered);</td></tr>
<tr class="danger"><td><div align="right"><a name="602"></a><a href="#602">602</a></div></td><td class="codeLine"> $this-&gt;delimiter = reset($filtered);</td></tr>
<tr><td><div align="right"><a name="603"></a><a href="#603">603</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="604"></a><a href="#604">604</a></div></td><td class="codeLine"> // parse data</td></tr>
<tr class="danger"><td><div align="right"><a name="605"></a><a href="#605">605</a></div></td><td class="codeLine"> if ( $parse ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="606"></a><a href="#606">606</a></div></td><td class="codeLine"> $this-&gt;data = $this-&gt;parse_string();</td></tr>
<tr class="danger"><td><div align="right"><a name="607"></a><a href="#607">607</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="608"></a><a href="#608">608</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="609"></a><a href="#609">609</a></div></td><td class="codeLine"> return $this-&gt;delimiter;</td></tr>
<tr><td><div align="right"><a name="610"></a><a href="#610">610</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="611"></a><a href="#611">611</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="612"></a><a href="#612">612</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="613"></a><a href="#613">613</a></div></td><td class="codeLine"> // ==============================================</td></tr>
<tr><td><div align="right"><a name="614"></a><a href="#614">614</a></div></td><td class="codeLine"> // ----- [ Core Functions ] ---------------------</td></tr>
<tr><td><div align="right"><a name="615"></a><a href="#615">615</a></div></td><td class="codeLine"> // ==============================================</td></tr>
<tr><td><div align="right"><a name="616"></a><a href="#616">616</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="617"></a><a href="#617">617</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="618"></a><a href="#618">618</a></div></td><td class="codeLine"> * Parse File</td></tr>
<tr><td><div align="right"><a name="619"></a><a href="#619">619</a></div></td><td class="codeLine"> * Read file to string and call parse_string()</td></tr>
<tr><td><div align="right"><a name="620"></a><a href="#620">620</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="621"></a><a href="#621">621</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="622"></a><a href="#622">622</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="623"></a><a href="#623">623</a></div></td><td class="codeLine"> * @param [string] $file Local CSV file</td></tr>
<tr><td><div align="right"><a name="624"></a><a href="#624">624</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="625"></a><a href="#625">625</a></div></td><td class="codeLine"> * @return [array|bool]</td></tr>
<tr><td><div align="right"><a name="626"></a><a href="#626">626</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="627"></a><a href="#627">627</a></div></td><td class="codeLine"> public function parse_file ($file = null) {</td></tr>
<tr class="danger"><td><div align="right"><a name="628"></a><a href="#628">628</a></div></td><td class="codeLine"> if ( $file === null ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="629"></a><a href="#629">629</a></div></td><td class="codeLine"> $file = $this-&gt;file;</td></tr>
<tr class="danger"><td><div align="right"><a name="630"></a><a href="#630">630</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="631"></a><a href="#631">631</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="632"></a><a href="#632">632</a></div></td><td class="codeLine"> if ( empty($this-&gt;file_data) ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="633"></a><a href="#633">633</a></div></td><td class="codeLine"> $this-&gt;load_data($file);</td></tr>
<tr class="danger"><td><div align="right"><a name="634"></a><a href="#634">634</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="635"></a><a href="#635">635</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="636"></a><a href="#636">636</a></div></td><td class="codeLine"> return ( !empty($this-&gt;file_data) ) ? $this-&gt;parse_string() : false ;</td></tr>
<tr><td><div align="right"><a name="637"></a><a href="#637">637</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="638"></a><a href="#638">638</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="639"></a><a href="#639">639</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="640"></a><a href="#640">640</a></div></td><td class="codeLine"> * Parse CSV strings to arrays</td></tr>
<tr><td><div align="right"><a name="641"></a><a href="#641">641</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="642"></a><a href="#642">642</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="643"></a><a href="#643">643</a></div></td><td class="codeLine"> * @param data CSV string</td></tr>
<tr><td><div align="right"><a name="644"></a><a href="#644">644</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="645"></a><a href="#645">645</a></div></td><td class="codeLine"> * @return 2D array with CSV data, or false on failure</td></tr>
<tr><td><div align="right"><a name="646"></a><a href="#646">646</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="647"></a><a href="#647">647</a></div></td><td class="codeLine"> public function parse_string ($data = null) {</td></tr>
<tr class="success popin" data-title="1 test covers line 648" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="648"></a><a href="#648">648</a></div></td><td class="codeLine"> if ( empty($data) ) {</td></tr>
<tr class="success popin" data-title="1 test covers line 649" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="649"></a><a href="#649">649</a></div></td><td class="codeLine"> if ( $this-&gt;_check_data() ) {</td></tr>
<tr class="success popin" data-title="1 test covers line 650" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="650"></a><a href="#650">650</a></div></td><td class="codeLine"> $data = &amp;$this-&gt;file_data;</td></tr>
<tr class="success popin" data-title="1 test covers line 651" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="651"></a><a href="#651">651</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="652"></a><a href="#652">652</a></div></td><td class="codeLine"> else {</td></tr>
<tr class="danger"><td><div align="right"><a name="653"></a><a href="#653">653</a></div></td><td class="codeLine"> return false;</td></tr>
<tr><td><div align="right"><a name="654"></a><a href="#654">654</a></div></td><td class="codeLine"> }</td></tr>
<tr class="success popin" data-title="1 test covers line 655" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="655"></a><a href="#655">655</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="656"></a><a href="#656">656</a></div></td><td class="codeLine"></td></tr>
<tr class="success popin" data-title="1 test covers line 657" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="657"></a><a href="#657">657</a></div></td><td class="codeLine"> $white_spaces = str_replace($this-&gt;delimiter, '', &quot; \t\x0B\0&quot;);</td></tr>
<tr><td><div align="right"><a name="658"></a><a href="#658">658</a></div></td><td class="codeLine"></td></tr>
<tr class="success popin" data-title="1 test covers line 659" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="659"></a><a href="#659">659</a></div></td><td class="codeLine"> $rows = array();</td></tr>
<tr class="success popin" data-title="1 test covers line 660" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="660"></a><a href="#660">660</a></div></td><td class="codeLine"> $row = array();</td></tr>
<tr class="success popin" data-title="1 test covers line 661" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="661"></a><a href="#661">661</a></div></td><td class="codeLine"> $row_count = 0;</td></tr>
<tr class="success popin" data-title="1 test covers line 662" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="662"></a><a href="#662">662</a></div></td><td class="codeLine"> $current = '';</td></tr>
<tr class="success popin" data-title="1 test covers line 663" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="663"></a><a href="#663">663</a></div></td><td class="codeLine"> $head = ( !empty($this-&gt;fields) ) ? $this-&gt;fields : array() ;</td></tr>
<tr class="success popin" data-title="1 test covers line 664" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="664"></a><a href="#664">664</a></div></td><td class="codeLine"> $col = 0;</td></tr>
<tr class="success popin" data-title="1 test covers line 665" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="665"></a><a href="#665">665</a></div></td><td class="codeLine"> $enclosed = false;</td></tr>
<tr class="success popin" data-title="1 test covers line 666" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="666"></a><a href="#666">666</a></div></td><td class="codeLine"> $was_enclosed = false;</td></tr>
<tr class="success popin" data-title="1 test covers line 667" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="667"></a><a href="#667">667</a></div></td><td class="codeLine"> $strlen = strlen($data);</td></tr>
<tr><td><div align="right"><a name="668"></a><a href="#668">668</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="669"></a><a href="#669">669</a></div></td><td class="codeLine"> // walk through each character</td></tr>
<tr class="success popin" data-title="1 test covers line 670" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="670"></a><a href="#670">670</a></div></td><td class="codeLine"> for ( $i=0; $i &lt; $strlen; $i++ ) {</td></tr>
<tr class="success popin" data-title="1 test covers line 671" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="671"></a><a href="#671">671</a></div></td><td class="codeLine"> $ch = $data{$i};</td></tr>
<tr class="success popin" data-title="1 test covers line 672" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="672"></a><a href="#672">672</a></div></td><td class="codeLine"> $nch = ( isset($data{$i+1}) ) ? $data{$i+1} : false ;</td></tr>
<tr class="success popin" data-title="1 test covers line 673" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="673"></a><a href="#673">673</a></div></td><td class="codeLine"> $pch = ( isset($data{$i-1}) ) ? $data{$i-1} : false ;</td></tr>
<tr><td><div align="right"><a name="674"></a><a href="#674">674</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="675"></a><a href="#675">675</a></div></td><td class="codeLine"> // open/close quotes, and inline quotes</td></tr>
<tr class="success popin" data-title="1 test covers line 676" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="676"></a><a href="#676">676</a></div></td><td class="codeLine"> if ( $ch == $this-&gt;enclosure ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="677"></a><a href="#677">677</a></div></td><td class="codeLine"> if ( !$enclosed ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="678"></a><a href="#678">678</a></div></td><td class="codeLine"> if ( ltrim($current,$white_spaces) == '' ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="679"></a><a href="#679">679</a></div></td><td class="codeLine"> $enclosed = true;</td></tr>
<tr class="danger"><td><div align="right"><a name="680"></a><a href="#680">680</a></div></td><td class="codeLine"> $was_enclosed = true;</td></tr>
<tr class="danger"><td><div align="right"><a name="681"></a><a href="#681">681</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="682"></a><a href="#682">682</a></div></td><td class="codeLine"> else {</td></tr>
<tr class="danger"><td><div align="right"><a name="683"></a><a href="#683">683</a></div></td><td class="codeLine"> $this-&gt;error = 2;</td></tr>
<tr class="danger"><td><div align="right"><a name="684"></a><a href="#684">684</a></div></td><td class="codeLine"> $error_row = count($rows) + 1;</td></tr>
<tr class="danger"><td><div align="right"><a name="685"></a><a href="#685">685</a></div></td><td class="codeLine"> $error_col = $col + 1;</td></tr>
<tr class="danger"><td><div align="right"><a name="686"></a><a href="#686">686</a></div></td><td class="codeLine"> if ( !isset($this-&gt;error_info[$error_row.'-'.$error_col]) ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="687"></a><a href="#687">687</a></div></td><td class="codeLine"> $this-&gt;error_info[$error_row.'-'.$error_col] = array(</td></tr>
<tr class="danger"><td><div align="right"><a name="688"></a><a href="#688">688</a></div></td><td class="codeLine"> 'type' =&gt; 2,</td></tr>
<tr class="danger"><td><div align="right"><a name="689"></a><a href="#689">689</a></div></td><td class="codeLine"> 'info' =&gt; 'Syntax error found on row '.$error_row.'. Non-enclosed fields can not contain double-quotes.',</td></tr>
<tr class="danger"><td><div align="right"><a name="690"></a><a href="#690">690</a></div></td><td class="codeLine"> 'row' =&gt; $error_row,</td></tr>
<tr class="danger"><td><div align="right"><a name="691"></a><a href="#691">691</a></div></td><td class="codeLine"> 'field' =&gt; $error_col,</td></tr>
<tr class="danger"><td><div align="right"><a name="692"></a><a href="#692">692</a></div></td><td class="codeLine"> 'field_name' =&gt; (!empty($head[$col])) ? $head[$col] : null,</td></tr>
<tr><td><div align="right"><a name="693"></a><a href="#693">693</a></div></td><td class="codeLine"> );</td></tr>
<tr class="danger"><td><div align="right"><a name="694"></a><a href="#694">694</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="695"></a><a href="#695">695</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="696"></a><a href="#696">696</a></div></td><td class="codeLine"> $current .= $ch;</td></tr>
<tr><td><div align="right"><a name="697"></a><a href="#697">697</a></div></td><td class="codeLine"> }</td></tr>
<tr class="danger"><td><div align="right"><a name="698"></a><a href="#698">698</a></div></td><td class="codeLine"> }</td></tr>
<tr class="danger"><td><div align="right"><a name="699"></a><a href="#699">699</a></div></td><td class="codeLine"> elseif ($nch == $this-&gt;enclosure) {</td></tr>
<tr class="danger"><td><div align="right"><a name="700"></a><a href="#700">700</a></div></td><td class="codeLine"> $current .= $ch;</td></tr>
<tr class="danger"><td><div align="right"><a name="701"></a><a href="#701">701</a></div></td><td class="codeLine"> $i++;</td></tr>
<tr class="danger"><td><div align="right"><a name="702"></a><a href="#702">702</a></div></td><td class="codeLine"> }</td></tr>
<tr class="danger"><td><div align="right"><a name="703"></a><a href="#703">703</a></div></td><td class="codeLine"> elseif ( $nch != $this-&gt;delimiter &amp;&amp; $nch != &quot;\r&quot; &amp;&amp; $nch != &quot;\n&quot; ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="704"></a><a href="#704">704</a></div></td><td class="codeLine"> for ( $x=($i+1); isset($data{$x}) &amp;&amp; ltrim($data{$x}, $white_spaces) == ''; $x++ ) {}</td></tr>
<tr class="danger"><td><div align="right"><a name="705"></a><a href="#705">705</a></div></td><td class="codeLine"> if ( $data{$x} == $this-&gt;delimiter ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="706"></a><a href="#706">706</a></div></td><td class="codeLine"> $enclosed = false;</td></tr>
<tr class="danger"><td><div align="right"><a name="707"></a><a href="#707">707</a></div></td><td class="codeLine"> $i = $x;</td></tr>
<tr class="danger"><td><div align="right"><a name="708"></a><a href="#708">708</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="709"></a><a href="#709">709</a></div></td><td class="codeLine"> else {</td></tr>
<tr class="danger"><td><div align="right"><a name="710"></a><a href="#710">710</a></div></td><td class="codeLine"> if ( $this-&gt;error &lt; 1 ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="711"></a><a href="#711">711</a></div></td><td class="codeLine"> $this-&gt;error = 1;</td></tr>
<tr class="danger"><td><div align="right"><a name="712"></a><a href="#712">712</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="713"></a><a href="#713">713</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="714"></a><a href="#714">714</a></div></td><td class="codeLine"> $error_row = count($rows) + 1;</td></tr>
<tr class="danger"><td><div align="right"><a name="715"></a><a href="#715">715</a></div></td><td class="codeLine"> $error_col = $col + 1;</td></tr>
<tr class="danger"><td><div align="right"><a name="716"></a><a href="#716">716</a></div></td><td class="codeLine"> if ( !isset($this-&gt;error_info[$error_row.'-'.$error_col]) ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="717"></a><a href="#717">717</a></div></td><td class="codeLine"> $this-&gt;error_info[$error_row.'-'.$error_col] = array(</td></tr>
<tr class="danger"><td><div align="right"><a name="718"></a><a href="#718">718</a></div></td><td class="codeLine"> 'type' =&gt; 1,</td></tr>
<tr><td><div align="right"><a name="719"></a><a href="#719">719</a></div></td><td class="codeLine"> 'info' =&gt;</td></tr>
<tr class="danger"><td><div align="right"><a name="720"></a><a href="#720">720</a></div></td><td class="codeLine"> 'Syntax error found on row '.(count($rows) + 1).'. '.</td></tr>
<tr class="danger"><td><div align="right"><a name="721"></a><a href="#721">721</a></div></td><td class="codeLine"> 'A single double-quote was found within an enclosed string. '.</td></tr>
<tr class="danger"><td><div align="right"><a name="722"></a><a href="#722">722</a></div></td><td class="codeLine"> 'Enclosed double-quotes must be escaped with a second double-quote.',</td></tr>
<tr class="danger"><td><div align="right"><a name="723"></a><a href="#723">723</a></div></td><td class="codeLine"> 'row' =&gt; count($rows) + 1,</td></tr>
<tr class="danger"><td><div align="right"><a name="724"></a><a href="#724">724</a></div></td><td class="codeLine"> 'field' =&gt; $col + 1,</td></tr>
<tr class="danger"><td><div align="right"><a name="725"></a><a href="#725">725</a></div></td><td class="codeLine"> 'field_name' =&gt; (!empty($head[$col])) ? $head[$col] : null,</td></tr>
<tr><td><div align="right"><a name="726"></a><a href="#726">726</a></div></td><td class="codeLine"> );</td></tr>
<tr class="danger"><td><div align="right"><a name="727"></a><a href="#727">727</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="728"></a><a href="#728">728</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="729"></a><a href="#729">729</a></div></td><td class="codeLine"> $current .= $ch;</td></tr>
<tr class="danger"><td><div align="right"><a name="730"></a><a href="#730">730</a></div></td><td class="codeLine"> $enclosed = false;</td></tr>
<tr><td><div align="right"><a name="731"></a><a href="#731">731</a></div></td><td class="codeLine"> }</td></tr>
<tr class="danger"><td><div align="right"><a name="732"></a><a href="#732">732</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="733"></a><a href="#733">733</a></div></td><td class="codeLine"> else {</td></tr>
<tr class="danger"><td><div align="right"><a name="734"></a><a href="#734">734</a></div></td><td class="codeLine"> $enclosed = false;</td></tr>
<tr><td><div align="right"><a name="735"></a><a href="#735">735</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="736"></a><a href="#736">736</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="737"></a><a href="#737">737</a></div></td><td class="codeLine"> // end of field/row</td></tr>
<tr class="danger"><td><div align="right"><a name="738"></a><a href="#738">738</a></div></td><td class="codeLine"> }</td></tr>
<tr class="success popin" data-title="1 test covers line 739" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="739"></a><a href="#739">739</a></div></td><td class="codeLine"> elseif ( ($ch == $this-&gt;delimiter || $ch == &quot;\n&quot; || $ch == &quot;\r&quot;) &amp;&amp; !$enclosed ) {</td></tr>
<tr class="success popin" data-title="1 test covers line 740" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="740"></a><a href="#740">740</a></div></td><td class="codeLine"> $key = ( !empty($head[$col]) ) ? $head[$col] : $col ;</td></tr>
<tr class="success popin" data-title="1 test covers line 741" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="741"></a><a href="#741">741</a></div></td><td class="codeLine"> $row[$key] = ( $was_enclosed ) ? $current : trim($current) ;</td></tr>
<tr class="success popin" data-title="1 test covers line 742" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="742"></a><a href="#742">742</a></div></td><td class="codeLine"> $current = '';</td></tr>
<tr class="success popin" data-title="1 test covers line 743" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="743"></a><a href="#743">743</a></div></td><td class="codeLine"> $was_enclosed = false;</td></tr>
<tr class="success popin" data-title="1 test covers line 744" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="744"></a><a href="#744">744</a></div></td><td class="codeLine"> $col++;</td></tr>
<tr><td><div align="right"><a name="745"></a><a href="#745">745</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="746"></a><a href="#746">746</a></div></td><td class="codeLine"> // end of row</td></tr>
<tr class="success popin" data-title="1 test covers line 747" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="747"></a><a href="#747">747</a></div></td><td class="codeLine"> if ( $ch == &quot;\n&quot; || $ch == &quot;\r&quot; ) {</td></tr>
<tr class="success popin" data-title="1 test covers line 748" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="748"></a><a href="#748">748</a></div></td><td class="codeLine"> if ( $this-&gt;_validate_offset($row_count) &amp;&amp; $this-&gt;_validate_row_conditions($row, $this-&gt;conditions) ) {</td></tr>
<tr class="success popin" data-title="1 test covers line 749" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="749"></a><a href="#749">749</a></div></td><td class="codeLine"> if ( $this-&gt;heading &amp;&amp; empty($head) ) {</td></tr>
<tr class="success popin" data-title="1 test covers line 750" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="750"></a><a href="#750">750</a></div></td><td class="codeLine"> $head = $row;</td></tr>
<tr class="success popin" data-title="1 test covers line 751" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="751"></a><a href="#751">751</a></div></td><td class="codeLine"> }</td></tr>
<tr class="success popin" data-title="1 test covers line 752" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="752"></a><a href="#752">752</a></div></td><td class="codeLine"> elseif ( empty($this-&gt;fields) || (!empty($this-&gt;fields) &amp;&amp; (($this-&gt;heading &amp;&amp; $row_count &gt; 0) || !$this-&gt;heading)) ) {</td></tr>
<tr class="success popin" data-title="1 test covers line 753" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="753"></a><a href="#753">753</a></div></td><td class="codeLine"> if ( !empty($this-&gt;sort_by) &amp;&amp; !empty($row[$this-&gt;sort_by]) ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="754"></a><a href="#754">754</a></div></td><td class="codeLine"> if ( isset($rows[$row[$this-&gt;sort_by]]) ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="755"></a><a href="#755">755</a></div></td><td class="codeLine"> $rows[$row[$this-&gt;sort_by].'_0'] = &amp;$rows[$row[$this-&gt;sort_by]];</td></tr>
<tr class="danger"><td><div align="right"><a name="756"></a><a href="#756">756</a></div></td><td class="codeLine"> unset($rows[$row[$this-&gt;sort_by]]);</td></tr>
<tr class="danger"><td><div align="right"><a name="757"></a><a href="#757">757</a></div></td><td class="codeLine"> for ( $sn=1; isset($rows[$row[$this-&gt;sort_by].'_'.$sn]); $sn++ ) {}</td></tr>
<tr class="danger"><td><div align="right"><a name="758"></a><a href="#758">758</a></div></td><td class="codeLine"> $rows[$row[$this-&gt;sort_by].'_'.$sn] = $row;</td></tr>
<tr class="danger"><td><div align="right"><a name="759"></a><a href="#759">759</a></div></td><td class="codeLine"> }</td></tr>
<tr class="danger"><td><div align="right"><a name="760"></a><a href="#760">760</a></div></td><td class="codeLine"> else $rows[$row[$this-&gt;sort_by]] = $row;</td></tr>
<tr class="danger"><td><div align="right"><a name="761"></a><a href="#761">761</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="762"></a><a href="#762">762</a></div></td><td class="codeLine"> else {</td></tr>
<tr class="success popin" data-title="1 test covers line 763" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="763"></a><a href="#763">763</a></div></td><td class="codeLine"> $rows[] = $row;</td></tr>
<tr><td><div align="right"><a name="764"></a><a href="#764">764</a></div></td><td class="codeLine"> }</td></tr>
<tr class="success popin" data-title="1 test covers line 765" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="765"></a><a href="#765">765</a></div></td><td class="codeLine"> }</td></tr>
<tr class="success popin" data-title="1 test covers line 766" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="766"></a><a href="#766">766</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="767"></a><a href="#767">767</a></div></td><td class="codeLine"></td></tr>
<tr class="success popin" data-title="1 test covers line 768" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="768"></a><a href="#768">768</a></div></td><td class="codeLine"> $row = array();</td></tr>
<tr class="success popin" data-title="1 test covers line 769" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="769"></a><a href="#769">769</a></div></td><td class="codeLine"> $col = 0;</td></tr>
<tr class="success popin" data-title="1 test covers line 770" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="770"></a><a href="#770">770</a></div></td><td class="codeLine"> $row_count++;</td></tr>
<tr><td><div align="right"><a name="771"></a><a href="#771">771</a></div></td><td class="codeLine"></td></tr>
<tr class="success popin" data-title="1 test covers line 772" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="772"></a><a href="#772">772</a></div></td><td class="codeLine"> if ( $this-&gt;sort_by === null &amp;&amp; $this-&gt;limit !== null &amp;&amp; count($rows) == $this-&gt;limit ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="773"></a><a href="#773">773</a></div></td><td class="codeLine"> $i = $strlen;</td></tr>
<tr class="danger"><td><div align="right"><a name="774"></a><a href="#774">774</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="775"></a><a href="#775">775</a></div></td><td class="codeLine"></td></tr>
<tr class="success popin" data-title="1 test covers line 776" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="776"></a><a href="#776">776</a></div></td><td class="codeLine"> if ( $ch == &quot;\r&quot; &amp;&amp; $nch == &quot;\n&quot; ) {</td></tr>
<tr class="success popin" data-title="1 test covers line 777" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="777"></a><a href="#777">777</a></div></td><td class="codeLine"> $i++;</td></tr>
<tr class="success popin" data-title="1 test covers line 778" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="778"></a><a href="#778">778</a></div></td><td class="codeLine"> }</td></tr>
<tr class="success popin" data-title="1 test covers line 779" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="779"></a><a href="#779">779</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="780"></a><a href="#780">780</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="781"></a><a href="#781">781</a></div></td><td class="codeLine"> // append character to current field</td></tr>
<tr class="success popin" data-title="1 test covers line 782" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="782"></a><a href="#782">782</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="783"></a><a href="#783">783</a></div></td><td class="codeLine"> else {</td></tr>
<tr class="success popin" data-title="1 test covers line 784" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="784"></a><a href="#784">784</a></div></td><td class="codeLine"> $current .= $ch;</td></tr>
<tr><td><div align="right"><a name="785"></a><a href="#785">785</a></div></td><td class="codeLine"> }</td></tr>
<tr class="success popin" data-title="1 test covers line 786" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="786"></a><a href="#786">786</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="787"></a><a href="#787">787</a></div></td><td class="codeLine"></td></tr>
<tr class="success popin" data-title="1 test covers line 788" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="788"></a><a href="#788">788</a></div></td><td class="codeLine"> $this-&gt;titles = $head;</td></tr>
<tr class="success popin" data-title="1 test covers line 789" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="789"></a><a href="#789">789</a></div></td><td class="codeLine"> if ( !empty($this-&gt;sort_by) ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="790"></a><a href="#790">790</a></div></td><td class="codeLine"> $sort_type = SORT_REGULAR;</td></tr>
<tr class="danger"><td><div align="right"><a name="791"></a><a href="#791">791</a></div></td><td class="codeLine"> if ( $this-&gt;sort_type == 'numeric' ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="792"></a><a href="#792">792</a></div></td><td class="codeLine"> $sort_type = SORT_NUMERIC;</td></tr>
<tr class="danger"><td><div align="right"><a name="793"></a><a href="#793">793</a></div></td><td class="codeLine"> }</td></tr>
<tr class="danger"><td><div align="right"><a name="794"></a><a href="#794">794</a></div></td><td class="codeLine"> elseif ( $this-&gt;sort_type == 'string' ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="795"></a><a href="#795">795</a></div></td><td class="codeLine"> $sort_type = SORT_STRING;</td></tr>
<tr class="danger"><td><div align="right"><a name="796"></a><a href="#796">796</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="797"></a><a href="#797">797</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="798"></a><a href="#798">798</a></div></td><td class="codeLine"> ( $this-&gt;sort_reverse ) ? krsort($rows, $sort_type) : ksort($rows, $sort_type) ;</td></tr>
<tr><td><div align="right"><a name="799"></a><a href="#799">799</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="800"></a><a href="#800">800</a></div></td><td class="codeLine"> if ( $this-&gt;offset !== null || $this-&gt;limit !== null ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="801"></a><a href="#801">801</a></div></td><td class="codeLine"> $rows = array_slice($rows, ($this-&gt;offset === null ? 0 : $this-&gt;offset) , $this-&gt;limit, true);</td></tr>
<tr class="danger"><td><div align="right"><a name="802"></a><a href="#802">802</a></div></td><td class="codeLine"> }</td></tr>
<tr class="danger"><td><div align="right"><a name="803"></a><a href="#803">803</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="804"></a><a href="#804">804</a></div></td><td class="codeLine"></td></tr>
<tr class="success popin" data-title="1 test covers line 805" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="805"></a><a href="#805">805</a></div></td><td class="codeLine"> if ( !$this-&gt;keep_file_data ) {</td></tr>
<tr class="success popin" data-title="1 test covers line 806" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="806"></a><a href="#806">806</a></div></td><td class="codeLine"> $this-&gt;file_data = null;</td></tr>
<tr class="success popin" data-title="1 test covers line 807" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="807"></a><a href="#807">807</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="808"></a><a href="#808">808</a></div></td><td class="codeLine"></td></tr>
<tr class="success popin" data-title="1 test covers line 809" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="809"></a><a href="#809">809</a></div></td><td class="codeLine"> return $rows;</td></tr>
<tr><td><div align="right"><a name="810"></a><a href="#810">810</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="811"></a><a href="#811">811</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="812"></a><a href="#812">812</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="813"></a><a href="#813">813</a></div></td><td class="codeLine"> * Create CSV data from array</td></tr>
<tr><td><div align="right"><a name="814"></a><a href="#814">814</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="815"></a><a href="#815">815</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="816"></a><a href="#816">816</a></div></td><td class="codeLine"> * @param data 2D array with data</td></tr>
<tr><td><div align="right"><a name="817"></a><a href="#817">817</a></div></td><td class="codeLine"> * @param fields field names</td></tr>
<tr><td><div align="right"><a name="818"></a><a href="#818">818</a></div></td><td class="codeLine"> * @param append if true, field names will not be output</td></tr>
<tr><td><div align="right"><a name="819"></a><a href="#819">819</a></div></td><td class="codeLine"> * @param is_php if a php die() call should be put on the first</td></tr>
<tr><td><div align="right"><a name="820"></a><a href="#820">820</a></div></td><td class="codeLine"> * line of the file, this is later ignored when read.</td></tr>
<tr><td><div align="right"><a name="821"></a><a href="#821">821</a></div></td><td class="codeLine"> * @param delimiter field delimiter to use</td></tr>
<tr><td><div align="right"><a name="822"></a><a href="#822">822</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="823"></a><a href="#823">823</a></div></td><td class="codeLine"> * @return CSV data (text string)</td></tr>
<tr><td><div align="right"><a name="824"></a><a href="#824">824</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="825"></a><a href="#825">825</a></div></td><td class="codeLine"> public function unparse ( $data = array(), $fields = array(), $append = false , $is_php = false, $delimiter = null) {</td></tr>
<tr class="danger"><td><div align="right"><a name="826"></a><a href="#826">826</a></div></td><td class="codeLine"> if ( !is_array($data) || empty($data) ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="827"></a><a href="#827">827</a></div></td><td class="codeLine"> $data = &amp;$this-&gt;data;</td></tr>
<tr class="danger"><td><div align="right"><a name="828"></a><a href="#828">828</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="829"></a><a href="#829">829</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="830"></a><a href="#830">830</a></div></td><td class="codeLine"> if ( !is_array($fields) || empty($fields) ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="831"></a><a href="#831">831</a></div></td><td class="codeLine"> $fields = &amp;$this-&gt;titles;</td></tr>
<tr class="danger"><td><div align="right"><a name="832"></a><a href="#832">832</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="833"></a><a href="#833">833</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="834"></a><a href="#834">834</a></div></td><td class="codeLine"> if ( $delimiter === null ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="835"></a><a href="#835">835</a></div></td><td class="codeLine"> $delimiter = $this-&gt;delimiter;</td></tr>
<tr class="danger"><td><div align="right"><a name="836"></a><a href="#836">836</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="837"></a><a href="#837">837</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="838"></a><a href="#838">838</a></div></td><td class="codeLine"> $string = ( $is_php ) ? &quot;&lt;?php header('Status: 403'); die(' '); ?&gt;&quot;.$this-&gt;linefeed : '' ;</td></tr>
<tr class="danger"><td><div align="right"><a name="839"></a><a href="#839">839</a></div></td><td class="codeLine"> $entry = array();</td></tr>
<tr><td><div align="right"><a name="840"></a><a href="#840">840</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="841"></a><a href="#841">841</a></div></td><td class="codeLine"> // create heading</td></tr>
<tr class="danger"><td><div align="right"><a name="842"></a><a href="#842">842</a></div></td><td class="codeLine"> if ( $this-&gt;heading &amp;&amp; !$append &amp;&amp; !empty($fields) ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="843"></a><a href="#843">843</a></div></td><td class="codeLine"> foreach( $fields as $key =&gt; $value ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="844"></a><a href="#844">844</a></div></td><td class="codeLine"> $entry[] = $this-&gt;_enclose_value($value, $delimiter);</td></tr>
<tr class="danger"><td><div align="right"><a name="845"></a><a href="#845">845</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="846"></a><a href="#846">846</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="847"></a><a href="#847">847</a></div></td><td class="codeLine"> $string .= implode($delimiter, $entry).$this-&gt;linefeed;</td></tr>
<tr class="danger"><td><div align="right"><a name="848"></a><a href="#848">848</a></div></td><td class="codeLine"> $entry = array();</td></tr>
<tr class="danger"><td><div align="right"><a name="849"></a><a href="#849">849</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="850"></a><a href="#850">850</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="851"></a><a href="#851">851</a></div></td><td class="codeLine"> // create data</td></tr>
<tr class="danger"><td><div align="right"><a name="852"></a><a href="#852">852</a></div></td><td class="codeLine"> foreach( $data as $key =&gt; $row ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="853"></a><a href="#853">853</a></div></td><td class="codeLine"> foreach( $row as $field =&gt; $value ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="854"></a><a href="#854">854</a></div></td><td class="codeLine"> $entry[] = $this-&gt;_enclose_value($value, $delimiter);</td></tr>
<tr class="danger"><td><div align="right"><a name="855"></a><a href="#855">855</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="856"></a><a href="#856">856</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="857"></a><a href="#857">857</a></div></td><td class="codeLine"> $string .= implode($delimiter, $entry).$this-&gt;linefeed;</td></tr>
<tr class="danger"><td><div align="right"><a name="858"></a><a href="#858">858</a></div></td><td class="codeLine"> $entry = array();</td></tr>
<tr class="danger"><td><div align="right"><a name="859"></a><a href="#859">859</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="860"></a><a href="#860">860</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="861"></a><a href="#861">861</a></div></td><td class="codeLine"> return $string;</td></tr>
<tr><td><div align="right"><a name="862"></a><a href="#862">862</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="863"></a><a href="#863">863</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="864"></a><a href="#864">864</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="865"></a><a href="#865">865</a></div></td><td class="codeLine"> * Load local file or string</td></tr>
<tr><td><div align="right"><a name="866"></a><a href="#866">866</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="867"></a><a href="#867">867</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="868"></a><a href="#868">868</a></div></td><td class="codeLine"> * @param input local CSV file</td></tr>
<tr><td><div align="right"><a name="869"></a><a href="#869">869</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="870"></a><a href="#870">870</a></div></td><td class="codeLine"> * @return true or false</td></tr>
<tr><td><div align="right"><a name="871"></a><a href="#871">871</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="872"></a><a href="#872">872</a></div></td><td class="codeLine"> public function load_data ($input = null) {</td></tr>
<tr class="danger"><td><div align="right"><a name="873"></a><a href="#873">873</a></div></td><td class="codeLine"> $data = null;</td></tr>
<tr class="danger"><td><div align="right"><a name="874"></a><a href="#874">874</a></div></td><td class="codeLine"> $file = null;</td></tr>
<tr><td><div align="right"><a name="875"></a><a href="#875">875</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="876"></a><a href="#876">876</a></div></td><td class="codeLine"> if ( $input === null ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="877"></a><a href="#877">877</a></div></td><td class="codeLine"> $file = $this-&gt;file;</td></tr>
<tr class="danger"><td><div align="right"><a name="878"></a><a href="#878">878</a></div></td><td class="codeLine"> }</td></tr>
<tr class="danger"><td><div align="right"><a name="879"></a><a href="#879">879</a></div></td><td class="codeLine"> elseif ( file_exists($input) ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="880"></a><a href="#880">880</a></div></td><td class="codeLine"> $file = $input;</td></tr>
<tr class="danger"><td><div align="right"><a name="881"></a><a href="#881">881</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="882"></a><a href="#882">882</a></div></td><td class="codeLine"> else {</td></tr>
<tr class="danger"><td><div align="right"><a name="883"></a><a href="#883">883</a></div></td><td class="codeLine"> $data = $input;</td></tr>
<tr><td><div align="right"><a name="884"></a><a href="#884">884</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="885"></a><a href="#885">885</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="886"></a><a href="#886">886</a></div></td><td class="codeLine"> if ( !empty($data) || $data = $this-&gt;_rfile($file) ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="887"></a><a href="#887">887</a></div></td><td class="codeLine"> if ( $this-&gt;file != $file ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="888"></a><a href="#888">888</a></div></td><td class="codeLine"> $this-&gt;file = $file;</td></tr>
<tr class="danger"><td><div align="right"><a name="889"></a><a href="#889">889</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="890"></a><a href="#890">890</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="891"></a><a href="#891">891</a></div></td><td class="codeLine"> if ( preg_match('/\.php$/i', $file) &amp;&amp; preg_match('/&lt;\?.*?\?&gt;(.*)/ims', $data, $strip) ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="892"></a><a href="#892">892</a></div></td><td class="codeLine"> $data = ltrim($strip[1]);</td></tr>
<tr class="danger"><td><div align="right"><a name="893"></a><a href="#893">893</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="894"></a><a href="#894">894</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="895"></a><a href="#895">895</a></div></td><td class="codeLine"> if ( $this-&gt;convert_encoding ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="896"></a><a href="#896">896</a></div></td><td class="codeLine"> $data = iconv($this-&gt;input_encoding, $this-&gt;output_encoding, $data);</td></tr>
<tr class="danger"><td><div align="right"><a name="897"></a><a href="#897">897</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="898"></a><a href="#898">898</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="899"></a><a href="#899">899</a></div></td><td class="codeLine"> if ( substr($data, -1) != &quot;\n&quot; ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="900"></a><a href="#900">900</a></div></td><td class="codeLine"> $data .= &quot;\n&quot;;</td></tr>
<tr class="danger"><td><div align="right"><a name="901"></a><a href="#901">901</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="902"></a><a href="#902">902</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="903"></a><a href="#903">903</a></div></td><td class="codeLine"> $this-&gt;file_data = &amp;$data;</td></tr>
<tr class="danger"><td><div align="right"><a name="904"></a><a href="#904">904</a></div></td><td class="codeLine"> return true;</td></tr>
<tr><td><div align="right"><a name="905"></a><a href="#905">905</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="906"></a><a href="#906">906</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="907"></a><a href="#907">907</a></div></td><td class="codeLine"> return false;</td></tr>
<tr><td><div align="right"><a name="908"></a><a href="#908">908</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="909"></a><a href="#909">909</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="910"></a><a href="#910">910</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="911"></a><a href="#911">911</a></div></td><td class="codeLine"> // ==============================================</td></tr>
<tr><td><div align="right"><a name="912"></a><a href="#912">912</a></div></td><td class="codeLine"> // ----- [ Internal Functions ] -----------------</td></tr>
<tr><td><div align="right"><a name="913"></a><a href="#913">913</a></div></td><td class="codeLine"> // ==============================================</td></tr>
<tr><td><div align="right"><a name="914"></a><a href="#914">914</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="915"></a><a href="#915">915</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="916"></a><a href="#916">916</a></div></td><td class="codeLine"> * Validate a row against specified conditions</td></tr>
<tr><td><div align="right"><a name="917"></a><a href="#917">917</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="918"></a><a href="#918">918</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="919"></a><a href="#919">919</a></div></td><td class="codeLine"> * @param row array with values from a row</td></tr>
<tr><td><div align="right"><a name="920"></a><a href="#920">920</a></div></td><td class="codeLine"> * @param conditions specified conditions that the row must match</td></tr>
<tr><td><div align="right"><a name="921"></a><a href="#921">921</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="922"></a><a href="#922">922</a></div></td><td class="codeLine"> * @return true of false</td></tr>
<tr><td><div align="right"><a name="923"></a><a href="#923">923</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="924"></a><a href="#924">924</a></div></td><td class="codeLine"> public function _validate_row_conditions ($row = array(), $conditions = null) {</td></tr>
<tr class="success popin" data-title="1 test covers line 925" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="925"></a><a href="#925">925</a></div></td><td class="codeLine"> if ( !empty($row) ) {</td></tr>
<tr class="success popin" data-title="1 test covers line 926" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="926"></a><a href="#926">926</a></div></td><td class="codeLine"> if ( !empty($conditions) ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="927"></a><a href="#927">927</a></div></td><td class="codeLine"> $conditions = (strpos($conditions, ' OR ') !== false) ? explode(' OR ', $conditions) : array($conditions) ;</td></tr>
<tr class="danger"><td><div align="right"><a name="928"></a><a href="#928">928</a></div></td><td class="codeLine"> $or = '';</td></tr>
<tr class="danger"><td><div align="right"><a name="929"></a><a href="#929">929</a></div></td><td class="codeLine"> foreach( $conditions as $key =&gt; $value ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="930"></a><a href="#930">930</a></div></td><td class="codeLine"> if ( strpos($value, ' AND ') !== false ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="931"></a><a href="#931">931</a></div></td><td class="codeLine"> $value = explode(' AND ', $value);</td></tr>
<tr class="danger"><td><div align="right"><a name="932"></a><a href="#932">932</a></div></td><td class="codeLine"> $and = '';</td></tr>
<tr><td><div align="right"><a name="933"></a><a href="#933">933</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="934"></a><a href="#934">934</a></div></td><td class="codeLine"> foreach( $value as $k =&gt; $v ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="935"></a><a href="#935">935</a></div></td><td class="codeLine"> $and .= $this-&gt;_validate_row_condition($row, $v);</td></tr>
<tr class="danger"><td><div align="right"><a name="936"></a><a href="#936">936</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="937"></a><a href="#937">937</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="938"></a><a href="#938">938</a></div></td><td class="codeLine"> $or .= (strpos($and, '0') !== false) ? '0' : '1' ;</td></tr>
<tr class="danger"><td><div align="right"><a name="939"></a><a href="#939">939</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="940"></a><a href="#940">940</a></div></td><td class="codeLine"> else {</td></tr>
<tr class="danger"><td><div align="right"><a name="941"></a><a href="#941">941</a></div></td><td class="codeLine"> $or .= $this-&gt;_validate_row_condition($row, $value);</td></tr>
<tr><td><div align="right"><a name="942"></a><a href="#942">942</a></div></td><td class="codeLine"> }</td></tr>
<tr class="danger"><td><div align="right"><a name="943"></a><a href="#943">943</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="944"></a><a href="#944">944</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="945"></a><a href="#945">945</a></div></td><td class="codeLine"> return (strpos($or, '1') !== false) ? true : false ;</td></tr>
<tr><td><div align="right"><a name="946"></a><a href="#946">946</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="947"></a><a href="#947">947</a></div></td><td class="codeLine"></td></tr>
<tr class="success popin" data-title="1 test covers line 948" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="948"></a><a href="#948">948</a></div></td><td class="codeLine"> return true;</td></tr>
<tr><td><div align="right"><a name="949"></a><a href="#949">949</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="950"></a><a href="#950">950</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="951"></a><a href="#951">951</a></div></td><td class="codeLine"> return false;</td></tr>
<tr><td><div align="right"><a name="952"></a><a href="#952">952</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="953"></a><a href="#953">953</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="954"></a><a href="#954">954</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="955"></a><a href="#955">955</a></div></td><td class="codeLine"> * Validate a row against a single condition</td></tr>
<tr><td><div align="right"><a name="956"></a><a href="#956">956</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="957"></a><a href="#957">957</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="958"></a><a href="#958">958</a></div></td><td class="codeLine"> * @param row array with values from a row</td></tr>
<tr><td><div align="right"><a name="959"></a><a href="#959">959</a></div></td><td class="codeLine"> * @param condition specified condition that the row must match</td></tr>
<tr><td><div align="right"><a name="960"></a><a href="#960">960</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="961"></a><a href="#961">961</a></div></td><td class="codeLine"> * @return true of false</td></tr>
<tr><td><div align="right"><a name="962"></a><a href="#962">962</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="963"></a><a href="#963">963</a></div></td><td class="codeLine"> public function _validate_row_condition ($row, $condition) {</td></tr>
<tr><td><div align="right"><a name="964"></a><a href="#964">964</a></div></td><td class="codeLine"> $operators = array(</td></tr>
<tr class="danger"><td><div align="right"><a name="965"></a><a href="#965">965</a></div></td><td class="codeLine"> '=', 'equals', 'is',</td></tr>
<tr class="danger"><td><div align="right"><a name="966"></a><a href="#966">966</a></div></td><td class="codeLine"> '!=', 'is not',</td></tr>
<tr class="danger"><td><div align="right"><a name="967"></a><a href="#967">967</a></div></td><td class="codeLine"> '&lt;', 'is less than',</td></tr>
<tr class="danger"><td><div align="right"><a name="968"></a><a href="#968">968</a></div></td><td class="codeLine"> '&gt;', 'is greater than',</td></tr>
<tr class="danger"><td><div align="right"><a name="969"></a><a href="#969">969</a></div></td><td class="codeLine"> '&lt;=', 'is less than or equals',</td></tr>
<tr class="danger"><td><div align="right"><a name="970"></a><a href="#970">970</a></div></td><td class="codeLine"> '&gt;=', 'is greater than or equals',</td></tr>
<tr class="danger"><td><div align="right"><a name="971"></a><a href="#971">971</a></div></td><td class="codeLine"> 'contains',</td></tr>
<tr class="danger"><td><div align="right"><a name="972"></a><a href="#972">972</a></div></td><td class="codeLine"> 'does not contain',</td></tr>
<tr class="danger"><td><div align="right"><a name="973"></a><a href="#973">973</a></div></td><td class="codeLine"> );</td></tr>
<tr><td><div align="right"><a name="974"></a><a href="#974">974</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="975"></a><a href="#975">975</a></div></td><td class="codeLine"> $operators_regex = array();</td></tr>
<tr><td><div align="right"><a name="976"></a><a href="#976">976</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="977"></a><a href="#977">977</a></div></td><td class="codeLine"> foreach( $operators as $value ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="978"></a><a href="#978">978</a></div></td><td class="codeLine"> $operators_regex[] = preg_quote($value, '/');</td></tr>
<tr class="danger"><td><div align="right"><a name="979"></a><a href="#979">979</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="980"></a><a href="#980">980</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="981"></a><a href="#981">981</a></div></td><td class="codeLine"> $operators_regex = implode('|', $operators_regex);</td></tr>
<tr><td><div align="right"><a name="982"></a><a href="#982">982</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="983"></a><a href="#983">983</a></div></td><td class="codeLine"> if ( preg_match('/^(.+) ('.$operators_regex.') (.+)$/i', trim($condition), $capture) ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="984"></a><a href="#984">984</a></div></td><td class="codeLine"> $field = $capture[1];</td></tr>
<tr class="danger"><td><div align="right"><a name="985"></a><a href="#985">985</a></div></td><td class="codeLine"> $op = $capture[2];</td></tr>
<tr class="danger"><td><div align="right"><a name="986"></a><a href="#986">986</a></div></td><td class="codeLine"> $value = $capture[3];</td></tr>
<tr><td><div align="right"><a name="987"></a><a href="#987">987</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="988"></a><a href="#988">988</a></div></td><td class="codeLine"> if ( preg_match('/^([\'\&quot;]{1})(.*)([\'\&quot;]{1})$/i', $value, $capture) ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="989"></a><a href="#989">989</a></div></td><td class="codeLine"> if ( $capture[1] == $capture[3] ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="990"></a><a href="#990">990</a></div></td><td class="codeLine"> $value = $capture[2];</td></tr>
<tr class="danger"><td><div align="right"><a name="991"></a><a href="#991">991</a></div></td><td class="codeLine"> $value = str_replace(&quot;\\n&quot;, &quot;\n&quot;, $value);</td></tr>
<tr class="danger"><td><div align="right"><a name="992"></a><a href="#992">992</a></div></td><td class="codeLine"> $value = str_replace(&quot;\\r&quot;, &quot;\r&quot;, $value);</td></tr>
<tr class="danger"><td><div align="right"><a name="993"></a><a href="#993">993</a></div></td><td class="codeLine"> $value = str_replace(&quot;\\t&quot;, &quot;\t&quot;, $value);</td></tr>
<tr class="danger"><td><div align="right"><a name="994"></a><a href="#994">994</a></div></td><td class="codeLine"> $value = stripslashes($value);</td></tr>
<tr class="danger"><td><div align="right"><a name="995"></a><a href="#995">995</a></div></td><td class="codeLine"> }</td></tr>
<tr class="danger"><td><div align="right"><a name="996"></a><a href="#996">996</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="997"></a><a href="#997">997</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="998"></a><a href="#998">998</a></div></td><td class="codeLine"> if ( array_key_exists($field, $row) ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="999"></a><a href="#999">999</a></div></td><td class="codeLine"> if ( ($op == '=' || $op == 'equals' || $op == 'is') &amp;&amp; $row[$field] == $value ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="1000"></a><a href="#1000">1000</a></div></td><td class="codeLine"> return '1';</td></tr>
<tr><td><div align="right"><a name="1001"></a><a href="#1001">1001</a></div></td><td class="codeLine"> }</td></tr>
<tr class="danger"><td><div align="right"><a name="1002"></a><a href="#1002">1002</a></div></td><td class="codeLine"> elseif ( ($op == '!=' || $op == 'is not') &amp;&amp; $row[$field] != $value ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="1003"></a><a href="#1003">1003</a></div></td><td class="codeLine"> return '1';</td></tr>
<tr><td><div align="right"><a name="1004"></a><a href="#1004">1004</a></div></td><td class="codeLine"> }</td></tr>
<tr class="danger"><td><div align="right"><a name="1005"></a><a href="#1005">1005</a></div></td><td class="codeLine"> elseif ( ($op == '&lt;' || $op == 'is less than' ) &amp;&amp; $row[$field] &lt; $value ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="1006"></a><a href="#1006">1006</a></div></td><td class="codeLine"> return '1';</td></tr>
<tr><td><div align="right"><a name="1007"></a><a href="#1007">1007</a></div></td><td class="codeLine"> }</td></tr>
<tr class="danger"><td><div align="right"><a name="1008"></a><a href="#1008">1008</a></div></td><td class="codeLine"> elseif ( ($op == '&gt;' || $op == 'is greater than') &amp;&amp; $row[$field] &gt; $value ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="1009"></a><a href="#1009">1009</a></div></td><td class="codeLine"> return '1';</td></tr>
<tr><td><div align="right"><a name="1010"></a><a href="#1010">1010</a></div></td><td class="codeLine"> }</td></tr>
<tr class="danger"><td><div align="right"><a name="1011"></a><a href="#1011">1011</a></div></td><td class="codeLine"> elseif ( ($op == '&lt;=' || $op == 'is less than or equals' ) &amp;&amp; $row[$field] &lt;= $value ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="1012"></a><a href="#1012">1012</a></div></td><td class="codeLine"> return '1';</td></tr>
<tr><td><div align="right"><a name="1013"></a><a href="#1013">1013</a></div></td><td class="codeLine"> }</td></tr>
<tr class="danger"><td><div align="right"><a name="1014"></a><a href="#1014">1014</a></div></td><td class="codeLine"> elseif ( ($op == '&gt;=' || $op == 'is greater than or equals') &amp;&amp; $row[$field] &gt;= $value ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="1015"></a><a href="#1015">1015</a></div></td><td class="codeLine"> return '1';</td></tr>
<tr><td><div align="right"><a name="1016"></a><a href="#1016">1016</a></div></td><td class="codeLine"> }</td></tr>
<tr class="danger"><td><div align="right"><a name="1017"></a><a href="#1017">1017</a></div></td><td class="codeLine"> elseif ( $op == 'contains' &amp;&amp; preg_match('/'.preg_quote($value, '/').'/i', $row[$field]) ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="1018"></a><a href="#1018">1018</a></div></td><td class="codeLine"> return '1';</td></tr>
<tr><td><div align="right"><a name="1019"></a><a href="#1019">1019</a></div></td><td class="codeLine"> }</td></tr>
<tr class="danger"><td><div align="right"><a name="1020"></a><a href="#1020">1020</a></div></td><td class="codeLine"> elseif ( $op == 'does not contain' &amp;&amp; !preg_match('/'.preg_quote($value, '/').'/i', $row[$field]) ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="1021"></a><a href="#1021">1021</a></div></td><td class="codeLine"> return '1';</td></tr>
<tr><td><div align="right"><a name="1022"></a><a href="#1022">1022</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="1023"></a><a href="#1023">1023</a></div></td><td class="codeLine"> else {</td></tr>
<tr class="danger"><td><div align="right"><a name="1024"></a><a href="#1024">1024</a></div></td><td class="codeLine"> return '0';</td></tr>
<tr><td><div align="right"><a name="1025"></a><a href="#1025">1025</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="1026"></a><a href="#1026">1026</a></div></td><td class="codeLine"> }</td></tr>
<tr class="danger"><td><div align="right"><a name="1027"></a><a href="#1027">1027</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="1028"></a><a href="#1028">1028</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="1029"></a><a href="#1029">1029</a></div></td><td class="codeLine"> return '1';</td></tr>
<tr><td><div align="right"><a name="1030"></a><a href="#1030">1030</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="1031"></a><a href="#1031">1031</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="1032"></a><a href="#1032">1032</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="1033"></a><a href="#1033">1033</a></div></td><td class="codeLine"> * Validates if the row is within the offset or not if sorting is disabled</td></tr>
<tr><td><div align="right"><a name="1034"></a><a href="#1034">1034</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="1035"></a><a href="#1035">1035</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="1036"></a><a href="#1036">1036</a></div></td><td class="codeLine"> * @param current_row the current row number being processed</td></tr>
<tr><td><div align="right"><a name="1037"></a><a href="#1037">1037</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="1038"></a><a href="#1038">1038</a></div></td><td class="codeLine"> * @return true of false</td></tr>
<tr><td><div align="right"><a name="1039"></a><a href="#1039">1039</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="1040"></a><a href="#1040">1040</a></div></td><td class="codeLine"> public function _validate_offset ($current_row) {</td></tr>
<tr class="success popin" data-title="1 test covers line 1041" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="1041"></a><a href="#1041">1041</a></div></td><td class="codeLine"> if ( $this-&gt;sort_by === null &amp;&amp; $this-&gt;offset !== null &amp;&amp; $current_row &lt; $this-&gt;offset ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="1042"></a><a href="#1042">1042</a></div></td><td class="codeLine"> return false;</td></tr>
<tr><td><div align="right"><a name="1043"></a><a href="#1043">1043</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="1044"></a><a href="#1044">1044</a></div></td><td class="codeLine"></td></tr>
<tr class="success popin" data-title="1 test covers line 1045" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="1045"></a><a href="#1045">1045</a></div></td><td class="codeLine"> return true;</td></tr>
<tr><td><div align="right"><a name="1046"></a><a href="#1046">1046</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="1047"></a><a href="#1047">1047</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="1048"></a><a href="#1048">1048</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="1049"></a><a href="#1049">1049</a></div></td><td class="codeLine"> * Enclose values if needed</td></tr>
<tr><td><div align="right"><a name="1050"></a><a href="#1050">1050</a></div></td><td class="codeLine"> * - only used by unparse()</td></tr>
<tr><td><div align="right"><a name="1051"></a><a href="#1051">1051</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="1052"></a><a href="#1052">1052</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="1053"></a><a href="#1053">1053</a></div></td><td class="codeLine"> * @param value string to process</td></tr>
<tr><td><div align="right"><a name="1054"></a><a href="#1054">1054</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="1055"></a><a href="#1055">1055</a></div></td><td class="codeLine"> * @return Processed value</td></tr>
<tr><td><div align="right"><a name="1056"></a><a href="#1056">1056</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="1057"></a><a href="#1057">1057</a></div></td><td class="codeLine"> public function _enclose_value ($value = null, $delimiter = null) {</td></tr>
<tr class="danger"><td><div align="right"><a name="1058"></a><a href="#1058">1058</a></div></td><td class="codeLine"> if ( $delimiter === null ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="1059"></a><a href="#1059">1059</a></div></td><td class="codeLine"> $delimiter = $this-&gt;delimiter;</td></tr>
<tr class="danger"><td><div align="right"><a name="1060"></a><a href="#1060">1060</a></div></td><td class="codeLine"> }</td></tr>
<tr class="danger"><td><div align="right"><a name="1061"></a><a href="#1061">1061</a></div></td><td class="codeLine"> if ( $value !== null &amp;&amp; $value != '' ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="1062"></a><a href="#1062">1062</a></div></td><td class="codeLine"> $delimiter_quoted = preg_quote($delimiter, '/');</td></tr>
<tr class="danger"><td><div align="right"><a name="1063"></a><a href="#1063">1063</a></div></td><td class="codeLine"> $enclosure_quoted = preg_quote($this-&gt;enclosure, '/');</td></tr>
<tr class="danger"><td><div align="right"><a name="1064"></a><a href="#1064">1064</a></div></td><td class="codeLine"> if ( preg_match(&quot;/&quot;.$delimiter_quoted.&quot;|&quot;.$enclosure_quoted.&quot;|\n|\r/i&quot;, $value) || ($value{0} == ' ' || substr($value, -1) == ' ') || $this-&gt;enclose_all ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="1065"></a><a href="#1065">1065</a></div></td><td class="codeLine"> $value = str_replace($this-&gt;enclosure, $this-&gt;enclosure.$this-&gt;enclosure, $value);</td></tr>
<tr class="danger"><td><div align="right"><a name="1066"></a><a href="#1066">1066</a></div></td><td class="codeLine"> $value = $this-&gt;enclosure.$value.$this-&gt;enclosure;</td></tr>
<tr class="danger"><td><div align="right"><a name="1067"></a><a href="#1067">1067</a></div></td><td class="codeLine"> }</td></tr>
<tr class="danger"><td><div align="right"><a name="1068"></a><a href="#1068">1068</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="1069"></a><a href="#1069">1069</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="1070"></a><a href="#1070">1070</a></div></td><td class="codeLine"> return $value;</td></tr>
<tr><td><div align="right"><a name="1071"></a><a href="#1071">1071</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="1072"></a><a href="#1072">1072</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="1073"></a><a href="#1073">1073</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="1074"></a><a href="#1074">1074</a></div></td><td class="codeLine"> * Check file data</td></tr>
<tr><td><div align="right"><a name="1075"></a><a href="#1075">1075</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="1076"></a><a href="#1076">1076</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="1077"></a><a href="#1077">1077</a></div></td><td class="codeLine"> * @param file local filename</td></tr>
<tr><td><div align="right"><a name="1078"></a><a href="#1078">1078</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="1079"></a><a href="#1079">1079</a></div></td><td class="codeLine"> * @return true or false</td></tr>
<tr><td><div align="right"><a name="1080"></a><a href="#1080">1080</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="1081"></a><a href="#1081">1081</a></div></td><td class="codeLine"> public function _check_data ($file = null) {</td></tr>
<tr class="success popin" data-title="1 test covers line 1082" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="1082"></a><a href="#1082">1082</a></div></td><td class="codeLine"> if ( empty($this-&gt;file_data) ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="1083"></a><a href="#1083">1083</a></div></td><td class="codeLine"> if ( $file === null ) $file = $this-&gt;file;</td></tr>
<tr><td><div align="right"><a name="1084"></a><a href="#1084">1084</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="1085"></a><a href="#1085">1085</a></div></td><td class="codeLine"> return $this-&gt;load_data($file);</td></tr>
<tr><td><div align="right"><a name="1086"></a><a href="#1086">1086</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="1087"></a><a href="#1087">1087</a></div></td><td class="codeLine"></td></tr>
<tr class="success popin" data-title="1 test covers line 1088" data-content="&lt;ul&gt;&lt;li class=&quot;danger&quot;&gt;construct_methods_Test::test_input_param&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="1088"></a><a href="#1088">1088</a></div></td><td class="codeLine"> return true;</td></tr>
<tr><td><div align="right"><a name="1089"></a><a href="#1089">1089</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="1090"></a><a href="#1090">1090</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="1091"></a><a href="#1091">1091</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="1092"></a><a href="#1092">1092</a></div></td><td class="codeLine"> * Check if passed info might be delimiter</td></tr>
<tr><td><div align="right"><a name="1093"></a><a href="#1093">1093</a></div></td><td class="codeLine"> * Only used by find_delimiter</td></tr>
<tr><td><div align="right"><a name="1094"></a><a href="#1094">1094</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="1095"></a><a href="#1095">1095</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="1096"></a><a href="#1096">1096</a></div></td><td class="codeLine"> * @param [type] $char [description]</td></tr>
<tr><td><div align="right"><a name="1097"></a><a href="#1097">1097</a></div></td><td class="codeLine"> * @param [type] $array [description]</td></tr>
<tr><td><div align="right"><a name="1098"></a><a href="#1098">1098</a></div></td><td class="codeLine"> * @param [type] $depth [description]</td></tr>
<tr><td><div align="right"><a name="1099"></a><a href="#1099">1099</a></div></td><td class="codeLine"> * @param [type] $preferred [description]</td></tr>
<tr><td><div align="right"><a name="1100"></a><a href="#1100">1100</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="1101"></a><a href="#1101">1101</a></div></td><td class="codeLine"> * @return special string used for delimiter selection, or false</td></tr>
<tr><td><div align="right"><a name="1102"></a><a href="#1102">1102</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="1103"></a><a href="#1103">1103</a></div></td><td class="codeLine"> public function _check_count ($char, $array, $depth, $preferred) {</td></tr>
<tr class="danger"><td><div align="right"><a name="1104"></a><a href="#1104">1104</a></div></td><td class="codeLine"> if ( $depth == count($array) ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="1105"></a><a href="#1105">1105</a></div></td><td class="codeLine"> $first = null;</td></tr>
<tr class="danger"><td><div align="right"><a name="1106"></a><a href="#1106">1106</a></div></td><td class="codeLine"> $equal = null;</td></tr>
<tr class="danger"><td><div align="right"><a name="1107"></a><a href="#1107">1107</a></div></td><td class="codeLine"> $almost = false;</td></tr>
<tr class="danger"><td><div align="right"><a name="1108"></a><a href="#1108">1108</a></div></td><td class="codeLine"> foreach( $array as $key =&gt; $value ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="1109"></a><a href="#1109">1109</a></div></td><td class="codeLine"> if ( $first == null ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="1110"></a><a href="#1110">1110</a></div></td><td class="codeLine"> $first = $value;</td></tr>
<tr class="danger"><td><div align="right"><a name="1111"></a><a href="#1111">1111</a></div></td><td class="codeLine"> }</td></tr>
<tr class="danger"><td><div align="right"><a name="1112"></a><a href="#1112">1112</a></div></td><td class="codeLine"> elseif ( $value == $first &amp;&amp; $equal !== false) {</td></tr>
<tr class="danger"><td><div align="right"><a name="1113"></a><a href="#1113">1113</a></div></td><td class="codeLine"> $equal = true;</td></tr>
<tr class="danger"><td><div align="right"><a name="1114"></a><a href="#1114">1114</a></div></td><td class="codeLine"> }</td></tr>
<tr class="danger"><td><div align="right"><a name="1115"></a><a href="#1115">1115</a></div></td><td class="codeLine"> elseif ( $value == $first+1 &amp;&amp; $equal !== false ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="1116"></a><a href="#1116">1116</a></div></td><td class="codeLine"> $equal = true;</td></tr>
<tr class="danger"><td><div align="right"><a name="1117"></a><a href="#1117">1117</a></div></td><td class="codeLine"> $almost = true;</td></tr>
<tr class="danger"><td><div align="right"><a name="1118"></a><a href="#1118">1118</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="1119"></a><a href="#1119">1119</a></div></td><td class="codeLine"> else {</td></tr>
<tr class="danger"><td><div align="right"><a name="1120"></a><a href="#1120">1120</a></div></td><td class="codeLine"> $equal = false;</td></tr>
<tr><td><div align="right"><a name="1121"></a><a href="#1121">1121</a></div></td><td class="codeLine"> }</td></tr>
<tr class="danger"><td><div align="right"><a name="1122"></a><a href="#1122">1122</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="1123"></a><a href="#1123">1123</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="1124"></a><a href="#1124">1124</a></div></td><td class="codeLine"> if ( $equal ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="1125"></a><a href="#1125">1125</a></div></td><td class="codeLine"> $match = ( $almost ) ? 2 : 1 ;</td></tr>
<tr class="danger"><td><div align="right"><a name="1126"></a><a href="#1126">1126</a></div></td><td class="codeLine"> $pref = strpos($preferred, $char);</td></tr>
<tr class="danger"><td><div align="right"><a name="1127"></a><a href="#1127">1127</a></div></td><td class="codeLine"> $pref = ( $pref !== false ) ? str_pad($pref, 3, '0', STR_PAD_LEFT) : '999' ;</td></tr>
<tr><td><div align="right"><a name="1128"></a><a href="#1128">1128</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="1129"></a><a href="#1129">1129</a></div></td><td class="codeLine"> return $pref.$match.'.'.(99999 - str_pad($first, 5, '0', STR_PAD_LEFT));</td></tr>
<tr><td><div align="right"><a name="1130"></a><a href="#1130">1130</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="1131"></a><a href="#1131">1131</a></div></td><td class="codeLine"> else {</td></tr>
<tr class="danger"><td><div align="right"><a name="1132"></a><a href="#1132">1132</a></div></td><td class="codeLine"> return false;</td></tr>
<tr><td><div align="right"><a name="1133"></a><a href="#1133">1133</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="1134"></a><a href="#1134">1134</a></div></td><td class="codeLine"> }</td></tr>
<tr class="danger"><td><div align="right"><a name="1135"></a><a href="#1135">1135</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="1136"></a><a href="#1136">1136</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="1137"></a><a href="#1137">1137</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="1138"></a><a href="#1138">1138</a></div></td><td class="codeLine"> * Read local file</td></tr>
<tr><td><div align="right"><a name="1139"></a><a href="#1139">1139</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="1140"></a><a href="#1140">1140</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="1141"></a><a href="#1141">1141</a></div></td><td class="codeLine"> * @param file local filename</td></tr>
<tr><td><div align="right"><a name="1142"></a><a href="#1142">1142</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="1143"></a><a href="#1143">1143</a></div></td><td class="codeLine"> * @return Data from file, or false on failure</td></tr>
<tr><td><div align="right"><a name="1144"></a><a href="#1144">1144</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="1145"></a><a href="#1145">1145</a></div></td><td class="codeLine"> public function _rfile ($file = null) {</td></tr>
<tr class="danger"><td><div align="right"><a name="1146"></a><a href="#1146">1146</a></div></td><td class="codeLine"> if ( is_readable($file) ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="1147"></a><a href="#1147">1147</a></div></td><td class="codeLine"> if ( !($fh = fopen($file, 'r')) ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="1148"></a><a href="#1148">1148</a></div></td><td class="codeLine"> return false;</td></tr>
<tr><td><div align="right"><a name="1149"></a><a href="#1149">1149</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="1150"></a><a href="#1150">1150</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="1151"></a><a href="#1151">1151</a></div></td><td class="codeLine"> $data = fread($fh, filesize($file));</td></tr>
<tr class="danger"><td><div align="right"><a name="1152"></a><a href="#1152">1152</a></div></td><td class="codeLine"> fclose($fh);</td></tr>
<tr class="danger"><td><div align="right"><a name="1153"></a><a href="#1153">1153</a></div></td><td class="codeLine"> return $data;</td></tr>
<tr><td><div align="right"><a name="1154"></a><a href="#1154">1154</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="1155"></a><a href="#1155">1155</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="1156"></a><a href="#1156">1156</a></div></td><td class="codeLine"> return false;</td></tr>
<tr><td><div align="right"><a name="1157"></a><a href="#1157">1157</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="1158"></a><a href="#1158">1158</a></div></td><td class="codeLine"></td></tr>
<tr><td><div align="right"><a name="1159"></a><a href="#1159">1159</a></div></td><td class="codeLine"> /**</td></tr>
<tr><td><div align="right"><a name="1160"></a><a href="#1160">1160</a></div></td><td class="codeLine"> * Write to local file</td></tr>
<tr><td><div align="right"><a name="1161"></a><a href="#1161">1161</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="1162"></a><a href="#1162">1162</a></div></td><td class="codeLine"> * @access public</td></tr>
<tr><td><div align="right"><a name="1163"></a><a href="#1163">1163</a></div></td><td class="codeLine"> * @param file local filename</td></tr>
<tr><td><div align="right"><a name="1164"></a><a href="#1164">1164</a></div></td><td class="codeLine"> * @param string data to write to file</td></tr>
<tr><td><div align="right"><a name="1165"></a><a href="#1165">1165</a></div></td><td class="codeLine"> * @param mode fopen() mode</td></tr>
<tr><td><div align="right"><a name="1166"></a><a href="#1166">1166</a></div></td><td class="codeLine"> * @param lock flock() mode</td></tr>
<tr><td><div align="right"><a name="1167"></a><a href="#1167">1167</a></div></td><td class="codeLine"> *</td></tr>
<tr><td><div align="right"><a name="1168"></a><a href="#1168">1168</a></div></td><td class="codeLine"> * @return true or false</td></tr>
<tr><td><div align="right"><a name="1169"></a><a href="#1169">1169</a></div></td><td class="codeLine"> */</td></tr>
<tr><td><div align="right"><a name="1170"></a><a href="#1170">1170</a></div></td><td class="codeLine"> public function _wfile ($file, $string = '', $mode = 'wb', $lock = 2) {</td></tr>
<tr class="danger"><td><div align="right"><a name="1171"></a><a href="#1171">1171</a></div></td><td class="codeLine"> if ( $fp = fopen($file, $mode) ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="1172"></a><a href="#1172">1172</a></div></td><td class="codeLine"> flock($fp, $lock);</td></tr>
<tr class="danger"><td><div align="right"><a name="1173"></a><a href="#1173">1173</a></div></td><td class="codeLine"> $re = fwrite($fp, $string);</td></tr>
<tr class="danger"><td><div align="right"><a name="1174"></a><a href="#1174">1174</a></div></td><td class="codeLine"> $re2 = fclose($fp);</td></tr>
<tr class="danger"><td><div align="right"><a name="1175"></a><a href="#1175">1175</a></div></td><td class="codeLine"> if ( $re != false &amp;&amp; $re2 != false ) {</td></tr>
<tr class="danger"><td><div align="right"><a name="1176"></a><a href="#1176">1176</a></div></td><td class="codeLine"> return true;</td></tr>
<tr><td><div align="right"><a name="1177"></a><a href="#1177">1177</a></div></td><td class="codeLine"> }</td></tr>
<tr class="danger"><td><div align="right"><a name="1178"></a><a href="#1178">1178</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="1179"></a><a href="#1179">1179</a></div></td><td class="codeLine"></td></tr>
<tr class="danger"><td><div align="right"><a name="1180"></a><a href="#1180">1180</a></div></td><td class="codeLine"> return false;</td></tr>
<tr><td><div align="right"><a name="1181"></a><a href="#1181">1181</a></div></td><td class="codeLine"> }</td></tr>
<tr><td><div align="right"><a name="1182"></a><a href="#1182">1182</a></div></td><td class="codeLine">}</td></tr>
</tbody>
</table>
<footer>
<h4>Legend</h4>
<p>
<span class="success"><strong>Executed</strong></span>
<span class="danger"><strong>Not Executed</strong></span>
<span class="warning"><strong>Dead Code</strong></span>
</p>
<p>
<small>Generated by <a href="http://github.com/sebastianbergmann/php-code-coverage" target="_top">PHP_CodeCoverage 1.2.13</a> using <a href="http://www.php.net/" target="_top">PHP 5.3.18</a> and <a href="http://phpunit.de/">PHPUnit 3.7.27</a> at Wed Jun 4 22:56:31 EDT 2014.</small>
</p>
</footer>
</div>
<script src="js/jquery.min.js" type="text/javascript"></script>
<script src="js/bootstrap.min.js" type="text/javascript"></script>
<script type="text/javascript">$('.popin').popover({trigger: 'hover'});</script>
</body>
</html>