Forked from
Stud.IP / Stud.IP
2877 commits behind the upstream repository.
-
Elmar Ludwig authored
Closes #1601 Merge request studip/studip!1159
Elmar Ludwig authoredCloses #1601 Merge request studip/studip!1159
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
StudipTransformFormat.php 3.00 KiB
<?php
/**
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* @author <mlunzena@uos.de
* @license http://www.gnu.org/licenses/gpl-2.0.html GPL version 2
* @category Stud.IP
*/
/**
* Format class to transform text before it is saved into the database.
* @deprecated since Stud.IP 5.3
*/
class StudipTransformFormat extends TextFormat
{
/**
* list of global Stud.IP transform markup rules
*/
private static $studip_rules = [
'signature' => [
'start' => '(?<!~)~~~(?!~)',
'callback' => 'StudipTransformFormat::markupSignature'
]
,'nop' => [
'start' => '\[nop\](.*?)\[\/nop\]',
'callback' => 'StudipTransformFormat::markupNoFormat'
],
];
/**
* Returns the list of global Stud.IP markup rules as an array.
* Each entry has the following attributes: 'start', 'end' and
* 'callback'. The rule name is used as the entry's array key.
*
* @return array list of all markup rules
*/
public static function getStudipMarkups()
{
return self::$studip_rules;
}
/**
* Adds a new markup rule to the global Stud.IP markup set. This can
* also be used to replace an existing markup rule. The end regular
* expression is optional (i.e. may be NULL) to indicate that this
* rule has an empty content model. The callback is called whenever
* the rule matches and is passed the following arguments:
*
* - $markup the markup parser object
* - $matches match results of preg_match for $start
* - $contents (parsed) contents of this markup rule
*
* @param string $name name of this rule
* @param string $start start regular expression
* @param string $end end regular expression (optional)
* @param callback $callback function generating output of this rule
*/
public static function addStudipMarkup($name, $start, $end, $callback)
{
self::$studip_rules[$name] = compact('start', 'end', 'callback');
}
/**
* Removes a markup rule from the global Stud.IP markup set.
*
* @param string $name name of the rule
*/
public static function removeStudipMarkup($name)
{
unset(self::$studip_rules[$name]);
}
/**
* Initializes a new StudipFormat instance.
*/
public function __construct()
{
parent::__construct(self::getStudipMarkups());
}
/**
* Stud.IP markup for signatures
*/
protected static function markupSignature($markup, $matches)
{
return get_fullname();
}
/**
* Stud.IP markup for unformatted text
*/
protected static function markupNoFormat($markup, $matches)
{
return '[nop]' . $markup->quote($matches[1]) . '[/nop]';
}
}