1<?php
2// This file is part of Moodle - http://moodle.org/
3//
4// Moodle is free software: you can redistribute it and/or modify
5// it under the terms of the GNU General Public License as published by
6// the Free Software Foundation, either version 3 of the License, or
7// (at your option) any later version.
8//
9// Moodle is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12// GNU General Public License for more details.
13//
14// You should have received a copy of the GNU General Public License
15// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
16
17/**
18* @package    backup-convert
19* @subpackage cc-library
20* @copyright  2011 Darko Miletic <dmiletic@moodlerooms.com>
21* @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
22*/
23
24
25
26 /**
27   Defined as specified in CC 1.1
28 */
29class intended_user_role {
30    const LEARNER               = 'Learner';
31    const INSTRUCTOR            = 'Instructor';
32    const MENTOR                = 'Mentor';
33}
34
35class technical_role {
36    const AUTHOR                = 'author';
37    const PUBLISHER             = 'publisher';
38    const UNKNOWN               = 'unknown';
39    const INITIATOR             = 'initiator';
40    const TERMINATOR            = 'terminator';
41    const VALIDATOR             = 'validator';
42    const EDITOR                = 'editor';
43    const GRAPHICAL_DESIGNER    = 'graphical designer';
44    const TECHNICAL_IMPLEMENTER = 'technical implementer';
45    const CONTENT_PROVIDER      = 'content provider';
46    const TECHNICAL_VALIDATOR   = 'technical validator';
47    const EDUCATION_VALIDATOR   = 'educational validator';
48    const SCRIPT_WRITER         = 'script writer';
49    const INSTRUCTIONAL_DESIGNER= 'instructional designer';
50    const SUBJET_MATTER_EXPERT  = 'subject matter expert';
51}
52
53
54class rights_copyright {
55    const   YES                  = 'yes';
56    const   NO                   = 'no';
57}
58
59
60class rights_cost {
61    const   YES                  = 'yes';
62    const   NO                   = 'no';
63}
64
65
66// Language identifier (as defined in ISO 639-1, ISO 639-2, and ISO 3166-1)
67class language_lom {
68    const   US_ENGLISH           = 'en-US';
69    const   GB_ENGLISH           = 'en-GB';
70    const   AR_SPANISH           = 'es-AR';
71    const   GR_GREEK             = 'el-GR';
72
73}
74
75
76
77/**
78 * Metadata Manifest
79 *
80 */
81class cc_metadata_manifest implements cc_i_metadata_manifest {
82
83
84    public  $arraygeneral   = array();
85    public  $arraytech      = array();
86    public  $arrayrights    = array();
87    public  $arraylifecycle = array();
88
89
90    public function add_metadata_general($obj){
91        if (empty($obj)){
92            throw new Exception('Medatada Object given is invalid or null!');
93        }
94        !is_null($obj->title)? $this->arraygeneral['title']=$obj->title:null;
95        !is_null($obj->language)? $this->arraygeneral['language']=$obj->language:null;
96        !is_null($obj->description)? $this->arraygeneral['description']=$obj->description:null;
97        !is_null($obj->keyword)? $this->arraygeneral['keyword']=$obj->keyword:null;
98        !is_null($obj->coverage)? $this->arraygeneral['coverage']=$obj->coverage:null;
99        !is_null($obj->catalog)? $this->arraygeneral['catalog']=$obj->catalog:null;
100        !is_null($obj->entry)? $this->arraygeneral['entry']=$obj->entry:null;
101    }
102
103    public function add_metadata_technical($obj){
104        if (empty($obj)){
105            throw new Exception('Medatada Object given is invalid or null!');
106        }
107        !is_null($obj->format)? $this->arraytech['format']=$obj->format:null;
108    }
109
110
111    public function add_metadata_rights($obj){
112        if (empty($obj)){
113            throw new Exception('Medatada Object given is invalid or null!');
114        }
115        !is_null($obj->copyright)? $this->arrayrights['copyrightAndOtherRestrictions']=$obj->copyright:null;
116        !is_null($obj->description)? $this->arrayrights['description']=$obj->description:null;
117        !is_null($obj->cost)? $this->arrayrights['cost']=$obj->cost:null;
118
119    }
120
121
122    public function add_metadata_lifecycle($obj){
123        if (empty($obj)){
124            throw new Exception('Medatada Object given is invalid or null!');
125        }
126        !is_null($obj->role)? $this->arraylifecycle['role']=$obj->role:null;
127        !is_null($obj->entity)? $this->arraylifecycle['entity']=$obj->entity:null;
128        !is_null($obj->date)? $this->arraylifecycle['date']=$obj->date:null;
129
130    }
131
132}
133
134
135/**
136 * Metadata Lifecycle Type
137 *
138 */
139class cc_metadata_lifecycle{
140
141    public $role             = array();
142    public $entity           = array();
143    public $date             = array();
144
145    public function set_role($role){
146        $this->role[] = array($role);
147    }
148    public function set_entity($entity){
149        $this->entity[] = array($entity);
150    }
151    public function set_date($date){
152        $this->date[] = array($date);
153    }
154
155
156}
157
158/**
159 * Metadata Rights Type
160 *
161 */
162class cc_metadata_rights {
163
164    public $copyright        = array();
165    public $description      = array();
166    public $cost             = array();
167
168    public function set_copyright($copy){
169        $this->copyright[] = array($copy);
170    }
171    public function set_description ($des,$language){
172        $this->description[] = array($language,$des);
173    }
174    public function set_cost($cost){
175        $this->cost[] = array($cost);
176    }
177
178}
179
180
181/**
182 * Metadata Technical Type
183 *
184 */
185class cc_metadata_technical {
186
187    public  $format         = array();
188
189
190    public function set_format($format){
191        $this->format[] = array($format);
192    }
193
194}
195
196
197/**
198 * Metadata General Type
199 *
200 */
201class cc_metadata_general {
202
203    public  $title          = array();
204    public  $language       = array();
205    public  $description    = array();
206    public  $keyword        = array();
207    public  $coverage       = array();
208    public  $catalog        = array();
209    public  $entry          = array();
210
211
212
213    public function set_coverage ($coverage,$language){
214        $this->coverage[] = array($language,$coverage);
215    }
216    public function set_description ($description,$language){
217        $this->description[] = array($language,$description);
218    }
219    public function set_keyword ($keyword,$language){
220        $this->keyword[] = array($language,$keyword);
221    }
222    public function set_language ($language){
223        $this->language[] = array($language);
224    }
225    public function set_title ($title,$language){
226        $this->title[] = array($language,$title);
227    }
228    public function set_catalog ($cat){
229        $this->catalog[] = array($cat);
230    }
231    public function set_entry ($entry){
232        $this->entry[] = array($entry);
233    }
234
235
236}