mirror of
https://github.com/moodle/moodle.git
synced 2025-02-23 11:27:51 +01:00
Allow each each Provider plugin to be able to specify settings for the actions that they support. Adds admin setting support for these settings.
132 lines
3.9 KiB
PHP
132 lines
3.9 KiB
PHP
<?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/>.
|
|
|
|
namespace core_ai\aiactions;
|
|
|
|
use core_ai\aiactions\responses\response_base;
|
|
|
|
/**
|
|
* Base Action class.
|
|
*
|
|
* @package core_ai
|
|
* @copyright 2024 Matt Porritt <matt.porritt@moodle.com>
|
|
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
|
*/
|
|
abstract class base {
|
|
/** @var int Timestamp the action object was created. */
|
|
protected readonly int $timecreated;
|
|
|
|
/**
|
|
* Constructor for the class.
|
|
*
|
|
* @param int $contextid The context ID where the action was created.
|
|
*/
|
|
public function __construct(
|
|
/** @var int The context ID the action was created in */
|
|
protected int $contextid,
|
|
) {
|
|
$this->timecreated = \core\di::get(\core\clock::class)->time();
|
|
}
|
|
|
|
/**
|
|
* Responsible for storing any action specific data in the database.
|
|
*
|
|
* @param response_base $response The response object to store.
|
|
* @return int The id of the stored action.
|
|
*/
|
|
abstract public function store(response_base $response): int;
|
|
|
|
/**
|
|
* Get the basename of the class.
|
|
*
|
|
* This is used to generate the action name and description.
|
|
*
|
|
* @return string The basename of the class.
|
|
*/
|
|
public static function get_basename(): string {
|
|
return basename(str_replace('\\', '/', static::class));
|
|
}
|
|
|
|
/**
|
|
* Get the action name.
|
|
*
|
|
* Defaults to the action name string.
|
|
*
|
|
* @return string
|
|
*/
|
|
public static function get_name(): string {
|
|
$stringid = 'action_' . self::get_basename();
|
|
return get_string($stringid, 'core_ai');
|
|
}
|
|
|
|
/**
|
|
* Get the action description.
|
|
*
|
|
* Defaults to the action description string.
|
|
*
|
|
* @return string
|
|
*/
|
|
public static function get_description(): string {
|
|
$stringid = 'action_' . self::get_basename() . '_desc';
|
|
return get_string($stringid, 'core_ai');
|
|
}
|
|
|
|
/**
|
|
* Get the system instruction for the action.
|
|
*
|
|
* @return string The system instruction for the action.
|
|
*/
|
|
public static function get_system_instruction(): string {
|
|
$stringid = 'action_' . self::get_basename() . '_instruction';
|
|
|
|
// If the string doesn't exist, return an empty string.
|
|
if (!get_string_manager()->string_exists($stringid, 'core_ai')) {
|
|
return '';
|
|
}
|
|
|
|
return get_string($stringid, 'core_ai');
|
|
}
|
|
|
|
/**
|
|
* Get a configuration option.
|
|
*
|
|
* @param string $name The name of the configuration option to get.
|
|
* @return mixed The value of the configuration option.
|
|
*/
|
|
public function get_configuration(string $name): mixed {
|
|
return $this->$name;
|
|
}
|
|
|
|
/**
|
|
* Return the correct table name for the action.
|
|
*
|
|
* @return string The correct table name for the action.
|
|
*/
|
|
protected function get_tablename(): string {
|
|
// Table name should always be in this format.
|
|
return 'ai_action_' . $this->get_basename();
|
|
}
|
|
|
|
/**
|
|
* Get the class name of the response object.
|
|
*
|
|
* @return string The class name of the response object.
|
|
*/
|
|
public static function get_response_classname(): string {
|
|
return responses::class . '\\response_' . self::get_basename();
|
|
}
|
|
}
|