86 lines
1.8 KiB
PHP
86 lines
1.8 KiB
PHP
|
<?php defined('SYSPATH') or die('No direct access allowed.');
|
||
|
|
||
|
/**
|
||
|
* TSM database result. See [Results](/database/results) for usage and examples.
|
||
|
*
|
||
|
* @package PTA
|
||
|
* @subpackage TSM
|
||
|
* @category Query/Result
|
||
|
* @author Deon George
|
||
|
* @copyright (c) 2010 phpTSMadmin Development Team
|
||
|
* @license http://phptsmadmin.sf.net/license.html
|
||
|
*/
|
||
|
class Database_TSM_Result extends Database_Result {
|
||
|
|
||
|
protected $_internal_row = 0;
|
||
|
private $_rows;
|
||
|
|
||
|
public function __construct($result, $sql, $as_object = FALSE, array $params = NULL)
|
||
|
{
|
||
|
parent::__construct($result, $sql, $as_object, $params);
|
||
|
|
||
|
foreach ($result as $line) {
|
||
|
if (! trim($line)) {
|
||
|
$this->_internal_row++;
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
list($k,$v) = explode(':',$line,2);
|
||
|
|
||
|
$this->_rows[$this->_internal_row][trim($k)] = trim($v);
|
||
|
}
|
||
|
|
||
|
$this->_total_rows = $this->_internal_row;
|
||
|
$this->_internal_row = 0;
|
||
|
}
|
||
|
|
||
|
public function __destruct()
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
public function seek($offset)
|
||
|
{
|
||
|
if ($this->offsetExists($offset))
|
||
|
{
|
||
|
// Set the current row to the offset
|
||
|
$this->_current_row = $this->_internal_row = $offset;
|
||
|
|
||
|
return TRUE;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
return FALSE;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public function current()
|
||
|
{
|
||
|
if ($this->_current_row !== $this->_internal_row AND ! $this->seek($this->_current_row))
|
||
|
return FALSE;
|
||
|
|
||
|
// Increment internal row for optimization assuming rows are fetched in order
|
||
|
$this->_internal_row++;
|
||
|
|
||
|
if ($this->_as_object === TRUE)
|
||
|
{
|
||
|
// Return an stdClass
|
||
|
return $this;
|
||
|
}
|
||
|
elseif (is_string($this->_as_object))
|
||
|
{
|
||
|
// Return an object of given class name
|
||
|
$o = new $this->_as_object;
|
||
|
|
||
|
return $o->_load_values($this->_rows[$this->_current_row++]);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
// Return an array of the row
|
||
|
return $this->_rows[$this->_current_row++];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
} // End Database_TSM_Result
|
||
|
?>
|