19 declare(strict_types=1);
37 return $this->
insert($data,
false,
false);
42 return $this->
insert($data,
true,
true);
47 return $this->
insert($data,
true,
false);
52 bool $increment_position,
53 bool $generate_import_id
55 $next_id = $this->db->nextId(
'adv_mdf_definition');
57 $position = $increment_position ?
61 $import_id = $generate_import_id ?
84 public function readByID(
int $field_id): ?GenericData
86 $query =
'SELECT * FROM adv_mdf_definition WHERE field_id = ' .
89 $res = $this->db->query($query);
90 if ($row = $this->db->fetchAssoc(
$res)) {
101 if (empty($field_ids)) {
105 $query =
'SELECT * FROM adv_mdf_definition WHERE ' .
108 $res = $this->db->query($query);
110 while ($row = $this->db->fetchAssoc(
$res)) {
115 foreach ($field_ids as $field_id) {
116 yield
$data[$field_id];
125 if (empty($record_ids)) {
129 $query =
'SELECT * FROM adv_mdf_definition WHERE ' .
132 if ($only_searchable) {
133 $query .=
' AND searchable = 1';
136 $query .=
' ORDER BY position';
138 $res = $this->db->query($query);
139 while ($row = $this->db->fetchAssoc(
$res)) {
146 $query =
'SELECT * FROM adv_mdf_definition WHERE import_id = ' .
149 $res = $this->db->query($query);
150 if ($row = $this->db->fetchAssoc(
$res)) {
158 if (!$data->isPersisted() || !$data->containsChanges()) {
163 'adv_mdf_definition',
181 public function delete(
int ...$field_ids):
void 183 if (empty($field_ids)) {
187 $query =
'DELETE FROM adv_mdf_definition WHERE ' .
190 $this->db->manipulate($query);
195 $query =
'SELECT MAX(position) max_pos FROM adv_mdf_definition WHERE record_id = ' .
198 $res = $this->db->query($query);
199 if ($row = $this->db->fetchAssoc(
$res)) {
200 return $row[
'max_pos'] + 1;
207 return 'il_' .
IL_INST_ID .
'_adv_md_field_' . $field_id;
212 if (!isset($row[
'field_type']) || is_null($type = Type::tryFrom((
int) $row[
'field_type']))) {
214 ($row[
'field_type'] ??
'Null') .
' is invalid as field definition type' 218 $field_values = unserialize((
string) $row[
'field_values']);
219 if (!is_array($field_values)) {
223 return new GenericDataImplementation(
225 (
int) $row[
'record_id'],
226 (
string) $row[
'import_id'],
227 (
string) $row[
'title'],
228 (
string) $row[
'description'],
229 (
int) $row[
'position'],
230 (
bool) $row[
'searchable'],
231 (
bool) $row[
'required'],
233 (
int) $row[
'field_id']
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null