98 lines
2.4 KiB
PHP
98 lines
2.4 KiB
PHP
<?php
|
|
/**
|
|
* Copyright 2013-2017 Horde LLC (http://www.horde.org/)
|
|
*
|
|
* See the enclosed file LICENSE for license information (ASL). If you
|
|
* did not receive this file, see http://www.horde.org/licenses/apache.
|
|
*
|
|
* @author Jan Schneider <jan@horde.org>
|
|
* @category Horde
|
|
* @license http://www.horde.org/licenses/apache ASL
|
|
* @package Ingo
|
|
*/
|
|
|
|
/**
|
|
* Ingo_Transport_Sql implements an Ingo transport driver using a SQL database.
|
|
*
|
|
* @author Jan Schneider <jan@horde.org>
|
|
* @category Horde
|
|
* @license http://www.horde.org/licenses/apache ASL
|
|
* @package Ingo
|
|
*/
|
|
class Ingo_Transport_Sql extends Ingo_Transport_Base
|
|
{
|
|
/**
|
|
* Database handle.
|
|
*
|
|
* @var Horde_Db_Adapter
|
|
*/
|
|
protected $_db;
|
|
|
|
/**
|
|
* Constructor.
|
|
*
|
|
* @param array $params A hash containing driver parameters.
|
|
*/
|
|
public function __construct(array $params = array())
|
|
{
|
|
$this->_supportShares = true;
|
|
parent::__construct($params);
|
|
}
|
|
|
|
/**
|
|
* Sets a script running on the backend.
|
|
*
|
|
* @param array $script The filter script information. Passed elements:
|
|
* - 'name': (string) the script name.
|
|
* - 'recipes': (array) the filter recipe objects.
|
|
* - 'script': (string) the filter script.
|
|
*
|
|
* @throws Ingo_Exception
|
|
*/
|
|
public function setScriptActive($script)
|
|
{
|
|
$this->_connect();
|
|
|
|
try {
|
|
foreach ($script['recipes'] as $recipe) {
|
|
$this->_db->execute($recipe['object']->generate());
|
|
}
|
|
} catch (Horde_Db_Exception $e) {
|
|
throw new Ingo_Exception($e);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Quotes user input if supported by the transport driver.
|
|
*
|
|
* @param string $string A string to quote.
|
|
*
|
|
* @return string The quoted string.
|
|
*/
|
|
public function quote($string)
|
|
{
|
|
$this->_connect();
|
|
return $this->_db->quote($string);
|
|
}
|
|
|
|
/**
|
|
* Connect to the SQL server.
|
|
*
|
|
* @throws Ingo_Exception
|
|
*/
|
|
protected function _connect()
|
|
{
|
|
if ($this->_db) {
|
|
return;
|
|
}
|
|
|
|
try {
|
|
$this->_db = $GLOBALS['injector']
|
|
->getInstance('Horde_Core_Factory_Db')
|
|
->create('ingo', $this->_params);
|
|
} catch (Horde_Exception $e) {
|
|
throw new Ingo_Exception($e);
|
|
}
|
|
}
|
|
}
|