98 lines
2.6 KiB
PHP
98 lines
2.6 KiB
PHP
<?php
|
|
// No direct access
|
|
defined('_JEXEC') or die;
|
|
|
|
use Pagebuilderck\CKController;
|
|
use Pagebuilderck\CKfile;
|
|
use Pagebuilderck\CKfolder;
|
|
use Pagebuilderck\CKFof;
|
|
|
|
class PagebuilderckControllerPixabay extends CKController {
|
|
|
|
function __construct() {
|
|
parent::__construct();
|
|
}
|
|
|
|
/**
|
|
* Upload the image
|
|
*
|
|
* @return json : result = boolean on success, file = the image filename
|
|
*/
|
|
public function upload() {
|
|
// security check
|
|
CKFof::checkAjaxToken();
|
|
|
|
$url = $this->input->get('image_url', '', 'url');
|
|
|
|
// $url = 'https://pixabay.com/get/57e6d04b4b5bb114a6da837ec32f2a7f1038dbed5b59724e7c_1280.jpg';
|
|
$destFolder = JPATH_ROOT . '/images/pixabay/';
|
|
$fileName = basename($url);
|
|
$filePath = $destFolder . $fileName;
|
|
|
|
// create the destination folder if not exists
|
|
if (! file_exists($destFolder)) {
|
|
$result = CKFolder::create($destFolder);
|
|
if (! $result) {
|
|
echo '{"status" : "0", "file" : "", "message" : "Error on folder creation"}';
|
|
exit();
|
|
}
|
|
}
|
|
|
|
// get the file from url
|
|
set_time_limit(0);
|
|
try {
|
|
$file = file_get_contents(urldecode($url));
|
|
} catch (Exception $e) {
|
|
echo 'Exception : ', $e->getMessage(), "\n";
|
|
exit;
|
|
}
|
|
|
|
if (! $file && extension_loaded('curl')) {
|
|
$ch = curl_init();
|
|
$timeout = 30;
|
|
curl_setopt($ch, CURLOPT_URL, $url);
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
|
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
|
|
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
|
|
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
|
|
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
|
|
$file = curl_exec($ch);
|
|
curl_close($ch);
|
|
}
|
|
|
|
|
|
if (file_exists($filePath)) {
|
|
$result = true;
|
|
} else {
|
|
// store the file locally
|
|
$result = file_put_contents($filePath, $file);
|
|
if (! $result) {
|
|
echo '{"status" : "0", "file" : "", "message" : "Error on file creation"}';
|
|
exit();
|
|
}
|
|
|
|
$fileArray = array(
|
|
"name" => $fileName
|
|
,"type" => "image/png"
|
|
,"tmp_name" => $filePath
|
|
,"error" => 0
|
|
,"size" => filesize($filePath)
|
|
,"filepath" => $destFolder
|
|
);
|
|
// Trigger the onContentBeforeSave event.
|
|
$fileObj = new JObject($fileArray);
|
|
$result = CKFof::triggerEvent('onContentBeforeSave', array('com_media.file', &$fileObj, true));
|
|
|
|
if (in_array(false, $result, true))
|
|
{
|
|
// There are some errors in the plugins
|
|
echo '{"status" : "0", "message" : "' . JText::plural('COM_MEDIA_ERROR_BEFORE_SAVE', count($errors = $object_file->getErrors()), implode('<br />', $errors)) . '"}';
|
|
exit;
|
|
}
|
|
|
|
}
|
|
|
|
echo '{"status" : "1", "file" : "' . 'images/pixabay/' . $fileName . '"}';
|
|
exit;
|
|
}
|
|
} |