Spade
Mini Shell
| Directory:~$ /home/lmsyaran/www/administrator/components/com_sppagebuilder/editor/traits/ |
| [Home] [System Details] [Kill Me] |
<?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\Factory;
// No direct access
defined('_JEXEC') or die('Restricted access');
/**
* Trait of saved sections providers.
*
* @version 4.1.0
*/
trait SavedSectionsTrait
{
/**
* Icon API endpoint for saved sections.
*
* @return void
* @version 4.1.0
*/
public function savedSection()
{
$method = $this->getInputMethod();
$this->checkNotAllowedMethods(['PUT',
'PATCH'], $method);
switch ($method)
{
case 'GET':
$this->getSavedSections();
break;
case 'POST':
$this->saveSection();
break;
case 'DELETE':
$this->deleteSection();
break;
}
}
/**
* Get all the saved sections form the database.
*
* @return void
*/
private function getSavedSections()
{
try
{
$db = Factory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(['id',
'title', 'section', 'created',
'created_by']));
$query->from($db->quoteName('#__sppagebuilder_sections'));
$query->order($db->quoteName('ordering') .
' ASC');
$db->setQuery($query);
$results = $db->loadObjectList();
if (!empty($results))
{
foreach ($results as &$result)
{
$result->created = (new
DateTime($result->created))->format('j F, Y');
$result->author =
Factory::getUser($result->created_by)->get('name');
$result->section =
SppagebuilderHelper::formatSavedSection($result->section);
unset($result->created_by);
}
unset($result);
}
$this->sendResponse($results);
}
catch (\Exception $e)
{
$response['message'] = $e->getMessage();
$this->sendResponse($response, 500);
}
}
/**
* Save Section for future use.
*
* @return void
*/
private function saveSection()
{
$title = $this->getInput('title', '',
'STRING');
$section = $this->getInput('section', '',
'RAW');
if (empty($title) || empty($section))
{
$response['message'] = 'Information
missing';
$this->sendResponse($response, 400);
}
if (is_array($section))
{
$section = json_encode($section);
}
$data = new stdClass;
$data->title = $title;
$data->section = $section;
$data->created = Factory::getDate()->toSql();
$data->created_by = Factory::getUser()->id;
try
{
$db = Factory::getDbo();
$db->insertObject('#__sppagebuilder_sections',
$data, 'id');
$this->sendResponse($db->insertid(), 201);
}
catch (\Exception $e)
{
$response['message'] = $e->getMessage();
$this->sendResponse($response, 500);
}
}
/**
* Delete saved sections form the database.
*
* @return void
*/
private function deleteSection()
{
$id = $this->getInput('id', '',
'INT');
if (empty($id))
{
$response['message'] = 'Information
missing';
$this->sendResponse($response, 404);
}
try
{
$db = Factory::getDbo();
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__sppagebuilder_sections'));
$query->where($db->quoteName('id') . ' =
' . $db->quote($id));
$db->setQuery($query);
$db->execute();
$this->sendResponse('Section deleted
successfully!', 200);
}
catch (Exception $e)
{
$response['message'] = $e->getMessage();
$this->sendResponse($response, 500);
}
}
}