1: <?php
2:
3:
4: if(!isset($config)) {
5: require_once '../util/AlphaConfig.inc';
6: $config = AlphaConfig::getInstance();
7:
8: require_once $config->get('app.root').'alpha/util/AlphaAutoLoader.inc';
9: }
10:
11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55:
56: class ListAll extends AlphaController implements AlphaControllerInterface {
57: 58: 59: 60: 61: 62:
63: protected $BOname;
64:
65: 66: 67: 68: 69: 70:
71: protected $BOView;
72:
73: 74: 75: 76: 77: 78:
79: protected $startPoint;
80:
81: 82: 83: 84: 85: 86:
87: protected $BOCount = 0;
88:
89: 90: 91: 92: 93: 94:
95: protected $sort;
96:
97: 98: 99: 100: 101: 102:
103: protected $order;
104:
105: 106: 107: 108: 109: 110:
111: protected $filterField;
112:
113: 114: 115: 116: 117: 118:
119: protected $filterValue;
120:
121: 122: 123: 124: 125: 126:
127: private static $logger = null;
128:
129: 130: 131: 132: 133: 134:
135: public function __construct($visibility='Admin') {
136: self::$logger = new Logger('ListAll');
137: self::$logger->debug('>>__construct()');
138:
139: global $config;
140:
141:
142: parent::__construct($visibility);
143:
144: self::$logger->debug('<<__construct');
145: }
146:
147: 148: 149: 150: 151: 152:
153: public function doGET($params) {
154: self::$logger->debug('>>doGET($params=['.var_export($params, true).'])');
155:
156: try{
157:
158: if (isset($params['bo'])) {
159: $BOname = $params['bo'];
160: $this->BOname = $BOname;
161: }elseif(isset($this->BOname)) {
162: $BOname = $this->BOname;
163: }else{
164: throw new IllegalArguementException('No BO available to list!');
165: }
166:
167: if (isset($params['order'])) {
168: if($params['order'] == 'ASC' || $params['order'] == 'DESC')
169: $this->order = $params['order'];
170: else
171: throw new IllegalArguementException('Order value ['.$params['order'].'] provided is invalid!');
172: }
173:
174: if (isset($params['sort']))
175: $this->sort = $params['sort'];
176:
177: AlphaDAO::loadClassDef($BOname);
178:
179: 180: 181:
182: if($this->getCustomControllerName($BOname, 'list') != null)
183: $this->loadCustomController($BOname, 'list');
184:
185: $this->BO = new $BOname();
186: $this->BOView = AlphaView::getInstance($this->BO);
187:
188: echo AlphaView::displayPageHead($this);
189: }catch(IllegalArguementException $e) {
190: self::$logger->error($e->getMessage());
191: }
192:
193: $this->displayBodyContent();
194:
195: echo AlphaView::displayPageFoot($this);
196:
197: self::$logger->debug('<<doGET');
198: }
199:
200: 201: 202: 203: 204: 205:
206: public function doPOST($params) {
207: self::$logger->debug('>>doPOST($params=['.var_export($params, true).'])');
208:
209: try{
210:
211: if(!$this->checkSecurityFields()) {
212: throw new SecurityException('This page cannot accept post data from remote servers!');
213: self::$logger->debug('<<doPOST');
214: }
215:
216:
217: if (isset($params['bo'])) {
218: $BOname = $params['bo'];
219: $this->BOname = $BOname;
220: }elseif(isset($this->BOname)) {
221: $BOname = $this->BOname;
222: }else{
223: throw new IllegalArguementException('No BO available to list!');
224: }
225:
226: if (isset($params['order'])) {
227: if($params['order'] == 'ASC' || $params['order'] == 'DESC')
228: $this->order = $params['order'];
229: else
230: throw new IllegalArguementException('Order value ['.$params['order'].'] provided is invalid!');
231: }
232:
233: if (isset($params['sort']))
234: $this->sort = $params['sort'];
235:
236: AlphaDAO::loadClassDef($BOname);
237:
238: $this->BO = new $BOname();
239: $this->BOname = $BOname;
240: $this->BOView = AlphaView::getInstance($this->BO);
241:
242: echo AlphaView::displayPageHead($this);
243:
244: if (!empty($params['deleteOID'])) {
245: if(!AlphaValidator::isInteger($params['deleteOID']))
246: throw new IllegalArguementException('Invalid deleteOID ['.$params['deleteOID'].'] provided on the request!');
247:
248: try {
249: $temp = new $BOname();
250: $temp->load($params['deleteOID']);
251:
252: AlphaDAO::begin();
253: $temp->delete();
254: AlphaDAO::commit();
255:
256: echo AlphaView::displayUpdateMessage($BOname.' '.$params['deleteOID'].' deleted successfully.');
257:
258: $this->displayBodyContent();
259: }catch(AlphaException $e) {
260: self::$logger->error($e->getMessage());
261: echo AlphaView::displayErrorMessage('Error deleting the BO of OID ['.$params['deleteOID'].'], check the log!');
262: AlphaDAO::rollback();
263: }
264:
265: AlphaDAO::disconnect();
266: }
267: }catch(SecurityException $e) {
268: echo AlphaView::displayErrorMessage($e->getMessage());
269: self::$logger->warn($e->getMessage());
270: }catch(IllegalArguementException $e) {
271: echo AlphaView::displayErrorMessage($e->getMessage());
272: self::$logger->error($e->getMessage());
273: }
274:
275: echo AlphaView::displayPageFoot($this);
276:
277: self::$logger->debug('<<doPOST');
278: }
279:
280: 281: 282: 283: 284:
285: public function before_displayPageHead_callback() {
286:
287: if(!isset($this->title))
288: $this->setTitle('Listing all '.$this->BOname);
289: if(!isset($this->description))
290: $this->setDescription('Page listing all '.$this->BOname.'.');
291: if(!isset($this->keywords))
292: $this->setKeywords('list,all,'.$this->BOname);
293:
294: if (isset($_GET['start']) ? $this->startPoint = $_GET['start']: $this->startPoint = 1);
295: }
296:
297: 298: 299: 300: 301: 302:
303: public function () {
304: $html = $this->renderPageLinks();
305:
306: $html .= '<br>';
307:
308: return $html;
309: }
310:
311: 312: 313: 314: 315: 316:
317: protected function renderPageLinks() {
318: global $config;
319:
320: $html = '';
321:
322: $end = (($this->startPoint-1)+$config->get('app.list.page.amount'));
323:
324: if($end > $this->BOCount)
325: $end = $this->BOCount;
326:
327: if($this->BOCount > 0)
328: $html .= '<p align="center">Displaying '.($this->startPoint).' to '.$end.' of <strong>'.$this->BOCount.'</strong>. ';
329: else
330: $html .= '<p align="center">The list is empty. ';
331:
332: if ($this->startPoint > 1) {
333:
334: if(isset($_GET['tk']))
335: $html .= '<a href="'.FrontController::generateSecureURL('act=ListAll&bo='.$this->BOname.'&start='.($this->startPoint-$config->get('app.list.page.amount'))).'"><<-Previous</a> ';
336: else
337: $html .= '<a href="'.$_SERVER["PHP_SELF"].'?bo='.$this->BOname."&start=".($this->startPoint-$config->get('app.list.page.amount')).'"><<-Previous</a> ';
338: }elseif($this->BOCount > $config->get('app.list.page.amount')){
339: $html .= '<<-Previous ';
340: }
341: $page = 1;
342: for ($i = 0; $i < $this->BOCount; $i+=$config->get('app.list.page.amount')) {
343: if($i != ($this->startPoint-1)) {
344:
345: if(isset($_GET['tk']))
346: $html .= ' <a href="'.FrontController::generateSecureURL('act=ListAll&bo='.$this->BOname.'&start='.($i+1)).'">'.$page.'</a> ';
347: else
348: $html .= ' <a href="'.$_SERVER["PHP_SELF"].'?bo='.$this->BOname."&start=".($i+1).'">'.$page.'</a> ';
349: }elseif($this->BOCount > $config->get('app.list.page.amount')){
350: $html .= ' '.$page.' ';
351: }
352: $page++;
353: }
354: if ($this->BOCount > $end) {
355:
356: if(isset($_GET['tk']))
357: $html .= ' <a href="'.FrontController::generateSecureURL('act=ListAll&bo='.$this->BOname.'&start='.($this->startPoint+$config->get('app.list.page.amount'))).'">Next->></a>';
358: else
359: $html .= ' <a href="'.$_SERVER["PHP_SELF"].'?bo='.$this->BOname."&start=".($this->startPoint+$config->get('app.list.page.amount')).
360: '">Next->></a>';
361: }elseif($this->BOCount > $config->get('app.list.page.amount')){
362: $html .= ' Next->>';
363: }
364: $html .= '</p>';
365:
366: return $html;
367: }
368:
369: 370: 371: 372: 373:
374: protected function displayBodyContent() {
375: global $config;
376:
377:
378: $temp = new $this->BOname;
379:
380: if(isset($this->filterField) && isset($this->filterValue)) {
381: if(isset($this->sort) && isset($this->order)) {
382: $objects = $temp->loadAllByAttribute($this->filterField, $this->filterValue, $this->startPoint-1, $config->get('app.list.page.amount'),
383: $this->sort, $this->order);
384: }else{
385: $objects = $temp->loadAllByAttribute($this->filterField, $this->filterValue, $this->startPoint-1, $config->get('app.list.page.amount'));
386: }
387:
388: $this->BOCount = $temp->getCount(array($this->filterField), array($this->filterValue));
389: }else{
390: if(isset($this->sort) && isset($this->order))
391: $objects = $temp->loadAll($this->startPoint-1, $config->get('app.list.page.amount'), $this->sort, $this->order);
392: else
393: $objects = $temp->loadAll($this->startPoint-1, $config->get('app.list.page.amount'));
394:
395: $this->BOCount = $temp->getCount();
396: }
397:
398: AlphaDAO::disconnect();
399:
400: echo AlphaView::renderDeleteForm();
401:
402: foreach($objects as $object) {
403: $temp = AlphaView::getInstance($object);
404: $temp->listView();
405: }
406: }
407:
408: 409: 410: 411: 412: 413:
414: public function after_displayPageHead_callback() {
415: $menu = '';
416:
417: if (isset($_SESSION['currentUser']) && AlphaDAO::isInstalled() && $_SESSION['currentUser']->inGroup('Admin') && strpos($_SERVER['REQUEST_URI'], '/tk/') !== false) {
418: $menu .= AlphaView::loadTemplateFragment('html', 'adminmenu.phtml', array());
419: }
420:
421: return $menu;
422: }
423: }
424:
425:
426: if(basename($_SERVER['PHP_SELF']) == 'ListAll.php') {
427: $controller = new ListAll();
428:
429: if(!empty($_POST)) {
430: $controller->doPOST($_REQUEST);
431: }else{
432: $controller->doGET($_GET);
433: }
434: }
435:
436: ?>