#BuddyPress Reshare.. PLZ RT 😉

Publié le

par

Crédits Photo : RETWEET @josef (Experiment) by Josef Dunne, on Flickr

En mai dernier, je vous proposais un tutoriel pour découvrir des techniques afin d’étendre le composant des activités de BuddyPress. A l’époque, j’avais notamment exploré la mise en place d’une fonctionnalité de repartage ou « reshare » des activités. A l’issue de ce tutoriel, j’avais introduit un « tome 2 » (je reconnais que ces articles étaient super longs !!!) afin de partager avec vous ma manière de concevoir des composants BuddyPress. Et pour ce faire, j’ai pris l’exemple de mon plugin BP Checkins car il me semble contenir de nombreuses techniques susceptibles de vous intéresser.

Toutefois, en lisant les commentaires de mon premier tome, je me suis aperçu que certains (en tout cas au moins l’un d’entre vous !!) étaient restés sur leur faim. En effet, ils auraient aimé que je détaille plus ce que j’avais évoqué dans mon chapitre « Evolution possible de la fonction reshare« …

Plus récemment, un forum sur le site de la communauté BuddyPress francophone abordait également cette fonctionnalité. Je me suis donc aperçu qu’il y avait peut être un intérêt à aller plus loin par rapport à ce que j’avais initié… Raccourcis / Shortcuts

Voici BuddyPress Reshare !

Il s’agit donc d’un plugin BuddyPress qui étend le composant « Activités » afin de permettre aux membres connectés de repartager une activité sur leur profil. Pour cela, il ajoute simplement un bouton d’action à côté des boutons standards de BuddyPress :

Lorsque le membre clique sur ce bouton, cela incrémente le compteur de Reshare de 1 et duplique l’activité sur le profil de ce membre tout en faisant référence à l’utilisateur qui a initialement posté l’activité. Par ailleurs, si toutefois, le bouton « Reshare » d’une activité déjà repartagée était cliqué par un autre membre, c’est bien l’activité initiale qui serait repartagée…

Jusqu’à présent, je n’ai fait que reprendre ce que j’avais expliqué dans le tutoriel auquel je fais référence plus tôt. Maintenant, on va corser l’histoire ! On va commencer par contenter @Wcee qui souhaite ajouter un onglet « Mes Reshares » dans les activités du profil du membre afin de lui permettre le cas échéant de supprimer une activité repartagée. Pour cela, il s’agit également de ne pas omettre la navigation de la WP Admin Bar que personnellement j’adore ;).

Si vous êtes intéressé par la technique, dans mon fichier bp-reshare-component.php, après avoir intercepté les bons hooks, je récupère successivement les valeurs des globales
$bp->bp_options_nav et $wp_admin_bar en vue d’ajouter au composant « Activités » la navigation « Reshares ».

Ensuite, pour éviter la création d’un template particulier et me reposer sur celui du composant « Activités », je vérifie assez tôt (hook bp_actions) si le slug reshares de l’url de profil du membre est présent auquel cas, je charge le template des activités du membre. En l’état ça ne fera que charger toutes les activités du membre ! Pour n’afficher que ses reshares, j’ai opté pour un filtre sur la fonction bp_ajax_querystring (qui je vous le rappelle aiguille les activités à servir).

S’agissant de la suppression d’un reshare, il ne s’agit dans l’absolu que de la suppression d’une activité après tout.. C’est pourquoi dans un premier temps je m’étais reposé sur un trigger du bouton delete de BuddyPress. Toutefois, cela s’est révélé être une mauvaise idée car il s’agit ensuite d’intercepter le hook lancé à la suppression en vue de réaliser des opérations complémentaires afin de décrémenter le compteur et enlever l’id de l’utilisateur des ids ayant repartagé l’activité. En fait le problème réside dans le fait que les arguments que BuddyPress passe dans son hook bp_activity_delete ne me permette pas d’identifier que le type de mon activité est un reshare.. Pour y remédier j’ai donc ajouté mes propres fonctions.

Ensuite, je me suis dit : « y a quelque chose à faire avec les activités affichées dans la page des activités globales ». En effet, je voyais bien un nouvel onglet « Reshares » avec un compteur sur le modèle de celui des activités favorites ou des mentions.

Désormais, le membre connecté peut gérer les activités qu’il a repartagées depuis sa page de profil et directement depuis les activités globales. Il serait également intéressant de pouvoir connaître les activités les plus repartagées.. ne pensez vous pas ? En effet cela peut être un bon indicateur de celles qui sont populaires. Pour cela, le plugin ajoute une option à la liste déroulante filtrant les activités :

Lorsqu’on se situe sur les sitewide activities, ce filtre permet donc de n’afficher que les activités les plus repartagées et ce « cerise sur le gâteau » en ordre décroissant !! Pour parvenir à déposer cette cerise sur le gâteau, il s’agit d’intercepter successivement les filtres bp_activity_get_user_join_filters (qui contient la requête sql responsable de la sélection des activités) puis bp_activity_total_activities_sql (qui se charge de renvoyer le nombre d’activités de la requête sélection afin de permettre la pagination) afin de remplacer l’ordre prévu par défaut par BuddyPress (par date décroissante) pour le notre. Si la technique vous intéresse, je vous invite à étudier le fichier bp-reshare-filters.php 😉

Sur ma lancée, j’ai ajouté cette même option sur les activités disponibles sur la page de profil du membre car jusqu’à présent, il est complexe pour lui de savoir quelles sont ses activités les plus repartagées. En utilisant ce filtre sur sa page de profil, c’est chose faite ! En un clic il connait la popularité de ses activités auprès des autres membres.

Le step suivant serait de connaître très simplement qui a repartagé une activité. Pour cette fonctionnalité, je n’ai pas voulu surchargé le mur d’activité et j’ai préféré la gérer depuis l’affichage unique de l’activité. L’inconvénient, c’est que seule les activités de type activity_update seront concernées, puisque celles liées aux forums et blogs ne disposent pas d’une vue unique..

Qui a repartagé mon activité ?

Pour finir, je me suis permis d’ajouter 2 petites fonctions javascript de confort. Vous les découvrirez à la fin de la viméo de démo. La première consiste à ajouter un lien pour rappeler à l’utilisateur où se situe le filtre des activités et la seconde évite qu’une activité ne soit postée dans le mauvais onglet depuis la page des activités globales. Vous pourrez le cas échéant les neutraliser depuis les réglages du plugin dans votre administration WordPress.

La démo !

Avant votre téléchargement de la bête…

Ce plugin est en version beta, raison pour laquelle je l’ai déposé sur github. Je pense le faire évoluer assez rapidement car, il serait intéressant de le compléter par des fonctions générant des boutons sur les pages d’articles de blog ou de forums pour permettre de repartager directement depuis les contenus et accessoirement compenser l’inconvénient que j’ai soulevé plus tôt au sujet de l’affichage de la liste des utilisateurs ayant repartagé le contenu. Ensuite, dans le cadre d’un Intranet ou d’une communauté référente sur Internet, donner la possibilité à un site tiers d’ajouter un bouton de partage vers l’Intranet ou la communauté motorisée par BuddyPress me semble une piste à explorer.. Mais ça c’est une autre histoire (ou version du plugin) et cela dépendra du nombre de fois que cet article aura été repartagé 😉

Voilà ! J’ai testé le plugin sur WordPress 3.4.2 / BuddyPress 1.6.1 ainsi que sur WordPress 3.5 RC3 et BuddyPress 1.7bleeding. Vous pouvez récupérer le plugin sur github. A+


Updates !!

Le 07/01/13, la version 1.0-beta5 s’assure que le message indiquant où se situe le filtre des activités se positionne au bon endroit. Elle ajoute aussi une fonctionnalité qui permet de à l’admin d’éventuellement désactiver les commentaires des forums ou blog posts repartagés pour être cohérent avec l’option BuddyPress sur le sujet

Le 16/12/12, la version 1.0-beta4 corrige un bug qui apparaissait si l’utilisateur avait désactivé le javascript de son navigateur

Le 13/12/12, ajout de la version 1.0-beta3 sur github, la suppresion d’une activité de type reshare (bouton BuddyPress) met désormais à jour le compteur de repartage tout comme le faisait (et fait toujours) le bouton reshare (rouge).

Le 11/12/12, ajout de la version 1.0-beta2 sur github, les BuddyPress 1.5+ players peuvent remercier @Wcee, grâce à son commentaire, le plugin est aussi compatible avec cette ancienne version de notre plugin préféré ;).

45 réponses à “#BuddyPress Reshare.. PLZ RT ;)”

  1. Avatar de Wcee
    Wcee

    Je reçois ceci sur WP 3.4.1 et BP 1.5.5:
    Warning: require(/home/wcloude/public_html/wp-content/plugins/bp-reshare/includes/bp-reshare-component.php) [function.require]: failed to open stream: No such file or directory in /home/wcloude/public_html/wp-content/plugins/bp-reshare-1.0-beta1/bp-reshare.php on line 30

    Fatal error: require() [function.require]: Failed opening required ‘/home/wcloude/public_html/wp-content/plugins/bp-reshare/includes/bp-reshare-component.php’ (include_path=’.:/usr/local/php53/lib/php’) in /home/wcloude/public_html/wp-content/plugins/bp-reshare-1.0-beta1/bp-reshare.php on line 30

  2. Avatar de imath

    Bonjour,

    ok, c’est lié au fait que comme sur github alors le nom du dossier n’est pas celui attendu, tu devrais essayer de renommer le dossier
    bp-reshare-1.0-beta1 pour bp-reshare

    A+

  3. Avatar de Hadrien
    Hadrien

    Hello Imath,

    Merci pour ton travail qui s’avère être un énorme support pour moi !
    Il y a malheureusement très peu de ressources de cette qualité en FR chez les développeurs BP… Alors bravo pour le partage de tes tutos/articles aussi fournis et agréables à lire, et à relire ! :))

    J’en suis seulement au stade d’apprentissage et de découverte, mais tout cela me pousse à creer mon propre plugin, qui, je l’espère, trouvera un jour sa place dans la bibliothèque BP.

    Congrats !!

    1. Avatar de imath

      Merci @ Hadrien 😉

      Bienvenue dans la communauté BuddyPress francophone !!

  4. Avatar de Wcee
    Wcee

    Désolé iMath, j’aurais dû m’en rendre compte moi-même! 😉 On y arrive… Toujours sur WP3.4.1 et BP1.5.5, j’ai l’onglet ‘Repartage’ dans l’activité générale mais pas lorsque je suis sur mon compte dans mon activité (quoi que je peux me débrouiller pour l’ajouter moi-même). Mais plus important encore, si je ‘déshare’ l’activité ‘resharée’ le count du reshare de l’activité reste à 1 et mon avatar reste lié et affiché sur la page de cette même activité.
    Merci à l’avance et avis à tous, pour ma part ce ne sont pas des poblèmes de mauvais programmeur mais bien des ajustement car iMath est l’un des 2 ou 3 meilleurs concepteur de plugins BP overall!!! (et Dieux sais que je les ai probablement tous essayé!)

    1. Avatar de imath

      C’est sympa pour moi 🙂 Merci, en fait je n’ai pas testé sur la 1.5 de BuddyPress, c sans doute pour ça !! J’ai développé cette extension sur la 1.6.1 et la 1.7. Je regarde sur la 1.5 asap !!

  5. Avatar de imath

    Bonsoir @ Wcee,

    Je viens de poster une nouvelle version sur github (1.0-beta2) qui règle le problème d’incompatibilité avec BuddyPress 1.5.5.

    Je t’invite à récupérer les fichiers de cette version et à écraser l’ancienne. Tu vas disposer de la navigation reshare sur les profils utilisateur. En revanche, je n’ai pas constaté le problème javascript que tu abordes au sujet du « desharing ».

    Je te conseille donc de tenter de nouveau l’opération et si le problème est toujours présent après une nouvelle tentative de desharing, affiche l’inspecteur web de ton navigateur ou la console d’erreur javascript et tu devrais pouvoir diagnostiquer la difficulté.

    Merci encore pour ta contribution 😉

  6. Avatar de Wcee
    Wcee

    Rebonjour iMath!

    Je crois bien finalement que TU es le meilleur BP Pluger 😉
    Tous fonctionne bien sur 1.5.5 au niveau de la navigation reshare sur les profils utilisateur sauf qu’il reste un truc dont je m’était mal exprimé hier: Quand on reshare une activité, cela créer une activité dans mon profil disant que j’ai resharé une activité originalement… Si je supprime cette même activité qui dit que j’ai resharé une activité originalement…, elle s’efface alors de mon activité et de ma section ‘Repartages’ mais lorsque je vais sur l’activité originale, on voit toujours qu’elle a été resharée une fois et on voit aussi mon avatar en dessous dans la section des ‘Repartagé par’. sauf que je ne peux supprimer les traces de mes reshares complètement. Il faudrait que lorsque je supprime l’activité que j’ai resharé dans mon profil que cela puisse désharer l’activité originale dans le processus comme l’inverse se fait lorsque je déshare une activité qui supprime aussi l’activité resharée de mon profil je crois. Est-ce que ça peut s’arranger.

    1. Avatar de imath

      Mmm je vois, en fait tu n’utilises pas le bouton reshare rouge mais le bouton de suppression. J’avais oublié le problème de ce bouton.. Bien vu, il y aura donc prochainement une beta3 😉

  7. Avatar de imath

    Bonsoir @ Wcee,

    la beta3 devrait te combler 😉
    A+

  8. Avatar de Wcee
    Wcee

    Excellent!
    Je ne sais pourquoi mais lorsque le plugin est activé, mon site fonctionne un peu plus au ralenti mais si ce ne serait que ça je pourrais faire avec. Sauf qu’il y a un hic et je sais que ça n’a probablement rien à voir avec le plugin, mais j’ai aussi le plugin buddypress mobile d’installé sur mon site dont je ne peux me passer vu la quantité de gens qui surf sur mobile et le temps déjà investi afin de le personnaliser et de l’améliorer. Mon problème maintenant est que sur desktop, je ne peux resharer une activité que j’ai déjà resharé ce qui est normal, mais sur ma version mobile je peux resharer plusieurs fois la même activité et même plus, je peux resharer mon reshare, et si le plugin n’est pas compatible avec ma version mobile je ne pourrai malheureusement pas l’implanter à mon site. QUE FAIRE? Je ne sais pas si tu as ce plugin mobile d’installé et si tu peux les rendre compatibles? Peux-tu?

    1. Avatar de imath

      C le plugin de modemlooper ?

  9. Avatar de Wcee
    Wcee

    Oui, c’est bien ¸le plugin de Modemlooper.

  10. Avatar de imath

    Bonsoir @ Wcee,

    Je n’ai pas eu le temps de tester avec BuddyPress mobile, mais, je pense qu’il s’agit soit d’un conflit au moment de charger le javascript de mon plugin, soit un conflit javascript côté client.
    Toutefois, d’après ce que tu me décris, la nouvelle version que je viens de poster sur github devrait résoudre ton problème. En effet comme les reshares étaitent postés quoiqu’il arrive (même s’il ne fallait pas), le fix de la version 1.0-beta4 ajoute un check côté serveur qui vérifie si toutefois il faut ou pas poster le reshare (cas que tu as décrit).

    A+

  11. Avatar de Wcee
    Wcee

    Yéhhhh!
    Thanks iMath! Très fort!
    Tout fonctionne bien…
    J’ai voulu contribuer et faire un don via PayPal mais je ne peux terminer le processus via carte de crédit car ils me disent que je le champ  »Province » n’est pas rempli mais il n’apparaît tout simplement pas, alors je ne peux le remplir.
    As-tu un autre moyen de te faire un don sécurisé via carte de crédit? Tu peux me répondre par courriel si tu veux, j’aurai par la même occasion une demande de plugin que je paierais pour, mais je préfèrerais t’en faire part en privé…

  12. Avatar de Wcee
    Wcee

    Oupps! Problème! L’activity update qui dit que je reshare bla bla bla s’efface tout seul. J’ai fait un test de 2 membres qui reshare la même activité d’un 3e membre et en essayant de retrouver mes reshares 1 ou 2 jours plus tard je me suis rendu compte qu’elles n’y sont plus mais lorsque je vais sur l’activité que j’ai resharé, on voit bien qu’elle a été resharée par 2 membres mais ces reshares n’apparaissent plus dans l’activité de ces 2 membres ni dans l’activité générale du site…

    1. Avatar de imath

      Salut Wcee,

      Je n’ai pas constaté ce comportement, mais je reste vigilant sur la question. Merci pour ton feedback.
      A+

  13. Avatar de Wcee
    Wcee

    Dsl iMath, je devais avoir fais qqchose de weird car j’ai réinstallé et tout va merveilleusement bien. Merci encore pour cet excellent plugin!!! 😉 Keep up the good work!

    1. Avatar de imath

      Hello !
      you’re welcome, soon in WordPress repo… 🙂

  14. Avatar de Jon
    Jon

    Hi imath, another amazing plugin.
    However I’m trying to use this on my custom post which I have generated an activity_id for but can’t get it to register the reshare with the id

    Any ideas with this?

    1. Avatar de imath

      Hi, thanks, can you show me the arguments you send to bp_activity_add() ?

  15. Avatar de jon
    jon

    global $wpdb, $bp, $current_user;

    $activity_id = bp_activity_get_activity_id( array(

    ‘user_id’ => $post->author_id,

    ‘type’ => ‘new_blog_post’,

    ‘component’ => ‘blogs’,

    ‘item_id’ => 1,

    ‘secondary_item_id’ => $post->ID

    ) );

    That above code is tied in with my custom favborite button for my custom posts (which works) could i use the same thing for the reshare?
    Im not using activity add, I think this just fetches the existing acitivty_id associated with my custom post.

    Im also using a modified entry.php and want when i reshare my custom posts in the activity stream to show the image and other info on my posts.

    When i reshare now all it grabs is the excerpt.
    Thanks for your help!

  16. Avatar de Muthuvel
    Muthuvel

    Hello imath,
    I am muthuvel working in software company as a developer. Recently i developed one open source social website in that website i’m using the plugin
    BuddyPress Reshare. It is working fine. But i want know the functionality of the buddy-press reshare plugin because i want customize something to that plugin. it is urgent so please help to me as soon as posible.

    Thanks & Regards
    Muthuvel T

    1. Avatar de imath

      Ok i’ll look at this plugin this week end to see what’s wrong.

    2. Avatar de imath

      Oops i misunderstood! Thought the plugin was buggy.. So spent the weekend rewriting it, published à new version on its github repo earlier this morning 🙂 how can i help you ?

  17. Avatar de Sylvain
    Sylvain

    Bonjour Imath!

    Je viens rapporter un bug malheureusement.
    Je tourne sur buddypress 2.0 et wordpress 3.8

    À l’installation j’ai une alerte : Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM in /wp-content/plugins/bp-reshare-wp-plugin/includes/admin.php on line 59

    J’imagine que c’est certainement dû au fait que ça ne fonctionne pas encore sur bp 2.0 ?
    En tout cas, j’espère que ce n’est pas trop grave, encore une fois, tu abats un boulot merveilleux pour la communauté francophone ! Merci !

    Bien à toi !

    1. Avatar de imath

      Merci pour ton feedback, je vais regarder pour corriger asap

  18. Avatar de Greg McEwan Marriott

    I don’t seem to be able to see the admin menu item in the backend (network activated) – what would be the url to the admin page?

    1. Avatar de imath

      Hi i don’t think this plugin is adding an admin menu. In the administration part, after checking the code, it adds a new settings to BuddyPress ones in the Activity section.

  19. Avatar de ricardo
    ricardo

    Great plugin sir, two problems i stumble upon I hope you can please shed some light on. I installed beta 5:
    1. when I share a post, it takes me back to the top and refresh the browser. How can i disable that, in order to enable the user to keep scrolling down and reshare more.
    2. i noticed that the reshare button doesn’t show up on all my post. I use Rt-Media for my pictures and video posts, and every rt-media posts doesnt have a reshare button. How can I have it show up on those posts?

    1. Avatar de imath

      Hi thanks for your feedback.

      1/ you can get rid of this line : https://github.com/imath/bp-reshare/blob/wp-plugin/includes/js/reshare.js#L99
      2/ The reshare button can only show on posts that has a corresponding activity.

      1. Avatar de ricardo
        ricardo

        Thank you for the reply.

        1. Is it possible to add a slug to reshare, in order for it to appear on my rt-media posts?
        2. Also in blog post, it reshare the text in the content but not the thumbnail, How can i please fix that
        3. couldn’t find that js file where you pointed to, I found this one « wp-content / plugins / bp-reshare-1.0-beta5 / js / reshare.js » and removed the line 122… but it’s still refreshing and kicking users’ back up top

  20. Avatar de Sylvain
    Sylvain

    Je dis oui ! Ça serait vraiment top de pouvoir proposer à d’autres sites d’intégrer notre bouton partage, de la même façon qu’on partage sur twitter ou facebook un article qu’on à aimé.

  21. Avatar de Nikea Wortham

    Hey iMath,

    I see this thread is kinda old so I don’t know if you will get this but I just have a minor issue and question. I figured out how to make my BP buttons the color green, however the arrows from the reshare button is the same exact color green as my button. This makes my reshare button look like a completely blank green button until you hover over it.

    I found a little work around by adding a background color attribute to the rehare img, which puts a white background behind the arrows. It makes the arrows visible but I don’t like the green button with a white square and green arrows in it. Its kinda ugly lol. I simply want the arrows to be white so they will be visible on the green button. Any thoughts?

    1. Avatar de imath

      Yeah i don’t think i’ll make changes about this plugin, so i guess you just need to replace the image file. Ideally i think the plugin should use some font like the dashicons one. If you’re feeling good to work on this i’ll be happy to accept a pull request on the github repo of the plugin 🙂

  22. Avatar de Raffaele
    Raffaele

    Good evening, first of all congratulations for the work done for BuddyPress.

    Then I wanted to ask, I’m making a website with WordPress and BuddyPress and I installed the plug-bp reshare, kindly wanted to know how do I notify the reshare? I mean, is there a way to add a user notification when someone shares a post? Say like facebook.

    Awaiting reply Yours faithfully.

    Thanks

    1. Avatar de imath

      Thanks for your comment and feedback. This plugin really needs an upgrade. I think there is a way to add a notification to the user who primarily shared the activity using the action buddyreshare_reshare_added. But adding the notification feature to a plugin is not only this, it’s also removing the notification if the reshared activity was deleted, the user was deleted, marking the notification as read once the bubble is clicked… So there are some works to be done imho. I’ll try to find the time to work on it sometime.

  23. Avatar de Vishal
    Vishal

    Thanks for the plugin imath…i was checking group activty reshare..it seems the links in the activity page are getting mixed up….the activity link is comming in user profile and vice versa..can this be checked? this happens if i reshare group activities…..

    1. Avatar de imath

      Will check, thanks for the info

  24. Avatar de Ralf

    Bonjour

    il y aura une nouvelle version? – BuddyPress 2.3.3

    Le plugin ne fonctionne que partiellement

    Cordialement

    1. Avatar de imath

      Bonjour
      La dernière fois que j’ai testé tout était ok (hormis qqes pbms css). Mais je regarderai de nouveau.

  25. Avatar de Ralf

    Bonjour

    avec rtmedia Je ne peux que partager des vidéos intégrées.
    Pas de photos. Aucune page de liens que les messages sans mp3
    Dans le admin.php je l’ai vu que il ya des réglages
    Mais aucun lien apparaît dans la zone d’admin
    Le LoadImage semble pas dans le flux d’activité avec le compositeur JS
    Je peux faire un compte de test et vous pouvez voir vous-même
    Désolé, je dois traduire avec Google.

  26. Avatar de Zox

    Salut,
    Je l’ai installé votre plugin sur mon site. il est apparu dans la page du site d’activité large mais je pressé le bouton de l’action, ne pas travailler. Il est semble me boîte de dialogue Cheating. S’il vous plaît résoudre moi problème.

    1. Avatar de imath

      I’ll try to look at it. I’m sorry i’m not sure to find the time to. As it was an experimental plugin, you should probably fork it or ask someone to 😉