summaryrefslogtreecommitdiff
path: root/plugins/OStatus/OStatusPlugin.php
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/OStatus/OStatusPlugin.php')
-rw-r--r--plugins/OStatus/OStatusPlugin.php94
1 files changed, 50 insertions, 44 deletions
diff --git a/plugins/OStatus/OStatusPlugin.php b/plugins/OStatus/OStatusPlugin.php
index c5a2db3d8..3ac2bb87d 100644
--- a/plugins/OStatus/OStatusPlugin.php
+++ b/plugins/OStatus/OStatusPlugin.php
@@ -58,8 +58,6 @@ class OStatusPlugin extends Plugin
$m->connect('main/push/callback/:feed',
array('action' => 'pushcallback'),
array('feed' => '[0-9]+'));
- $m->connect('settings/feedsub',
- array('action' => 'feedsubsettings'));
// Salmon endpoint
$m->connect('main/salmon/user/:id',
@@ -137,25 +135,6 @@ class OStatusPlugin extends Plugin
}
/**
- * Add the feed settings page to the Connect Settings menu
- *
- * @param Action &$action The calling page
- *
- * @return boolean hook return
- */
- function onEndConnectSettingsNav(&$action)
- {
- $action_name = $action->trimmed('action');
-
- $action->menuItem(common_local_url('feedsubsettings'),
- _m('Feeds'),
- _m('Feed subscription options'),
- $action_name === 'feedsubsettings');
-
- return true;
- }
-
- /**
* Automatically load the actions and libraries used by the plugin
*
* @param Class $cls the class
@@ -215,46 +194,62 @@ class OStatusPlugin extends Plugin
* @fixme push webfinger lookup & sending to a background queue
* @fixme also detect short-form name for remote subscribees where not ambiguous
*/
+
function onEndNoticeSave($notice)
{
- $count = preg_match_all('/(\w+\.)*\w+@(\w+\.)*\w+(\w+\-\w+)*\.\w+/', $notice->content, $matches);
- if ($count) {
- foreach ($matches[0] as $webfinger) {
-
- // FIXME: look up locally first
+ $mentioned = $notice->getReplies();
- // Check to see if we've got an actual webfinger
- $w = new Webfinger;
+ foreach ($mentioned as $profile_id) {
- $endpoint_uri = '';
+ $oprofile = Ostatus_profile::staticGet('profile_id', $profile_id);
- $result = $w->lookup($webfinger);
- if (empty($result)) {
- continue;
- }
+ if (!empty($oprofile) && !empty($oprofile->salmonuri)) {
- foreach ($result->links as $link) {
- if ($link['rel'] == 'salmon') {
- $endpoint_uri = $link['href'];
- }
- }
-
- if (empty($endpoint_uri)) {
- continue;
- }
+ common_log(LOG_INFO, "Sending notice '{$notice->uri}' to remote profile '{$oprofile->uri}'.");
// FIXME: this needs to go out in a queue handler
$xml = '<?xml version="1.0" encoding="UTF-8" ?>';
- $xml .= $notice->asAtomEntry();
+ $xml .= $notice->asAtomEntry(true, true);
$salmon = new Salmon();
- $salmon->post($endpoint_uri, $xml);
+ $salmon->post($oprofile->salmonuri, $xml);
}
}
}
/**
+ *
+ */
+
+ function onEndFindMentions($sender, $text, &$mentions)
+ {
+ preg_match_all('/(?:^|\s+)@((?:\w+\.)*\w+@(?:\w+\.)*\w+(?:\w+\-\w+)*\.\w+)/',
+ $text,
+ $wmatches,
+ PREG_OFFSET_CAPTURE);
+
+ foreach ($wmatches[1] as $wmatch) {
+
+ $webfinger = $wmatch[0];
+
+ $oprofile = Ostatus_profile::ensureWebfinger($webfinger);
+
+ if (!empty($oprofile)) {
+
+ $profile = $oprofile->localProfile();
+
+ $mentions[] = array('mentioned' => array($profile),
+ 'text' => $wmatch[0],
+ 'position' => $wmatch[1],
+ 'url' => $profile->profileurl);
+ }
+ }
+
+ return true;
+ }
+
+ /**
* Notify remote server and garbage collect unused feeds on unsubscribe.
* @fixme send these operations to background queues
*
@@ -312,6 +307,7 @@ class OStatusPlugin extends Plugin
function onCheckSchema() {
$schema = Schema::get();
$schema->ensureTable('ostatus_profile', Ostatus_profile::schemaDef());
+ $schema->ensureTable('ostatus_source', Ostatus_source::schemaDef());
$schema->ensureTable('feedsub', FeedSub::schemaDef());
$schema->ensureTable('hubsub', HubSub::schemaDef());
return true;
@@ -491,4 +487,14 @@ class OStatusPlugin extends Plugin
return true;
}
+
+ function onStartGetProfileUri($profile, &$uri)
+ {
+ $oprofile = Ostatus_profile::staticGet('profile_id', $profile->id);
+ if (!empty($oprofile)) {
+ $uri = $oprofile->uri;
+ return false;
+ }
+ return true;
+ }
}