Forum Discussion

Han's avatar
Han
Ace
7 years ago

Get all latest posts for a user

Hi all,

I'd like to create a custom "latest contributions" component for profile pages. I'm trying to select all latest posts for a user with API V2. 

At the moment, I'm always getting the same 5 posts back, no matter which user id I am viewing. Here is what I have so far

SELECT * FROM messages WHERE depth = 0 AND author.id = 'user.id' ORDER BY conversation.last_post_time DESC LIMIT 10


I'm quite new to using API V2, so any help here is appreciated. 

  • luk's avatar
    luk
    7 years ago

     

    Now we are talking freemarker which of course changes things =)... So with the code from Parshant it would be clear why you get always the same result, because you're asking for the last 10 topics of the currently logged in user, e.g. yourself (which is what ${user.id} will give you), I think what would be correct for your scenario is the page.context.user context-object which according to the docs (here) state:

    If this page is associated with a user, then this returns a user context object, otherwise returns null. You can chain calls on the user object from this method. The following pages return a user:
    - MyProfilePage (only when an admin is editing another user's profile. When the current user is editing their profile use the $user object instead)
    - ViewProfilePage
    - MobileViewProfilePage
    - TkbUserContributedArticlesPage

    I assume you're targeting the "ViewProfilePage" quilt with  your custom component,it would work as follows with your query:

    SELECT * FROM messages WHERE depth = 0 AND author.id = '${page.context.user.id}' ORDER BY conversation.last_post_time DESC LIMIT 10

    BUT, careful, as the docs say, if this component was placed on a page with no user context, your query would fail, therefore I'd check if page.context.user exists before setting off the API request, e.g.

    <#if (page.context.user)?has_content>
        // whatever you want to do here
    </#if>

    hope that helps!

13 Replies

  • luk's avatar
    luk
    Boss
    7 years ago

    Not really, try removing the depth constraint and replace the ORDER clause by post_time instead of conversation.last_post_time (that only works for threads/topics/root messages), does that give you the expected result?

  • Han's avatar
    Han
    Ace
    7 years ago

    luk that was it. Thank you so much for all your help! 

  • luk's avatar
    luk
    Boss
    7 years ago

    You're very welcome, glad I could help!