Source for file RSDEngineDBControllerFileUpdateArea.php

Documentation is available at RSDEngineDBControllerFileUpdateArea.php


1 <?php
2 // RSDEngine: The Rapid and Secure Development Engine
3 // Copyright (C) 2003 Lukas Feiler
4 //
5 // This library is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU Lesser General Public
7 // License as published by the Free Software Foundation; either
8 // version 2.1 of the License, or (at your option) any later version.
9 //
10 // This library is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 // Lesser General Public License for more details.
14 //
15 // You should have received a copy of the GNU Lesser General Public
16 // License along with this library; if not, write to the Free Software
17 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18
19 /**Contains just the class RSDEngineDBControllerFileUpdateArea.
20 *
21 * @package RSDEngine
22 * @author Lukas Feiler <lukas.feiler@chello.at>
23 * @copyright Lukas Feiler 2003
24 * @filesource
25 */
26
27 /**RSDEngineDBControllerFileUpdateArea extends RSDEngineControllerFile.
28 */
29 require_once('RSDEngine/RSDEngineControllerFile.php');
30
31 /**Generates the controller file for updating a LiveUser area.
32 *
33 * @author Lukas Feiler <lukas.feiler@chello.at>
34 * @version 0.1.9
35 * @copyright Lukas Feiler 2003
36 * @package RSDEngine
37 */
38 class RSDEngineDBControllerFileUpdateArea extends RSDEngineControllerFile {
39
40 /**Whether to overwrite an existing file.
41 * @var boolean
42 */
43 var $overwriteExisting = false;
44
45 /**Returns the filename.
46 * @return String
47 */
48 function getFilename()
49 {
50 return "update" . ucfirst($this->config['table']->getTableNameWithoutPrefix()) . "Area" . ucfirst($this->config['column']->getColumnNameForVariableName()) . ".php";
51 }
52
53 /**Returns the filename of the corresponding template.
54 * @return String
55 */
56 function getTemplateFilename()
57 {
58 return "update" . ucfirst($this->config['table']->getTableNameWithoutPrefix()) . "Area" . ucfirst($this->config['column']->getColumnNameForVariableName()) . ".tpl";
59 }
60
61 /**Returns the filename of the get controller.
62 * @return String
63 */
64 function getControllerGetFilename()
65 {
66 return "get" . ucfirst($this->config['table']->getTableNameWithoutPrefix()) . ".php";
67 }
68
69 /**Returns the code for the controller file for updating a LiveUser area.
70 *
71 * @access private
72 * @return String The code for the file.
73 */
74 function getCode()
75 {
76 extract($this->config);
77 $table =& $this->config['table'];
78 $authors = RSArrayUtil::toString(split("\n",$authors),"\n",'* @author %val');
79 $records = ucfirst($this->config['table']->getTableNameWithoutPrefix());
80 $tableInstanceName = $table->getChildClassInstanceName();
81 $appInstanceName = $this->relatedClasses['dbApplicationClass']->getInstanceName();
82 if (($primaryKeyColumn = $table->getPrimaryKeyColumn()) === false){
83 return "No primary key was defined! Without a primary key the RSDEngine cannot generate code to view a single record!\n";
84 }
85 $primaryKeyColumnNameForVariableName = $primaryKeyColumn->getColumnNameForVariableName();
86 $primaryKeyColumnNameForPartialMethodName = $primaryKeyColumn->getColumnNameForPartialMethodName();
87 $areaColumnNameForVariableName = $column->getColumnNameForVariableName();
88 $areaColumnNameForPartialMethodName = $column->getColumnNameForPartialMethodName();
89 $addAdminToAreaMethodName = $column->generateAddAdminToAreaMethodName();
90 $removeAdminFromAreaMethodName = $column->generateRemoveAdminFromAreaMethodName();
91 $updateAreaNameAndCommentMethodName = $column->generateUpdateAreaNameAndCommentMethodName();
92 $getControllerFilename = $this->getControllerGetFilename();
93 $templateFilename = $this->getTemplateFilename();
94
95 $public = $table->getFileOptionProperty('updateController', 'public');
96 $write = $table->getFileOptionProperty('updateController', 'write');
97
98 $this->setWrite($write);
99
100 $data = '';
101 $data .="<?php\n" .
102 '/' . "**This file is the controller for updating the LiveUser area stored in the column $column->name in the table $table->name.\n" .
103 '*' . "\n" .
104 $authors . "\n" .
105 '* @copyright ' . $copyright . "\n" .
106 '* @package ' . $projectName . "\n" .
107 '* @filesource' . "\n" .
108 '*/' . "\n" .
109 "\n";
110 if ($this->config['auth'] || $this->config['liveUser']) {
111 if ($public) {
112 $data .='/' . '**This controller requires no authentication.' . "\n" .
113 "*/\n" .
114 "require_once('model/" . $this->relatedFiles['dbApplicationPublicInitFile']->getFilename() . "');\n";
115 } else {
116 $data .='/' . '**This controller requires authentication.' . "\n" .
117 "*/\n" .
118 "require_once('model/" . $this->relatedFiles['dbApplicationPrivateInitFile']->getFilename() . "');\n";
119 }
120 } else {
121 $data .='/' . '**Initializes the application.' . "\n" .
122 "*/\n" .
123 "require_once('model/" . $this->relatedFiles['dbApplicationInitFile']->getFilename() . "');\n";
124 }
125
126 $data .= <<<END
127 \$$primaryKeyColumnNameForVariableName = isset(\$_REQUEST['$primaryKeyColumnNameForVariableName']) ? \$_REQUEST['$primaryKeyColumnNameForVariableName'] : '';
128 \$action = isset(\$_REQUEST['action']) ? \$_REQUEST['action'] : '';
129 \$next = isset(\$_REQUEST['next']) ? \$_REQUEST['next'] : '';
130 \$addAdminTo${areaColumnNameForPartialMethodName} = isset(\$_REQUEST['addAdminTo${areaColumnNameForPartialMethodName}']) ? \$_REQUEST['addAdminTo${areaColumnNameForPartialMethodName}'] : array();
131 \$removeAdminFrom${areaColumnNameForPartialMethodName} = isset(\$_REQUEST['removeAdminFrom${areaColumnNameForPartialMethodName}']) ? \$_REQUEST['removeAdminFrom${areaColumnNameForPartialMethodName}'] : array();
132
133 \$error = false;
134 \$${tableInstanceName} =& \$${appInstanceName}->getTable('$table->name');
135
136 END;;; $data .="\$record = \$${tableInstanceName}->" . $table->getGetByPrimaryKeyMethodName() . "(\$" . $primaryKeyColumn->getColumnNameForVariableName() . ");\n";
137
138 $data .='if(PEAR::isError($record)){' . "\n" .
139 " \$${appInstanceName}->smarty->assign('error', true);\n" .
140 " \$${appInstanceName}->smarty->display('$templateFilename');\n" .
141 " exit;\n" .
142 "}\n";
143
144 $data .= <<<END
145
146 \$$areaColumnNameForVariableName = \$record['$column->name'];
147
148 \$area = \$${appInstanceName}->getLiveUserAreaById(\$$areaColumnNameForVariableName);
149 if(PEAR::isError(\$area)){
150 \$${appInstanceName}->smarty->assign('error', true);
151 \$${appInstanceName}->smarty->display('$templateFilename');
152 exit;
153 }
154
155 \$${areaColumnNameForVariableName}Name = isset(\$_REQUEST['${areaColumnNameForVariableName}Name']) ? \$_REQUEST['${areaColumnNameForVariableName}Name'] : \$area['name'];
156 \$${areaColumnNameForVariableName}Comment = isset(\$_REQUEST['${areaColumnNameForVariableName}Comment']) ? \$_REQUEST['${areaColumnNameForVariableName}Comment'] : \$area['name'];
157
158 if (!\$error && \$action) {
159 if (isset(\$addAdminTo${areaColumnNameForPartialMethodName})) {
160 while (list(\$key, \$authId) = each(\$addAdminTo${areaColumnNameForPartialMethodName})) {
161 \$pearError = \$${tableInstanceName}->$addAdminToAreaMethodName(\$record, \$authId);
162 if (PEAR::isError(\$pearError)) {
163 \$error = true;
164 \$errorSource = 'addAdminTo${areaColumnNameForPartialMethodName}Error';
165 }
166 }
167 }
168 if (isset(\$${areaColumnNameForVariableName}Name) && isset(\$${areaColumnNameForVariableName}Comment)) {
169 \$pearError = \$${tableInstanceName}->$updateAreaNameAndCommentMethodName(\$record, \$${areaColumnNameForVariableName}Name, \$${areaColumnNameForVariableName}Comment);
170 if (PEAR::isError(\$pearError)) {
171 \$error = true;
172 \$errorSource = 'update${areaColumnNameForPartialMethodName}NameAndCommentError';
173 }
174 }
175 if (isset(\$removeAdminFrom${areaColumnNameForPartialMethodName})) {
176 while (list(\$key, \$authId) = each(\$removeAdminFrom${areaColumnNameForPartialMethodName})) {
177 \$pearError = \$${tableInstanceName}->$removeAdminFromAreaMethodName(\$record, \$authId);
178 if (PEAR::isError(\$pearError)) {
179 \$error = true;
180 \$errorSource = 'removeAdminFrom${areaColumnNameForPartialMethodName}Error';
181 }
182 }
183 }
184
185
186 if (!\$error && \$next) {
187 header('Location: $getControllerFilename');
188 exit;
189 }
190 if (\$error) {
191 \$${appInstanceName}->smarty->assign('error', true);
192 if (isset(\$errorSource)) {
193 \$${appInstanceName}->smarty->assign(\$errorSource, true);
194 }
195 }
196 }
197
198
199 \$${appInstanceName}->smarty->assign('$primaryKeyColumnNameForVariableName', \$$primaryKeyColumnNameForVariableName);
200
201 \$addAdminTo${areaColumnNameForPartialMethodName}Options = \$${appInstanceName}->getLiveUserAreaAdminsByNegativeAreaId(\$$areaColumnNameForVariableName);
202 \$removeAdminFrom${areaColumnNameForPartialMethodName}Options = \$${appInstanceName}->getLiveUserAreaAdminsByAreaId(\$$areaColumnNameForVariableName);
203
204 if (!PEAR::isError(\$addAdminTo${areaColumnNameForPartialMethodName}Options)) {
205 \$addAdminTo${areaColumnNameForPartialMethodName}Options = \$${tableInstanceName}->recordArrayToSmartyHTMLOptionsArray('$liveUserAuthTableColumnUserid', \$addAdminTo${areaColumnNameForPartialMethodName}Options, '$liveUserAuthTableColumnHandle');
206 \$${appInstanceName}->smarty->assign('canAddAdminTo${areaColumnNameForPartialMethodName}', \$${tableInstanceName}->canAddAdminTo${areaColumnNameForPartialMethodName}(\$record));
207 \$${appInstanceName}->smarty->assign('addAdminTo${areaColumnNameForPartialMethodName}Options', \$addAdminTo${areaColumnNameForPartialMethodName}Options);
208 } else {
209 \$${appInstanceName}->smarty->assign('error', true);
210 \$${appInstanceName}->smarty->assign('addAdminTo${areaColumnNameForPartialMethodName}Error', true);
211 }
212
213 if (!PEAR::isError(\$removeAdminFrom${areaColumnNameForPartialMethodName}Options)) {
214 \$removeAdminFrom${areaColumnNameForPartialMethodName}Options = \$${tableInstanceName}->recordArrayToSmartyHTMLOptionsArray('$liveUserAuthTableColumnUserid', \$removeAdminFrom${areaColumnNameForPartialMethodName}Options, '$liveUserAuthTableColumnHandle');
215 \$${appInstanceName}->smarty->assign('canRemoveAdminFrom${areaColumnNameForPartialMethodName}', \$${tableInstanceName}->canRemoveAdminFrom${areaColumnNameForPartialMethodName}(\$record));
216 \$${appInstanceName}->smarty->assign('removeAdminFrom${areaColumnNameForPartialMethodName}Options', \$removeAdminFrom${areaColumnNameForPartialMethodName}Options);
217 } else {
218 \$${appInstanceName}->smarty->assign('error', true);
219 \$${appInstanceName}->smarty->assign('removeAdminFrom${areaColumnNameForPartialMethodName}Error', true);
220 }
221
222
223 \$${appInstanceName}->smarty->assign('canUpdate${areaColumnNameForPartialMethodName}NameAndComment', \$${tableInstanceName}->canUpdate${areaColumnNameForPartialMethodName}NameAndComment(\$record));
224 \$${appInstanceName}->smarty->assign('${areaColumnNameForVariableName}Name', \$${areaColumnNameForVariableName}Name);
225 \$${appInstanceName}->smarty->assign('${areaColumnNameForVariableName}Comment', \$${areaColumnNameForVariableName}Comment);
226
227
228 \$${appInstanceName}->smarty->display('$templateFilename');
229
230 ?>
231 END;;;
232 return $data;
233 }
234 }
235 ?>

Documentation generated on Mon, 8 Dec 2003 13:11:14 +0100 by phpDocumentor 1.2.3