vtenext/gdpr/action.php
2021-04-28 20:10:26 +02:00

238 lines
5.7 KiB
PHP

<?php
/*************************************
* SPDX-FileCopyrightText: 2009-2020 Vtenext S.r.l. <info@vtenext.com>
* SPDX-License-Identifier: AGPL-3.0-only
************************************/
// crmv@161554 crmv@163697
require_once('config.php');
$action = filter_var($_REQUEST['ajax_action'], FILTER_SANITIZE_STRING);
$SM = GDPR\SessionManager::getInstance();
$GPDRManager = GDPR\GDPRManager::getInstance($CFG, $SM, $_REQUEST);
$VTGDPRAction = new VTGDPRAction();
$VTGDPRAction->process($action, $_REQUEST);
exit();
class VTGDPRAction {
public function __construct() {
}
public function process($action, $params) {
$fnName = lcfirst($action);
if (method_exists($this, $fnName)) {
return $this->$fnName($params);
} else {
return $this->error(_T('unknown_service'));
}
}
public function sendVerify($params) {
global $GPDRManager;
$authtoken = $params['authtoken'];
if (empty($authtoken)) {
return $this->error(_T('invalid_parameters'));
}
$result = $GPDRManager->sendVerify($authtoken);
$error = null;
if (!$result || $result['error']) {
$error = !empty($result['error']) ? _T($result['error']) : _T('unknown_error');
}
if (!empty($error)) return $this->error($error);
return $this->success();
}
public function saveSettings($params) {
global $GPDRManager;
if (empty($params)) {
return $this->error(_T('invalid_parameters'));
}
$result = $GPDRManager->updateContact($params);
$error = null;
if (!$result || $result['error']) {
$error = !empty($result['error']) ? _T($result['error']) : _T('unknown_error');
}
if (!empty($error)) return $this->error($error);
return $this->success();
}
public function editContact($params) {
global $GPDRManager;
if (empty($params)) {
return $this->error(_T('invalid_parameters'));
}
$result = $GPDRManager->updateContact($params);
$error = null;
if (!$result || $result['error']) {
$error = !empty($result['error']) ? _T($result['error']) : _T('unknown_error');
}
if (!empty($error)) return $this->error($error);
return $this->success();
}
public function deleteContact($params) {
global $GPDRManager;
if (empty($params)) {
return $this->error(_T('invalid_parameters'));
}
$result = $GPDRManager->deleteContact();
$error = null;
if (!$result || $result['error']) {
$error = !empty($result['error']) ? _T($result['error']) : _T('unknown_error');
}
if (!empty($error)) return $this->error($error);
return $this->success();
}
public function mergeContact($params) {
global $GPDRManager;
if (empty($params)) {
return $this->error(_T('invalid_parameters'));
}
$mainContact = intval($params['maincontact']);
$otherIds = $params['otherids'];
$result = $GPDRManager->mergeContact($mainContact, $otherIds);
$error = null;
if (!$result || $result['error']) {
$error = !empty($result['error']) ? _T($result['error']) : _T('unknown_error');
}
if (!empty($error)) return $this->error($error);
return $this->success();
}
public function sendSupportRequest($params) {
global $GPDRManager;
if (empty($params)) {
return $this->error(_T('invalid_parameters'));
}
$subject = $params['request_subject'];
$description = $params['request_description'];
$result = $GPDRManager->sendSupportRequest($subject, $description);
$error = null;
if (!$result || $result['error']) {
$error = !empty($result['error']) ? _T($result['error']) : _T('unknown_error');
}
if (!empty($error)) return $this->error($error);
return $this->success();
}
public function sendPrivacyPolicy($params) {
global $GPDRManager;
if (empty($params)) {
return $this->error(_T('invalid_parameters'));
}
$result = $GPDRManager->sendPrivacyPolicy();
$error = null;
if (!$result || $result['error']) {
$error = !empty($result['error']) ? _T($result['error']) : _T('unknown_error');
}
if (!empty($error)) return $this->error($error);
return $this->success();
}
public function loadDetailBlock($params) {
global $GPDRManager;
$smarty = new GDPR\SmartyConfig();
$contactId = $GPDRManager->getContactId();
$accessToken = $GPDRManager->getAccessToken();
$structureResult = $GPDRManager->getFields();
$structure = $structureResult['structure'];
if (!$structure) {
return $this->error(_T('structure_not_available'));
}
$contactData = $GPDRManager->getContactData();
$smarty->assign('CONTACT_ID', $contactId);
$smarty->assign('ACCESS_TOKEN', $accessToken);
$smarty->assign('STRUCTURE', $structure);
$smarty->assign('CONTACT_DATA', Zend_Json::encode($contactData));
$html = $smarty->fetch('DetailBlock.tpl');
return $this->success(array('html' => $html));
}
public function loadEditBlock($params) {
global $GPDRManager;
$smarty = new GDPR\SmartyConfig();
$contactId = $GPDRManager->getContactId();
$accessToken = $GPDRManager->getAccessToken();
$structureResult = $GPDRManager->getFields();
$structure = $structureResult['structure'];
if (!$structure) {
return $this->error(_T('structure_not_available'));
}
$contactData = $GPDRManager->getContactData();
$smarty->assign('CONTACT_ID', $contactId);
$smarty->assign('ACCESS_TOKEN', $accessToken);
$smarty->assign('STRUCTURE', $structure);
$smarty->assign('CONTACT_DATA', Zend_Json::encode($contactData));
$html = $smarty->fetch('EditBlock.tpl');
return $this->success(array('html' => $html));
}
public function error($message) {
$out = array('success' => false, 'error' => $message);
$this->rawOutput($out);
}
public function success($data = array()) {
$out = array_merge(array('success' => true), $data);
$this->rawOutput($out);
}
public function rawOutput($data) {
echo json_encode($data);
}
}