Current File : /home/pacjaorg/www/nsa/administrator/components/com_akeebabackup/webpush/WebPushControllerTrait.php |
<?php
/**
* Akeeba WebPush
*
* An abstraction layer for easier implementation of WebPush in Joomla components.
*
* @copyright (c) 2022 Akeeba Ltd
* @license GNU GPL v3 or later; see LICENSE.txt
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
namespace Akeeba\WebPush;
use Joomla\CMS\Language\Text;
/**
* Trait for controllers implementing the Web Push user registration flow
*
* @since 1.0.0
*/
trait WebPushControllerTrait
{
/**
* Record the Web Push user subscription object to the database.
*
* @return void
* @since 1.0.0
*/
public function webpushsubscribe(): void
{
$ret = [
'success' => true,
'error' => null,
];
try
{
if (!$this->checkToken('post', false))
{
throw new \RuntimeException(Text::_('JINVALID_TOKEN_NOTICE'));
}
$json = $this->input->post->getRaw('subscription', '{}');
$model = $this->getModel();
$model->webPushSaveSubscription($json);
if (method_exists($this, 'onAfterWebPushSaveSubscription'))
{
$this->onAfterWebPushSaveSubscription(json_decode($json));
}
}
catch (\Throwable $e)
{
$ret['success'] = false;
$ret['error'] = $e->getMessage();
}
@ob_end_clean();
header('Content-Type: application/json');
echo json_encode($ret);
$this->app->close();
}
/**
* Remove the Web Push user subscription object from the database.
*
* @return void
* @since 1.0.0
*/
public function webpushunsubscribe(): void
{
$ret = [
'success' => true,
'error' => null,
];
try
{
if (!$this->checkToken('post', false))
{
throw new \RuntimeException(Text::_('JINVALID_TOKEN_NOTICE'));
}
$json = $this->input->post->getRaw('subscription', '{}');
$model = $this->getModel();
$model->webPushRemoveSubscription($json);
}
catch (\Throwable $e)
{
$ret['success'] = false;
$ret['error'] = $e->getMessage();
}
@ob_end_clean();
header('Content-Type: application/json');
echo json_encode($ret);
$this->app->close();
}
}