Example #1
0
 public function processRequest($action, array $params)
 {
     empty($action) and $action = $this->default_action;
     if (!$this->isMethodCallable($action)) {
         Template::show404Page();
         return;
     }
     $request_result = $this->{$action}($params);
     $class = strtolower(get_class($this));
     if (!empty($request_result['redirect'])) {
         header("location: /{$class}/{$request_result['redirect']}");
         empty($request_result['data']) or User::storeFormData($request_result['data']);
         die;
     }
     $template_name = !empty($request_result['template']) ? $request_result['template'] : $class . '_' . $action;
     Template::showPage($template_name, $request_result['data']);
 }
Example #2
0
ob_start();
session_start();
include dirname(__FILE__) . DIRECTORY_SEPARATOR . 'configure.php';
define('FULL_REQUEST', (empty($_SERVER["HTTPS"]) ? 'http' : 'https') . '://' . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]);
$module = 'files';
$action = '';
$params = array();
if (!empty($_SERVER["PATH_INFO"]) && preg_match('!/(\\w+)/?(\\w+)?/?(.*)/?!', $_SERVER["PATH_INFO"], $chunks)) {
    list(, $module, $action, $params_str) = $chunks;
    if ($params_str) {
        $keys = array();
        $values = array();
        foreach (explode('/', $params_str) as $i => $str) {
            if ($i & 1) {
                $values[] = $str;
            } else {
                $keys[] = $str;
            }
        }
        if (count($keys) == count($values)) {
            $params = array_combine($keys, $values);
        }
    }
}
if (class_exists($module)) {
    $handler = new $module();
    $handler->processRequest($action, $params);
} else {
    Template::show404Page();
}
Example #3
0
 /**
  * @request_handler
  * @return array
  */
 public function download($params)
 {
     empty($params['name']) and Template::show404Page();
     $db = DB::getInstance();
     $file = $db->query(SqlBuilder::newQuery()->from('file')->select('*')->where('file_name', $db->quote($params['name']))->limit(1)->getSql())->fetch() or Template::show404Page();
     $dir = rtrim(Config::getConfig('repository'), '\\/') . DIRECTORY_SEPARATOR;
     ob_end_clean();
     header("Content-Type: {$file['type']}");
     header("Accept-Ranges: bytes");
     header("Content-Length: {$file['size']}");
     header("Content-Disposition: attachment; filename={$file['original_name']}");
     header("Content-Transfer-Encoding: binary");
     readfile($dir . $file['file_name']);
 }