make legal_webbie() pluggable - * this should not be merged with federated projects unless the federation drivers make use of the hooks.
This commit is contained in:
parent
6710a77c26
commit
9fb08fb502
10
doc/hook/legal_webbie.bb
Normal file
10
doc/hook/legal_webbie.bb
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
[h2]legal_webbie[/h2]
|
||||||
|
|
||||||
|
Called when validating a channel address. By default the valid characters are
|
||||||
|
a-z,0-9,-,_, and . Uppercase ASCII characters are folded to lower and any invalid characters are stripped.
|
||||||
|
|
||||||
|
Some federated networks require more restrictive rules.
|
||||||
|
|
||||||
|
The hook is called with an array [ 'input' => (supplied text), 'output' => (validated text) ]
|
||||||
|
|
||||||
|
A plugin will generally perform a regex filter or text operation on 'input' and provide the results in 'output'.
|
7
doc/hook/legal_webbie_text.bb
Normal file
7
doc/hook/legal_webbie_text.bb
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
[h2]legal_webbie_text[/h2]
|
||||||
|
|
||||||
|
Returns a string describing the text rules applied to legal_webbie().
|
||||||
|
|
||||||
|
Called with an array [ 'text' => (descriptive text describing text character limitations) ]
|
||||||
|
|
||||||
|
A plugin should return the description of the allowed characters and operation performed in the 'legal_webbie' hook to assist people when creating a new channel.
|
@ -317,6 +317,12 @@ Hooks allow plugins/addons to "hook into" the code at many points and alter the
|
|||||||
[zrl=[baseurl]/help/hook/jot_tool]jot_tool[/zrl]
|
[zrl=[baseurl]/help/hook/jot_tool]jot_tool[/zrl]
|
||||||
Deprecated and possibly obsolete. Allows one to add action buttons to the post editor.
|
Deprecated and possibly obsolete. Allows one to add action buttons to the post editor.
|
||||||
|
|
||||||
|
[zrl=[baseurl]/help/hook/legal_webbie]legal_webbie[/zrl]
|
||||||
|
Called to validate a channel address
|
||||||
|
|
||||||
|
[zrl=[baseurl]/help/hook/legal_webbie_text]legal_webbie_text[/zrl]
|
||||||
|
Provides an explanation of text/character restrictions for legal_webbie()
|
||||||
|
|
||||||
[zrl=[baseurl]/help/hook/load_pdl]load_pdl[/zrl]
|
[zrl=[baseurl]/help/hook/load_pdl]load_pdl[/zrl]
|
||||||
Called when we load a PDL file or description
|
Called when we load a PDL file or description
|
||||||
|
|
||||||
|
@ -2000,30 +2000,34 @@ function legal_webbie($s) {
|
|||||||
if(! strlen($s))
|
if(! strlen($s))
|
||||||
return '';
|
return '';
|
||||||
|
|
||||||
|
// WARNING: This regex will not work in a federated environment.
|
||||||
|
// You will probably want something like
|
||||||
|
// preg_replace('/([^a-z0-9\_])/','',strtolower($s));
|
||||||
|
|
||||||
// Has to start with a lowercase alphabetic character - not a number.
|
$r = preg_replace('/([^a-z0-9\-\_\.])/','',strtolower($s));
|
||||||
// This is so we can differentiate between something like channel=123
|
|
||||||
// and channel=foo and lookup the first by numeric id and the second
|
|
||||||
// by nickname.
|
|
||||||
|
|
||||||
$x = $s;
|
$x = [ 'input' => $s, 'output' => $r ];
|
||||||
do {
|
call_hooks('legal_webbie',$x);
|
||||||
$s = $x;
|
return $x['output'];
|
||||||
$x = preg_replace('/^([^a-z])(.*?)/',"$2",$s);
|
|
||||||
} while($x != $s);
|
|
||||||
|
|
||||||
// Use the lowest common denominator rules (letters, numbers, and underscore)
|
|
||||||
// if the site configuration allows federation with other networks
|
|
||||||
|
|
||||||
if(Zlib\System::get_server_role() === 'pro') {
|
|
||||||
return preg_replace('/([^a-z0-9\-\_\.])/','',$x);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return preg_replace('/([^a-z0-9\_])/','',$x);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function legal_webbie_text() {
|
||||||
|
|
||||||
|
// WARNING: This will not work in a federated environment.
|
||||||
|
|
||||||
|
$s = t('a-z, 0-9, -, _, and . only');
|
||||||
|
|
||||||
|
$x = [ 'text' => $s ];
|
||||||
|
call_hooks('legal_webbie_text',$x);
|
||||||
|
return $x['text'];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function check_webbie($arr) {
|
function check_webbie($arr) {
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user