{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":507602910,"defaultBranch":"main","name":"unrealircd-rpc-php","ownerLogin":"unrealircd","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2022-06-26T14:54:52.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/8283449?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1672944604.0128691","currentOid":""},"activityList":{"items":[{"before":"4724b28b1c5d862414db89a8671c4e918cad70d1","after":"94e1459d52b429e3e5d43d36fabada6d0801bdc5","ref":"refs/heads/main","pushedAt":"2023-05-08T06:28:34.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"syzop","name":"Bram Matthys","path":"/syzop","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8280959?s=80&v=4"},"commit":{"message":"Return from $rpc->eventloop() after 2 seconds instead of 10.\nThis so keepalive-like packets can be sent to the browser by the webpanel\nevery 2 seconds instead of 10 seconds (for better explanation see webpanel)","shortMessageHtmlLink":"Return from $rpc->eventloop() after 2 seconds instead of 10."}},{"before":"101a298c6b6bed0ef6191cccbbad9358fb641746","after":"4724b28b1c5d862414db89a8671c4e918cad70d1","ref":"refs/heads/main","pushedAt":"2023-05-05T13:12:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"syzop","name":"Bram Matthys","path":"/syzop","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8280959?s=80&v=4"},"commit":{"message":"$rpc->log()->getAll() now has a $sources argument which allows you\nto filter on existing events. Uses same sources as ->subscribe().","shortMessageHtmlLink":"$rpc->log()->getAll() now has a $sources argument which allows you"}},{"before":"f47824ee22e6f5fced292708454d58fd31a985de","after":"101a298c6b6bed0ef6191cccbbad9358fb641746","ref":"refs/heads/main","pushedAt":"2023-04-27T18:42:53.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"syzop","name":"Bram Matthys","path":"/syzop","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8280959?s=80&v=4"},"commit":{"message":"Whoops.. i was wrong.. microtime() w/$as_float=true... duh :D","shortMessageHtmlLink":"Whoops.. i was wrong.. microtime() w/$as_float=true... duh :D"}},{"before":"a00acdeb734ebf07eee21e8d8b872440e75fa541","after":"f47824ee22e6f5fced292708454d58fd31a985de","ref":"refs/heads/main","pushedAt":"2023-04-27T18:37:09.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"syzop","name":"Bram Matthys","path":"/syzop","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8280959?s=80&v=4"},"commit":{"message":"This fix-for-endless-exception used <1ms while it should use <1s.\nAlso, I wonder if the fix is still needed as i (accidentally)\nupdated the websocket library today.\n\nI'm getting:\nPHP Fatal error: Uncaught WebSocket\\\\TimeoutException: Client read timeout in\n..etc..","shortMessageHtmlLink":"This fix-for-endless-exception used <1ms while it should use <1s."}},{"before":"6cfed6978187a2c67fea31d758e1a5f1688c0e48","after":"a00acdeb734ebf07eee21e8d8b872440e75fa541","ref":"refs/heads/main","pushedAt":"2023-04-27T18:35:41.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"syzop","name":"Bram Matthys","path":"/syzop","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8280959?s=80&v=4"},"commit":{"message":"Fix wrong function arguments (well, will be changed at some point)","shortMessageHtmlLink":"Fix wrong function arguments (well, will be changed at some point)"}},{"before":"c06315791eca4dafa27a47487e2d03630627ae82","after":"6cfed6978187a2c67fea31d758e1a5f1688c0e48","ref":"refs/heads/main","pushedAt":"2023-04-27T18:17:01.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"syzop","name":"Bram Matthys","path":"/syzop","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8280959?s=80&v=4"},"commit":{"message":"Actually return ->list...","shortMessageHtmlLink":"Actually return ->list..."}},{"before":"21667b50addbca70e8bace0dc27025847b0d12d1","after":"c06315791eca4dafa27a47487e2d03630627ae82","ref":"refs/heads/main","pushedAt":"2023-04-27T18:14:21.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"syzop","name":"Bram Matthys","path":"/syzop","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8280959?s=80&v=4"},"commit":{"message":"Add log.list (yeah that is in progress :D)","shortMessageHtmlLink":"Add log.list (yeah that is in progress :D)"}},{"before":"861297c3debd3a312353e491713bb2755af95612","after":"21667b50addbca70e8bace0dc27025847b0d12d1","ref":"refs/heads/main","pushedAt":"2023-04-27T18:05:37.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"syzop","name":"Bram Matthys","path":"/syzop","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8280959?s=80&v=4"},"commit":{"message":"query(): handle replies for different id, for errors too. Fixes 6.0.7 issue\ndue to recent change with set_issuer (as this method did not exist in\nUnrealIRCd version 6.0.7 it would cause an error later on).","shortMessageHtmlLink":"query(): handle replies for different id, for errors too. Fixes 6.0.7…"}},{"before":"21768a11e4644037f617b103ff19e6d3d1f011de","after":"861297c3debd3a312353e491713bb2755af95612","ref":"refs/heads/main","pushedAt":"2023-04-27T12:46:33.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"syzop","name":"Bram Matthys","path":"/syzop","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8280959?s=80&v=4"},"commit":{"message":"Update composer dependencies. End users need to run 'composer install'.\nThis so 02da13a9d49686e9a6c6254c7318e3e145debbf3 actually works\n(set \"issuer\" in UnrealIRCd\\Connection options to save 1 round trip).\n\nNote: if end-user forgets to call 'composer install' then this means\nset by is not logged now.","shortMessageHtmlLink":"Update composer dependencies. End users need to run 'composer install'."}},{"before":"fbdccdf53f539dc6424082cb6fd650a800f86009","after":"21768a11e4644037f617b103ff19e6d3d1f011de","ref":"refs/heads/main","pushedAt":"2023-04-27T11:45:34.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"syzop","name":"Bram Matthys","path":"/syzop","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8280959?s=80&v=4"},"commit":{"message":"Make query() throw an error when the request timed out (defined as >10sec).","shortMessageHtmlLink":"Make query() throw an error when the request timed out (defined as >1…"}},{"before":"02da13a9d49686e9a6c6254c7318e3e145debbf3","after":"fbdccdf53f539dc6424082cb6fd650a800f86009","ref":"refs/heads/main","pushedAt":"2023-04-27T11:43:06.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"syzop","name":"Bram Matthys","path":"/syzop","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8280959?s=80&v=4"},"commit":{"message":"On new connection, call rpc.set_issuer but don't wait for the reply.\nThis to speed up connection time a bit.\n\nRelated changes:\n* query() now has an extra argument $no_wait which defaults to false\n (and is set to true for rpc.set_issuer call if $options[\"issuer\"]\n is set in new UnrealIRCd\\Connection.\n* query() now waits for the reply for the correct id.","shortMessageHtmlLink":"On new connection, call rpc.set_issuer but don't wait for the reply."}},{"before":"bffb11f10883a792db123a6689a994432b62e300","after":"02da13a9d49686e9a6c6254c7318e3e145debbf3","ref":"refs/heads/main","pushedAt":"2023-04-27T07:31:14.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"syzop","name":"Bram Matthys","path":"/syzop","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8280959?s=80&v=4"},"commit":{"message":"Allow setting \"issuer\" in UnrealIRCd\\Connection options to save 1 round trip.\nWithout it, we will still do a ping-pong to force the connection.\nWith issuer, we don't need that ping-pong.","shortMessageHtmlLink":"Allow setting \"issuer\" in UnrealIRCd\\Connection options to save 1 rou…"}},{"before":"1fa5515c7556bd3f8af8ebaad2f5a191bf7b7eaa","after":"bffb11f10883a792db123a6689a994432b62e300","ref":"refs/heads/main","pushedAt":"2023-04-12T08:49:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"syzop","name":"Bram Matthys","path":"/syzop","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8280959?s=80&v=4"},"commit":{"message":"Add $rpc->rpc()->add_timer(); and ->del_timer()\n\nAdd a timer. Requires UnrealIRCd 6.1.0+\n@param timer_id Name of the timer (so you can .del_timer later)\n@param every_msec Every -this- milliseconds the command must be executed\n@param method The JSON-RPC method to execute (lowlevel name, eg \"stats.get\")\n@param params Parameters to the JSON-RPC call that will be executed, can be NULL\n@param id Set JSON-RPC id to be used in the timer, leave NULL for auto id.\n@return stdClass|array|bool\n\nExample usage would be:\n$rpc->rpc()->add_timer(\"timer\", 1000, \"stats.get\");","shortMessageHtmlLink":"Add $rpc->rpc()->add_timer(); and ->del_timer()"}},{"before":"1ef2e09fcc12f818c9aaf8e8ed186a451cb9003b","after":"1fa5515c7556bd3f8af8ebaad2f5a191bf7b7eaa","ref":"refs/heads/main","pushedAt":"2023-04-12T06:36:05.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"syzop","name":"Bram Matthys","path":"/syzop","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8280959?s=80&v=4"},"commit":{"message":"Actually return something ;)","shortMessageHtmlLink":"Actually return something ;)"}},{"before":"49faf2cf73ef44c01ef972a26f93525f6ec8e8ad","after":"1ef2e09fcc12f818c9aaf8e8ed186a451cb9003b","ref":"refs/heads/main","pushedAt":"2023-04-12T06:32:16.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"syzop","name":"Bram Matthys","path":"/syzop","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8280959?s=80&v=4"},"commit":{"message":"Add $rpc->stats()->get();","shortMessageHtmlLink":"Add $rpc->stats()->get();"}},{"before":"a3518a0a01aaab2b59db65f211db8bd84cf1441a","after":"49faf2cf73ef44c01ef972a26f93525f6ec8e8ad","ref":"refs/heads/main","pushedAt":"2023-04-10T15:59:03.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"syzop","name":"Bram Matthys","path":"/syzop","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8280959?s=80&v=4"},"commit":{"message":"Workaround library bug in eventloop(). Apparently if there is little\nactivity and we catch the timeout once and we continue, then if there\nis some other error like server killed or otherwise connection lost\nthen it will refire as a timeout, and this happens endlessly, so\nresulting in 100% CPU loop.\nWe now detect it by (far) too little execution time, ah well, it is\na workaround that works :D.\n\nSo this should be safe now (was introduced a previous commit,\nstill the same code):\n\n$rpc->log()->subscribe(Array(\"!debug\",\"all\"));\nwhile(1)\n{\n echo \"Waiting...\\n\";\n $res = $rpc->eventloop();\n var_export($res);\n echo \"\\n\";\n}","shortMessageHtmlLink":"Workaround library bug in eventloop(). Apparently if there is little"}},{"before":"c6e7dd34de3d34ac1552fed648c24b8e25357a72","after":"a3518a0a01aaab2b59db65f211db8bd84cf1441a","ref":"refs/heads/main","pushedAt":"2023-04-08T16:44:55.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"syzop","name":"Bram Matthys","path":"/syzop","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8280959?s=80&v=4"},"commit":{"message":"Add streaming JSON-LOG support. Requires UnrealIRCd 6.1.0+\n(post-rc1 git)\n\nExample:\n\n$rpc->log()->subscribe(Array(\"!debug\",\"all\"));\nwhile(1)\n{\n echo \"Waiting...\\n\";\n $res = $rpc->eventloop();\n var_export($res);\n echo \"\\n\";\n}\n\n$rpc->eventloop() will return NULL if there is no activity\nfor 10 seconds, so it is not entirely blocking. You can safely\nre-run $rpc->eventloop(); if return value === NULL.","shortMessageHtmlLink":"Add streaming JSON-LOG support. Requires UnrealIRCd 6.1.0+"}},{"before":"249f865d50d543087288a4fae426a444fd39ec24","after":"c6e7dd34de3d34ac1552fed648c24b8e25357a72","ref":"refs/heads/main","pushedAt":"2023-03-31T11:59:08.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"syzop","name":"Bram Matthys","path":"/syzop","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8280959?s=80&v=4"},"commit":{"message":"Add $conn->rpc->info() and $conn->rpc->set_issuer(\"NameOfLoggedInUser\")\nThe latter requires UnrealIRCd 6.0.8+","shortMessageHtmlLink":"Add $conn->rpc->info() and $conn->rpc->set_issuer(\"NameOfLoggedInUser\")"}},{"before":"1446a5db1b55608472c42aea7c5dc0a4c66558f1","after":"249f865d50d543087288a4fae426a444fd39ec24","ref":"refs/heads/main","pushedAt":"2023-03-27T11:39:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"syzop","name":"Bram Matthys","path":"/syzop","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8280959?s=80&v=4"},"commit":{"message":"User: add optional $object_detail_level argument to getAll() and get().\nSimilar to Channel getAll() and get() this specifies the amount of\ndetail that a server will return, see \"Structure of a client object\"\nat https://www.unrealircd.org/docs/JSON-RPC:User\n\nOnly works in UnrealIRCd 6.0.8 or later, simply ignored in earlier versions.\n\nIf you only need a minimal amount of information, consider using a\nlower object_detail_level. It saves both CPU and bandwidth.\n\nIn UnrealIRCd 6.0.8+ the user.get call returns the same information with\nthe default object_detail_level as in 6.0.7.\n\nFor the user.list call, UnrealIRCd 6.0.8 has a \"breaking change\":\nthe \"channels\" of the user are no longer returned with the default\nobject_detail_level value of 2. If you require that information, then\nset object_detail_level to 4, like: $rpc->user()->getAll(4);","shortMessageHtmlLink":"User: add optional $object_detail_level argument to getAll() and get()."}},{"before":"34d2c0ee953a43c2e262079b6226dbdf14a2cbec","after":"1446a5db1b55608472c42aea7c5dc0a4c66558f1","ref":"refs/heads/main","pushedAt":"2023-03-27T08:43:37.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"syzop","name":"Bram Matthys","path":"/syzop","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8280959?s=80&v=4"},"commit":{"message":"Permit Server->get() to get the current server settings.\nUnrealIRCd already supports this since 6.0.5 or 6.0.6.","shortMessageHtmlLink":"Permit Server->get() to get the current server settings."}},{"before":"13d5df3b55af42f9727d00c5e432d46d2709a5a8","after":"34d2c0ee953a43c2e262079b6226dbdf14a2cbec","ref":"refs/heads/main","pushedAt":"2023-03-27T08:33:46.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"syzop","name":"Bram Matthys","path":"/syzop","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8280959?s=80&v=4"},"commit":{"message":"Channel: add optional $object_detail_level argument to getAll() and get().\nThis decides the amount of detail that is returned, see under\n\"Structure of a channel\" at https://www.unrealircd.org/docs/JSON-RPC:Channel\n\nOnly works in UnrealIRCd 6.0.8 or later, simply ignored in earlier versions.","shortMessageHtmlLink":"Channel: add optional $object_detail_level argument to getAll() and g…"}},{"before":"1ba139aa355537ba99420a319528badfb7b04dec","after":"13d5df3b55af42f9727d00c5e432d46d2709a5a8","ref":"refs/heads/main","pushedAt":"2023-03-25T18:12:57.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"syzop","name":"Bram Matthys","path":"/syzop","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8280959?s=80&v=4"},"commit":{"message":"More README updates.","shortMessageHtmlLink":"More README updates."}},{"before":"c2f6f705dc2c699b40fdcd6405b12ad6f4523347","after":"1ba139aa355537ba99420a319528badfb7b04dec","ref":"refs/heads/main","pushedAt":"2023-03-25T18:10:49.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"syzop","name":"Bram Matthys","path":"/syzop","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8280959?s=80&v=4"},"commit":{"message":"Some more README updates","shortMessageHtmlLink":"Some more README updates"}},{"before":"c427a4ef706ed81c1a86f3326b5b323b6c8e5973","after":"c2f6f705dc2c699b40fdcd6405b12ad6f4523347","ref":"refs/heads/main","pushedAt":"2023-03-25T18:08:33.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"syzop","name":"Bram Matthys","path":"/syzop","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8280959?s=80&v=4"},"commit":{"message":"Update the README a bit now that things have settled.","shortMessageHtmlLink":"Update the README a bit now that things have settled."}},{"before":"57c1d592f076a9e06be89345cfe84d9e54a8664a","after":"c427a4ef706ed81c1a86f3326b5b323b6c8e5973","ref":"refs/heads/main","pushedAt":"2023-03-23T21:03:04.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ValwareIRC","name":"Valerie Liu","path":"/ValwareIRC","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/79415174?s=80&v=4"},"commit":{"message":"Update Channel.php\n\nFix incorrect method.","shortMessageHtmlLink":"Update Channel.php"}}],"hasNextPage":false,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAADKAKKDAA","startCursor":null,"endCursor":null}},"title":"Activity · unrealircd/unrealircd-rpc-php"}