. namespace mod_data\output; use core_tag_tag; use mod_data\manager; use templatable; use renderable; /** * Renderable class for the default templates in the database activity. * * @package mod_data * @copyright 2022 Sara Arjona * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class defaulttemplate implements templatable, renderable { /** @var array $fields The array containing the existing fields. */ private $fields; /** @var string $templatename The template name (addtemplate, listtemplate...). */ private $templatename; /** @var bool $isform Whether a form should be displayed instead of data. */ private $isform; /** * The class constructor. * * @param array $fields The array containing the existing fields. * @param string $templatename The template name (addtemplate, listtemplate...). * @param bool $isform Whether a form should be displayed instead of data. */ public function __construct(array $fields, string $templatename, bool $isform) { $this->fields = $fields; $this->templatename = $templatename; $this->isform = $isform; } /** * Obtains the mustache template name for this database template. * * @return string the file mustache path for this template. */ public function get_templatename(): string { return 'mod_data/defaulttemplate_' . $this->templatename; } /** * Export the data for the mustache template. * * @param \renderer_base $output The renderer to be used to render the action bar elements. * @return array The data to display. */ public function export_for_template(\renderer_base $output): array { $result = []; $exportedfields = []; foreach ($this->fields as $field) { $fieldname = $field->field->name; if ($this->isform) { $fieldcontent = $field->display_add_field(); } else { $fieldcontent = '[[' . $fieldname . ']]'; } $exportedfields[] = [ 'fieldname' => $fieldname, 'fieldcontent' => $fieldcontent, ]; } if (!empty($exportedfields)) { $result['fields'] = $exportedfields; } if (core_tag_tag::is_enabled(manager::PLUGINNAME, 'data_records')) { // Add tags information only if they are enabled. if ($this->isform) { $tags = data_generate_tag_form(); } else { $tags = '##tags##'; } $result['tags'] = $tags; } return $result; } }