GIF89a;
Direktori : /home/serb/public_html/api/vendor/slim/slim/Slim/Middleware/ |
Current File : /home/serb/public_html/api/vendor/slim/slim/Slim/Middleware/MethodOverride.php |
<?php /** * Slim - a micro PHP 5 framework * * @author Josh Lockhart <info@slimframework.com> * @copyright 2011 Josh Lockhart * @link http://www.slimframework.com * @license http://www.slimframework.com/license * @version 2.6.1 * @package Slim * * MIT LICENSE * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the * "Software"), to deal in the Software without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so, subject to * the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ namespace Slim\Middleware; /** * HTTP Method Override * * This is middleware for a Slim application that allows traditional * desktop browsers to submit pseudo PUT and DELETE requests by relying * on a pre-determined request parameter. Without this middleware, * desktop browsers are only able to submit GET and POST requests. * * This middleware is included automatically! * * @package Slim * @author Josh Lockhart * @since 1.6.0 */ class MethodOverride extends \Slim\Middleware { /** * @var array */ protected $settings; /** * Constructor * @param array $settings */ public function __construct($settings = array()) { $this->settings = array_merge(array('key' => '_METHOD'), $settings); } /** * Call * * Implements Slim middleware interface. This method is invoked and passed * an array of environment variables. This middleware inspects the environment * variables for the HTTP method override parameter; if found, this middleware * modifies the environment settings so downstream middleware and/or the Slim * application will treat the request with the desired HTTP method. * * @return array[status, header, body] */ public function call() { $env = $this->app->environment(); if (isset($env['HTTP_X_HTTP_METHOD_OVERRIDE'])) { // Header commonly used by Backbone.js and others $env['slim.method_override.original_method'] = $env['REQUEST_METHOD']; $env['REQUEST_METHOD'] = strtoupper($env['HTTP_X_HTTP_METHOD_OVERRIDE']); } elseif (isset($env['REQUEST_METHOD']) && $env['REQUEST_METHOD'] === 'POST') { // HTML Form Override $req = new \Slim\Http\Request($env); $method = $req->post($this->settings['key']); if ($method) { $env['slim.method_override.original_method'] = $env['REQUEST_METHOD']; $env['REQUEST_METHOD'] = strtoupper($method); } } $this->next->call(); } }