source: OWR/Model/Objects.php @ 6fd857

Revision 6fd857, 5.0 KB checked in by pierre-alain <pierre-alain@…>, 8 years ago (diff)

conventions renaming

  • Property mode set to 100644
Line 
1<?php
2/**
3 * Model for 'objects' object
4 *
5 * PHP 5
6 *
7 * OWR - OpenWebReader
8 *
9 * Copyright (c) 2009, Pierre-Alain Mignot
10 *
11 * Home page: http://openwebreader.org
12 *
13 * E-Mail: contact@openwebreader.org
14 *
15 * All Rights Reserved
16 *
17 * This program is free software; you can redistribute it and/or modify
18 * it under the terms of the GNU General Public License as published by
19 * the Free Software Foundation; either version 2 of the License, or
20 * (at your option) any later version.
21 *
22 * This program is distributed in the hope that it will be useful,
23 * but WITHOUT ANY WARRANTY; without even the implied warranty of
24 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
25 * GNU General Public License for more details.
26 *
27 * You should have received a copy of the GNU General Public License
28 * along with this program; if not, write to the Free Software
29 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
30 *
31 * @author Pierre-Alain Mignot <contact@openwebreader.org>
32 * @copyright Copyright (c) 2009, Pierre-Alain Mignot
33 * @license http://www.gnu.org/copyleft/gpl.html
34 * @package OWR
35 * @subpackage Model
36 */
37namespace OWR\Model;
38use OWR\Model,
39    OWR\Request,
40    OWR\Exception,
41    OWR\DAO;
42/**
43 * This class is used to add/delete objects
44 * @package OWR
45 * @subpackage Model
46 * @uses OWR\Model extends the base class
47 * @uses OWR\Request the request
48 * @uses OWR\Exception the exception handler
49 * @uses OWR\DAO the DAO
50 * @uses OWR\Request a request sent to the model
51 * @subpackage Model
52 */
53class Objects extends Model
54{
55    /**
56     * Adds an object entry into the DB
57     *
58     * @access public
59     * @param mixed $request the Request instance
60     * @return $this
61     */
62    public function edit(Request $request)
63    {
64        if(empty($request->type))
65        {
66            $request->setResponse(new Response(array(
67                'do'        => 'error',
68                'error'     => 'Missing type',
69                'status'    => Exception::E_OWR_BAD_REQUEST
70            )));
71            return $this;
72        }
73
74        $request->id = $this->_dao->getUniqueId($request->type);
75        // we don't send 201 status because it is an internal call
76        // if we add news we don't want to send created status
77        // because it is NOT a user action
78        $request->setResponse(new Response);
79        return $this;
80    }
81
82    /**
83     * Deletes an object
84     *
85     * @access public
86     * @param mixed $request the Request instance
87     * @return $this
88     */
89    public function delete(Request $request)
90    {
91        if(empty($request->id))
92        {
93            $request->setResponse(new Response(array(
94                'do'        => 'error',
95                'error'     => 'Missing id',
96                'status'    => Exception::E_OWR_BAD_REQUEST
97            )));
98            return $this;
99        }
100
101        DAO::getType($request->id); // check user has the rights to do that
102        $this->_db->beginTransaction();
103        try
104        {
105            $this->_dao->delete($request->id);
106        }
107        catch(Exception $e)
108        {
109            $this->_db->rollback();
110            throw new Exception($e->getContent(), $e->getCode());
111        }
112        $this->_db->commit();
113
114        $request->setResponse(new Response);
115        return $this;
116    }
117
118    /**
119     * Gets datas to render an object
120     *
121     * @access public
122     * @author Pierre-Alain Mignot <contact@openwebreader.org>
123     * @param mixed $request the Request instance
124     * @param array $args additional arguments, optionnal
125     * @param string $order the order clause
126     * @param string $groupby the groupby clause
127     * @param string $limit the limit clause
128     * @return $this
129     */
130    public function view(Request $request, array $args = array(), $order = '', $groupby = '', $limit = '')
131    {
132        $args['FETCH_TYPE'] = 'assoc';
133
134        if(!empty($request->ids))
135        {
136            $args['id'] = $request->ids;
137            $limit = count($request->ids);
138        }
139        elseif(!empty($request->id))
140        {
141            $args['id'] = $request->id;
142            $limit = 1;
143        }
144
145        $types = $this->_dao->get($args, '*', $order, $groupby, $limit);
146        if(empty($types))
147        {
148            $request->setResponse(new Response(array(
149                'status'    => 204
150            )));
151            return $this;
152        }
153
154        $r = new Request(array('id' => null));
155        foreach($types as $type)
156        {
157            $r->id = $type['id'];
158            parent::getCachedModel($type['type'])->view($r, $args, $order, $groupby, 1);
159            $response = $r->getResponse();
160            if('error' !== $response->getNext())
161            {
162                $data = $response->getDatas();
163                empty($data) || $datas[] = $data;
164            }
165            else
166            {
167                $request->setResponse($response);
168                return $this;
169            }
170        }
171
172        $request->setResponse(new Response(array(
173            'datas'        => $datas,
174            'multiple'     => !isset($types['id'])
175        )));
176        return $this;
177    }
178}
Note: See TracBrowser for help on using the repository browser.