reformatting for phpcs in lib/util.php
darcs-hash:20081221003016-84dde-0e80268e95235462e069d4d1e6b949bc891ccdbd.gz
This commit is contained in:
parent
b8c0091390
commit
ee4db3d21c
@ -22,3 +22,5 @@ Sarven Capadisli <csarven@controlyourself.ca>**20081218003302
|
|||||||
Evan Prodromou <evan@prodromou.name>**20081212171135]
|
Evan Prodromou <evan@prodromou.name>**20081212171135]
|
||||||
[first step of phpcs-cleanup of index.php
|
[first step of phpcs-cleanup of index.php
|
||||||
Evan Prodromou <evan@prodromou.name>**20081221002332]
|
Evan Prodromou <evan@prodromou.name>**20081221002332]
|
||||||
|
[reformatting for phpcs in lib/util.php
|
||||||
|
Evan Prodromou <evan@prodromou.name>**20081221003016]
|
Binary file not shown.
@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
/* XXX: break up into separate modules (HTTP, HTML, user, files) */
|
/* XXX: break up into separate modules (HTTP, HTML, user, files) */
|
||||||
|
|
||||||
# Show a server error
|
// 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',
|
static $status = array(500 => 'Internal Server Error',
|
||||||
@ -43,7 +43,7 @@ function common_server_error($msg, $code=500) {
|
|||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
# Show a user error
|
// Show a user error
|
||||||
function common_user_error($msg, $code=400) {
|
function common_user_error($msg, $code=400) {
|
||||||
static $status = array(400 => 'Bad Request',
|
static $status = array(400 => 'Bad Request',
|
||||||
401 => 'Unauthorized',
|
401 => 'Unauthorized',
|
||||||
@ -79,8 +79,8 @@ function common_user_error($msg, $code=400) {
|
|||||||
|
|
||||||
$xw = null;
|
$xw = null;
|
||||||
|
|
||||||
# Start an HTML element
|
// Start an HTML element
|
||||||
function common_element_start($tag, $attrs=NULL) {
|
function common_element_start($tag, $attrs=null) {
|
||||||
global $xw;
|
global $xw;
|
||||||
$xw->startElement($tag);
|
$xw->startElement($tag);
|
||||||
if (is_array($attrs)) {
|
if (is_array($attrs)) {
|
||||||
@ -97,7 +97,7 @@ function common_element_end($tag) {
|
|||||||
'br', 'param', 'img', 'area',
|
'br', 'param', 'img', 'area',
|
||||||
'input', 'col');
|
'input', 'col');
|
||||||
global $xw;
|
global $xw;
|
||||||
# XXX: check namespace
|
// XXX: check namespace
|
||||||
if (in_array($tag, $empty_tag)) {
|
if (in_array($tag, $empty_tag)) {
|
||||||
$xw->endElement();
|
$xw->endElement();
|
||||||
} else {
|
} else {
|
||||||
@ -105,7 +105,7 @@ 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);
|
common_element_start($tag, $attrs);
|
||||||
global $xw;
|
global $xw;
|
||||||
if (!is_null($content)) {
|
if (!is_null($content)) {
|
||||||
@ -114,7 +114,7 @@ function common_element($tag, $attrs=NULL, $content=NULL) {
|
|||||||
common_element_end($tag);
|
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;
|
global $xw;
|
||||||
$xw = new XMLWriter();
|
$xw = new XMLWriter();
|
||||||
$xw->openURI('php://output');
|
$xw->openURI('php://output');
|
||||||
@ -147,7 +147,7 @@ function common_init_locale($language=null) {
|
|||||||
function common_init_language() {
|
function common_init_language() {
|
||||||
mb_internal_encoding('UTF-8');
|
mb_internal_encoding('UTF-8');
|
||||||
$language = common_language();
|
$language = common_language();
|
||||||
# So we don't have to make people install the gettext locales
|
// So we don't have to make people install the gettext locales
|
||||||
$locale_set = common_init_locale($language);
|
$locale_set = common_init_locale($language);
|
||||||
bindtextdomain("laconica", common_config('site','locale_path'));
|
bindtextdomain("laconica", common_config('site','locale_path'));
|
||||||
bind_textdomain_codeset("laconica", "UTF-8");
|
bind_textdomain_codeset("laconica", "UTF-8");
|
||||||
@ -160,7 +160,7 @@ function common_init_language() {
|
|||||||
|
|
||||||
define('PAGE_TYPE_PREFS', 'text/html,application/xhtml+xml,application/xml;q=0.3,text/xml;q=0.2');
|
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 $config, $xw;
|
||||||
global $action; /* XXX: kind of cheating here. */
|
global $action; /* XXX: kind of cheating here. */
|
||||||
@ -168,7 +168,7 @@ function common_show_header($pagetitle, $callable=NULL, $data=NULL, $headercall=
|
|||||||
common_start_html();
|
common_start_html();
|
||||||
|
|
||||||
common_element_start('head');
|
common_element_start('head');
|
||||||
common_element('title', NULL,
|
common_element('title', null,
|
||||||
$pagetitle . " - " . $config['site']['name']);
|
$pagetitle . " - " . $config['site']['name']);
|
||||||
common_element('link', array('rel' => 'stylesheet',
|
common_element('link', array('rel' => 'stylesheet',
|
||||||
'type' => 'text/css',
|
'type' => 'text/css',
|
||||||
@ -176,7 +176,7 @@ function common_show_header($pagetitle, $callable=NULL, $data=NULL, $headercall=
|
|||||||
'media' => 'screen, projection, tv'));
|
'media' => 'screen, projection, tv'));
|
||||||
foreach (array(6,7) as $ver) {
|
foreach (array(6,7) as $ver) {
|
||||||
if (file_exists(theme_file('ie'.$ver.'.css'))) {
|
if (file_exists(theme_file('ie'.$ver.'.css'))) {
|
||||||
# Yes, IE people should be put in jail.
|
// Yes, IE people should be put in jail.
|
||||||
$xw->writeComment('[if lte IE '.$ver.']><link rel="stylesheet" type="text/css" '.
|
$xw->writeComment('[if lte IE '.$ver.']><link rel="stylesheet" type="text/css" '.
|
||||||
'href="'.theme_path('ie'.$ver.'.css').'?version='.LACONICA_VERSION.'" /><![endif]');
|
'href="'.theme_path('ie'.$ver.'.css').'?version='.LACONICA_VERSION.'" /><![endif]');
|
||||||
}
|
}
|
||||||
@ -243,12 +243,12 @@ function common_show_header($pagetitle, $callable=NULL, $data=NULL, $headercall=
|
|||||||
common_element_start('div', array('id' => 'content'));
|
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) {
|
if (!$type) {
|
||||||
$httpaccept = isset($_SERVER['HTTP_ACCEPT']) ? $_SERVER['HTTP_ACCEPT'] : NULL;
|
$httpaccept = isset($_SERVER['HTTP_ACCEPT']) ? $_SERVER['HTTP_ACCEPT'] : null;
|
||||||
|
|
||||||
# XXX: allow content negotiation for RDF, RSS, or XRDS
|
// XXX: allow content negotiation for RDF, RSS, or XRDS
|
||||||
|
|
||||||
$type = common_negotiate_type(common_accept_to_prefs($httpaccept),
|
$type = common_negotiate_type(common_accept_to_prefs($httpaccept),
|
||||||
common_accept_to_prefs(PAGE_TYPE_PREFS));
|
common_accept_to_prefs(PAGE_TYPE_PREFS));
|
||||||
@ -265,7 +265,7 @@ function common_start_html($type=NULL, $indent=true) {
|
|||||||
'-//W3C//DTD XHTML 1.0 Strict//EN',
|
'-//W3C//DTD XHTML 1.0 Strict//EN',
|
||||||
'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd', $indent);
|
'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd', $indent);
|
||||||
|
|
||||||
# FIXME: correct language for interface
|
// FIXME: correct language for interface
|
||||||
|
|
||||||
$language = common_language();
|
$language = common_language();
|
||||||
|
|
||||||
@ -276,7 +276,7 @@ function common_start_html($type=NULL, $indent=true) {
|
|||||||
|
|
||||||
function common_show_footer() {
|
function common_show_footer() {
|
||||||
global $xw, $config;
|
global $xw, $config;
|
||||||
common_element_end('div'); # content div
|
common_element_end('div'); // content div
|
||||||
common_foot_menu();
|
common_foot_menu();
|
||||||
common_element_start('div', array('id' => 'footer'));
|
common_element_start('div', array('id' => 'footer'));
|
||||||
common_element_start('div', 'laconica');
|
common_element_start('div', 'laconica');
|
||||||
@ -361,7 +361,7 @@ function common_foot_menu() {
|
|||||||
common_element_end('ul');
|
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();
|
$lattrs = array();
|
||||||
if ($is_selected) {
|
if ($is_selected) {
|
||||||
$lattrs['class'] = 'current';
|
$lattrs['class'] = 'current';
|
||||||
@ -375,7 +375,7 @@ function common_menu_item($url, $text, $title=NULL, $is_selected=false) {
|
|||||||
common_element_end('li');
|
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_start('p');
|
||||||
common_element('label', array('for' => $id), $label);
|
common_element('label', array('for' => $id), $label);
|
||||||
$attrs = array('name' => $id,
|
$attrs = array('name' => $id,
|
||||||
@ -392,7 +392,7 @@ function common_input($id, $label, $value=NULL,$instructions=NULL) {
|
|||||||
common_element_end('p');
|
common_element_end('p');
|
||||||
}
|
}
|
||||||
|
|
||||||
function common_checkbox($id, $label, $checked=false, $instructions=NULL, $value='true', $disabled=false)
|
function common_checkbox($id, $label, $checked=false, $instructions=null, $value='true', $disabled=false)
|
||||||
{
|
{
|
||||||
common_element_start('p');
|
common_element_start('p');
|
||||||
$attrs = array('name' => $id,
|
$attrs = array('name' => $id,
|
||||||
@ -418,7 +418,7 @@ function common_checkbox($id, $label, $checked=false, $instructions=NULL, $value
|
|||||||
common_element_end('p');
|
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_start('p');
|
||||||
common_element('label', array('for' => $id), $label);
|
common_element('label', array('for' => $id), $label);
|
||||||
common_element_start('select', array('id' => $id, 'name' => $id));
|
common_element_start('select', array('id' => $id, 'name' => $id));
|
||||||
@ -445,7 +445,7 @@ function common_hidden($id, $value) {
|
|||||||
'value' => $value));
|
'value' => $value));
|
||||||
}
|
}
|
||||||
|
|
||||||
function common_password($id, $label, $instructions=NULL) {
|
function common_password($id, $label, $instructions=null) {
|
||||||
common_element_start('p');
|
common_element_start('p');
|
||||||
common_element('label', array('for' => $id), $label);
|
common_element('label', array('for' => $id), $label);
|
||||||
$attrs = array('name' => $id,
|
$attrs = array('name' => $id,
|
||||||
@ -470,7 +470,7 @@ function common_submit($id, $label, $cls='submit') {
|
|||||||
common_element_end('p');
|
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_start('p');
|
||||||
common_element('label', array('for' => $id), $label);
|
common_element('label', array('for' => $id), $label);
|
||||||
common_element('textarea', array('rows' => 3,
|
common_element('textarea', array('rows' => 3,
|
||||||
@ -509,7 +509,7 @@ function common_language() {
|
|||||||
|
|
||||||
// Otherwise, find the best match for the languages requested by the
|
// Otherwise, find the best match for the languages requested by the
|
||||||
// user's browser...
|
// user's browser...
|
||||||
$httplang = isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? $_SERVER['HTTP_ACCEPT_LANGUAGE'] : NULL;
|
$httplang = isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? $_SERVER['HTTP_ACCEPT_LANGUAGE'] : null;
|
||||||
if (!empty($httplang)) {
|
if (!empty($httplang)) {
|
||||||
$language = client_prefered_language($httplang);
|
$language = client_prefered_language($httplang);
|
||||||
if ($language)
|
if ($language)
|
||||||
@ -519,15 +519,15 @@ function common_language() {
|
|||||||
// Finally, if none of the above worked, use the site's default...
|
// Finally, if none of the above worked, use the site's default...
|
||||||
return common_config('site', 'language');
|
return common_config('site', 'language');
|
||||||
}
|
}
|
||||||
# salted, hashed passwords are stored in the DB
|
// salted, hashed passwords are stored in the DB
|
||||||
|
|
||||||
function common_munge_password($password, $id) {
|
function common_munge_password($password, $id) {
|
||||||
return md5($password . $id);
|
return md5($password . $id);
|
||||||
}
|
}
|
||||||
|
|
||||||
# check if a username exists and has matching password
|
// 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
|
// NEVER allow blank passwords, even if they match the DB
|
||||||
if (mb_strlen($password) == 0) {
|
if (mb_strlen($password) == 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -544,7 +544,7 @@ function common_check_user($nickname, $password) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# is the current user logged in?
|
// is the current user logged in?
|
||||||
function common_logged_in() {
|
function common_logged_in() {
|
||||||
return (!is_null(common_current_user()));
|
return (!is_null(common_current_user()));
|
||||||
}
|
}
|
||||||
@ -559,12 +559,12 @@ function common_ensure_session() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Three kinds of arguments:
|
// Three kinds of arguments:
|
||||||
# 1) a user object
|
// 1) a user object
|
||||||
# 2) a nickname
|
// 2) a nickname
|
||||||
# 3) NULL to clear
|
// 3) null to clear
|
||||||
|
|
||||||
# Initialize to false; set to NULL if none found
|
// Initialize to false; set to null if none found
|
||||||
|
|
||||||
$_cur = false;
|
$_cur = false;
|
||||||
|
|
||||||
@ -573,7 +573,7 @@ function common_set_user($user) {
|
|||||||
global $_cur;
|
global $_cur;
|
||||||
|
|
||||||
if (is_null($user) && common_have_session()) {
|
if (is_null($user) && common_have_session()) {
|
||||||
$_cur = NULL;
|
$_cur = null;
|
||||||
unset($_SESSION['userid']);
|
unset($_SESSION['userid']);
|
||||||
return true;
|
return true;
|
||||||
} else if (is_string($user)) {
|
} else if (is_string($user)) {
|
||||||
@ -609,9 +609,9 @@ function common_set_cookie($key, $value, $expiration=0) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
define('REMEMBERME', 'rememberme');
|
define('REMEMBERME', 'rememberme');
|
||||||
define('REMEMBERME_EXPIRY', 30 * 24 * 60 * 60); # 30 days
|
define('REMEMBERME_EXPIRY', 30 * 24 * 60 * 60); // 30 days
|
||||||
|
|
||||||
function common_rememberme($user=NULL) {
|
function common_rememberme($user=null) {
|
||||||
if (!$user) {
|
if (!$user) {
|
||||||
$user = common_current_user();
|
$user = common_current_user();
|
||||||
if (!$user) {
|
if (!$user) {
|
||||||
@ -625,7 +625,7 @@ function common_rememberme($user=NULL) {
|
|||||||
$rm->code = common_good_rand(16);
|
$rm->code = common_good_rand(16);
|
||||||
$rm->user_id = $user->id;
|
$rm->user_id = $user->id;
|
||||||
|
|
||||||
# Wrap the insert in some good ol' fashioned transaction code
|
// Wrap the insert in some good ol' fashioned transaction code
|
||||||
|
|
||||||
$rm->query('BEGIN');
|
$rm->query('BEGIN');
|
||||||
|
|
||||||
@ -652,12 +652,12 @@ function common_rememberme($user=NULL) {
|
|||||||
|
|
||||||
function common_remembered_user() {
|
function common_remembered_user() {
|
||||||
|
|
||||||
$user = NULL;
|
$user = null;
|
||||||
|
|
||||||
$packed = isset($_COOKIE[REMEMBERME]) ? $_COOKIE[REMEMBERME] : NULL;
|
$packed = isset($_COOKIE[REMEMBERME]) ? $_COOKIE[REMEMBERME] : null;
|
||||||
|
|
||||||
if (!$packed) {
|
if (!$packed) {
|
||||||
return NULL;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
list($id, $code) = explode(':', $packed);
|
list($id, $code) = explode(':', $packed);
|
||||||
@ -665,7 +665,7 @@ function common_remembered_user() {
|
|||||||
if (!$id || !$code) {
|
if (!$id || !$code) {
|
||||||
common_log(LOG_WARNING, 'Malformed rememberme cookie: ' . $packed);
|
common_log(LOG_WARNING, 'Malformed rememberme cookie: ' . $packed);
|
||||||
common_forgetme();
|
common_forgetme();
|
||||||
return NULL;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
$rm = Remember_me::staticGet($code);
|
$rm = Remember_me::staticGet($code);
|
||||||
@ -673,13 +673,13 @@ function common_remembered_user() {
|
|||||||
if (!$rm) {
|
if (!$rm) {
|
||||||
common_log(LOG_WARNING, 'No such remember code: ' . $code);
|
common_log(LOG_WARNING, 'No such remember code: ' . $code);
|
||||||
common_forgetme();
|
common_forgetme();
|
||||||
return NULL;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($rm->user_id != $id) {
|
if ($rm->user_id != $id) {
|
||||||
common_log(LOG_WARNING, 'Rememberme code for wrong user: ' . $rm->user_id . ' != ' . $id);
|
common_log(LOG_WARNING, 'Rememberme code for wrong user: ' . $rm->user_id . ' != ' . $id);
|
||||||
common_forgetme();
|
common_forgetme();
|
||||||
return NULL;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
$user = User::staticGet($rm->user_id);
|
$user = User::staticGet($rm->user_id);
|
||||||
@ -687,17 +687,17 @@ function common_remembered_user() {
|
|||||||
if (!$user) {
|
if (!$user) {
|
||||||
common_log(LOG_WARNING, 'No such user for rememberme: ' . $rm->user_id);
|
common_log(LOG_WARNING, 'No such user for rememberme: ' . $rm->user_id);
|
||||||
common_forgetme();
|
common_forgetme();
|
||||||
return NULL;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
# successful!
|
// successful!
|
||||||
$result = $rm->delete();
|
$result = $rm->delete();
|
||||||
|
|
||||||
if (!$result) {
|
if (!$result) {
|
||||||
common_log_db_error($rm, 'DELETE', __FILE__);
|
common_log_db_error($rm, 'DELETE', __FILE__);
|
||||||
common_log(LOG_WARNING, 'Could not delete rememberme: ' . $code);
|
common_log(LOG_WARNING, 'Could not delete rememberme: ' . $code);
|
||||||
common_forgetme();
|
common_forgetme();
|
||||||
return NULL;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
common_log(LOG_INFO, 'logging in ' . $user->nickname . ' using rememberme code ' . $rm->code);
|
common_log(LOG_INFO, 'logging in ' . $user->nickname . ' using rememberme code ' . $rm->code);
|
||||||
@ -705,21 +705,21 @@ function common_remembered_user() {
|
|||||||
common_set_user($user);
|
common_set_user($user);
|
||||||
common_real_login(false);
|
common_real_login(false);
|
||||||
|
|
||||||
# We issue a new cookie, so they can log in
|
// We issue a new cookie, so they can log in
|
||||||
# automatically again after this session
|
// automatically again after this session
|
||||||
|
|
||||||
common_rememberme($user);
|
common_rememberme($user);
|
||||||
|
|
||||||
return $user;
|
return $user;
|
||||||
}
|
}
|
||||||
|
|
||||||
# must be called with a valid user!
|
// must be called with a valid user!
|
||||||
|
|
||||||
function common_forgetme() {
|
function common_forgetme() {
|
||||||
common_set_cookie(REMEMBERME, '', 0);
|
common_set_cookie(REMEMBERME, '', 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
# who is the current user?
|
// who is the current user?
|
||||||
function common_current_user() {
|
function common_current_user() {
|
||||||
global $_cur;
|
global $_cur;
|
||||||
|
|
||||||
@ -734,13 +734,13 @@ function common_current_user() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# that didn't work; try to remember; will init $_cur to NULL on failure
|
// that didn't work; try to remember; will init $_cur to null on failure
|
||||||
$_cur = common_remembered_user();
|
$_cur = common_remembered_user();
|
||||||
|
|
||||||
if ($_cur) {
|
if ($_cur) {
|
||||||
common_debug("Got User " . $_cur->nickname);
|
common_debug("Got User " . $_cur->nickname);
|
||||||
common_debug("Faking session on remembered user");
|
common_debug("Faking session on remembered user");
|
||||||
# XXX: Is this necessary?
|
// XXX: Is this necessary?
|
||||||
$_SESSION['userid'] = $_cur->id;
|
$_SESSION['userid'] = $_cur->id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -748,9 +748,9 @@ function common_current_user() {
|
|||||||
return $_cur;
|
return $_cur;
|
||||||
}
|
}
|
||||||
|
|
||||||
# Logins that are 'remembered' aren't 'real' -- they're subject to
|
// Logins that are 'remembered' aren't 'real' -- they're subject to
|
||||||
# cookie-stealing. So, we don't let them do certain things. New reg,
|
// cookie-stealing. So, we don't let them do certain things. New reg,
|
||||||
# OpenID, and password logins _are_ real.
|
// OpenID, and password logins _are_ real.
|
||||||
|
|
||||||
function common_real_login($real=true) {
|
function common_real_login($real=true) {
|
||||||
common_ensure_session();
|
common_ensure_session();
|
||||||
@ -761,16 +761,16 @@ function common_is_real_login() {
|
|||||||
return common_logged_in() && $_SESSION['real_login'];
|
return common_logged_in() && $_SESSION['real_login'];
|
||||||
}
|
}
|
||||||
|
|
||||||
# get canonical version of nickname for comparison
|
// get canonical version of nickname for comparison
|
||||||
function common_canonical_nickname($nickname) {
|
function common_canonical_nickname($nickname) {
|
||||||
# XXX: UTF-8 canonicalization (like combining chars)
|
// XXX: UTF-8 canonicalization (like combining chars)
|
||||||
return strtolower($nickname);
|
return strtolower($nickname);
|
||||||
}
|
}
|
||||||
|
|
||||||
# get canonical version of email for comparison
|
// get canonical version of email for comparison
|
||||||
function common_canonical_email($email) {
|
function common_canonical_email($email) {
|
||||||
# XXX: canonicalize UTF-8
|
// XXX: canonicalize UTF-8
|
||||||
# XXX: lcase the domain part
|
// XXX: lcase the domain part
|
||||||
return $email;
|
return $email;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -791,7 +791,7 @@ function common_render_text($text) {
|
|||||||
$r = preg_replace('/[\x{0}-\x{8}\x{b}-\x{c}\x{e}-\x{19}]/', '', $r);
|
$r = preg_replace('/[\x{0}-\x{8}\x{b}-\x{c}\x{e}-\x{19}]/', '', $r);
|
||||||
$r = preg_replace_callback('@https?://[^\]>\s]+@', 'common_render_uri_thingy', $r);
|
$r = preg_replace_callback('@https?://[^\]>\s]+@', 'common_render_uri_thingy', $r);
|
||||||
$r = preg_replace('/(^|\s+)#([A-Za-z0-9_\-\.]{1,64})/e', "'\\1#'.common_tag_link('\\2')", $r);
|
$r = preg_replace('/(^|\s+)#([A-Za-z0-9_\-\.]{1,64})/e', "'\\1#'.common_tag_link('\\2')", $r);
|
||||||
# XXX: machine tags
|
// XXX: machine tags
|
||||||
return $r;
|
return $r;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -799,16 +799,16 @@ function common_render_uri_thingy($matches) {
|
|||||||
$uri = $matches[0];
|
$uri = $matches[0];
|
||||||
$trailer = '';
|
$trailer = '';
|
||||||
|
|
||||||
# Some heuristics for extracting URIs from surrounding punctuation
|
// Some heuristics for extracting URIs from surrounding punctuation
|
||||||
# Strip from trailing text...
|
// Strip from trailing text...
|
||||||
if (preg_match('/^(.*)([,.:"\']+)$/', $uri, $matches)) {
|
if (preg_match('/^(.*)([,.:"\']+)$/', $uri, $matches)) {
|
||||||
$uri = $matches[1];
|
$uri = $matches[1];
|
||||||
$trailer = $matches[2];
|
$trailer = $matches[2];
|
||||||
}
|
}
|
||||||
|
|
||||||
$pairs = array(
|
$pairs = array(
|
||||||
']' => '[', # technically disallowed in URIs, but used in Java docs
|
']' => '[', // technically disallowed in URIs, but used in Java docs
|
||||||
')' => '(', # far too frequent in Wikipedia and MSDN
|
')' => '(', // far too frequent in Wikipedia and MSDN
|
||||||
);
|
);
|
||||||
$final = substr($uri, -1, 1);
|
$final = substr($uri, -1, 1);
|
||||||
if (isset($pairs[$final])) {
|
if (isset($pairs[$final])) {
|
||||||
@ -958,28 +958,28 @@ 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
|
// Try to find profiles this profile is subscribed to that have this nickname
|
||||||
$recipient = new Profile();
|
$recipient = new Profile();
|
||||||
# XXX: use a join instead of a subquery
|
// XXX: use a join instead of a subquery
|
||||||
$recipient->whereAdd('EXISTS (SELECT subscribed from subscription where subscriber = '.$sender->id.' and subscribed = id)', 'AND');
|
$recipient->whereAdd('EXISTS (SELECT subscribed from subscription where subscriber = '.$sender->id.' and subscribed = id)', 'AND');
|
||||||
$recipient->whereAdd('nickname = "' . trim($nickname) . '"', 'AND');
|
$recipient->whereAdd('nickname = "' . trim($nickname) . '"', 'AND');
|
||||||
if ($recipient->find(TRUE)) {
|
if ($recipient->find(TRUE)) {
|
||||||
# XXX: should probably differentiate between profiles with
|
// XXX: should probably differentiate between profiles with
|
||||||
# the same name by date of most recent update
|
// the same name by date of most recent update
|
||||||
return $recipient;
|
return $recipient;
|
||||||
}
|
}
|
||||||
# Try to find profiles that listen to this profile and that have this nickname
|
// Try to find profiles that listen to this profile and that have this nickname
|
||||||
$recipient = new Profile();
|
$recipient = new Profile();
|
||||||
# XXX: use a join instead of a subquery
|
// XXX: use a join instead of a subquery
|
||||||
$recipient->whereAdd('EXISTS (SELECT subscriber from subscription where subscribed = '.$sender->id.' and subscriber = id)', 'AND');
|
$recipient->whereAdd('EXISTS (SELECT subscriber from subscription where subscribed = '.$sender->id.' and subscriber = id)', 'AND');
|
||||||
$recipient->whereAdd('nickname = "' . trim($nickname) . '"', 'AND');
|
$recipient->whereAdd('nickname = "' . trim($nickname) . '"', 'AND');
|
||||||
if ($recipient->find(TRUE)) {
|
if ($recipient->find(TRUE)) {
|
||||||
# XXX: should probably differentiate between profiles with
|
// XXX: should probably differentiate between profiles with
|
||||||
# the same name by date of most recent update
|
// the same name by date of most recent update
|
||||||
return $recipient;
|
return $recipient;
|
||||||
}
|
}
|
||||||
# If this is a local user, try to find a local user with that nickname.
|
// If this is a local user, try to find a local user with that nickname.
|
||||||
$sender = User::staticGet($sender->id);
|
$sender = User::staticGet($sender->id);
|
||||||
if ($sender) {
|
if ($sender) {
|
||||||
$recipient_user = User::staticGet('nickname', $nickname);
|
$recipient_user = User::staticGet('nickname', $nickname);
|
||||||
@ -987,15 +987,15 @@ function common_relative_profile($sender, $nickname, $dt=NULL) {
|
|||||||
return $recipient_user->getProfile();
|
return $recipient_user->getProfile();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
# Otherwise, no links. @messages from local users to remote users,
|
// Otherwise, no links. @messages from local users to remote users,
|
||||||
# or from remote users to other remote users, are just
|
// or from remote users to other remote users, are just
|
||||||
# outside our ability to make intelligent guesses about
|
// outside our ability to make intelligent guesses about
|
||||||
return NULL;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// where should the avatar go for this user?
|
// 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;
|
global $config;
|
||||||
|
|
||||||
if ($size) {
|
if ($size) {
|
||||||
@ -1030,8 +1030,8 @@ function common_default_avatar($size) {
|
|||||||
return theme_path('default-avatar-'.$sizenames[$size].'.png');
|
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;
|
$url = null;
|
||||||
if (common_config('site','fancy')) {
|
if (common_config('site','fancy')) {
|
||||||
$url = common_fancy_url($action, $args);
|
$url = common_fancy_url($action, $args);
|
||||||
} else {
|
} else {
|
||||||
@ -1043,7 +1043,7 @@ function common_local_url($action, $args=NULL, $fragment=NULL) {
|
|||||||
return $url;
|
return $url;
|
||||||
}
|
}
|
||||||
|
|
||||||
function common_fancy_url($action, $args=NULL) {
|
function common_fancy_url($action, $args=null) {
|
||||||
switch (strtolower($action)) {
|
switch (strtolower($action)) {
|
||||||
case 'public':
|
case 'public':
|
||||||
if ($args && isset($args['page'])) {
|
if ($args && isset($args['page'])) {
|
||||||
@ -1229,7 +1229,7 @@ function common_fancy_url($action, $args=NULL) {
|
|||||||
case 'newmessage':
|
case 'newmessage':
|
||||||
return common_path('message/new' . (($args) ? ('?' . http_build_query($args)) : ''));
|
return common_path('message/new' . (($args) ? ('?' . http_build_query($args)) : ''));
|
||||||
case 'api':
|
case 'api':
|
||||||
# XXX: do fancy URLs for all the API methods
|
// XXX: do fancy URLs for all the API methods
|
||||||
switch (strtolower($args['apiaction'])) {
|
switch (strtolower($args['apiaction'])) {
|
||||||
case 'statuses':
|
case 'statuses':
|
||||||
switch (strtolower($args['method'])) {
|
switch (strtolower($args['method'])) {
|
||||||
@ -1256,7 +1256,7 @@ function common_fancy_url($action, $args=NULL) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function common_simple_url($action, $args=NULL) {
|
function common_simple_url($action, $args=null) {
|
||||||
global $config;
|
global $config;
|
||||||
/* XXX: pretty URLs */
|
/* XXX: pretty URLs */
|
||||||
$extra = '';
|
$extra = '';
|
||||||
@ -1281,7 +1281,7 @@ function common_date_string($dt) {
|
|||||||
$now = time();
|
$now = time();
|
||||||
$diff = $now - $t;
|
$diff = $now - $t;
|
||||||
|
|
||||||
if ($now < $t) { # that shouldn't happen!
|
if ($now < $t) { // that shouldn't happen!
|
||||||
return common_exact_date($dt);
|
return common_exact_date($dt);
|
||||||
} else if ($diff < 60) {
|
} else if ($diff < 60) {
|
||||||
return _('a few seconds ago');
|
return _('a few seconds ago');
|
||||||
@ -1365,18 +1365,18 @@ function common_redirect($url, $code=307) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function common_save_replies($notice) {
|
function common_save_replies($notice) {
|
||||||
# Alternative reply format
|
// Alternative reply format
|
||||||
$tname = false;
|
$tname = false;
|
||||||
if (preg_match('/^T ([A-Z0-9]{1,64}) /', $notice->content, $match)) {
|
if (preg_match('/^T ([A-Z0-9]{1,64}) /', $notice->content, $match)) {
|
||||||
$tname = $match[1];
|
$tname = $match[1];
|
||||||
}
|
}
|
||||||
# extract all @messages
|
// extract all @messages
|
||||||
$cnt = preg_match_all('/(?:^|\s)@([a-z0-9]{1,64})/', $notice->content, $match);
|
$cnt = preg_match_all('/(?:^|\s)@([a-z0-9]{1,64})/', $notice->content, $match);
|
||||||
|
|
||||||
$names = array();
|
$names = array();
|
||||||
|
|
||||||
if ($cnt || $tname) {
|
if ($cnt || $tname) {
|
||||||
# XXX: is there another way to make an array copy?
|
// XXX: is there another way to make an array copy?
|
||||||
$names = ($tname) ? array_unique(array_merge(array(strtolower($tname)), $match[1])) : array_unique($match[1]);
|
$names = ($tname) ? array_unique(array_merge(array(strtolower($tname)), $match[1])) : array_unique($match[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1384,8 +1384,8 @@ function common_save_replies($notice) {
|
|||||||
|
|
||||||
$replied = array();
|
$replied = array();
|
||||||
|
|
||||||
# store replied only for first @ (what user/notice what the reply directed,
|
// store replied only for first @ (what user/notice what the reply directed,
|
||||||
# we assume first @ is it)
|
// we assume first @ is it)
|
||||||
|
|
||||||
for ($i=0; $i<count($names); $i++) {
|
for ($i=0; $i<count($names); $i++) {
|
||||||
$nickname = $names[$i];
|
$nickname = $names[$i];
|
||||||
@ -1393,7 +1393,7 @@ function common_save_replies($notice) {
|
|||||||
if (!$recipient) {
|
if (!$recipient) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if ($i == 0 && ($recipient->id != $sender->id) && !$notice->reply_to) { # Don't save reply to self
|
if ($i == 0 && ($recipient->id != $sender->id) && !$notice->reply_to) { // Don't save reply to self
|
||||||
$reply_for = $recipient;
|
$reply_for = $recipient;
|
||||||
$recipient_notice = $reply_for->getCurrentNotice();
|
$recipient_notice = $reply_for->getCurrentNotice();
|
||||||
if ($recipient_notice) {
|
if ($recipient_notice) {
|
||||||
@ -1402,7 +1402,7 @@ function common_save_replies($notice) {
|
|||||||
$notice->update($orig);
|
$notice->update($orig);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
# Don't save replies from blocked profile to local user
|
// Don't save replies from blocked profile to local user
|
||||||
$recipient_user = User::staticGet('id', $recipient->id);
|
$recipient_user = User::staticGet('id', $recipient->id);
|
||||||
if ($recipient_user && $recipient_user->hasBlocked($sender)) {
|
if ($recipient_user && $recipient_user->hasBlocked($sender)) {
|
||||||
continue;
|
continue;
|
||||||
@ -1421,14 +1421,14 @@ function common_save_replies($notice) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Hash format replies, too
|
// Hash format replies, too
|
||||||
$cnt = preg_match_all('/(?:^|\s)@#([a-z0-9]{1,64})/', $notice->content, $match);
|
$cnt = preg_match_all('/(?:^|\s)@#([a-z0-9]{1,64})/', $notice->content, $match);
|
||||||
if ($cnt) {
|
if ($cnt) {
|
||||||
foreach ($match[1] as $tag) {
|
foreach ($match[1] as $tag) {
|
||||||
$tagged = Profile_tag::getTagged($sender->id, $tag);
|
$tagged = Profile_tag::getTagged($sender->id, $tag);
|
||||||
foreach ($tagged as $t) {
|
foreach ($tagged as $t) {
|
||||||
if (!$replied[$t->id]) {
|
if (!$replied[$t->id]) {
|
||||||
# Don't save replies from blocked profile to local user
|
// Don't save replies from blocked profile to local user
|
||||||
$t_user = User::staticGet('id', $t->id);
|
$t_user = User::staticGet('id', $t->id);
|
||||||
if ($t_user && $t_user->hasBlocked($sender)) {
|
if ($t_user && $t_user->hasBlocked($sender)) {
|
||||||
continue;
|
continue;
|
||||||
@ -1467,7 +1467,7 @@ function common_broadcast_notice($notice, $remote=false) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (common_config('queue', 'enabled')) {
|
if (common_config('queue', 'enabled')) {
|
||||||
# Do it later!
|
// Do it later!
|
||||||
return common_enqueue_notice($notice);
|
return common_enqueue_notice($notice);
|
||||||
} else {
|
} else {
|
||||||
return common_real_broadcast($notice, $remote);
|
return common_real_broadcast($notice, $remote);
|
||||||
@ -1532,7 +1532,7 @@ function common_twitter_broadcast($notice, $flink) {
|
|||||||
return $success;
|
return $success;
|
||||||
}
|
}
|
||||||
|
|
||||||
# Stick the notice on the queue
|
// Stick the notice on the queue
|
||||||
|
|
||||||
function common_enqueue_notice($notice) {
|
function common_enqueue_notice($notice) {
|
||||||
foreach (array('jabber', 'omb', 'sms', 'public') as $transport) {
|
foreach (array('jabber', 'omb', 'sms', 'public') as $transport) {
|
||||||
@ -1570,7 +1570,7 @@ function common_dequeue_notice($notice) {
|
|||||||
function common_real_broadcast($notice, $remote=false) {
|
function common_real_broadcast($notice, $remote=false) {
|
||||||
$success = true;
|
$success = true;
|
||||||
if (!$remote) {
|
if (!$remote) {
|
||||||
# Make sure we have the OMB stuff
|
// Make sure we have the OMB stuff
|
||||||
require_once(INSTALLDIR.'/lib/omb.php');
|
require_once(INSTALLDIR.'/lib/omb.php');
|
||||||
$success = omb_broadcast_remote_subscribers($notice);
|
$success = omb_broadcast_remote_subscribers($notice);
|
||||||
if (!$success) {
|
if (!$success) {
|
||||||
@ -1613,9 +1613,9 @@ function common_profile_url($nickname) {
|
|||||||
return common_local_url('showstream', array('nickname' => $nickname));
|
return common_local_url('showstream', array('nickname' => $nickname));
|
||||||
}
|
}
|
||||||
|
|
||||||
# Don't call if nobody's logged in
|
// 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();
|
$user = common_current_user();
|
||||||
assert(!is_null($user));
|
assert(!is_null($user));
|
||||||
common_element_start('form', array('id' => 'status_form',
|
common_element_start('form', array('id' => 'status_form',
|
||||||
@ -1635,7 +1635,7 @@ function common_notice_form($action=NULL, $content=NULL) {
|
|||||||
if ($action) {
|
if ($action) {
|
||||||
common_hidden('returnto', $action);
|
common_hidden('returnto', $action);
|
||||||
}
|
}
|
||||||
# set by JavaScript
|
// set by JavaScript
|
||||||
common_hidden('inreplyto', 'false');
|
common_hidden('inreplyto', 'false');
|
||||||
common_element('input', array('id' => 'status_submit',
|
common_element('input', array('id' => 'status_submit',
|
||||||
'name' => 'status_submit',
|
'name' => 'status_submit',
|
||||||
@ -1645,27 +1645,27 @@ function common_notice_form($action=NULL, $content=NULL) {
|
|||||||
common_element_end('form');
|
common_element_end('form');
|
||||||
}
|
}
|
||||||
|
|
||||||
# Should make up a reasonable root URL
|
// Should make up a reasonable root URL
|
||||||
|
|
||||||
function common_root_url() {
|
function common_root_url() {
|
||||||
return common_path('');
|
return common_path('');
|
||||||
}
|
}
|
||||||
|
|
||||||
# returns $bytes bytes of random data as a hexadecimal string
|
// returns $bytes bytes of random data as a hexadecimal string
|
||||||
# "good" here is a goal and not a guarantee
|
// "good" here is a goal and not a guarantee
|
||||||
|
|
||||||
function common_good_rand($bytes) {
|
function common_good_rand($bytes) {
|
||||||
# XXX: use random.org...?
|
// XXX: use random.org...?
|
||||||
if (file_exists('/dev/urandom')) {
|
if (file_exists('/dev/urandom')) {
|
||||||
return common_urandom($bytes);
|
return common_urandom($bytes);
|
||||||
} else { # FIXME: this is probably not good enough
|
} else { // FIXME: this is probably not good enough
|
||||||
return common_mtrand($bytes);
|
return common_mtrand($bytes);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function common_urandom($bytes) {
|
function common_urandom($bytes) {
|
||||||
$h = fopen('/dev/urandom', 'rb');
|
$h = fopen('/dev/urandom', 'rb');
|
||||||
# should not block
|
// should not block
|
||||||
$src = fread($h, $bytes);
|
$src = fread($h, $bytes);
|
||||||
fclose($h);
|
fclose($h);
|
||||||
$enc = '';
|
$enc = '';
|
||||||
@ -1706,7 +1706,7 @@ function common_ensure_syslog() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function common_log($priority, $msg, $filename=NULL) {
|
function common_log($priority, $msg, $filename=null) {
|
||||||
$logfile = common_config('site', 'logfile');
|
$logfile = common_config('site', 'logfile');
|
||||||
if ($logfile) {
|
if ($logfile) {
|
||||||
$log = fopen($logfile, "a");
|
$log = fopen($logfile, "a");
|
||||||
@ -1723,7 +1723,7 @@ function common_log($priority, $msg, $filename=NULL) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function common_debug($msg, $filename=NULL) {
|
function common_debug($msg, $filename=null) {
|
||||||
if ($filename) {
|
if ($filename) {
|
||||||
common_log(LOG_DEBUG, basename($filename).' - '.$msg);
|
common_log(LOG_DEBUG, basename($filename).' - '.$msg);
|
||||||
} else {
|
} else {
|
||||||
@ -1731,7 +1731,7 @@ 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);
|
$objstr = common_log_objstring($object);
|
||||||
$last_error = &PEAR::getStaticProperty('DB_DataObject','lastError');
|
$last_error = &PEAR::getStaticProperty('DB_DataObject','lastError');
|
||||||
common_log(LOG_ERR, $last_error->message . '(' . $verb . ' on ' . $objstr . ')', $filename);
|
common_log(LOG_ERR, $last_error->message . '(' . $verb . ' on ' . $objstr . ')', $filename);
|
||||||
@ -1739,7 +1739,7 @@ function common_log_db_error(&$object, $verb, $filename=NULL) {
|
|||||||
|
|
||||||
function common_log_objstring(&$object) {
|
function common_log_objstring(&$object) {
|
||||||
if (is_null($object)) {
|
if (is_null($object)) {
|
||||||
return "NULL";
|
return "null";
|
||||||
}
|
}
|
||||||
$arr = $object->toArray();
|
$arr = $object->toArray();
|
||||||
$fields = array();
|
$fields = array();
|
||||||
@ -1762,9 +1762,9 @@ function common_valid_tag($tag) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
# Does a little before-after block for next/prev page
|
// 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) {
|
if ($have_before || $have_after) {
|
||||||
common_element_start('div', array('id' => 'pagination'));
|
common_element_start('div', array('id' => 'pagination'));
|
||||||
@ -1800,7 +1800,7 @@ function common_pagination($have_before, $have_after, $page, $action, $args=NULL
|
|||||||
* and written by Evan Prodromou. */
|
* 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)
|
// No arg means accept anything (per HTTP spec)
|
||||||
if(!$accept) {
|
if(!$accept) {
|
||||||
return array($def => 1);
|
return array($def => 1);
|
||||||
}
|
}
|
||||||
@ -1810,7 +1810,7 @@ function common_accept_to_prefs($accept, $def = '*/*') {
|
|||||||
$parts = explode(',', $accept);
|
$parts = explode(',', $accept);
|
||||||
|
|
||||||
foreach($parts as $part) {
|
foreach($parts as $part) {
|
||||||
# FIXME: doesn't deal with params like 'text/html; level=1'
|
// FIXME: doesn't deal with params like 'text/html; level=1'
|
||||||
@list($value, $qpart) = explode(';', $part);
|
@list($value, $qpart) = explode(';', $part);
|
||||||
$match = array();
|
$match = array();
|
||||||
if(!isset($qpart)) {
|
if(!isset($qpart)) {
|
||||||
@ -1833,7 +1833,7 @@ function common_mime_type_match($type, $avail) {
|
|||||||
} elseif(array_key_exists('*/*', $avail)) {
|
} elseif(array_key_exists('*/*', $avail)) {
|
||||||
return '*/*';
|
return '*/*';
|
||||||
} else {
|
} else {
|
||||||
return NULL;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1906,24 +1906,24 @@ function common_notice_uri(&$notice) {
|
|||||||
array('notice' => $notice->id));
|
array('notice' => $notice->id));
|
||||||
}
|
}
|
||||||
|
|
||||||
# 36 alphanums - lookalikes (0, O, 1, I) = 32 chars = 5 bits
|
// 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
|
// 36 alphanums - lookalikes (0, O, 1, I) = 32 chars = 5 bits
|
||||||
static $codechars = '23456789ABCDEFGHJKLMNPQRSTUVWXYZ';
|
static $codechars = '23456789ABCDEFGHJKLMNPQRSTUVWXYZ';
|
||||||
$chars = ceil($bits/5);
|
$chars = ceil($bits/5);
|
||||||
$code = '';
|
$code = '';
|
||||||
for ($i = 0; $i < $chars; $i++) {
|
for ($i = 0; $i < $chars; $i++) {
|
||||||
# XXX: convert to string and back
|
// XXX: convert to string and back
|
||||||
$num = hexdec(common_good_rand(1));
|
$num = hexdec(common_good_rand(1));
|
||||||
# XXX: randomness is too precious to throw away almost
|
// XXX: randomness is too precious to throw away almost
|
||||||
# 40% of the bits we get!
|
// 40% of the bits we get!
|
||||||
$code .= $codechars[$num%32];
|
$code .= $codechars[$num%32];
|
||||||
}
|
}
|
||||||
return $code;
|
return $code;
|
||||||
}
|
}
|
||||||
|
|
||||||
# convert markup to HTML
|
// 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('/%%action.(\w+)%%/e', "common_local_url('\\1')", $c);
|
||||||
@ -1943,7 +1943,7 @@ function common_profile_avatar_url($profile, $size=AVATAR_PROFILE_SIZE) {
|
|||||||
|
|
||||||
function common_profile_uri($profile) {
|
function common_profile_uri($profile) {
|
||||||
if (!$profile) {
|
if (!$profile) {
|
||||||
return NULL;
|
return null;
|
||||||
}
|
}
|
||||||
$user = User::staticGet($profile->id);
|
$user = User::staticGet($profile->id);
|
||||||
if ($user) {
|
if ($user) {
|
||||||
@ -1954,12 +1954,12 @@ function common_profile_uri($profile) {
|
|||||||
if ($remote) {
|
if ($remote) {
|
||||||
return $remote->uri;
|
return $remote->uri;
|
||||||
}
|
}
|
||||||
# XXX: this is a very bad profile!
|
// XXX: this is a very bad profile!
|
||||||
return NULL;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
function common_canonical_sms($sms) {
|
function common_canonical_sms($sms) {
|
||||||
# strip non-digits
|
// strip non-digits
|
||||||
preg_replace('/\D/', '', $sms);
|
preg_replace('/\D/', '', $sms);
|
||||||
return $sms;
|
return $sms;
|
||||||
}
|
}
|
||||||
@ -1980,7 +1980,7 @@ function common_error_handler($errno, $errstr, $errfile, $errline, $errcontext)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
# FIXME: show error page if we're on the Web
|
// FIXME: show error page if we're on the Web
|
||||||
/* Don't execute PHP internal error handler */
|
/* Don't execute PHP internal error handler */
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -2139,7 +2139,7 @@ function common_message_form($content, $user, $to) {
|
|||||||
$mutual_users->free();
|
$mutual_users->free();
|
||||||
unset($mutual_users);
|
unset($mutual_users);
|
||||||
|
|
||||||
common_dropdown('to', _('To'), $mutual, NULL, FALSE, $to->id);
|
common_dropdown('to', _('To'), $mutual, null, FALSE, $to->id);
|
||||||
|
|
||||||
common_element_start('p');
|
common_element_start('p');
|
||||||
|
|
||||||
@ -2161,9 +2161,9 @@ function common_message_form($content, $user, $to) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function common_memcache() {
|
function common_memcache() {
|
||||||
static $cache = NULL;
|
static $cache = null;
|
||||||
if (!common_config('memcached', 'enabled')) {
|
if (!common_config('memcached', 'enabled')) {
|
||||||
return NULL;
|
return null;
|
||||||
} else {
|
} else {
|
||||||
if (!$cache) {
|
if (!$cache) {
|
||||||
$cache = new Memcache();
|
$cache = new Memcache();
|
||||||
@ -2181,21 +2181,21 @@ function common_memcache() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function common_compatible_license($from, $to) {
|
function common_compatible_license($from, $to) {
|
||||||
# XXX: better compatibility check needed here!
|
// XXX: better compatibility check needed here!
|
||||||
return ($from == $to);
|
return ($from == $to);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* These are almost identical, so we use a helper function */
|
/* 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);
|
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);
|
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,
|
common_element_start('form', array('id' => $type . '-' . $profile->id,
|
||||||
'method' => 'post',
|
'method' => 'post',
|
||||||
'class' => $type,
|
'class' => $type,
|
||||||
@ -2217,4 +2217,3 @@ function common_blocking_form($type, $label, $profile, $args=NULL) {
|
|||||||
common_element_end('form');
|
common_element_end('form');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
267
lib/util.php
267
lib/util.php
@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
/* XXX: break up into separate modules (HTTP, HTML, user, files) */
|
/* XXX: break up into separate modules (HTTP, HTML, user, files) */
|
||||||
|
|
||||||
# Show a server error
|
// 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',
|
static $status = array(500 => 'Internal Server Error',
|
||||||
@ -43,7 +43,7 @@ function common_server_error($msg, $code=500) {
|
|||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
# Show a user error
|
// Show a user error
|
||||||
function common_user_error($msg, $code=400) {
|
function common_user_error($msg, $code=400) {
|
||||||
static $status = array(400 => 'Bad Request',
|
static $status = array(400 => 'Bad Request',
|
||||||
401 => 'Unauthorized',
|
401 => 'Unauthorized',
|
||||||
@ -79,8 +79,8 @@ function common_user_error($msg, $code=400) {
|
|||||||
|
|
||||||
$xw = null;
|
$xw = null;
|
||||||
|
|
||||||
# Start an HTML element
|
// Start an HTML element
|
||||||
function common_element_start($tag, $attrs=NULL) {
|
function common_element_start($tag, $attrs=null) {
|
||||||
global $xw;
|
global $xw;
|
||||||
$xw->startElement($tag);
|
$xw->startElement($tag);
|
||||||
if (is_array($attrs)) {
|
if (is_array($attrs)) {
|
||||||
@ -97,7 +97,7 @@ function common_element_end($tag) {
|
|||||||
'br', 'param', 'img', 'area',
|
'br', 'param', 'img', 'area',
|
||||||
'input', 'col');
|
'input', 'col');
|
||||||
global $xw;
|
global $xw;
|
||||||
# XXX: check namespace
|
// XXX: check namespace
|
||||||
if (in_array($tag, $empty_tag)) {
|
if (in_array($tag, $empty_tag)) {
|
||||||
$xw->endElement();
|
$xw->endElement();
|
||||||
} else {
|
} else {
|
||||||
@ -105,7 +105,7 @@ 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);
|
common_element_start($tag, $attrs);
|
||||||
global $xw;
|
global $xw;
|
||||||
if (!is_null($content)) {
|
if (!is_null($content)) {
|
||||||
@ -114,7 +114,7 @@ function common_element($tag, $attrs=NULL, $content=NULL) {
|
|||||||
common_element_end($tag);
|
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;
|
global $xw;
|
||||||
$xw = new XMLWriter();
|
$xw = new XMLWriter();
|
||||||
$xw->openURI('php://output');
|
$xw->openURI('php://output');
|
||||||
@ -147,7 +147,7 @@ function common_init_locale($language=null) {
|
|||||||
function common_init_language() {
|
function common_init_language() {
|
||||||
mb_internal_encoding('UTF-8');
|
mb_internal_encoding('UTF-8');
|
||||||
$language = common_language();
|
$language = common_language();
|
||||||
# So we don't have to make people install the gettext locales
|
// So we don't have to make people install the gettext locales
|
||||||
$locale_set = common_init_locale($language);
|
$locale_set = common_init_locale($language);
|
||||||
bindtextdomain("laconica", common_config('site','locale_path'));
|
bindtextdomain("laconica", common_config('site','locale_path'));
|
||||||
bind_textdomain_codeset("laconica", "UTF-8");
|
bind_textdomain_codeset("laconica", "UTF-8");
|
||||||
@ -160,7 +160,7 @@ function common_init_language() {
|
|||||||
|
|
||||||
define('PAGE_TYPE_PREFS', 'text/html,application/xhtml+xml,application/xml;q=0.3,text/xml;q=0.2');
|
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 $config, $xw;
|
||||||
global $action; /* XXX: kind of cheating here. */
|
global $action; /* XXX: kind of cheating here. */
|
||||||
@ -168,7 +168,7 @@ function common_show_header($pagetitle, $callable=NULL, $data=NULL, $headercall=
|
|||||||
common_start_html();
|
common_start_html();
|
||||||
|
|
||||||
common_element_start('head');
|
common_element_start('head');
|
||||||
common_element('title', NULL,
|
common_element('title', null,
|
||||||
$pagetitle . " - " . $config['site']['name']);
|
$pagetitle . " - " . $config['site']['name']);
|
||||||
common_element('link', array('rel' => 'stylesheet',
|
common_element('link', array('rel' => 'stylesheet',
|
||||||
'type' => 'text/css',
|
'type' => 'text/css',
|
||||||
@ -176,7 +176,7 @@ function common_show_header($pagetitle, $callable=NULL, $data=NULL, $headercall=
|
|||||||
'media' => 'screen, projection, tv'));
|
'media' => 'screen, projection, tv'));
|
||||||
foreach (array(6,7) as $ver) {
|
foreach (array(6,7) as $ver) {
|
||||||
if (file_exists(theme_file('ie'.$ver.'.css'))) {
|
if (file_exists(theme_file('ie'.$ver.'.css'))) {
|
||||||
# Yes, IE people should be put in jail.
|
// Yes, IE people should be put in jail.
|
||||||
$xw->writeComment('[if lte IE '.$ver.']><link rel="stylesheet" type="text/css" '.
|
$xw->writeComment('[if lte IE '.$ver.']><link rel="stylesheet" type="text/css" '.
|
||||||
'href="'.theme_path('ie'.$ver.'.css').'?version='.LACONICA_VERSION.'" /><![endif]');
|
'href="'.theme_path('ie'.$ver.'.css').'?version='.LACONICA_VERSION.'" /><![endif]');
|
||||||
}
|
}
|
||||||
@ -243,12 +243,12 @@ function common_show_header($pagetitle, $callable=NULL, $data=NULL, $headercall=
|
|||||||
common_element_start('div', array('id' => 'content'));
|
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) {
|
if (!$type) {
|
||||||
$httpaccept = isset($_SERVER['HTTP_ACCEPT']) ? $_SERVER['HTTP_ACCEPT'] : NULL;
|
$httpaccept = isset($_SERVER['HTTP_ACCEPT']) ? $_SERVER['HTTP_ACCEPT'] : null;
|
||||||
|
|
||||||
# XXX: allow content negotiation for RDF, RSS, or XRDS
|
// XXX: allow content negotiation for RDF, RSS, or XRDS
|
||||||
|
|
||||||
$type = common_negotiate_type(common_accept_to_prefs($httpaccept),
|
$type = common_negotiate_type(common_accept_to_prefs($httpaccept),
|
||||||
common_accept_to_prefs(PAGE_TYPE_PREFS));
|
common_accept_to_prefs(PAGE_TYPE_PREFS));
|
||||||
@ -265,7 +265,7 @@ function common_start_html($type=NULL, $indent=true) {
|
|||||||
'-//W3C//DTD XHTML 1.0 Strict//EN',
|
'-//W3C//DTD XHTML 1.0 Strict//EN',
|
||||||
'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd', $indent);
|
'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd', $indent);
|
||||||
|
|
||||||
# FIXME: correct language for interface
|
// FIXME: correct language for interface
|
||||||
|
|
||||||
$language = common_language();
|
$language = common_language();
|
||||||
|
|
||||||
@ -276,7 +276,7 @@ function common_start_html($type=NULL, $indent=true) {
|
|||||||
|
|
||||||
function common_show_footer() {
|
function common_show_footer() {
|
||||||
global $xw, $config;
|
global $xw, $config;
|
||||||
common_element_end('div'); # content div
|
common_element_end('div'); // content div
|
||||||
common_foot_menu();
|
common_foot_menu();
|
||||||
common_element_start('div', array('id' => 'footer'));
|
common_element_start('div', array('id' => 'footer'));
|
||||||
common_element_start('div', 'laconica');
|
common_element_start('div', 'laconica');
|
||||||
@ -361,7 +361,7 @@ function common_foot_menu() {
|
|||||||
common_element_end('ul');
|
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();
|
$lattrs = array();
|
||||||
if ($is_selected) {
|
if ($is_selected) {
|
||||||
$lattrs['class'] = 'current';
|
$lattrs['class'] = 'current';
|
||||||
@ -375,7 +375,7 @@ function common_menu_item($url, $text, $title=NULL, $is_selected=false) {
|
|||||||
common_element_end('li');
|
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_start('p');
|
||||||
common_element('label', array('for' => $id), $label);
|
common_element('label', array('for' => $id), $label);
|
||||||
$attrs = array('name' => $id,
|
$attrs = array('name' => $id,
|
||||||
@ -392,7 +392,7 @@ function common_input($id, $label, $value=NULL,$instructions=NULL) {
|
|||||||
common_element_end('p');
|
common_element_end('p');
|
||||||
}
|
}
|
||||||
|
|
||||||
function common_checkbox($id, $label, $checked=false, $instructions=NULL, $value='true', $disabled=false)
|
function common_checkbox($id, $label, $checked=false, $instructions=null, $value='true', $disabled=false)
|
||||||
{
|
{
|
||||||
common_element_start('p');
|
common_element_start('p');
|
||||||
$attrs = array('name' => $id,
|
$attrs = array('name' => $id,
|
||||||
@ -418,7 +418,7 @@ function common_checkbox($id, $label, $checked=false, $instructions=NULL, $value
|
|||||||
common_element_end('p');
|
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_start('p');
|
||||||
common_element('label', array('for' => $id), $label);
|
common_element('label', array('for' => $id), $label);
|
||||||
common_element_start('select', array('id' => $id, 'name' => $id));
|
common_element_start('select', array('id' => $id, 'name' => $id));
|
||||||
@ -445,7 +445,7 @@ function common_hidden($id, $value) {
|
|||||||
'value' => $value));
|
'value' => $value));
|
||||||
}
|
}
|
||||||
|
|
||||||
function common_password($id, $label, $instructions=NULL) {
|
function common_password($id, $label, $instructions=null) {
|
||||||
common_element_start('p');
|
common_element_start('p');
|
||||||
common_element('label', array('for' => $id), $label);
|
common_element('label', array('for' => $id), $label);
|
||||||
$attrs = array('name' => $id,
|
$attrs = array('name' => $id,
|
||||||
@ -470,7 +470,7 @@ function common_submit($id, $label, $cls='submit') {
|
|||||||
common_element_end('p');
|
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_start('p');
|
||||||
common_element('label', array('for' => $id), $label);
|
common_element('label', array('for' => $id), $label);
|
||||||
common_element('textarea', array('rows' => 3,
|
common_element('textarea', array('rows' => 3,
|
||||||
@ -509,7 +509,7 @@ function common_language() {
|
|||||||
|
|
||||||
// Otherwise, find the best match for the languages requested by the
|
// Otherwise, find the best match for the languages requested by the
|
||||||
// user's browser...
|
// user's browser...
|
||||||
$httplang = isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? $_SERVER['HTTP_ACCEPT_LANGUAGE'] : NULL;
|
$httplang = isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? $_SERVER['HTTP_ACCEPT_LANGUAGE'] : null;
|
||||||
if (!empty($httplang)) {
|
if (!empty($httplang)) {
|
||||||
$language = client_prefered_language($httplang);
|
$language = client_prefered_language($httplang);
|
||||||
if ($language)
|
if ($language)
|
||||||
@ -519,15 +519,15 @@ function common_language() {
|
|||||||
// Finally, if none of the above worked, use the site's default...
|
// Finally, if none of the above worked, use the site's default...
|
||||||
return common_config('site', 'language');
|
return common_config('site', 'language');
|
||||||
}
|
}
|
||||||
# salted, hashed passwords are stored in the DB
|
// salted, hashed passwords are stored in the DB
|
||||||
|
|
||||||
function common_munge_password($password, $id) {
|
function common_munge_password($password, $id) {
|
||||||
return md5($password . $id);
|
return md5($password . $id);
|
||||||
}
|
}
|
||||||
|
|
||||||
# check if a username exists and has matching password
|
// 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
|
// NEVER allow blank passwords, even if they match the DB
|
||||||
if (mb_strlen($password) == 0) {
|
if (mb_strlen($password) == 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -544,7 +544,7 @@ function common_check_user($nickname, $password) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# is the current user logged in?
|
// is the current user logged in?
|
||||||
function common_logged_in() {
|
function common_logged_in() {
|
||||||
return (!is_null(common_current_user()));
|
return (!is_null(common_current_user()));
|
||||||
}
|
}
|
||||||
@ -559,12 +559,12 @@ function common_ensure_session() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Three kinds of arguments:
|
// Three kinds of arguments:
|
||||||
# 1) a user object
|
// 1) a user object
|
||||||
# 2) a nickname
|
// 2) a nickname
|
||||||
# 3) NULL to clear
|
// 3) null to clear
|
||||||
|
|
||||||
# Initialize to false; set to NULL if none found
|
// Initialize to false; set to null if none found
|
||||||
|
|
||||||
$_cur = false;
|
$_cur = false;
|
||||||
|
|
||||||
@ -573,7 +573,7 @@ function common_set_user($user) {
|
|||||||
global $_cur;
|
global $_cur;
|
||||||
|
|
||||||
if (is_null($user) && common_have_session()) {
|
if (is_null($user) && common_have_session()) {
|
||||||
$_cur = NULL;
|
$_cur = null;
|
||||||
unset($_SESSION['userid']);
|
unset($_SESSION['userid']);
|
||||||
return true;
|
return true;
|
||||||
} else if (is_string($user)) {
|
} else if (is_string($user)) {
|
||||||
@ -609,9 +609,9 @@ function common_set_cookie($key, $value, $expiration=0) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
define('REMEMBERME', 'rememberme');
|
define('REMEMBERME', 'rememberme');
|
||||||
define('REMEMBERME_EXPIRY', 30 * 24 * 60 * 60); # 30 days
|
define('REMEMBERME_EXPIRY', 30 * 24 * 60 * 60); // 30 days
|
||||||
|
|
||||||
function common_rememberme($user=NULL) {
|
function common_rememberme($user=null) {
|
||||||
if (!$user) {
|
if (!$user) {
|
||||||
$user = common_current_user();
|
$user = common_current_user();
|
||||||
if (!$user) {
|
if (!$user) {
|
||||||
@ -625,7 +625,7 @@ function common_rememberme($user=NULL) {
|
|||||||
$rm->code = common_good_rand(16);
|
$rm->code = common_good_rand(16);
|
||||||
$rm->user_id = $user->id;
|
$rm->user_id = $user->id;
|
||||||
|
|
||||||
# Wrap the insert in some good ol' fashioned transaction code
|
// Wrap the insert in some good ol' fashioned transaction code
|
||||||
|
|
||||||
$rm->query('BEGIN');
|
$rm->query('BEGIN');
|
||||||
|
|
||||||
@ -652,12 +652,12 @@ function common_rememberme($user=NULL) {
|
|||||||
|
|
||||||
function common_remembered_user() {
|
function common_remembered_user() {
|
||||||
|
|
||||||
$user = NULL;
|
$user = null;
|
||||||
|
|
||||||
$packed = isset($_COOKIE[REMEMBERME]) ? $_COOKIE[REMEMBERME] : NULL;
|
$packed = isset($_COOKIE[REMEMBERME]) ? $_COOKIE[REMEMBERME] : null;
|
||||||
|
|
||||||
if (!$packed) {
|
if (!$packed) {
|
||||||
return NULL;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
list($id, $code) = explode(':', $packed);
|
list($id, $code) = explode(':', $packed);
|
||||||
@ -665,7 +665,7 @@ function common_remembered_user() {
|
|||||||
if (!$id || !$code) {
|
if (!$id || !$code) {
|
||||||
common_log(LOG_WARNING, 'Malformed rememberme cookie: ' . $packed);
|
common_log(LOG_WARNING, 'Malformed rememberme cookie: ' . $packed);
|
||||||
common_forgetme();
|
common_forgetme();
|
||||||
return NULL;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
$rm = Remember_me::staticGet($code);
|
$rm = Remember_me::staticGet($code);
|
||||||
@ -673,13 +673,13 @@ function common_remembered_user() {
|
|||||||
if (!$rm) {
|
if (!$rm) {
|
||||||
common_log(LOG_WARNING, 'No such remember code: ' . $code);
|
common_log(LOG_WARNING, 'No such remember code: ' . $code);
|
||||||
common_forgetme();
|
common_forgetme();
|
||||||
return NULL;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($rm->user_id != $id) {
|
if ($rm->user_id != $id) {
|
||||||
common_log(LOG_WARNING, 'Rememberme code for wrong user: ' . $rm->user_id . ' != ' . $id);
|
common_log(LOG_WARNING, 'Rememberme code for wrong user: ' . $rm->user_id . ' != ' . $id);
|
||||||
common_forgetme();
|
common_forgetme();
|
||||||
return NULL;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
$user = User::staticGet($rm->user_id);
|
$user = User::staticGet($rm->user_id);
|
||||||
@ -687,17 +687,17 @@ function common_remembered_user() {
|
|||||||
if (!$user) {
|
if (!$user) {
|
||||||
common_log(LOG_WARNING, 'No such user for rememberme: ' . $rm->user_id);
|
common_log(LOG_WARNING, 'No such user for rememberme: ' . $rm->user_id);
|
||||||
common_forgetme();
|
common_forgetme();
|
||||||
return NULL;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
# successful!
|
// successful!
|
||||||
$result = $rm->delete();
|
$result = $rm->delete();
|
||||||
|
|
||||||
if (!$result) {
|
if (!$result) {
|
||||||
common_log_db_error($rm, 'DELETE', __FILE__);
|
common_log_db_error($rm, 'DELETE', __FILE__);
|
||||||
common_log(LOG_WARNING, 'Could not delete rememberme: ' . $code);
|
common_log(LOG_WARNING, 'Could not delete rememberme: ' . $code);
|
||||||
common_forgetme();
|
common_forgetme();
|
||||||
return NULL;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
common_log(LOG_INFO, 'logging in ' . $user->nickname . ' using rememberme code ' . $rm->code);
|
common_log(LOG_INFO, 'logging in ' . $user->nickname . ' using rememberme code ' . $rm->code);
|
||||||
@ -705,21 +705,21 @@ function common_remembered_user() {
|
|||||||
common_set_user($user);
|
common_set_user($user);
|
||||||
common_real_login(false);
|
common_real_login(false);
|
||||||
|
|
||||||
# We issue a new cookie, so they can log in
|
// We issue a new cookie, so they can log in
|
||||||
# automatically again after this session
|
// automatically again after this session
|
||||||
|
|
||||||
common_rememberme($user);
|
common_rememberme($user);
|
||||||
|
|
||||||
return $user;
|
return $user;
|
||||||
}
|
}
|
||||||
|
|
||||||
# must be called with a valid user!
|
// must be called with a valid user!
|
||||||
|
|
||||||
function common_forgetme() {
|
function common_forgetme() {
|
||||||
common_set_cookie(REMEMBERME, '', 0);
|
common_set_cookie(REMEMBERME, '', 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
# who is the current user?
|
// who is the current user?
|
||||||
function common_current_user() {
|
function common_current_user() {
|
||||||
global $_cur;
|
global $_cur;
|
||||||
|
|
||||||
@ -734,13 +734,13 @@ function common_current_user() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# that didn't work; try to remember; will init $_cur to NULL on failure
|
// that didn't work; try to remember; will init $_cur to null on failure
|
||||||
$_cur = common_remembered_user();
|
$_cur = common_remembered_user();
|
||||||
|
|
||||||
if ($_cur) {
|
if ($_cur) {
|
||||||
common_debug("Got User " . $_cur->nickname);
|
common_debug("Got User " . $_cur->nickname);
|
||||||
common_debug("Faking session on remembered user");
|
common_debug("Faking session on remembered user");
|
||||||
# XXX: Is this necessary?
|
// XXX: Is this necessary?
|
||||||
$_SESSION['userid'] = $_cur->id;
|
$_SESSION['userid'] = $_cur->id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -748,9 +748,9 @@ function common_current_user() {
|
|||||||
return $_cur;
|
return $_cur;
|
||||||
}
|
}
|
||||||
|
|
||||||
# Logins that are 'remembered' aren't 'real' -- they're subject to
|
// Logins that are 'remembered' aren't 'real' -- they're subject to
|
||||||
# cookie-stealing. So, we don't let them do certain things. New reg,
|
// cookie-stealing. So, we don't let them do certain things. New reg,
|
||||||
# OpenID, and password logins _are_ real.
|
// OpenID, and password logins _are_ real.
|
||||||
|
|
||||||
function common_real_login($real=true) {
|
function common_real_login($real=true) {
|
||||||
common_ensure_session();
|
common_ensure_session();
|
||||||
@ -761,16 +761,16 @@ function common_is_real_login() {
|
|||||||
return common_logged_in() && $_SESSION['real_login'];
|
return common_logged_in() && $_SESSION['real_login'];
|
||||||
}
|
}
|
||||||
|
|
||||||
# get canonical version of nickname for comparison
|
// get canonical version of nickname for comparison
|
||||||
function common_canonical_nickname($nickname) {
|
function common_canonical_nickname($nickname) {
|
||||||
# XXX: UTF-8 canonicalization (like combining chars)
|
// XXX: UTF-8 canonicalization (like combining chars)
|
||||||
return strtolower($nickname);
|
return strtolower($nickname);
|
||||||
}
|
}
|
||||||
|
|
||||||
# get canonical version of email for comparison
|
// get canonical version of email for comparison
|
||||||
function common_canonical_email($email) {
|
function common_canonical_email($email) {
|
||||||
# XXX: canonicalize UTF-8
|
// XXX: canonicalize UTF-8
|
||||||
# XXX: lcase the domain part
|
// XXX: lcase the domain part
|
||||||
return $email;
|
return $email;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -791,7 +791,7 @@ function common_render_text($text) {
|
|||||||
$r = preg_replace('/[\x{0}-\x{8}\x{b}-\x{c}\x{e}-\x{19}]/', '', $r);
|
$r = preg_replace('/[\x{0}-\x{8}\x{b}-\x{c}\x{e}-\x{19}]/', '', $r);
|
||||||
$r = preg_replace_callback('@https?://[^\]>\s]+@', 'common_render_uri_thingy', $r);
|
$r = preg_replace_callback('@https?://[^\]>\s]+@', 'common_render_uri_thingy', $r);
|
||||||
$r = preg_replace('/(^|\s+)#([A-Za-z0-9_\-\.]{1,64})/e', "'\\1#'.common_tag_link('\\2')", $r);
|
$r = preg_replace('/(^|\s+)#([A-Za-z0-9_\-\.]{1,64})/e', "'\\1#'.common_tag_link('\\2')", $r);
|
||||||
# XXX: machine tags
|
// XXX: machine tags
|
||||||
return $r;
|
return $r;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -799,16 +799,16 @@ function common_render_uri_thingy($matches) {
|
|||||||
$uri = $matches[0];
|
$uri = $matches[0];
|
||||||
$trailer = '';
|
$trailer = '';
|
||||||
|
|
||||||
# Some heuristics for extracting URIs from surrounding punctuation
|
// Some heuristics for extracting URIs from surrounding punctuation
|
||||||
# Strip from trailing text...
|
// Strip from trailing text...
|
||||||
if (preg_match('/^(.*)([,.:"\']+)$/', $uri, $matches)) {
|
if (preg_match('/^(.*)([,.:"\']+)$/', $uri, $matches)) {
|
||||||
$uri = $matches[1];
|
$uri = $matches[1];
|
||||||
$trailer = $matches[2];
|
$trailer = $matches[2];
|
||||||
}
|
}
|
||||||
|
|
||||||
$pairs = array(
|
$pairs = array(
|
||||||
']' => '[', # technically disallowed in URIs, but used in Java docs
|
']' => '[', // technically disallowed in URIs, but used in Java docs
|
||||||
')' => '(', # far too frequent in Wikipedia and MSDN
|
')' => '(', // far too frequent in Wikipedia and MSDN
|
||||||
);
|
);
|
||||||
$final = substr($uri, -1, 1);
|
$final = substr($uri, -1, 1);
|
||||||
if (isset($pairs[$final])) {
|
if (isset($pairs[$final])) {
|
||||||
@ -958,28 +958,28 @@ 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
|
// Try to find profiles this profile is subscribed to that have this nickname
|
||||||
$recipient = new Profile();
|
$recipient = new Profile();
|
||||||
# XXX: use a join instead of a subquery
|
// XXX: use a join instead of a subquery
|
||||||
$recipient->whereAdd('EXISTS (SELECT subscribed from subscription where subscriber = '.$sender->id.' and subscribed = id)', 'AND');
|
$recipient->whereAdd('EXISTS (SELECT subscribed from subscription where subscriber = '.$sender->id.' and subscribed = id)', 'AND');
|
||||||
$recipient->whereAdd('nickname = "' . trim($nickname) . '"', 'AND');
|
$recipient->whereAdd('nickname = "' . trim($nickname) . '"', 'AND');
|
||||||
if ($recipient->find(TRUE)) {
|
if ($recipient->find(TRUE)) {
|
||||||
# XXX: should probably differentiate between profiles with
|
// XXX: should probably differentiate between profiles with
|
||||||
# the same name by date of most recent update
|
// the same name by date of most recent update
|
||||||
return $recipient;
|
return $recipient;
|
||||||
}
|
}
|
||||||
# Try to find profiles that listen to this profile and that have this nickname
|
// Try to find profiles that listen to this profile and that have this nickname
|
||||||
$recipient = new Profile();
|
$recipient = new Profile();
|
||||||
# XXX: use a join instead of a subquery
|
// XXX: use a join instead of a subquery
|
||||||
$recipient->whereAdd('EXISTS (SELECT subscriber from subscription where subscribed = '.$sender->id.' and subscriber = id)', 'AND');
|
$recipient->whereAdd('EXISTS (SELECT subscriber from subscription where subscribed = '.$sender->id.' and subscriber = id)', 'AND');
|
||||||
$recipient->whereAdd('nickname = "' . trim($nickname) . '"', 'AND');
|
$recipient->whereAdd('nickname = "' . trim($nickname) . '"', 'AND');
|
||||||
if ($recipient->find(TRUE)) {
|
if ($recipient->find(TRUE)) {
|
||||||
# XXX: should probably differentiate between profiles with
|
// XXX: should probably differentiate between profiles with
|
||||||
# the same name by date of most recent update
|
// the same name by date of most recent update
|
||||||
return $recipient;
|
return $recipient;
|
||||||
}
|
}
|
||||||
# If this is a local user, try to find a local user with that nickname.
|
// If this is a local user, try to find a local user with that nickname.
|
||||||
$sender = User::staticGet($sender->id);
|
$sender = User::staticGet($sender->id);
|
||||||
if ($sender) {
|
if ($sender) {
|
||||||
$recipient_user = User::staticGet('nickname', $nickname);
|
$recipient_user = User::staticGet('nickname', $nickname);
|
||||||
@ -987,15 +987,15 @@ function common_relative_profile($sender, $nickname, $dt=NULL) {
|
|||||||
return $recipient_user->getProfile();
|
return $recipient_user->getProfile();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
# Otherwise, no links. @messages from local users to remote users,
|
// Otherwise, no links. @messages from local users to remote users,
|
||||||
# or from remote users to other remote users, are just
|
// or from remote users to other remote users, are just
|
||||||
# outside our ability to make intelligent guesses about
|
// outside our ability to make intelligent guesses about
|
||||||
return NULL;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// where should the avatar go for this user?
|
// 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;
|
global $config;
|
||||||
|
|
||||||
if ($size) {
|
if ($size) {
|
||||||
@ -1030,8 +1030,8 @@ function common_default_avatar($size) {
|
|||||||
return theme_path('default-avatar-'.$sizenames[$size].'.png');
|
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;
|
$url = null;
|
||||||
if (common_config('site','fancy')) {
|
if (common_config('site','fancy')) {
|
||||||
$url = common_fancy_url($action, $args);
|
$url = common_fancy_url($action, $args);
|
||||||
} else {
|
} else {
|
||||||
@ -1043,7 +1043,7 @@ function common_local_url($action, $args=NULL, $fragment=NULL) {
|
|||||||
return $url;
|
return $url;
|
||||||
}
|
}
|
||||||
|
|
||||||
function common_fancy_url($action, $args=NULL) {
|
function common_fancy_url($action, $args=null) {
|
||||||
switch (strtolower($action)) {
|
switch (strtolower($action)) {
|
||||||
case 'public':
|
case 'public':
|
||||||
if ($args && isset($args['page'])) {
|
if ($args && isset($args['page'])) {
|
||||||
@ -1229,7 +1229,7 @@ function common_fancy_url($action, $args=NULL) {
|
|||||||
case 'newmessage':
|
case 'newmessage':
|
||||||
return common_path('message/new' . (($args) ? ('?' . http_build_query($args)) : ''));
|
return common_path('message/new' . (($args) ? ('?' . http_build_query($args)) : ''));
|
||||||
case 'api':
|
case 'api':
|
||||||
# XXX: do fancy URLs for all the API methods
|
// XXX: do fancy URLs for all the API methods
|
||||||
switch (strtolower($args['apiaction'])) {
|
switch (strtolower($args['apiaction'])) {
|
||||||
case 'statuses':
|
case 'statuses':
|
||||||
switch (strtolower($args['method'])) {
|
switch (strtolower($args['method'])) {
|
||||||
@ -1256,7 +1256,7 @@ function common_fancy_url($action, $args=NULL) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function common_simple_url($action, $args=NULL) {
|
function common_simple_url($action, $args=null) {
|
||||||
global $config;
|
global $config;
|
||||||
/* XXX: pretty URLs */
|
/* XXX: pretty URLs */
|
||||||
$extra = '';
|
$extra = '';
|
||||||
@ -1281,7 +1281,7 @@ function common_date_string($dt) {
|
|||||||
$now = time();
|
$now = time();
|
||||||
$diff = $now - $t;
|
$diff = $now - $t;
|
||||||
|
|
||||||
if ($now < $t) { # that shouldn't happen!
|
if ($now < $t) { // that shouldn't happen!
|
||||||
return common_exact_date($dt);
|
return common_exact_date($dt);
|
||||||
} else if ($diff < 60) {
|
} else if ($diff < 60) {
|
||||||
return _('a few seconds ago');
|
return _('a few seconds ago');
|
||||||
@ -1365,18 +1365,18 @@ function common_redirect($url, $code=307) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function common_save_replies($notice) {
|
function common_save_replies($notice) {
|
||||||
# Alternative reply format
|
// Alternative reply format
|
||||||
$tname = false;
|
$tname = false;
|
||||||
if (preg_match('/^T ([A-Z0-9]{1,64}) /', $notice->content, $match)) {
|
if (preg_match('/^T ([A-Z0-9]{1,64}) /', $notice->content, $match)) {
|
||||||
$tname = $match[1];
|
$tname = $match[1];
|
||||||
}
|
}
|
||||||
# extract all @messages
|
// extract all @messages
|
||||||
$cnt = preg_match_all('/(?:^|\s)@([a-z0-9]{1,64})/', $notice->content, $match);
|
$cnt = preg_match_all('/(?:^|\s)@([a-z0-9]{1,64})/', $notice->content, $match);
|
||||||
|
|
||||||
$names = array();
|
$names = array();
|
||||||
|
|
||||||
if ($cnt || $tname) {
|
if ($cnt || $tname) {
|
||||||
# XXX: is there another way to make an array copy?
|
// XXX: is there another way to make an array copy?
|
||||||
$names = ($tname) ? array_unique(array_merge(array(strtolower($tname)), $match[1])) : array_unique($match[1]);
|
$names = ($tname) ? array_unique(array_merge(array(strtolower($tname)), $match[1])) : array_unique($match[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1384,8 +1384,8 @@ function common_save_replies($notice) {
|
|||||||
|
|
||||||
$replied = array();
|
$replied = array();
|
||||||
|
|
||||||
# store replied only for first @ (what user/notice what the reply directed,
|
// store replied only for first @ (what user/notice what the reply directed,
|
||||||
# we assume first @ is it)
|
// we assume first @ is it)
|
||||||
|
|
||||||
for ($i=0; $i<count($names); $i++) {
|
for ($i=0; $i<count($names); $i++) {
|
||||||
$nickname = $names[$i];
|
$nickname = $names[$i];
|
||||||
@ -1393,7 +1393,7 @@ function common_save_replies($notice) {
|
|||||||
if (!$recipient) {
|
if (!$recipient) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if ($i == 0 && ($recipient->id != $sender->id) && !$notice->reply_to) { # Don't save reply to self
|
if ($i == 0 && ($recipient->id != $sender->id) && !$notice->reply_to) { // Don't save reply to self
|
||||||
$reply_for = $recipient;
|
$reply_for = $recipient;
|
||||||
$recipient_notice = $reply_for->getCurrentNotice();
|
$recipient_notice = $reply_for->getCurrentNotice();
|
||||||
if ($recipient_notice) {
|
if ($recipient_notice) {
|
||||||
@ -1402,7 +1402,7 @@ function common_save_replies($notice) {
|
|||||||
$notice->update($orig);
|
$notice->update($orig);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
# Don't save replies from blocked profile to local user
|
// Don't save replies from blocked profile to local user
|
||||||
$recipient_user = User::staticGet('id', $recipient->id);
|
$recipient_user = User::staticGet('id', $recipient->id);
|
||||||
if ($recipient_user && $recipient_user->hasBlocked($sender)) {
|
if ($recipient_user && $recipient_user->hasBlocked($sender)) {
|
||||||
continue;
|
continue;
|
||||||
@ -1421,14 +1421,14 @@ function common_save_replies($notice) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Hash format replies, too
|
// Hash format replies, too
|
||||||
$cnt = preg_match_all('/(?:^|\s)@#([a-z0-9]{1,64})/', $notice->content, $match);
|
$cnt = preg_match_all('/(?:^|\s)@#([a-z0-9]{1,64})/', $notice->content, $match);
|
||||||
if ($cnt) {
|
if ($cnt) {
|
||||||
foreach ($match[1] as $tag) {
|
foreach ($match[1] as $tag) {
|
||||||
$tagged = Profile_tag::getTagged($sender->id, $tag);
|
$tagged = Profile_tag::getTagged($sender->id, $tag);
|
||||||
foreach ($tagged as $t) {
|
foreach ($tagged as $t) {
|
||||||
if (!$replied[$t->id]) {
|
if (!$replied[$t->id]) {
|
||||||
# Don't save replies from blocked profile to local user
|
// Don't save replies from blocked profile to local user
|
||||||
$t_user = User::staticGet('id', $t->id);
|
$t_user = User::staticGet('id', $t->id);
|
||||||
if ($t_user && $t_user->hasBlocked($sender)) {
|
if ($t_user && $t_user->hasBlocked($sender)) {
|
||||||
continue;
|
continue;
|
||||||
@ -1467,7 +1467,7 @@ function common_broadcast_notice($notice, $remote=false) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (common_config('queue', 'enabled')) {
|
if (common_config('queue', 'enabled')) {
|
||||||
# Do it later!
|
// Do it later!
|
||||||
return common_enqueue_notice($notice);
|
return common_enqueue_notice($notice);
|
||||||
} else {
|
} else {
|
||||||
return common_real_broadcast($notice, $remote);
|
return common_real_broadcast($notice, $remote);
|
||||||
@ -1532,7 +1532,7 @@ function common_twitter_broadcast($notice, $flink) {
|
|||||||
return $success;
|
return $success;
|
||||||
}
|
}
|
||||||
|
|
||||||
# Stick the notice on the queue
|
// Stick the notice on the queue
|
||||||
|
|
||||||
function common_enqueue_notice($notice) {
|
function common_enqueue_notice($notice) {
|
||||||
foreach (array('jabber', 'omb', 'sms', 'public') as $transport) {
|
foreach (array('jabber', 'omb', 'sms', 'public') as $transport) {
|
||||||
@ -1570,7 +1570,7 @@ function common_dequeue_notice($notice) {
|
|||||||
function common_real_broadcast($notice, $remote=false) {
|
function common_real_broadcast($notice, $remote=false) {
|
||||||
$success = true;
|
$success = true;
|
||||||
if (!$remote) {
|
if (!$remote) {
|
||||||
# Make sure we have the OMB stuff
|
// Make sure we have the OMB stuff
|
||||||
require_once(INSTALLDIR.'/lib/omb.php');
|
require_once(INSTALLDIR.'/lib/omb.php');
|
||||||
$success = omb_broadcast_remote_subscribers($notice);
|
$success = omb_broadcast_remote_subscribers($notice);
|
||||||
if (!$success) {
|
if (!$success) {
|
||||||
@ -1613,9 +1613,9 @@ function common_profile_url($nickname) {
|
|||||||
return common_local_url('showstream', array('nickname' => $nickname));
|
return common_local_url('showstream', array('nickname' => $nickname));
|
||||||
}
|
}
|
||||||
|
|
||||||
# Don't call if nobody's logged in
|
// 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();
|
$user = common_current_user();
|
||||||
assert(!is_null($user));
|
assert(!is_null($user));
|
||||||
common_element_start('form', array('id' => 'status_form',
|
common_element_start('form', array('id' => 'status_form',
|
||||||
@ -1635,7 +1635,7 @@ function common_notice_form($action=NULL, $content=NULL) {
|
|||||||
if ($action) {
|
if ($action) {
|
||||||
common_hidden('returnto', $action);
|
common_hidden('returnto', $action);
|
||||||
}
|
}
|
||||||
# set by JavaScript
|
// set by JavaScript
|
||||||
common_hidden('inreplyto', 'false');
|
common_hidden('inreplyto', 'false');
|
||||||
common_element('input', array('id' => 'status_submit',
|
common_element('input', array('id' => 'status_submit',
|
||||||
'name' => 'status_submit',
|
'name' => 'status_submit',
|
||||||
@ -1645,27 +1645,27 @@ function common_notice_form($action=NULL, $content=NULL) {
|
|||||||
common_element_end('form');
|
common_element_end('form');
|
||||||
}
|
}
|
||||||
|
|
||||||
# Should make up a reasonable root URL
|
// Should make up a reasonable root URL
|
||||||
|
|
||||||
function common_root_url() {
|
function common_root_url() {
|
||||||
return common_path('');
|
return common_path('');
|
||||||
}
|
}
|
||||||
|
|
||||||
# returns $bytes bytes of random data as a hexadecimal string
|
// returns $bytes bytes of random data as a hexadecimal string
|
||||||
# "good" here is a goal and not a guarantee
|
// "good" here is a goal and not a guarantee
|
||||||
|
|
||||||
function common_good_rand($bytes) {
|
function common_good_rand($bytes) {
|
||||||
# XXX: use random.org...?
|
// XXX: use random.org...?
|
||||||
if (file_exists('/dev/urandom')) {
|
if (file_exists('/dev/urandom')) {
|
||||||
return common_urandom($bytes);
|
return common_urandom($bytes);
|
||||||
} else { # FIXME: this is probably not good enough
|
} else { // FIXME: this is probably not good enough
|
||||||
return common_mtrand($bytes);
|
return common_mtrand($bytes);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function common_urandom($bytes) {
|
function common_urandom($bytes) {
|
||||||
$h = fopen('/dev/urandom', 'rb');
|
$h = fopen('/dev/urandom', 'rb');
|
||||||
# should not block
|
// should not block
|
||||||
$src = fread($h, $bytes);
|
$src = fread($h, $bytes);
|
||||||
fclose($h);
|
fclose($h);
|
||||||
$enc = '';
|
$enc = '';
|
||||||
@ -1706,7 +1706,7 @@ function common_ensure_syslog() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function common_log($priority, $msg, $filename=NULL) {
|
function common_log($priority, $msg, $filename=null) {
|
||||||
$logfile = common_config('site', 'logfile');
|
$logfile = common_config('site', 'logfile');
|
||||||
if ($logfile) {
|
if ($logfile) {
|
||||||
$log = fopen($logfile, "a");
|
$log = fopen($logfile, "a");
|
||||||
@ -1723,7 +1723,7 @@ function common_log($priority, $msg, $filename=NULL) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function common_debug($msg, $filename=NULL) {
|
function common_debug($msg, $filename=null) {
|
||||||
if ($filename) {
|
if ($filename) {
|
||||||
common_log(LOG_DEBUG, basename($filename).' - '.$msg);
|
common_log(LOG_DEBUG, basename($filename).' - '.$msg);
|
||||||
} else {
|
} else {
|
||||||
@ -1731,7 +1731,7 @@ 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);
|
$objstr = common_log_objstring($object);
|
||||||
$last_error = &PEAR::getStaticProperty('DB_DataObject','lastError');
|
$last_error = &PEAR::getStaticProperty('DB_DataObject','lastError');
|
||||||
common_log(LOG_ERR, $last_error->message . '(' . $verb . ' on ' . $objstr . ')', $filename);
|
common_log(LOG_ERR, $last_error->message . '(' . $verb . ' on ' . $objstr . ')', $filename);
|
||||||
@ -1739,7 +1739,7 @@ function common_log_db_error(&$object, $verb, $filename=NULL) {
|
|||||||
|
|
||||||
function common_log_objstring(&$object) {
|
function common_log_objstring(&$object) {
|
||||||
if (is_null($object)) {
|
if (is_null($object)) {
|
||||||
return "NULL";
|
return "null";
|
||||||
}
|
}
|
||||||
$arr = $object->toArray();
|
$arr = $object->toArray();
|
||||||
$fields = array();
|
$fields = array();
|
||||||
@ -1762,9 +1762,9 @@ function common_valid_tag($tag) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
# Does a little before-after block for next/prev page
|
// 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) {
|
if ($have_before || $have_after) {
|
||||||
common_element_start('div', array('id' => 'pagination'));
|
common_element_start('div', array('id' => 'pagination'));
|
||||||
@ -1800,7 +1800,7 @@ function common_pagination($have_before, $have_after, $page, $action, $args=NULL
|
|||||||
* and written by Evan Prodromou. */
|
* 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)
|
// No arg means accept anything (per HTTP spec)
|
||||||
if(!$accept) {
|
if(!$accept) {
|
||||||
return array($def => 1);
|
return array($def => 1);
|
||||||
}
|
}
|
||||||
@ -1810,7 +1810,7 @@ function common_accept_to_prefs($accept, $def = '*/*') {
|
|||||||
$parts = explode(',', $accept);
|
$parts = explode(',', $accept);
|
||||||
|
|
||||||
foreach($parts as $part) {
|
foreach($parts as $part) {
|
||||||
# FIXME: doesn't deal with params like 'text/html; level=1'
|
// FIXME: doesn't deal with params like 'text/html; level=1'
|
||||||
@list($value, $qpart) = explode(';', $part);
|
@list($value, $qpart) = explode(';', $part);
|
||||||
$match = array();
|
$match = array();
|
||||||
if(!isset($qpart)) {
|
if(!isset($qpart)) {
|
||||||
@ -1833,7 +1833,7 @@ function common_mime_type_match($type, $avail) {
|
|||||||
} elseif(array_key_exists('*/*', $avail)) {
|
} elseif(array_key_exists('*/*', $avail)) {
|
||||||
return '*/*';
|
return '*/*';
|
||||||
} else {
|
} else {
|
||||||
return NULL;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1906,24 +1906,24 @@ function common_notice_uri(&$notice) {
|
|||||||
array('notice' => $notice->id));
|
array('notice' => $notice->id));
|
||||||
}
|
}
|
||||||
|
|
||||||
# 36 alphanums - lookalikes (0, O, 1, I) = 32 chars = 5 bits
|
// 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
|
// 36 alphanums - lookalikes (0, O, 1, I) = 32 chars = 5 bits
|
||||||
static $codechars = '23456789ABCDEFGHJKLMNPQRSTUVWXYZ';
|
static $codechars = '23456789ABCDEFGHJKLMNPQRSTUVWXYZ';
|
||||||
$chars = ceil($bits/5);
|
$chars = ceil($bits/5);
|
||||||
$code = '';
|
$code = '';
|
||||||
for ($i = 0; $i < $chars; $i++) {
|
for ($i = 0; $i < $chars; $i++) {
|
||||||
# XXX: convert to string and back
|
// XXX: convert to string and back
|
||||||
$num = hexdec(common_good_rand(1));
|
$num = hexdec(common_good_rand(1));
|
||||||
# XXX: randomness is too precious to throw away almost
|
// XXX: randomness is too precious to throw away almost
|
||||||
# 40% of the bits we get!
|
// 40% of the bits we get!
|
||||||
$code .= $codechars[$num%32];
|
$code .= $codechars[$num%32];
|
||||||
}
|
}
|
||||||
return $code;
|
return $code;
|
||||||
}
|
}
|
||||||
|
|
||||||
# convert markup to HTML
|
// 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('/%%action.(\w+)%%/e', "common_local_url('\\1')", $c);
|
||||||
@ -1943,7 +1943,7 @@ function common_profile_avatar_url($profile, $size=AVATAR_PROFILE_SIZE) {
|
|||||||
|
|
||||||
function common_profile_uri($profile) {
|
function common_profile_uri($profile) {
|
||||||
if (!$profile) {
|
if (!$profile) {
|
||||||
return NULL;
|
return null;
|
||||||
}
|
}
|
||||||
$user = User::staticGet($profile->id);
|
$user = User::staticGet($profile->id);
|
||||||
if ($user) {
|
if ($user) {
|
||||||
@ -1954,12 +1954,12 @@ function common_profile_uri($profile) {
|
|||||||
if ($remote) {
|
if ($remote) {
|
||||||
return $remote->uri;
|
return $remote->uri;
|
||||||
}
|
}
|
||||||
# XXX: this is a very bad profile!
|
// XXX: this is a very bad profile!
|
||||||
return NULL;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
function common_canonical_sms($sms) {
|
function common_canonical_sms($sms) {
|
||||||
# strip non-digits
|
// strip non-digits
|
||||||
preg_replace('/\D/', '', $sms);
|
preg_replace('/\D/', '', $sms);
|
||||||
return $sms;
|
return $sms;
|
||||||
}
|
}
|
||||||
@ -1980,7 +1980,7 @@ function common_error_handler($errno, $errstr, $errfile, $errline, $errcontext)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
# FIXME: show error page if we're on the Web
|
// FIXME: show error page if we're on the Web
|
||||||
/* Don't execute PHP internal error handler */
|
/* Don't execute PHP internal error handler */
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -2139,7 +2139,7 @@ function common_message_form($content, $user, $to) {
|
|||||||
$mutual_users->free();
|
$mutual_users->free();
|
||||||
unset($mutual_users);
|
unset($mutual_users);
|
||||||
|
|
||||||
common_dropdown('to', _('To'), $mutual, NULL, FALSE, $to->id);
|
common_dropdown('to', _('To'), $mutual, null, FALSE, $to->id);
|
||||||
|
|
||||||
common_element_start('p');
|
common_element_start('p');
|
||||||
|
|
||||||
@ -2161,9 +2161,9 @@ function common_message_form($content, $user, $to) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function common_memcache() {
|
function common_memcache() {
|
||||||
static $cache = NULL;
|
static $cache = null;
|
||||||
if (!common_config('memcached', 'enabled')) {
|
if (!common_config('memcached', 'enabled')) {
|
||||||
return NULL;
|
return null;
|
||||||
} else {
|
} else {
|
||||||
if (!$cache) {
|
if (!$cache) {
|
||||||
$cache = new Memcache();
|
$cache = new Memcache();
|
||||||
@ -2181,21 +2181,21 @@ function common_memcache() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function common_compatible_license($from, $to) {
|
function common_compatible_license($from, $to) {
|
||||||
# XXX: better compatibility check needed here!
|
// XXX: better compatibility check needed here!
|
||||||
return ($from == $to);
|
return ($from == $to);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* These are almost identical, so we use a helper function */
|
/* 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);
|
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);
|
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,
|
common_element_start('form', array('id' => $type . '-' . $profile->id,
|
||||||
'method' => 'post',
|
'method' => 'post',
|
||||||
'class' => $type,
|
'class' => $type,
|
||||||
@ -2217,4 +2217,3 @@ function common_blocking_form($type, $label, $profile, $args=NULL) {
|
|||||||
common_element_end('form');
|
common_element_end('form');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user