datamodel = $data_access; $this->functions = $functions; $this->factory = $functions->factory; $this->model = $model; $registry = fl_registry::getInstance(); $this->request = $registry->get('request'); $this->cap = $this->request->route; $this->modulepath = $registry->get('path', 'module'); $this->responder = $this->factory->create('responder'); $this->view = $this->cap['action']; } /** * Datenobjekt (bislang ein Array) holen * * @return fl_data_structures_response */ public function get_response() { $response = $this->factory->get_structure( 'response', array( 'http_header'=>array(), 'data'=>$this->data, 'layout'=>$this->layout, 'subview'=>$this->view ) ); return $response; } /** * Verwaltungsobjekt für Antwortobjekte holen * * @return fl_responder Iterator data_wrapper */ public function get_responses() { return $this->responder; } /** * Gemeinsame vorangestellte Abläufe * * Falls ein Modul gemeinsame, bei jedem Seitenaufruf wiederkehrende * Aufgaben hat, können diese in der Funktion common definiert werden. * * Diese Funktion kann und soll ggf. von den Modulen überschrieben werden. * * @return bool Erfolgreiche Abarbeitung */ public function common() { return TRUE; } /** * Alternative Abläufe */ public function alternate($e = null) { if ( $e instanceof Exception ) { $registry = fl_registry::getInstance(); throw $e; } } /** * Weiterleitung zur DefaultAction * * Wenn in keine Action übergeben wurde, wird die defaultAction * ausgeführt. Diese wird von jedem Controller selbst festgelegt. * * Außerdem wird der Subview automatisch auf die im Controller * festgelegte Action gesetzt. * * @param string $param */ public function defaultAction($param) { $this->cap['action'] = $this->defaultAction; $action = $this->defaultAction; $this->view = $this->defaultAction; /** * richtigen Wert in Registry speichern */ $reg =& fl_registry::getInstance(); $request = $reg->get('request'); $request->route['action'] = $this->defaultAction; $reg->set('request', $request); $this->$action($param); } /** * Speichert eine kurze Nachricht für die Darstellung. * * Es kann eine "Wichtigkeit" als $type übergeben werden, diese wird * als CSS-Klasse eingefügt. * * @param string $text Nachrichtentext * @param string $type Wichtigkeit, wird als CSS-Klasse eingefügt * @param string $namespace Gültigkeitsbereich */ protected function flash($text, $type='', $namespace='') { $flash = $this->functions->flash; return $flash->add_message($text, $namespace, $type); } /** * Ruft eine andere URL auf. * * @param string $target * @todo externes Template fuer Weiterleitungsfehler verwenden */ protected function redirect($target='') { $target = ltrim($target, '/'); if ( defined('SUBDIR') ) { $target = SUBDIR.'/'.$target; } $zieladresse = 'http://'.$_SERVER['HTTP_HOST'].'/'.$target; $this->functions->flash->save_messages(); #if ( headers_sent($file, $line) AND strlen(ob_get_contents()) > 0) { if ( headers_sent($file, $line) ) { if ( error_reporting() > 0 ) { $backtrace = debug_backtrace(); $html = <<HTTP-Header wurden bereits gesandt
Die Ausgabe startete hier:
Datei: {$file}
Zeile: {$line}
Weitere Informationen
Anfrage: {$_SERVER['REQUEST_URI']}
Zieladresse: {$zieladresse}
Backtrace:
{$backtrace}
HTML;
echo $html;
}
ob_flush();
$this->functions->stop(
''.$zieladresse.''
);
} else {
header('Location: '.$zieladresse);
ob_flush();
}
}
/**
* POST-Daten holen
*
* Die POST-Daten werde geholt und zurückgegeben.
* Wenn keine Daten da sind, leite den Browser auf eine
* andere Adresse um.
*
* @param string $target Zieladresse, falls keine Daten vorliegen.
* @return array
*/
protected function get_postdata($target='') {
if ( $this->request->has_postdata() ) {
$postdata = $this->request->post;
} else {
$this->redirect($target);
}
return $postdata;
}
/**
* Parameter auswerten
*
* @param string $params
* @return array
*/
protected function parse_params($params) {
if ( strpos($params, '/') ) {
$params = explode('/', $params);
} else {
$params = array($params);
}
if ( func_num_args() > 1 ) {
$args = func_get_args();
unset($args[0]);
foreach( $args as $nr => $type ) {
$keynr = $nr - 1;
if ( !isset($params[$keynr]) ) {
$params[$keynr] = null;
}
settype($params[$keynr], $type);
}
}
return $params;
}
}
?>