tra('Twitter'),
'documentation' => 'PluginTwitter',
'description' => tra('Display the activity for a twitter account'),
'prefs' => ['wikiplugin_twitter'],
'body' => '',
'iconname' => 'twitter',
'introduced' => 7,
'params' => [
'tweet' => [
'required' => true,
'name' => tra('Twitter Path'),
'description' => tr(
'Depends on the type of timeline (Users, Collections, Favorites or Lists). For a
User, it is the Account Name (like %0twitterdev%1), for Favorites, something like
%0twitterdev/favorites%1. For lists, something like %0twitterdev/lists/listname%1, etc. ',
'',
''
),
'since' => '7.0',
'filter' => 'text',
'default' => ''
],
'widgetId' => [
'required' => true,
'name' => tra('Widget Id'),
'description' => tra('Numeric identifier of the widget'),
'since' => '13.1',
'filter' => 'digits',
'default' => ''
],
'theme' => [
'required' => false,
'name' => tra('Theme'),
'description' => tr('Embedded timelines are available in light and dark themes for customization.
The light theme is for pages that use a light colored background, while the dark theme is for pages
that use a dark colored background. Default is %0light%1.', '', ''),
'since' => '13.1',
'filter' => 'alpha',
'options' => [
['text' => '', 'value' => ''],
['text' => tra('light'), 'value' => 'light'],
['text' => tra('dark'), 'value' => 'dark'],
],
'default' => 'light'
],
'tweetcolor' => [
'required' => false,
'name' => tra('Link Color'),
'description' => tra('Text color for individual tweets. Default is theme default.'),
'since' => '7.0',
'accepted' => tra('Valid HTML color codes (with beginning #) or names.'),
'filter' => 'text'
],
'tweetbg' => [
'required' => false,
'name' => tra('Border Color'),
'description' => tra('Change the border color used by the widget. Default is theme default.'),
'since' => '7.0',
'accepted' => tra('Valid HTML color codes (with beginning #) or names.'),
'filter' => 'text'
],
'height' => [
'required' => false,
'name' => tra('Height'),
'description' => tr('Height of widget in pixels. Default is %0.', '300'),
'since' => '7.0',
'filter' => 'digits',
'default' => 300
],
'width' => [
'required' => false,
'name' => tra('Width'),
'description' => tr(
'Width of widget in pixels or \'auto\' to fit to width of page. Default is %0.',
'auto'
),
'accepted' => tra('Number of pixels or the word \'auto\'.'),
'since' => '7.0',
'filter' => 'text',
'default' => 'auto'
],
'noheader' => [
'required' => false,
'advanced' => true,
'name' => tra('No Header'),
'description' => tra('Default is with Header'),
'since' => '13.1',
'filter' => 'text',
'options' => [
['text' => tra('Header'), 'value' => ''],
['text' => tra('No Header'), 'value' => 'y'],
],
],
'nofooter' => [
'required' => false,
'advanced' => true,
'name' => tra('No Footer'),
'description' => tra('Default is with Footer'),
'since' => '13.1',
'filter' => 'text',
'options' => [
['text' => tra('Footer'), 'value' => ''],
['text' => tra('No Footer'), 'value' => 'y'],
],
],
'noborders' => [
'required' => false,
'advanced' => true,
'name' => tra('Layout Option: No Borders'),
'description' => tra('Default is with Borders'),
'since' => '13.1',
'filter' => 'text',
'options' => [
['text' => tra('Borders'), 'value' => ''],
['text' => tra('No Borders'), 'value' => 'y'],
],
],
'noscrollbar' => [
'required' => false,
'advanced' => true,
'name' => tra('No Scrollbar'),
'description' => tra('Default is with Scrollbar'),
'since' => '13.1',
'filter' => 'text',
'options' => [
['text' => tra('Scrollbar'), 'value' => ''],
['text' => tra('No Scrollbar'), 'value' => 'y'],
],
],
'shellbg' => [
'required' => false,
'advanced' => true,
'name' => tra('Transparent Background'),
'description' => tra('Transparent Shell Background. Default is theme default'),
'since' => '7.0',
'filter' => 'text',
'options' => [
['text' => tra('Theme default'), 'value' => ''],
['text' => tra('Transparent'), 'value' => 'transparent'],
],
],
],
];
}
function wikiplugin_twitter($data, $params)
{
$default = ['shellbg' => '', 'shellcolor' => '', 'tweetbg' => '', 'tweetcolor' => '', 'width' => 'auto', 'height' => 300];
$params = array_merge($default, $params);
extract($params, EXTR_SKIP);
// Variables sanitizing
$tweetlimit = (int)$tweetlimit;
$tweetbg = preg_replace('/[^#0-9a-zA-Z]/', '', $tweetbg);
$tweetcolor = preg_replace('/[^#0-9a-zA-Z]/', '', $tweetcolor);
$tweet = preg_replace('/[^#0-9a-zA-Z%\/=]/', '', $tweet);
$widgetId = preg_replace('/[^0-9]/', '', $widgetId);
if ($theme != 'dark') {
$theme = 'light';
}
$datachrome = [];
if ($noheader == 'y') {
$datachrome[] = 'noheader';
}
if ($nofooter == 'y') {
$datachrome[] = 'nofooter';
}
if ($noborders == 'y') {
$datachrome[] = 'noborders';
}
if ($noscrollbar == 'y') {
$datachrome[] = 'noscrollbar';
}
if ($shellbg == 'transparent') {
$datachrome[] = 'transparent' ;
}
if (count($datachrome) > 0) {
$datachromehtml = "data-chrome=' " . implode(' ', $datachrome) . "' ";
}
if ($width != 'auto') {
$width = preg_replace('/[^0-9]/', '', $width);
}
$height = (int)$height;
// Inspiration: http://stackoverflow.com/questions/14303710/how-to-customize-twitter-widget-style
// and https://dev.twitter.com/web/embedded-timelines
// Note: the $widgetId is more important than the $tweet in defining what is displayed
$html = "
";
//debug return '~np~'.nl2br(htmlspecialchars($html)).'~/np~';
//debug return '~np~'.$html.nl2br(htmlspecialchars($html)).'~/np~';
return '~np~' . $html . '~/np~';
}