1: <?php
2: /**
3: * Ingo_Transport defines an API to activate filter scripts on a server.
4: *
5: * See the enclosed file LICENSE for license information (ASL). If you
6: * did not receive this file, see http://www.horde.org/licenses/apache.
7: *
8: * @author Mike Cochrane <mike@graftonhall.co.nz>
9: * @package Ingo
10: */
11: class Ingo_Transport
12: {
13: /**
14: * Driver specific parameters
15: *
16: * @var array
17: */
18: protected $_params = array(
19: 'username' => null,
20: 'password' => null
21: );
22:
23: /**
24: * Whether this driver allows managing other users' rules.
25: *
26: * @var boolean
27: */
28: protected $_support_shares = false;
29:
30: /**
31: * Attempts to return a concrete instance based on $driver.
32: *
33: * @param string $driver The type of concrete subclass to return.
34: * @param array $params A hash containing any additional configuration
35: * or connection parameters a subclass might need.
36: *
37: * @return Ingo_Transport The newly created concrete instance.
38: * @throws Ingo_Exception
39: */
40: static public function factory($driver, $params = array())
41: {
42: $class = __CLASS__ . '_' . ucfirst(basename($driver));
43:
44: if (class_exists($class)) {
45: return new $class($params);
46: }
47:
48: throw new Ingo_Exception('Could not load driver.');
49: }
50:
51: /**
52: * Constructor.
53: */
54: public function __construct($params = array())
55: {
56: $this->_params = array_merge($this->_params, $params);
57: }
58:
59: /**
60: * Sets a script running on the backend.
61: *
62: * @param string $script The filter script.
63: * @param array $additional Any additional scripts that need to uploaded.
64: *
65: * @return boolean True on success, false if script can't be activated.
66: * @throws Ingo_Exception
67: */
68: public function setScriptActive($script, $additional = array())
69: {
70: return false;
71: }
72:
73: /**
74: * Returns whether the driver supports managing other users' rules.
75: *
76: * @return boolean True if the driver supports shares.
77: */
78: public function supportShares()
79: {
80: return ($this->_support_shares &&
81: $GLOBALS['session']->get('ingo', 'backend/shares'));
82: }
83:
84: }
85: