Commit Graph

540 Commits

Author SHA1 Message Date
Evan Prodromou
ca90d790aa Automatically add a tag for every group messages
If you post to a group !foo, it's automatically listed as being tagged
"foo". This is to keep users from having to do !foo #foo in all their
messages.
2009-02-16 18:02:31 -05:00
Evan Prodromou
da2348fbbe Optionally ignore some notice sources for public page
We optionally ignore some notice sources from the public page.
Typically these are automatic notice sources like twitterfeed that
don't usually represent the community on the site very well.
2009-02-14 21:55:25 -05:00
Evan Prodromou
4ad5d55ecf Add events for filtering and logging new notices 2009-02-13 10:52:26 -05:00
Ciaran Gultnieks
53274a6d93 PostgreSQL - code changes to avoid problems where user table is referenced in ad-hoc queries 2009-01-30 01:12:58 +00:00
Adrian Lang
a80a536e41 Fix canonical tags in notice and in URLs 2009-01-26 15:03:38 +01:00
Evan Prodromou
0d34cd24ab Update notice deletion
Changed the errors in notice deletion so it now works. Also,
consistently delete records from related tables that refer
to the notice.
2009-01-24 19:38:40 +01:00
Evan Prodromou
a7c85bebd5 Merge branch 'master' of /var/www/mublog
Conflicts:

	actions/api.php
	actions/deletenotice.php
	actions/recoverpassword.php
	actions/remotesubscribe.php
	actions/tag.php
	actions/tagrss.php
	actions/twitapiaccount.php
	actions/twitapiusers.php
	classes/Notice.php
	classes/User.php
	lib/common.php
	lib/language.php
	lib/subs.php
	lib/twitterapi.php
	lib/util.php
	scripts/inbox_users.php
	scripts/update_translations.php

Merged development trunk into laconica head. woohoo!
2009-01-23 08:58:31 +01:00
Evan Prodromou
e2869fcf0a Move NoticeWrapper to a generalized ArrayWrapper class
We need to use array wrappers for other kinds of queries, so
I generalized the NoticeWrapper and tested it in the Notice class.
2009-01-22 18:48:52 +01:00
Evan Prodromou
2f043b74e7 Move common_save_replies to Notice class 2009-01-22 01:53:27 -05:00
Evan Prodromou
17fc0b7880 Add the right inbox source for group notices 2009-01-21 22:40:42 -05:00
Evan Prodromou
fca1ccc351 First pass at delivery of group messages
A first pass at the delivery of group messages.
2009-01-21 21:53:02 -05:00
Evan Prodromou
4873277b58 Wrap notice-saving code in a transaction 2009-01-20 08:19:32 -05:00
Evan Prodromou
3285e0979d Move add to notice inboxes before cache clearing in hopes they will be
updated
2009-01-19 22:21:16 -05:00
Evan Prodromou
c65bc1731f more places where required since param skipped for Notice::getStreamDirect
darcs-hash:20081211195259-5ed1f-c52136c07bdad5521184bd1990313030a8e1e831.gz
2008-12-11 14:52:59 -05:00
Evan Prodromou
0f70d496c9 missing argument
darcs-hash:20081211171353-84dde-31b2858e361f62e13ca8ca8784b1aac4209ef04c.gz
2008-12-11 12:13:53 -05:00
Evan Prodromou
e85835d0d3 resolve whitespace changes in Notice.php
darcs-hash:20081211163150-5ed1f-10ff4c4863145909c1d541e39dc4bf69d945cfd7.gz
2008-12-11 11:31:50 -05:00
Evan Prodromou
7ad2f2a371 TRUE
More PEAR coding standards global changes. Here, I've changed all
instances of TRUE to true and FALSE to false.

darcs-hash:20081223194428-84dde-cb1a1e6f679acd68e864545c4d4dd8752d6a6257.gz
2008-12-23 14:44:28 -05:00
Evan Prodromou
04ef1ba8ee change function headers to K&R style
Another huge change, for PEAR code standards compliance. Function
headers have to be in K&R style (opening brace on its own line),
instead of having the opening brace on the same line as the function
and parameters. So, a little perl magic found all the function
definitions and move the opening brace to the next line (properly
indented... usually).

darcs-hash:20081223193323-84dde-a28e36ecc66672c783c2842d12fc11043c13ab28.gz
2008-12-23 14:33:23 -05:00
Evan Prodromou
eb2f9c98ac replace NULL with null
Another global search-and-replace update. Here, I've replaced the PHP
keyword 'NULL' with its lowercase version. This is another PEAR code
standards change.

darcs-hash:20081223192129-84dde-4a0182e0ec16a01ad88745ad3e08f7cb501aee0b.gz
2008-12-23 14:21:29 -05:00
Evan Prodromou
edbc0c665c replace all tabs with four spaces
The PEAR coding standards decree: no tabs, but indent by four spaces.
I've done a global search-and-replace on all tabs, replacing them by
four spaces. This is a huge change, but it will go a long way to
getting us towards phpcs-compliance. And that means better code
readability, and that means more participation.

darcs-hash:20081223191907-84dde-21e8efe210e6d5d54e935a22d0cee5c7bbfc007d.gz
2008-12-23 14:19:07 -05:00
Zach Copley
92ea88fd60 trac540 - Add 'since' param to Twitter-compatible API calls
darcs-hash:20081209055345-7b5ce-e48fd4c87963b8ae15859fd03d2f1f86a16f3a2b.gz
2008-12-09 00:53:45 -05:00
millette
51dda41211 delete user and all traces from the db.
darcs-hash:20081203164942-099f7-ea511948139c9c18b1c8b7de018aa4f0ee5ff624.gz
2008-12-03 11:49:42 -05:00
millette
ce08833303 shorten urls for posts > 140 chars only, from anywhere. Only show long urls in title attributes for links we shortened ourselves.
darcs-hash:20081128210114-099f7-4e4cde0a983c2ac6d41efb59b46cb7dbf45dc7a6.gz
2008-11-28 16:01:14 -05:00
Evan Prodromou
7745917305 don't check edit throttle if throttle not enabled
darcs-hash:20081210194335-84dde-a74fe65acfa707eae5499cdf47850d353562ccb8.gz
2008-12-10 14:43:35 -05:00
Zach Copley
1e4e6eee32 Ban certain users from posting by nickname and/or ID
darcs-hash:20081210191337-7b5ce-f9a083596b3f5627405c9e233c1994d8338f5731.gz
2008-12-10 14:13:37 -05:00
millette
8b15411865 make sure passed profile_id is valid in Notice::saveNew
darcs-hash:20081210181123-099f7-b13ae11d136512655fc5ba4bb314c80256244593.gz
2008-12-10 13:11:23 -05:00
Evan Prodromou
a143b64666 edit throttling
darcs-hash:20081210174722-84dde-4c79d7f73230d008195bd19738bc9a6017b940e9.gz
2008-12-10 12:47:22 -05:00
Evan Prodromou
0bcfb2e698 change is_local flag for blacklisted users
Changed the flag on notices that says whether the notice is local, so
that it's -1 for local-but-blacklisted. This should keep blacklisted
users off the public timeline.

darcs-hash:20081202184258-5ed1f-cd87ea5c528ea0c90cb31eeb59d4d1ba4f85e9ad.gz
2008-12-02 13:42:58 -05:00
Evan Prodromou
577b54c2af blow last caches on notice delete
We do some extra caching of streams, at ';last'. If a notice is
deleted, we need to blow those caches, too. So, this deletes them.

darcs-hash:20081124003240-84dde-aa4561e5e68b0ccc0598ac86294ea54f9be5775a.gz
2008-11-23 19:32:40 -05:00
Evan Prodromou
64101cc579 whitespace cleanup
darcs-hash:20081122124235-84dde-680b2d2c8caff26d40dec4fe8e926a61668c47a0.gz
2008-11-22 07:42:35 -05:00
Evan Prodromou
3a82ff2860 double-cache to get newer items
darcs-hash:20081122124151-84dde-3e942c9ab172444bd28afb84a452b8bfb5e3574a.gz
2008-11-22 07:41:51 -05:00
Evan Prodromou
a730ad708c notice inbox only when not already exists
darcs-hash:20081121184132-84dde-39d090e8bf82d10f3aa3a55ada3f4170c01e11d1.gz
2008-11-21 13:41:32 -05:00
Evan Prodromou
35407614bb hide certain users from the public stream
On identi.ca, certain users (http://identi.ca/derricklo) publish 5-10
automated notices every half hour or hour. This can flood the public
stream, making it unreadable for casual readers.

We don't want to prevent anyone from using the site for personal use.
However, if their personal use clouds up the public space, we can
gently remove them from that public space without interfering with
their personal activity.

So: this change prevents selected people's notices from appearing in
the public stream. It's hand-configured by an administrator, and
probably doesn't scale beyond 10-20 blacklisted users. It's a stopgap
measure.

darcs-hash:20081120183722-84dde-8a8401fbcbb6abb60a8b36de249323586ea0b22c.gz
2008-11-20 13:37:22 -05:00
Evan Prodromou
6b6c966369 don't write notice to inbox if user isn't inboxed yet
darcs-hash:20081114074211-84dde-77dbee17b2eb5848a0aa012c6ebe352135f5e7c1.gz
2008-11-14 02:42:11 -05:00
Evan Prodromou
74786b951c add created to notice update
darcs-hash:20081112185117-5ed1f-3b2373620581d123182dc951c528276541f4ab68.gz
2008-11-12 13:51:17 -05:00
Evan Prodromou
3987de1064 created timestamp on notice_inbox
darcs-hash:20081112172517-5ed1f-4e8534d7898e2134edf4c0a28417b4a5274617d4.gz
2008-11-12 12:25:17 -05:00
zach
8deac7248e Twitter-compatible API - since_id and before_id were polluting the cache and generating bad SQL
(Also cleaned out some extra whitespace.)

darcs-hash:20081104053359-462f3-2f6619bb942aa34b38dd82cb427878f83d4c332c.gz
2008-11-04 00:33:59 -05:00
Evan Prodromou
5f05134110 blow inboxes
darcs-hash:20081023203505-5ed1f-9fda1f30a6eb271966b7eaf42968103761b33b22.gz
2008-10-23 16:35:05 -04:00
Evan Prodromou
74291968c4 save notice to inbox on saveNew
darcs-hash:20081022205621-5ed1f-4103d4db9713f4e6e65647f71cc788cbee56a240.gz
2008-10-22 16:56:21 -04:00
mac65
c08a67094c Add support for since_id and before_id to Twitter API. Ticket #540.
darcs-hash:20081001001233-e558a-3fcc269985050021ec9b44c052206c731cc4689d.gz
2008-09-30 20:12:33 -04:00
Evan Prodromou
f9bc366190 more specific profile-get is slightly more efficient
darcs-hash:20081004021158-5ed1f-c8f5e68dd411a5fe7a01ae35398914469c377794.gz
2008-10-03 22:11:58 -04:00
Evan Prodromou
bf661a5e84 blow cache in Notice for tags
darcs-hash:20080929222107-5ed1f-37f079239b11b8ab13d8d33c850351f703d51371.gz
2008-09-29 18:21:07 -04:00
Evan Prodromou
11eed225b7 blow the cached streams for tags on a new notice
darcs-hash:20080928181812-5ed1f-708380f239b17b2a53b7279aa4a55af11156a5e8.gz
2008-09-28 14:18:12 -04:00
Evan Prodromou
6c9fdb314c remove debugging code for notice streams
darcs-hash:20080928174814-5ed1f-3e431670e52096669e26f6a26edc6ae903763411.gz
2008-09-28 13:48:14 -04:00
Evan Prodromou
f5f9559a60 correct some SQL and add some spaces
darcs-hash:20080928174316-5ed1f-73bc071fed0aff359c94b4213816e8830eba6c50.gz
2008-09-28 13:43:16 -04:00
Evan Prodromou
4bea5b60a0 exact check on memcached results
darcs-hash:20080928173558-5ed1f-0949a60e3c7edb9ad58f818c3121896637033abe.gz
2008-09-28 13:35:58 -04:00
Evan Prodromou
577ee0c115 another debug notice
darcs-hash:20080928172002-5ed1f-a81ae374b920e222183cf9de86e5fed732a0ed5b.gz
2008-09-28 13:20:02 -04:00
Evan Prodromou
1dfebc6147 add some debugging stuff to Notice
darcs-hash:20080928171407-84dde-9c6944a42a6e8e7f2fc90138336a86ae81c33763.gz
2008-09-28 13:14:07 -04:00
Evan Prodromou
babac77652 lost paren in Notice
darcs-hash:20080928132846-5ed1f-cb542b90cdebcb2af95e6e225c3da157a5526741.gz
2008-09-28 09:28:46 -04:00
Evan Prodromou
d3d5942ae3 change arguments to Notice::publicStream
darcs-hash:20080928132747-5ed1f-9e9b6d8b91f855758ca4b269418f6d5d6e4a2ae0.gz
2008-09-28 09:27:47 -04:00
Evan Prodromou
02a3f24b92 single function for important streams, with memcached support
I moved the 4 streams for a user (with friends, faves, replies,
personal) into functions on the User object. Added a helper function
in Notice for making notice streams. Also, will fetch notice streams
out of the memcached server, if possible. Made the API, RSS, and HTML
output all use the same streams (hopefully cached).

Added some code to Notice to blow the cache when a notice is posted.
Also, added code to favor and disfavor actions to blow the faves
cache, too.

darcs-hash:20080928120119-5ed1f-ead542348bcd3cf315be6f42934353154402eb16.gz
2008-09-28 08:01:19 -04:00
Evan Prodromou
82084ab74c move memcache connections to util.php
darcs-hash:20080926200102-5ed1f-debbc18981424d7724277ac82e5fbfd5e797090e.gz
2008-09-26 16:01:02 -04:00
Evan Prodromou
125953be31 add some more info on notice update
darcs-hash:20080926165201-5ed1f-8efd0369f1f367dacca450ac3bffd755ea841f6f.gz
2008-09-26 12:52:01 -04:00
Evan Prodromou
f951b91693 log a db error for inserting the notice
darcs-hash:20080926165029-5ed1f-60059ffeac9a39326fc6286faf4ac13c35127f25.gz
2008-09-26 12:50:29 -04:00
Evan Prodromou
8da61dc1d3 path correct in require_once for memcached
darcs-hash:20080926161824-5ed1f-b4fb53e5ca65bb099aabbba6ea60a13496f669a2.gz
2008-09-26 12:18:24 -04:00
Evan Prodromou
f6615f70e5 prepend Memcached_DataObject require with INSTALLDIR
darcs-hash:20080926161540-5ed1f-2e9dc6f2297c612208214a6d52f36ce0dd7aa4de.gz
2008-09-26 12:15:40 -04:00
Evan Prodromou
e2e6bbb298 caching layer for DB/DataObject
I added a new class, Memcached_DataObject, that will (optionally)
fetch data out of a memcached server if it's available. This only
works on 'staticGet'.

Methods that write to the database (insert, update, delete) will clear
and set the cache correctly, too.

darcs-hash:20080926160941-5ed1f-922de078b4c1941853ad014edf9a17fae486f8cf.gz
2008-09-26 12:09:41 -04:00
Evan Prodromou
a64330b77c blow subscriptions cache when the user deletes a notice
darcs-hash:20080920175339-84dde-e46d0e7b86e0752e8331cdfba26257b3ff9e601c.gz
2008-09-20 13:53:39 -04:00
Evan Prodromou
1a81057985 fixup SQL code
darcs-hash:20080915073412-84dde-3c9cfb1d2d4933dbaff002b30fffb9e7d3d5e1d7.gz
2008-09-15 03:34:12 -04:00
Evan Prodromou
a6974a6f84 fix cache deletion code
darcs-hash:20080915073215-84dde-34bdd1a40ce310bca5bbb6f11ed4df79c7915cb2.gz
2008-09-15 03:32:15 -04:00
Evan Prodromou
f246b8f2d7 cache noticesWithFriends in memcached
noticesWithFriends is turning out to be one of our most expensive
queries. The join is costly, and this method is hit over and over and
over by desktop clients and other API users.

So, I've added a first pass at caching the results. I store a "window"
of notices -- equal to the first 3 pages of notices, plus one for
pagination -- in the memcached cache. If with-friends notices are
requests, I fetch the whole window out of the cache and grab the slice
requested. If the requested notices are outside the window, we just do
the query. If there's nothing in the cache, we request the window and
store it, then return a slice.

I had to add a NoticeWrapper class that works like DB_DataObject
(well, just the fetch() part...) but just holds an array of notices
instead of a DB cursor.

Finally, saving a new notice blows away the caches for subscribed users.

darcs-hash:20080915065616-84dde-1b1e814c2294498a10b763b779cbb62c3f96aa84.gz
2008-09-15 02:56:16 -04:00
Ori Avtalion
8f33885e41 Some Notice::saveNew cleanups.
* No need to check $source's value before inserting
* No need to update the notice if the $uri was known in advance

darcs-hash:20080902173804-57fc3-496ceaf8192694db43e62f7af1f57785a1a16a01.gz
2008-09-02 13:38:04 -04:00
Garret Buell
51caab6e5e Elide_Tags
Make "#sanfrancisco", "#SanFrancisco", "#san_francisco", "#San.Francisco", and "#SAN-FRANCISCO" all link to http://identi.ca/tag/sanfrancisco but preserve appearance

darcs-hash:20080901025932-e3c0d-c0a939eaf7e242d88cbcb0d651c9d53718c60a9d.gz
2008-08-31 22:59:32 -04:00
Garret Buell
cca78b26f7 Allow_multicase_tags
Make "#test", "#Test", and "#tEsT" all preserve appearance but link to the same tag

darcs-hash:20080901001241-e3c0d-b466f35f4f023c6c90a6d2817487c97be9a1bbca.gz
2008-08-31 20:12:41 -04:00
Evan Prodromou
b1ff7d7a2b fix error storing uris of remote notices
darcs-hash:20080826211108-84dde-b277bdb1476b9cec0c0d93fa8d565c4642ba16c8.gz
2008-08-26 17:11:08 -04:00
Evan Prodromou
21e4fb864f change DataObject_Cast to use sql_now
darcs-hash:20080825183005-84dde-c1d24a057d9545cc6d1f0dc21c5af4ea7316d8e9.gz
2008-08-25 14:30:05 -04:00
zach
35d1714621 Twitter-compatible API: support for new in_reply_to_status_id in statuses/update
darcs-hash:20080815185317-ca946-11c3f9f7255180d5d6ea7b115b3e33b2abb7fe93.gz
2008-08-15 14:53:17 -04:00
Evan Prodromou
2c3ed64027 LOG_ERROR -> LOG_ERR (again)
darcs-hash:20080807234227-84dde-a64619c71de020aa2284ca1a36ea2a71ff8b29a6.gz
2008-08-07 19:42:27 -04:00
Evan Prodromou
9676315b2e extend length of source for notices
darcs-hash:20080731152731-84dde-dc6bf652c38ae9a52950e65d7cb310f870a70640.gz
2008-07-31 11:27:31 -04:00
Evan Prodromou
c21ed78fa7 save the source
darcs-hash:20080730025052-84dde-9669e6a7df50bf5762bd3e175ed1471bff9d446c.gz
2008-07-29 22:50:52 -04:00
Evan Prodromou
d79dc8344b refactor notice-adding code to one static method on Notice
darcs-hash:20080730022856-84dde-f19e4ff5d5ae2603b63b8aebd8f878ec90b3ce22.gz
2008-07-29 22:28:56 -04:00
Mike Cochrane
5d84485001 First cut at hastags support.
darcs-hash:20080720055702-533db-193ed842b0d0a952bef71a3c5287213ada0ef15c.gz
2008-07-20 01:57:02 -04:00
Evan Prodromou
471e4056f4 add notice sources (currently unused)
darcs-hash:20080722164639-84dde-19c6300516443862da016120cf9eed40e5972b6d.gz
2008-07-22 12:46:39 -04:00
Evan Prodromou
e1361cdf48 mark notices as local
darcs-hash:20080722141614-84dde-b80c6945fdb90a5f67acaba65a1e4c2b306b1f8e.gz
2008-07-22 10:16:14 -04:00
Evan Prodromou
499afd8c22 replies from people you're not subscribed to over Jabber
darcs-hash:20080715195513-84dde-454419c971015be385d9c4c35f7acbee419031f9.gz
2008-07-15 15:55:13 -04:00
Mike Cochrane
7e38142d4a Resolve conflicts and convert _t( to _( where it was introduced again.
darcs-hash:20080710045126-533db-ffd9bcfe1295b3a376579ed7cd2278d5597b1884.gz
2008-07-10 00:51:26 -04:00
Mike Cochrane
4b656f47df Merge conflicts and kill a whole lot of trailing whitespace on lines.
darcs-hash:20080709224630-533db-b5399baef280133858dac9b89c2cd6a2aba9f861.gz
2008-07-09 18:46:30 -04:00
Evan Prodromou
816262d488 rebuild DB_DataObject classes for new structure
darcs-hash:20080709200711-84dde-b6a9e403ab50ef5a6497a25a756ed63c373f0402.gz
2008-07-09 16:07:11 -04:00
Evan Prodromou
7979176e14 generate classes for db schema with URIs
darcs-hash:20080522184109-84dde-0d13fc6890f85613554f5dd64b1baa67bbcaa8f6.gz
2008-05-22 14:41:09 -04:00
Evan Prodromou
46b3f1c3a7 remove validation code
darcs-hash:20080521110253-84dde-e8d6f62225bb56f5e08b28b35d23ccfbe56984fd.gz
2008-05-21 07:02:53 -04:00
Evan Prodromou
e1f04061b9 ease up on the validation
darcs-hash:20080520210119-84dde-a9b74a933bd45b2e6b2f96a53a1be55caa0f7912.gz
2008-05-20 17:01:19 -04:00
Evan Prodromou
5137eb20d8 fix validation of url
darcs-hash:20080520192634-84dde-2394dbf8767ff886817a5f20f5c9064ea3a1bc79.gz
2008-05-20 15:26:34 -04:00
Evan Prodromou
52600ce0b0 trim whitespace
darcs-hash:20080520191412-84dde-a607dbe848279639630edd1ab4616d05cc2318d1.gz
2008-05-20 15:14:12 -04:00
Evan Prodromou
5d1a6f0fef add validation methods to classes
darcs-hash:20080520185756-84dde-290bc12cddfc1738a96385e95821d466eff11196.gz
2008-05-20 14:57:56 -04:00
Evan Prodromou
3b14b7901c fixes to make it all lint
Ran everything through php -l, found out that it didn't compile.

So: fixed the am-I-running-in-Laconica check at the top of each file.
Some syntax fixes in shownotice, showstream, common.

darcs-hash:20080517154701-84dde-8d38da89c5b9cb3b40704adb04a4de880c204181.gz
2008-05-17 11:47:01 -04:00
Evan Prodromou
fac522f4d7 settings and avatars
Did considerable work on the settings section.

Redesigned the DB to allow avatars. Each avatar image has a size and
an URL. There can be multiple avatars per profile, just different sizes.

Added accessors in Profile for avatar. Show the avatar in lots of
places, where it makes sense. Constants for avatar sizes in common.php.

darcs-hash:20080515162844-84dde-fe0630366e247c02ca8ca9d1cc6b963cfce57a26.gz
2008-05-15 12:28:44 -04:00
Evan Prodromou
b6cfd2dffe license block for source code
Added GNU Affero GPL license block to source code.

Added name "LACONICA". I think it should work fine.

darcs-hash:20080514192648-84dde-a430dc438a4e3741c62ccf30ee7f85ecc968b159.gz
2008-05-14 15:26:48 -04:00
Evan Prodromou
0036795582 deny access to include files
darcs-hash:20080514190009-84dde-30f0f1b5955d71cd85563e12078ab02bf8645524.gz
2008-05-14 15:00:09 -04:00
Evan Prodromou
f0a30cc89d read-only stuff
darcs-hash:20080509021604-84dde-f785fc09dd435fc12741b3a75184e2425721d03d.gz
2008-05-08 22:16:04 -04:00
Evan Prodromou
0fa97d6e2e add data objects
darcs-hash:20080507171542-84dde-232baccc10f015e8c0e80edf0ceea4aa5c85b4b7.gz
2008-05-07 13:15:42 -04:00