Newer
Older
<?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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
*/
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]';
}
}