summaryrefslogtreecommitdiff
path: root/inc/common.php
diff options
context:
space:
mode:
authorGerrit Uitslag <klapinklapin@gmail.com>2014-02-04 00:34:12 +0100
committerGerrit Uitslag <klapinklapin@gmail.com>2014-02-04 00:34:12 +0100
commit60a396c8ac50f17c2e3f43a9533af86cf6976976 (patch)
tree9cbe194c0854731f2f7f5e4d96444d672b6e6a6c /inc/common.php
parent69736a139a14ee8cb2a439b34d64f964a0519a03 (diff)
downloadrpg-60a396c8ac50f17c2e3f43a9533af86cf6976976.tar.gz
rpg-60a396c8ac50f17c2e3f43a9533af86cf6976976.tar.bz2
wrap userlink building with event.
Implements an event which can modify the link below usernames, and the displayed user name. When no name supplied, the name of currently logged-in user is used.
Diffstat (limited to 'inc/common.php')
-rw-r--r--inc/common.php109
1 files changed, 85 insertions, 24 deletions
diff --git a/inc/common.php b/inc/common.php
index 32771285b..053776a41 100644
--- a/inc/common.php
+++ b/inc/common.php
@@ -1418,34 +1418,95 @@ function shorten($keep, $short, $max, $min = 9, $char = '…') {
* @author Andy Webber <dokuwiki AT andywebber DOT com>
*/
function editorinfo($username) {
- global $conf;
+ return userinfo($username);
+}
+
+/**
+ * Returns users realname w/o link
+ *
+ * @param string|bool $username or false when currently logged-in user should be used
+ * @return string html of formatted user name
+ *
+ * @triggers COMMON_USER_LINK
+ */
+function userinfo($username = false) {
+ global $conf, $INFO;
+ /** @var DokuWiki_Auth_Plugin $auth */
global $auth;
- switch($conf['showuseras']) {
- case 'username':
- case 'email':
- case 'email_link':
- if($auth) $info = $auth->getUserData($username);
- break;
- default:
- return hsc($username);
- }
-
- if(isset($info) && $info) {
- switch($conf['showuseras']) {
- case 'username':
- return hsc($info['name']);
- case 'email':
- return obfuscate($info['mail']);
- case 'email_link':
- $mail = obfuscate($info['mail']);
- return '<a href="mailto:'.$mail.'">'.$mail.'</a>';
- default:
- return hsc($username);
+ // prepare initial event data
+ $data = array(
+ 'username' => $username, // the unique user name
+ 'name' => '',
+ 'link' => array( //setting 'link' to false disables linking
+ 'target' => '',
+ 'pre' => '',
+ 'suf' => '',
+ 'style' => '',
+ 'more' => '',
+ 'url' => '',
+ 'title' => '',
+ 'class' => ''
+ ),
+ 'userinfo' => ''
+ );
+ if($username === false) {
+ $data['username'] = $_SERVER['REMOTE_USER'];
+ $data['name'] = '<bdi>'.hsc($INFO['userinfo']['name']).'</bdi> (<bdi>'.hsc($_SERVER['REMOTE_USER']).'</bdi>)';
+ }
+
+ $evt = new Doku_Event('COMMON_USER_LINK', $data);
+ if($evt->advise_before(true)) {
+ if(empty($data['name'])) {
+ if($conf['showuseras'] == 'loginname') {
+ $data['name'] = hsc($data['username']);
+ } else {
+ if($auth) $info = $auth->getUserData($username);
+ if(isset($info) && $info) {
+ switch($conf['showuseras']) {
+ case 'username':
+ $data['name'] = hsc($info['name']);
+ break;
+ case 'email':
+ case 'email_link':
+ $data['name'] = obfuscate($info['mail']);
+ break;
+ }
+ }
+ }
+ }
+ if($data['link'] !== false && empty($data['link']['url'])){
+ if($conf['showuseras'] == 'email_link') {
+ if(!isset($info)) {
+ if($auth) $info = $auth->getUserData($username);
+ }
+ if(isset($info) && $info) {
+ $data['link']['url'] = 'mailto:'.obfuscate($info['mail']);
+ } else {
+ $data['link'] = false;
+ }
+
+ } else {
+ $data['link'] = false;
+ }
+ }
+
+ if($data['link'] === false) {
+ $data['userinfo'] = $data['name'];
+ } else{
+ $data['link']['name'] = $data['name'];
+ /** @var Doku_Renderer_xhtml $xhtml_renderer */
+ static $xhtml_renderer = null;
+ if(is_null($xhtml_renderer)){
+ $xhtml_renderer = p_get_renderer('xhtml');
+ }
+ $data['userinfo'] = $xhtml_renderer->_formatLink($data['link']);
}
- } else {
- return hsc($username);
}
+ $evt->advise_after();
+ unset($evt);
+
+ return $data['userinfo'];
}
/**