@@ -36,6 +36,10 @@ class Conversation
3636
3737 protected $ current_messages ;
3838
39+ protected $ user_messages_count ;
40+
41+ protected $ max_messages_count ;
42+
3943 //
4044
4145 public function __construct ($ cookie , $ identifiers = null , $ invocations = 0 )
@@ -72,6 +76,14 @@ public function withLocation($latitude, $longitude, $radius = 1000)
7276 return $ this ;
7377 }
7478
79+ public function getRemainingMessages ()
80+ {
81+ if (is_null ($ this ->max_messages_count ))
82+ return 1 ;
83+
84+ return $ this ->max_messages_count - $ this ->user_messages_count ;
85+ }
86+
7587 public function createIdentifiers ($ cookie )
7688 {
7789 $ request = curl_init ();
@@ -253,8 +265,20 @@ public function handleObject($object, $callback = null)
253265 $ messages = [];
254266
255267 foreach ($ object ['arguments ' ] as $ argument ) {
256- foreach ($ argument ['messages ' ] as $ messageData ) {
257- $ messages [] = Message::fromData ($ messageData );
268+ if (isset ($ argument ['messages ' ]) && is_array ($ argument ['messages ' ])) {
269+ foreach ($ argument ['messages ' ] as $ messageData ) {
270+ $ messages [] = Message::fromData ($ messageData );
271+ }
272+ }
273+
274+ if (isset ($ argument ['throttling ' ]) && is_array ($ argument ['throttling ' ])) {
275+ if (isset ($ argument ['throttling ' ]['maxNumUserMessagesInConversation ' ])) {
276+ $ this ->max_messages_count = $ argument ['throttling ' ]['maxNumUserMessagesInConversation ' ];
277+ }
278+
279+ if (isset ($ argument ['throttling ' ]['numUserMessagesInConversation ' ])) {
280+ $ this ->user_messages_count = $ argument ['throttling ' ]['numUserMessagesInConversation ' ];
281+ }
258282 }
259283 }
260284
@@ -278,8 +302,20 @@ public function handleObject($object, $callback = null)
278302 case 2 : // Global result
279303 $ this ->current_messages = [];
280304
281- foreach ($ object ['item ' ]['messages ' ] as $ messageData ) {
282- $ this ->current_messages [] = Message::fromData ($ messageData );
305+ if (isset ($ object ['item ' ]['messages ' ]) && is_array ($ object ['item ' ]['messages ' ])) {
306+ foreach ($ object ['item ' ]['messages ' ] as $ messageData ) {
307+ $ this ->current_messages [] = Message::fromData ($ messageData );
308+ }
309+ }
310+
311+ if (isset ($ object ['item ' ]['throttling ' ]) && is_array ($ object ['item ' ]['throttling ' ])) {
312+ if (isset ($ object ['item ' ]['throttling ' ]['maxNumUserMessagesInConversation ' ])) {
313+ $ this ->max_messages_count = $ object ['item ' ]['throttling ' ]['maxNumUserMessagesInConversation ' ];
314+ }
315+
316+ if (isset ($ object ['item ' ]['throttling ' ]['numUserMessagesInConversation ' ])) {
317+ $ this ->user_messages_count = $ object ['item ' ]['throttling ' ]['numUserMessagesInConversation ' ];
318+ }
283319 }
284320 break ;
285321 case 3 : // Answer ended
0 commit comments