1
+ <?php
2
+
3
+ class UsersController extends Zend_Rest_Controller
4
+ {
5
+ /**
6
+ * Model for current Controller
7
+ * @var Zend_Db_Table
8
+ */
9
+ protected $ _model ;
10
+
11
+ /**
12
+ * Request "data" parameter JSON decoded
13
+ * @var string
14
+ */
15
+ protected $ _requestData ;
16
+
17
+ /**
18
+ * Get requestData
19
+ */
20
+ public function getRequestData ()
21
+ {
22
+ if (empty ($ this ->_requestData )) {
23
+ $ this ->setRequestData (Zend_Json::decode ($ this ->getRequest ()->getParam ("data " ), Zend_Json::TYPE_OBJECT ));
24
+ }
25
+
26
+ return $ this ->_requestData ;
27
+ }
28
+
29
+ /**
30
+ * Sets requestData
31
+ * @param $requestData string
32
+ * @return UsersController
33
+ */
34
+ public function setRequestData ($ requestData )
35
+ {
36
+ $ this ->_requestData = $ requestData ;
37
+ return $ this ;
38
+ }
39
+
40
+ /**
41
+ * Get model
42
+ *
43
+ * @return Zend_Db_Table
44
+ */
45
+ public function getModel ()
46
+ {
47
+ if (empty ($ this ->_model )) {
48
+ $ this ->setModel ();
49
+ }
50
+
51
+ return $ this ->_model ;
52
+ }
53
+
54
+ /**
55
+ * Set model
56
+ *
57
+ * @param $model Zend_Db_Table
58
+ * @return UsersController
59
+ */
60
+ public function setModel ($ model )
61
+ {
62
+ if (empty ($ model )) {
63
+ $ model = new Application_Model_DbTable_Users ();
64
+ }
65
+
66
+ $ this ->_model = $ model ;
67
+ return $ this ;
68
+ }
69
+
70
+ /**
71
+ * (non-PHPdoc)
72
+ * @see library/Zend/Controller/Zend_Controller_Action::init()
73
+ */
74
+ public function init ()
75
+ {
76
+ $ this ->_helper ->viewRenderer ->setNoRender (true );
77
+ }
78
+
79
+ /**
80
+ * (non-PHPdoc)
81
+ * @see library/Zend/Rest/Zend_Rest_Controller::indexAction()
82
+ */
83
+ public function indexAction ()
84
+ {
85
+ $ response = new stdClass ();
86
+ $ requestData = $ this ->getRequestData ();
87
+
88
+ try {
89
+ if (empty ($ requestData ->start )) $ requestData ->start = 0 ;
90
+ if (empty ($ requestData ->count )) $ requestData ->count = 50 ;
91
+
92
+ $ result = $ this ->getModel ()->fetchAll (null , null , $ requestData ->count , $ requestData ->start );
93
+ $ response ->data = $ result ->toArray ();
94
+ $ response ->success = true ;
95
+ }
96
+ catch (Exception $ e ) {
97
+ $ response ->success = false ;
98
+ $ repsonse ->messages = array ($ e ->getMessage ());
99
+ }
100
+
101
+ $ this ->getResponse ()->appendBody (Zend_Json::encode ($ response ));
102
+ }
103
+
104
+ /**
105
+ * (non-PHPdoc)
106
+ * @see library/Zend/Rest/Zend_Rest_Controller::getAction()
107
+ */
108
+ public function getAction ()
109
+ {
110
+ $ response = new stdClass ();
111
+ $ requestData = $ this ->getRequestData ();
112
+
113
+ try {
114
+ if (empty ($ requestData ->id )) throw new Exception ("msg_error_entry_id_must_be_provided " );
115
+
116
+ $ entry = $ this ->getModel ()->find ($ requestData ->id );
117
+
118
+ if (empty ($ entry )) throw new Exception ("msg_error_entry_not_found " );
119
+
120
+ $ response ->data = array ($ entry );
121
+ $ response ->success = true ;
122
+ }
123
+ catch (Exception $ e ) {
124
+ $ response ->success = false ;
125
+ $ response ->messages = array ($ e ->getMessage ());
126
+ }
127
+
128
+ $ this ->getResponse ()->appendBody (Zend_Json::encode ($ response ));
129
+ }
130
+
131
+ /**
132
+ * (non-PHPdoc)
133
+ * @see library/Zend/Rest/Zend_Rest_Controller::postAction()
134
+ */
135
+ public function postAction ()
136
+ {
137
+ $ response = new stdClass ();
138
+ $ requestData = $ this ->getRequestData ();
139
+
140
+ try {
141
+ /* TODO: Check with staff what kind of validation must be done here */
142
+ if (empty ($ requestData ->entry )) throw new Exception ("msg_error_entry_must_be_provided " );
143
+ $ requestData ->entry ->id = $ this ->getModel ()->insert (get_object_vars ($ requestData ->entry ));
144
+
145
+ $ response ->affectedRows = 1 ;
146
+ $ response ->data = array ($ requestData ->entry );
147
+ $ response ->success = true ;
148
+ }
149
+ catch (Exception $ e ) {
150
+ $ response ->success = false ;
151
+ $ response ->messages = array ($ e ->getMessage ());
152
+ }
153
+
154
+ $ this ->getResponse ()->appendBody (Zend_Json::encode ($ response ));
155
+ }
156
+
157
+ /**
158
+ * Update a record
159
+ */
160
+ public function putAction ()
161
+ {
162
+ $ response = new stdClass ();
163
+ $ requestData = $ this ->getRequestData ();
164
+
165
+ try {
166
+ /* TODO: Check with staff what kind of validation must be done here */
167
+ if (empty ($ requestData ->entry )) throw new Exception ("msg_error_entry_must_be_provided " );
168
+ if (empty ($ requestData ->entry ->id )) throw new Exception ("msg_error_entry_id_must_be_provided " );
169
+
170
+ $ response ->affectedRows = $ this ->getModel ()->update (get_object_vars ($ requestData ->entry ), array ("id = ? " => $ requestData ->entry ->id ));
171
+ $ response ->data = array ($ requestData ->entry );
172
+ $ response ->success = true ;
173
+ }
174
+ catch (Exception $ e ) {
175
+ $ response ->success = false ;
176
+ $ response ->messages = array ($ e ->getMessage ());
177
+ }
178
+
179
+ $ this ->getResponse ()->appendBody (Zend_Json::encode ($ response ));
180
+ }
181
+
182
+ /**
183
+ * (non-PHPdoc)
184
+ * @see library/Zend/Rest/Zend_Rest_Controller::deleteAction()
185
+ */
186
+ public function deleteAction ()
187
+ {
188
+ $ response = new stdClass ();
189
+ $ requestData = $ this ->getRequestData ();
190
+
191
+ try {
192
+ if (empty ($ requestData ->id )) throw new Exception ("msg_error_entry_id_must_be_provided " );
193
+
194
+ $ response ->affectedRows = $ this ->getModel ()->delete (array ("id = ? " => $ requestData ->id ));
195
+ $ response ->success = true ;
196
+ }
197
+ catch (Exception $ e ) {
198
+ $ response ->success = false ;
199
+ $ response ->messages = array ($ e ->getMessage ());
200
+ }
201
+
202
+ $ this ->getResponse ()->appendBody (Zend_Json::encode ($ response ));
203
+ }
204
+ }
0 commit comments