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.
 
 
 
 
 
 

97 lines
3.3 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_now_info()
{
return [
'name' => tra('Now'),
'documentation' => 'PluginNow',
'description' => tra('Show the current date and time'),
'prefs' => ['wikiplugin_now'],
'iconname' => 'history',
'introduced' => 9,
'tags' => [ 'basic' ],
'params' => [
'format' => [
'required' => false,
'name' => tra('Format'),
'description' => tr(
'Time format using the PHP format described here: %0',
'http://www.php.net/manual/en/function.strftime.php'
),
'since' => '9.0',
'default' => tr('Based site long date and time setting'),
'filter' => 'text',
],
'when' => [
'required' => false,
'name' => tra('Date to display'),
'description' => tr(
'Date time as specified in text using strtotime, i.e. "next month" - documentation here: %0',
'https://secure.php.net/manual/en/function.strtotime.php'
),
'since' => '18.2',
'default' => tr(''),
'filter' => 'text',
],
'allowinvalid' => [
'required' => false,
'name' => tra('Allow Invalid Dates'),
'description' => tr('Allow return values that are not a valid date, such as the day of the month'),
'since' => '18.3',
'filter' => 'alpha',
'default' => 'n',
'options' => [
['text' => '', 'value' => ''],
['text' => tra('No'), 'value' => 'n'],
['text' => tra('Yes'), 'value' => 'y'],
],
],
],
];
}
function wikiplugin_now($data, $params)
{
global $prefs;
$when = ! empty($params['when']) ? $params['when'] : false;
$tz = TikiLib::lib('tiki')->get_display_timezone();
$tikidate = TikiLib::lib('tikidate');
$timezone = $tikidate->getTZByID($tz);
try {
if (is_numeric($when)) {
$date = new DateTime('@' . $when, $timezone);
} else {
$date = new DateTime($when, $timezone);
}
} catch (Exception $e) {
Feedback::error(tr('Plugin now when parameter not valid. %0', $e->getMessage()));
return '';
}
$default = strftime($prefs['long_date_format'] . ' ' . $prefs['long_time_format'], $date->getTimestamp());
if (! empty($params['format'])) {
$ret = strftime($params['format'], $date->getTimestamp());
if (empty($params['allowinvalid']) || $params['allowinvalid'] === 'n') {
//see if the user format setting results in a valid date, return default format if not
try {
new DateTime($ret);
} catch (Exception $e) {
$ret = $default;
}
}
} else {
$ret = $default;
}
return $ret;
}