. */ namespace HTMLBuilder\Manager; /** * @since 2.4 */ class FieldManager implements ManagerInterface { public function manage($options) { $info = $this->getInfo($options); return $this->generate($info); } public function getInfo($options) { $database = database(); $query = 'SELECT `zz_fields`.*'.(isset($options['id_record']) ? ', `zz_field_record`.`value`' : '').' FROM `zz_fields`'; if (isset($options['id_record'])) { $query .= ' LEFT JOIN `zz_field_record` ON `zz_fields`.`id` = `zz_field_record`.`id_field` AND `zz_field_record`.`id_record` = '.prepare($options['id_record']); } $query .= ' WHERE '; if (!empty($options['id_plugin'])) { $query .= '`id_plugin` = '.prepare($options['id_plugin']); } else { $query .= '`id_module` = '.prepare($options['id_module']); } if (isset($options['place']) && $options['place'] == 'add') { $query .= ' AND `on_add` = 1'; } $query .= ' AND `top` = '.((isset($options['position']) && $options['position'] == 'top') ? 1 : 0).' ORDER BY `order`'; $results = $database->fetchArray($query); return $results; } public function generate($fields) { // Spazio per evitare problemi con la sostituzione del tag $result = ' '; if (!empty($fields)) { $result .= '

'.tr('Campi personalizzati').'

'; // Costruzione dei campi foreach ($fields as $key => $field) { if ($key % 3 == 0) { $result .= '
'; } $field['value'] = isset($field['value']) ? $field['value'] : ''; // Gestione valori multipli $values = json_decode((string) $field['value'], true); if (is_array($values)) { $field['value'] = implode(',', $values); } $replace = [ 'value' => $field['value'], 'label' => $field['name'], 'name' => $field['html_name'], ]; foreach ($replace as $name => $value) { $field['content'] = str_replace('|'.$name.'|', $value, $field['content']); } $result .= '
'.$field['content'].'
'; if (($key + 1) % 3 == 0) { $result .= '
'; } // Forzatura inizializzazione componente $component = \HTMLBuilder\HTMLBuilder::decode(\Filter::sanitize($field['content']), 'manager'); $result .= ''; } if (($key + 1) % 3 != 0) { $result .= '
'; } $result .= '
'; } return $result; } public function getValue($options, $name) { $database = database(); $query = 'SELECT `zz_fields`.*'.(isset($options['id_record']) ? ', `zz_field_record`.`value`' : '').' FROM `zz_fields`'; if (isset($options['id_record'])) { $query .= ' LEFT JOIN `zz_field_record` ON `zz_fields`.`id` = `zz_field_record`.`id_field` AND `zz_field_record`.`id_record` = '.prepare($options['id_record']); } $query .= ' WHERE '; if (!empty($options['id_plugin'])) { $query .= '`id_plugin` = '.prepare($options['id_plugin']); } else { $query .= '`id_module` = '.prepare($options['id_module']); } if (isset($options['place']) && $options['place'] == 'add') { $query .= ' AND `on_add` = 1'; } $query .= ' AND `zz_fields`.`name` = '.prepare($name); $query .= ' AND `top` = '.((isset($options['position']) && $options['position'] == 'top') ? 1 : 0).' ORDER BY `order`'; $results = $database->fetchArray($query); return $results[0]['value']; } }