check_feature('feature_comm');
$access->check_permission_either(['tiki_p_send_pages', 'tiki_p_send_articles']);
if ($tiki_p_send_pages != 'y' && $tiki_p_send_articles != 'y') {
$smarty->assign('errortype', 401);
$smarty->assign('msg', tra('You do not have the permission that is needed to use this feature'));
$smarty->display('error.tpl');
die;
}
if (! isset($_REQUEST['username'])) {
$_REQUEST['username'] = $user;
}
if (! isset($_REQUEST['path'])) {
$_REQUEST['path'] = '/tiki/commxmlrpc.php';
}
if (! isset($_REQUEST['site'])) {
$_REQUEST['site'] = '';
}
if (! isset($_REQUEST['password'])) {
$_REQUEST['password'] = '';
}
if (! isset($_REQUEST['sendpages'])) {
$sendpages = [];
} else {
$sendpages = json_decode(urldecode($_REQUEST['sendpages']));
}
if (! isset($_REQUEST['sendstructures'])) {
$sendstructures = [];
} else {
$sendstructures = json_decode(urldecode($_REQUEST['sendstructures']));
}
if (! isset($_REQUEST['sendarticles'])) {
$sendarticles = [];
} else {
$sendarticles = json_decode(urldecode($_REQUEST['sendarticles']));
}
$smarty->assign('username', $_REQUEST['username']);
$smarty->assign('site', $_REQUEST['site']);
$smarty->assign('path', $_REQUEST['path']);
$smarty->assign('password', $_REQUEST['password']);
if (isset($_REQUEST['dbg'])) {
$smarty->assign('dbg', $_REQUEST['dbg']);
}
if (isset($_REQUEST['find'])) {
$find = $_REQUEST['find'];
} else {
$find = '';
}
$smarty->assign('find', $find);
if (isset($_REQUEST['addpage'])) {
if (! in_array($_REQUEST['pageName'], $sendpages)) {
$sendpages[] = $_REQUEST['pageName'];
}
}
if (isset($_REQUEST['clearpages'])) {
$sendpages = [];
}
if (isset($_REQUEST['addstructure'])) {
if (! in_array($_REQUEST['structure'], $sendstructures)) {
$sendstructures[] = $_REQUEST['structure'];
}
}
if (isset($_REQUEST['clearstructures'])) {
$sendstructures = [];
}
if (isset($_REQUEST['addarticle'])) {
if (! in_array($_REQUEST['articleId'], $sendarticles)) {
$sendarticles[] = $_REQUEST['articleId'];
}
}
if (isset($_REQUEST['cleararticles'])) {
$sendarticles = [];
}
$structures = $structlib->list_structures(0, -1, 'pageName_asc', $find);
$smarty->assign_by_ref('structures', $structures['data']);
$msg = '';
if (isset($_REQUEST['send'])) {
check_ticket('send-objects');
// Create XMLRPC object
$client = new XML_RPC_Client($_REQUEST['path'], $_REQUEST['site'], 80);
$client->setDebug((isset($_REQUEST['dbg']) && $_REQUEST['dbg'] == 'on') ? true : false);
foreach ($sendstructures as $structure) {
$spages = $structlib->s_get_structure_pages($structure);
$pos = 0;
foreach ($spages as $spage) {
$listPageNames[$spage['page_ref_id']] = $spage['pageName'];
$page_info = $tikilib->get_page_info($spage['pageName']);
$pos++;
$searchMsg = new XML_RPC_Message(
'sendStructurePage',
[
new XML_RPC_Value($_SERVER['SERVER_NAME'], 'string'),
new XML_RPC_Value($_REQUEST['username'], 'string'),
new XML_RPC_Value($_REQUEST['password'], 'string'),
new XML_RPC_Value($spages[0]['pageName'], 'string'),
new XML_RPC_Value($spage['parent_id'] ? $listPageNames[$spage['parent_id']] : $spage['pageName'], 'string'),
new XML_RPC_Value($spage['pageName'], 'string'),
new XML_RPC_Value(base64_encode($page_info['data']), 'string'),
new XML_RPC_Value($page_info['comment'], 'string'),
new XML_RPC_Value($page_info['description'], 'string'),
new XML_RPC_Value($pos, 'string'),
new XML_RPC_Value($spage['page_alias'], 'string')
]
);
$result = $client->send($searchMsg);
if (! $result) {
$errorMsg = tra('Cannot login to server maybe the server is down');
$msg .= $errorMsg;
} else {
if (! $result->faultCode()) {
$msg .= tra('Page') . ': ' . $spage['pageName'] . ' ' . tra('successfully sent') . '
';
} else {
$errorMsg = $result->faultString();
$msg .= tra('Page') . ': ' . $spage['pageName'] . ' ' . tra('not sent') . '!' . '
';
$msg .= tra('Error: ') . $result->faultCode() . '-' . tra($errorMsg) . '
';
}
}
}
}
foreach ($sendpages as $page) {
$page_info = $tikilib->get_page_info($page);
if ($page_info) {
$searchMsg = new XML_RPC_Message(
'sendPage',
[
new XML_RPC_Value($_SERVER['SERVER_NAME'], 'string'),
new XML_RPC_Value($_REQUEST['username'], 'string'),
new XML_RPC_Value($_REQUEST['password'], 'string'),
new XML_RPC_Value($page, 'string'),
new XML_RPC_Value(base64_encode($page_info['data']), 'string'),
new XML_RPC_Value($page_info['comment'], 'string'),
new XML_RPC_Value($page_info['description'], 'string'),
]
);
$result = $client->send($searchMsg);
if (! $result) {
$errorMsg = tra('Cannot login to server maybe the server is down');
$msg .= $errorMsg;
} else {
if (! $result->faultCode()) {
$msg .= tra('Page') . ': ' . $page . ' ' . tra('successfully sent') . '
';
} else {
$errorMsg = $result->faultString();
$msg .= tra('Page') . ': ' . $page . ' ' . tra('not sent') . '!' . '
';
$msg .= tra('Error: ') . $result->faultCode() . '-' . tra($errorMsg) . '
';
}
}
}
}
$artlib = TikiLib::lib('art');
foreach ($sendarticles as $article) {
$page_info = $artlib->get_article($article);
if ($page_info) {
$searchMsg = new XML_RPC_Message(
'sendArticle',
[
new XML_RPC_Value($_SERVER['SERVER_NAME'], 'string'),
new XML_RPC_Value($_REQUEST['username'], 'string'),
new XML_RPC_Value($_REQUEST['password'], 'string'),
new XML_RPC_Value(base64_encode($page_info['title']), 'string'),
new XML_RPC_Value(base64_encode($page_info['authorName']), 'string'),
new XML_RPC_Value($page_info['size'], 'int'),
new XML_RPC_Value($page_info['useImage'], 'string'),
new XML_RPC_Value($page_info['image_name'], 'string'),
new XML_RPC_Value($page_info['image_type'], 'string'),
new XML_RPC_Value($page_info['image_size'], 'int'),
new XML_RPC_Value($page_info['image_x'], 'int'),
new XML_RPC_Value($page_info['image_y'], 'int'),
new XML_RPC_Value(base64_encode($page_info['image_data']), 'string'),
new XML_RPC_Value($page_info['publishDate'], 'int'),
new XML_RPC_Value($page_info['expireDate'], 'int'),
new XML_RPC_Value($page_info['created'], 'int'),
new XML_RPC_Value(base64_encode($page_info['heading']), 'string'),
new XML_RPC_Value(base64_encode($page_info['body']), 'string'),
new XML_RPC_Value($page_info['hash'], 'string'),
new XML_RPC_Value($page_info['author'], 'string'),
new XML_RPC_Value($page_info['type'], 'string'),
new XML_RPC_Value($page_info['rating'], 'string')
]
);
$result = $client->send($searchMsg);
if (! $result) {
$errorMsg = tra('Cannot login to server maybe the server is down');
$msg .= $errorMsg;
} else {
if (! $result->faultCode()) {
$msg .= tra('Article:') . ' ' . $page_info['title'] . ' ' . tra('successfully sent') . '
';
} else {
$errorMsg = $result->faultString();
$msg .= tra('Article:') . ' ' . $page_info['title'] . ' ' . tra('not sent') . '!' . '
';
$msg .= tra('Error: ') . $result->faultCode() . '-' . tra($errorMsg) . '
';
}
}
}
}
}
$smarty->assign('msg', $msg);
$smarty->assign('sendpages', $sendpages);
$sendstructures_names = [];
foreach ($sendstructures as $key => $id) {
foreach ($structures['data'] as $structure) {
if ($structure['page_ref_id'] == $id) {
$sendstructures_names[$key] = $structure['pageName'];
}
}
}
$smarty->assign('sendstructures_names', $sendstructures_names);
$smarty->assign('sendarticles', $sendarticles);
$form_sendpages = urlencode(json_encode($sendpages));
$form_sendstructures = urlencode(json_encode($sendstructures));
$form_sendarticles = urlencode(json_encode($sendarticles));
$smarty->assign('form_sendpages', $form_sendpages);
$smarty->assign('form_sendstructures', $form_sendstructures);
$smarty->assign('form_sendarticles', $form_sendarticles);
$pages = $tikilib->list_pageNames(0, -1, 'pageName_asc', $find);
$smarty->assign('pages', $pages['data']);
if ($prefs['feature_articles'] == 'y') {
$artlib = TikiLib::lib('art');
$articles = $artlib->list_articles(0, -1, 'publishDate_desc', $find, 0, $tikilib->now, $user);
$smarty->assign('articles', $articles['data']);
}
ask_ticket('send-objects');
// disallow robots to index page:
$smarty->assign('metatag_robots', 'NOINDEX, NOFOLLOW');
$smarty->assign('mid', 'tiki-send_objects.tpl');
$smarty->display('tiki.tpl');