Skip to content

Instantly share code, notes, and snippets.

@segphault
Created February 8, 2009 07:25
Show Gist options
  • Save segphault/60298 to your computer and use it in GitHub Desktop.
Save segphault/60298 to your computer and use it in GitHub Desktop.
Extend MT getRecentPosts API call so the user can filter on author id and entry status
diff --git a/lib/MT/XMLRPCServer.pm b/lib/MT/XMLRPCServer.pm
index d627f5c..7f89547 100644
--- a/lib/MT/XMLRPCServer.pm
+++ b/lib/MT/XMLRPCServer.pm
@@ -610,7 +610,14 @@ sub _get_entries {
my($author, $perms) = $class->_login($user, $pass, $blog_id);
die _fault(MT->translate("Invalid login")) unless $author;
die _fault(MT->translate("Permission denied.")) unless $perms && $perms->can_create_post;
- my $iter = MT->model($obj_type)->load_iter({ blog_id => $blog_id },
+
+ my %filter_params;
+ if ($param{status}) { $filter_params{status} = $param{status}; }
+ if ($param{author_id}) {
+ $filter_params{author_id} = $param{author_id} == -1 ? $author->id : $param{author_id};
+ }
+
+ my $iter = MT->model($obj_type)->load_iter({ blog_id => $blog_id, %filter_params},
{ 'sort' => 'authored_on',
direction => 'descend',
limit => $num });
@@ -647,6 +654,12 @@ sub _get_entries {
$row->{mt_excerpt} = SOAP::Data->type(string => encode_text($entry->excerpt, undef, 'utf-8'));
$row->{mt_keywords} = SOAP::Data->type(string => encode_text($entry->keywords, undef, 'utf-8'));
$row->{mt_tags} = SOAP::Data->type(string => encode_text($tags, undef, 'utf-8'));
+
+ require CustomFields::Util;
+ my $ars_fields = CustomFields::Util::get_meta($entry);
+ $row->{ars_discussion_url} = SOAP::Data->type(string => $ars_fields->{discussion_url});
+ $row->{ars_promoted_to_frontpage} = SOAP::Data->type(int => $ars_fields->{promoted_to_frontpage});
+ $row->{ars_entry_image} = SOAP::Data->type(string => encode_text($ars_fields->{entry_image}, undef, 'utf-8'));
}
}
push @res, $row;
@@ -667,6 +680,19 @@ sub getRecentPosts {
pass => $pass, num => $num );
}
+sub getRecentPostsArs {
+ my $class = shift;
+ my ($blog_id, $user, $pass, $num, $status, $author_id);
+ if ($class eq 'blogger') {
+ (my($appkey), $blog_id, $user, $pass, $num) = @_;
+ }
+ else {
+ ($blog_id, $user, $pass, $num, $status, $author_id) = @_;
+ }
+ $class->_get_entries( blog_id => $blog_id, user => $user,
+ pass => $pass, num => $num, status => $status, author_id => $author_id );
+}
+
sub getRecentPostTitles {
my $class = shift;
my ($blog_id, $user, $pass, $num) = @_;
@@ -811,7 +837,7 @@ sub supportedMethods {
[ 'blogger.newPost', 'blogger.editPost', 'blogger.getRecentPosts',
'blogger.getUsersBlogs', 'blogger.getUserInfo', 'blogger.deletePost',
'metaWeblog.getPost', 'metaWeblog.newPost', 'metaWeblog.editPost',
- 'metaWeblog.getRecentPosts', 'metaWeblog.newMediaObject',
+ 'metaWeblog.getRecentPosts', 'mt.getRecentPostsArs', 'metaWeblog.newMediaObject',
'metaWeblog.getCategories', 'metaWeblog.deletePost',
'metaWeblog.getUsersBlogs',
'wp.newPage', 'wp.getPages', 'wp.getPage', 'wp.editPage',
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment