Files
server/usr/share/psa-horde/ingo/lib/Transport/Sql.php
2026-01-07 20:52:11 +01:00

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);
}
}
}