1: <?php
2:
3: namespace Alpha\Controller;
4:
5: use Alpha\Util\Logging\Logger;
6: use Alpha\Util\Http\Request;
7: use Alpha\Util\Http\Response;
8: use Alpha\Model\Type\Sequence;
9: use Alpha\Model\ActiveRecord;
10: use Alpha\View\View;
11:
12: /**
13: * Controller used to list all Sequences.
14: *
15: * @since 1.0
16: *
17: * @author John Collins <dev@alphaframework.org>
18: * @license http://www.opensource.org/licenses/bsd-license.php The BSD License
19: * @copyright Copyright (c) 2015, John Collins (founder of Alpha Framework).
20: * All rights reserved.
21: *
22: * <pre>
23: * Redistribution and use in source and binary forms, with or
24: * without modification, are permitted provided that the
25: * following conditions are met:
26: *
27: * * Redistributions of source code must retain the above
28: * copyright notice, this list of conditions and the
29: * following disclaimer.
30: * * Redistributions in binary form must reproduce the above
31: * copyright notice, this list of conditions and the
32: * following disclaimer in the documentation and/or other
33: * materials provided with the distribution.
34: * * Neither the name of the Alpha Framework nor the names
35: * of its contributors may be used to endorse or promote
36: * products derived from this software without specific
37: * prior written permission.
38: *
39: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
40: * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
41: * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
42: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
43: * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
44: * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
45: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
46: * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
47: * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
49: * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
50: * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
51: * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
52: * </pre>
53: */
54: class SequenceController extends ActiveRecordController implements ControllerInterface
55: {
56: /**
57: * Trace logger.
58: *
59: * @var Alpha\Util\Logging\Logger
60: *
61: * @since 1.0
62: */
63: private static $logger = null;
64:
65: /**
66: * constructor to set up the object.
67: *
68: * @since 1.0
69: */
70: public function __construct()
71: {
72: self::$logger = new Logger('SequenceController');
73: self::$logger->debug('>>__construct()');
74:
75: // ensure that the super class constructor is called, indicating the rights group
76: parent::__construct('Admin');
77:
78: // set up the title and meta details
79: $this->setTitle('Listing all Sequences');
80: $this->setDescription('Page to list all Sequences.');
81: $this->setKeywords('list,all,Sequences');
82:
83: self::$logger->debug('<<__construct');
84: }
85:
86: /**
87: * Handle GET requests.
88: *
89: * @param Alpha\Util\Http\Request $request
90: *
91: * @return Alpha\Util\Http\Response
92: *
93: * @since 1.0
94: */
95: public function doGET($request)
96: {
97: self::$logger->debug('>>doGET($request=['.var_export($request, true).'])');
98:
99: $params = $request->getParams();
100:
101: $body = View::displayPageHead($this);
102:
103: $sequence = new Sequence();
104:
105: // make sure that the Sequence tables exist
106: if (!$sequence->checkTableExists()) {
107: $body .= View::displayErrorMessage('Warning! The Sequence table do not exist, attempting to create it now...');
108: $sequence->makeTable();
109: }
110:
111: // set the start point for the list pagination
112: if (isset($params['start']) ? $this->startPoint = $params['start'] : $this->startPoint = 1);
113:
114: $records = $sequence->loadAll($this->startPoint);
115:
116: ActiveRecord::disconnect();
117:
118: $this->BOCount = $sequence->getCount();
119:
120: $body .= View::renderDeleteForm($this->request->getURI());
121:
122: foreach ($records as $record) {
123: $view = View::getInstance($record);
124: $body .= $view->listView(array('URI' => $request->getURI()));
125: }
126:
127: $body .= View::displayPageFoot($this);
128:
129: self::$logger->debug('<<doGET');
130:
131: return new Response(200, $body, array('Content-Type' => 'text/html'));
132: }
133: }
134: