-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathPage.php
175 lines (156 loc) · 4.74 KB
/
Page.php
1
2
3
4
5
6
7
8
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
<?php // UTF-8 marker äöüÄÖÜ߀
/**
* Class Page for the exercises of the EWA lecture
* Demonstrates use of PHP including class and OO.
* Implements Zend coding standards.
* Generate documentation with Doxygen or phpdoc
*
* PHP Version 5
*
* @category File
* @package Pizzaservice
* @author Bernhard Kreling, <[email protected]>
* @author Ralf Hahn, <[email protected]>
* @license http://www.h-da.de none
* @Release 1.2
* @link http://www.fbi.h-da.de
*/
// require_once 'index.php';
require_once './blocks/Navigation.php';
/**
* This abstract class is a common base class for all
* HTML-pages to be created.
* It manages access to the database and provides operations
* for outputting header and footer of a page.
* Specific pages have to inherit from that class.
* Each inherited class can use these operations for accessing the db
* and for creating the generic parts of a HTML-page.
*
* @author Bernhard Kreling, <[email protected]>
* @author Ralf Hahn, <[email protected]>
*/
abstract class Page
{
// --- ATTRIBUTES ---
/**
* @var Navigation
*/
private $_navigation;
/**
* Reference to the MySQLi-Database that is
* accessed by all operations of the class.
*/
protected $_database = null;
// --- OPERATIONS ---
/**
* Connects to DB and stores
* the connection in member $_database.
* Needs name of DB, user, password.
*
* @return none
*/
protected function __construct()
{
$this->_database = Page::createDb();
$this->_navigation = new Navigation($this->_database);
session_start();
}
private static function createDb()
{
$mysqli = mysqli_connect("localhost", "root", "", "pizzaservice") or die($link);
// $hostname = "localhost";
// $username = "root";
// $password = "";
// $database = "pizzaservice";
// $mysqli = new mysqli($hostname, $username, $password, $database);
$mysqli->set_charset("utf8");
if ($mysqli->connect_errno) {
throw new Exception("error while connecting to database - ErrorCode: " . $mysqli->connect_errno);
}
return $mysqli;
}
/**
* Closes the DB connection and cleans up
*
* @return none
*/
protected function __destruct()
{
$this->_database->close();
}
/**
* Generates the header section of the page.
* i.e. starting from the content type up to the body-tag.
* Takes care that all strings passed from outside
* are converted to safe HTML by htmlspecialchars.
*
* @param $headline $headline is the text to be used as title of the page
*
* @return none
*/
protected function generatePageHeader($headline, $scripts)
{
$headline = htmlspecialchars($headline);
header("Content-type: text/html; charset=UTF-8");
$headline = htmlspecialchars($headline);
header("Content-type: text/html; charset=UTF-8");
$s = "";
foreach($scripts as $key => $values){
foreach($values as $value){
if ($key == "css"){
$s .= "<link rel='stylesheet' type='text/css' href='$value'/>\n";
}else if($key == "js"){
$s .= "<script src='$value' type='application/javascript'></script>\n";
}else if($key == "custom"){
$s .= $value . "\n";
}
}
}
return <<<EOT
<!DOCTYPE html>
<html><head>
$s
EOT;
}
/**
* Outputs navigationbar
*
* @return none
*/
protected function generateNavigation(){
$this->_navigation->generateView();
}
/**
* Outputs the end of the HTML-file i.e. /body etc.
*
* @return none
*/
protected function generatePageFooter()
{
return <<<EOT
</body>
</html>
EOT;
}
/**
* Processes the data that comes via GET or POST i.e. CGI.
* If every page is supposed to do something with submitted
* data do it here. E.g. checking the settings of PHP that
* influence passing the parameters (e.g. magic_quotes).
*
* @return none
*/
protected function processReceivedData()
{
if (get_magic_quotes_gpc()) {
throw new Exception
("Bitte schalten Sie magic_quotes_gpc in php.ini aus!");
}
}
} // end of class
// Zend standard does not like closing php-tag!
// PHP doesn't require the closing tag (it is assumed when the file ends).
// Not specifying the closing ? > helps to prevent accidents
// like additional whitespace which will cause session
// initialization to fail ("headers already sent").
//? >