From db7cc7fa7553e0be302d518360648940756f131c Mon Sep 17 00:00:00 2001 From: Mikael Nordfeldth Date: Tue, 24 Jun 2014 15:52:54 +0200 Subject: [PATCH] Favorite functionality put into plugin (not done yet) Now we have to fix any code in the core which directly uses the Fave class or any other favorite stuff, since it is pluginised and thus might not be available on some installations. --- lib/default.php | 1 + lib/router.php | 64 +--------- plugins/Favorite/FavoritePlugin.php | 111 ++++++++++++++++++ .../Favorite/actions}/apifavoritecreate.php | 0 .../Favorite/actions}/apifavoritedestroy.php | 0 .../Favorite/actions}/apistatusesfavs.php | 0 .../actions}/apitimelinefavorites.php | 0 .../Favorite/actions}/atompubfavoritefeed.php | 0 .../Favorite/actions}/atompubshowfavorite.php | 0 .../Favorite/actions}/disfavor.php | 0 .../Favorite/actions}/favor.php | 0 .../Favorite/actions}/favorited.php | 0 .../Favorite/actions}/favoritesrss.php | 0 .../Favorite/actions}/showfavorites.php | 0 .../Favorite/classes}/Fave.php | 0 .../Favorite/forms/disfavor.php | 0 .../Favorite/forms/favor.php | 0 .../Favorite/lib}/favenoticestream.php | 0 .../Favorite/lib}/popularnoticesection.php | 0 .../Favorite/lib}/popularnoticestream.php | 0 20 files changed, 115 insertions(+), 61 deletions(-) create mode 100644 plugins/Favorite/FavoritePlugin.php rename {actions => plugins/Favorite/actions}/apifavoritecreate.php (100%) rename {actions => plugins/Favorite/actions}/apifavoritedestroy.php (100%) rename {actions => plugins/Favorite/actions}/apistatusesfavs.php (100%) rename {actions => plugins/Favorite/actions}/apitimelinefavorites.php (100%) rename {actions => plugins/Favorite/actions}/atompubfavoritefeed.php (100%) rename {actions => plugins/Favorite/actions}/atompubshowfavorite.php (100%) rename {actions => plugins/Favorite/actions}/disfavor.php (100%) rename {actions => plugins/Favorite/actions}/favor.php (100%) rename {actions => plugins/Favorite/actions}/favorited.php (100%) rename {actions => plugins/Favorite/actions}/favoritesrss.php (100%) rename {actions => plugins/Favorite/actions}/showfavorites.php (100%) rename {classes => plugins/Favorite/classes}/Fave.php (100%) rename lib/disfavorform.php => plugins/Favorite/forms/disfavor.php (100%) rename lib/favorform.php => plugins/Favorite/forms/favor.php (100%) rename {lib => plugins/Favorite/lib}/favenoticestream.php (100%) rename {lib => plugins/Favorite/lib}/popularnoticesection.php (100%) rename {lib => plugins/Favorite/lib}/popularnoticestream.php (100%) diff --git a/lib/default.php b/lib/default.php index f001049363..59f3cd9985 100644 --- a/lib/default.php +++ b/lib/default.php @@ -294,6 +294,7 @@ $default = array('core' => array( 'AuthCrypt' => array(), 'Cronish' => array(), + 'Favorite' => array(), 'LRDD' => array(), 'StrictTransportSecurity' => array(), ), diff --git a/lib/router.php b/lib/router.php index 0a835ce4d8..54683e986e 100644 --- a/lib/router.php +++ b/lib/router.php @@ -143,7 +143,7 @@ class Router $main = array('login', 'logout', 'register', 'subscribe', 'unsubscribe', 'cancelsubscription', 'approvesub', 'confirmaddress', 'recoverpassword', - 'invite', 'favor', 'disfavor', 'sup', + 'invite', 'sup', 'block', 'unblock', 'subedit', 'groupblock', 'groupunblock', 'sandbox', 'unsandbox', @@ -454,11 +454,6 @@ class Router 'format' => '(xml|json)')); // START qvitter API additions - - $m->connect('api/statuses/favs/:id.:format', - array('action' => 'ApiStatusesFavs', - 'id' => '[0-9]+', - 'format' => '(xml|json)')); $m->connect('api/attachment/:id.:format', array('action' => 'ApiAttachment', @@ -595,39 +590,6 @@ class Router $m->connect('api/account/rate_limit_status.:format', array('action' => 'ApiAccountRateLimitStatus')); - // favorites - - $m->connect('api/favorites/create.:format', - array('action' => 'ApiFavoriteCreate', - 'format' => '(xml|json)')); - - $m->connect('api/favorites/destroy.:format', - array('action' => 'ApiFavoriteDestroy', - 'format' => '(xml|json)')); - - $m->connect('api/favorites/list.:format', - array('action' => 'ApiTimelineFavorites', - 'format' => '(xml|json|rss|atom|as)')); - - $m->connect('api/favorites/:id.:format', - array('action' => 'ApiTimelineFavorites', - 'id' => Nickname::INPUT_FMT, - 'format' => '(xml|json|rss|atom|as)')); - - $m->connect('api/favorites.:format', - array('action' => 'ApiTimelineFavorites', - 'format' => '(xml|json|rss|atom|as)')); - - $m->connect('api/favorites/create/:id.:format', - array('action' => 'ApiFavoriteCreate', - 'id' => '[0-9]+', - 'format' => '(xml|json)')); - - $m->connect('api/favorites/destroy/:id.:format', - array('action' => 'ApiFavoriteDestroy', - 'id' => '[0-9]+', - 'format' => '(xml|json)')); - // blocks $m->connect('api/blocks/create/:id.:format', @@ -921,16 +883,12 @@ class Router 'nickname' => $nickname)); } - foreach (array('all', 'replies', 'favorites') as $a) { + foreach (array('all', 'replies') as $a) { $m->connect($a.'/rss', array('action' => $a.'rss', 'nickname' => $nickname)); } - $m->connect('favorites', - array('action' => 'showfavorites', - 'nickname' => $nickname)); - $m->connect('avatar', array('action' => 'avatarbynickname', 'nickname' => $nickname)); @@ -1011,11 +969,8 @@ class Router $m->connect('', array('action' => 'public')); $m->connect('rss', array('action' => 'publicrss')); $m->connect('featuredrss', array('action' => 'featuredrss')); - $m->connect('favoritedrss', array('action' => 'favoritedrss')); $m->connect('featured/', array('action' => 'featured')); $m->connect('featured', array('action' => 'featured')); - $m->connect('favorited/', array('action' => 'favorited')); - $m->connect('favorited', array('action' => 'favorited')); $m->connect('rsd.xml', array('action' => 'rsd')); foreach (array('subscriptions', 'subscribers', @@ -1096,16 +1051,12 @@ class Router array('nickname' => Nickname::DISPLAY_FMT)); } - foreach (array('all', 'replies', 'favorites') as $a) { + foreach (array('all', 'replies') as $a) { $m->connect(':nickname/'.$a.'/rss', array('action' => $a.'rss'), array('nickname' => Nickname::DISPLAY_FMT)); } - $m->connect(':nickname/favorites', - array('action' => 'showfavorites'), - array('nickname' => Nickname::DISPLAY_FMT)); - $m->connect(':nickname/avatar', array('action' => 'avatarbynickname'), array('nickname' => Nickname::DISPLAY_FMT)); @@ -1155,15 +1106,6 @@ class Router array('action' => 'AtomPubSubscriptionFeed'), array('subscriber' => '[0-9]+')); - $m->connect('api/statusnet/app/favorites/:profile/:notice.atom', - array('action' => 'AtomPubShowFavorite'), - array('profile' => '[0-9]+', - 'notice' => '[0-9]+')); - - $m->connect('api/statusnet/app/favorites/:profile.atom', - array('action' => 'AtomPubFavoriteFeed'), - array('profile' => '[0-9]+')); - $m->connect('api/statusnet/app/memberships/:profile/:group.atom', array('action' => 'AtomPubShowMembership'), array('profile' => '[0-9]+', diff --git a/plugins/Favorite/FavoritePlugin.php b/plugins/Favorite/FavoritePlugin.php new file mode 100644 index 0000000000..9fbaf258c4 --- /dev/null +++ b/plugins/Favorite/FavoritePlugin.php @@ -0,0 +1,111 @@ +. + */ + +if (!defined('GNUSOCIAL')) { exit(1); } + +/** + * @package UI + * @maintainer Mikael Nordfeldth + */ +class FavoritePlugin extends Plugin +{ + public function onRouterInitialized(URLMapper $m) + { + // Web UI actions + $m->connect('main/favor', array('action' => 'favor')); + $m->connect('main/disfavor', array('action' => 'disfavor')); + + if (common_config('singleuser', 'enabled')) { + $nickname = User::singleUserNickname(); + + $m->connect('favorites', + array('action' => 'showfavorites', + 'nickname' => $nickname)); + $m->connect('favoritesrss', + array('action' => 'favoritesrss', + 'nickname' => $nickname)); + } else { + $m->connect('favoritedrss', array('action' => 'favoritedrss')); + $m->connect('favorited/', array('action' => 'favorited')); + $m->connect('favorited', array('action' => 'favorited')); + + $m->connect(':nickname/favorites', + array('action' => 'showfavorites'), + array('nickname' => Nickname::DISPLAY_FMT)); + $m->connect(':nickname/favorites/rss', + array('action' => 'favoritesrss'), + array('nickname' => Nickname::DISPLAY_FMT)); + } + + // Favorites for API + $m->connect('api/favorites/create.:format', + array('action' => 'ApiFavoriteCreate', + 'format' => '(xml|json)')); + $m->connect('api/favorites/destroy.:format', + array('action' => 'ApiFavoriteDestroy', + 'format' => '(xml|json)')); + $m->connect('api/favorites/list.:format', + array('action' => 'ApiTimelineFavorites', + 'format' => '(xml|json|rss|atom|as)')); + $m->connect('api/favorites/:id.:format', + array('action' => 'ApiTimelineFavorites', + 'id' => Nickname::INPUT_FMT, + 'format' => '(xml|json|rss|atom|as)')); + $m->connect('api/favorites.:format', + array('action' => 'ApiTimelineFavorites', + 'format' => '(xml|json|rss|atom|as)')); + $m->connect('api/favorites/create/:id.:format', + array('action' => 'ApiFavoriteCreate', + 'id' => '[0-9]+', + 'format' => '(xml|json)')); + $m->connect('api/favorites/destroy/:id.:format', + array('action' => 'ApiFavoriteDestroy', + 'id' => '[0-9]+', + 'format' => '(xml|json)')); + + // AtomPub API + $m->connect('api/statusnet/app/favorites/:profile/:notice.atom', + array('action' => 'AtomPubShowFavorite'), + array('profile' => '[0-9]+', + 'notice' => '[0-9]+')); + + $m->connect('api/statusnet/app/favorites/:profile.atom', + array('action' => 'AtomPubFavoriteFeed'), + array('profile' => '[0-9]+')); + + // Required for qvitter API + $m->connect('api/statuses/favs/:id.:format', + array('action' => 'ApiStatusesFavs', + 'id' => '[0-9]+', + 'format' => '(xml|json)')); + } + + public function onPluginVersion(array &$versions) + { + $versions[] = array('name' => 'Favorite', + 'version' => GNUSOCIAL_VERSION, + 'author' => 'Mikael Nordfeldth', + 'homepage' => 'http://gnu.io/', + 'rawdescription' => + // TRANS: Plugin description. + _m('Favorites (likes) using ActivityStreams.')); + + return true; + } +} diff --git a/actions/apifavoritecreate.php b/plugins/Favorite/actions/apifavoritecreate.php similarity index 100% rename from actions/apifavoritecreate.php rename to plugins/Favorite/actions/apifavoritecreate.php diff --git a/actions/apifavoritedestroy.php b/plugins/Favorite/actions/apifavoritedestroy.php similarity index 100% rename from actions/apifavoritedestroy.php rename to plugins/Favorite/actions/apifavoritedestroy.php diff --git a/actions/apistatusesfavs.php b/plugins/Favorite/actions/apistatusesfavs.php similarity index 100% rename from actions/apistatusesfavs.php rename to plugins/Favorite/actions/apistatusesfavs.php diff --git a/actions/apitimelinefavorites.php b/plugins/Favorite/actions/apitimelinefavorites.php similarity index 100% rename from actions/apitimelinefavorites.php rename to plugins/Favorite/actions/apitimelinefavorites.php diff --git a/actions/atompubfavoritefeed.php b/plugins/Favorite/actions/atompubfavoritefeed.php similarity index 100% rename from actions/atompubfavoritefeed.php rename to plugins/Favorite/actions/atompubfavoritefeed.php diff --git a/actions/atompubshowfavorite.php b/plugins/Favorite/actions/atompubshowfavorite.php similarity index 100% rename from actions/atompubshowfavorite.php rename to plugins/Favorite/actions/atompubshowfavorite.php diff --git a/actions/disfavor.php b/plugins/Favorite/actions/disfavor.php similarity index 100% rename from actions/disfavor.php rename to plugins/Favorite/actions/disfavor.php diff --git a/actions/favor.php b/plugins/Favorite/actions/favor.php similarity index 100% rename from actions/favor.php rename to plugins/Favorite/actions/favor.php diff --git a/actions/favorited.php b/plugins/Favorite/actions/favorited.php similarity index 100% rename from actions/favorited.php rename to plugins/Favorite/actions/favorited.php diff --git a/actions/favoritesrss.php b/plugins/Favorite/actions/favoritesrss.php similarity index 100% rename from actions/favoritesrss.php rename to plugins/Favorite/actions/favoritesrss.php diff --git a/actions/showfavorites.php b/plugins/Favorite/actions/showfavorites.php similarity index 100% rename from actions/showfavorites.php rename to plugins/Favorite/actions/showfavorites.php diff --git a/classes/Fave.php b/plugins/Favorite/classes/Fave.php similarity index 100% rename from classes/Fave.php rename to plugins/Favorite/classes/Fave.php diff --git a/lib/disfavorform.php b/plugins/Favorite/forms/disfavor.php similarity index 100% rename from lib/disfavorform.php rename to plugins/Favorite/forms/disfavor.php diff --git a/lib/favorform.php b/plugins/Favorite/forms/favor.php similarity index 100% rename from lib/favorform.php rename to plugins/Favorite/forms/favor.php diff --git a/lib/favenoticestream.php b/plugins/Favorite/lib/favenoticestream.php similarity index 100% rename from lib/favenoticestream.php rename to plugins/Favorite/lib/favenoticestream.php diff --git a/lib/popularnoticesection.php b/plugins/Favorite/lib/popularnoticesection.php similarity index 100% rename from lib/popularnoticesection.php rename to plugins/Favorite/lib/popularnoticesection.php diff --git a/lib/popularnoticestream.php b/plugins/Favorite/lib/popularnoticestream.php similarity index 100% rename from lib/popularnoticestream.php rename to plugins/Favorite/lib/popularnoticestream.php