1: <?php
2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
15: class Horde_Core_Auth_Signup_Sql extends Horde_Core_Auth_Signup_Base
16: {
17: 18: 19: 20: 21:
22: protected $_params = array();
23:
24: 25: 26:
27: public function __construct()
28: {
29: $this->_params = array_merge(
30: $this->_params,
31: array('table' => 'horde_signups'),
32: Horde::getDriverConfig('signup', 'Sql'));
33: }
34:
35: 36: 37: 38: 39: 40: 41:
42: protected function _queueSignup($signup)
43: {
44: $query = 'INSERT INTO ' . $this->_params['table']
45: . ' (user_name, signup_date, signup_host, signup_data) VALUES (?, ?, ?, ?) ';
46: $values = array(
47: $signup->getName(),
48: time(),
49: $_SERVER['REMOTE_ADDR'],
50: serialize($signup->getData())
51: );
52:
53: $GLOBALS['injector']->getInstance('Horde_Core_Factory_Db')->create('horde', 'signup')->insert($query, $values);
54: }
55:
56: 57: 58: 59: 60: 61: 62: 63:
64: public function exists($user)
65: {
66: if (empty($GLOBALS['conf']['signup']['approve'])) {
67: return false;
68: }
69:
70: $query = 'SELECT 1 FROM ' . $this->_params['table'] .
71: ' WHERE user_name = ?';
72: $values = array($user);
73:
74: return (bool)$GLOBALS['injector']->getInstance('Horde_Core_Factory_Db')->create('horde', 'signup')->selectValue($query, $values);
75: }
76:
77: 78: 79: 80: 81: 82: 83: 84: 85: 86:
87: public function getQueuedSignup($username)
88: {
89: $query = 'SELECT * FROM ' . $this->_params['table'] .
90: ' WHERE user_name = ?';
91: $values = array($username);
92:
93: $result = $GLOBALS['injector']->getInstance('Horde_Core_Factory_Db')->create('horde', 'signup')->selectOne($query, $values);
94: if (empty($result)) {
95: throw new Horde_Exception(sprintf(Horde_Core_Translation::t("User \"%s\" does not exist."), $username));
96: }
97: $object = new Horde_Core_Auth_Signup_SqlObject($result['user_name']);
98: $object->setData($result);
99:
100: return $object;
101: }
102:
103: 104: 105: 106: 107: 108: 109:
110: public function getQueuedSignups()
111: {
112: $query = 'SELECT * FROM ' . $this->_params['table'] .
113: ' ORDER BY signup_date';
114:
115: $result = $GLOBALS['injector']->getInstance('Horde_Core_Factory_Db')->create('horde', 'signup')->selectAll($query);
116: if (empty($result)) {
117: return array();
118: }
119:
120: $signups = array();
121: foreach ($result as $signup) {
122: $object = new Horde_Core_Auth_Signup_SqlObject($signup['user_name']);
123: $object->setData($signup);
124: $signups[] = $object;
125: }
126:
127: return $signups;
128: }
129:
130: 131: 132: 133: 134: 135: 136:
137: public function removeQueuedSignup($username)
138: {
139: $query = 'DELETE FROM ' . $this->_params['table'] .
140: ' WHERE user_name = ?';
141: $values = array($username);
142:
143: $GLOBALS['injector']->getInstance('Horde_Core_Factory_Db')->create('horde', 'signup')->delete($query, $values);
144: }
145:
146: 147: 148: 149: 150: 151: 152: 153:
154: public function newSignup($name)
155: {
156: if (empty($name)) {
157: throw new InvalidArgumentException('Signup names must be non-empty.');
158: }
159:
160: return new Horde_Core_Auth_Signup_SqlObject($name);
161: }
162:
163: }
164: