This repository has been archived on 2025-02-26. You can view files and clone it, but cannot push or open issues or pull requests.
szurubooru/src/Controllers/ApiController.php
2014-05-18 21:59:56 +02:00

59 lines
1.1 KiB
PHP

<?php
class ApiController extends AbstractController
{
public function runAction()
{
$context = Core::getContext();
try
{
if (!Auth::isLoggedIn())
{
$auth = InputHelper::get('auth');
if ($auth)
{
Auth::login($auth['user'], $auth['pass'], false);
}
}
$jobName = InputHelper::get('name');
$jobArgs = InputHelper::get('args');
$job = $this->jobFromName($jobName);
if (!$job)
throw new SimpleException('Unknown job: ' . $jobName);
if (isset($_FILES['args']))
{
foreach (array_keys($_FILES['args']['name']) as $key)
{
$jobArgs[$key] = new ApiFileInput(
$_FILES['args']['tmp_name'][$key],
$_FILES['args']['name'][$key]);
}
}
$context->transport->status = Api::run($job, $jobArgs);
}
catch (Exception $e)
{
Messenger::fail($e->getMessage());
}
$this->renderAjax();
}
private function jobFromName($jobName)
{
$jobClassNames = Api::getAllJobClassNames();
foreach ($jobClassNames as $className)
{
$job = (new ReflectionClass($className))->newInstance();
if ($job->getName() == $jobName)
return $job;
$job = null;
}
return null;
}
}