[3.2][3.3][RC] Thanks for posts (and optional Tapatalk integration)

A place for Extension Authors to post and receive feedback on Extensions still in development. No Extensions within this forum should be used within a live environment!
Anti-Spam Guide
Forum rules
READ: phpBB.com Board-Wide Rules and Regulations

IMPORTANT: Extensions Development rules

IMPORTANT FOR NEEDED EVENTS!!!
If you need an event for your extension please read this for the steps to follow to request the event(s)
User avatar
Naguissa
Registered User
Posts: 357
Joined: Thu Mar 02, 2017 6:55 am
Location: Barcelona
Name: Naguissa
Contact:

Re: [3.2][RC] Thanks for posts (and optional Tapatalk integration)

Post by Naguissa »

mrgoldy wrote:
Wed Jan 15, 2020 11:09 pm
I had that problem too, because you use lowercase service definitions everywhere (thanksforposts) but you declare them with capitals: ThanksForPosts. Changing the service definitions to lowercase for the notification types solved that issue for me.

Moreover, I did look into it but had a hard time pin pointing the problem. But it's safe to assume this is not really a phpBB bug but rather within the extension. However, I had a hard time locating it as you use a different coding style than I am used to. Perhaps when I get some more time next week I can have another look.
Hello again,

As you have the "Extension validator" badge, I think I can talk about next issue with you to clarify if there's something I'm missing or there's a phpBB 3.3.0 bug.


I've modified <PHPBB_ROOT>/phpbb/notification/type/base.php file in my localhost to do some tests. I've added some debug on 3 functions, just as 1st lines:

Code: Select all

__construct:
		echo "<br><br>constructor, object " . spl_object_hash($this) . "<br>";


set_initial_data:
		echo "<br><br>set_initial_data, " . $this->get_type() . ", object " . spl_object_hash($this) . "<br>";
		var_dump($data);

prepare_for_display:
		echo "<br><br>prepare_for_display, " . $this->get_type() . ", object " . spl_object_hash($this) . "<br>";
		var_dump($this->data);
This way I can debug behavior of any notification that doesn't redeclare any of these functions (or uses parent in redeclaration).


I have 8 THANKS notifications and 2 PMs. Loading home this appears as debug:

Code: Select all

constructor, object 000000007cf39c750000000079329a6f


set_initial_data, notification.type.pm, object 000000007cf39c750000000079329a6f
array(9) { ["notification_id"]=> string(3) "666" ["notification_type_id"]=> string(2) "14" ["item_id"]=> string(2) "30" ["item_parent_id"]=> string(1) "0" ["user_id"]=> string(3) "126" ["notification_read"]=> string(1) "0" ["notification_time"]=> string(10) "1579856633" ["notification_data"]=> string(75) "a:2:{s:12:"from_user_id";s:1:"2";s:15:"message_subject";s:10:"re tretert";}" ["notification_type_name"]=> string(20) "notification.type.pm" }

constructor, object 000000007cf39c4b0000000079329a6f


set_initial_data, gfksx.thanksforposts.notification.type.thanks, object 000000007cf39c4b0000000079329a6f
array(9) { ["notification_id"]=> string(3) "665" ["notification_type_id"]=> string(1) "7" ["item_id"]=> string(3) "350" ["item_parent_id"]=> string(3) "167" ["user_id"]=> string(3) "126" ["notification_read"]=> string(1) "0" ["notification_time"]=> string(10) "1579851392" ["notification_data"]=> string(240) "a:5:{s:8:"thankers";a:1:{i:0;a:2:{s:7:"user_id";i:2;s:6:"ntimes";i:1;}}s:7:"post_id";i:350;s:8:"lang_act";s:4:"GIVE";s:12:"post_subject";s:72:"Re: Luz crepuscular con batería de litio y placas solares para su carga";s:9:"poster_id";i:126;}" ["notification_type_name"]=> string(45) "gfksx.thanksforposts.notification.type.thanks" }

constructor, object 000000007cf39c5f0000000079329a6f


set_initial_data, gfksx.thanksforposts.notification.type.thanks_remove, object 000000007cf39c5f0000000079329a6f
array(9) { ["notification_id"]=> string(3) "664" ["notification_type_id"]=> string(1) "8" ["item_id"]=> string(3) "350" ["item_parent_id"]=> string(1) "0" ["user_id"]=> string(3) "126" ["notification_read"]=> string(1) "0" ["notification_time"]=> string(10) "1579851390" ["notification_data"]=> string(242) "a:5:{s:8:"thankers";a:1:{i:0;a:2:{s:7:"user_id";i:2;s:6:"ntimes";i:1;}}s:7:"post_id";i:350;s:8:"lang_act";s:6:"REMOVE";s:12:"post_subject";s:72:"Re: Luz crepuscular con batería de litio y placas solares para su carga";s:9:"poster_id";i:126;}" ["notification_type_name"]=> string(52) "gfksx.thanksforposts.notification.type.thanks_remove" }

set_initial_data, gfksx.thanksforposts.notification.type.thanks, object 000000007cf39c4b0000000079329a6f
array(9) { ["notification_id"]=> string(3) "663" ["notification_type_id"]=> string(1) "7" ["item_id"]=> string(3) "362" ["item_parent_id"]=> string(3) "169" ["user_id"]=> string(3) "126" ["notification_read"]=> string(1) "0" ["notification_time"]=> string(10) "1579851382" ["notification_data"]=> string(204) "a:5:{s:8:"thankers";a:1:{i:0;a:2:{s:7:"user_id";i:2;s:6:"ntimes";i:1;}}s:7:"post_id";i:362;s:8:"lang_act";s:4:"GIVE";s:12:"post_subject";s:36:"Re: Transmitir en espacio analógico";s:9:"poster_id";i:126;}" ["notification_type_name"]=> string(45) "gfksx.thanksforposts.notification.type.thanks" }

set_initial_data, gfksx.thanksforposts.notification.type.thanks_remove, object 000000007cf39c5f0000000079329a6f
array(9) { ["notification_id"]=> string(3) "662" ["notification_type_id"]=> string(1) "8" ["item_id"]=> string(3) "362" ["item_parent_id"]=> string(1) "0" ["user_id"]=> string(3) "126" ["notification_read"]=> string(1) "0" ["notification_time"]=> string(10) "1579851380" ["notification_data"]=> string(206) "a:5:{s:8:"thankers";a:1:{i:0;a:2:{s:7:"user_id";i:2;s:6:"ntimes";i:1;}}s:7:"post_id";i:362;s:8:"lang_act";s:6:"REMOVE";s:12:"post_subject";s:36:"Re: Transmitir en espacio analógico";s:9:"poster_id";i:126;}" ["notification_type_name"]=> string(52) "gfksx.thanksforposts.notification.type.thanks_remove" }

set_initial_data, gfksx.thanksforposts.notification.type.thanks_remove, object 000000007cf39c5f0000000079329a6f
array(9) { ["notification_id"]=> string(3) "661" ["notification_type_id"]=> string(1) "8" ["item_id"]=> string(3) "438" ["item_parent_id"]=> string(1) "0" ["user_id"]=> string(3) "126" ["notification_read"]=> string(1) "0" ["notification_time"]=> string(10) "1579851370" ["notification_data"]=> string(275) "a:5:{s:8:"thankers";a:1:{i:0;a:2:{s:7:"user_id";i:2;s:6:"ntimes";i:1;}}s:7:"post_id";i:438;s:8:"lang_act";s:6:"REMOVE";s:12:"post_subject";s:104:"Re: Tira de LEDs usando cable de cobre esmaltado, una pila y un ladrón de julios (oscilador de bloqueo)";s:9:"poster_id";i:126;}" ["notification_type_name"]=> string(52) "gfksx.thanksforposts.notification.type.thanks_remove" }

set_initial_data, gfksx.thanksforposts.notification.type.thanks_remove, object 000000007cf39c5f0000000079329a6f
array(9) { ["notification_id"]=> string(3) "654" ["notification_type_id"]=> string(1) "8" ["item_id"]=> string(3) "495" ["item_parent_id"]=> string(1) "0" ["user_id"]=> string(3) "126" ["notification_read"]=> string(1) "0" ["notification_time"]=> string(10) "1579851364" ["notification_data"]=> string(285) "a:5:{s:8:"thankers";a:1:{i:0;a:2:{s:7:"user_id";i:2;s:6:"ntimes";i:1;}}s:7:"post_id";i:495;s:8:"lang_act";s:6:"REMOVE";s:12:"post_subject";s:114:"Re: uTimerLib - Librería Arduino para eventos temporizados en todos los microcontroladores soportados por Arduino";s:9:"poster_id";i:126;}" ["notification_type_name"]=> string(52) "gfksx.thanksforposts.notification.type.thanks_remove" }

set_initial_data, gfksx.thanksforposts.notification.type.thanks_remove, object 000000007cf39c5f0000000079329a6f
array(9) { ["notification_id"]=> string(3) "660" ["notification_type_id"]=> string(1) "8" ["item_id"]=> string(3) "642" ["item_parent_id"]=> string(1) "0" ["user_id"]=> string(3) "126" ["notification_read"]=> string(1) "0" ["notification_time"]=> string(10) "1579851358" ["notification_data"]=> string(256) "a:5:{s:8:"thankers";a:1:{i:0;a:2:{s:7:"user_id";i:2;s:6:"ntimes";i:1;}}s:7:"post_id";i:642;s:8:"lang_act";s:6:"REMOVE";s:12:"post_subject";s:86:"Re: Microcontroladores basados en ESP32: Configuración Arduino IDE y características";s:9:"poster_id";i:126;}" ["notification_type_name"]=> string(52) "gfksx.thanksforposts.notification.type.thanks_remove" }

constructor, object 000000007cf39faf0000000079329a6f


set_initial_data, notification.type.pm, object 000000007cf39faf0000000079329a6f
array(9) { ["notification_id"]=> string(3) "659" ["notification_type_id"]=> string(2) "14" ["item_id"]=> string(2) "29" ["item_parent_id"]=> string(1) "0" ["user_id"]=> string(3) "126" ["notification_read"]=> string(1) "0" ["notification_time"]=> string(10) "1578924701" ["notification_data"]=> string(76) "a:2:{s:12:"from_user_id";s:1:"2";s:15:"message_subject";s:11:"Advertencia";}" ["notification_type_name"]=> string(20) "notification.type.pm" }

set_initial_data, gfksx.thanksforposts.notification.type.thanks, object 000000007cf39c4b0000000079329a6f
array(9) { ["notification_id"]=> string(3) "655" ["notification_type_id"]=> string(1) "7" ["item_id"]=> string(3) "495" ["item_parent_id"]=> string(3) "191" ["user_id"]=> string(3) "126" ["notification_read"]=> string(1) "0" ["notification_time"]=> string(10) "1578660277" ["notification_data"]=> string(283) "a:5:{s:8:"thankers";a:1:{i:0;a:2:{s:7:"user_id";i:2;s:6:"ntimes";i:1;}}s:7:"post_id";i:495;s:8:"lang_act";s:4:"GIVE";s:12:"post_subject";s:114:"Re: uTimerLib - Librería Arduino para eventos temporizados en todos los microcontroladores soportados por Arduino";s:9:"poster_id";i:126;}" ["notification_type_name"]=> string(45) "gfksx.thanksforposts.notification.type.thanks" }

constructor, object 000000007cf39fbd0000000079329a6f


set_initial_data, notification.type.pm, object 000000007cf39fbd0000000079329a6f
array(0) { }

set_initial_data, gfksx.thanksforposts.notification.type.thanks, object 000000007cf39c4b0000000079329a6f
array(0) { }

set_initial_data, gfksx.thanksforposts.notification.type.thanks_remove, object 000000007cf39c5f0000000079329a6f
array(0) { }

prepare_for_display, notification.type.pm, object 000000007cf39c750000000079329a6f
array(9) { ["notification_id"]=> string(3) "666" ["notification_type_id"]=> string(2) "14" ["item_id"]=> string(2) "30" ["item_parent_id"]=> string(1) "0" ["user_id"]=> string(3) "126" ["notification_read"]=> string(1) "0" ["notification_time"]=> string(10) "1579856633" ["notification_data"]=> array(2) { ["from_user_id"]=> string(1) "2" ["message_subject"]=> string(10) "re tretert" } ["notification_type_name"]=> string(20) "notification.type.pm" }

prepare_for_display, gfksx.thanksforposts.notification.type.thanks, object 000000007cf39c4b0000000079329a6f
array(1) { ["notification_data"]=> array(0) { } }

prepare_for_display, gfksx.thanksforposts.notification.type.thanks_remove, object 000000007cf39c5f0000000079329a6f
array(1) { ["notification_data"]=> array(0) { } }

prepare_for_display, gfksx.thanksforposts.notification.type.thanks, object 000000007cf39c4b0000000079329a6f
array(1) { ["notification_data"]=> array(0) { } }

prepare_for_display, gfksx.thanksforposts.notification.type.thanks_remove, object 000000007cf39c5f0000000079329a6f
array(1) { ["notification_data"]=> array(0) { } }

prepare_for_display, gfksx.thanksforposts.notification.type.thanks_remove, object 000000007cf39c5f0000000079329a6f
array(1) { ["notification_data"]=> array(0) { } }

prepare_for_display, gfksx.thanksforposts.notification.type.thanks_remove, object 000000007cf39c5f0000000079329a6f
array(1) { ["notification_data"]=> array(0) { } }

prepare_for_display, gfksx.thanksforposts.notification.type.thanks_remove, object 000000007cf39c5f0000000079329a6f
array(1) { ["notification_data"]=> array(0) { } }

prepare_for_display, notification.type.pm, object 000000007cf39faf0000000079329a6f
array(9) { ["notification_id"]=> string(3) "659" ["notification_type_id"]=> string(2) "14" ["item_id"]=> string(2) "29" ["item_parent_id"]=> string(1) "0" ["user_id"]=> string(3) "126" ["notification_read"]=> string(1) "0" ["notification_time"]=> string(10) "1578924701" ["notification_data"]=> array(2) { ["from_user_id"]=> string(1) "2" ["message_subject"]=> string(11) "Advertencia" } ["notification_type_name"]=> string(20) "notification.type.pm" }

prepare_for_display, gfksx.thanksforposts.notification.type.thanks, object 000000007cf39c4b0000000079329a6f
array(1) { ["notification_data"]=> array(0) { } } 
I can see few issues affecting thanks but working different in PMs:

1) Object ID is always the same for any notification object of any of thanks or thanks_remove types (one unique ID by each type, 2 in total). But on PMs each notification object has its own Object ID.

2) Related to above point, contructor is called once by each PM while is called only on the first thanks or thanks_remove object. That may be te reason why it reports always same ID.


3) There's a step that I don't know what is used to, but also shows not calling constructor. Just between set_initial_data and prepare_for_display calls:

Code: Select all

constructor, object 000000004043091f0000000003bba3e7

set_initial_data, notification.type.pm, object 000000004043091f0000000003bba3e7
array(0) { }

set_initial_data, gfksx.thanksforposts.notification.type.thanks, object 0000000040430ae90000000003bba3e7
array(0) { }

set_initial_data, gfksx.thanksforposts.notification.type.thanks_remove, object 0000000040430afd0000000003bba3e7
array(0) { }
Seems any kind of cleanup...

4) Finally, set_initial_data calls get empty data. Probably because it's always using same object and the above point call sets it to empty, then it's the last set state.






I have no idea why it's showing different behavior, I'm not using any static or singleton.



Thanks for your help.

User avatar
mrgoldy
Development Team Member
Development Team Member
Posts: 1350
Joined: Tue Oct 06, 2009 7:34 pm
Location: The Netherlands
Name: Gijs
Contact:

Re: [3.2][RC] Thanks for posts (and optional Tapatalk integration)

Post by mrgoldy »

Hello hello,

I did have a look at your code, but got lost a little bit, as you use a different coding style than I am (used to).
You pretty much throw everything into one gigantic helper class, which can make it a bit 'unoverseeable'.
I personally try to work a little bit more object based, grouping specific functions together in certain classes.
For example an object that handles all the SQL queries for you Thanks table(s), a class that handles the outputs, a class that handles everything in regards to notifications. I personally find that easier to debug problems, as you almost always know from which object the error is coming and then you're no longer looking at a 1000+ line file.

Now, about your issue with notifications.
The reason I said it is mostlikely a problem within the extension and not the phpBB core, is the following.
Whenever I want to add / edit a feature to one of my extensions, before creating my own and reinventing the wheel, I look around if something similar is already available in the core itself, or if I know of any extensions that achieve something alike.

Now in your case, that is true.
You want to show multiple users doing something in regards to a single post. You can think of this similar to the post notification type, that shows which users replied to a topic a user is watching (subscribed to). And seeing as that still works fine (as far as I could quickly test it) and is achieving the exact same thing as you are trying to achieve, it is safe to assume that somewhere you either have a bug or a flaw in your approach.

I think one of the main problems you are currently having, is with identifiers for the notifications. They are non-unique.
For example, I 'thanked' your post (topic id: 500, post id: 750). A notification is created with the item id as 500 and a parent id of 750. You get the notification and you mark it read. Now 'potku' thanks you for the same post, but seeing you already marked the notification as read, the old one is not updated, but a new one is created. With the item id as 500 and the parent id as 750.
The difference here in regards to the above example of the subscribed posts, is that the first unread post id is used as the item id. So once that is marked read, any new posts added afterwards, will create a new notification with the new post id as notificaton id.

As mentioned initially, I would also look into clarifying the code a little bit, so it becomes easier for you to debug.
There are two actions that trigger a notification for you; Someone thanks a post & Someone unthanks a post. Send all the data to the a new 'notification helper class' and work from there.
Then there are, as I see it, 4 possibilities when creating a notification.
- Someone thanks a post, that already has an unread thanks notification: add to the list
- Someone thanks a post, that does not have an unread thanks notificiation: create a new one
- Someone unthanks a post, that already has an unread unthanks notification: add to the list
- Someone unthanks a post, that does not have an unread unthanks notification: create a new one
And then there are the cases where Someone (un)thanks a post and Someone is the only user in the 'unread' notification, the notification should be deleted and no new one added.

Once I have some more time, I will see if I can throw together a working example.
For now, I would suggest starting off with blank notifications and first get all of the 'cases' working, adding users to the list.
Then later on add any other 'features' to the notifications that you might have added.
I would suggest having a look at the submit_post() (specifically this part) function and the post notification type.
And looking into creating your own identifiers for your notifications, or making them unique somehow.

User avatar
mrx1983
Registered User
Posts: 8
Joined: Mon Dec 02, 2019 8:53 pm

Re: [3.2][RC] Thanks for posts (and optional Tapatalk integration)

Post by mrx1983 »

i tried a little cheat/workaround solution.
not tested out yet.

[edit: i removed it, it don't really worked]

Hysteriaa
Registered User
Posts: 19
Joined: Mon Jan 20, 2020 8:18 pm

Re: [3.2][RC] Thanks for posts (and optional Tapatalk integration)

Post by Hysteriaa »

Side-question about this extension (thanks for posts)

I'd like to hide "Given: .." from de miniprofiles.
I want the received likes to be showed at the miniprofiles, but not the givens.

Is there a way to change that? Where can I change that? With what code, or what code do I have to remove?

User avatar
mrx1983
Registered User
Posts: 8
Joined: Mon Dec 02, 2019 8:53 pm

Re: [3.2][RC] Thanks for posts (and optional Tapatalk integration)

Post by mrx1983 »

Hysteriaa wrote:
Mon Jan 27, 2020 1:17 pm
Side-question about this extension (thanks for posts)

I'd like to hide "Given: .." from de miniprofiles.
I want the received likes to be showed at the miniprofiles, but not the givens.

Is there a way to change that? Where can I change that? With what code, or what code do I have to remove?
gfksx\ThanksForPosts\styles\prosilver\template\event\viewtopic_body_postrow_custom_fields_after.html

replace the content with this (i basically removed / out coment the first dd of this template)

Code: Select all

{% if postrow.THANKS_COUNTERS_VIEW and postrow.THANKS_POSTLIST_VIEW and (postrow.THANKS_POST_VIEW_GUESTS or not postrow.S_POST_ANONYMOUS) and (postrow.THANKS_POST_VIEW_ROBOTS or not S_IS_BOT) %}
<!--<dd class="profile-posts" data-user-give-id="{{ postrow.POSTER_ID }}">
    <strong>{{ lang('GIVEN') }}{{ lang('COLON') }}</strong>
    <a href="{{ postrow.POSTER_GIVE_COUNT_LINK }}">{% if postrow.POSTER_GIVE_COUNT %}{{ postrow.POSTER_GIVE_COUNT }}{% else %}0{% endif %}</a>
</dd>-->
<dd class="profile-posts" data-user-receive-id="{{ postrow.POSTER_ID }}">
    <strong>{{ lang('RECEIVED') }}{{ lang('COLON') }}</strong>
    <a href="{postrow.POSTER_RECEIVE_COUNT_LINK}">{% if postrow.POSTER_RECEIVE_COUNT %}{postrow.POSTER_RECEIVE_COUNT}{% else %}0{% endif %}</a>
</dd>
{% endif %}

User avatar
Frogmen
Registered User
Posts: 123
Joined: Fri Dec 28, 2007 11:48 pm
Location: Palma De Mallorca. Spain

Re: [3.2][RC] Thanks for posts (and optional Tapatalk integration)

Post by Frogmen »

Hello. Is the ext working with phpbb3.3?

User avatar
Naguissa
Registered User
Posts: 357
Joined: Thu Mar 02, 2017 6:55 am
Location: Barcelona
Name: Naguissa
Contact:

Re: [3.2][RC] Thanks for posts (and optional Tapatalk integration)

Post by Naguissa »

Frogmen wrote:
Tue Jan 28, 2020 9:03 am
Hello. Is the ext working with phpbb3.3?
No. It doesn't break the board (if you use master from gitHub) but board notifications are empty.
mrx1983 wrote:
Mon Jan 27, 2020 5:26 pm
(fix)


Thanks, perfect fix.

User avatar
Naguissa
Registered User
Posts: 357
Joined: Thu Mar 02, 2017 6:55 am
Location: Barcelona
Name: Naguissa
Contact:

Re: [3.2][RC] Thanks for posts (and optional Tapatalk integration)

Post by Naguissa »

mrgoldy wrote:
Sat Jan 25, 2020 11:28 am
Hello hello,

[...]
Thanks for your time.

I have to disagree about this issue:

1) Notifications are identified bby notification_id field, so any notification should be unique.

2) Fetching for unread notifications could be failing, but checking database shows it doesn't happen.

3) If you have unread notifications and update your board to 3.3.0, then all notifications are empty. Also if you doesn't have unread notifications. In fact, any case results in unread notifications.

4) All operations works flawlessly on 3.2.x. So the only change is phpBB core. And checking the debug sequence I posted before you can realize there's a BIG problem with constructors, even when user_id/post_id is different (no mention to notification_id, that's always unique).




May be not a phpBB bug, but this issue manifest only on 3.3.0, so there has to be any change that make this happen.

User avatar
jackennils
Registered User
Posts: 229
Joined: Mon Jun 01, 2009 7:48 pm

Re: [3.2][RC] Thanks for posts (and optional Tapatalk integration)

Post by jackennils »

I just want to let you know that notifications are working for me on 3.3. Everything is working as intented. I am using your ext version 3.2.9. and this ext here to fix the Symfony syntax errors. That was all.

User avatar
mrx1983
Registered User
Posts: 8
Joined: Mon Dec 02, 2019 8:53 pm

Re: [3.2][RC] Thanks for posts (and optional Tapatalk integration)

Post by mrx1983 »

oh damn, big thx, you are probably correct.
i just used the extension and it already tells me this:

- “scope: prototype” has become “shared: false”
- “scope: container” has become “shared: true”

well i have seen that "scope: prototype" was used in the service file, and it even says it will not work without this.
so if this changed in phpbb3.3 it was probably the reason why the extension broke.
instead of not sharing it, it probably tryed to share it. which is probably the problem.

edit: it looks like it really works.
after i modified the yml files according to the tool it now works.
https://sharing.rainbowdash.cc/thanksfo ... pbb3.3.zip

User avatar
L&R
Registered User
Posts: 31
Joined: Mon Oct 08, 2018 5:47 am

Re: [3.2][RC] Thanks for posts (and optional Tapatalk integration)

Post by L&R »

Thank you all!
Working on 3.30 finally!

User avatar
Naguissa
Registered User
Posts: 357
Joined: Thu Mar 02, 2017 6:55 am
Location: Barcelona
Name: Naguissa
Contact:

Re: [3.2][RC] Thanks for posts (and optional Tapatalk integration)

Post by Naguissa »

Working on phpBB3.3.x!

Thanks for the extension checker idea, that solved few YML files glitches!

You can download it from gitHub, release 3.2.15: https://github.com/Naguissa/thanks_for_ ... tag/3.2.15

User avatar
Frogmen
Registered User
Posts: 123
Joined: Fri Dec 28, 2007 11:48 pm
Location: Palma De Mallorca. Spain

Re: [3.2][3.3][RC] Thanks for posts (and optional Tapatalk integration)

Post by Frogmen »

Thank you guys. Works nice

Saludos
Javier

User avatar
Naguissa
Registered User
Posts: 357
Joined: Thu Mar 02, 2017 6:55 am
Location: Barcelona
Name: Naguissa
Contact:

Re: [3.2][RC] Thanks for posts (and optional Tapatalk integration)

Post by Naguissa »

jackennils wrote:
Tue Jan 28, 2020 3:45 pm
I just want to let you know that notifications are working for me on 3.3. Everything is working as intented. I am using your ext version 3.2.9. and this ext here to fix the Symfony syntax errors. That was all.
One note unrelated to Thanks extension: Applying changes suggested by this extension has fixed ALL my board extensions, including XML Sitemaps, SEO URLs, Topic Tags, etc.


It's a very helpful extension...

User avatar
L&R
Registered User
Posts: 31
Joined: Mon Oct 08, 2018 5:47 am

Re: [3.2][3.3][RC] Thanks for posts (and optional Tapatalk integration)

Post by L&R »

Does it work on 3.3.0? I just used patched files by you for TFP.

Post Reply

Return to “Extensions in Development”