Commit a38ed005 authored by mmn's avatar mmn

Moved jbfavre's Twitter card support to Twitter plugin

It was causing problems with an undefined TWITTER_SERVICE constant.
parent f54584c1
...@@ -117,47 +117,6 @@ class AttachmentAction extends Action ...@@ -117,47 +117,6 @@ class AttachmentAction extends Action
common_local_url('attachment', common_local_url('attachment',
array('attachment' => $this->attachment->id)))), array('attachment' => $this->attachment->id)))),
'title'=>'oEmbed'),null); 'title'=>'oEmbed'),null);
/* Twitter card support. See https://dev.twitter.com/docs/cards */
/* @fixme: should we display twitter cards only for attachments posted
* by local users ? Seems mandatory to display twitter:creator
*/
switch ($this->attachment->mimetype) {
case 'image/pjpeg':
case 'image/jpeg':
case 'image/jpg':
case 'image/png':
case 'image/gif':
$this->element('meta', array('name' => 'twitter:card',
'content' => 'photo'),
null);
$this->element('meta', array('name' => 'twitter:url',
'content' => common_local_url('attachment',
array('attachment' => $this->attachment->id))),
null );
$this->element('meta', array('name' => 'twitter:image',
'content' => $this->attachment->url));
$this->element('meta', array('name' => 'twitter:title',
'content' => $this->attachment->title));
$ns = new AttachmentNoticeSection($this);
$notices = $ns->getNotices();
$noticeArray = $notices->fetchAll();
// Should not have more than 1 notice for this attachment.
if( count($noticeArray) != 1 ) { break; }
$post = $noticeArray[0];
$flink = Foreign_link::getByUserID($post->profile_id, TWITTER_SERVICE);
if( $flink ) { // Our local user has registered Twitter Gateway
$fuser = Foreign_user::getForeignUser($flink->foreign_id, TWITTER_SERVICE);
if( $fuser ) { // Got nickname for local user's Twitter account
$this->element('meta', array('name' => 'twitter:creator',
'content' => '@'.$fuser->nickname));
}
}
break;
default: break;
}
} }
/** /**
......
...@@ -528,4 +528,57 @@ class TwitterBridgePlugin extends Plugin ...@@ -528,4 +528,57 @@ class TwitterBridgePlugin extends Plugin
return true; return true;
} }
public function onEndShowHeadElements(Action $action)
{
if (!($action instanceof AttachmentAction)) {
return true;
}
/* Twitter card support. See https://dev.twitter.com/docs/cards */
/* @fixme: should we display twitter cards only for attachments posted
* by local users ? Seems mandatory to display twitter:creator
*
* Author: jbfavre
*/
switch ($action->attachment->mimetype) {
case 'image/pjpeg':
case 'image/jpeg':
case 'image/jpg':
case 'image/png':
case 'image/gif':
$action->element('meta', array('name' => 'twitter:card',
'content' => 'photo'),
null);
$action->element('meta', array('name' => 'twitter:url',
'content' => common_local_url('attachment',
array('attachment' => $action->attachment->id))),
null );
$action->element('meta', array('name' => 'twitter:image',
'content' => $action->attachment->url));
$action->element('meta', array('name' => 'twitter:title',
'content' => $action->attachment->title));
$ns = new AttachmentNoticeSection($this);
$notices = $ns->getNotices();
$noticeArray = $notices->fetchAll();
// Should not have more than 1 notice for this attachment.
if( count($noticeArray) != 1 ) { break; }
$post = $noticeArray[0];
$flink = Foreign_link::getByUserID($post->profile_id, TWITTER_SERVICE);
if( $flink ) { // Our local user has registered Twitter Gateway
$fuser = Foreign_user::getForeignUser($flink->foreign_id, TWITTER_SERVICE);
if( $fuser ) { // Got nickname for local user's Twitter account
$action->element('meta', array('name' => 'twitter:creator',
'content' => '@'.$fuser->nickname));
}
}
break;
default: break;
}
return true;
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment