1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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
|
<?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]';
}
}
|