Exemplo n.º 1
0
/**
 * Request data listener
 *
 * @param array $data
 *
 * @return void
 */
function listener_data_request(array &$data) : void
{
    $data['host'] = $_SERVER['HTTP_HOST'];
    $data['scheme'] = !empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https' : 'http';
    $data['secure'] = $data['scheme'] === 'https';
    $data['get'] = http_filter($_GET);
    $data['post'] = !empty($_POST['token']) && http_post_validate($_POST['token']) ? $_POST : [];
    $data['files'] = $_FILES ? http_files_convert($_FILES) : [];
    $url = urldecode(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));
    $data['url'] = preg_replace('#^' . $_SERVER['SCRIPT_NAME'] . '#', '', $url);
    $data['path'] = url_rewrite($data['url'], true);
    $parts = explode('/', trim($data['path'], '/'));
    $data['entity'] = $parts[0] ?? $data['entity'];
    $data['action'] = $parts[1] ?? $data['action'];
    $data['id'] = $parts[2] ?? $data['id'];
}
Exemplo n.º 2
0
Arquivo: http.php Projeto: akilli/qnd
/**
 * Converts and validates uploaded files
 *
 * @param array $data
 *
 * @return array
 */
function http_files_convert(array $data) : array
{
    $files = [];
    foreach ($data as $id => $item) {
        $files[$id] = is_array($item) ? http_files_fix($item) : $item;
    }
    $keys = ['error', 'name', 'size', 'tmp_name', 'type'];
    $exts = data('ext', 'file');
    foreach ($files as $id => $item) {
        if (!is_array($item)) {
            continue;
        }
        $ids = array_keys($item);
        sort($ids);
        if ($ids != $keys) {
            $files[$id] = http_files_convert($item);
        } elseif ($item['error'] === UPLOAD_ERR_NO_FILE || !is_uploaded_file($item['tmp_name'])) {
            unset($files[$id]);
        } else {
            $files[$id]['ext'] = pathinfo($item['name'], PATHINFO_EXTENSION);
            if (empty($exts[$files[$id]['ext']])) {
                message(_('Invalid file %s', $item['name']));
                unset($files[$id]);
            }
        }
    }
    return $files;
}