5 include_once(
"./Services/Component/classes/class.ilPlugin.php");
28 return "AdvancedMetaData";
33 return "AdvancedMDClaiming";
43 require_once
"Services/AdvancedMetaData/classes/class.ilAdvancedMDPermissionHelper.php";
78 $set = $ilDB->query(
"SELECT record_id FROM adv_md_record".
79 " WHERE record_id = ".$ilDB->quote($a_record_id,
"integer"));
80 return (
bool)$ilDB->numRows($set);
96 $record_id = $ilDB->nextId(
"adv_md_record");
99 "record_id" =>
array(
"integer", $record_id),
100 "import_id" =>
array(
"text",
'il_'.IL_INST_ID.
'_adv_md_record_'.$record_id),
101 "title" =>
array(
"text", trim($a_title)),
102 "description" =>
array(
"text", trim($a_description)),
103 "active" =>
array(
"integer", (
int)$a_active)
105 $ilDB->insert(
"adv_md_record", $fields);
107 self::saveRecordObjTypes($record_id, $a_obj_types);
119 protected static function isValidObjType($a_obj_type, $a_is_substitution =
false)
122 $valid =
array(
"crs",
"cat",
"book",
"wiki",
"glo",
"orgu",
"prg");
124 if(!$a_is_substitution)
130 return in_array($a_obj_type,
$valid);
143 foreach($a_obj_types as $type)
147 $type = strtolower(trim($type));
152 $subtype = strtolower(trim($type[1]));
153 $type = strtolower(trim($type[0]));
156 if(self::isValidObjType($type))
159 "record_id" =>
array(
"integer", $a_record_id),
160 "obj_type" =>
array(
"text", $type),
161 "sub_type" =>
array(
"text", $subtype)
163 $ilDB->insert(
"adv_md_record_objs", $fields);
178 public static function updateDBRecord($a_record_id, $a_title, $a_description, $a_active,
array $a_obj_types)
182 if(self::hasDBRecord($a_record_id))
185 "title" =>
array(
"text", trim($a_title)),
186 "description" =>
array(
"text", trim($a_description)),
187 "active" =>
array(
"integer", (
int)$a_active)
189 $ilDB->update(
"adv_md_record", $fields,
190 array(
"record_id" =>
array(
"integer", $a_record_id)));
192 $ilDB->manipulate(
"DELETE FROM adv_md_record_objs".
193 " WHERE record_id = ".$ilDB->quote($a_record_id,
"integer"));
195 self::saveRecordObjTypes($a_record_id, $a_obj_types);
213 if(self::hasDBRecord($a_record_id))
215 $ilDB->manipulate(
"DELETE FROM adv_md_record".
216 " WHERE record_id = ".$ilDB->quote($a_record_id,
"integer"));
233 $set = $ilDB->query(
"SELECT field_id FROM adv_mdf_definition".
234 " WHERE field_id = ".$ilDB->quote($a_field_id,
"integer"));
235 return (
bool)$ilDB->numRows($set);
250 $sql =
"SELECT max(position) pos".
251 " FROM adv_mdf_definition".
252 " WHERE record_id = ".$ilDB->quote($a_record_id,
"integer");
253 $set = $ilDB->query($sql);
254 if($ilDB->numRows($set))
256 $pos = $ilDB->fetchAssoc($set);
257 return (
int)$pos[
"pos"];
274 public static function createDBField($a_record_id,
$a_type, $a_title, $a_description = null, $a_searchable =
false,
array $a_definition = null)
278 if(!self::hasDBRecord($a_record_id))
283 $field_id = $ilDB->nextId(
"adv_mdf_definition");
287 if($a_type < 1 || $a_type > 8)
292 $pos = self::getDBFieldLastPosition($a_record_id)+1;
295 "record_id" =>
array(
"integer", $a_record_id),
296 "field_id" =>
array(
"integer", $field_id),
297 "import_id" =>
array(
"text",
"il_".IL_INST_ID.
"_adv_md_field_".$field_id),
299 "position" =>
array(
"integer", $pos),
300 "title" =>
array(
"text", trim($a_title)),
301 "description" =>
array(
"text", trim($a_description)),
302 "searchable" =>
array(
"integer", (
int)$a_searchable)
306 $fields[
"field_values"] =
array(
"text", serialize($a_definition));
308 $ilDB->insert(
"adv_mdf_definition", $fields);
323 public static function updateDBField($a_field_id, $a_title, $a_description = null, $a_searchable =
false,
array $a_definition = null)
327 if(self::hasDBField($a_field_id))
330 "field_id" =>
array(
"integer", $a_field_id),
331 "title" =>
array(
"text", trim($a_title)),
332 "description" =>
array(
"text", trim($a_description)),
333 "searchable" =>
array(
"integer", (
int)$a_searchable)
337 $fields[
"field_values"] =
array(
"text", serialize($a_definition));
339 $ilDB->update(
"adv_mdf_definition", $fields,
340 array(
"field_id" =>
array(
"integer", $a_field_id)));
357 if(self::hasDBField($a_field_id))
359 $ilDB->manipulate(
"DELETE FROM adv_mdf_definition".
360 " WHERE field_id = ".$ilDB->quote($a_field_id,
"integer"));
378 $set = $ilDB->query(
"SELECT * FROM adv_md_substitutions".
379 " WHERE obj_type = ".$ilDB->quote($a_obj_type,
"text"));
380 if($ilDB->numRows($set))
382 $res = $ilDB->fetchAssoc($set);
383 $res[
"hide_description"] =
array(
"integer", (
bool)
$res[
"hide_description"]);
384 $res[
"hide_field_names"] =
array(
"integer", (
bool)$res[
"hide_field_names"]);
386 if($a_include_field_data)
388 $res[
"substitution"] =
array(
"text", (
array)unserialize($res[
"substitution"]));
392 unset($res[
"substitution"]);
394 unset($res[
"obj_type"]);
412 if(self::isValidObjType($a_obj_type,
true))
414 $fields = self::getDBSubstitution($a_obj_type);
420 $fields =
array(
"obj_type" =>
array(
"text", $a_obj_type));
423 $fields[
"hide_description"] =
array(
"integer", !(
bool)$a_show_description);
424 $fields[
"hide_field_names"] =
array(
"integer", !(
bool)$a_show_field_names);
428 $ilDB->insert(
"adv_md_substitutions", $fields);
432 $ilDB->update(
"adv_md_substitutions", $fields,
433 array(
"obj_type" =>
array(
"text", $a_obj_type)));
450 if(self::isValidObjType($a_obj_type,
true))
452 $fields = self::getDBSubstitution($a_obj_type,
true);
453 $fields = $fields[
"substitution"][1];
454 foreach($fields as $field)
456 if($field[
"field_id"] == $a_field_id)
478 if(self::isValidObjType($a_obj_type,
true))
480 $fields = self::getDBSubstitution($a_obj_type,
true);
483 self::setDBSubstitution($a_obj_type,
true,
true);
488 $fields = $fields[
"substitution"][1];
492 foreach($fields as $idx => $field)
494 if($field[
"field_id"] == $a_field_id)
496 $fields[$idx][
"bold"] = (bool)$a_bold;
497 $fields[$idx][
"newline"] = (bool)$a_newline;
505 "field_id" => $a_field_id
506 ,
"bold" => (
bool)$a_bold
507 ,
"newline" => (
bool)$a_newline
511 $fields =
array(
"substitution"=>
array(
"text", serialize($fields)));
512 $ilDB->update(
"adv_md_substitutions", $fields,
513 array(
"obj_type" =>
array(
"text", $a_obj_type)));
529 if(self::isValidObjType($a_obj_type,
true))
531 $fields = self::getDBSubstitution($a_obj_type,
true);
538 $fields = $fields[
"substitution"][1];
542 foreach($fields as $idx => $field)
544 if($field[
"field_id"] == $a_field_id)
546 unset($fields[$idx]);
553 $fields =
array(
"substitution"=>
array(
"text", serialize($fields)));
554 $ilDB->update(
"adv_md_substitutions", $fields,
555 array(
"obj_type" =>
array(
"text", $a_obj_type)));
static hasDBField($a_field_id)
Check if field has db entry.
static saveRecordObjTypes($a_record_id, array $a_obj_types)
Save object type assignments for record.
static updateDBRecord($a_record_id, $a_title, $a_description, $a_active, array $a_obj_types)
Update record db entry.
static deleteDBRecord($a_record_id)
Delete record db entry.
static isValidObjType($a_obj_type, $a_is_substitution=false)
Validate object type.
Abstract parent class for all advanced md claiming plugin classes.
static setDBSubstitution($a_obj_type, $a_show_description, $a_show_field_names)
Set substitution DB entry (for object type)
static getDBFieldLastPosition($a_record_id)
Get last position of record.
static setDBFieldSubstitution($a_obj_type, $a_field_id, $a_bold=false, $a_newline=false)
Update field substitution entry in DB.
static getDBSubstitution($a_obj_type, $a_include_field_data=false)
Get substitution DB data for object type.
Create styles array
The data for the language used.
static createDBRecord($a_title, $a_description, $a_active, array $a_obj_types)
Create record db entry.
static deleteDBField($a_field_id)
Delete field db entry.
static updateDBField($a_field_id, $a_title, $a_description=null, $a_searchable=false, array $a_definition=null)
Update field db entry.
static removeDBFieldSubstitution($a_obj_type, $a_field_id)
Remove field substitution entry in DB.
checkPermission($a_user_id, $a_context_type, $a_context_id, $a_action_id, $a_action_sub_id)
Check permission.
static createDBField($a_record_id, $a_type, $a_title, $a_description=null, $a_searchable=false, array $a_definition=null)
Create field db entry.
static hasDBFieldSubstitution($a_obj_type, $a_field_id)
Is substitution active for field in object type.
static hasDBRecord($a_record_id)
Check if record has db entry.