We are no longer offering accounts on this server. Consider https://gitlab.freedesktop.org/ as a place to host projects.

Commit f6bf9529 authored by Evan Prodromou's avatar Evan Prodromou

Merge branch 'testing'

parents f987273f 30c2e2ce
......@@ -290,6 +290,18 @@ StartRegistrationTry: before validating and saving a new user
EndRegistrationTry: after saving a new user (note: no profile or user object!)
- $action: action object being shown
StartAvatarFormData: before displaying avatar form
- $action: action object being shown
EndAvatarFormData: after displaying avatar form
- $action: action object being shown
StartAvatarSaveForm: before saving the avatar
- $action: action object being shown
EndAvatarSaveForm: after saving the avatar
- $action: action object being shown
StartNewQueueManager: before trying to start a new queue manager; good for plugins implementing new queue manager classes
- $qm: empty queue manager to set
......@@ -574,3 +586,57 @@ EndShortenUrl: After a URL has been shortened
- $shortenerName: name of the requested shortener
- $shortenedUrl: short version of the url
StartCssLinkElement: Before a <link rel="stylesheet"..> element is written
- $action
- &$src
- &$theme
- &$media
EndCssLinkElement: After a <link rel="stylesheet"..> element is written
- $action
- $src
- $theme
- $media
StartStyleElement: Before a <style...> element is written
- $action
- &$code
- &$type
- &$media
EndStyleElement: After a <style...> element is written
- $action
- $code
- $type
- $media
StartScriptElement: Before a <script...> element is written
- $action
- &$src
- &$type
EndScriptElement: After a <script...> element is written
- $action
- $src
- $type
StartInlineScriptElement: Before a <script...> element is written
- $action
- &$code
- &$type
EndInlineScriptElement: After a <script...> element is written
- $action
- $code
- $type
StartLog: Before writing to the logs
- &$priority
- &$msg
- &$filename
EndLog: After writing to the logs
- $priority
- $msg
- $filename
# Warning: do not transform tabs to spaces in this file.
all : translations
core_mo = $(patsubst %.po,%.mo,$(wildcard locale/*/LC_MESSAGES/statusnet.po))
plugin_mo = $(patsubst %.po,%.mo,$(wildcard plugins/*/locale/*/LC_MESSAGES/*.po))
translations : $(core_mo) $(plugin_mo)
clean :
rm -f $(core_mo) $(plugin_mo)
updatepo :
php scripts/update_po_templates.php --all
%.mo : %.po
msgfmt -o $@ $<
......@@ -2,8 +2,8 @@
README
------
StatusNet 0.8.2 ("Life and How to Live It")
1 Nov 2009
StatusNet 0.9.0 ("Stand") Release Candidate 2
22 Dec 2009
This is the README file for StatusNet (formerly Laconica), the Open
Source microblogging platform. It includes installation instructions,
......@@ -16,10 +16,10 @@ About
StatusNet (formerly Laconica) is a Free and Open Source microblogging
platform. It helps people in a community, company or group to exchange
short (140 character) messages over the Web. Users can choose which
people to "follow" and receive only their friends' or colleagues'
status messages. It provides a similar service to sites like Twitter,
Jaiku, Yammer, and Plurk.
short (140 characters, by default) messages over the Web. Users can
choose which people to "follow" and receive only their friends' or
colleagues' status messages. It provides a similar service to sites
like Twitter, Jaiku, Yammer, and Plurk.
With a little work, status messages can be sent to mobile phones,
instant messenger programs (GTalk/Jabber), and specially-designed
......@@ -77,81 +77,96 @@ for additional terms.
New this version
================
This is a minor feature and bugfix release since version 0.8.1,
released Aug 26 2009. Notable changes this version:
- New script for deleting user accounts. Not particularly safe or
community-friendly. Better for deleting abusive accounts than for
users who are 'retiring'.
- Improved detection of URLs in notices, specifically for punctuation
chars like ~, :, $, _, -, +, !, @, and %.
- Removed some extra <dl> semantic HTML code.
- Correct error in status-network database ini file (having multiple
statusnet sites with a single codebase)
- Fixed error output for Twitter posting failures.
- Fixed bug in Twitter queue handler that requeued inapplicable
notices ad infinitum.
- Improve FOAF output for remote users.
- new commands to join and leave groups.
- Fixed bug in which you cannot turn off importing friends timelines
flag.
- Better error handling in Twitter posting.
- Show oEmbed data for XHTML files as well as plain HTML.
- Updated bug database link in README.
- add support for HTTP Basic Auth in PHP CGI or FastCGI (e.g. GoDaddy).
- autofocus input to selected entry elements depending on page.
- updated layout for filter-by-tag form.
- better layout for inbox and outbox pages.
- fix highlighting search terms in attributes of notice list elements.
- Correctly handle errors in linkback plugin.
- Updated biz theme.
- Updated cloudy theme.
- Don't match '::' as an IPv6 address.
- Use the same decision logic for deciding whether to mark an
attachment as an enclosure in RSS or as a paperclip item in Web
output.
- Fixed a bug in the Piwik plugin that hard-coded the site ID.
- Add a param, inreplyto, to notice/new to allow an explicit response
to another notice.
- Show username in subject of emails.
- Check if avatar exists before trying to delete it.
- Correctly add omb_version to response for request token in OMB.
- Add a few more SMS carriers.
- Add a few more notice sources.
- Vary: header.
- Improvements to the AutoCompletePlugin.
- Check for 'dl' before using it.
- Make it impossible to delete self-subscriptions via the API.
- Fix pagination of tagged user pages.
- Make PiwikAnalyticsPlugin work with addPlugin().
- Removed trailing single space in user nicknames in notice lists.
- Show context link if a notice starts a conversation.
- blacklist all files and directories in install dir.
- handle GoDaddy-style PATH_INFO, including script name.
- add home_timeline synonym for friends_timeline.
- Add a popup window for the realtime plugin.
- Add some more streams for the realtime plugin.
- Fix a bug that overwrote group creation timestamp on every edit.
- Moved HTTP error code strings to a class variable.
- The Twitter API now returns server errors in the correct format.
- Reset the doctype for HTML output.
- Fixed a number of notices.
- Don't show search suggestions for private sites.
- Some corrections to FBConnect nav overrides.
- Slightly less database-intensive session management.
- Updated name of software in installer script.
- Include long-form attachment URLs if url-shortener is disabled.
- Include updated localisations for Polish, Greek, Hebrew, Icelandic,
Norwegian, and Chinese.
- Include upstream fixes to gettext.php.
- Correct for regression in Facebook API for updates.
- Ignore "Sent from my iPhone" (and similar) in mail updates.
- Use the NICKNAME_FMT constant for detecting nicknames.
- Check for site servername config'd.
- Compatibility fix for empty status updates with Twitter API.
- Option to show files privately (EXPERIMENTAL! Use with caution.)
- a script to register a new user.
- a script to make a user admin of a group.
This is a major feature release since version 0.8.2, released Nov 1 2009.
Notable changes this version:
- Records of deleted notices are stored without the notice content.
- Much of the optional core featureset has been moved to plugins.
- OpenID support moved from core to a plugin. Helps test the strength of
our plugin architecture and makes it easy to disable this
functionality for e.g. intranet sites.
- Many additional hook events (see EVENTS.txt for details).
- OMB 0.1 support re-implemented using libomb.
- Re-structure database so notices, messages, bios and group
descriptions can be over 140 characters. Limit defined by
site administrator as configuration option; can be unlimited.
- Configuration data now optionally stored in the database, which
overrides any settings in config files.
- Twitter integration re-implemented as a plugin.
- Facebook integration re-implemented as a plugin.
- Role-based authorization framework. Users can have named roles, and
roles can have rights (e.g., to delete notices, change configuration
data, or ban uncooperative users). Default roles 'admin' (for
configuration) and 'moderator' (for community management) added.
- Plugin for PubSubHubBub (PuSH) support.
- Considerable code style cleanup to meet PEAR code standards.
- Made a common library for HTTP-client access which uses available
HTTP libraries where possible.
- Added statuses/home_timeline method to API.
- Hooks for plugins to handle notices offline, either by defining
their own queue handler scripts or to use a default plugin queue
handler script.
- Plugins can now modify the database schema, adding their own tables
or modifying existing ones.
- Groups API.
- Twitter API supports Web caching for some methods.
- Twitter API refactored into one-action-per-method.
- Realtime plugin supports a tear-off window.
- FOAF for groups.
- Moved all JavaScript tags to just before </body> by default,
significantly speeding up apparent page load time.
- Added a Realtime plugin for Orbited server.
- Added a mobile plugin to give a more mobile-phone-friendly layout
when a mobile browser is detected.
- Use CSS sprites for most common icons.
- Fixes for images and buttons on Web output.
- New plugin requires that users validate their email before posting.
- New plugin UserFlag lets users flag other profiles for review.
- Considerably better i18n support. Use TranslateWiki to update
translations.
- Notices and profiles now store location information.
- New plugin, Geonames, for turning location names and lat/long pairs
into structured IDs and vice versa. Architecture reusable for other
systems.
- Better check of license compatibility between site licenses.
- Some improvements in XMPP output.
- Media upload in the API.
- Replies appear in the user's inbox.
- Improved the UI on the bookmarklet.
- StatusNet identities can be used as OpenID identities.
- Script to register a user.
- Script to make someone a group admin.
- Script to make someone a site admin or moderator.
- 'login' command.
- Pluggable authentication.
- LDAP authentication plugin.
- Script for console interaction with the site (!).
- Users don't see group posts from people they've blocked.
- Admin panel interface for changing site configuration.
- Users can be sandboxed (limited contributions) or silenced
(no contributions) by moderators.
- Many changes to make language usage more consistent.
- Sphinx search moved to a plugin.
- GeoURL plugin.
- Profile and group lists support hAtom.
- Massive refactoring of util.js.
- Mapstraction plugin to show maps on inbox and profile pages.
- Play/pause buttons for realtime notices.
- Support for geo microformat.
- Partial support for feed subscriptions, RSSCloud, PubSubHubBub.
- Support for geolocation in browser (Chrome, Firefox).
- Quit trying to negotiate HTML format. Always use text/html.
We lose, and so do Web standards. Boo.
- Better logging of request info.
- Better output for errors in Web interface.
- No longer store .mo files; these need to be generated.
- Minify plugin.
- Events to allow pluginizing logger.
- New framework for plugin localization.
- Gravatar plugin.
- Add support for "repeats" (similar to Twitter's "retweets").
- Support for repeats in Twitter API.
- Better notification of direct messages.
Prerequisites
=============
......@@ -358,7 +373,7 @@ It's possible to configure the software so it looks like this instead:
These "fancy URLs" are more readable and memorable for users. To use
fancy URLs, you must either have Apache 2.x with .htaccess enabled and
mod_redirect enabled, -OR- know how to configure "url redirection" in
mod_rewrite enabled, -OR- know how to configure "url redirection" in
your server.
1. Copy the htaccess.sample file to .htaccess in your StatusNet
......@@ -384,6 +399,18 @@ like:
If you changed your HTTP server configuration, you may need to restart
the server first.
If it doesn't work, double-check that AllowOverride for the StatusNet
directory is 'All' in your Apache configuration file. This is usually
/etc/httpd.conf, /etc/apache/httpd.conf, or (on Debian and Ubuntu)
/etc/apache2/sites-available/default. See the Apache documentation for
.htaccess files for more details:
http://httpd.apache.org/docs/2.2/howto/htaccess.html
Also, check that mod_rewrite is installed and enabled:
http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html
Sphinx
------
......@@ -1407,6 +1434,21 @@ contentlimit: max length of the plain-text content of a message.
Default is null, meaning to use the site-wide text limit.
0 means no limit.
logincommand
------------
Configuration options for the login command.
disabled: whether to enable this command. If enabled, users who send
the text 'login' to the site through any channel will
receive a link to login to the site automatically in return.
Possibly useful for users who primarily use an XMPP or SMS
interface and can't be bothered to remember their site
password. Note that the security implications of this are
pretty serious and have not been thoroughly tested. You
should enable it only after you've convinced yourself that
it is safe. Default is 'false'.
Plugins
=======
......@@ -1573,6 +1615,7 @@ if anyone's been overlooked in error.
* Federico Marani
* Craig Andrews
* mEDI
* Brett Taylor
Thanks also to the developers of our upstream library code and to the
thousands of people who have tried out Identi.ca, installed StatusNet,
......
......@@ -160,12 +160,11 @@ class AllAction extends ProfileAction
function showPageTitle()
{
$user =& common_current_user();
$user = common_current_user();
if ($user && ($user->id == $this->user->id)) {
$this->element('h1', null, _("You and friends"));
} else {
$this->element('h1', null, sprintf(_('%s and friends'), $this->user->nickname));
}
}
}
......@@ -98,6 +98,17 @@ class ApiBlockCreateAction extends ApiAuthAction
return;
}
// Don't allow blocking yourself!
if ($this->user->id == $this->other->id) {
$this->clientError(
_("You cannot block yourself!"),
403,
$this->format
);
return;
}
if ($this->user->hasBlocked($this->other)
|| $this->user->block($this->other)
) {
......
......@@ -175,7 +175,7 @@ class ApiDirectMessageNewAction extends ApiAuthAction
return;
}
mail_notify_message($message, $this->user, $this->other);
$message->notify();
if ($this->format == 'xml') {
$this->showSingleXmlDirectMessage($message);
......
<?php
/**
* StatusNet, the distributed open-source microblogging tool
*
* Repeat a notice through the API
*
* PHP version 5
*
* LICENCE: 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
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* @category API
* @package StatusNet
* @author Evan Prodromou <evan@status.net>
* @copyright 2009 StatusNet, Inc.
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
* @link http://status.net/
*/
if (!defined('STATUSNET')) {
exit(1);
}
require_once INSTALLDIR . '/lib/apiauth.php';
require_once INSTALLDIR . '/lib/mediafile.php';
/**
* Repeat a notice through the API
*
* @category API
* @package StatusNet
* @author Evan Prodromou <evan@status.net>
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
* @link http://status.net/
*/
class ApiStatusesRetweetAction extends ApiAuthAction
{
var $original = null;
/**
* Take arguments for running
*
* @param array $args $_REQUEST args
*
* @return boolean success flag
*
*/
function prepare($args)
{
parent::prepare($args);
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
$this->clientError(_('This method requires a POST.'),
400, $this->format);
return false;
}
$id = $this->trimmed('id');
$this->original = Notice::staticGet('id', $id);
if (empty($this->original)) {
$this->clientError(_('No such notice.'),
400, $this->format);
return false;
}
$this->user = $this->auth_user;
if ($this->user->id == $notice->profile_id) {
$this->clientError(_('Cannot repeat your own notice.'),
400, $this->format);
return false;
}
$profile = $this->user->getProfile();
if ($profile->hasRepeated($id)) {
$this->clientError(_('Already repeated that notice.'),
400, $this->format);
return false;
}
return true;
}
/**
* Handle the request
*
* Make a new notice for the update, save it, and show it
*
* @param array $args $_REQUEST data (unused)
*
* @return void
*/
function handle($args)
{
parent::handle($args);
$repeat = $this->original->repeat($this->user->id, $this->source);
common_broadcast_notice($repeat);
$this->showNotice($repeat);
}
/**
* Show the resulting notice
*
* @return void
*/
function showNotice($notice)
{
if (!empty($notice)) {
if ($this->format == 'xml') {
$this->showSingleXmlStatus($notice);
} elseif ($this->format == 'json') {
$this->show_single_json_status($notice);
}
}
}
}
<?php
/**
* StatusNet, the distributed open-source microblogging tool
*
* Show up to 100 repeats of a notice
*
* PHP version 5
*
* LICENCE: 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
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* @category API
* @package StatusNet
* @author Evan Prodromou <evan@status.net>
* @copyright 2009 StatusNet, Inc.
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
* @link http://status.net/
*/
if (!defined('STATUSNET')) {
exit(1);
}
require_once INSTALLDIR . '/lib/apiauth.php';
require_once INSTALLDIR . '/lib/mediafile.php';
/**
* Show up to 100 repeats of a notice
*
* @category API
* @package StatusNet
* @author Evan Prodromou <evan@status.net>