]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - plugins/Bookmark/BookmarkPlugin.php
Initial move towards microformats2
[quix0rs-gnu-social.git] / plugins / Bookmark / BookmarkPlugin.php
index c8408cf9713318a8faefc2bdc2dfa5e64ca48d84..170fa578f99b2d25faa7e0109aed790a073570a4 100644 (file)
@@ -80,39 +80,7 @@ class BookmarkPlugin extends MicroAppPlugin
     {
         $schema = Schema::get();
 
-        // For storing user-submitted flags on profiles
-
-        $schema->ensureTable('bookmark',
-                             array(new ColumnDef('id',
-                                                 'char',
-                                                 36,
-                                                 false,
-                                                 'PRI'),
-                                   new ColumnDef('profile_id',
-                                                 'integer',
-                                                 null,
-                                                 false,
-                                                 'MUL'),
-                                   new ColumnDef('url',
-                                                 'varchar',
-                                                 255,
-                                                 false,
-                                                 'MUL'),
-                                   new ColumnDef('title',
-                                                 'varchar',
-                                                 255),
-                                   new ColumnDef('description',
-                                                 'text'),
-                                   new ColumnDef('uri',
-                                                 'varchar',
-                                                 255,
-                                                 false,
-                                                 'UNI'),
-                                   new ColumnDef('created',
-                                                 'datetime',
-                                                 null,
-                                                 false,
-                                                 'MUL')));
+        $schema->ensureTable('bookmark', Bookmark::schemaDef());
 
         return true;
     }
@@ -126,7 +94,7 @@ class BookmarkPlugin extends MicroAppPlugin
      */
     function onEndShowStyles($action)
     {
-        $action->cssLink($this->path('bookmark.css'));
+        $action->cssLink($this->path('css/bookmark.css'));
         return true;
     }
 
@@ -135,44 +103,6 @@ class BookmarkPlugin extends MicroAppPlugin
         $action->script($this->path('js/bookmark.js'));
         return true;
     }
-    /**
-     * Load related modules when needed
-     *
-     * @param string $cls Name of the class to be loaded
-     *
-     * @return boolean hook value; true means continue processing, false means stop.
-     */
-    function onAutoload($cls)
-    {
-        $dir = dirname(__FILE__);
-
-        switch ($cls)
-        {
-        case 'BookmarksAction':
-        case 'BookmarksrssAction':
-        case 'ApiTimelineBookmarksAction':
-        case 'ShowbookmarkAction':
-        case 'NewbookmarkAction':
-        case 'BookmarkpopupAction':
-        case 'NoticebyurlAction':
-        case 'BookmarkforurlAction':
-        case 'ImportdeliciousAction':
-            include_once $dir . '/' . strtolower(mb_substr($cls, 0, -6)) . '.php';
-            return false;
-        case 'Bookmark':
-            include_once $dir.'/'.$cls.'.php';
-            return false;
-        case 'BookmarkListItem':
-        case 'BookmarkForm':
-        case 'InitialBookmarkForm':
-        case 'DeliciousBackupImporter':
-        case 'DeliciousBookmarkImporter':
-            include_once $dir.'/'.strtolower($cls).'.php';
-            return false;
-        default:
-            return true;
-        }
-    }
 
     /**
      * Map URLs to actions
@@ -329,7 +259,7 @@ class BookmarkPlugin extends MicroAppPlugin
         }
                
            $id = (empty($nli->repeat)) ? $nli->notice->id : $nli->repeat->id;
-           $class = 'hentry notice bookmark';
+           $class = 'h-entry notice bookmark';
            if ($nli->notice->scope != 0 && $nli->notice->scope != 1) {
                $class .= ' limited-scope';
            }
@@ -364,7 +294,6 @@ class BookmarkPlugin extends MicroAppPlugin
         if (!$this->user) {
             // TRANS: Client error displayed when trying to display bookmarks for a non-existing user.
             $this->clientError(_('No such user.'));
-            return false;
         }
 
         $action->menuItem(common_local_url('bookmarks', array('nickname' => $this->user->nickname)),
@@ -375,40 +304,6 @@ class BookmarkPlugin extends MicroAppPlugin
         return true;
     }
 
-    /**
-     * Save a remote bookmark (from Salmon or PuSH)
-     *
-     * @param Ostatus_profile $author   Author of the bookmark
-     * @param Activity        $activity Activity to save
-     *
-     * @return Notice resulting notice.
-     */
-    static private function _postRemoteBookmark(Ostatus_profile $author,
-                                                Activity $activity)
-    {
-        $bookmark = $activity->objects[0];
-
-        $options = array('uri' => $bookmark->id,
-                         'url' => $bookmark->link,
-                         'is_local' => Notice::REMOTE,
-                         'source' => 'ostatus');
-
-        return self::_postBookmark($author->localProfile(), $activity, $options);
-    }
-
-    /**
-     * Test if an activity represents posting a bookmark
-     *
-     * @param Activity $activity Activity to test
-     *
-     * @return true if it's a Post of a Bookmark, else false
-     */
-    static private function _isPostBookmark($activity)
-    {
-        return ($activity->verb == ActivityVerb::POST &&
-                $activity->objects[0]->type == ActivityObject::BOOKMARK);
-    }
-
     function types()
     {
         return array(ActivityObject::BOOKMARK);
@@ -488,20 +383,19 @@ class BookmarkPlugin extends MicroAppPlugin
             }
         }
 
-        $replies = $activity->context->attention;
-
         $options['groups']  = array();
-        $options['replies'] = array();
-
-        foreach ($replies as $replyURI) {
-            $other = Profile::fromURI($replyURI);
-            if (!empty($other)) {
-                $options['replies'][] = $replyURI;
-            } else {
-                $group = User_group::getKV('uri', $replyURI);
-                if (!empty($group)) {
-                    $options['groups'][] = $replyURI;
+        $options['replies'] = array();  // TODO: context->attention
+
+        foreach ($activity->context->attention as $attnUrl=>$type) {
+            try {
+                $other = Profile::fromUri($attnUrl);
+                if ($other->isGroup()) {
+                    $options['groups'][] = $other->id;
+                } else {
+                    $options['replies'][] = $attnUrl;
                 }
+            } catch (UnknownUriException $e) {
+                // We simply don't know this URI, despite lookup attempts.
             }
         }
 
@@ -538,7 +432,7 @@ class BookmarkPlugin extends MicroAppPlugin
         $object->type    = ActivityObject::BOOKMARK;
         $object->title   = $nb->title;
         $object->summary = $nb->description;
-        $object->link    = $notice->bestUrl();
+        $object->link    = $notice->getUrl();
 
         // Attributes of the URL
 
@@ -563,9 +457,8 @@ class BookmarkPlugin extends MicroAppPlugin
 
         // Attributes of the thumbnail, if any
 
-        $thumbnail = $target->getThumbnail();
-
-        if (!empty($thumbnail)) {
+        try {
+            $thumbnail = $target->getThumbnail();
             $tattrs = array('rel' => 'preview',
                             'href' => $thumbnail->url);
 
@@ -577,7 +470,9 @@ class BookmarkPlugin extends MicroAppPlugin
                 $tattrs['media:height'] = $thumbnail->height;
             }
 
-            $object->extra[] = array('link', $attrs, null);
+            $object->extra[] = array('link', $tattrs, null);
+        } catch (UnsupportedMediaException $e) {
+            // No image thumbnail metadata available
         }
 
         return $object;