19 declare(strict_types=1);
34 'ms-windows' =>
'MS-Windows',
37 'multi-os' =>
'Multi-OS',
43 'netscape communicator' =>
'NetscapeCommunicator',
44 'ms-internet explorer' =>
'MS-InternetExplorer',
66 $this->or_composite_id = $a_or_composite_id;
83 $this->operating_system_name = $a_val;
98 $this->operating_system_minimum_version = $a_val;
108 $this->operating_system_maximum_version = $a_val;
120 case 'NetscapeCommunicator':
121 case 'MS-InternetExplorer':
125 $this->browser_name = $a_val;
140 $this->browser_minimum_version = $a_val;
150 $this->browser_maximum_version = $a_val;
161 $fields[
'meta_requirement_id'] = array(
'integer', $next_id = $this->db->nextId(
'il_meta_requirement'));
163 if ($this->db->insert(
'il_meta_requirement', $fields)) {
179 return (
bool) $this->db->update(
180 'il_meta_requirement',
182 array(
"meta_requirement_id" => array(
'integer', $this->
getMetaId()))
186 public function delete():
bool 189 $query =
"DELETE FROM il_meta_requirement " .
190 "WHERE meta_requirement_id = " . $this->db->quote($this->
getMetaId(),
'integer');
191 $res = $this->db->manipulate($query);
205 'rbac_id' => array(
'integer', $this->
getRBACId()),
206 'obj_id' => array(
'integer', $this->
getObjId()),
207 'obj_type' => array(
'text', $this->
getObjType()),
209 'parent_id' => array(
'integer', $this->
getParentId()),
223 $query =
"SELECT * FROM il_meta_requirement " .
224 "WHERE meta_requirement_id = " . $this->db->quote($this->
getMetaId(),
'integer');
226 $res = $this->db->query($query);
229 $this->
setObjId((
int) $row->obj_id);
284 string $a_parent_type,
285 int $a_or_composite_id = 0
289 $ilDB = $DIC->database();
291 $query =
"SELECT meta_requirement_id FROM il_meta_requirement " .
292 "WHERE rbac_id = " .
$ilDB->quote($a_rbac_id,
'integer') .
" " .
293 "AND obj_id = " .
$ilDB->quote($a_obj_id,
'integer') .
" " .
294 "AND parent_id = " .
$ilDB->quote($a_parent_id,
'integer') .
" " .
295 "AND parent_type = " .
$ilDB->quote($a_parent_type,
'text') .
" " .
296 "AND or_composite_id = " .
$ilDB->quote($a_or_composite_id,
'integer');
301 $ids[] = (
int) $row->meta_requirement_id;
311 $os_name = (string) array_search(
315 $browser_name = (string) array_search(
317 self::BROWSER_TRANSLATION
347 if ($name ===
'' && $min_version ===
'' && $max_version ===
'') {
353 'il_meta_or_composite',
355 'meta_or_composite_id' => [
'integer', $next_id = $this->db->nextId(
'il_meta_or_composite')],
356 'rbac_id' => [
'integer', $this->
getRBACId()],
357 'obj_id' => [
'integer', $this->
getObjId()],
359 'parent_type' => [
'text',
'meta_requirement'],
360 'parent_id' => [
'integer', $this->
getMetaId()],
361 'type' => [
'text', $type],
362 'name' => [
'text', $name],
363 'min_version' => [
'text', $min_version],
364 'max_version' => [
'text', $max_version]
371 'il_meta_or_composite',
373 'type' => [
'text', $type],
374 'name' => [
'text', $name],
375 'min_version' => [
'text', $min_version],
376 'max_version' => [
'text', $max_version]
378 [
'meta_or_composite_id' => [
'integer', $id]]
388 $query =
"DELETE FROM il_meta_or_composite WHERE parent_type = 'meta_requirement' 389 AND parent_id = " . $this->db->quote($this->
getMetaId(),
'integer');
390 $res = $this->db->manipulate($query);
398 $query =
"SELECT * FROM il_meta_or_composite WHERE meta_or_composite_id = " .
399 $this->db->quote($this->
getOrIdOS(),
'integer') .
400 " OR meta_or_composite_id = " . $this->db->quote($this->
getOrIdBrowser(),
'integer');
402 $res = $this->db->query($query);
403 while ($row = $this->db->fetchAssoc(
$res)) {
404 switch ($row[
'type']) {
405 case 'operating system':
406 if (key_exists($row[
'name'] ??
'', self::OS_TRANSLATION)) {
407 $row[
'name'] = self::OS_TRANSLATION[$row[
'name'] ??
''];
415 if (key_exists($row[
'name'] ??
'', self::BROWSER_TRANSLATION)) {
416 $row[
'name'] = self::BROWSER_TRANSLATION[$row[
'name'] ??
''];
431 $query =
"SELECT meta_or_composite_id, type FROM il_meta_or_composite WHERE 432 parent_id = " . $this->db->quote($parent_id,
'integer') .
433 " ORDER BY meta_or_composite_id";
435 $res = $this->db->query($query);
438 while ($row = $this->db->fetchAssoc(
$res)) {
439 if (!$browser_id && $row[
'type'] ===
'browser') {
440 $browser_id = (
int) $row[
'meta_or_composite_id'];
442 if (!$os_id && $row[
'type'] ===
'operating system') {
443 $os_id = (
int) $row[
'meta_or_composite_id'];
445 if ($browser_id && $os_id) {
450 $this->or_id_browser = $browser_id;
451 $this->or_id_os = $os_id;
459 return $this->or_id_os ?? 0;
467 return $this->or_id_browser ?? 0;
473 public function setMetaId(
int $a_meta_id,
bool $a_read_data =
true): void
476 parent::setMetaId($a_meta_id, $a_read_data);
int $or_id_browser
Compatibility fix for legacy MD classes for new db tables.
setOperatingSystemMaximumVersion(string $a_val)
setOrCompositeId(int $a_or_composite_id)
toXML(ilXmlWriter $writer)
getOperatingSystemMinimumVersion()
const OS_TRANSLATION
Compatibility fix for legacy MD classes for new db tables.
createOrUpdateOr(int $id, string $type, string $name, string $min_version, string $max_version)
Compatibility fix for legacy MD classes for new db tables.
const const int $or_composite_id
readFirstOrs()
Compatibility fix for legacy MD classes for new db tables.
string $operating_system_maximum_version
setMetaId(int $a_meta_id, bool $a_read_data=true)
Compatibility fix for legacy MD classes for new db tables.
getBrowserMaximumVersion()
xmlEndTag(string $tag)
Writes an endtag.
setBrowserMinimumVersion(string $a_val)
setOperatingSystemMinimumVersion(string $a_val)
string $operating_system_minimum_version
static _getIds(int $a_rbac_id, int $a_obj_id, int $a_parent_id, string $a_parent_type, int $a_or_composite_id=0)
const const BROWSER_TRANSLATION
setBrowserName(string $a_val)
setBrowserMaximumVersion(string $a_val)
string $operating_system_name
string $browser_minimum_version
getOperatingSystemMaximumVersion()
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
setOperatingSystemName(string $a_val)
readOrIds(int $parent_id)
Compatibility fix for legacy MD classes for new db tables.
xmlStartTag(string $tag, ?array $attrs=null, bool $empty=false, bool $encode=true, bool $escape=true)
Writes a starttag.
getOrIdOS()
Compatibility fix for legacy MD classes for new db tables.
setParentType(string $a_parent_type)
getBrowserMinimumVersion()
deleteAllOrs()
Compatibility fix for legacy MD classes for new db tables.
xmlElement(string $tag, $attrs=null, $data=null, $encode=true, $escape=true)
Writes a basic element (no children, just textual content)
string $browser_maximum_version
setObjType(string $a_type)
getOrIdBrowser()
Compatibility fix for legacy MD classes for new db tables.
createOrUpdateOrs()
Compatibility fix for legacy MD classes for new db tables.