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