You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

202 lines
7.2 KiB

<?php
/**
* @package tikiwiki
*/
// (c) Copyright by authors of the Tiki Wiki CMS Groupware Project
//
// All Rights Reserved. See copyright.txt for details and a complete list of authors.
// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details.
// $Id$
require_once('tiki-setup.php');
$access->check_feature('feature_webservices');
$access->check_permission('tiki_p_admin_webservices');
require_once 'lib/ointegratelib.php';
require_once 'lib/webservicelib.php';
if (! empty($_REQUEST['name'])) {
$webservice = Tiki_Webservice::getService($_REQUEST['name']);
if ($webservice && isset($_REQUEST['delete'])) {
$access->check_authenticity(tr('Are you sure you want to delete the webservice "%0"?', $_REQUEST['name']));
$webservice->delete();
$webservice = null;
}
}
if (! empty($webservice)) {
$storedTemplates = $webservice->getTemplates();
} else {
$webservice = new Tiki_Webservice();
$storedTemplates = [];
}
if (isset($_REQUEST['url'])) {
$webservice->url = $_REQUEST['url'];
}
if (isset($_REQUEST['wstype'])) {
$webservice->wstype = $_REQUEST['wstype'];
}
if (isset($_REQUEST['operation'])) {
$webservice->operation = $_REQUEST['operation'];
}
if (isset($_REQUEST['postbody'])) {
$webservice->body = $_REQUEST['postbody'];
}
if (isset($_REQUEST['edit'])) {
$smarty->assign('edit', true);
}
if (! isset($_REQUEST['params'])) {
$_REQUEST['params'] = [];
}
if (
! isset($_REQUEST['parse']) &&
$response = $webservice->performRequest(
$_REQUEST['params'],
false,
(! empty($_REQUEST['nocache'] && isset($_REQUEST['test'])))
)
) {
$data = $response->data;
if (is_array($data)) {
unset($data['_template']);
unset($data['_version']);
}
$templates = $response->getTemplates(
[
'smarty/tikiwiki',
'smarty/html',
'javascript/html',
'index/index',
]
);
$smarty->assign('data', print_r($data, true));
$smarty->assign('templates', $templates);
$smarty->assign('response', $response);
if (isset($_REQUEST['deletetemplate']) && $webservice->getTemplate($_REQUEST['deletetemplate'])) {
$access->checkCsrf(tr('Are you sure you want to delete the template "%0"?', $_REQUEST['deletetemplate']));
$webservice->removeTemplate($_REQUEST['deletetemplate']);
unset($storedTemplates[$_REQUEST['deletetemplate']]);
}
// Load template data in the form for modification
if (isset($_REQUEST['loadtemplate'])) {
$template = $webservice->getTemplate($_REQUEST['loadtemplate']);
$smarty->assign('nt_name', $template->name);
$smarty->assign('nt_engine', $template->engine);
$smarty->assign('nt_output', $template->output);
$smarty->assign('nt_content', $template->content);
}
if (isset($_REQUEST['add'])) {
$pos = key($_REQUEST['add']);
if (isset($templates[$pos])) {
$template = $templates[$pos];
$smarty->assign('nt_engine', $template['engine']);
$smarty->assign('nt_output', $template['output']);
$smarty->assign('nt_content', $template['content']);
}
}
// Create new or save existing service
if (isset($_REQUEST['register'])) {
$name = $_REQUEST['new_name'];
$newService = Tiki_Webservice::getService($name);
if (! empty($name)) {
if (isset($_REQUEST['old_name'])) { // editing
if ($name !== $_REQUEST['old_name']) {
$service = $webservice->rename($name);
} else {
$service = $webservice;
}
} else {
$service = Tiki_Webservice::create($name);
}
if ($service) {
$service->url = $_REQUEST['url'];
$service->wstype = $_REQUEST['wstype'];
$service->body = $_REQUEST['postbody'];
$service->operation = $_REQUEST['$operation'];
$service->schemaDocumentation = $response->schemaDocumentation;
$service->schemaVersion = $response->schemaVersion;
$service->save();
$webservice = $service;
unset($_REQUEST['edit'], $_REQUEST['old_name']);
$smarty->clear_assign('edit');
} else {
Feedback::error(tr('Webservice error "%0" not saved (alpha characters only)', $name));
if (isset($_REQUEST['old_name'])) { // editing
$webservice = Tiki_Webservice::getService($_REQUEST['old_name']);
} else {
$webservice = new Tiki_Webservice();
}
$service->url = $_REQUEST['url'];
$service->wstype = $_REQUEST['wstype'];
$service->body = $_REQUEST['postbody'];
$service->operation = $_REQUEST['$operation'];
$storedTemplates = [];
}
}
}
// Save template modification
if (isset($_REQUEST['nt_name']) && empty($_REQUEST['loadtemplate']) && empty($_REQUEST['preview'])) {
$name = $_REQUEST['nt_name'];
if (($template = $webservice->getTemplate($name)) || ($template = $webservice->addTemplate($name))) {
$template->engine = $_REQUEST['nt_engine'];
$template->output = $_REQUEST['nt_output'];
$template->content = $_REQUEST['nt_content'];
$template->save();
$storedTemplates = $webservice->getTemplates();
$smarty->assign('nt_name', $template->name);
$smarty->assign('nt_engine', $template->engine);
$smarty->assign('nt_output', $template->output);
$smarty->assign('nt_content', $template->content);
}
}
if (isset($_REQUEST['preview']) && $template = $webservice->getTemplate($_REQUEST['preview'])) {
$_REQUEST['nt_name'] = $template->name;
$_REQUEST['nt_engine'] = $template->engine;
$_REQUEST['nt_output'] = $template->output; // needed for multi-index preview
$_REQUEST['nt_content'] = $template->content;
$output = $template->render($response, 'html');
if ($response->errors) {
Feedback::error(implode(', ', $response->errors));
}
$smarty->assign('preview', $_REQUEST['preview']);
$smarty->assign('preview_output', $output);
$smarty->assign('nt_name', $template->name);
$smarty->assign('nt_engine', $template->engine);
$smarty->assign('nt_output', $template->output);
$smarty->assign('nt_content', $template->content);
}
}
$headerlib->add_jsfile('lib/soap/tiki-admin_webservices.js');
$smarty->assign('webservicesTypes', Tiki_Webservice::getTypes());
$smarty->assign('webservices', Tiki_Webservice::getList());
$smarty->assign('storedName', $webservice->getName());
$smarty->assign('storedTemplates', $storedTemplates);
$smarty->assign('url', $webservice->url);
$smarty->assign('postbody', $webservice->body);
$smarty->assign('operation', $webservice->operation);
$smarty->assign('wstype', $webservice->wstype);
$smarty->assign('params', $webservice->getParameterMap($_REQUEST['params']));
$smarty->assign('mid', 'tiki-admin_webservices.tpl');
$smarty->display('tiki.tpl');