<?php
/*
* StatusNet - the distributed open-source microblogging tool
- * Copyright (C) 2008, 2009, StatusNet, Inc.
+ * Copyright (C) 2008-2011, StatusNet, Inc.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
$authenticatedUser = false;
if (Event::handle('StartCheckPassword', array($nickname, $password, &$authenticatedUser))) {
- $user = User::staticGet('nickname', common_canonical_nickname($nickname));
+
+ if (common_is_email($nickname)) {
+ $user = User::staticGet('email', common_canonical_email($nickname));
+ } else {
+ $user = User::staticGet('nickname', common_canonical_nickname($nickname));
+ }
+
if (!empty($user)) {
if (!empty($password)) { // never allow login with blank password
if (0 == strcmp(common_munge_password($password, $user->id),
return null;
}
- $rm = Remember_me::staticGet($code);
+ $rm = Remember_me::staticGet('code', $code);
if (!$rm) {
common_log(LOG_WARNING, 'No such remember code: ' . $code);
return null;
}
- $user = User::staticGet($rm->user_id);
+ $user = User::staticGet('id', $rm->user_id);
if (!$user) {
common_log(LOG_WARNING, 'No such user for rememberme: ' . $rm->user_id);
function common_canonical_tag($tag)
{
+ // only alphanum
+ $tag = preg_replace('/[^\pL\pN]/u', '', $tag);
$tag = mb_convert_case($tag, MB_CASE_LOWER, "UTF-8");
- return str_replace(array('-', '_', '.'), '', $tag);
+ $tag = substr($tag, 0, 64);
+ return $tag;
}
function common_valid_profile_tag($str)
$ssl = common_is_sensitive($action);
if (common_config('site','fancy')) {
- $url = common_path(mb_substr($path, 1), $ssl, $addSession);
+ $url = common_path($path, $ssl, $addSession);
} else {
if (mb_strpos($path, '/index.php') === 0) {
- $url = common_path(mb_substr($path, 1), $ssl, $addSession);
+ $url = common_path($path, $ssl, $addSession);
} else {
- $url = common_path('index.php'.$path, $ssl, $addSession);
+ $url = common_path('index.php/'.$path, $ssl, $addSession);
}
}
Event::handle('EndLocalURL', array(&$action, &$params, &$fragment, &$addSession, &$url));
function common_enqueue_notice($notice)
{
- static $localTransports = array('omb',
- 'ping');
+ static $localTransports = array('ping');
$transports = array();
if (common_config('sms', 'enabled')) {
}
/**
- * Broadcast profile updates to OMB and other remote subscribers.
+ * Legacy function to broadcast profile updates to OMB remote subscribers.
+ *
+ * XXX: This probably needs killing, but there are several bits of code
+ * that broadcast profile changes that need to be dealt with. AFAIK
+ * this function is only used for OMB. -z
*
* Since this may be slow with a lot of subscribers or bad remote sites,
* this is run through the background queues if possible.
*/
function common_broadcast_profile(Profile $profile)
{
- $qm = QueueManager::get();
- $qm->enqueue($profile, "profile");
- return true;
+ Event::handle('BroadcastProfile', array($profile));
}
function common_profile_url($nickname)
function common_profile_uri($profile)
{
- if (!$profile) {
- return null;
- }
- $user = User::staticGet($profile->id);
- if ($user) {
- return $user->uri;
- }
+ $uri = null;
- $remote = Remote_profile::staticGet($profile->id);
- if ($remote) {
- return $remote->uri;
+ if (!empty($profile)) {
+ if (Event::handle('StartCommonProfileURI', array($profile, &$uri))) {
+ $user = User::staticGet($profile->id);
+ if (!empty($user)) {
+ $uri = $user->uri;
+ }
+ Event::handle('EndCommonProfileURI', array($profile, &$uri));
+ }
}
+
// XXX: this is a very bad profile!
- return null;
+ return $uri;
}
function common_canonical_sms($sms)
}
}
}
+
+function common_is_email($str)
+{
+ return (strpos($str, '@') !== false);
+}