Commit Graph

3000 Commits

Author SHA1 Message Date
Brion Vibber
f3beed6889 Fix presence notification on XMPP thread (now foreground, not background) 2010-01-25 13:49:02 -08:00
Brion Vibber
1ab2483296 Fix presence notification on XMPP thread (now foreground, not background) 2010-01-25 13:48:24 -08:00
Zach Copley
4daf76212a - Had to remove checking read vs. read-write in OAuth authenticated methods
- Will now pick up source attr from OAuth app
2010-01-25 00:51:56 +00:00
Zach Copley
8b24b5ac7b Add Start/EndSetApiUser events when setting API user via OAuth 2010-01-24 16:46:37 -08:00
Zach Copley
1f8ddf716d Check for read vs. read-write access on OAuth authenticated API mehtods. 2010-01-24 16:36:06 -08:00
Zach Copley
9e7f47652d Revoke access token UI 2010-01-24 16:36:05 -08:00
Zach Copley
cff2cfd7a7 Fix approval date and label on apps list 2010-01-24 16:36:05 -08:00
Zach Copley
c0eee277d1 Make sure applications are really looked up by consumer key 2010-01-24 16:36:05 -08:00
Zach Copley
e101a6df6b Rework application registration workflow to be more private 2010-01-24 16:36:04 -08:00
Zach Copley
8da5e98cba OAuth 1.0 working now 2010-01-24 16:36:04 -08:00
Sarven Capadisli
8d02a897dc Updated markup for application edit form; image, radios 2010-01-24 16:36:04 -08:00
Sarven Capadisli
a009052036 A little minimization 2010-01-24 16:36:04 -08:00
Sarven Capadisli
276c4a2a23 Added vcard and photo classes 2010-01-24 16:36:04 -08:00
Sarven Capadisli
34cc03c617 Moved application image inside the anchor 2010-01-24 16:36:03 -08:00
Sarven Capadisli
40c6d09c9f Added missing end tag 2010-01-24 16:36:03 -08:00
Zach Copley
8e91e05392 Make API auth handle OAuth requests w/access tokens 2010-01-24 16:36:03 -08:00
Sarven Capadisli
d998c4b1b8 Fixed tabbing 2010-01-24 16:36:03 -08:00
Sarven Capadisli
0b90f7645e Updated class for application list 2010-01-24 16:36:03 -08:00
Sarven Capadisli
4fb9b43aa2 Updated markup for application edit form submits 2010-01-24 16:36:03 -08:00
Zach Copley
c78937537e Better detial in connected OAuth applications list 2010-01-24 16:36:03 -08:00
Zach Copley
a0b8438773 Exchanging authorized request tokens for access tokens working 2010-01-24 16:36:02 -08:00
Zach Copley
e9e448bcee Workflow for request tokens and authorizing request tokens 2010-01-24 16:36:02 -08:00
Zach Copley
fa81a580bb Action for issuing a request token 2010-01-24 16:36:02 -08:00
Zach Copley
6472331be5 Stubs for API OAuth token exchange stuff 2010-01-24 16:36:02 -08:00
Zach Copley
48e5f2b3c5 Add icons/icon upload to Oauth apps 2010-01-24 16:36:02 -08:00
Zach Copley
3c2b05d222 Workflow for registering new OAuth apps pretty much done. 2010-01-24 16:36:02 -08:00
Zach Copley
9d958fd539 Reorganized the OAuth app URLs and more work on the register app workflow 2010-01-24 16:36:01 -08:00
Zach Copley
ae46bc5fff Started work on interface for displaying connected OAuth apps 2010-01-24 16:36:01 -08:00
Brion Vibber
cb07fd29a3 Use new StatusNetwork->serverName() to get full domain for wildcard config until we rebuild queues to be based on nicknames.
Fixes live bug with new *.status.net sites breaking queuedaemon.php
2010-01-24 16:01:19 -08:00
Evan Prodromou
49d500e3e1 defaults for nickname and wildcard 2010-01-24 16:01:08 -08:00
Brion Vibber
60ce2ff3d0 Use new StatusNetwork->serverName() to get full domain for wildcard config until we rebuild queues to be based on nicknames.
Fixes live bug with new *.status.net sites breaking queuedaemon.php
2010-01-24 15:44:09 -08:00
Evan Prodromou
7cd666ae92 defaults for nickname and wildcard 2010-01-24 18:19:13 -05:00
Sarven Capadisli
fed111f08a Removed mobile stylesheet from core output. If Mobile support is
seeked, MobileProfile plugin should be used.
2010-01-24 00:25:31 +01:00
Sarven Capadisli
0f3658d3da Updated path to farbtastic stylesheet 2010-01-24 00:21:14 +01:00
Sarven Capadisli
51fdba09d4 Event hooks for before and after site_notice 2010-01-24 00:14:19 +01:00
Brion Vibber
a66181c900 Fix unqueuemanager for updated QueueHandler interface 2010-01-22 14:06:20 -08:00
Brion Vibber
6d055ce09e Fix unqueuemanager for updated QueueHandler interface 2010-01-22 13:49:05 -08:00
Brion Vibber
6e4cad71e5 Fix for stuck queue messages: wrap processing in stomp transactions so our lack of an ACK if PHP dies actually triggers redelivery.
Previously, messages once delivered would just get stuck in the queue seemingly forever if they never got ACKed.
Note this could lead to partial duplication, for instance if the OMB or Twitter queue handlers die after 1/2 of the outgoing sends.

Recommendations:
* catch exceptions more aggressively within queue handlers (so only PHP fatal errors are likely to kill in the middle)
* for processing that involves sending to multiple clients, consider a second queue similar to the XMPP output, eg for OMB:
 - first queue gets delivery list and builds message data, enqueueing it for each target address
 - second queue can handle each individual outgoing message (and attempt redelivery etc separately)

This would also protect better against a recurring error preventing delivery in the second part, and could spread out any slow sends over multiple threads.
2010-01-22 12:52:56 -08:00
Brion Vibber
c7507e7e9d XMPP queued output & initial retooling of DB queue manager to support non-Notice objects.
Queue handlers for XMPP individual & firehose output now send their XML stanzas
to another output queue instead of connecting directly to the chat server. This
lets us have as many general processing threads as we need, while all actual
XMPP input and output go through a single daemon with a single connection open.

This avoids problems with multiple connected resources:
* multiple windows shown in some chat clients (psi, gajim, kopete)
* extra load on server
* incoming message delivery forwarding issues

Database changes:
* queue_item drops 'notice_id' in favor of a 'frame' blob.
  This is based on Craig Andrews' work branch to generalize queues to take any
  object, but conservatively leaving out the serialization for now.
  Table updater (preserves any existing queued items) in db/rc3to09.sql

Code changes to watch out for:
* Queue handlers should now define a handle() method instead of handle_notice()
* QueueDaemon and XmppDaemon now share common i/o (IoMaster) and respawning
  thread management (RespawningDaemon) infrastructure.
* The polling XmppConfirmManager has been dropped, as the message is queued
  directly when saving IM settings.
* Enable $config['queue']['debug_memory'] to output current memory usage at
  each run through the event loop to watch for memory leaks

To do:
* Adapt XMPP i/o to component connection mode for multi-site support.
* XMPP input can also be broken out to a queue, which would allow the actual
  notice save etc to be handled by general queue threads.
* Make sure there are no problems with simply pushing serialized Notice objects
  to queues.
* Find a way to improve interactive performance of the database-backed queue
  handler; polling is pretty painful to XMPP.
* Possibly redo the way QueueHandlers are injected into a QueueManager. The
  grouping used to split out the XMPP output queue is a bit awkward.

Conflicts:

	scripts/xmppdaemon.php
2010-01-22 12:52:36 -08:00
Brion Vibber
99866a459b Fix for stuck queue messages: wrap processing in stomp transactions so our lack of an ACK if PHP dies actually triggers redelivery.
Previously, messages once delivered would just get stuck in the queue seemingly forever if they never got ACKed.
Note this could lead to partial duplication, for instance if the OMB or Twitter queue handlers die after 1/2 of the outgoing sends.

Recommendations:
* catch exceptions more aggressively within queue handlers (so only PHP fatal errors are likely to kill in the middle)
* for processing that involves sending to multiple clients, consider a second queue similar to the XMPP output, eg for OMB:
 - first queue gets delivery list and builds message data, enqueueing it for each target address
 - second queue can handle each individual outgoing message (and attempt redelivery etc separately)

This would also protect better against a recurring error preventing delivery in the second part, and could spread out any slow sends over multiple threads.
2010-01-22 12:35:05 -08:00
Brion Vibber
0e852def6a XMPP queued output & initial retooling of DB queue manager to support non-Notice objects.
Queue handlers for XMPP individual & firehose output now send their XML stanzas
to another output queue instead of connecting directly to the chat server. This
lets us have as many general processing threads as we need, while all actual
XMPP input and output go through a single daemon with a single connection open.

This avoids problems with multiple connected resources:
* multiple windows shown in some chat clients (psi, gajim, kopete)
* extra load on server
* incoming message delivery forwarding issues

Database changes:
* queue_item drops 'notice_id' in favor of a 'frame' blob.
  This is based on Craig Andrews' work branch to generalize queues to take any
  object, but conservatively leaving out the serialization for now.
  Table updater (preserves any existing queued items) in db/rc3to09.sql

Code changes to watch out for:
* Queue handlers should now define a handle() method instead of handle_notice()
* QueueDaemon and XmppDaemon now share common i/o (IoMaster) and respawning
  thread management (RespawningDaemon) infrastructure.
* The polling XmppConfirmManager has been dropped, as the message is queued
  directly when saving IM settings.
* Enable $config['queue']['debug_memory'] to output current memory usage at
  each run through the event loop to watch for memory leaks

To do:
* Adapt XMPP i/o to component connection mode for multi-site support.
* XMPP input can also be broken out to a queue, which would allow the actual
  notice save etc to be handled by general queue threads.
* Make sure there are no problems with simply pushing serialized Notice objects
  to queues.
* Find a way to improve interactive performance of the database-backed queue
  handler; polling is pretty painful to XMPP.
* Possibly redo the way QueueHandlers are injected into a QueueManager. The
  grouping used to split out the XMPP output queue is a bit awkward.
2010-01-21 22:40:35 -08:00
Brion Vibber
8dafe09ab2 Option to log slow db queries or all db queries
$config['db']['log_queries'] = true; // all
$config['db']['log_slow_queries'] = 10; // queries taking > 10 seconds
2010-01-21 11:07:52 -08:00
Evan Prodromou
c7f14cd777 allow all rights reserved, private data 2010-01-19 00:04:58 -05:00
Evan Prodromou
71f519f64a add event for showing content license in action 2010-01-18 23:25:45 -05:00
Evan Prodromou
21c3e08804 Merge branch 'master' of git@gitorious.org:statusnet/mainline 2010-01-16 07:48:59 -08:00
Evan Prodromou
d6b8b13116 change rc3 to beta3 2010-01-16 07:48:46 -08:00
Brion Vibber
598072468c --xmpp-only hack for queuedaemon.php to run separate queue daemon with only xmpp threads 2010-01-15 11:13:06 -08:00
Brion Vibber
038287c1ff fix for --skip-xmpp hack -- forgot to do it on the ping & confirm handlers 2010-01-14 17:14:41 -08:00
Brion Vibber
58bc33850a temporary --skip-xmpp flag on queuedaemon.php, allows to run queue daemons but skip subscription to xmpp-based queues
(still working on making these behave gracefully when server is down)
2010-01-14 15:32:37 -08:00
Brion Vibber
2f32181c93 Keep handler registration per-site to fix queue registration in mixed config environment 2010-01-14 13:22:33 -08:00
Brion Vibber
8a7171fde6 Don't barf on io loop if xmpp connection failed 2010-01-13 23:38:51 -08:00
Brion Vibber
4b839cfc53 fix for non-% memory soft limit 2010-01-13 21:41:42 -08:00
Brion Vibber
b25deaacea queue daemon fixes: path fix for xmpp, suppress warning in memcached init 2010-01-13 21:24:36 -08:00
Sarven Capadisli
085406ea88 Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x 2010-01-14 01:50:21 +00:00
Sarven Capadisli
acc48289e5 Update geo location UI for notice form where the geo data info is only
visible on @title of the enable/disable button.
2010-01-14 01:48:57 +00:00
Evan Prodromou
fba840ed56 Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x 2010-01-13 17:30:22 -08:00
Evan Prodromou
52bbb2262a rev version in lib/common.php 2010-01-13 17:29:58 -08:00
Brion Vibber
82e57b6204 Fix for dbqueuehandler: if a queue is unrecognized, discard entries rather than attempting to re-run them forever! 2010-01-13 16:33:03 -08:00
Evan Prodromou
464ce741a4 remove session info in syslog 2010-01-13 16:19:20 -08:00
Brion Vibber
0e1f2d4b47 Fix regressions in XMPP output during inbox refactoring
- NOTICE_INBOX_SOURCE_* constants moved to common.php since Notice_inbox.php not always loaded
- fixed typo in User::staticGet() call which caused user #1 to receive messages once for each subscriber instead of for him/herself
- 'continue' -> 'continue 2' inside switch() statement to fix loop escape (PHP considers switch() a looping construct for break & continue)
2010-01-13 18:17:36 +00:00
Sarven Capadisli
2000d2d36b Added timeout error handling for geo location 2010-01-13 15:36:42 +00:00
Sarven Capadisli
9b2fdefe39 Using a JSON object for NoticeDataGeo text instead 2010-01-13 15:21:43 +00:00
Evan Prodromou
430bd69312 add events for subscribing to people and joining groups 2010-01-13 02:16:13 -08:00
Evan Prodromou
23599da91e refactor jabber broadcast for notice_inbox removal 2010-01-13 01:13:49 -08:00
Evan Prodromou
155e4ef4f3 remove some debugging statements from util.php 2010-01-12 23:58:25 -08:00
Evan Prodromou
cc25d3baf0 ws changes for phpcs 2010-01-12 23:56:21 -08:00
Evan Prodromou
e34ece8b06 Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x 2010-01-12 23:25:25 -08:00
Brion Vibber
ec145b73fc Major refactoring of queue handlers to support running multiple sites in one daemon.
Key changes:
* Initialization code moved from common.php to StatusNet class;
  can now switch configurations during runtime.
* As a consequence, configuration files must now be idempotent...
  Be careful with constant, function or class definitions.
* Control structure for daemons/QueueManager/QueueHandler has been refactored;
  the run loop is now managed by IoMaster run via scripts/queuedaemon.php
  IoManager subclasses are woken to handle socket input or polling, and may
  cover multiple sites.
* Plugins can implement notice queue handlers more easily by registering a
  QueueHandler class; no more need to add a daemon.

The new QueueDaemon runs from scripts/queuedaemon.php:

* This replaces most of the old *handler.php scripts; they've been refactored
  to the bare handler classes.
* Spawns multiple child processes to spread load; defaults to CPU count on
  Linux and Mac OS X systems, or override with --threads=N
* When multithreaded, child processes are automatically respawned on failure.
* Threads gracefully shut down and restart when passing a soft memory limit
  (defaults to 90% of memory_limit), limiting damage from memory leaks.
* Support for UDP-based monitoring: http://www.gitorious.org/snqmon

Rough control flow diagram:
QueueDaemon -> IoMaster -> IoManager
                           QueueManager [listen or poll] -> QueueHandler
                           XmppManager [ping & keepalive]
                           XmppConfirmManager [poll updates]

Todo:

* Respawning features not currently available running single-threaded.
* When running single-site, configuration changes aren't picked up.
* New sites or config changes affecting queue subscriptions are not yet
  handled without a daemon restart.
* SNMP monitoring output to integrate with general tools (nagios, ganglia)
* Convert XMPP confirmation message sends to use stomp queue instead of polling
* Convert xmppdaemon.php to IoManager?
* Convert Twitter status, friends import polling daemons to IoManager
* Clean up some error reporting and failure modes
* May need to adjust queue priorities for best perf in backlog/flood cases

Detailed code history available in my daemon-work branch:
http://www.gitorious.org/~brion/statusnet/brion-fixes/commits/daemon-work
2010-01-12 20:45:09 -08:00
Brion Vibber
2b10e359fe Avoid PHP notice when outputting API data for remote users; no $user means no $user->timezone :)
Trying to get property of non-object (/srv/com.leuksman.status/lib/api.php:171)
2010-01-12 12:28:24 -08:00
Evan Prodromou
392bc728c7 Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x 2010-01-12 12:11:37 -08:00
Brion Vibber
cbc3c7b141 Ticket 2152: avoid fatal when php.ini disables dl via disabled_functions (function_exists returns false even though it exists and cannot be redefined) 2010-01-12 07:24:43 -08:00
Evan Prodromou
7e5c15fa80 Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x 2010-01-11 16:23:48 -08:00
Zach Copley
3a9e24e077 Fix format specifier on page title 2010-01-11 23:21:09 +00:00
Evan Prodromou
57ac912519 Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x 2010-01-11 15:12:13 -08:00
Evan Prodromou
5d676352c3 strip out session ID from root URL 2010-01-11 15:09:46 -08:00
Sarven Capadisli
c7b768b4c8 Removed period 2010-01-11 16:33:46 +01:00
Evan Prodromou
8809e577b2 Merge branch 'sessionidparam' into 0.9.x
Conflicts:
	lib/command.php
2010-01-11 00:45:26 -08:00
Evan Prodromou
ae7469a127 accept session from 2010-01-11 08:39:02 +00:00
Evan Prodromou
e0eb51e4bb add session ID to local URL when server parts differ 2010-01-10 23:51:57 -08:00
Evan Prodromou
dd7195346c Sever -> server in error message 2010-01-10 22:59:50 -08:00
Evan Prodromou
ad63a9518c Sever -> server in error message 2010-01-10 22:59:32 -08:00
Evan Prodromou
15b88697a7 Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x 2010-01-10 14:18:54 -08:00
Evan Prodromou
866dfa6822 Merge branch 'master' into 0.9.x
Conflicts:
	classes/Memcached_DataObject.php
2010-01-10 14:18:19 -08:00
Evan Prodromou
7aa43f3c93 defaultDesign was undefined; fixed that 2010-01-10 14:10:31 -08:00
Evan Prodromou
6fdd52467d catch exceptions from snapshot 2010-01-10 14:06:52 -08:00
Zach Copley
63eddf216f Fix routes for social graph API methods -- this takes care of Ticket #2151 2010-01-10 14:03:10 -08:00
Evan Prodromou
8cf1ef862d catch exceptions from snapshot 2010-01-10 13:54:26 -08:00
Evan Prodromou
30409f7bad debugging code to find passed-in objects in munge_password 2010-01-10 12:07:49 -08:00
Siebrand Mazeland
4af6b7f5c3 Lots of tiny message changes.
* Mostly punctuation updates so that the same message is used consistently in all of StatusNet.
* Some cases of "Title Case" removed, because that does not appear to be used consistently.
2010-01-10 12:26:24 +01:00
Siebrand Mazeland
0c4dbf1588 Merge branch '0.9.x' of git://gitorious.org/statusnet/mainline into 0.9.x 2010-01-10 01:46:39 +01:00
Siebrand Mazeland
b0aea3f9c1 * L10n updates: consistent puctuation
* i18n updates: number parameters if more than one are being used
2010-01-10 01:45:58 +01:00
Craig Andrews
7dde17862a i18n work in the mail handler 2010-01-09 19:04:53 -05:00
Evan Prodromou
ed5828f30e Redirect to a one-time-password when ssl and regular server are different 2010-01-09 15:26:06 -08:00
Craig Andrews
055f3fdddb Add an IMAP daemon so StatusNet can process incoming user posts via catch-all mailbox (in addition to the pre-existing script alias method) 2010-01-08 18:52:43 -05:00
Sarven Capadisli
8901e01692 Added i18n text for @title values in geo sharing actions 2010-01-08 18:07:02 +00:00
Sarven Capadisli
54c18e68da Some code cleaning for geo UI 2010-01-08 13:58:23 +00:00
Sarven Capadisli
0fcd91cf1e Using json2.js 2010-01-08 13:26:48 +00:00
Evan Prodromou
2aa0ab9777 let system administrators disallow certain admin panels 2010-01-08 01:00:29 -08:00
Evan Prodromou
505cd382f3 ptiturl.com correct name 2010-01-07 23:38:19 -08:00
Evan Prodromou
9693b2cf2f add default plugin version information 2010-01-07 17:33:46 -08:00
Evan Prodromou
4a4ac7a108 add a version action to give credit and list plugins 2010-01-07 17:26:40 -08:00
Evan Prodromou
2c33e61b94 add default plugins and load them 2010-01-07 16:13:36 -08:00
Ciaran Gultnieks
14421d9db3 Correction to previous commit 2010-01-07 21:01:07 +00:00
Ciaran Gultnieks
deeaafe712 Fixes to bugs where non-local messages were being wrong put in the public timeline and public xmpp feed 2010-01-07 20:59:31 +00:00
Evan Prodromou
f4fa785fb7 Revert "Ticket 2107: remove "not implemented" items from sms/xmpp help; nobody likes being told what they can't do!"
This reverts commit 5d9a2eb17e.

These are commands that are/were implemented by Twitter, and we don't
(yet) implemented. People will be looking for that information.
2010-01-06 23:24:24 -08:00
Brion Vibber
5d9a2eb17e Ticket 2107: remove "not implemented" items from sms/xmpp help; nobody likes being told what they can't do!
Also broke up the localized help message into line-by-line pieces to ease translation maintenance.
2010-01-06 14:42:46 -08:00
Craig Andrews
541053e84b The structure return by parse_url is an associative array, not an object. 2010-01-06 17:08:01 -05:00
Zach Copley
d6db8e5817 Don't output notices from deleted users. 2010-01-06 13:43:46 -08:00
Zach Copley
013e6dfdd4 Don't output notices from deleted users. 2010-01-06 13:40:28 -08:00
Zach Copley
9960ec2143 Support an 'extra' clause when definining a column (e.g.: 'on update
CURRENT_TIMESTAMP').
2010-01-05 23:19:13 -08:00
Brion Vibber
aff78e5121 Cache fixes:
* We now cache negative lookups; clear them in Memcached_DataObject->insert()
* Mark file.url as a unique key in statusnet.ini so its negative lookups are cleared properly (first save of a notice with a new URL was failing due to double-insert)
* Now using serialization for default in-process cache instead of just saving objects; avoids potential corruption if you save an object to cache, change the original object, then fetch the same key from cache again
2010-01-05 15:05:53 -08:00
Craig Andrews
250bcfa8dc Require users to login to view attachments on private sites
Thank you jeff-themovie for this implementation!
2010-01-05 17:49:28 -05:00
Craig Andrews
9e2e0605ed Move Authorization and Authentication plugin structures into core, instead of as plugins.
This move makes sense as you can addPlugin('Authentication') for example - these are abstract classes designed to be implemented, not used directly.
2010-01-05 13:56:22 -05:00
Brion Vibber
16254c14c8 Typo fix in the new default in-process cache; spewed notice warnings on deletion, breaking XHR responses. 2010-01-05 09:54:43 -08:00
Brion Vibber
af95005bc4 Ticket 2141: bugs with weighted popularity lists across year boundary.
Consolidated several separate implementations of the same weighting algorithm into common_sql_weight() and fixed some bugs...
For MySQL, now using timestampdiff() instead of subtraction for the comparison, so we get sane results when the year doesn't match, and utc_timestamp() rather than now() so we don't get negative ages for recent items with local server timezone.
Unknown whether the same problems affect PostgreSQL, but note that it lacks the timestampdiff() SQL function.
2010-01-04 13:01:17 -08:00
Evan Prodromou
6add2693b0 Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x 2010-01-04 10:55:21 -10:00
Evan Prodromou
a1821ec8af default value for cache::get() changed from null to false 2010-01-04 09:59:47 -10:00
Brion Vibber
6911e1c797 Ticket 2141: bugs with weighted popularity lists across year boundary.
Consolidated several separate implementations of the same weighting algorithm into common_sql_weight() and fixed some bugs...
For MySQL, now using timestampdiff() instead of subtraction for the comparison, so we get sane results when the year doesn't match, and utc_timestamp() rather than now() so we don't get negative ages for recent items with local server timezone.
Unknown whether the same problems affect PostgreSQL, but note that it lacks the timestampdiff() SQL function.
2010-01-04 11:55:27 -08:00
Brion Vibber
783a2e249b Fix for auto_increment parameter in auto-created tables via checkschema.
Update FeedSub plugin for non-Plugin_DataObject setup and working checkschema updates.
2010-01-04 10:30:58 -08:00
Evan Prodromou
bfa3aa0e7f Remove logging from default cache 2010-01-03 11:28:15 -10:00
Evan Prodromou
de74c64490 Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x 2010-01-02 21:35:46 -10:00
Evan Prodromou
cc5534d180 First version of Memcache plugin 2010-01-02 21:16:59 -10:00
Evan Prodromou
1e1062ca9c Make cache.php PHPCS-clean 2010-01-02 21:00:42 -10:00
Evan Prodromou
65d07b657d invert if for cache handling 2010-01-02 20:37:30 -10:00
Evan Prodromou
e1de1bf0fe fix default array implementation checks 2010-01-02 20:32:56 -10:00
Evan Prodromou
c5d23e27a6 Make caching a plugin system 2010-01-02 20:26:33 -10:00
Evan Prodromou
3b912ac97e fixup memcache functions 2010-01-02 16:27:04 -10:00
Sarven Capadisli
ec5850d26a Changed location share representation to be more like the file
attachment. Init UI. Probably a little buggy.
2010-01-03 00:33:41 +00:00
Evan Prodromou
a9d8359208 Merge branch 'master' into 0.9.x
Conflicts:
	classes/Memcached_DataObject.php
2010-01-01 11:20:25 -10:00
Sarven Capadisli
01dbee2ba5 Initial UI for geo location share option in notice form 2009-12-31 18:41:10 +00:00
Sarven Capadisli
dde6415a6a Moved JavaScript dependant stuff out of noticeform. 2009-12-31 18:08:21 +00:00
Sarven Capadisli
8872d91483 Removed style information out of HTML 2009-12-31 16:44:24 +00:00
Sarven Capadisli
0320bf2fb3 Use the location setting profile as secondary 2009-12-31 15:46:43 +00:00
Sarven Capadisli
8e6a8961d9 Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x 2009-12-31 14:37:23 +00:00
Sarven Capadisli
c986f59143 If user is sharing their location (based on profile setting), then
enable it for form notice by default. This can be overriden by the
cookie to preserve states.
2009-12-31 14:34:07 +00:00
Sarven Capadisli
4efa841ba3 If user doesn't want to share their location (which is globally set
from their profile settings), don't bother to output form data for
lat/long in the notice form.
2009-12-31 14:24:27 +00:00
Sarven Capadisli
923e27b01a Fix to grab and use the actual lat/lon values from the user profile 2009-12-31 14:23:11 +00:00
Sarven Capadisli
5871480844 Moved shareLocation data from formActions() to formData() 2009-12-31 12:52:39 +00:00
Sarven Capadisli
4985582880 Fixed Event end name 2009-12-31 12:43:33 +00:00
Craig Andrews
1e9c03e199 Enable memcache automatic compression, starting at 20k and only if compression gain is greater than 20%.
Allows storage of larger objects (over 1mb in size uncompressed), such as huge LDAP schemas.
Should also improve cache efficiency (allows more stuff to be stored in same memory) and reduce network latency (less data transfer)
2009-12-30 19:29:38 -05:00
Siebrand Mazeland
024704e0b7 Remove trailing space in checkbox text. 2009-12-30 20:26:23 +01:00
Craig Andrews
98ce7daf56 Implement user interface for user to preview what location they are sharing with a notice 2009-12-29 16:18:52 -05:00
Evan Prodromou
360fdb219d don't show notices with deleted profiles 2009-12-29 12:25:41 -08:00
Evan Prodromou
e119362fde Merge branch 'locshunt' into 0.9.x 2009-12-28 15:49:27 -08:00
Evan Prodromou
39bdda9c7e More configuration options for location sharing 2009-12-28 14:43:34 -08:00
Evan Prodromou
bb93d6b1c7 remove namespace setting from location; it's unused 2009-12-28 14:21:07 -08:00
Evan Prodromou
da5db060e8 Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x 2009-12-23 14:31:56 -08:00
Sarven Capadisli
05c1ad8b32 Updated Repeat notice option submit button style 2009-12-23 15:59:31 -05:00
Evan Prodromou
1adce16dd8 don't email replies to yourself 2009-12-23 09:00:05 -08:00
Evan Prodromou
185e229f79 Merge branch 'master' into 0.9.x 2009-12-22 22:12:15 -08:00
Evan Prodromou
f6bf952980 Merge branch 'testing' 2009-12-22 16:44:19 -08:00
Evan Prodromou
30c2e2ce83 update to rc2 2009-12-22 16:41:39 -08:00
Evan Prodromou
a2cb0a033f Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x 2009-12-22 08:53:50 -08:00
Brion Vibber
a06af3f125 Ticket 1982: define LC_MESSAGES and friends if PHP didn't predefine them for us. (Known problem on Win32) 2009-12-21 09:06:07 -08:00
Brion Vibber
f987273f11 Ignore user language settings that aren't listed in language config; we'll then fall back to current autodetection. This prevents the surprises where your profile suddenly switches to Arabic because it was selected by default due to lack of a match in the drop-down box. 2009-12-21 06:57:10 -08:00
Siebrand Mazeland
7e6efd1065 Localisation updates for !StatusNet from !translatewiki.net !sntrans
* Adding Persian language
2009-12-20 15:52:43 +01:00
Brion Vibber
b244ac6462 Ignore user language settings that aren't listed in language config; we'll then fall back to current autodetection. This prevents the surprises where your profile suddenly switches to Arabic because it was selected by default due to lack of a match in the drop-down box. 2009-12-19 15:29:53 -05:00
Evan Prodromou
530673b3cd Merge branch '0.9.x' into testing 2009-12-16 22:14:41 -05:00
Brion Vibber
dc4bedd25a Add some doc comments and fixmes in util.php 2009-12-16 09:27:48 -05:00
Brion Vibber
0158f4f73d PHP 5.3 closure-based implementation of curry(); old implementation used as fallback for older PHP versions. Added unit tests to confirm they both work! 2009-12-16 09:27:48 -05:00
Evan Prodromou
2a1468ec8b Merge branch '0.9.x' into testing 2009-12-15 16:24:52 -05:00
Evan Prodromou
608d1b206a Don't show repeater avatar in notice lists 2009-12-15 16:08:44 -05:00
Evan Prodromou
797a0d79fb create a method for notification for new messages, and use it 2009-12-15 10:31:25 -05:00
Evan Prodromou
19bb9a04d1 add mail notification for dm command results 2009-12-15 10:18:27 -05:00
Sarven Capadisli
27d0e8f0a4 Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x 2009-12-14 18:34:16 -05:00
Evan Prodromou
43ee2ec42f default for login command is disabled 2009-12-14 18:09:30 -05:00
Sarven Capadisli
f8b187d5a4 Initial representation for repeated notice 2009-12-14 18:09:08 -05:00
Evan Prodromou
607e98ee11 make sure id of <li> in notice list is unique 2009-12-14 17:48:14 -05:00
Evan Prodromou
d22364b35e had the order of <status> and <retweeted_status> wrong in api output 2009-12-14 17:11:34 -05:00
Evan Prodromou
9384a6e242 fix error with cached repeat of deleted original in api output 2009-12-14 16:40:56 -05:00
Evan Prodromou
6ff13d6828 move full-featured timeline to apitimelinehome.php 2009-12-14 16:10:16 -05:00
Evan Prodromou
9d2a605d0e correct link for repeat attribution in noticelist 2009-12-14 15:42:53 -05:00
Zach Copley
a199bd808a Fix issue with favorited/following always being set to false 2009-12-14 18:16:45 +00:00
Sarven Capadisli
7dc9f7ad06 Init UI for Repeated by 2009-12-13 20:00:09 -05:00
Siebrand Mazeland
745e35ac1f (Puctuation) consistency in clientError() calls. 2009-12-13 18:55:17 +01:00
Siebrand Mazeland
954eb411e0 Localisation updates for !StatusNet from !translatewiki.net !sntrans
* add Interlingua (ia)
2009-12-13 18:31:14 +01:00
Craig Andrews
bed4e1c9e9 Add repeat command 2009-12-12 21:25:21 -05:00
Evan Prodromou
304ba80a0f make sure to show repeats correctly when original is deleted 2009-12-12 16:33:38 -05:00
Evan Prodromou
a5a89f50b8 Merge branch 'forward' into 0.9.x 2009-12-12 16:18:55 -05:00
Evan Prodromou
cc063aedcc Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x 2009-12-12 16:15:47 -05:00
Evan Prodromou
1ec54d3433 add statuses/retweeted_to_me to API 2009-12-12 16:15:23 -05:00
Evan Prodromou
cfe67a9c01 add statuses/retweets_of_me to API 2009-12-12 16:00:27 -05:00
Evan Prodromou
138ce0cd05 add statuses/retweeted_by_me api action 2009-12-12 15:35:05 -05:00
Evan Prodromou
a3660fbea4 Merge branch '0.9.x' into forward 2009-12-12 15:00:22 -05:00
Evan Prodromou
b42b2e1d05 integer utility for arguments 2009-12-12 15:00:09 -05:00
Evan Prodromou
c622d14440 add statuses/retweets to API 2009-12-12 14:46:24 -05:00
Siebrand Mazeland
78a649ca0a Localisation updates for !StatusNet from !translatewiki.net !sntrans
* add Egyptian Spoken Arabic (arz)
2009-12-12 18:21:57 +01:00
Hue Bastard
59e5958d3a ticket 2055: added logos to Atom and RSS feeds 2009-12-11 16:15:22 -08:00
Evan Prodromou
683edfd199 show repeated notices correctly in API output 2009-12-11 12:40:05 -05:00
Evan Prodromou
1c370bb277 show repeated notices correctly in API output 2009-12-11 12:39:29 -05:00
Evan Prodromou
962f391f3e show original notice in repeat, with repeat info below 2009-12-11 12:10:58 -05:00
Evan Prodromou
afc86a86d3 save repeats from the form 2009-12-11 11:51:09 -05:00
Evan Prodromou
60754fc6de Merge branch '0.9.x' into forward 2009-12-11 11:38:08 -05:00
Evan Prodromou
79f81ad76d change Notice::saveNew() to use named arguments for little-used options 2009-12-11 11:29:51 -05:00
Evan Prodromou
81843f2acd show the repeat form in notice lists 2009-12-11 10:49:26 -05:00
Evan Prodromou
a5724cca49 do some moving around of forwarding stuff 2009-12-11 10:10:25 -05:00
Evan Prodromou
e9b733e7f0 Merge branch '0.9.x' into testing 2009-12-11 09:55:47 -05:00
Evan Prodromou
eceb5e8a0f remove forward action from router 2009-12-10 14:42:13 -05:00
Evan Prodromou
37b0852fdb move forward form to plugin 2009-12-10 14:33:15 -05:00
Craig Andrews
b36ec6da87 Fixed incorrect disabling of login_token. 2009-12-10 13:22:46 -05:00
Craig Andrews
b07e1143cc Override login_token's sequenceKey() so that it behaves correctly 2009-12-10 13:08:24 -05:00
Sarven Capadisli
1e166e1bc4 Updated FormNoticeEnhancements and Counter to use the max text value
from HTML. It also allows each .form_notice to have its own counter.
2009-12-10 14:16:07 +01:00
Brion Vibber
2f59f0ddb5 Compat fix for PHP 5.2.4 -- drop unneeded new param to debug_backtrace(), caused error spew on older PHP (introduced PHP 5.2.5)
Fix for regression in 4b5e977a7b
2009-12-08 17:35:27 -08:00
Evan Prodromou
21757186e9 don't allow forwarding your own notice 2009-12-08 17:52:20 -05:00
Evan Prodromou
41cbb90fae add (ugly) form to forward notices 2009-12-08 17:31:23 -05:00
Evan Prodromou
48a93810ab action to forward a notice 2009-12-08 17:20:45 -05:00
Brion Vibber
4b5e977a7b New _m() gettext wrapper with smart detection of plugin domains. Plugin base class registers your gettext files if present at initialization.
update_pot.sh replaced with update_po_templates.php which can do core, plugins, or all (default).
Top-level Makefile added to build .mo files for plugins as well as core.

As described on list:
http://lists.status.net/pipermail/statusnet-dev/2009-December/002869.html
2009-12-08 12:17:11 -08:00
Evan Prodromou
78fc9483d4 Merge branch '0.9.x' into testing 2009-12-08 14:43:21 -05:00
Brion Vibber
3536f01258 Make default & sample val for $config['queue']['queue_basename'] actually work! Now matches the recommendation in README which is in fact correct. Must include the /queue/ prefix (unless somthing else actually makes sense) 2009-12-08 09:57:37 -08:00
Craig Andrews
3b14b61fa7 Add a configuration option to disable the login command.
$config['logincommand']['disabled'] = true;

This commit should be reverted once the command has been sufficiently tested and trusted.
2009-12-05 21:05:33 -05:00
Craig Andrews
75cac0fd6b Added 'login' command that gives you a link that can be used to login to the website 2009-12-05 21:05:33 -05:00
Craig Andrews
2ab01e040e Add 2 new events to enable logger pluginization: StartLog and EndLog 2009-12-05 02:11:27 -05:00
Craig Andrews
51f0dd5e37 Add configuration option to toggle the indenting of the output HTML. Defaults to indent enabled. 2009-12-05 01:03:04 -05:00
Craig Andrews
fa66755508 Append the StatusNet version to all local, static CSS references 2009-12-04 22:05:18 -05:00
Craig Andrews
d41a0a5ed0 Use inlineScript() instead of element() to write inline javascript 2009-12-04 20:33:41 -05:00
Craig Andrews
b3086d3c68 Add style function to output style() tags
Add 2 new events: StartStyleElement and EndStyleElement
2009-12-04 20:19:55 -05:00
Craig Andrews
7ddf911f5d Add 2 new events: StartInlineScriptElement and EndInlineScriptElement 2009-12-04 19:51:44 -05:00
Craig Andrews
847013db69 only write the javascript CDATA blocks if the type is javascript (it's not the correct syntax for other languages) 2009-12-04 19:44:45 -05:00
Craig Andrews
4c8bed8ba0 Use inlineScript() everywhere inline scripts are written 2009-12-04 19:41:51 -05:00
Zach Copley
1fd7e5e379 Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x 2009-12-04 22:43:34 +00:00
Zach Copley
4881be47c7 Don't depend on a User being available when looking up Design and timezone
for a profile (because some profiles are remote, etc.)
2009-12-04 22:42:09 +00:00
Evan Prodromou
5c973876ac Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x 2009-12-04 16:30:33 -05:00
Evan Prodromou
e074fe6599 add logging utilities to Plugin class 2009-12-04 15:34:25 -05:00
Brion Vibber
4afe07f0c3 Merge commit 'refs/merge-requests/108' of git://gitorious.org/statusnet/mainline into 0.9.x 2009-12-04 12:23:33 -08:00
Evan Prodromou
2c07d4a530 utility function to output inline JavaScript 2009-12-04 13:39:51 -05:00
Craig Andrews
40afc7e987 Add 4 new events: StartCssLinkElement, EndCssLinkElement, StartScriptElement, EndScriptElement 2009-12-04 01:57:14 -05:00
Zach Copley
aef4cc0a59 Make it impossible to block (and thus unsubscribe from your
self-subscription) via the API.  Additionally, make it impossible
to block yourself or unsubscribe from yourself, period.

I also made User use the subs.php helper function for unsubscribing
during a block.

Hopefully, these changes will get rid of the problem of people
accidentally deleting their self-subscriptions once and for all
(knock on wood).
2009-12-03 17:06:58 -08:00
Brion Vibber
c89b10ffe4 Code style cleanup: dropped some unnecessary =& reference assignments where they're used only out of habit for PHP 4-style object semantics 2009-12-03 12:58:48 -08:00
Zach Copley
bf4ed35a90 Merge branch '0.9.x'
* 0.9.x: (141 commits)
  Reload the admin design panel page to show the new CSS when the
  Only pick up new default site colors if the theme has NOT changed.
  Delete design when user chooses to restore default design, instead
  Localisation updates for !StatusNet from !translatewiki.net !sntrans
  Do not rebuild/add .mo files by default
  If an XHR notice is sent form a page that has no timeline, show a
  Revert "If the page doesn't have .notices, silently skip the notice XHR response"
  Revert "Clear/reset the XHR notice form on pages where there is no timeline"
  Clear/reset the XHR notice form on pages where there is no timeline
  If the page doesn't have .notices, silently skip the notice XHR response
  Remove useless debugging statement
  Moved form control styles (i.e., border and radius) out of base
  add pluginhandler to list of daemons to shut down
  Using box-shadow only on the current navigation item
  Updated theme readme
  Fix regression in password settings: users have been unable to change their passwords since introduction of ChangePassword event (later StartChangePassword)  November 5 in commit d6ddb84132
  Ticket 2048: make OMB posting HTTP timeout configurable as $config['omb']['timeout']; defaults to 5 seconds instead of 20-second default in Yadis library
  ticket 1100: add Drupal source link
  Fix makefile wildcards for locale compilation (now works on Ubuntu 8.04)
  typo fix: '$this' now spelled correctly. Looks like this'll fix acceptance of 'source' param for direct messages posted to API
  ...

Conflicts:
	js/util.js
	locale/ar/LC_MESSAGES/statusnet.po
	locale/bg/LC_MESSAGES/statusnet.po
	locale/ca/LC_MESSAGES/statusnet.po
	locale/cs/LC_MESSAGES/statusnet.po
	locale/de/LC_MESSAGES/statusnet.po
	locale/el/LC_MESSAGES/statusnet.po
	locale/en_GB/LC_MESSAGES/statusnet.po
	locale/es/LC_MESSAGES/statusnet.po
	locale/fi/LC_MESSAGES/statusnet.po
	locale/fr/LC_MESSAGES/statusnet.po
	locale/ga/LC_MESSAGES/statusnet.po
	locale/he/LC_MESSAGES/statusnet.po
	locale/is/LC_MESSAGES/statusnet.po
	locale/it/LC_MESSAGES/statusnet.po
	locale/ja/LC_MESSAGES/statusnet.po
	locale/ko/LC_MESSAGES/statusnet.po
	locale/mk/LC_MESSAGES/statusnet.po
	locale/nb/LC_MESSAGES/statusnet.po
	locale/nl/LC_MESSAGES/statusnet.po
	locale/nn/LC_MESSAGES/statusnet.po
	locale/pl/LC_MESSAGES/statusnet.po
	locale/pt/LC_MESSAGES/statusnet.po
	locale/pt_BR/LC_MESSAGES/statusnet.po
	locale/ru/LC_MESSAGES/statusnet.po
	locale/statusnet.po
	locale/sv/LC_MESSAGES/statusnet.po
	locale/te/LC_MESSAGES/statusnet.po
	locale/tr/LC_MESSAGES/statusnet.po
	locale/uk/LC_MESSAGES/statusnet.po
	locale/vi/LC_MESSAGES/statusnet.po
	locale/zh_CN/LC_MESSAGES/statusnet.po
	locale/zh_TW/LC_MESSAGES/statusnet.po
	plugins/Realtime/realtimeupdate.js
2009-12-03 12:51:21 -08:00
Zach Copley
008f51db4d Delete design when user chooses to restore default design, instead
of saving a design with site defaults.
2009-12-03 00:56:53 +00:00
Zach Copley
4f359d2a8b Delete design when user chooses to restore default design, instead
of saving a design with site defaults.
2009-12-02 16:44:23 -08:00
Brion Vibber
edb2578e93 Ticket 2048: make OMB posting HTTP timeout configurable as $config['omb']['timeout']; defaults to 5 seconds instead of 20-second default in Yadis library 2009-12-01 14:53:27 -08:00
Brion Vibber
15a9c86979 Ticket 2048: make OMB posting HTTP timeout configurable as $config['omb']['timeout']; defaults to 5 seconds instead of 20-second default in Yadis library 2009-12-01 14:50:18 -08:00
Zach Copley
220510f372 Add missing rule for /api/users/show.:format 2009-12-01 12:42:51 -08:00
Zach Copley
4a4d8bd271 Revert "Fix problem where screen_name and user_id parameters are being"
The problem this was trying to fix is actually caused by a missing
routing rule.  Silly me.

This reverts commit 2451192415.
2009-12-01 12:42:39 -08:00
Zach Copley
7591439451 Add missing rule for /api/users/show.:format 2009-12-01 10:02:22 -08:00
Zach Copley
4003e51b91 Revert "Fix problem where screen_name and user_id parameters are being"
The problem this was trying to fix is actually caused by a missing
routing rule.  Silly me.

This reverts commit 2451192415.
2009-12-01 09:57:47 -08:00
Zach Copley
234e6a10b1 Fix problem where screen_name and user_id parameters are being
ignored due to the router sending in '[a-zA-Z0-9]+' for the id
parameter when no id is specified as part of the URL.
2009-11-30 13:17:36 -08:00
Zach Copley
2451192415 Fix problem where screen_name and user_id parameters are being
ignored due to the router sending in '[a-zA-Z0-9]+' for the id
parameter when no id is specified as part of the URL.
2009-11-30 13:08:55 -08:00
Brion Vibber
9d58b3763e Include group memberships count & user groups management page link in profile sidebar to match subscribers & subscribees lists. This is the only obvious way to reach the user group membership details page if there are fewer group subs than the max number of icons to show. 2009-11-30 10:41:24 -08:00
Zach Copley
9dc888894b Merge branch 'master' into 0.9.x
* master: (67 commits)
  Ticket 2038: fix bad bug tracker link
  Fix regression in group posting: bug introduced in commit 1319002e15. Need to use actual profile object rather than an id on a variable that doesn't exist when checking blocks :D
  Log database errors when saving notice_inbox entries
  Drop the username from the log id for now; seems to trigger an error loop in some circumstances
  request id on logs... pid + random id per web request + username + method + url
  Add OpenID ini info back into statusnet.ini as a stopgap until we can
  Some changes to the OpenID DataObjects to make them emit the exact same
  OpenID plugin should set 'user_openid.display' as unique key
  Remove relationship: user_openid.user_id -> user.id. I don't think this
  Have OpenID plugin DataObjects emit their own .ini info
  Revert "Allow plugin DB_DataObject classes to not have to use the .ini file by overriding keys(), table(), and sequenceKey() for them"
  Catch and report exceptions from notice_to_omb_notice() instead of letting the OMB queue handler die.
  Fix regression in remote subscription; added hasRole() shadow method on Remote_profile.
  Fix fatal error on OMB subscription for first-timers
  Remove annoying log msg
  Drop error message on setlocale() failure; this is harmless, since we actually have a working locale set up.
  Catch uncaught exception
  Fixed bug where reply-sync bit wasn't getting saved
  Forgot to render the nav menu when on FB Connect login tab
  Facebook plugin no longer takes over Login and Connect settings nav menus
  ...

Conflicts:
	db/08to09_pg.sql
	db/statusnet_pg.sql
	locale/pt_BR/LC_MESSAGES/statusnet.mo
	plugins/Mapstraction/MapstractionPlugin.php
2009-11-30 10:28:58 -08:00
Siebrand Mazeland
dff5103399 Add new user language hsb / Upper Sorbian 2009-11-28 20:53:05 +01:00
Brion Vibber
914242e224 Drop the username from the log id for now; seems to trigger an error loop in some circumstances 2009-11-27 13:30:21 -08:00
Brion Vibber
9f075a6898 Drop the username from the log id for now; seems to trigger an error loop in some circumstances 2009-11-27 13:29:33 -08:00
Brion Vibber
b933f5bb15 request id on logs... pid + random id per web request + username + method + url 2009-11-27 12:32:55 -08:00
Brion Vibber
5bacd98905 request id on logs... pid + random id per web request + username + method + url 2009-11-27 12:28:15 -08:00
Siebrand Mazeland
c6b1ca3765 * Mb -> MB (for megabyte)
* i18n for MB and kB
2009-11-26 23:28:16 +01:00
Sarven Capadisli
5f5a107991 Init UI to show/hide a group of moderation actions. 2009-11-26 18:46:11 +00:00
Brenda Wallace
45dbdc8c4d and a typo in column name fixed 2009-11-26 20:41:47 +13:00
Brenda Wallace
09a5c313ba added missing space after new group by fields 2009-11-26 20:39:51 +13:00