X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Futil.php;h=12680112634e444a5aa18b80bbb5b49ec25dee75;hb=b899ff617f757e234d1954d4c71e4d55e739a1dd;hp=4ed1a4afb87505daefc40663d3a1b8c6bf86a482;hpb=9d9588a3deefbd908210ea3b47575e6d1e70939d;p=quix0rs-gnu-social.git diff --git a/lib/util.php b/lib/util.php index 4ed1a4afb8..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) { @@ -238,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); @@ -349,41 +356,42 @@ function common_canonical_email($email) { return $email; } -function common_render_content($text, $notice=NULL) { +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); - if ($notice) { - $id = $notice->profile_id; - $r = preg_replace('/\b@([\w-]{1-64})\b/e', "@common_at_link($id, '\\1')", $r); - } + $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 $r; } -function common_at_link($profile_id, $nickname) { +function common_at_link($sender_id, $nickname) { # Try to find profiles this profile is subscribed to that have this nickname - $profile = new Profile(); + $recipient = new Profile(); # XXX: chokety and bad - $profile->whereAdd('EXISTS (SELECT subscribed from subscription where subscriber = '.$profile_id.' and subscribed = id)', 'AND'); - $profile->whereAdd('nickname = "' . trim($nickname) . '"', 'AND'); - if ($profile->find(TRUE)) { - return ''.$nickname.''; + $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 - $profile = new Profile(); + $recipient = new Profile(); # XXX: chokety and bad - $profile->whereAdd('EXISTS (SELECT subscriber from subscription where subscribed = '.$profile_id.' and subscriber = id)', 'AND'); - $profile->whereAdd('nickname = "' . trim($nickname) . '"', 'AND'); - if ($profile->find(TRUE)) { - return ''.$nickname.''; + $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($profile_id); + $sender = User::staticGet($sender_id); if ($sender) { - $recipient = User::staticGet('nickname', $nickname); - if ($recipient) { - $profile = $recipient->getProfile(); - return ''.$nickname.''; + $recipient_user = User::staticGet('nickname', $nickname); + if ($recipient_user) { + $recipient = $recipient->getProfile(); + return ''.$nickname.''; } } # Otherwise, no links. @messages from local users to remote users, @@ -406,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) { @@ -419,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) { @@ -431,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) { @@ -487,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 @@ -524,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'); }