Brion Vibber [Mon, 31 Jan 2011 21:12:56 +0000 (13:12 -0800)]
Performance counters: records number of total and unique cache get/set/incr/deletes and queries, and logs to syslog.
$config['site']['logperf'] = true; // to record & dump total hits of each type and the runtime to syslog
$config['site']['logperf_detail'] = true; // very verbose -- dump the individual cache keys and queries as they get used (may contain private info in some queries)
Seeing 180 cache gets on a timeline page seems not unusual currently; since these run in serial, even relatively small roundtrip times can add up heavily.
We should consider ways to reduce the number of round trips, such as more frequently storing compound objects or the output of processing in memcached.
Doing parallel multi-key lookups could also help by collapsing round-trip times, but might not be easy to fit into SN's object model. (For things like streams this should actually work pretty well -- grab the list, then when it's returned go grab all the individual items in parallel and return the list)
Brion Vibber [Mon, 31 Jan 2011 20:22:50 +0000 (12:22 -0800)]
Use cachedQuery on File::getAttachments, plus other cleanups:
* dropped unnecessary join on notice table
* made the function actually static, since it makes no sense as an instance variable. The only caller (in AttachmentList) is updated.
Brion Vibber [Mon, 31 Jan 2011 19:45:19 +0000 (11:45 -0800)]
Fix for ticket #3020: set MySQL session time_zone variable to UTC ('+0:00') so TIMESTAMP column values are comparable against our other UTC timestamp values.
MySQL stores TIMESTAMP columns as UTC, but with a local time interface. (SRSLY?!) DATETIME columns are always bare and assumed to be local time, but we keep only UTC in them.
Forcing the session time_zone to UTC means we won't have to worry as much about what we're sending/receiving in there.
Brion Vibber [Thu, 27 Jan 2011 20:27:31 +0000 (12:27 -0800)]
Session GC fix: save session.modified field as UTC so our comparisons work.
Had to tweak statusnet.ini to remove the DB_DATAOBJECT_MYSQLTIMESTAMP bitfield constant on session.modified; while it sounds like a useful and legit setting, it actually just means that DB_DataObject silently fails to pass through any attempts to explicitly set the value. As a result, MySQL does its default behavior which is to insert the current *LOCAL* time, which is useless.
This was leading to early GC west of GMT, or late GC east of it. Early GC could at worst destroy all live sessions (whoever's session *triggered* GC is fine, as the session then gets saved right back.)
Brion Vibber [Wed, 26 Jan 2011 23:49:57 +0000 (15:49 -0800)]
Fix ticket #3013: MAX_FILE_SIZE hidden fields were incorrectly placed
In order to apply to PHP's POST processing, the MAX_FILE_SIZE field must appear *before* the file upload field. They were incorrectly placed after, where they had no effect on POST processing.
Brion Vibber [Wed, 26 Jan 2011 22:57:52 +0000 (14:57 -0800)]
Fix ticket #3016: when using non-AJAX form of the ostatus subscription initiation for non-local group joins, show the "group" field instead of a blank "user" field
Brion Vibber [Wed, 26 Jan 2011 22:57:52 +0000 (14:57 -0800)]
Fix ticket #3016: when using non-AJAX form of the ostatus subscription initiation for non-local group joins, show the "group" field instead of a blank "user" field
Zach Copley [Wed, 26 Jan 2011 18:50:05 +0000 (10:50 -0800)]
Merge branch '0.9.x' of gitorious.org:statusnet/mainline into 0.9.x
* '0.9.x' of gitorious.org:statusnet/mainline: (102 commits)
Fix for ticket #3010: blocks are now applied against the original poster of repeats.
Fix XML API output for several profile update methods that returned a <user> entry but didn't set namespaces, causing XML parse failures.
Fix for ticket #3007: .bmp avatar uploads weren't being properly converted to PNG in all cases
Bookmark saving robustness fixes
remove boilerplate from NewMenuPlugin
Localisation updates from http://translatewiki.net.
L10n consistency updates in wording and punctuation. Translator documentation added/updated. Superfluous whitespace removed.
Add translator documentation Fix L10n issues Remove superfluous whitespace
Add correct punctuation for client exceptions.
Add correct punctuation for client exception.
Add correct punctuation for client exception.
Add email field to Twitter registration form; needed when RequireValidatedEmail plugin is present.
Add email field on openid registration; needed to register if RequireValidatedEmail plugin is also present.
Event hook points needed for recaptcha on facebook login form (untested, but should be legit -- same adds as openid & twitter reg forms)
Event hook points needed to run Recaptcha on Twitter registration
Fix inconsistent use of 'name' vs 'fullname' in tw_fields member variable
Add Start/EndRegistrationData event hooks in finishopenidlogin: allows recaptcha to add its captcha display to the form (checked since addition of StartRegistrationTry)
Ticket #2999: RequireValidatedEmail plugin now also prevents group creation by unvalidated users.
Localisation updates from http://translatewiki.net.
Translator comments added L10n updates Remove superfluous whitespace Number parameters in message when two or more are used ClientException and ServerException should end with a period
...
Brion Vibber [Mon, 24 Jan 2011 22:16:15 +0000 (14:16 -0800)]
Fix for ticket #3010: blocks are now applied against the original poster of repeats.
Previously, if someone you subscribe to repeats a notice by someone you've blocked, you got the message and had to just roll your eyes.
Now blocks are checked against both the current notice's posting profile, and the poster of the original if it's a repeat.
Brion Vibber [Mon, 24 Jan 2011 20:22:47 +0000 (12:22 -0800)]
Fix for ticket #3007: .bmp avatar uploads weren't being properly converted to PNG in all cases
Part of the reported issue was previuosly fixed by dc497ed0 (smaller size images being blanked).
This commit fixes the remaining bug with original-size avatars being left as BMP (which could include the 96px size for instance, which could cause problems in browsers not supporting BMP natively)
Added ImageFile::copyTo() as a convenient alias for resizeTo() when not resizing; this performs the BMP/XPM/XBM->PNG conversion if needed, or copies the original file.
Copying instead of using move_uploaded_file() is fine here since:
a) the files are cleaned up on script completion anyway (vs moving to remove it)
b) we're already performing getimagesize() and possibly load/resize on the file before this point (vs needing to move the file into a usable area to work with open_basedir restrictions that prevent working directly with uploaded files in the temp dir; since this would fail anyway, we lose nothing)
ImageFile::preferredType() now works on $this->type instead of asking for one, to make it handier to use from outside. (This is still needed in order for calling code to generate a target filename.)
Recommended for future:
* additional consolidation between the various ways of uploading avatars (touched avatarsettings, grouplogo, and apiaccountupdateprofileimage with similar minor changes)
* consolidate type checks and file naming into Avatar class
Brion Vibber [Thu, 20 Jan 2011 23:40:59 +0000 (15:40 -0800)]
Add Start/EndRegistrationData event hooks in finishopenidlogin: allows recaptcha to add its captcha display to the form (checked since addition of StartRegistrationTry)
Translator comments added
L10n updates
Remove superfluous whitespace
Number parameters in message when two or more are used
ClientException and ServerException should end with a period
Zach Copley [Thu, 20 Jan 2011 06:58:07 +0000 (22:58 -0800)]
Merge branch 'testing' of gitorious.org:statusnet/mainline into testing
* 'testing' of gitorious.org:statusnet/mainline: (63 commits)
Add a scary 'experimental feture' warning & are-you-sure prompt on moveuser.php
fix wrong datatypes (saving string instead of array) in AtomPub notice processing
Account moving is a background activity
return a 409 Conflict when subscription already exists
OStatusPlugin does discovery in Profile::fromURI()
considerably more logging and error checking in AccountMover
add a log method to AccountMover
normalize accounts and check for return in HTTP for moving
move account-moving classes to their own libraries
execution protection on discovery.php
PHPCS discovery.php
Move discovery library from OStatus plugin to core
Revert "Revert "0.9.7alpha1""
first example of moving a user
Parse properties of links in XRD files
Add the Atom username to the XRD output
preserve activities in object
let callers pass in an XMLOutputter to output to
execution protection on discovery.php
PHPCS linkheader.php
...
Brion Vibber [Tue, 18 Jan 2011 20:52:38 +0000 (12:52 -0800)]
Start cleaning up profile sidebar: link the header text on subscription/subscriber/groups sections to the tabs so users don't have to dance around looking for the link if they don't have enough to trigger a 'more' link.
Consolidated some of that link generation; sooooo much more dupe code to kill in this section!
Brion Vibber [Tue, 18 Jan 2011 20:34:27 +0000 (12:34 -0800)]
Cleanup stray PHP 4-style references in hook calls for navigation bars. We can't replace the live action from here, and don't need a reference to keep the object mutable. Dumping the references helps ensure we don't end up getting errors when things calling the hooks might forget to use the reference and the PHP error reporting settings expose this fact at us.
These affect twitterstatusfetcher.php on all 32-bit installs and some 64-bit installs (depending on whether the version of the JSON library reads the large numbers as long or double internally). 64-bit bug is harder to see as it tends to manifest as off-by-one due to losing a bit of precision off the end.