summaryrefslogtreecommitdiff
path: root/lib/util.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/util.php')
-rw-r--r--lib/util.php372
1 files changed, 248 insertions, 124 deletions
diff --git a/lib/util.php b/lib/util.php
index f0387ebe5..ed73b19e6 100644
--- a/lib/util.php
+++ b/lib/util.php
@@ -21,7 +21,8 @@
// Show a server error
-function common_server_error($msg, $code=500) {
+function common_server_error($msg, $code=500)
+{
static $status = array(500 => 'Internal Server Error',
501 => 'Not Implemented',
502 => 'Bad Gateway',
@@ -44,7 +45,8 @@ function common_server_error($msg, $code=500) {
}
// Show a user error
-function common_user_error($msg, $code=400) {
+function common_user_error($msg, $code=400)
+{
static $status = array(400 => 'Bad Request',
401 => 'Unauthorized',
402 => 'Payment Required',
@@ -80,7 +82,8 @@ function common_user_error($msg, $code=400) {
$xw = null;
// Start an HTML element
-function common_element_start($tag, $attrs=null) {
+function common_element_start($tag, $attrs=null)
+{
global $xw;
$xw->startElement($tag);
if (is_array($attrs)) {
@@ -92,7 +95,8 @@ function common_element_start($tag, $attrs=null) {
}
}
-function common_element_end($tag) {
+function common_element_end($tag)
+{
static $empty_tag = array('base', 'meta', 'link', 'hr',
'br', 'param', 'img', 'area',
'input', 'col');
@@ -105,7 +109,8 @@ function common_element_end($tag) {
}
}
-function common_element($tag, $attrs=null, $content=null) {
+function common_element($tag, $attrs=null, $content=null)
+{
common_element_start($tag, $attrs);
global $xw;
if (!is_null($content)) {
@@ -114,7 +119,8 @@ function common_element($tag, $attrs=null, $content=null) {
common_element_end($tag);
}
-function common_start_xml($doc=null, $public=null, $system=null, $indent=true) {
+function common_start_xml($doc=null, $public=null, $system=null, $indent=true)
+{
global $xw;
$xw = new XMLWriter();
$xw->openURI('php://output');
@@ -125,13 +131,15 @@ function common_start_xml($doc=null, $public=null, $system=null, $indent=true) {
}
}
-function common_end_xml() {
+function common_end_xml()
+{
global $xw;
$xw->endDocument();
$xw->flush();
}
-function common_init_locale($language=null) {
+function common_init_locale($language=null)
+{
if(!$language) {
$language = common_language();
}
@@ -144,7 +152,8 @@ function common_init_locale($language=null) {
$language);
}
-function common_init_language() {
+function common_init_language()
+{
mb_internal_encoding('UTF-8');
$language = common_language();
// So we don't have to make people install the gettext locales
@@ -160,7 +169,8 @@ function common_init_language() {
define('PAGE_TYPE_PREFS', 'text/html,application/xhtml+xml,application/xml;q=0.3,text/xml;q=0.2');
-function common_show_header($pagetitle, $callable=null, $data=null, $headercall=null) {
+function common_show_header($pagetitle, $callable=null, $data=null, $headercall=null)
+{
global $config, $xw;
global $action; /* XXX: kind of cheating here. */
@@ -243,7 +253,8 @@ function common_show_header($pagetitle, $callable=null, $data=null, $headercall=
common_element_start('div', array('id' => 'content'));
}
-function common_start_html($type=null, $indent=true) {
+function common_start_html($type=null, $indent=true)
+{
if (!$type) {
$httpaccept = isset($_SERVER['HTTP_ACCEPT']) ? $_SERVER['HTTP_ACCEPT'] : null;
@@ -274,7 +285,8 @@ function common_start_html($type=null, $indent=true) {
'lang' => $language));
}
-function common_show_footer() {
+function common_show_footer()
+{
global $xw, $config;
common_element_end('div'); // content div
common_foot_menu();
@@ -307,17 +319,20 @@ function common_show_footer() {
common_end_xml();
}
-function common_text($txt) {
+function common_text($txt)
+{
global $xw;
$xw->text($txt);
}
-function common_raw($xml) {
+function common_raw($xml)
+{
global $xw;
$xw->writeRaw($xml);
}
-function common_nav_menu() {
+function common_nav_menu()
+{
$user = common_current_user();
common_element_start('ul', array('id' => 'nav'));
if ($user) {
@@ -344,7 +359,8 @@ function common_nav_menu() {
common_element_end('ul');
}
-function common_foot_menu() {
+function common_foot_menu()
+{
common_element_start('ul', array('id' => 'nav_sub'));
common_menu_item(common_local_url('doc', array('title' => 'help')),
_('Help'));
@@ -361,7 +377,8 @@ function common_foot_menu() {
common_element_end('ul');
}
-function common_menu_item($url, $text, $title=null, $is_selected=false) {
+function common_menu_item($url, $text, $title=null, $is_selected=false)
+{
$lattrs = array();
if ($is_selected) {
$lattrs['class'] = 'current';
@@ -375,7 +392,8 @@ function common_menu_item($url, $text, $title=null, $is_selected=false) {
common_element_end('li');
}
-function common_input($id, $label, $value=null,$instructions=null) {
+function common_input($id, $label, $value=null,$instructions=null)
+{
common_element_start('p');
common_element('label', array('for' => $id), $label);
$attrs = array('name' => $id,
@@ -418,7 +436,8 @@ function common_checkbox($id, $label, $checked=false, $instructions=null, $value
common_element_end('p');
}
-function common_dropdown($id, $label, $content, $instructions=null, $blank_select=FALSE, $selected=null) {
+function common_dropdown($id, $label, $content, $instructions=null, $blank_select=FALSE, $selected=null)
+{
common_element_start('p');
common_element('label', array('for' => $id), $label);
common_element_start('select', array('id' => $id, 'name' => $id));
@@ -438,14 +457,16 @@ function common_dropdown($id, $label, $content, $instructions=null, $blank_selec
}
common_element_end('p');
}
-function common_hidden($id, $value) {
+function common_hidden($id, $value)
+{
common_element('input', array('name' => $id,
'type' => 'hidden',
'id' => $id,
'value' => $value));
}
-function common_password($id, $label, $instructions=null) {
+function common_password($id, $label, $instructions=null)
+{
common_element_start('p');
common_element('label', array('for' => $id), $label);
$attrs = array('name' => $id,
@@ -459,7 +480,8 @@ function common_password($id, $label, $instructions=null) {
common_element_end('p');
}
-function common_submit($id, $label, $cls='submit') {
+function common_submit($id, $label, $cls='submit')
+{
global $xw;
common_element_start('p');
common_element('input', array('type' => 'submit',
@@ -470,7 +492,8 @@ function common_submit($id, $label, $cls='submit') {
common_element_end('p');
}
-function common_textarea($id, $label, $content=null, $instructions=null) {
+function common_textarea($id, $label, $content=null, $instructions=null)
+{
common_element_start('p');
common_element('label', array('for' => $id), $label);
common_element('textarea', array('rows' => 3,
@@ -484,7 +507,8 @@ function common_textarea($id, $label, $content=null, $instructions=null) {
common_element_end('p');
}
-function common_timezone() {
+function common_timezone()
+{
if (common_logged_in()) {
$user = common_current_user();
if ($user->timezone) {
@@ -496,7 +520,8 @@ function common_timezone() {
return $config['site']['timezone'];
}
-function common_language() {
+function common_language()
+{
// If there is a user logged in and they've set a language preference
// then return that one...
@@ -521,12 +546,14 @@ function common_language() {
}
// salted, hashed passwords are stored in the DB
-function common_munge_password($password, $id) {
+function common_munge_password($password, $id)
+{
return md5($password . $id);
}
// check if a username exists and has matching password
-function common_check_user($nickname, $password) {
+function common_check_user($nickname, $password)
+{
// NEVER allow blank passwords, even if they match the DB
if (mb_strlen($password) == 0) {
return false;
@@ -545,15 +572,18 @@ function common_check_user($nickname, $password) {
}
// is the current user logged in?
-function common_logged_in() {
+function common_logged_in()
+{
return (!is_null(common_current_user()));
}
-function common_have_session() {
+function common_have_session()
+{
return (0 != strcmp(session_id(), ''));
}
-function common_ensure_session() {
+function common_ensure_session()
+{
if (!common_have_session()) {
@session_start();
}
@@ -568,7 +598,8 @@ function common_ensure_session() {
$_cur = false;
-function common_set_user($user) {
+function common_set_user($user)
+{
global $_cur;
@@ -592,7 +623,8 @@ function common_set_user($user) {
return false;
}
-function common_set_cookie($key, $value, $expiration=0) {
+function common_set_cookie($key, $value, $expiration=0)
+{
$path = common_config('site', 'path');
$server = common_config('site', 'server');
@@ -611,7 +643,8 @@ function common_set_cookie($key, $value, $expiration=0) {
define('REMEMBERME', 'rememberme');
define('REMEMBERME_EXPIRY', 30 * 24 * 60 * 60); // 30 days
-function common_rememberme($user=null) {
+function common_rememberme($user=null)
+{
if (!$user) {
$user = common_current_user();
if (!$user) {
@@ -650,7 +683,8 @@ function common_rememberme($user=null) {
return true;
}
-function common_remembered_user() {
+function common_remembered_user()
+{
$user = null;
@@ -715,12 +749,14 @@ function common_remembered_user() {
// must be called with a valid user!
-function common_forgetme() {
+function common_forgetme()
+{
common_set_cookie(REMEMBERME, '', 0);
}
// who is the current user?
-function common_current_user() {
+function common_current_user()
+{
global $_cur;
if ($_cur === false) {
@@ -752,23 +788,27 @@ function common_current_user() {
// cookie-stealing. So, we don't let them do certain things. New reg,
// OpenID, and password logins _are_ real.
-function common_real_login($real=true) {
+function common_real_login($real=true)
+{
common_ensure_session();
$_SESSION['real_login'] = $real;
}
-function common_is_real_login() {
+function common_is_real_login()
+{
return common_logged_in() && $_SESSION['real_login'];
}
// get canonical version of nickname for comparison
-function common_canonical_nickname($nickname) {
+function common_canonical_nickname($nickname)
+{
// XXX: UTF-8 canonicalization (like combining chars)
return strtolower($nickname);
}
// get canonical version of email for comparison
-function common_canonical_email($email) {
+function common_canonical_email($email)
+{
// XXX: canonicalize UTF-8
// XXX: lcase the domain part
return $email;
@@ -776,7 +816,8 @@ function common_canonical_email($email) {
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) {
+function common_render_content($text, $notice)
+{
$r = common_render_text($text);
$id = $notice->profile_id;
$r = preg_replace('/(^|\s+)@([A-Za-z0-9]{1,64})/e', "'\\1@'.common_at_link($id, '\\2')", $r);
@@ -785,7 +826,8 @@ function common_render_content($text, $notice) {
return $r;
}
-function common_render_text($text) {
+function common_render_text($text)
+{
$r = htmlspecialchars($text);
$r = preg_replace('/[\x{0}-\x{8}\x{b}-\x{c}\x{e}-\x{19}]/', '', $r);
@@ -795,7 +837,8 @@ function common_render_text($text) {
return $r;
}
-function common_render_uri_thingy($matches) {
+function common_render_uri_thingy($matches)
+{
$uri = $matches[0];
$trailer = '';
@@ -829,20 +872,23 @@ function common_render_uri_thingy($matches) {
return '<a href="' . $uri . '"' . $title . ' class="extlink">' . $uri . '</a>' . $trailer;
}
-function common_longurl($short_url) {
+function common_longurl($short_url)
+{
$long_url = common_shorten_link($short_url, true);
if ($long_url === $short_url) return false;
return $long_url;
}
-function common_longurl2($uri) {
+function common_longurl2($uri)
+{
$uri_e = urlencode($uri);
$longurl = unserialize(file_get_contents("http://api.longurl.org/v1/expand?format=php&url=$uri_e"));
if (empty($longurl['long_url']) || $uri === $longurl['long_url']) return false;
return stripslashes($longurl['long_url']);
}
-function common_shorten_links($text) {
+function common_shorten_links($text)
+{
if (mb_strlen($text) <= 140) return $text;
static $cache = array();
if (isset($cache[$text])) return $cache[$text];
@@ -850,7 +896,8 @@ function common_shorten_links($text) {
return $cache[$text] = preg_replace('@https?://[^)\]>\s]+@e', "common_shorten_link('\\0')", $text);
}
-function common_shorten_link($url, $reverse = false) {
+function common_shorten_link($url, $reverse = false)
+{
static $url_cache = array();
if ($reverse) return isset($url_cache[$url]) ? $url_cache[$url] : $url;
@@ -911,28 +958,33 @@ function common_shorten_link($url, $reverse = false) {
return $url;
}
-function common_xml_safe_str($str) {
+function common_xml_safe_str($str)
+{
$xmlStr = htmlentities(iconv('UTF-8', 'UTF-8//IGNORE', $str), ENT_NOQUOTES, 'UTF-8');
// Replace control, formatting, and surrogate characters with '*', ala Twitter
return preg_replace('/[\p{Cc}\p{Cf}\p{Cs}]/u', '*', $str);
}
-function common_tag_link($tag) {
+function common_tag_link($tag)
+{
$canonical = common_canonical_tag($tag);
$url = common_local_url('tag', array('tag' => $canonical));
return '<a href="' . htmlspecialchars($url) . '" rel="tag" class="hashlink">' . htmlspecialchars($tag) . '</a>';
}
-function common_canonical_tag($tag) {
+function common_canonical_tag($tag)
+{
return strtolower(str_replace(array('-', '_', '.'), '', $tag));
}
-function common_valid_profile_tag($str) {
+function common_valid_profile_tag($str)
+{
return preg_match('/^[A-Za-z0-9_\-\.]{1,64}$/', $str);
}
-function common_at_link($sender_id, $nickname) {
+function common_at_link($sender_id, $nickname)
+{
$sender = Profile::staticGet($sender_id);
$recipient = common_relative_profile($sender, common_canonical_nickname($nickname));
if ($recipient) {
@@ -942,7 +994,8 @@ function common_at_link($sender_id, $nickname) {
}
}
-function common_at_hash_link($sender_id, $tag) {
+function common_at_hash_link($sender_id, $tag)
+{
$user = User::staticGet($sender_id);
if (!$user) {
return $tag;
@@ -958,7 +1011,8 @@ function common_at_hash_link($sender_id, $tag) {
}
}
-function common_relative_profile($sender, $nickname, $dt=null) {
+function common_relative_profile($sender, $nickname, $dt=null)
+{
// Try to find profiles this profile is subscribed to that have this nickname
$recipient = new Profile();
// XXX: use a join instead of a subquery
@@ -995,7 +1049,8 @@ function common_relative_profile($sender, $nickname, $dt=null) {
// where should the avatar go for this user?
-function common_avatar_filename($id, $extension, $size=null, $extra=null) {
+function common_avatar_filename($id, $extension, $size=null, $extra=null)
+{
global $config;
if ($size) {
@@ -1005,16 +1060,19 @@ function common_avatar_filename($id, $extension, $size=null, $extra=null) {
}
}
-function common_avatar_path($filename) {
+function common_avatar_path($filename)
+{
global $config;
return INSTALLDIR . '/avatar/' . $filename;
}
-function common_avatar_url($filename) {
+function common_avatar_url($filename)
+{
return common_path('avatar/'.$filename);
}
-function common_avatar_display_url($avatar) {
+function common_avatar_display_url($avatar)
+{
$server = common_config('avatar', 'server');
if ($server) {
return 'http://'.$server.'/'.$avatar->filename;
@@ -1023,14 +1081,16 @@ function common_avatar_display_url($avatar) {
}
}
-function common_default_avatar($size) {
+function common_default_avatar($size)
+{
static $sizenames = array(AVATAR_PROFILE_SIZE => 'profile',
AVATAR_STREAM_SIZE => 'stream',
AVATAR_MINI_SIZE => 'mini');
return theme_path('default-avatar-'.$sizenames[$size].'.png');
}
-function common_local_url($action, $args=null, $fragment=null) {
+function common_local_url($action, $args=null, $fragment=null)
+{
$url = null;
if (common_config('site','fancy')) {
$url = common_fancy_url($action, $args);
@@ -1043,7 +1103,8 @@ function common_local_url($action, $args=null, $fragment=null) {
return $url;
}
-function common_fancy_url($action, $args=null) {
+function common_fancy_url($action, $args=null)
+{
switch (strtolower($action)) {
case 'public':
if ($args && isset($args['page'])) {
@@ -1256,7 +1317,8 @@ function common_fancy_url($action, $args=null) {
}
}
-function common_simple_url($action, $args=null) {
+function common_simple_url($action, $args=null)
+{
global $config;
/* XXX: pretty URLs */
$extra = '';
@@ -1268,13 +1330,15 @@ function common_simple_url($action, $args=null) {
return common_path("index.php?action=${action}${extra}");
}
-function common_path($relative) {
+function common_path($relative)
+{
global $config;
$pathpart = ($config['site']['path']) ? $config['site']['path']."/" : '';
return "http://".$config['site']['server'].'/'.$pathpart.$relative;
}
-function common_date_string($dt) {
+function common_date_string($dt)
+{
// XXX: do some sexy date formatting
// return date(DATE_RFC822, $dt);
$t = strtotime($dt);
@@ -1308,7 +1372,8 @@ function common_date_string($dt) {
}
}
-function common_exact_date($dt) {
+function common_exact_date($dt)
+{
static $_utc;
static $_siteTz;
@@ -1323,32 +1388,37 @@ function common_exact_date($dt) {
return $d->format(DATE_RFC850);
}
-function common_date_w3dtf($dt) {
+function common_date_w3dtf($dt)
+{
$dateStr = date('d F Y H:i:s', strtotime($dt));
$d = new DateTime($dateStr, new DateTimeZone('UTC'));
$d->setTimezone(new DateTimeZone(common_timezone()));
return $d->format(DATE_W3C);
}
-function common_date_rfc2822($dt) {
+function common_date_rfc2822($dt)
+{
$dateStr = date('d F Y H:i:s', strtotime($dt));
$d = new DateTime($dateStr, new DateTimeZone('UTC'));
$d->setTimezone(new DateTimeZone(common_timezone()));
return $d->format('r');
}
-function common_date_iso8601($dt) {
+function common_date_iso8601($dt)
+{
$dateStr = date('d F Y H:i:s', strtotime($dt));
$d = new DateTime($dateStr, new DateTimeZone('UTC'));
$d->setTimezone(new DateTimeZone(common_timezone()));
return $d->format('c');
}
-function common_sql_now() {
+function common_sql_now()
+{
return strftime('%Y-%m-%d %H:%M:%S', time());
}
-function common_redirect($url, $code=307) {
+function common_redirect($url, $code=307)
+{
static $status = array(301 => "Moved Permanently",
302 => "Found",
303 => "See Other",
@@ -1364,7 +1434,8 @@ function common_redirect($url, $code=307) {
exit;
}
-function common_save_replies($notice) {
+function common_save_replies($notice)
+{
// Alternative reply format
$tname = false;
if (preg_match('/^T ([A-Z0-9]{1,64}) /', $notice->content, $match)) {
@@ -1447,7 +1518,8 @@ function common_save_replies($notice) {
}
}
-function common_broadcast_notice($notice, $remote=false) {
+function common_broadcast_notice($notice, $remote=false)
+{
// Check to see if notice should go to Twitter
$flink = Foreign_link::getByUserID($notice->profile_id, 1); // 1 == Twitter
@@ -1474,7 +1546,8 @@ function common_broadcast_notice($notice, $remote=false) {
}
}
-function common_twitter_broadcast($notice, $flink) {
+function common_twitter_broadcast($notice, $flink)
+{
global $config;
$success = true;
$fuser = $flink->getForeignUser();
@@ -1534,7 +1607,8 @@ function common_twitter_broadcast($notice, $flink) {
// Stick the notice on the queue
-function common_enqueue_notice($notice) {
+function common_enqueue_notice($notice)
+{
foreach (array('jabber', 'omb', 'sms', 'public') as $transport) {
$qi = new Queue_item();
$qi->notice_id = $notice->id;
@@ -1551,7 +1625,8 @@ function common_enqueue_notice($notice) {
return $result;
}
-function common_dequeue_notice($notice) {
+function common_dequeue_notice($notice)
+{
$qi = Queue_item::staticGet($notice->id);
if ($qi) {
$result = $qi->delete();
@@ -1567,7 +1642,8 @@ function common_dequeue_notice($notice) {
}
}
-function common_real_broadcast($notice, $remote=false) {
+function common_real_broadcast($notice, $remote=false)
+{
$success = true;
if (!$remote) {
// Make sure we have the OMB stuff
@@ -1601,7 +1677,8 @@ function common_real_broadcast($notice, $remote=false) {
return $success;
}
-function common_broadcast_profile($profile) {
+function common_broadcast_profile($profile)
+{
// XXX: optionally use a queue system like http://code.google.com/p/microapps/wiki/NQDQ
require_once(INSTALLDIR.'/lib/omb.php');
omb_broadcast_profile($profile);
@@ -1609,13 +1686,15 @@ function common_broadcast_profile($profile) {
return true;
}
-function common_profile_url($nickname) {
+function common_profile_url($nickname)
+{
return common_local_url('showstream', array('nickname' => $nickname));
}
// Don't call if nobody's logged in
-function common_notice_form($action=null, $content=null) {
+function common_notice_form($action=null, $content=null)
+{
$user = common_current_user();
assert(!is_null($user));
common_element_start('form', array('id' => 'status_form',
@@ -1647,14 +1726,16 @@ function common_notice_form($action=null, $content=null) {
// Should make up a reasonable root URL
-function common_root_url() {
+function common_root_url()
+{
return common_path('');
}
// returns $bytes bytes of random data as a hexadecimal string
// "good" here is a goal and not a guarantee
-function common_good_rand($bytes) {
+function common_good_rand($bytes)
+{
// XXX: use random.org...?
if (file_exists('/dev/urandom')) {
return common_urandom($bytes);
@@ -1663,7 +1744,8 @@ function common_good_rand($bytes) {
}
}
-function common_urandom($bytes) {
+function common_urandom($bytes)
+{
$h = fopen('/dev/urandom', 'rb');
// should not block
$src = fread($h, $bytes);
@@ -1675,7 +1757,8 @@ function common_urandom($bytes) {
return $enc;
}
-function common_mtrand($bytes) {
+function common_mtrand($bytes)
+{
$enc = '';
for ($i = 0; $i < $bytes; $i++) {
$enc .= sprintf("%02x", mt_rand(0, 255));
@@ -1683,21 +1766,25 @@ function common_mtrand($bytes) {
return $enc;
}
-function common_set_returnto($url) {
+function common_set_returnto($url)
+{
common_ensure_session();
$_SESSION['returnto'] = $url;
}
-function common_get_returnto() {
+function common_get_returnto()
+{
common_ensure_session();
return $_SESSION['returnto'];
}
-function common_timestamp() {
+function common_timestamp()
+{
return date('YmdHis');
}
-function common_ensure_syslog() {
+function common_ensure_syslog()
+{
static $initialized = false;
if (!$initialized) {
global $config;
@@ -1706,7 +1793,8 @@ function common_ensure_syslog() {
}
}
-function common_log($priority, $msg, $filename=null) {
+function common_log($priority, $msg, $filename=null)
+{
$logfile = common_config('site', 'logfile');
if ($logfile) {
$log = fopen($logfile, "a");
@@ -1723,7 +1811,8 @@ function common_log($priority, $msg, $filename=null) {
}
}
-function common_debug($msg, $filename=null) {
+function common_debug($msg, $filename=null)
+{
if ($filename) {
common_log(LOG_DEBUG, basename($filename).' - '.$msg);
} else {
@@ -1731,13 +1820,15 @@ function common_debug($msg, $filename=null) {
}
}
-function common_log_db_error(&$object, $verb, $filename=null) {
+function common_log_db_error(&$object, $verb, $filename=null)
+{
$objstr = common_log_objstring($object);
$last_error = &PEAR::getStaticProperty('DB_DataObject','lastError');
common_log(LOG_ERR, $last_error->message . '(' . $verb . ' on ' . $objstr . ')', $filename);
}
-function common_log_objstring(&$object) {
+function common_log_objstring(&$object)
+{
if (is_null($object)) {
return "null";
}
@@ -1750,11 +1841,13 @@ function common_log_objstring(&$object) {
return $objstring;
}
-function common_valid_http_url($url) {
+function common_valid_http_url($url)
+{
return Validate::uri($url, array('allowed_schemes' => array('http', 'https')));
}
-function common_valid_tag($tag) {
+function common_valid_tag($tag)
+{
if (preg_match('/^tag:(.*?),(\d{4}(-\d{2}(-\d{2})?)?):(.*)$/', $tag, $matches)) {
return (Validate::email($matches[1]) ||
preg_match('/^([\w-\.]+)$/', $matches[1]));
@@ -1764,7 +1857,8 @@ function common_valid_tag($tag) {
// Does a little before-after block for next/prev page
-function common_pagination($have_before, $have_after, $page, $action, $args=null) {
+function common_pagination($have_before, $have_after, $page, $action, $args=null)
+{
if ($have_before || $have_after) {
common_element_start('div', array('id' => 'pagination'));
@@ -1799,7 +1893,8 @@ function common_pagination($have_before, $have_after, $page, $action, $args=null
/* Following functions are copied from MediaWiki GlobalFunctions.php
* and written by Evan Prodromou. */
-function common_accept_to_prefs($accept, $def = '*/*') {
+function common_accept_to_prefs($accept, $def = '*/*')
+{
// No arg means accept anything (per HTTP spec)
if(!$accept) {
return array($def => 1);
@@ -1823,7 +1918,8 @@ function common_accept_to_prefs($accept, $def = '*/*') {
return $prefs;
}
-function common_mime_type_match($type, $avail) {
+function common_mime_type_match($type, $avail)
+{
if(array_key_exists($type, $avail)) {
return $type;
} else {
@@ -1838,7 +1934,8 @@ function common_mime_type_match($type, $avail) {
}
}
-function common_negotiate_type($cprefs, $sprefs) {
+function common_negotiate_type($cprefs, $sprefs)
+{
$combine = array();
foreach(array_keys($sprefs) as $type) {
@@ -1874,12 +1971,14 @@ function common_negotiate_type($cprefs, $sprefs) {
return $besttype;
}
-function common_config($main, $sub) {
+function common_config($main, $sub)
+{
global $config;
return isset($config[$main][$sub]) ? $config[$main][$sub] : false;
}
-function common_copy_args($from) {
+function common_copy_args($from)
+{
$to = array();
$strip = get_magic_quotes_gpc();
foreach ($from as $k => $v) {
@@ -1890,25 +1989,29 @@ function common_copy_args($from) {
// Neutralise the evil effects of magic_quotes_gpc in the current request.
// This is used before handing a request off to OAuthRequest::from_request.
-function common_remove_magic_from_request() {
+function common_remove_magic_from_request()
+{
if(get_magic_quotes_gpc()) {
$_POST=array_map('stripslashes',$_POST);
$_GET=array_map('stripslashes',$_GET);
}
}
-function common_user_uri(&$user) {
+function common_user_uri(&$user)
+{
return common_local_url('userbyid', array('id' => $user->id));
}
-function common_notice_uri(&$notice) {
+function common_notice_uri(&$notice)
+{
return common_local_url('shownotice',
array('notice' => $notice->id));
}
// 36 alphanums - lookalikes (0, O, 1, I) = 32 chars = 5 bits
-function common_confirmation_code($bits) {
+function common_confirmation_code($bits)
+{
// 36 alphanums - lookalikes (0, O, 1, I) = 32 chars = 5 bits
static $codechars = '23456789ABCDEFGHJKLMNPQRSTUVWXYZ';
$chars = ceil($bits/5);
@@ -1925,14 +2028,16 @@ function common_confirmation_code($bits) {
// convert markup to HTML
-function common_markup_to_html($c) {
+function common_markup_to_html($c)
+{
$c = preg_replace('/%%action.(\w+)%%/e', "common_local_url('\\1')", $c);
$c = preg_replace('/%%doc.(\w+)%%/e', "common_local_url('doc', array('title'=>'\\1'))", $c);
$c = preg_replace('/%%(\w+).(\w+)%%/e', 'common_config(\'\\1\', \'\\2\')', $c);
return Markdown($c);
}
-function common_profile_avatar_url($profile, $size=AVATAR_PROFILE_SIZE) {
+function common_profile_avatar_url($profile, $size=AVATAR_PROFILE_SIZE)
+{
$avatar = $profile->getAvatar($size);
if ($avatar) {
return common_avatar_display_url($avatar);
@@ -1941,7 +2046,8 @@ function common_profile_avatar_url($profile, $size=AVATAR_PROFILE_SIZE) {
}
}
-function common_profile_uri($profile) {
+function common_profile_uri($profile)
+{
if (!$profile) {
return null;
}
@@ -1958,13 +2064,15 @@ function common_profile_uri($profile) {
return null;
}
-function common_canonical_sms($sms) {
+function common_canonical_sms($sms)
+{
// strip non-digits
preg_replace('/\D/', '', $sms);
return $sms;
}
-function common_error_handler($errno, $errstr, $errfile, $errline, $errcontext) {
+function common_error_handler($errno, $errstr, $errfile, $errline, $errcontext)
+{
switch ($errno) {
case E_USER_ERROR:
common_log(LOG_ERR, "[$errno] $errstr ($errfile:$errline)");
@@ -1985,7 +2093,8 @@ function common_error_handler($errno, $errstr, $errfile, $errline, $errcontext)
return true;
}
-function common_session_token() {
+function common_session_token()
+{
common_ensure_session();
if (!array_key_exists('token', $_SESSION)) {
$_SESSION['token'] = common_good_rand(64);
@@ -1993,7 +2102,8 @@ function common_session_token() {
return $_SESSION['token'];
}
-function common_disfavor_form($notice) {
+function common_disfavor_form($notice)
+{
common_element_start('form', array('id' => 'disfavor-' . $notice->id,
'method' => 'post',
'class' => 'disfavor',
@@ -2020,7 +2130,8 @@ function common_disfavor_form($notice) {
common_element_end('form');
}
-function common_favor_form($notice) {
+function common_favor_form($notice)
+{
common_element_start('form', array('id' => 'favor-' . $notice->id,
'method' => 'post',
'class' => 'favor',
@@ -2047,7 +2158,8 @@ function common_favor_form($notice) {
common_element_end('form');
}
-function common_nudge_form($profile) {
+function common_nudge_form($profile)
+{
common_element_start('form', array('id' => 'nudge', 'method' => 'post',
'action' => common_local_url('nudge', array('nickname' => $profile->nickname))));
common_hidden('token', common_session_token());
@@ -2056,11 +2168,13 @@ function common_nudge_form($profile) {
'value' => _('Send a nudge')));
common_element_end('form');
}
-function common_nudge_response() {
+function common_nudge_response()
+{
common_element('p', array('id' => 'nudge_response'), _('Nudge sent!'));
}
-function common_subscribe_form($profile) {
+function common_subscribe_form($profile)
+{
common_element_start('form', array('id' => 'subscribe-' . $profile->id,
'method' => 'post',
'class' => 'subscribe',
@@ -2076,7 +2190,8 @@ function common_subscribe_form($profile) {
common_element_end('form');
}
-function common_unsubscribe_form($profile) {
+function common_unsubscribe_form($profile)
+{
common_element_start('form', array('id' => 'unsubscribe-' . $profile->id,
'method' => 'post',
'class' => 'unsubscribe',
@@ -2093,7 +2208,8 @@ function common_unsubscribe_form($profile) {
}
// XXX: Refactor this code
-function common_profile_new_message_nudge ($cur, $profile) {
+function common_profile_new_message_nudge ($cur, $profile)
+{
$user = User::staticGet('id', $profile->id);
if ($cur && $cur->id != $user->id && $cur->mutuallySubscribed($user)) {
@@ -2110,17 +2226,20 @@ function common_profile_new_message_nudge ($cur, $profile) {
}
}
-function common_cache_key($extra) {
+function common_cache_key($extra)
+{
return 'laconica:' . common_keyize(common_config('site', 'name')) . ':' . $extra;
}
-function common_keyize($str) {
+function common_keyize($str)
+{
$str = strtolower($str);
$str = preg_replace('/\s/', '_', $str);
return $str;
}
-function common_message_form($content, $user, $to) {
+function common_message_form($content, $user, $to)
+{
common_element_start('form', array('id' => 'message_form',
'method' => 'post',
@@ -2160,7 +2279,8 @@ function common_message_form($content, $user, $to) {
common_element_end('form');
}
-function common_memcache() {
+function common_memcache()
+{
static $cache = null;
if (!common_config('memcached', 'enabled')) {
return null;
@@ -2180,22 +2300,26 @@ function common_memcache() {
}
}
-function common_compatible_license($from, $to) {
+function common_compatible_license($from, $to)
+{
// XXX: better compatibility check needed here!
return ($from == $to);
}
/* These are almost identical, so we use a helper function */
-function common_block_form($profile, $args=null) {
+function common_block_form($profile, $args=null)
+{
common_blocking_form('block', _('Block'), $profile, $args);
}
-function common_unblock_form($profile, $args=null) {
+function common_unblock_form($profile, $args=null)
+{
common_blocking_form('unblock', _('Unblock'), $profile, $args);
}
-function common_blocking_form($type, $label, $profile, $args=null) {
+function common_blocking_form($type, $label, $profile, $args=null)
+{
common_element_start('form', array('id' => $type . '-' . $profile->id,
'method' => 'post',
'class' => $type,