1<?php
2/**
3 * Zend Framework
4 *
5 * LICENSE
6 *
7 * This source file is subject to the new BSD license that is bundled
8 * with this package in the file LICENSE.txt.
9 * It is also available through the world-wide-web at this URL:
10 * http://framework.zend.com/license/new-bsd
11 * If you did not receive a copy of the license and are unable to
12 * obtain it through the world-wide-web, please send an email
13 * to license@zend.com so we can send you a copy immediately.
14 *
15 * @category   Zend
16 * @package    Zend_Controller
17 * @subpackage Zend_Controller_Plugin
18 * @copyright  Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
19 * @license    http://framework.zend.com/license/new-bsd     New BSD License
20 * @version    $Id$
21 */
22
23/**
24 * @see Zend_Controller_Plugin_Abstract
25 */
26
27/**
28 * @see Zend_Controller_Request_Http
29 */
30
31/**
32 * Plugin to digest PUT request body and make params available just like POST
33 *
34 * @package    Zend_Controller
35 * @subpackage Zend_Controller_Plugin
36 * @copyright  Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
37 * @license    http://framework.zend.com/license/new-bsd     New BSD License
38 */
39class Zend_Controller_Plugin_PutHandler extends Zend_Controller_Plugin_Abstract
40{
41    /**
42     * Before dispatching, digest PUT request body and set params
43     *
44     * @param Zend_Controller_Request_Abstract $request
45     */
46    public function preDispatch(Zend_Controller_Request_Abstract $request)
47    {
48        if (!$request instanceof Zend_Controller_Request_Http) {
49            return;
50        }
51
52        if ($this->_request->isPut()) {
53            $putParams = array();
54            parse_str($this->_request->getRawBody(), $putParams);
55            $request->setParams($putParams);
56        }
57    }
58}
59