1<?php
2/*
3    +-----------------------------------------------------------------------------+
4    | ILIAS open source                                                           |
5    +-----------------------------------------------------------------------------+
6    | Copyright (c) 1998-2001 ILIAS open source, University of Cologne            |
7    |                                                                             |
8    | This program is free software; you can redistribute it and/or               |
9    | modify it under the terms of the GNU General Public License                 |
10    | as published by the Free Software Foundation; either version 2              |
11    | of the License, or (at your option) any later version.                      |
12    |                                                                             |
13    | This program is distributed in the hope that it will be useful,             |
14    | but WITHOUT ANY WARRANTY; without even the implied warranty of              |
15    | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               |
16    | GNU General Public License for more details.                                |
17    |                                                                             |
18    | You should have received a copy of the GNU General Public License           |
19    | along with this program; if not, write to the Free Software                 |
20    | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. |
21    +-----------------------------------------------------------------------------+
22*/
23
24
25/**
26* class ilTimingPlaned
27*
28* @author Stefan Meyer <meyer@leifos.com>
29* @version $Id$
30*
31*/
32
33
34class ilTimingPlaned
35{
36    public $ilErr;
37    public $ilDB;
38    public $lng;
39
40    /**
41     * Constructor
42     * @param int $item_id
43     * @param int $a_usr_id
44     */
45    public function __construct($item_id, $a_usr_id)
46    {
47        global $DIC;
48
49        $ilErr = $DIC['ilErr'];
50        $ilDB = $DIC['ilDB'];
51        $lng = $DIC['lng'];
52        $tree = $DIC['tree'];
53
54        $this->ilErr = &$ilErr;
55        $this->db = &$ilDB;
56        $this->lng = &$lng;
57
58        $this->item_id = $item_id;
59        $this->user_id = $a_usr_id;
60
61        $this->__read();
62    }
63
64    public function getUserId()
65    {
66        return $this->user_id;
67    }
68    public function getItemId()
69    {
70        return $this->item_id;
71    }
72
73    public function getPlanedStartingTime()
74    {
75        return $this->start;
76    }
77    public function setPlanedStartingTime($a_time)
78    {
79        $this->start = $a_time;
80    }
81    public function getPlanedEndingTime()
82    {
83        return $this->end;
84    }
85    public function setPlanedEndingTime($a_end)
86    {
87        $this->end = $a_end;
88    }
89
90    public function validate()
91    {
92        include_once './Services/Object/classes/class.ilObjectActivation.php';
93        $item = ilObjectActivation::getItem($this->getItemId());
94        return true;
95    }
96
97    public function update()
98    {
99        ilTimingPlaned::_delete($this->getItemId(), $this->getUserId());
100        $this->create();
101        return true;
102    }
103
104    public function create()
105    {
106        global $DIC;
107
108        $ilDB = $DIC['ilDB'];
109
110        $query = "INSERT INTO crs_timings_planed (item_id,usr_id,planed_start,planed_end) " .
111            "VALUES( " .
112            $ilDB->quote($this->getItemId(), 'integer') . ", " .
113            $ilDB->quote($this->getUserId(), 'integer') . ", " .
114            $ilDB->quote($this->getPlanedStartingTime(), 'integer') . ", " .
115            $ilDB->quote($this->getPlanedEndingTime(), 'integer') . " " .
116            ")";
117        $res = $ilDB->manipulate($query);
118    }
119
120    public function delete()
121    {
122        return ilTimingPlaned::_delete($this->getItemId(), $this->getUserId());
123    }
124
125    public static function _delete($a_item_id, $a_usr_id)
126    {
127        global $DIC;
128
129        $ilDB = $DIC['ilDB'];
130
131        $query = "DELETE FROM crs_timings_planed " .
132            "WHERE item_id = " . $ilDB->quote($a_item_id, 'integer') . " " .
133            "AND usr_id = " . $ilDB->quote($a_usr_id, 'integer') . " ";
134        $res = $ilDB->manipulate($query);
135    }
136
137    // Static
138    public static function _getPlanedTimings($a_usr_id, $a_item_id)
139    {
140        global $DIC;
141
142        $ilDB = $DIC['ilDB'];
143
144        $query = "SELECT * FROM crs_timings_planed " .
145            "WHERE item_id = " . $ilDB->quote($a_item_id, 'integer') . " " .
146            "AND usr_id = " . $ilDB->quote($a_usr_id, 'integer') . " ";
147        $res = $ilDB->query($query);
148        while ($row = $res->fetchRow(ilDBConstants::FETCHMODE_OBJECT)) {
149            $data['planed_start'] = $row->planed_start;
150            $data['planed_end'] = $row->planed_end;
151        }
152        return $data ? $data : array();
153    }
154
155
156    public static function _getPlanedTimingsByItem($a_item_id)
157    {
158        global $DIC;
159
160        $ilDB = $DIC['ilDB'];
161
162        $query = "SELECT * FROM crs_timings_planed " .
163            "WHERE item_id = " . $ilDB->quote($a_item_id, 'integer') . " ";
164        $res = $ilDB->query($query);
165        while ($row = $res->fetchRow(ilDBConstants::FETCHMODE_OBJECT)) {
166            $data[$row->usr_id]['start'] = $row->planed_start;
167            $data[$row->usr_id]['end'] = $row->planed_end;
168        }
169        return $data ? $data : array();
170    }
171
172    public static function _deleteByItem($a_item_id)
173    {
174        global $DIC;
175
176        $ilDB = $DIC['ilDB'];
177
178        $query = "DELETE FROM crs_timings_planed " .
179            "WHERE item_id = " . $ilDB->quote($a_item_id, 'integer') . " ";
180        $res = $ilDB->manipulate($query);
181    }
182
183    public static function _deleteByUser($a_usr_id)
184    {
185        global $DIC;
186
187        $ilDB = $DIC['ilDB'];
188
189        $query = "DELETE FROM crs_timings_planed " .
190            "WHERE usr_id = " . $ilDB->quote($a_usr_id, 'integer') . " ";
191        $res = $ilDB->manipulate($query);
192    }
193
194    public function __read()
195    {
196        global $DIC;
197
198        $ilDB = $DIC['ilDB'];
199
200        $query = "SELECT * FROM crs_timings_planed " .
201            "WHERE item_id = " . $ilDB->quote($this->getItemId(), 'integer') . " " .
202            "AND usr_id = " . $ilDB->quote($this->getUserId(), 'integer') . " ";
203        $res = $this->db->query($query);
204        while ($row = $res->fetchRow(ilDBConstants::FETCHMODE_OBJECT)) {
205            $this->setPlanedStartingTime($row->planed_start);
206            $this->setPlanedEndingTime($row->planed_end);
207        }
208        return true;
209    }
210}
211