Commit Graph

11737 Commits

Author SHA1 Message Date
Brion Vibber 55b1f3d84c Scalability work on user backup stream generation.
UserActivityStream -- used to create a full activity stream including subscriptions, favorites, notices, etc -- normally buffers everything into memory at once. This is infeasible for accounts with long histories of serious usage; it can take tens of seconds just to pull all records from the database, and working with them all in memory is very likely to hit resource limits.
This commit adds an alternate mode for this class which avoids pulling notices until during the actual output. Instead of pre-sorting and buffering all the notices, empty spaces between the other activities are filled in with notices as we're making output. This means more smaller queries spread out during operations, and less stuff kept in memory.

Callers (backupaccount action, and backupuser.php) which can stream their output pass an $outputMode param of UserActivityStream::OUTPUT_RAW, and during getString() it'll send straight to output as well as slurping the notices in this extra funky fashion.
Other callers will let it default to the OUTPUT_STRING mode, which keeps the previous behavior.

There should be a better way to do this, swapping out the stringer output for raw output more consitently.
2011-02-25 12:15:38 -08:00
Zach Copley 77c280a48b Revert "FacebookBridge - Add lots of debug output (revert me)"
This reverts commit c44a622449.
2011-02-24 14:21:50 -08:00
Zach Copley 7d50189ec2 FacebookBridge - Don't hinder autoloading if the Facebook ID and secret aren't set 2011-02-24 13:57:21 -08:00
Zach Copley de6d46ea4b FacebookBridge - dequeue messages that aren't bound for Facebook 2011-02-24 13:29:56 -08:00
Zach Copley c44a622449 FacebookBridge - Add lots of debug output (revert me) 2011-02-24 12:59:37 -08:00
Zach Copley 65dbf485e4 FacebookBridge - make a huge fuss if we can't create a valid Facebookclient 2011-02-24 12:52:31 -08:00
Brion Vibber 8eca1b8dac Fix ticket #3057: apply HTML escaping on special characters in Twitter import
Changes the replacement of Twitter "entities" from in-place reverse ordering ('to preserve indices') to a forward-facing append-in-chunks that pulls in both the text and link portions, and escapes them all.
This unfortunately means first *de*-escaping the < and > that Twitter helpfully adds for us.... and any literal &blah;s that get written. This seems to match Twitter's web UI, however horrid it is.
2011-02-21 16:36:39 -08:00
Brion Vibber 2a42dac72a Partial implementation for ticket #2442: MobileProfile plugin should allow manual switching between regular and mobile rendering modes
http://status.net/open-source/issues/2442

Notes:
* Mapstraction causes JavaScript errors in XHTML mode, breaking our code if we're run later so the link doesn't work to get back to Desktop.
* not 100% sure how safe feature detection is here?
* Currently will be useless but visible links if no JS available; need to fall back to server-side for limited browsers
2011-02-21 16:10:07 -08:00
Brion Vibber f3c822cc15 Ticket #3011: Add attachments/uploads and attachments/file_quota to api/statusnet/config.(xml|json)
file_quota is adjusted from the defined value to take into account the maximum upload size limits in PHP, or cropped to 0 if uploads are disabled.
This can be used by client apps to determine maximum size for an attachment.
2011-02-21 15:52:12 -08:00
Brion Vibber 3fb4b92cd6 Fix ticket #3001: Twitter bridge was replacing original form of @-mentions with canonical form unexpectedly
Now using the original text form of @-mentions and #-tags, as in Twitter's own HTMLification.
Canonical forms are still used in generating links, where it's polite to match the canonical form.
2011-02-21 15:01:57 -08:00
Brion Vibber 8e7c279c9e Fix issue #3035: search highlighting broke URLs in some imported messages (Twitter)
Search highlighting was being done with a regex on raw HTML text, followed by a second regex undoing replacements within double-quoted attribute values.
This broke on imported Twitter messages, as the way we generate the markup uses single quotes on the attributes, which didn't get matched by the second regex.
I've replaced this do-then-undo cycle by dividing up the import HTML into freetext spans and tags; the freetext gets replaced, while the tags are left untouched.
2011-02-21 14:14:32 -08:00
Brion Vibber eb7e3ee528 Fixes for ticket #3052: some commands started triggering when extra text is supposed to suppress them
Regressions caused by bad refactoring in commit 21feac3bea.
Test cases in tests/CommandInterpreterTest.php were made against the pre-refactoring code, and now check out with the fixed code.
Failures were caused by not changing logic structure when moving from multiple exit points (each if point would return directly with a null or an object) to setting a result variable and then falling through to a common exit point. Without the if statements being restructured, the result variable would just get overridden by the next case.
2011-02-21 12:12:10 -08:00
Brion Vibber 11e033f05c CommandInterpreter test cases to guard against regressions 2011-02-21 12:12:10 -08:00
Brion Vibber 6b18f86e01 Issue #3049 - resync doc/im with the help command text (various additions since doc was last edited) 2011-02-21 11:23:07 -08:00
Brion Vibber 98b1fe07c6 Blow user:site_owner cache when granting/revoking 'owner' role 2011-02-17 16:46:08 -08:00
Evan Prodromou ccdd47bdb4 use fallback URIs for groups when filling in attention in Notice::asActivity() 2011-02-17 10:51:00 -05:00
Evan Prodromou 39c6e34098 add path separators for Plugin::path() 2011-02-16 13:56:30 -05:00
Evan Prodromou 2b869fa23f Merge remote branch 'origin/master' 2011-02-14 12:41:52 -05:00
Evan Prodromou 40533ee851 backup action is read-only 2011-02-14 12:41:20 -05:00
Zach Copley 7de1aaf86d Atom - output nickname for atom:name in atom:author 2011-02-13 00:40:28 +00:00
Brion Vibber 30eddaf168 Update translator comment for the url shortener "free service" marker: free as in open 2011-02-11 14:11:37 -08:00
Brion Vibber 454a980bd4 Fix for failure/exception on subscription/subscriber lists when deleted profiles are stuck in cached list.
Workaround for deleted profiles still appearing in cached subscriptions/subscribers lists: if we couldn't fetch them, don't include them in the ArrayWrapper.
ArrayWrapper doesn't deal well with null entries, which aren't meant to happen in how it works. This code has recently changed from dying directly with a PHP fatal error in that case to throwing an exception, which allows tracking down the caller.

It looks like there might be some cases where profiles and their matching subscriptions get deleted, but the subscription entries don't get properly cleared from cache... that still bears further investigation. The regular code path looks ok; calls Subscription::cancel() from code called in Profile::delete(); but if they're batch-deleted instead of one row at a time, that could fail to trigger.
2011-02-11 13:21:53 -08:00
Evan Prodromou ffe2da4c80 Merge branch 'master' of gitorious.org:statusnet/mainline 2011-02-11 16:01:57 -05:00
Evan Prodromou f6e614b894 add plugins/sslpath setting, default to site path/plugins 2011-02-11 15:58:47 -05:00
Brion Vibber c92358fa7b add --all and --suspicious options for update-profile-data.php 2011-02-11 12:23:03 -08:00
Brion Vibber f30744c7c5 refactor for multi.... 2011-02-11 12:13:33 -08:00
Brion Vibber f7b431d60b woops 2011-02-11 12:08:35 -08:00
Brion Vibber 91535365b3 Work in progress: update-profile-data.php to update ostatus profile info from the current feed 2011-02-11 11:55:23 -08:00
Evan Prodromou dc424ab63a Merge branch 'master' of gitorious.org:statusnet/mainline 2011-02-10 22:23:06 -05:00
Evan Prodromou d876418acd Merge remote branch 'dev/master' 2011-02-10 22:21:56 -05:00
Evan Prodromou ff2553b9c7 get the subject first if you go to the feed 2011-02-11 03:01:24 +00:00
Evan Prodromou fc317f8b72 check legacy <actor> and <subject> first from feed 2011-02-11 02:59:18 +00:00
Brion Vibber b09276635c Merge branch 'master' into 0.9.x 2011-02-10 12:04:13 -08:00
Brion Vibber 2bf8a68908 Fix for ticket #3039: TwitterBridge was incorrectly sending repeats of Twitter-bound messages if the repeater has sending of things to Twitter disabled.
A repeat/retweet is roughly equivalent to an active direct post, so should follow the posting rules, rather than always sending over as we do for fave notifications.
2011-02-10 10:53:24 -08:00
Zach Copley 857e35c175 Merge branch 'master' of gitorious.org:statusnet/mainline
* 'master' of gitorious.org:statusnet/mainline:
  Show aside primary on settings pages for all themes.
  correct error in README on default for deletion
2011-02-10 10:26:36 -08:00
Zach Copley d9ace57625 FacebookBridge - remove unnecessary warning and noisy debugging statement 2011-02-10 10:24:38 -08:00
Samantha Doherty 8a87e9869f Show aside primary on settings pages for all themes. 2011-02-10 13:23:20 -05:00
Evan Prodromou 523e8c86e9 correct error in README on default for deletion 2011-02-10 10:11:30 -05:00
Evan Prodromou 8fa44e58f9 Try not to wipe out good data with empty values in Ostatus_profile::updateProfile()
Output from 0.9.6 PuSH feeds seems to have a rump <author> but no
<activity:actor>. It was overwriting valid and useful data set up at
subscribe time.

This fix tries to avoid overwriting data. However, it may prevent
updates that delete data.

Bug: 3028
2011-02-10 09:39:40 -05:00
Zach Copley df19e88323 Atom output - Reinstate activity:actor and activity:subject
w/deprecation warnings. Also add statusnet:profile_info back into
author/actor.
2011-02-09 23:18:14 -08:00
Brion Vibber a0c669808e Merge branch 'master' of gitorious.org:statusnet/mainline 2011-02-09 13:50:31 -08:00
Brion Vibber a76f067631 Partial revert of 073f3e99: restores the original non-hashbang URLs for twitter users as the remote profile.
Should fix issue #3027: twitter user avatars not getting imported.

Due to the change in URI, all twitter users that had been previously seen were getting new profile entries, which tried to save the same avatar. This would fail as Avatar.url has a unique index.
Note: now anything new seen in the last couple days in production will still potentially conflict.
2011-02-09 13:46:48 -08:00
Evan Prodromou bfa053ef17 Remove executable bits from Auth_SASL files 2011-02-09 11:04:52 -05:00
Evan Prodromou 9c4294fb50 include Auth_SASL from PEAR in extlib 2011-02-09 11:03:44 -05:00
Brion Vibber 956b3ef4d1 Merge branch 'ssltweak' 2011-02-09 00:11:28 -08:00
Brion Vibber dc5daa237e Further tweak for ssl paths in plugin check (sslserver may be set but empty) 2011-02-09 00:09:25 -08:00
Evan Prodromou c273876298 Merge branch 'master' of gitorious.org:statusnet/mainline 2011-02-09 03:09:24 -05:00
Evan Prodromou 10500e7f85 ensure*() functions throw exceptions for errors 2011-02-09 03:08:52 -05:00
Brion Vibber 9efedfc217 Tweak to use site/server fallback when no plugins/sslserver or site/sslserver and generating plugin CSS 2011-02-09 00:04:01 -08:00
Brion Vibber 75bf756111 LOG_WARN -> LOG_WARNING 2011-02-08 23:34:37 -08:00