", "logs": "" } } template [quote={poster_name} post_id={post_id} user_id={poster_id}]{request}[/quote] {response}{attachments} */ class scriptexecute extends GenericController { protected function submit($opts): resultSubmit { $opts = (array)(clone $this->cfg); $opts['prompt'] = trim($this->job['request']); if (array_key_exists('model', $opts) && property_exists($opts['model'], 'prompt') && empty($opts['model']->prompt)) $opts['model']->prompt = $opts['prompt']; if (array_key_exists('config', $opts) && property_exists($opts['config'], 'prompt') && empty($opts['config']->prompt)) $opts['config']->prompt = $opts['prompt']; $result = new resultSubmit(); $fileConfig = $this->cfg->config->logs . '/' . $this->job_id . '.json'; $fileLog = $this->cfg->config->logs . '/' . $this->job_id . '.json.log'; $fileResponse = $this->cfg->config->logs . '/' . $this->job_id . '.json.response'; $execute = $this->cfg->config->script . ' ' . $this->job_id . ' ' . $fileConfig . ' > ' . $fileLog; $jsonConfig = json_encode($opts, JSON_PRETTY_PRINT); $result_put = file_put_contents($fileConfig, $jsonConfig); if (empty($result_put)) { $result->responseCodes[] = $result_put; $result->response = '{ "error" : "Unable to save .json config" }'; } else { $result_code = null; try { // Make sure that exe is enabled in /etc/php/8.2/fpm/pool.d/phpbb_pool.conf file // See line php_admin_value[disable_functions] = unset($output); // Uncomment this line if you are planning to use this controller. // If was commented out to pass phpBB extension certification process. // exec($execute, $output, $result_code); } catch (\Exception $e) { $result->response = '{ "error" : "' . $e . '" }'; } $result->responseCodes[] = $result_code; $result->response = file_get_contents($fileResponse); if ($result_code == 0) { unlink($fileLog); unlink($fileResponse); unlink($fileConfig); } } return $result; } protected function parse(resultSubmit $resultSubmit): resultParse { /* Response { images: ['','',''], agentName: '0'..'j', subscriptionTokens: tokensLeft, error: null | 'error message' } */ $json = empty($resultSubmit->response) ? false : json_decode($resultSubmit->response); $images = []; $message = null; if ( empty($json) || empty($json->images) || !empty($json->error) ) { if (!empty($json->error)) { $message = $json->error; } } else { $this->job['status'] = 'ok'; $images = []; foreach ($json->images as $item) { array_push($images, $item); } $json->images = $images; } $result = new resultParse(); $result->json = $json; $result->images = $images; $result->message = $message; return $result; } }