<?php
/*
@ KONTROLER
@dyktek/hadzia...
-------------------------------------------------INFO------------------------------------------------------------
@ $oKon = new kontroler;
@ $oKon->exclute('pole', 'pole2') - pola, ktore maja byc pominiete przy filtrowaniu danych
@ $oKon->prepare();
@ ?index.php?module=artykuly&pole=dyktek&id=23
@ ### wartosc module ### - okresla modul, ktory bedzie zaladowany
@ pozostale klucze moga byc dowolne
--------------------------------------------------------------------------------------------------------------------
@@@ CHANGE LOG @@@
- start 27.05.06
- ukonczona wersja 0.1.9
*/
class kontroler
{
protected
$aGet = array(); protected
$aPost = array();
/* tablica z polami wykluczonymi
przy sprawdzaniu */
protected
$aExcluteItem = array();
/* tablica z nazwami pol
ktore maja zostac sprawdzone
pod katem nieprawidlowych znakow*/
protected
$aClean = array();
/* tablica zawierajaca pola do ktorych
wprowadzono niedozwolone znaki */
protected
$aIncorrectRequest = array();
/* nazwa katalogu z modelami */
protected $sDir = 'model';
/* wyrazenie z niechcianymi (niedozwolonymi) znakami */
protected $regExp = '/('|")/';
public function __construct(){
$this->aGet = $_GET;
$this->aPost = $_POST;
}
/* czy klucz istnieje w tablicy */
private function key_exists($sKey, $aTab){
if(array_key_exists($sKey, $aTab))
return true;
else
return false;
}
/* czy klucz module przenosi prawidlowa nazwe */
private function valid_module($aTab){
if($this->key_exists('module', $aTab)){
if(preg_match('/^(w+)$/', $aTab['module']))
return true;
else
return false;
}
}
/* czy istnieje model */
private function is_module($aTab){
$file_dir = ''.$this->sDir.'/'.$aTab['module'].'.php';
if(file_exists($file_dir))
return true;
else
return false;
}
/* @ prepare_array($aTab)
@ usuwa z tablicy ktora jest transportowane zadanie
@ pola, ktore maja byc pominete przy sprawdzaniu
@ pola te transportowane sa w tablicy $this->aExcluteItem
@ w/w tablica jest tworzona przez metode exclute
*/
private function prepare_array($aTab){
foreach($this->aExcluteItem as $sValue){
foreach($aTab as $key => $value){
if($sValue != $key)
$aNewArray[$key] = $value;
}
unset($aTab);
$aTab = $aNewArray;
unset($aNewArray);
}
$this->aClean = $aTab;
$iStart = 0;
foreach($this->aClean as $key => $value){
$aNewArray[$iStart++] = $key;
}
unset($this->aClean);
return $this->aClean = $aNewArray;
}
/* @ check_values($aArray, $sMethod)
@ metoda sprawdza elementy tablicy pod katem
@ niedozwolonych znakow, ktore sa definiowane w $this->regExp
*/
private function check_values($aArray, $sMethod){
$aSource = $this->prepare_array($aArray);
$iA = 0;
for($i = 0; $i < count($aSource); $i++){
if(preg_match($this->regExp, $aArray[$aSource[$i]])){
$this->aIncorrectRequest[$aSource[$i]] = $aArray[$aSource[$i]];
$this->aIncorrectRequest[$iA++] = $aArray[$aSource[$i]];
}
}
return $this->aIncorrectRequest;
}
/* @ exclute()
@ metoda tworzy tablice z polami
@ ktore maja zostac pominiete przy
@ sprawdzaniu pod katem niedozwolonych zankow
*/
public function exclute(){
$iArgs = func_num_args();
$this->aExcluteItem = func_get_args();
return $this->aExcluteItem;
}
/* @ prepare()
@ metoda zwraca jako tablice
@ informacje o wszystkich zadaniach
@ oraz informacje o zadaniach, ktore
@ w zawieraja niedozwolone znaki
*/
public function prepare(){
if(count($this->aGet) > 0){
if($this->valid_module($this->aGet)){
if($this->is_module($this->aGet))
return array($this->aGet['module'] ,$this->aGet ,$this->check_values($this->aGet, '$_GET'));
else
throw new Exception('nie ma takiego modulu');
} else {
throw new Exception('nieprawidlowa nazwa modulu');
}
}
elseif(count($this->aPost) > 0){
if($this->valid_module($this->aPost)){
if($this->is_module($this->aPost))
return array($this->aPost['module'], $this->aPost ,$this->check_values($this->aPost, '$_POST'));
else
throw new Exception('nie ma takiego modulu');
} else {
throw new Exception('nieprawidlowa nazwa modulu');
}
}
}
}
$oKon = new kontroler();
$oKon->exclute('module', 'id');
try {
$dane = $oKon->prepare();
echo'<pre>';
print_r($dane);
echo'</pre>';
}
catch(Exception $e) {
echo $e->getMessage();
}
?>