static function update
($router) {
$ip = $_SERVER['REMOTE_ADDR'];
$sql = "INSERT INTO statisctics_details VALUES('', :time, :mod, :ip)";
$q = $db->prepare($sql);
$q->bindValue(':time', time(), PDO
::PARAM_STR); $q->bindValue(':mod', $router->mod, PDO::PARAM_STR);
$q->bindValue(':ip', $ip, PDO::PARAM_STR);
$q->execute();
$tab = '';
$sql = "SELECT * FROM statisctics_views WHERE data= :data";
$q = $db->prepare($sql);
$q->bindValue(':data', $data, PDO::PARAM_STR);
$q->execute();
$tab = $q->fetchAll(PDO::FETCH_ASSOC);
$sql = "INSERT INTO statisctics_views VALUES('', :data, '1', :ip)";
$q = $db->prepare($sql);
$q->bindValue(':data', $data, PDO::PARAM_STR);
$q->bindValue(':ip', $ip, PDO::PARAM_STR);
$q->execute();
} else {
$id = 0;
$ogladany = 0;
foreach ($tab as $row) {
if ($row['ip']==$ip) {
$id = (int)$row['id'];
$ogladany = (int)$row['ogladany'];
}
}
if ($id!=0) {
$ogladany++;
$sql = "UPDATE statisctics_views SET ogladany = :ogladany WHERE id = :id";
$q = $db->prepare($sql);
$q->bindValue(':id', $id, PDO::PARAM_INT);
$q->bindValue(':ogladany', $ogladany, PDO::PARAM_INT);
$q->execute();
} else {
$sql = "INSERT INTO statisctics_views VALUES('', :data, '1', :ip)";
$q = $db->prepare($sql);
$q->bindValue(':data', $data, PDO::PARAM_STR);
$q->bindValue(':ip', $ip, PDO::PARAM_STR);
$q->execute();
}
}
}
A jesli chodzi o router to poprostu klasa rozkladajaca url na odpowiedni modul i jego parametry :
public function __construct() {
$this->url = substr($_SERVER['REQUEST_URI'], 1
); $this->method = $_SERVER['REQUEST_METHOD'];
$routes['mod_mainpage'] = array('method'=>'GET', 'type'=>'literal', 'action'=>'/^(,[a-z]{2})?$/', 'args'=>array
('1'=>'lang'), 'langswitch'=>array
('/,[a-z]{2}$/', ',{LANG}')); $routes['mod_page'] = array('method'=>'GET', 'type'=>'literal', 'action'=>'/^[a-zA-Z0-9\-\_]+(,[a-z]{2})?.htm$/', 'args'=>array
('1'=>'lang'), 'langswitch'=>array
('/(,[a-z]{2})?.htm$/', ',{LANG}.htm')); $routes['mod_content'] = array('method'=>'GET', 'type'=>'segment', 'action'=>'/^[a-zA-Z0-9\-\_]+\/[a-zA-Z0-9\-\_]+(,[0-9]+)(,[0-9]+)(,[a-z]{2})?.htm$/', 'args'=>array
('1'=>'catid', '2'=>'newsid', '3'=>'lang'), 'langswitch'=>array
('/(,[a-z]{2})?.htm$/', ',{LANG}.htm')); $routes['mod_category'] = array('method'=>'GET', 'type'=>'segment', 'action'=>'/^[a-zA-Z0-9\-\_]+(,[0-9]+)(,[0-9]+)(,[a-z]{2})?\/$/', 'args'=>array
('1'=>'catid', '2'=>'page', '3'=>'lang'), 'langswitch'=>array
('/(,[a-z]{2})?\/$/', ',{LANG}/')); $routes['mod_contact'] = array('method'=>'GET', 'type'=>'literal', 'action'=>'/^contact(,[a-z]{2})?.htm$/', 'args'=>array
('1'=>'lang'), 'langswitch'=>array
('/(,[a-z]{2})?.htm$/', ',{LANG}.htm')); $routes['mod_sitemap'] = array('method'=>'GET', 'type'=>'literal', 'action'=>'/^sitemap(,[a-z]{2})?.htm$/', 'args'=>array
('1'=>'lang'), 'langswitch'=>array
('/(,[a-z]{2})?.htm$/', ',{LANG}.htm'));
if ($this->url!='') {
foreach ($routes as $mod => $data) {
if ($this->method==$data['method']) {
if ($data['action']!='') {
if (preg_match($data['action'], $this->url, $results)) {
$this->mod = $mod;
if (isset($data['args'])) { foreach ($data['args'] as $key=>$val) {
if (isset($results[$key])) { $args[$val] = substr($results[$key], 1
); }
}
if (isset($args['lang'])) { $this->lang = $args['lang'];
}
$this->args = $args;
}
if ($this->url!='') {
$this->langpattern = preg_replace($data['langswitch'][0
], $data['langswitch'][1
], $this->url); }
}
}
}
}
} else {
$this->langpattern = ',{LANG}';
}
}