diff --git a/lib/classes/output/mustache_user_date_helper.php b/lib/classes/output/mustache_user_date_helper.php new file mode 100644 index 0000000000000..2e6815682b6d5 --- /dev/null +++ b/lib/classes/output/mustache_user_date_helper.php @@ -0,0 +1,62 @@ +. + +/** + * Mustache helper that will convert a timestamp to a date string. + * + * @package core + * @category output + * @copyright 2017 Ryan Wyllie + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace core\output; + +defined('MOODLE_INTERNAL') || die(); + +use Mustache_LambdaHelper; + +/** + * Mustache helper that will convert a timestamp to a date string. + * + * @copyright 2017 Ryan Wyllie + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class mustache_user_date_helper { + + /** + * Read a timestamp and format from the string. + * + * {{#shortentext}} 1487655635, Y-M-D {{/shortentext}} + * + * Both args are required. The timestamp must come first. + * + * @param string $args The text to parse for arguments. + * @param Mustache_LambdaHelper $helper Used to render nested mustache variables. + * @return string + */ + public function transform($args, Mustache_LambdaHelper $helper) { + // Split the text into an array of variables. + list($timestamp, $format) = explode(',', $args, 2); + $timestamp = trim($timestamp); + $format = trim($format); + + $timestamp = $helper->render($timestamp); + $format = $helper->render($format); + + return userdate($timestamp, $format); + } +} diff --git a/lib/outputrenderers.php b/lib/outputrenderers.php index 550b09887a1a1..27e15100f27fa 100644 --- a/lib/outputrenderers.php +++ b/lib/outputrenderers.php @@ -91,6 +91,7 @@ protected function get_mustache() { $quotehelper = new \core\output\mustache_quote_helper(); $jshelper = new \core\output\mustache_javascript_helper($this->page->requires); $pixhelper = new \core\output\mustache_pix_helper($this); + $userdatehelper = new \core\output\mustache_user_date_helper(); // We only expose the variables that are exposed to JS templates. $safeconfig = $this->page->requires->get_config_for_javascript($this->page, $this); @@ -99,7 +100,8 @@ protected function get_mustache() { 'str' => array($stringhelper, 'str'), 'quote' => array($quotehelper, 'quote'), 'js' => array($jshelper, 'help'), - 'pix' => array($pixhelper, 'pix')); + 'pix' => array($pixhelper, 'pix'), + 'userdate' => array($userdatehelper, 'transform')); $this->mustache = new Mustache_Engine(array( 'cache' => $cachedir,