| Current Path : /home/ataenra/www/administrator/components/com_sppagebuilder/editor/traits/ |
| Current File : /home/ataenra/www/administrator/components/com_sppagebuilder/editor/traits/SectionLibraryTrait.php |
<?php
/**
* @package SP Page Builder
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2023 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or later
*/
use Joomla\CMS\Component\ComponentHelper;
use Joomla\CMS\Filesystem\File;
use Joomla\CMS\Filesystem\Folder;
use Joomla\CMS\Http\Http;
// No direct access
defined('_JEXEC') or die('Restricted access');
/**
* Section Library API trait
*/
trait SectionLibraryTrait
{
public function sectionLibrary()
{
$method = $this->getInputMethod();
$this->checkNotAllowedMethods(['POST', 'PUT', 'DELETE', 'PATCH'], $method);
if ($method === 'GET')
{
$this->getSectionLibrary();
}
}
private function getSectionLibrary()
{
$cParams = ComponentHelper::getParams('com_sppagebuilder');
$http = new Http();
if (!\class_exists('SppagebuilderHelperSite'))
{
require_once JPATH_ROOT . '/components/com_sppagebuilder/helpers/helper.php';
}
$cache_path = JPATH_CACHE . '/sppagebuilder';
$cache_file = $cache_path . '/sections.json';
$sections = [];
$sectionsData = '';
if (!Folder::exists($cache_path))
{
Folder::create($cache_path, 0755);
}
if (File::exists($cache_file) && (filemtime($cache_file) > (time() - (24 * 60 * 60))))
{
$sectionsData = file_get_contents($cache_file);
}
else
{
$args = '&email=' . $cParams->get('joomshaper_email') . '&api_key=' . $cParams->get('joomshaper_license_key');
$sectionApi = 'https://www.joomshaper.com/index.php?option=com_layouts&task=block.list&support=4beyond' . $args;
$sectionResponse = $http->get($sectionApi);
$sectionsData = $sectionResponse->body;
if ($sectionResponse->code !== 200)
{
$response['message'] = 'Error getting sections data.';
$this->sendResponse($response, 500);
}
if (!empty($sectionsData))
{
File::write($cache_file, $sectionsData);
}
}
if (!empty($sectionsData))
{
$sections = json_decode($sectionsData);
/** Sanitize the blocks data before sending. */
if (!empty($sections->blocks))
{
foreach ($sections->blocks as $i => &$groups)
{
if (!empty($groups->blocks))
{
foreach ($groups->blocks as $j => &$block)
{
if (!empty($block->json))
{
$content = json_decode($block->json);
if (\is_object($content))
{
$content = json_encode([$content]);
}
elseif (\is_array($content))
{
$content = json_encode($content);
}
$json = SppagebuilderHelperSite::sanitize($content);
$block->json = $json;
}
}
unset($block);
}
}
unset($groups);
}
if ((is_array($sections) && count($sections)) || is_object($sections))
{
$this->sendResponse($sections);
}
}
$response['message'] = 'Sections not found!';
$this->sendResponse($response, 500);
}
}