Merge branch 'testing' of gitorious.org:statusnet/mainline into testing

* 'testing' of gitorious.org:statusnet/mainline:
  OStatus: save file records for enclosures
  Changed the geo location cookie Expire to Session.
This commit is contained in:
Zach Copley 2010-03-02 16:51:21 -08:00
commit 9520c0996d
5 changed files with 56 additions and 9 deletions

View File

@ -286,5 +286,12 @@ class File extends Memcached_DataObject
} }
return $enclosure; return $enclosure;
} }
// quick back-compat hack, since there's still code using this
function isEnclosure()
{
$enclosure = $this->getEnclosure();
return !empty($enclosure);
}
} }

View File

@ -211,6 +211,8 @@ class Notice extends Memcached_DataObject
* extracting ! tags from content * extracting ! tags from content
* array 'tags' list of hashtag strings to save with the notice * array 'tags' list of hashtag strings to save with the notice
* in place of extracting # tags from content * in place of extracting # tags from content
* array 'urls' list of attached/referred URLs to save with the
* notice in place of extracting links from content
* @fixme tag override * @fixme tag override
* *
* @return Notice * @return Notice
@ -380,8 +382,11 @@ class Notice extends Memcached_DataObject
$notice->saveTags(); $notice->saveTags();
} }
// @fixme pass in data for URLs too? if (isset($urls)) {
$notice->saveUrls(); $notice->saveKnownUrls($urls);
} else {
$notice->saveUrls();
}
// Prepare inbox delivery, may be queued to background. // Prepare inbox delivery, may be queued to background.
$notice->distribute(); $notice->distribute();
@ -427,6 +432,25 @@ class Notice extends Memcached_DataObject
common_replace_urls_callback($this->content, array($this, 'saveUrl'), $this->id); common_replace_urls_callback($this->content, array($this, 'saveUrl'), $this->id);
} }
/**
* Save the given URLs as related links/attachments to the db
*
* follow redirects and save all available file information
* (mimetype, date, size, oembed, etc.)
*
* @return void
*/
function saveKnownUrls($urls)
{
// @fixme validation?
foreach ($urls as $url) {
File::processNew($url, $this->id);
}
}
/**
* @private callback
*/
function saveUrl($data) { function saveUrl($data) {
list($url, $notice_id) = $data; list($url, $notice_id) = $data;
File::processNew($url, $notice_id); File::processNew($url, $notice_id);

View File

@ -53,7 +53,7 @@ var SN = { // StatusNet
NoticeLocationNs: 'notice_data-location_ns', NoticeLocationNs: 'notice_data-location_ns',
NoticeGeoName: 'notice_data-geo_name', NoticeGeoName: 'notice_data-geo_name',
NoticeDataGeo: 'notice_data-geo', NoticeDataGeo: 'notice_data-geo',
NoticeDataGeoCookie: 'notice_data-geo_cookie', NoticeDataGeoCookie: 'NoticeDataGeo',
NoticeDataGeoSelected: 'notice_data-geo_selected', NoticeDataGeoSelected: 'notice_data-geo_selected',
StatusNetInstance:'StatusNetInstance' StatusNetInstance:'StatusNetInstance'
} }
@ -423,8 +423,11 @@ var SN = { // StatusNet
}; };
notice.find('a.attachment').click(function() { notice.find('a.attachment').click(function() {
$().jOverlay({url: $('address .url')[0].href+'attachment/' + ($(this).attr('id').substring('attachment'.length + 1)) + '/ajax'}); var attachId = ($(this).attr('id').substring('attachment'.length + 1));
return false; if (attachId) {
$().jOverlay({url: $('address .url')[0].href+'attachment/' + attachId + '/ajax'});
return false;
}
}); });
if ($('#shownotice').length == 0) { if ($('#shownotice').length == 0) {
@ -494,7 +497,7 @@ var SN = { // StatusNet
$('#'+SN.C.S.NoticeLocationId).val(''); $('#'+SN.C.S.NoticeLocationId).val('');
$('#'+SN.C.S.NoticeDataGeo).attr('checked', false); $('#'+SN.C.S.NoticeDataGeo).attr('checked', false);
$.cookie(SN.C.S.NoticeDataGeoCookie, 'disabled', { path: '/', expires: SN.U.GetFullYear(2029, 0, 1) }); $.cookie(SN.C.S.NoticeDataGeoCookie, 'disabled', { path: '/' });
} }
function getJSONgeocodeURL(geocodeURL, data) { function getJSONgeocodeURL(geocodeURL, data) {
@ -537,7 +540,7 @@ var SN = { // StatusNet
NDG: true NDG: true
}; };
$.cookie(SN.C.S.NoticeDataGeoCookie, JSON.stringify(cookieValue), { path: '/', expires: SN.U.GetFullYear(2029, 0, 1) }); $.cookie(SN.C.S.NoticeDataGeoCookie, JSON.stringify(cookieValue), { path: '/' });
}); });
} }

View File

@ -1044,6 +1044,7 @@ class Activity
public $id; // ID of the activity public $id; // ID of the activity
public $title; // title of the activity public $title; // title of the activity
public $categories = array(); // list of AtomCategory objects public $categories = array(); // list of AtomCategory objects
public $enclosures = array(); // list of enclosure URL references
/** /**
* Turns a regular old Atom <entry> into a magical activity * Turns a regular old Atom <entry> into a magical activity
@ -1140,6 +1141,10 @@ class Activity
$this->categories[] = new AtomCategory($catEl); $this->categories[] = new AtomCategory($catEl);
} }
} }
foreach (ActivityUtils::getLinks($entry, 'enclosure') as $link) {
$this->enclosures[] = $link->getAttribute('href');
}
} }
/** /**

View File

@ -550,7 +550,8 @@ class Ostatus_profile extends Memcached_DataObject
'rendered' => $rendered, 'rendered' => $rendered,
'replies' => array(), 'replies' => array(),
'groups' => array(), 'groups' => array(),
'tags' => array()); 'tags' => array(),
'urls' => array());
// Check for optional attributes... // Check for optional attributes...
@ -595,6 +596,12 @@ class Ostatus_profile extends Memcached_DataObject
} }
} }
// Atom enclosures -> attachment URLs
foreach ($activity->enclosures as $href) {
// @fixme save these locally or....?
$options['urls'][] = $href;
}
try { try {
$saved = Notice::saveNew($oprofile->profile_id, $saved = Notice::saveNew($oprofile->profile_id,
$content, $content,
@ -620,7 +627,8 @@ class Ostatus_profile extends Memcached_DataObject
protected function purify($html) protected function purify($html)
{ {
require_once INSTALLDIR.'/extlib/htmLawed/htmLawed.php'; require_once INSTALLDIR.'/extlib/htmLawed/htmLawed.php';
$config = array('safe' => 1); $config = array('safe' => 1,
'deny_attribute' => 'id,style,on*');
return htmLawed($html, $config); return htmLawed($html, $config);
} }