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.
 
 
 
 
 
 

58 lines
1.8 KiB

<?php
// (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$
function wikiplugin_includeurl_info()
{
return [
'name' => tra('Include URL'),
'documentation' => 'PluginIncludeURL',
'description' => tra('Include the body content from a URL'),
'prefs' => ['wikiplugin_includeurl'],
'iconname' => 'link-external',
'introduced' => 15,
'tags' => [ 'basic' ],
'format' => 'html',
'params' => [
'url' => [
'required' => true,
'name' => tra('URL'),
'description' => tra('URL to external file to include.'),
'since' => '15.0',
'filter' => 'url',
'default' => '',
],
],
];
}
function wikiplugin_includeurl($data, $params)
{
// Validate that "url" is set.
if (empty($params['url'])) {
return tr('Missing parameter url for plugin %0', 'includeurl') . '<br>';
} else {
$url = $params['url'];
$html = file_get_contents($url);
// Only include the body part of the html file
$matches = [];
if (preg_match("/<body.*\/body>/s", $html, $matches)) {
// Find and strip the body
$taggedBody = $matches[0];
$bodyEndIdx = strpos($taggedBody, '>');
if ($bodyEndIdx > 0) {
$taggedBody = substr($taggedBody, $bodyEndIdx + 1);
}
$body = substr($taggedBody, 0, -7);
} else {
// No body tag. Return whole html
$body = $html;
}
return $body;
}
}