Oh I see. But then what does the Edit Conversation permission do? What i would like to do is to control who can stick/unstick a conversation.Does it still happen if this add-on is disabled?
As stock, the "edit conversation" button is always provided for conversation starters to edit the title. This add-on doesn't add any permissions around it to control it.
- Fix conversation rules "leave conversation" option being unreliable
- Fix incorrect handing for conversations started by guests (ie deleted users)
- Compatibility fix for Warning Improvements v2.4.0 & 'anonymized warning conversations' feature
- If installed, Recommend updating Warning Improvements v2.4.1+ if users lack the "view warning issuer" permission
Server error log
Error: Call to a member function hydrateRelation() on null src/addons/SV/ConversationEssentials/XF/Entity/ConversationRecipient.php:199
Generated by: Member1 Apr 27, 2020 at 10:43 AM
Stack trace
#0 src/addons/SV/ConversationEssentials/XF/Entity/ConversationRecipient.php(285): SV\ConversationEssentials\XF\Entity\ConversationRecipient->getConvEssUserData()
#1 src/XF/Mvc/Entity/Entity.php(1297): SV\ConversationEssentials\XF\Entity\ConversationRecipient->_preSave()
#2 src/XF/Mvc/Entity/Entity.php(1150): XF\Mvc\Entity\Entity->preSave()
#3 src/XF/Repository/Conversation.php(266): XF\Mvc\Entity\Entity->save(true, false)
#4 src/addons/SV/ConversationEssentials/XF/Repository/Conversation.php(262): XF\Repository\Conversation->insertRecipients(Object(SV\ConversationEssentials\XF\Entity\ConversationMaster), Array, Object(SV\ElasticSearchEssentials\XF\Entity\User))
#5 src/XF/Service/Conversation/Inviter.php(115): SV\ConversationEssentials\XF\Repository\Conversation->insertRecipients(Object(SV\ConversationEssentials\XF\Entity\ConversationMaster), Array, Object(SV\ElasticSearchEssentials\XF\Entity\User))
#6 src/addons/SV/ConversationEssentials/XF/Service/Conversation/Inviter.php(15): XF\Service\Conversation\Inviter->_save()
#7 src/XF/Service/ValidateAndSavableTrait.php(40): SV\ConversationEssentials\XF\Service\Conversation\Inviter->_save()
#8 src/XF/Pub/Controller/Conversation.php(814): XF\Service\Conversation\Inviter->save()
#9 src/XF/Mvc/Dispatcher.php(350): XF\Pub\Controller\Conversation->actionInvite(Object(XF\Mvc\ParameterBag))
#10 src/XF/Mvc/Dispatcher.php(257): XF\Mvc\Dispatcher->dispatchClass('XF:Conversation', 'Invite', Object(XF\Mvc\RouteMatch), Object(SV\ConversationEssentials\XF\Pub\Controller\Conversation), NULL)
#11 src/XF/Mvc/Dispatcher.php(113): XF\Mvc\Dispatcher->dispatchFromMatch(Object(XF\Mvc\RouteMatch), Object(SV\ConversationEssentials\XF\Pub\Controller\Conversation), NULL)
#12 src/XF/Mvc/Dispatcher.php(55): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch))
#13 src/XF/App.php(2184): XF\Mvc\Dispatcher->run()
#14 src/XF.php(391): XF\App->run()
#15 index.php(20): XF::runApp('XF\\Pub\\App')
#16 {main}
Request state
array(4) {
["url"] => string(95) "/conversations/conversation.883424/invite"
["referrer"] => string(122) "https://www.domain.com/conversations/conversation.883424/"
["_GET"] => array(1) {
["/conversations/conversation_883424/invite"] => string(0) ""
}
["_POST"] => array(6) {
["tokens_select"] => string(8) "Joe Link"
["recipients"] => string(8) "Joe Link"
["_xfToken"] => string(8) "********"
["_xfRequestUri"] => string(89) "/conversations/conversation.883424/"
["_xfWithData"] => string(1) "1"
["_xfResponseType"] => string(4) "json"
}
}
- Potential fix for race condition causing "Call to a member function hydrateRelation() on null" on inviting a user
xf_sv_convess_export_log
(for_user_id
, conversation_ids
, export_count
, export_format
, export_log_id
, export_token
, export_date
, download_count
, zip_archive_name
, zip_archive_size
, zip_archive_path
, expired_on
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
- Fix that a very small number of conversations could be exported at once without an unexpected error.
Thank you Xon,It looks like the conversation was deleted in the middle of an export. I'm looking to improve the export feature to be more robust
xf_sv_convess_export_log
(for_user_id
, conversation_ids
, export_count
, export_format
, export_log_id
, export_token
, export_date
, download_count
, zip_archive_name
, zip_archive_size
, zip_archive_path
, expired_on
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)ErrorException: Template error: Illegal string offset 'icon' src/addons/XFA/CustomUsernameIcons/XF/Template/Templater.php:77
Generated by: Randomguy May 13, 2020 at 10:13 PM
Stack trace
#0 src/addons/XFA/CustomUsernameIcons/XF/Template/Templater.php(77): XF\Template\Templater->handleTemplateError(2, 'Illegal string ...', '/home/nginx/dom...', 77, Array)
#1 [internal function]: XFA\CustomUsernameIcons\XF\Template\Templater->fnUsernameLink(Object(SV\ConversationEssentials\XF\Template\Templater), false, Object(SV\ElasticSearchEssentials\XF\Entity\User), false, Array)
#2 src/XF/Template/Templater.php(936): call_user_func_array(Array, Array)
#3 internal_data/code_cache/templates/l1/s11/public/conversations_popup.php(32): XF\Template\Templater->func('username_link', Array)
#4 src/XF/Template/Templater.php(701): XF\Template\Templater->{closure}(Object(SV\ConversationEssentials\XF\Template\Templater), Array, Array)
#5 internal_data/code_cache/templates/l1/s11/public/conversations_popup.php(77): XF\Template\Templater->callMacro('conversations_p...', 'popup_item', Array, Array)
#6 src/XF/Template/Templater.php(1315): XF\Template\Templater->{closure}(Object(SV\ConversationEssentials\XF\Template\Templater), Array)
#7 src/addons/AL/ThreadFilter/XF/Template/Templater.php(110): XF\Template\Templater->renderTemplate('conversations_p...', Array, true)
#8 src/XF/Template/Template.php(24): AL\ThreadFilter\XF\Template\Templater->renderTemplate('public:conversa...', Array)
#9 src/XF/Mvc/Renderer/Json.php(84): XF\Template\Template->render()
#10 src/XF/Mvc/Renderer/Json.php(68): XF\Mvc\Renderer\Json->renderHtmlFallback('XF:Conversation...', 'public:conversa...', Array)
#11 src/XF/Mvc/Dispatcher.php(458): XF\Mvc\Renderer\Json->renderView('XF:Conversation...', 'public:conversa...', Array)
#12 src/XF/Mvc/Dispatcher.php(440): XF\Mvc\Dispatcher->renderView(Object(XF\Mvc\Renderer\Json), Object(XF\Mvc\Reply\View))
#13 src/XF/Mvc/Dispatcher.php(400): XF\Mvc\Dispatcher->renderReply(Object(XF\Mvc\Renderer\Json), Object(XF\Mvc\Reply\View))
#14 src/XF/Mvc/Dispatcher.php(58): XF\Mvc\Dispatcher->render(Object(XF\Mvc\Reply\View), 'json')
#15 src/XF/App.php(2184): XF\Mvc\Dispatcher->run()
#16 src/XF.php(391): XF\App->run()
#17 index.php(20): XF::runApp('XF\\Pub\\App')
#18 {main}
Request state
array(4) {
["url"] => string(166) "/community/conversations/popup?xfRequestUri=%2Fcommunity%2F&_xfWithData=1&_xfToken=1589425996%2Ce4965d47e6e880f7a2c47615&_xfResponseType=json&=1589666425980"
["referrer"] => string(31) "https://example.com/community/"
["_GET"] => array(6) {
["/community/conversations/popup"] => string(0) ""
["_xfRequestUri"] => string(11) "/community/"
["_xfWithData"] => string(1) "1"
["_xfToken"] => string(43) "1589425996,e49601a4654645680f9aa7a2c47615"
["_xfResponseType"] => string(4) "json"
["_"] => string(13) "158944566980"
}
["_POST"] => array(0) {
}
}
<xf:if is="$xf.options.convess_popup_last_poster_avatar">
<xf:avatar user="$userConv.Master.LastMessageUser" size="xxs" defaultname="{$userConv.Master.last_message_username}" />
<xf:else />
<xf:avatar user="$userConv.Master.Starter" size="xxs" defaultname="{$userConv.Master.username}" />
</xf:if>
Starter
and LastMessageUser
can be null if the user in question has been deleted, which is something your add-on needs to handle.Per user conversation rules have a "Suppress unread alert" option. This global option prevents that from working for conversations started by administrators/moderators/staff/etc
Do you have the Conversation Essentials' "Prevent conversation hard-delete" option enabled?Hello there,
I just tried using the "Delete conversation" feature for a user. However, after confirming my action (and receiving the "Your changes have been saved." message), no conversations have been deleted from the database.
The xf_conversation_master table still contains the entry for the conversation started by this particular user and the messages are still there, too.
Mhmm, no, I have not:Do you have the Conversation Essentials' "Prevent conversation hard-delete" option enabled?
You sure that it isn't just still being processed? It's likely done as a job in the background, as there's potentially no limit of how many conversations there are. I just tried it on my local and my (very limited test) set of conversations is completely gone.
We use essential cookies to make this site work, and optional cookies to enhance your experience.