Conversation Essentials

Conversation Essentials [Paid] 2.7.0

No permission to buy ($45.00)

Tom McIntyre

Active member
I just attempted to move a conversation to a thread for the first time. A new user initiated a conversation when he really should have posted anew thread. I offered to move it to the appropriate forum, but the function failed with this error message recorded in the system errorlog:
Code:
[LIST]
[*]ErrorException: Job SV\ConversationEssentials:ConversationCopier: [E_WARNING] parse_ini_file(./data/osbrowser/uasdata.ini): failed to open stream: No such file or directory
[*]src/addons/Snog/OSBrowser/XF/Service/Thread/Creator.php:27
[*]Generated by: Unknown account
[*]Apr 7, 2022 at 12:40 PM
[/LIST]
[HEADING=2]Stack trace[/HEADING]
#0 [internal function]: XF::handlePhpError(2, '[E_WARNING] par...', '/home/xfnawcc/p...', 27, Array)
#1 src/addons/Snog/OSBrowser/XF/Service/Thread/Creator.php(27): parse_ini_file('./data/osbrowse...', true)
#2 src/XF/Service/ValidateAndSavableTrait.php(40): Snog\OSBrowser\XF\Service\Thread\Creator->_save()
#3 src/addons/SV/ConversationEssentials/Job/ConversationCopier.php(152): XF\Service\Thread\Creator->save()
#4 src/XF.php(479): SV\ConversationEssentials\Job\ConversationCopier->SV\ConversationEssentials\Job\{closure}()
#5 src/addons/SV/ConversationEssentials/Job/ConversationCopier.php(160): XF::asVisitor(Object(MMO\ImpersonateUser\XF\Entity\User), Object(Closure))
#6 src/XF/Job/Manager.php(253): SV\ConversationEssentials\Job\ConversationCopier->run(G)
#7 src/addons/Hampel/JobRunner/XF/Job/Manager.php(95): XF\Job\Manager->runJobInternal(Array, G)
#8 src/XF/Job/Manager.php(195): Hampel\JobRunner\XF\Job\Manager->runJobInternal(Array, G)
#9 src/addons/Hampel/JobRunner/XF/Job/Manager.php(85): XF\Job\Manager->runJobEntry(Array, G)
#10 src/XF/Job/Manager.php(79): Hampel\JobRunner\XF\Job\Manager->runJobEntry(Array, G)
#11 src/addons/Hampel/JobRunner/XF/Job/Manager.php(29): XF\Job\Manager->runQueue(false, 8)
#12 src/addons/Hampel/JobRunner/Cli/Command/RunJobs.php(89): Hampel\JobRunner\XF\Job\Manager->runQueue(false, 8)
#13 src/vendor/symfony/console/Command/Command.php(255): Hampel\JobRunner\Cli\Command\RunJobs->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#14 src/vendor/symfony/console/Application.php(987): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#15 src/vendor/symfony/console/Application.php(255): Symfony\Component\Console\Application->doRunCommand(Object(Hampel\JobRunner\Cli\Command\RunJobs), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#16 src/vendor/symfony/console/Application.php(148): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#17 src/XF/Cli/Runner.php(63): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#18 cmd.php(15): XF\Cli\Runner->run()
#19 {main}
[HEADING=2]Request state[/HEADING]
array(1) {
  ["cli"] => string(64) "/home/xfnawcc/public_html/cmd.php --quiet --time=300 hg:run-jobs"
}
 

K a M a L

Active member
@Xon .. I have an account with very high number of private conversations (most of them are automated)..
conversation list page loads in 0.2986s when your addon is disabled and loads in 19.4199s when it is enabled
This query takes 13 seconds
SQL:
SELECT COUNT(*)
FROM `xf_conversation_user`
LEFT JOIN `xf_conversation_master` AS `xf_conversation_master_Master_1` ON (`xf_conversation_master_Master_1`.`conversation_id` = `xf_conversation_user`.`conversation_id`)
LEFT JOIN `xf_conversation_recipient` AS `xf_conversation_recipient_Recipients_4` ON (`xf_conversation_recipient_Recipients_4`.`conversation_id` = `xf_conversation_master_Master_1`.`conversation_id` AND `xf_conversation_recipient_Recipients_4`.`user_id` = '2')
LEFT JOIN `xf_sv_convess_conversation_user` AS `xf_sv_convess_conversation_user_ConvEssUserData_5` ON (`xf_sv_convess_conversation_user_ConvEssUserData_5`.`conversation_id` = `xf_conversation_recipient_Recipients_4`.`conversation_id` AND `xf_sv_convess_conversation_user_ConvEssUserData_5`.`user_id` = `xf_conversation_recipient_Recipients_4`.`user_id`)
WHERE (`xf_conversation_user`.`owner_user_id` = 2) AND ((`xf_sv_convess_conversation_user_ConvEssUserData_5`.`label_id` = 0) OR (`xf_sv_convess_conversation_user_ConvEssUserData_5`.`label_id` IS NULL)) AND ((`xf_sv_convess_conversation_user_ConvEssUserData_5`.`sticky` = 0) OR (`xf_sv_convess_conversation_user_ConvEssUserData_5`.`sticky` IS NULL))

Run Time: 13.077180
Select TypeTableTypePossible KeysKeyKey LenRefRowsExtra
SIMPLExf_conversation_userrefowner_user_id_last_message_date,owner_user_id_is_unread,owner_starred_dateowner_user_id_is_unread4const2384700Using index
SIMPLExf_conversation_master_Master_1eq_refPRIMARYPRIMARY4dbname.xf_conversation_user.conversation_id1Using index
SIMPLExf_conversation_recipient_Recipients_4eq_refPRIMARY,user_idPRIMARY8dbname.xf_conversation_master_Master_1.conversation_id,const1Using index
SIMPLExf_sv_convess_conversation_user_ConvEssUserData_5eq_refPRIMARY,user_idPRIMARY8dbname.xf_conversation_recipient_Recipients_4.conversation_id,dbname.xf_conversation_recipient_Recipients_4.user_id1Using where

and this takes 6 seconds

SQL:
SELECT `xf_conversation_user`.*, `xf_conversation_master_Master_1`.*, `xf_conversation_recipient_Recipient_2`.*, `xf_user_Starter_3`.*, `xf_conversation_recipient_Recipients_4`.*, `xf_sv_convess_conversation_user_ConvEssUserData_5`.*, `xf_user_User_6`.*
FROM `xf_conversation_user`
LEFT JOIN `xf_conversation_master` AS `xf_conversation_master_Master_1` ON (`xf_conversation_master_Master_1`.`conversation_id` = `xf_conversation_user`.`conversation_id`)
LEFT JOIN `xf_conversation_recipient` AS `xf_conversation_recipient_Recipient_2` ON (`xf_conversation_recipient_Recipient_2`.`conversation_id` = `xf_conversation_user`.`conversation_id` AND `xf_conversation_recipient_Recipient_2`.`user_id` = `xf_conversation_user`.`owner_user_id`)
LEFT JOIN `xf_user` AS `xf_user_Starter_3` ON (`xf_user_Starter_3`.`user_id` = `xf_conversation_master_Master_1`.`user_id`)
LEFT JOIN `xf_conversation_recipient` AS `xf_conversation_recipient_Recipients_4` ON (`xf_conversation_recipient_Recipients_4`.`conversation_id` = `xf_conversation_master_Master_1`.`conversation_id` AND `xf_conversation_recipient_Recipients_4`.`user_id` = '2')
LEFT JOIN `xf_sv_convess_conversation_user` AS `xf_sv_convess_conversation_user_ConvEssUserData_5` ON (`xf_sv_convess_conversation_user_ConvEssUserData_5`.`conversation_id` = `xf_conversation_recipient_Recipients_4`.`conversation_id` AND `xf_sv_convess_conversation_user_ConvEssUserData_5`.`user_id` = `xf_conversation_recipient_Recipients_4`.`user_id`)
LEFT JOIN `xf_user` AS `xf_user_User_6` ON (`xf_user_User_6`.`user_id` = `xf_conversation_recipient_Recipients_4`.`user_id`)
WHERE (`xf_conversation_user`.`owner_user_id` = 2) AND (`xf_sv_convess_conversation_user_ConvEssUserData_5`.`sticky` = 1) AND ((`xf_sv_convess_conversation_user_ConvEssUserData_5`.`label_id` = 0) OR (`xf_sv_convess_conversation_user_ConvEssUserData_5`.`label_id` IS NULL))
ORDER BY `xf_conversation_user`.`last_message_date` DESC
Run Time: 6.214348
Select TypeTableTypePossible KeysKeyKey LenRefRowsExtra
SIMPLExf_sv_convess_conversation_user_ConvEssUserData_5refPRIMARY,label,user_iduser_id4const987322Using index condition; Using where; Using temporary; Using filesort
SIMPLExf_conversation_master_Master_1eq_refPRIMARYPRIMARY4dbname.xf_sv_convess_conversation_user_ConvEssUserData_5.conversation_id1
SIMPLExf_conversation_usereq_refPRIMARY,owner_user_id_last_message_date,owner_user_id_is_unread,owner_starred_datePRIMARY8dbname.xf_sv_convess_conversation_user_ConvEssUserData_5.conversation_id,const1
SIMPLExf_conversation_recipient_Recipient_2eq_refPRIMARY,user_idPRIMARY8dbname.xf_sv_convess_conversation_user_ConvEssUserData_5.conversation_id,const1
SIMPLExf_user_Starter_3eq_refPRIMARYPRIMARY4dbname.xf_conversation_master_Master_1.user_id1
SIMPLExf_conversation_recipient_Recipients_4eq_refPRIMARY,user_idPRIMARY8dbname.xf_sv_convess_conversation_user_ConvEssUserData_5.conversation_id,const1Using where
SIMPLExf_user_User_6eq_refPRIMARYPRIMARY4dbname.xf_sv_convess_conversation_user_ConvEssUserData_5.user_id1
 

Xon

Well-known member
@K a M a L please ensure you've got the latest version of the add-on installed.

@Xon .. I have an account with very high number of private conversations (most of them are automated)..
conversation list page loads in 0.2986s when your addon is disabled and loads in 19.4199s when it is enabled
This query takes 13 seconds
SQL:
SELECT COUNT(*)
FROM `xf_conversation_user`
LEFT JOIN `xf_conversation_master` AS `xf_conversation_master_Master_1` ON (`xf_conversation_master_Master_1`.`conversation_id` = `xf_conversation_user`.`conversation_id`)
LEFT JOIN `xf_conversation_recipient` AS `xf_conversation_recipient_Recipients_4` ON (`xf_conversation_recipient_Recipients_4`.`conversation_id` = `xf_conversation_master_Master_1`.`conversation_id` AND `xf_conversation_recipient_Recipients_4`.`user_id` = '2')
LEFT JOIN `xf_sv_convess_conversation_user` AS `xf_sv_convess_conversation_user_ConvEssUserData_5` ON (`xf_sv_convess_conversation_user_ConvEssUserData_5`.`conversation_id` = `xf_conversation_recipient_Recipients_4`.`conversation_id` AND `xf_sv_convess_conversation_user_ConvEssUserData_5`.`user_id` = `xf_conversation_recipient_Recipients_4`.`user_id`)
WHERE (`xf_conversation_user`.`owner_user_id` = 2) AND ((`xf_sv_convess_conversation_user_ConvEssUserData_5`.`label_id` = 0) OR (`xf_sv_convess_conversation_user_ConvEssUserData_5`.`label_id` IS NULL)) AND ((`xf_sv_convess_conversation_user_ConvEssUserData_5`.`sticky` = 0) OR (`xf_sv_convess_conversation_user_ConvEssUserData_5`.`sticky` IS NULL))

Run Time: 13.077180
Select TypeTableTypePossible KeysKeyKey LenRefRowsExtra
SIMPLExf_conversation_userrefowner_user_id_last_message_date,owner_user_id_is_unread,owner_starred_dateowner_user_id_is_unread4const2384700Using index
SIMPLExf_conversation_master_Master_1eq_refPRIMARYPRIMARY4dbname.xf_conversation_user.conversation_id1Using index
SIMPLExf_conversation_recipient_Recipients_4eq_refPRIMARY,user_idPRIMARY8dbname.xf_conversation_master_Master_1.conversation_id,const1Using index
SIMPLExf_sv_convess_conversation_user_ConvEssUserData_5eq_refPRIMARY,user_idPRIMARY8dbname.xf_conversation_recipient_Recipients_4.conversation_id,dbname.xf_conversation_recipient_Recipients_4.user_id1Using where

and this takes 6 seconds

SQL:
SELECT `xf_conversation_user`.*, `xf_conversation_master_Master_1`.*, `xf_conversation_recipient_Recipient_2`.*, `xf_user_Starter_3`.*, `xf_conversation_recipient_Recipients_4`.*, `xf_sv_convess_conversation_user_ConvEssUserData_5`.*, `xf_user_User_6`.*
FROM `xf_conversation_user`
LEFT JOIN `xf_conversation_master` AS `xf_conversation_master_Master_1` ON (`xf_conversation_master_Master_1`.`conversation_id` = `xf_conversation_user`.`conversation_id`)
LEFT JOIN `xf_conversation_recipient` AS `xf_conversation_recipient_Recipient_2` ON (`xf_conversation_recipient_Recipient_2`.`conversation_id` = `xf_conversation_user`.`conversation_id` AND `xf_conversation_recipient_Recipient_2`.`user_id` = `xf_conversation_user`.`owner_user_id`)
LEFT JOIN `xf_user` AS `xf_user_Starter_3` ON (`xf_user_Starter_3`.`user_id` = `xf_conversation_master_Master_1`.`user_id`)
LEFT JOIN `xf_conversation_recipient` AS `xf_conversation_recipient_Recipients_4` ON (`xf_conversation_recipient_Recipients_4`.`conversation_id` = `xf_conversation_master_Master_1`.`conversation_id` AND `xf_conversation_recipient_Recipients_4`.`user_id` = '2')
LEFT JOIN `xf_sv_convess_conversation_user` AS `xf_sv_convess_conversation_user_ConvEssUserData_5` ON (`xf_sv_convess_conversation_user_ConvEssUserData_5`.`conversation_id` = `xf_conversation_recipient_Recipients_4`.`conversation_id` AND `xf_sv_convess_conversation_user_ConvEssUserData_5`.`user_id` = `xf_conversation_recipient_Recipients_4`.`user_id`)
LEFT JOIN `xf_user` AS `xf_user_User_6` ON (`xf_user_User_6`.`user_id` = `xf_conversation_recipient_Recipients_4`.`user_id`)
WHERE (`xf_conversation_user`.`owner_user_id` = 2) AND (`xf_sv_convess_conversation_user_ConvEssUserData_5`.`sticky` = 1) AND ((`xf_sv_convess_conversation_user_ConvEssUserData_5`.`label_id` = 0) OR (`xf_sv_convess_conversation_user_ConvEssUserData_5`.`label_id` IS NULL))
ORDER BY `xf_conversation_user`.`last_message_date` DESC
Run Time: 6.214348
Select TypeTableTypePossible KeysKeyKey LenRefRowsExtra
SIMPLExf_sv_convess_conversation_user_ConvEssUserData_5refPRIMARY,label,user_iduser_id4const987322Using index condition; Using where; Using temporary; Using filesort
SIMPLExf_conversation_master_Master_1eq_refPRIMARYPRIMARY4dbname.xf_sv_convess_conversation_user_ConvEssUserData_5.conversation_id1
SIMPLExf_conversation_usereq_refPRIMARY,owner_user_id_last_message_date,owner_user_id_is_unread,owner_starred_datePRIMARY8dbname.xf_sv_convess_conversation_user_ConvEssUserData_5.conversation_id,const1
SIMPLExf_conversation_recipient_Recipient_2eq_refPRIMARY,user_idPRIMARY8dbname.xf_sv_convess_conversation_user_ConvEssUserData_5.conversation_id,const1
SIMPLExf_user_Starter_3eq_refPRIMARYPRIMARY4dbname.xf_conversation_master_Master_1.user_id1
SIMPLExf_conversation_recipient_Recipients_4eq_refPRIMARY,user_idPRIMARY8dbname.xf_sv_convess_conversation_user_ConvEssUserData_5.conversation_id,const1Using where
SIMPLExf_user_User_6eq_refPRIMARYPRIMARY4dbname.xf_sv_convess_conversation_user_ConvEssUserData_5.user_id1
Please open a ticket on my site; https://atelieraphelion.com/

This will require getting you to run a number of queries manually to identify what is happening.
 

DavidXLD

Active member
Hi everyone,
I would like to authorize my moderators to send conversations to people who do not authorize conversations.
It would allow moderator to contact members privately even if members refuse that.
Is it feasible with this add-on?
Thanks
 
Top