X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Futil.php;h=12680112634e444a5aa18b80bbb5b49ec25dee75;hb=b899ff617f757e234d1954d4c71e4d55e739a1dd;hp=035ed08f4234433bd167ac6a9b6c5eca7341a96e;hpb=0eaeff2cbf486e1634a98740554c974153a65aeb;p=quix0rs-gnu-social.git diff --git a/lib/util.php b/lib/util.php index 035ed08f42..1268011263 100644 --- a/lib/util.php +++ b/lib/util.php @@ -102,15 +102,15 @@ function common_show_header($pagetitle, $callable=NULL, $data=NULL) { $pagetitle . " - " . $config['site']['name']); common_element('link', array('rel' => 'stylesheet', 'type' => 'text/css', - 'href' => $config['site']['path'] . 'theme/default/style/html.css', + 'href' => common_path('theme/default/style/html.css'), 'media' => 'screen, projection, tv')); common_element('link', array('rel' => 'stylesheet', 'type' => 'text/css', - 'href' => $config['site']['path'] . 'theme/default/style/layout.css', + 'href' => common_path('theme/default/style/layout.css'), 'media' => 'screen, projection, tv')); common_element('link', array('rel' => 'stylesheet', 'type' => 'text/css', - 'href' => $config['site']['path'] . 'theme/default/style/print.css', + 'href' => common_path('theme/default/style/print.css'), 'media' => 'print')); if ($callable) { if ($data) { @@ -150,17 +150,24 @@ function common_text($txt) { $xw->text($txt); } +function common_raw($xml) { + global $xw; + $xw->writeRaw($xml); +} + function common_license_block() { global $config, $xw; - common_element_start('p', 'license'); - common_element_start('a', array('class' => 'license floatLeft', + common_element_start('p', 'license greenBg'); + common_element_start('span', 'floatLeft width25'); + common_element_start('a', array('class' => 'license', 'rel' => 'license', href => $config['license']['url'])); common_element('img', array('class' => 'license', 'src' => $config['license']['image'], 'alt' => $config['license']['title'])); common_element_end('a'); - common_element_start('span', 'floatRight'); + common_element_end('span'); + common_element_start('span', 'floatRight width75'); common_text(_t('Unless otherwise specified, contents of this site are copyright by the contributors and available under the ')); common_element('a', array('class' => 'license', 'rel' => 'license', @@ -231,6 +238,13 @@ function common_input($id, $label, $value=NULL) { common_element_end('p'); } +function common_hidden($id, $value) { + common_element('input', array('name' => $id, + 'type' => 'hidden', + 'id' => $id, + 'value' => $value)); +} + function common_password($id, $label) { common_element_start('p'); common_element('label', array('for' => $id), $label); @@ -342,11 +356,48 @@ function common_canonical_email($email) { return $email; } -function common_render_content($text) { - # XXX: @ messages +define('URL_REGEX', '^|[ \t\r\n])((ftp|http|https|gopher|mailto|news|nntp|telnet|wais|file|prospero|aim|webcal):(([A-Za-z0-9$_.+!*(),;/?:@&~=-])|%[A-Fa-f0-9]{2}){2,}(#([a-zA-Z0-9][a-zA-Z0-9$_.+!*(),;/?:@&~=%-]*))?([A-Za-z0-9$_+!*();/?:~-]))'); + +function common_render_content($text, $notice) { + $r = htmlspecialchars($text); + $id = $notice->profile_id; + $r = preg_replace('@https?://\S+@', '\0', $r); + $r = preg_replace('/(^|\b)@([\w-]+)($|\b)/e', "'\\1@'.common_at_link($id, '\\2').'\\3'", $r); # XXX: # tags # XXX: machine tags - return htmlspecialchars($text); + return $r; +} + +function common_at_link($sender_id, $nickname) { + # Try to find profiles this profile is subscribed to that have this nickname + $recipient = new Profile(); + # XXX: chokety and bad + $recipient->whereAdd('EXISTS (SELECT subscribed from subscription where subscriber = '.$sender_id.' and subscribed = id)', 'AND'); + $recipient->whereAdd('nickname = "' . trim($nickname) . '"', 'AND'); + if ($recipient->find(TRUE)) { + return ''.$nickname.''; + } + # Try to find profiles that listen to this profile and that have this nickname + $recipient = new Profile(); + # XXX: chokety and bad + $recipient->whereAdd('EXISTS (SELECT subscriber from subscription where subscribed = '.$sender_id.' and subscriber = id)', 'AND'); + $recipient->whereAdd('nickname = "' . trim($nickname) . '"', 'AND'); + if ($recipient->find(TRUE)) { + return ''.$nickname.''; + } + # If this is a local user, try to find a local user with that nickname. + $sender = User::staticGet($sender_id); + if ($sender) { + $recipient_user = User::staticGet('nickname', $nickname); + if ($recipient_user) { + $recipient = $recipient->getProfile(); + return ''.$nickname.''; + } + } + # Otherwise, no links. @messages from local users to remote users, + # or from remote users to other remote users, are just + # outside our ability to make intelligent guesses about + return $nickname; } // where should the avatar go for this user? @@ -363,12 +414,11 @@ function common_avatar_filename($user, $extension, $size=NULL, $extra=NULL) { function common_avatar_path($filename) { global $config; - return $config['avatar']['directory'] . '/' . $filename; + return INSTALLDIR . '/avatar/' . $filename; } function common_avatar_url($filename) { - global $config; - return "http://".$config['site']['server'].$config['avatar']['path'].'/'.$filename; + return common_path('avatar/'.$filename); } function common_default_avatar($size) { @@ -376,11 +426,11 @@ function common_default_avatar($size) { AVATAR_STREAM_SIZE => 'stream', AVATAR_MINI_SIZE => 'mini'); global $config; - return "http://".$config['site']['server'].$config['site']['path'].'/'.$config['avatar']['default'][$sizenames[$size]]; + + return common_path($config['avatar']['default'][$sizenames[$size]]); } function common_local_url($action, $args=NULL) { - global $config; /* XXX: pretty URLs */ $extra = ''; if ($args) { @@ -388,8 +438,13 @@ function common_local_url($action, $args=NULL) { $extra .= "&${key}=${value}"; } } + return common_path("index.php?action=${action}${extra}"); +} + +function common_path($relative) { + global $config; $pathpart = ($config['site']['path']) ? $config['site']['path']."/" : ''; - return "http://".$config['site']['server'].'/'.$pathpart."index.php?action=${action}${extra}"; + return "http://".$config['site']['server'].'/'.$pathpart.$relative; } function common_date_string($dt) { @@ -444,9 +499,7 @@ function common_mint_tag($extra) { # Should make up a reasonable root URL function common_root_url() { - global $config; - $pathpart = ($config['site']['path']) ? $config['site']['path']."/" : ''; - return "http://".$config['site']['server'].'/'.$pathpart; + return common_path(''); } # returns $bytes bytes of random data as a hexadecimal string @@ -481,6 +534,16 @@ function common_mtrand($bytes) { return $enc; } +function common_set_returnto($url) { + common_ensure_session(); + $_SESSION['returnto'] = $url; +} + +function common_get_returnto() { + common_ensure_session(); + return $_SESSION['returnto']; +} + function common_timestamp() { return date('YmdHis'); }