Skip to content

Commit

Permalink
Improvement: Add field controllers for text and textarea and return t…
Browse files Browse the repository at this point in the history
…ext controller as fallback. #774
  • Loading branch information
ibernhardf committed Jan 9, 2025
1 parent 7f44e71 commit 60ff811
Show file tree
Hide file tree
Showing 3 changed files with 133 additions and 2 deletions.
57 changes: 57 additions & 0 deletions classes/local/customfield/field/text/wbt_field_controller.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.

/**
* Extension of the customfield field controller for Wunderbyte table.
*
* @package local_wunderbyte_table
* @copyright 2024 Wunderbyte GmbH <[email protected]>
* @author Bernhard Fischer-Sengseis
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/

namespace local_wunderbyte_table\local\customfield\field\text;

// Important: Use the field controller for the right customfield.
use customfield_text\field_controller;
use local_wunderbyte_table\local\customfield\wbt_field_controller_base;

/**
* Extension of the customfield field controller for Wunderbyte table.
*
* @package local_wunderbyte_table
* @copyright 2024 Wunderbyte GmbH <[email protected]>
* @author Bernhard Fischer-Sengseis
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class wbt_field_controller extends field_controller implements wbt_field_controller_base {

/**
* Get the actual string value of the customfield.
*
* @param string $key
* @return string the string value
*/
public function get_option_value_by_key(string $key): string {
global $DB;

if (!empty($key)) {
// For normal text fields we need format_string.
return format_string($key);
}
return '';
}
}
57 changes: 57 additions & 0 deletions classes/local/customfield/field/textarea/wbt_field_controller.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.

/**
* Extension of the customfield field controller for Wunderbyte table.
*
* @package local_wunderbyte_table
* @copyright 2024 Wunderbyte GmbH <[email protected]>
* @author Bernhard Fischer-Sengseis
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/

namespace local_wunderbyte_table\local\customfield\field\textarea;

// Important: Use the field controller for the right customfield.
use customfield_textarea\field_controller;
use local_wunderbyte_table\local\customfield\wbt_field_controller_base;

/**
* Extension of the customfield field controller for Wunderbyte table.
*
* @package local_wunderbyte_table
* @copyright 2024 Wunderbyte GmbH <[email protected]>
* @author Bernhard Fischer-Sengseis
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class wbt_field_controller extends field_controller implements wbt_field_controller_base {

/**
* Get the actual string value of the customfield.
*
* @param string $key
* @return string the string value
*/
public function get_option_value_by_key(string $key): string {
global $DB;

if (!empty($key)) {
// For textarea we need format_text.
return format_text($key);
}
return '';
}
}
21 changes: 19 additions & 2 deletions classes/local/customfield/wbt_field_controller_info.php
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,8 @@ public static function create(stdClass $record) {
if (class_exists($class)) {
return new $class($record->id, $record);
}
return null;
// By default, we return the text controller.
return new \local_wunderbyte_table\local\customfield\field\text\wbt_field_controller($record->id, $record);
}

/**
Expand Down Expand Up @@ -96,7 +97,23 @@ public static function instantiate_by_shortnames(array $shortnames) {
public static function get_instance_by_shortname(string $shortname) {
if (!empty(self::$instances[$shortname])) {
return self::$instances[$shortname];
} else {
global $DB;
$sql = "SELECT cf.shortname AS filtercolumn, cf.*
FROM {customfield_field} cf
WHERE cf.shortname = :shortname";
$params = ['shortname' => $shortname];
if ($record = $DB->get_record_sql($sql, $params)) {
// We only add the instance, if a field controller exists.
if ($instance = self::create($record)) {
self::$instances[$record->shortname] = $instance;
return $instance;
} else {
return null;
}
} else {
return null;
}
}
return null;
}
}

0 comments on commit 60ff811

Please sign in to comment.