![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/mautic.corals.io/.github/workflows/mautic-asset-upload/ |
<?php declare(strict_types=1); use Mautic\Auth\ApiAuth; use Mautic\MauticApi; require __DIR__.'/vendor/autoload.php'; if ('cli' !== php_sapi_name()) { exit('This script can only run on the command line'); } $vars = [ 1 => 'instanceUrl', 2 => 'username', 3 => 'password', 4 => 'mauticVersion', 5 => 'assetCategoryId', 6 => 'fileToUpload', ]; foreach ($vars as $id => $var) { if (empty($_SERVER['argv'][$id])) { echo "Argument {$id} ({$var}) is missing. Run this script as \"php upload.php ".implode(' ', $vars)."\"\n"; exit(1); } $$var = $_SERVER['argv'][$id]; } // Set up the authentication $settings = [ 'userName' => $username, 'password' => $password, ]; // Initiate the auth object specifying to use BasicAuth $initAuth = new ApiAuth(); $auth = $initAuth->newAuth($settings, 'BasicAuth'); $api = new MauticApi(); /** @var Mautic\Api\Files */ $filesApi = $api->newApi('files', $auth, $instanceUrl); /** @var Mautic\Api\Assets */ $assetApi = $api->newApi('assets', $auth, $instanceUrl); /** * Upload the file. */ $filesApi->setFolder('assets'); // File should be an absolute path! $fileRequest = [ 'file' => $fileToUpload, ]; $response = $filesApi->create($fileRequest); if (isset($response['error'])) { echo $response['error']['code'].': '.$response['error']['message']."\n"; exit(1); } if (!isset($response['file']) || !isset($response['file']['name'])) { echo 'An unknown error occurred while uploading the release asset to our Mautic instance. ' ."Please try again or debug locally (we don't provide logs in CI for security reasons)\n"; exit(1); } /** * Create the actual asset based on the file we just uploaded. */ $data = [ 'title' => "Mautic {$mauticVersion}", 'storageLocation' => 'local', 'file' => $response['file']['name'], 'category' => $assetCategoryId, 'isPublished' => true, ]; $response = $assetApi->create($data); if (isset($response['error'])) { echo $response['error']['code'].': '.$response['error']['message']."\n"; exit(1); } if (!isset($response['asset']['id']) || !isset($response['asset']['downloadUrl'])) { echo "Unknown error occurred while creating asset. Please debug locally.\n"; exit(1); } echo 'Successfully created asset with ID '.$response['asset']['id']." 🚀\n";