░▒▓████████████████████████████████▓▒░ ░▒▓█ ▓▒░ ░▒▓█ ~ S W A M P ~ ▓▒░ ░▒▓█ ▓▒░ ░▒▓████████████████████████████████▓▒░
pplmvsvm
LOCATION:
/var/www/moodle/public/ai/placement/editor/classes/external
☗ ROOT
↻ REFRESH
✎ CARVE FLESH
EDITING: generate_image.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 aiplacement_editor\external; use aiplacement_editor\utils; use core_external\external_api; use core_external\external_function_parameters; use core_external\external_value; /** * External API to call an action for this placement. * * @package aiplacement_editor * @copyright 2024 Matt Porritt <matt.porritt@moodle.com> * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class generate_image extends external_api { /** * Generate image parameters. * * @return external_function_parameters * @since Moodle 4.5 */ public static function execute_parameters(): external_function_parameters { return new external_function_parameters([ 'contextid' => new external_value( PARAM_INT, 'The context ID', VALUE_REQUIRED, ), 'prompttext' => new external_value( PARAM_RAW, 'The prompt text for the AI service', VALUE_REQUIRED, ), 'aspectratio' => new external_value( PARAM_ALPHA, 'The aspect ratio of the image', VALUE_REQUIRED, ), 'quality' => new external_value( PARAM_ALPHA, 'The quality of the image', VALUE_REQUIRED, ), 'numimages' => new external_value( PARAM_INT, 'The number of images to generate', VALUE_DEFAULT, 1, ), 'style' => new external_value( PARAM_ALPHA, 'The style of the image', VALUE_DEFAULT, 'natural', ), ]); } /** * Generate image from the AI placement. * * @param int $contextid The context ID. * @param string $prompttext The data encoded as a json array. * @param string $aspectratio The aspect ratio of the image. * @param string $quality The quality of the image. * @param string $numimages The number of images to generate. * @param string $style The style of the image. * @return array The generated content. * @since Moodle 4.5 */ public static function execute( int $contextid, string $prompttext, string $aspectratio, string $quality, string $numimages, string $style = '', ): array { global $USER; // Parameter validation. [ 'contextid' => $contextid, 'prompttext' => $prompttext, 'aspectratio' => $aspectratio, 'quality' => $quality, 'numimages' => $numimages, 'style' => $style, ] = self::validate_parameters(self::execute_parameters(), [ 'contextid' => $contextid, 'prompttext' => $prompttext, 'aspectratio' => $aspectratio, 'quality' => $quality, 'numimages' => $numimages, 'style' => $style, ]); // Context validation and permission check. // Get the context from the passed in ID. $context = \context::instance_by_id($contextid); // Check the user has permission to use the AI service. self::validate_context($context); if (!utils::is_html_editor_placement_action_available($context, 'generate_text', \core_ai\aiactions\generate_image::class)) { throw new \moodle_exception('noeditor', 'aiplacement_editor'); } // Prepare the action. $action = new \core_ai\aiactions\generate_image( contextid: $contextid, userid: $USER->id, prompttext: $prompttext, quality: $quality, aspectratio: $aspectratio, numimages: $numimages, style: $style, ); // Send the action to the AI manager. $manager = \core\di::get(\core_ai\manager::class); $response = $manager->process_action($action); // If we have a successful response, generate the URL for the draft file. if ($response->get_success()) { $draftfile = $response->get_response_data()['draftfile']; $drafturl = \moodle_url::make_draftfile_url( $draftfile->get_itemid(), $draftfile->get_filepath(), $draftfile->get_filename(), false, )->out(false); } else { $drafturl = ''; } // Return the response. return [ 'success' => $response->get_success(), 'revisedprompt' => $response->get_response_data()['revisedprompt'] ?? '', 'drafturl' => $drafturl, 'errorcode' => $response->get_errorcode(), 'error' => $response->get_error(), 'errormessage' => $response->get_errormessage(), ]; } /** * Generate content return value. * * @return external_function_parameters * @since Moodle 4.5 */ public static function execute_returns(): external_function_parameters { return new external_function_parameters([ 'success' => new external_value( PARAM_BOOL, 'Was the request successful', VALUE_REQUIRED, ), 'revisedprompt' => new external_value( PARAM_TEXT, 'Revised prompt generated by the AI', VALUE_DEFAULT, '', ), 'drafturl' => new external_value( PARAM_URL, 'Draft file URL for the image', VALUE_DEFAULT, '', ), 'errorcode' => new external_value( PARAM_INT, 'Error code if any', VALUE_DEFAULT, 0, ), 'error' => new external_value( PARAM_TEXT, 'Error name if any', VALUE_DEFAULT, '', ), 'errormessage' => new external_value( PARAM_TEXT, 'Error message if any', VALUE_DEFAULT, '', ), ]); } }
CANCEL
Name
Type
Size
Modified
Actions
↩ ..
DIR
—
—
📄 generate_image.php
PHP
6.9 KB
2026-02-11 01:44
EDIT
📄 generate_text.php
PHP
5.4 KB
2026-02-11 01:44
EDIT