File "feedback.php"
Full Path: /home/romayxjt/public_html/wp-content/plugins/vikbooking/admin/controllers/feedback.php
File size: 3.59 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* @package VikBooking
* @subpackage core
* @author E4J s.r.l.
* @copyright Copyright (C) 2019 E4J s.r.l. All Rights Reserved.
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
* @link https://vikwp.com
*/
// No direct access
defined('ABSPATH') or die('No script kiddies please!');
JLoader::import('adapter.mvc.controllers.admin');
/**
* VikBooking plugin Feedback controller.
*
* @since 1.0
* @see JControllerAdmin
*/
class VikBookingControllerFeedback extends JControllerAdmin
{
/**
* Submits a feedback to VikWP servers after deactivating the plugin.
*
* @return void
*/
public function submit()
{
if (!JFactory::getUser()->authorise('core.admin', 'com_vikbooking'))
{
// not authorised to view this resource
throw new Exception(JText::translate('RESOURCE_AUTH_ERROR'), 403);
}
$input = JFactory::getApplication()->input;
// validation end-points
$url = 'https://vikwp.com/api/?task=logs.track';
$version = new JVersion();
$env = array(
'ipaddr' => $input->server->getString('REMOTE_ADDR'),
'wpver' => $version->getLongVersion(),
'version' => VIKBOOKING_SOFTWARE_VERSION,
'phpver' => phpversion(),
);
$body = print_r($env, true);
$notes = $input->getString('notes');
$email = $input->getString('email');
if ($notes)
{
$body = $notes . "\n\n" . $body;
}
if (!empty($email) && strpos($email, '@') !== false)
{
$body = $email . "\n\n" . $body;
}
// init HTTP transport
$http = new JHttp();
// build post data
$data = array(
'type' => 'feedback.vikbooking',
'desc' => $input->getString('type'),
'body' => $body,
'email' => $email,
);
// make connection with VikWP server
$response = $http->post($url, $data, array('sslverify' => false));
if ($response->code != 200)
{
// raise error returned by VikWP
throw new Exception($response->body, $response->code);
}
echo $response->body;
}
/**
* Submits a survey to VikWP servers.
*
* @return void
*/
public function survey()
{
if (!JFactory::getUser()->authorise('core.admin', 'com_vikbooking'))
{
// not authorised to view this resource
throw new Exception(JText::translate('RESOURCE_AUTH_ERROR'), 403);
}
$input = JFactory::getApplication()->input;
// validation end-points
$url = 'https://vikwp.com/api/?task=logs.track';
$version = new JVersion();
$env = array(
'wpver' => $version->getLongVersion(),
'version' => VIKBOOKING_SOFTWARE_VERSION,
'phpver' => phpversion(),
);
// include environment details
$body = print_r($env, true);
// get form from request
$form = $input->get('survey', array(), 'array');
// filter form to exclude empty data, then reset keys
$form = array_values(array_filter($form));
if (!$form)
{
// the survey doesn't contain data
throw new Exception('Empty survey', 400);
}
// map array to indent new lines
$form = array_map(function($str)
{
// add 2 white spaces after every new line
return preg_replace("/\R/", "\n ", $str);
}, $form);
// prepend survey
$body = '* ' . implode("\n* ", $form) . "\n\n" . $body;
// retrieve subject from request
$subject = $input->get('subject', 'Survey', 'string');
// init HTTP transport
$http = new JHttp();
// build post data
$data = array(
'type' => 'survey.vikbooking',
'desc' => $subject,
'body' => $body,
);
// make connection with VikWP server
$response = $http->post($url, $data);
if ($response->code != 200)
{
// raise error returned by VikWP
throw new Exception($response->body, $response->code);
}
echo $response->body;
}
}