__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
<?php
/**
* @package SP Page Builder
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2024 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or later
*/
use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;
// No direct access
defined('_JEXEC') or die('Restricted access');
/**
* Image Shapes traits
*/
trait ImageShapesTrait
{
public function imageShapes()
{
$method = $this->getInputMethod();
$this->checkNotAllowedMethods(['PUT'], $method);
switch ($method) {
case 'POST':
$this->addImageShape();
break;
case 'PATCH':
$this->updateImageShape();
break;
case 'DELETE':
$this->deleteImageShape();
break;
default:
$this->getImageShapes();
break;
}
}
private function getImageShapes()
{
$response = $this->processGetImageShapes();
$this->sendResponse($response['response'], $response['statusCode']);
}
public function processGetImageShapes()
{
$db = Factory::getDbo();
$query = $db->getQuery(true);
$query->select(['id', 'name', 'shape'])
->from($db->quoteName('#__sppagebuilder_image_shapes'));
$db->setQuery($query);
$shapes = [];
try {
$shapes = $db->loadObjectList();
} catch (\Exception $e) {
$response['message'] = $e->getMessage();
return ['response' => $response, 'statusCode' => 500];
}
return ['response' => $shapes, 'statusCode' => 200];
}
private function addImageShape()
{
$shape = $this->getInput('shape', '', 'base64');
if (empty($shape)) {
$response['message'] = Text::_('COM_SPPAGEBUILDER_EDITOR_SVG_INFORMATION_MISSING');
$this->sendResponse($response, 400);
}
$response = $this->processAddImageShape($shape);
$this->sendResponse($response['response'], $response['statusCode']);
}
public function processAddImageShape($shape)
{
$decoded_shape = base64_decode($shape);
$pattern = '/<path\b[^>]*>/s';
preg_match($pattern, $decoded_shape, $matches);
$is_valid_svg = $matches && count($matches) === 1;
if(!$is_valid_svg) {
$response['message'] = Text::_('COM_SPPAGEBUILDER_EDITOR_INVALID_SVG_SHAPE');
return ['response' => $response, 'statusCode' => 400];
}
$random_id = uniqid(mt_rand(), true);
$data = new stdClass;
$data->name = $random_id;
$data->shape = $shape;
$data->created = Factory::getDate()->toSql();
$data->created_by = Factory::getUser()->id;
try {
$db = Factory::getDbo();
$db->insertObject('#__sppagebuilder_image_shapes', $data, 'id');
return [
'response' => $data,
'statusCode' => 201
];
} catch (\Exception $e) {
$response['message'] = $e->getMessage();
return [
'response' => $response,
'statusCode' => 500
];
}
}
private function updateImageShape()
{
$id = $this->getInput('id', '', 'STRING');
$shape = $this->getInput('shape', '', 'STRING');
if (empty($id) || empty($shape)) {
$response['message'] = Text::_('COM_SPPAGEBUILDER_EDITOR_SVG_INFORMATION_MISSING');
$this->sendResponse($response, 404);
}
$response = $this->processUpdateImageShape($id, $shape);
$this->sendResponse($response['response'], $response['statusCode']);
}
public function processUpdateImageShape($id, $shape) {
$db = Factory::getDbo();
$query = $db->getQuery(true);
$query->update($db->quoteName('#__sppagebuilder_image_shapes'))
->set($db->quoteName('shape') . ' = ' . $db->quote($shape))
->where($db->quoteName('id') . ' = ' . $db->quote($id));
$db->setQuery($query);
try {
$db->execute();
return [
'response' => Text::_('COM_SPPAGEBUILDER_EDITOR_SVG_IMAGE_SHAPE_UPDATED_SUCCESSFULLY'),
'statusCode' => 200
];
} catch (\Exception $e) {
$response['message'] = $e->getMessage();
return [
'response' => $response,
'statusCode' => 500
];
}
}
private function deleteImageShape()
{
$id = $this->getInput('id', '', 'INT');
if (empty($id)) {
$response['message'] = Text::_('COM_SPPAGEBUILDER_EDITOR_SVG_INFORMATION_MISSING');
$this->sendResponse($response, 404);
}
$response = $this->processDeleteImageShape($id);
$this->sendResponse($response['response'], $response['statusCode']);
}
public function processDeleteImageShape($id) {
try {
$db = Factory::getDbo();
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__sppagebuilder_image_shapes'));
$query->where($db->quoteName('id') . ' = ' . $db->quote($id));
$db->setQuery($query);
$db->execute();
return ['response' => Text::_('COM_SPPAGEBUILDER_EDITOR_SVG_IMAGE_SHAPE_DELETED_SUCCESSFULLY'), 'statusCode' => 200];
} catch (Exception $e) {
$response['message'] = $e->getMessage();
return ['response' => $response, 'statusCode' => 500];
}
}
}
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| AddToMenuTrait.php | File | 2.69 KB | 0664 |
|
| AddonsTrait.php | File | 7.77 KB | 0664 |
|
| AiContentTrait.php | File | 10 KB | 0664 |
|
| AiContentUploadTrait.php | File | 8.14 KB | 0664 |
|
| AllFontsTrait.php | File | 1.32 KB | 0664 |
|
| AppConfig.php | File | 5.33 KB | 0664 |
|
| ApplicationSettingsTrait.php | File | 16.47 KB | 0664 |
|
| BulkExportTrait.php | File | 16.66 KB | 0664 |
|
| BulkImportTrait.php | File | 18.55 KB | 0664 |
|
| CommonTrait.php | File | 4.56 KB | 0664 |
|
| ExportTrait.php | File | 11.07 KB | 0664 |
|
| FontsTrait.php | File | 12.45 KB | 0664 |
|
| GlobalColorsTrait.php | File | 3.37 KB | 0664 |
|
| IconProvidersTrait.php | File | 928 B | 0664 |
|
| IconsListTrait.php | File | 1.39 KB | 0664 |
|
| IconsTrait.php | File | 14.71 KB | 0664 |
|
| ImageShapesTrait.php | File | 5.56 KB | 0664 |
|
| ImportTrait.php | File | 16.82 KB | 0664 |
|
| IntegrationTrait.php | File | 4.64 KB | 0664 |
|
| LanguageTrait.php | File | 6.6 KB | 0664 |
|
| LayoutImportTrait.php | File | 2.89 KB | 0664 |
|
| Media.php | File | 17.78 KB | 0664 |
|
| MediaFolderTrait.php | File | 9.5 KB | 0664 |
|
| MenuByPageIdTrait.php | File | 952 B | 0664 |
|
| MenuListTrait.php | File | 791 B | 0664 |
|
| PageContentById.php | File | 1.22 KB | 0664 |
|
| PageDuplicateTrait.php | File | 1.35 KB | 0664 |
|
| PageOrderTrait.php | File | 1.16 KB | 0664 |
|
| PageTemplateTrait.php | File | 3.1 KB | 0664 |
|
| PageTrait.php | File | 9.74 KB | 0664 |
|
| ParentItemsTrait.php | File | 1.01 KB | 0664 |
|
| PluginsTrait.php | File | 2.93 KB | 0664 |
|
| PopupTemplateTrait.php | File | 2.34 KB | 0664 |
|
| ProductPageContentById.php | File | 2 KB | 0664 |
|
| PurgeCssTrait.php | File | 810 B | 0664 |
|
| SaveIgTokenTrait.php | File | 2.01 KB | 0664 |
|
| SavedAddonsOrderTrait.php | File | 1.19 KB | 0664 |
|
| SavedAddonsTrait.php | File | 4.06 KB | 0664 |
|
| SavedPresetsTrait.php | File | 3.17 KB | 0664 |
|
| SavedSectionsOrderTrait.php | File | 1.21 KB | 0664 |
|
| SavedSectionsTrait.php | File | 4.12 KB | 0664 |
|
| SectionLibraryTrait.php | File | 2.84 KB | 0664 |
|
| SettingsTrait.php | File | 1.07 KB | 0664 |
|
| UploadFontTrait.php | File | 5.48 KB | 0664 |
|