X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Futil.php;h=07f04f91b4e3f70a2b4dcf71ee3df3ba43aaf2e9;hb=996345088e8d57cf39fa38129ab50ff02918a275;hp=ac1938e84413873ad2f3abd9ef19957b1ef30468;hpb=cecec3b0889cbba254a235816924e9d68353b9ee;p=quix0rs-gnu-social.git diff --git a/lib/util.php b/lib/util.php index ac1938e844..07f04f91b4 100644 --- a/lib/util.php +++ b/lib/util.php @@ -322,7 +322,7 @@ function common_set_user($user) return false; } - if ($user) { + if ($user instanceof User) { if (Event::handle('StartSetUser', array(&$user))) { if (!empty($user)) { if (!$user->hasRight(Right::WEBLOGIN)) { @@ -538,7 +538,7 @@ function common_user_cache_hash($user=false) if ($user === false) { $user = common_current_user(); } - if ($user) { + if ($user instanceof User) { return crc32($user->id . ':' . $user->nickname); } else { return '0'; @@ -635,17 +635,13 @@ function common_linkify_mention($mention) $xs = new XMLStringer(false); $attrs = array('href' => $mention['url'], - 'class' => 'url'); + 'class' => 'h-card '.$mention['type']); if (!empty($mention['title'])) { $attrs['title'] = $mention['title']; } - $xs->elementStart('span', 'vcard'); - $xs->elementStart('a', $attrs); - $xs->element('span', 'fn nickname '.$mention['type'], $mention['text']); - $xs->elementEnd('a'); - $xs->elementEnd('span'); + $xs->element('a', $attrs, $mention['text']); $output = $xs->getString(); @@ -951,24 +947,7 @@ function callback_helper($matches, $callback, $arg=null) { return substr($matches[0],0,$left) . $result . substr($matches[0],$right); } -if (version_compare(PHP_VERSION, '5.3.0', 'ge')) { - // lambda implementation in a separate file; PHP 5.2 won't parse it. - require_once INSTALLDIR . "/lib/curry.php"; -} else { - function curry($fn) { - $args = func_get_args(); - array_shift($args); - $id = uniqid('_partial'); - $GLOBALS[$id] = array($fn, $args); - return create_function('', - '$args = func_get_args(); '. - 'return call_user_func_array('. - '$GLOBALS["'.$id.'"][0],'. - 'array_merge('. - '$args,'. - '$GLOBALS["'.$id.'"][1]));'); - } -} +require_once INSTALLDIR . "/lib/curry.php"; function common_linkify($url) { // It comes in special'd, so we unspecial it before passing to the stringifying @@ -1006,22 +985,27 @@ function common_linkify($url) { $f = File::getKV('url', $longurl); - if (empty($f)) { + if (!$f instanceof File) { if (common_config('attachments', 'process_links')) { // XXX: this writes to the database. :< - $f = File::processNew($longurl); + try { + $f = File::processNew($longurl); + } catch (ServerException $e) { + $f = null; + } } } - if (!empty($f)) { - if ($f->getEnclosure()) { + if ($f instanceof File) { + try { + $enclosure = $f->getEnclosure(); $is_attachment = true; $attachment_id = $f->id; $thumb = File_thumbnail::getKV('file_id', $f->id); - if (!empty($thumb)) { - $has_thumb = true; - } + $has_thumb = ($thumb instanceof File_thumbnail); + } catch (ServerException $e) { + // There was not enough metadata available } } @@ -1277,6 +1261,7 @@ function common_path($relative, $ssl=false, $addSession=true) $pathpart = (common_config('site', 'path')) ? common_config('site', 'path')."/" : ''; if (($ssl && (common_config('site', 'ssl') === 'sometimes')) + || StatusNet::isHTTPS() || common_config('site', 'ssl') === 'always') { $proto = 'https'; if (is_string(common_config('site', 'sslserver')) && @@ -1393,7 +1378,8 @@ function common_exact_date($dt) $dateStr = date('d F Y H:i:s', strtotime($dt)); $d = new DateTime($dateStr, $_utc); $d->setTimezone($_siteTz); - return $d->format(DATE_RFC850); + // TRANS: Human-readable full date-time specification (formatting on http://php.net/date) + return $d->format(_('l, d-M-Y H:i:s T')); } function common_date_w3dtf($dt) @@ -1835,6 +1821,15 @@ function common_get_mime_media($type) return strtolower($tmp[0]); } +function common_bare_mime($mimetype) +{ + $mimetype = mb_strtolower($mimetype); + if ($semicolon = mb_strpos($mimetype, ';')) { + $mimetype = mb_substr($mimetype, 0, $semicolon); + } + return $mimetype; +} + function common_mime_type_match($type, $avail) { if(array_key_exists($type, $avail)) { @@ -2048,7 +2043,7 @@ function common_profile_uri($profile) if (Event::handle('StartCommonProfileURI', array($profile, &$uri))) { $user = User::getKV('id', $profile->id); if ($user instanceof User) { - $uri = $user->uri; + $uri = $user->getUri(); } Event::handle('EndCommonProfileURI', array($profile, &$uri)); } @@ -2185,17 +2180,16 @@ function common_shorten_url($long_url, User $user=null, $force = false) if (Event::handle('StartShortenUrl', array($long_url, $shortenerName, &$shortenedUrl))) { if ($shortenerName == 'internal') { - $f = File::processNew($long_url); - if (empty($f)) { - return $long_url; - } else { - $shortenedUrl = common_local_url('redirecturl', - array('id' => $f->id)); + try { + $f = File::processNew($long_url); + $shortenedUrl = common_local_url('redirecturl', array('id' => $f->id)); if ((mb_strlen($shortenedUrl) < mb_strlen($long_url)) || $force) { return $shortenedUrl; } else { return $long_url; } + } catch (ServerException $e) { + return $long_url; } } else { return $long_url; @@ -2318,7 +2312,7 @@ function common_perf_counter($key, $val=null) $_perfCounters[$key] = array($val); } if (common_config('site', 'logperf_detail')) { - common_log(LOG_DEBUG, "PERF COUNTER HIT: $key $val"); + common_debug("PERF COUNTER HIT: $key $val"); } } } @@ -2332,14 +2326,14 @@ function common_log_perf_counters() if (isset($_startTime)) { $endTime = microtime(true); $diff = round(($endTime - $_startTime) * 1000); - common_log(LOG_DEBUG, "PERF runtime: ${diff}ms"); + common_debug("PERF runtime: ${diff}ms"); } $counters = $_perfCounters; ksort($counters); foreach ($counters as $key => $values) { $count = count($values); $unique = count(array_unique($values)); - common_log(LOG_DEBUG, "PERF COUNTER: $key $count ($unique unique)"); + common_debug("PERF COUNTER: $key $count ($unique unique)"); } } } @@ -2376,3 +2370,12 @@ function common_log_delta($comment=null) common_debug(sprintf("%s: %d %d", $comment, $mtotal, round($ttotal * 1000000))); } + +function common_strip_html($html, $trim=true, $save_whitespace=false) +{ + if (!$save_whitespace) { + $html = preg_replace('/\s+/', ' ', $html); + } + $text = html_entity_decode(strip_tags($html), ENT_QUOTES, 'UTF-8'); + return $trim ? trim($text) : $text; +}