Итак, оказалось, что роли действительно никак не влияют на организацию чата.
Выяснилось следующее:
1. При создании чата штатным путем создается:
- 2 записи в таблице _rcl_chat_users для каждого из учасников чата
- запись в таблицу _rcl_chats с параметром private
- запись в таблице _rcl_chat_messages с параметром private_key = ID опонента
2. При создании кастомным путем создается:
- 1 запись в таблице _rcl_chat_users
- запись в таблицу _rcl_chats с параметром general
- запись в таблице _rcl_chat_messages с параметром private_key = 0
***
Решение - в процессе.
IMXO. Хотелось бы где нибуть (не в коде 🙂 ) почитать о параметрах массива, передаваемого функции rcl_chat_shortcode и далее классу Rcl_Chat
Rob Roy сказал(а)
Вы меня расстроили, получается мы може передать только 4 параметра...
Четыре параметра указаны для применения обычными пользователями, класс же способен принимать чуть больше, надо только знать что именно вы хотите получить или на что воздействовать. Пока необходимости в добавлении новых параметров влияющих на работу класса я не увидел, предлагайте.
Андрей CS сказал(а)
Четыре параметра указаны для применения обычными пользователями, класс же способен принимать чуть больше, надо только знать что именно вы хотите получить или на что воздействовать. Пока необходимости в добавлении новых параметров влияющих на работу класса я не увидел, предлагайте.
Вот это уже бальзам на душу. 🙂
В общем проблема пока безболезнено не решена.
Кастомный чат по прежнему создается с chat_status = general, что влечет за собой присвоение сообщениям private_key = 0
Отсюда истекает желание передать классу принудительный статус = private через параметр, дабы не лезть в класс грязными руками 🙂
...и пока что не понята причина "не создания" второй строки для принимающей стороны в таблице _rcl_chat_users:
Благодарю, Андрей. Передача параметра решает две из трех проблем "безболезненно" для класса:
- 1 запись в таблице _rcl_chat_users
- запись в таблицу _rcl_chats с параметром general
- запись в таблице _rcl_chat_messages с параметром private_key = 0
Осталось решить проблему _rcl_chat_users... 🙂
Итак безболезненного решени проблемы не нашлось.
Пришлось, да простит меня многоуважаемый автор, лезть таки в класс 🙁
На 218 строке был добавлен код:
$message_call = array( 'room_place'=>$chat_id.':'.$private_key, 'chat_id'=>$chat_id, 'user_id'=>$private_key, 'user_activity'=>current_time('mysql'), 'user_write'=>0, 'user_status'=>1, ); $result_call = $wpdb->insert( RCL_PREF.'chat_users', $message_call ); if(!$message){ $this->add_error('insert_message',__('The message was not added','wp-recall')); return $this->errors(); }
и строка global $rcl_options,$current_user; (ст.503) заменена на global $rcl_options;
После этого костыля чаты заработали корректно.
Думаю теперь тему можно закрывать.