ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
class.ilECSCategoryMapping.php
Go to the documentation of this file.
1<?php
2/*
3 +-----------------------------------------------------------------------------+
4 | ILIAS open source |
5 +-----------------------------------------------------------------------------+
6 | Copyright (c) 1998-2006 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
24include_once './Services/WebServices/ECS/classes/class.ilECSCategoryMappingRule.php';
25
36{
37 private static $cached_active_rules = null;
38
45 public static function getActiveRules()
46 {
47 global $ilDB;
48
49 $res = $ilDB->query('SELECT mapping_id FROM ecs_container_mapping');
50 while ($row = $res->fetchRow(ilDBConstants::FETCHMODE_OBJECT)) {
51 $rules[] = new ilECSCategoryMappingRule($row->mapping_id);
52 }
53 return $rules ? $rules : array();
54 }
55
63 public static function getMatchingCategory($a_server_id, $a_matchable_content)
64 {
65 global $ilLog;
66
67 if (is_null(self::$cached_active_rules)) {
68 self::$cached_active_rules = self::getActiveRules();
69 }
70 foreach (self::$cached_active_rules as $rule) {
71 if ($rule->matches($a_matchable_content)) {
72 $ilLog->write(__METHOD__ . ': Found assignment for field type: ' . $rule->getFieldName());
73 return $rule->getContainerId();
74 }
75 $ilLog->write(__METHOD__ . ': Category assignment failed for field: ' . $rule->getFieldName());
76 }
77 // Return default container
78 $ilLog->write(__METHOD__ . ': Using default container');
79
80 return ilECSSetting::getInstanceByServerId($a_server_id)->getImportId();
81 }
82
89 public static function handleUpdate($a_obj_id, $a_server_id, $a_matchable_content)
90 {
91 global $tree,$ilLog;
92
93 $cat = self::getMatchingCategory($a_server_id, $a_matchable_content);
94
95 $a_ref_id = current(ilObject::_getAllReferences($a_obj_id));
98
99 $exists = false;
100 foreach ($references as $ref_id => $null) {
101 if ($tree->getParentId($ref_id) == $cat) {
102 $exists = true;
103 }
104 }
105 $ilLog->write(__METHOD__ . ': Creating/Deleting references...');
106 include_once './Services/Object/classes/class.ilObjectFactory.php';
107
108 if (!$exists) {
109 $ilLog->write(__METHOD__ . ': Add new reference. STEP 1');
110
111 if ($obj_data = ilObjectFactory::getInstanceByRefId($a_ref_id, false)) {
112 $new_ref_id = $obj_data->createReference();
113 $obj_data->putInTree($cat);
114 $obj_data->setPermissions($cat);
115 $ilLog->write(__METHOD__ . ': Add new reference.');
116 }
117 }
118 // Now delete old references
119 foreach ($references as $ref_id => $null) {
120 $parent = $tree->getParentId($ref_id);
121 if ($parent == $cat) {
122 continue;
123 }
124 if (!in_array($parent, $all_cats)) {
125 continue;
126 }
127 if ($to_delete = ilObjectFactory::getInstanceByRefId($ref_id)) {
128 $to_delete->delete();
129 $ilLog->write(__METHOD__ . ': Deleted deprecated reference.');
130 }
131 }
132 return true;
133 }
134
141 public static function lookupHandledCategories()
142 {
143 global $ilDB;
144
145 $res = $ilDB->query("SELECT container_id FROM ecs_container_mapping ");
146 while ($row = $res->fetchRow(ilDBConstants::FETCHMODE_OBJECT)) {
147 $ref_ids[] = $row->container_id;
148 }
149 return $ref_ids ? $ref_ids : array();
150 }
151
158 public static function getPossibleFields()
159 {
160 global $lng;
161
162 $options = array(
163 "community" => $lng->txt("ecs_field_community"),
164 "part_id" => $lng->txt("ecs_field_part_id"),
165 "type" => $lng->txt("type")
166 );
167
168 // will be handled by server soon?
169
170 // only courses for now
171 include_once('./Services/WebServices/ECS/classes/class.ilECSUtils.php');
172 $course_fields = ilECSUtils::_getOptionalECourseFields();
173 foreach ($course_fields as $field) {
174 $options[$field] = $lng->txt("obj_rcrs") . " - " . $lng->txt("ecs_field_" . $field);
175 }
176
177 return $options;
178 }
179}
if(!isset( $_REQUEST[ 'ReturnTo'])) if(!isset($_REQUEST['AuthId'])) $options
Definition: as_login.php:20
An exception for terminatinating execution or to throw for unit testing.
Defines a rule for the assignment of ECS remote courses to categories.
static getActiveRules()
get active rules
static handleUpdate($a_obj_id, $a_server_id, $a_matchable_content)
Handle update of ecs content and create references.
static getMatchingCategory($a_server_id, $a_matchable_content)
get matching category
static getInstanceByServerId($a_server_id)
Get singleton instance per server.
static _getOptionalECourseFields()
get optional econtent fields These fields might be mapped against AdvancedMetaData field definitions
static getInstanceByRefId($a_ref_id, $stop_on_error=true)
get an instance of an Ilias object by reference id
static _lookupObjId($a_id)
static _getAllReferences($a_id)
get all reference ids of object
global $lng
Definition: privfeed.php:17
foreach($_POST as $key=> $value) $res
$rule
Definition: showstats.php:43
global $ilDB