diff --git a/CHANGELOG.md b/CHANGELOG.md index 46825266..f9819133 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All Notable changes to `x-prober` will be documented in this file +## 1.6.0 - 2018-09-03 +### Add +- Add new row of PHP loaded extensions (contribute by @jfcherng) +- Add zh-TW language (contribute by @jfcherng) +### Fix +- Fix Swoole extension checker condition error (contribute by @jfcherng) + ## 1.5.2 - 2018-09-02 ### Add - Add VPSSERVER server benchmark diff --git a/dist/prober.php b/dist/prober.php index a2e395dd..1a9cec9a 100644 --- a/dist/prober.php +++ b/dist/prober.php @@ -2,7 +2,7 @@ namespace InnStudio\Prober\PreDefine; \define('TIMER', \microtime(true)); \define('DEBUG', false); -\define('LANG', 'eyJodHRwczpcL1wvZ2l0aHViLmNvbVwva212YW5cL3gtcHJvYmVyIjp7InpoLUNOIjoiaHR0cDpcL1wvZ2l0aHViLmNvbVwva212YW5cL3gtcHJvYmVyIn0sIklOTiBTVFVESU8iOnsiemgtQ04iOiJJTk4gU1RVRElPIn0sImh0dHBzOlwvXC9pbm4tc3R1ZGlvLmNvbVwvcHJvYmVyIjp7InpoLUNOIjoiaHR0cHM6XC9cL2lubi1zdHVkaW8uY29tXC9wcm9iZXIifSwiWCBQcm9iZXIiOnsiemgtQ04iOiJYIFx1NjNhMlx1OTQ4OCJ9LCJ7QVBQX05BTUV9IGZvdW5kIHVwZGF0ZSEgVmVyc2lvbiB7QVBQX09MRF9WRVJTSU9OfSAmcmFycjsge0FQUF9ORVdfVkVSU0lPTn0iOnsiemgtQ04iOiJ7QVBQX05BTUV9XHU1M2QxXHU3M2IwXHU2NmY0XHU2NWIwXHVmZjAxXHU3MjQ4XHU2NzJjIHtBUFBfT0xEX1ZFUlNJT059ICZyYXJyOyB7QVBQX05FV19WRVJTSU9OfSJ9LCJVbmF2YWlsYWJsZSI6eyJ6aC1DTiI6Ilx1NGUwZFx1NTNlZlx1NzUyOCJ9LCJGaWxlIGNhbiBub3QgdXBkYXRlLiI6eyJ6aC1DTiI6Ilx1NjU4N1x1NGVmNlx1NjVlMFx1NmNkNVx1ODhhYlx1NjZmNFx1NjViMFx1MzAwMiJ9LCJVcGRhdGUgZmlsZSBub3QgZm91bmQuIjp7InpoLUNOIjoiXHU2NzJhXHU1M2QxXHU3M2IwXHU2NmY0XHU2NWIwXHU2NTg3XHU0ZWY2XHUzMDAyIn0sIlVwZGF0ZSBzdWNjZXNzLi4uIjp7InpoLUNOIjoiXHU2NmY0XHU2NWIwXHU2MjEwXHU1MjlmLi4uIn0sIlVwZGF0ZSBlcnJvci4iOnsiemgtQ04iOiJcdTY2ZjRcdTY1YjBcdTUxZmFcdTk1MTlcdTMwMDIifSwiVXBkYXRpbmcuLi4iOnsiemgtQ04iOiJcdTY2ZjRcdTY1YjBcdTRlMmQuLi4ifSwiU2VydmVyIHN0YXR1cyI6eyJ6aC1DTiI6Ilx1NjcwZFx1NTJhMVx1NTY2OFx1NzJiNlx1NjAwMSJ9LCJTeXN0ZW0gbG9hZCI6eyJ6aC1DTiI6Ilx1N2NmYlx1N2VkZlx1OGQxZlx1OGY3ZCJ9LCJOb3Qgc3VwcG9ydCBvbiBXaW5kb3dzIjp7InpoLUNOIjoiV2luZG93cyBcdTdjZmJcdTdlZGZcdTVjMWFcdTY3MmFcdTY1MmZcdTYzMDFcdThiZTVcdTUyOWZcdTgwZmQifSwiQ1BVIHVzYWdlIjp7InpoLUNOIjoiQ1BVIFx1NGY3Zlx1NzUyOFx1NzM4NyJ9LCJSZWFsIG1lbW9yeSB1c2FnZSI6eyJ6aC1DTiI6Ilx1NzcxZlx1NWI5ZVx1NTE4NVx1NWI1OFx1NGY3Zlx1NzUyOCJ9LCJSZWFsIHN3YXAgdXNhZ2UiOnsiemgtQ04iOiJTV0FQIFx1NGY3Zlx1NzUyOCJ9LCJOZXR3b3JrIHN0YXRzIjp7InpoLUNOIjoiXHU2ZDQxXHU5MWNmXHU3ZWRmXHU4YmExIn0sIlNlcnZlciBpbmZvcm1hdGlvbiI6eyJ6aC1DTiI6Ilx1NjcwZFx1NTJhMVx1NTY2OFx1NGZlMVx1NjA2ZiJ9LCJTZXJ2ZXIgdGltZSI6eyJ6aC1DTiI6Ilx1NjcwZFx1NTJhMVx1NTY2OFx1NjVmNlx1OTVmNCJ9LCJTZXJ2ZXIgdXB0aW1lIjp7InpoLUNOIjoiXHU2MzAxXHU3ZWVkXHU4ZmQwXHU4ODRjXHU2NWY2XHU5NWY0In0sIlNlcnZlciBJUCI6eyJ6aC1DTiI6Ilx1NjcwZFx1NTJhMVx1NTY2OCBJUCJ9LCJTZXJ2ZXIgbmFtZSI6eyJ6aC1DTiI6Ilx1NjcwZFx1NTJhMVx1NTY2OFx1NTQwZCJ9LCJTZXJ2ZXIgc29mdHdhcmUiOnsiemgtQ04iOiJcdTY3MGRcdTUyYTFcdTU2NjhcdThmNmZcdTRlZjYifSwiQ1BVIG1vZGVsIjp7InpoLUNOIjoiQ1BVIFx1NTc4Ylx1NTNmNyJ9LCJTZXJ2ZXIgT1MiOnsiemgtQ04iOiJcdTY3MGRcdTUyYTFcdTU2NjhcdTdjZmJcdTdlZGYifSwiU2NyaXB0IHBhdGgiOnsiemgtQ04iOiJcdTgxMWFcdTY3MmNcdThkZWZcdTVmODQifSwiRGlzayB1c2FnZSI6eyJ6aC1DTiI6Ilx1NzhjMVx1NzZkOFx1NGY3Zlx1NzUyOCJ9LCJQSFAgdmVyc2lvbiI6eyJ6aC1DTiI6IlBIUCBcdTcyNDhcdTY3MmMifSwiUEhQIGluZm9ybWF0aW9uIjp7InpoLUNOIjoiUEhQIFx1NGZlMVx1NjA2ZiJ9LCJQSFAgaW5mbyBkZXRhaWwiOnsiemgtQ04iOiJQSFAgXHU4YmU2XHU3ZWM2XHU0ZmUxXHU2MDZmIn0sIkNsaWNrIHRvIGNoZWNrIjp7InpoLUNOIjoiXHU3MGI5XHU1MWZiXHU2N2U1XHU3NzBiIn0sIlZlcnNpb24iOnsiemgtQ04iOiJcdTcyNDhcdTY3MmMifSwiU0FQSSBpbnRlcmZhY2UiOnsiemgtQ04iOiJTQVBJIFx1NjNhNVx1NTNlMyJ9LCJFcnJvciByZXBvcnRpbmciOnsiemgtQ04iOiJcdTk1MTlcdThiZWZcdTYyYTVcdTU0NGEifSwiTWF4IG1lbW9yeSBsaW1pdCI6eyJ6aC1DTiI6Ilx1OGZkMFx1ODg0Y1x1NTE4NVx1NWI1OFx1OTY1MFx1NTIzNiJ9LCJNYXggUE9TVCBzaXplIjp7InpoLUNOIjoiUE9TVCBcdTYzZDBcdTRlYTRcdTk2NTBcdTUyMzYifSwiTWF4IHVwbG9hZCBzaXplIjp7InpoLUNOIjoiXHU0ZTBhXHU0ZjIwXHU2NTg3XHU0ZWY2XHU5NjUwXHU1MjM2In0sIk1heCBpbnB1dCB2YXJpYWJsZXMiOnsiemgtQ04iOiJcdTYzZDBcdTRlYTRcdTg4NjhcdTUzNTVcdTk2NTBcdTUyMzYifSwiTWF4IGV4ZWN1dGlvbiB0aW1lIjp7InpoLUNOIjoiXHU4ZmQwXHU4ODRjXHU4ZDg1XHU2NWY2XHU3OWQyXHU2NTcwIn0sIlRpbWVvdXQgZm9yIHNvY2tldCI6eyJ6aC1DTiI6IlNvY2tldCBcdThkODVcdTY1ZjZcdTc5ZDJcdTY1NzAifSwiRGlzcGxheSBlcnJvcnMiOnsiemgtQ04iOiJcdTY2M2VcdTc5M2FcdTk1MTlcdThiZWYifSwiVHJlYXRtZW50IFVSTHMgZmlsZSI6eyJ6aC1DTiI6Ilx1NjU4N1x1NGVmNlx1OGZkY1x1N2FlZlx1NjI1M1x1NWYwMCJ9LCJTTVRQIHN1cHBvcnQiOnsiemgtQ04iOiJTTVRQIFx1NjUyZlx1NjMwMSJ9LCJEaXNhYmxlZCBmdW5jdGlvbnMiOnsiemgtQ04iOiJcdTc5ODFcdTc1MjhcdTc2ODRcdTUxZmRcdTY1NzAifSwiUEhQIGV4dGVuc2lvbnMiOnsiemgtQ04iOiJQSFAgXHU2MjY5XHU1YzU1In0sIiVzIGV4dGVuc2lvbiI6eyJ6aC1DTiI6IiVzIFx1NjI2OVx1NWM1NSJ9LCIlcyBlbmFibGVkIjp7InpoLUNOIjoiJXMgXHU1NDJmXHU3NTI4In0sIkRhdGFiYXNlIjp7InpoLUNOIjoiXHU2NTcwXHU2MzZlXHU1ZTkzIn0sIlNlcnZlciBCZW5jaG1hcmsiOnsiemgtQ04iOiJcdTY3MGRcdTUyYTFcdTU2NjhcdTYwMjdcdTgwZmRcdThkZDFcdTUyMDYifSwiQmVuY2htYXJrIjp7InpoLUNOIjoiXHU4ZGQxXHU1MjA2In0sIlx1ZDgzZFx1ZGNhMSBIaWdodCBpcyBiZXR0ZXIuIjp7InpoLUNOIjoiXHVkODNkXHVkY2ExIFx1NTIwNlx1NjU3MFx1OGQ4YVx1OWFkOFx1OGQ4YVx1NTk3ZFx1MzAwMiJ9LCJFcnJvciwgY2xpY2sgdG8gcmV0cnkuIjp7InpoLUNOIjoiXHU5NTE5XHU4YmVmXHVmZjBjXHU3MGI5XHU1MWZiXHU5MWNkXHU4YmQ1In0sIlBsZWFzZSB3YWl0ICVkIHNlY29uZHMiOnsiemgtQ04iOiJcdThiZjdcdTdiNDlcdTVmODUgJWQgXHU3OWQyIn0sIkxvYWRpbmcuLi4iOnsiemgtQ04iOiJcdTUyYTBcdThmN2RcdTRlMmRcdTIwMjZcdTIwMjYifSwiTXkgc2VydmVyIjp7InpoLUNOIjoiXHU2MjExXHU3Njg0XHU2NzBkXHU1MmExXHU1NjY4In0sIkNsaWNrIHRvIHRlc3QiOnsiemgtQ04iOiJcdTcwYjlcdTUxZmJcdTZkNGJcdThiZDUifSwiQWxpeXVuXC9FQ1NcL1BIUDciOnsiemgtQ04iOiJcdTk2M2ZcdTkxY2NcdTRlOTFcL0VDU1wvUEhQNyJ9LCJWdWx0clwvUEhQNyI6eyJ6aC1DTiI6IlZ1bHRyXC9QSFA3In0sIkFueU5vZGVcL0hERFwvUEhQNyI6eyJ6aC1DTiI6IkFueU5vZGVcL0hERFwvUEhQNyJ9LCJBbGl5dW5cL0ludFwvUEhQNSI6eyJ6aC1DTiI6Ilx1OTYzZlx1OTFjY1x1NGU5MVwvXHU1NmZkXHU5NjQ1XHU3MjQ4XC9QSFA1In0sIlRlbmNlbnRcL1BIUDciOnsiemgtQ04iOiJcdTgxN2VcdThiYWZcdTRlOTFcL1BIUDcifSwiQW1hem9uXC9FQzJcL1BIUDciOnsiemgtQ04iOiJcdTRlOWFcdTlhNmNcdTkwMGFcL0VDMlwvUEhQNyJ9LCJNeSBpbmZvcm1hdGlvbiI6eyJ6aC1DTiI6Ilx1NjIxMVx1NzY4NFx1NGZlMVx1NjA2ZiJ9LCJNeSBJUCI6eyJ6aC1DTiI6Ilx1NjIxMVx1NzY4NCBJUCJ9LCJNeSBVQSI6eyJ6aC1DTiI6Ilx1NjIxMVx1NzY4NCBVQSJ9LCJHZW5lcmF0b3IgJXMiOnsiemgtQ04iOiJcdThiZTVcdTk4NzVcdTk3NjJcdTc1MzEgJXMgXHU3NTFmXHU2MjEwIn0sIkF1dGhvciAlcyI6eyJ6aC1DTiI6Ilx1NGY1Y1x1ODAwNVx1NGUzYSAlcyJ9fQ=='); +\define('LANG', 'eyJodHRwczpcL1wvZ2l0aHViLmNvbVwva212YW5cL3gtcHJvYmVyIjp7InpoLUNOIjoiaHR0cDpcL1wvZ2l0aHViLmNvbVwva212YW5cL3gtcHJvYmVyIiwiemgtVFciOiJodHRwOlwvXC9naXRodWIuY29tXC9rbXZhblwveC1wcm9iZXIifSwiSU5OIFNUVURJTyI6eyJ6aC1DTiI6IklOTiBTVFVESU8iLCJ6aC1UVyI6IklOTiBTVFVESU8ifSwiaHR0cHM6XC9cL2lubi1zdHVkaW8uY29tXC9wcm9iZXIiOnsiemgtQ04iOiJodHRwczpcL1wvaW5uLXN0dWRpby5jb21cL3Byb2JlciIsInpoLVRXIjoiaHR0cHM6XC9cL2lubi1zdHVkaW8uY29tXC9wcm9iZXIifSwiWCBQcm9iZXIiOnsiemgtQ04iOiJYIFx1NjNhMlx1OTQ4OCIsInpoLVRXIjoiWCBcdTYzYTJcdTkxZGQifSwie0FQUF9OQU1FfSBmb3VuZCB1cGRhdGUhIFZlcnNpb24ge0FQUF9PTERfVkVSU0lPTn0gJnJhcnI7IHtBUFBfTkVXX1ZFUlNJT059Ijp7InpoLUNOIjoie0FQUF9OQU1FfVx1NTNkMVx1NzNiMFx1NjZmNFx1NjViMFx1ZmYwMVx1NzI0OFx1NjcyYyB7QVBQX09MRF9WRVJTSU9OfSAmcmFycjsge0FQUF9ORVdfVkVSU0lPTn0iLCJ6aC1UVyI6IntBUFBfTkFNRX1cdTc2N2NcdTczZmVcdTY2ZjRcdTY1YjBcdWZmMDFcdTcyNDhcdTY3MmMge0FQUF9PTERfVkVSU0lPTn0gJnJhcnI7IHtBUFBfTkVXX1ZFUlNJT059In0sIlVuYXZhaWxhYmxlIjp7InpoLUNOIjoiXHU0ZTBkXHU1M2VmXHU3NTI4IiwiemgtVFciOiJcdTRlMGRcdTUzZWZcdTc1MjgifSwiRmlsZSBjYW4gbm90IHVwZGF0ZS4iOnsiemgtQ04iOiJcdTY1ODdcdTRlZjZcdTY1ZTBcdTZjZDVcdTg4YWJcdTY2ZjRcdTY1YjBcdTMwMDIiLCJ6aC1UVyI6Ilx1NmE5NFx1Njg0OFx1NzEyMVx1NmNkNVx1ODhhYlx1NjZmNFx1NjViMFx1MzAwMiJ9LCJVcGRhdGUgZmlsZSBub3QgZm91bmQuIjp7InpoLUNOIjoiXHU2NzJhXHU1M2QxXHU3M2IwXHU2NmY0XHU2NWIwXHU2NTg3XHU0ZWY2XHUzMDAyIiwiemgtVFciOiJcdTY3MmFcdTc2N2NcdTczZmVcdTY2ZjRcdTY1YjBcdTZhOTRcdTY4NDhcdTMwMDIifSwiVXBkYXRlIHN1Y2Nlc3MuLi4iOnsiemgtQ04iOiJcdTY2ZjRcdTY1YjBcdTYyMTBcdTUyOWYuLi4iLCJ6aC1UVyI6Ilx1NjZmNFx1NjViMFx1NjIxMFx1NTI5Zi4uLiJ9LCJVcGRhdGUgZXJyb3IuIjp7InpoLUNOIjoiXHU2NmY0XHU2NWIwXHU1MWZhXHU5NTE5XHUzMDAyIiwiemgtVFciOiJcdTY2ZjRcdTY1YjBcdTUxZmFcdTkzMmZcdTMwMDIifSwiVXBkYXRpbmcuLi4iOnsiemgtQ04iOiJcdTY2ZjRcdTY1YjBcdTRlMmQuLi4iLCJ6aC1UVyI6Ilx1NjZmNFx1NjViMFx1NGUyZC4uLiJ9LCJTZXJ2ZXIgc3RhdHVzIjp7InpoLUNOIjoiXHU2NzBkXHU1MmExXHU1NjY4XHU3MmI2XHU2MDAxIiwiemgtVFciOiJcdTRmM2FcdTY3MGRcdTU2NjhcdTcyYzBcdTYxNGIifSwiU3lzdGVtIGxvYWQiOnsiemgtQ04iOiJcdTdjZmJcdTdlZGZcdThkMWZcdThmN2QiLCJ6aC1UVyI6Ilx1N2NmYlx1N2Q3MVx1OGNhMFx1OGYwOSJ9LCJOb3Qgc3VwcG9ydCBvbiBXaW5kb3dzIjp7InpoLUNOIjoiV2luZG93cyBcdTdjZmJcdTdlZGZcdTVjMWFcdTY3MmFcdTY1MmZcdTYzMDFcdThiZTVcdTUyOWZcdTgwZmQiLCJ6aC1UVyI6IldpbmRvd3MgXHU3Y2ZiXHU3ZDcxXHU1YzFhXHU2NzJhXHU2NTJmXHU2M2Y0XHU4YTcyXHU1MjlmXHU4MGZkIn0sIkNQVSB1c2FnZSI6eyJ6aC1DTiI6IkNQVSBcdTRmN2ZcdTc1MjhcdTczODciLCJ6aC1UVyI6IkNQVSBcdTRmN2ZcdTc1MjhcdTczODcifSwiUmVhbCBtZW1vcnkgdXNhZ2UiOnsiemgtQ04iOiJcdTc3MWZcdTViOWVcdTUxODVcdTViNThcdTRmN2ZcdTc1MjgiLCJ6aC1UVyI6Ilx1NzcxZlx1NWJlNlx1OGExOFx1NjFiNlx1OWFkNFx1NGY3Zlx1NzUyOCJ9LCJSZWFsIHN3YXAgdXNhZ2UiOnsiemgtQ04iOiJTV0FQIFx1NGY3Zlx1NzUyOCIsInpoLVRXIjoiU1dBUCBcdTRmN2ZcdTc1MjgifSwiTmV0d29yayBzdGF0cyI6eyJ6aC1DTiI6Ilx1NmQ0MVx1OTFjZlx1N2VkZlx1OGJhMSIsInpoLVRXIjoiXHU2ZDQxXHU5MWNmXHU3ZDcxXHU4YTA4In0sIlNlcnZlciBpbmZvcm1hdGlvbiI6eyJ6aC1DTiI6Ilx1NjcwZFx1NTJhMVx1NTY2OFx1NGZlMVx1NjA2ZiIsInpoLVRXIjoiXHU0ZjNhXHU2NzBkXHU1NjY4XHU4YTBhXHU2MDZmIn0sIlNlcnZlciB0aW1lIjp7InpoLUNOIjoiXHU2NzBkXHU1MmExXHU1NjY4XHU2NWY2XHU5NWY0IiwiemgtVFciOiJcdTRmM2FcdTY3MGRcdTU2NjhcdTY2NDJcdTk1OTMifSwiU2VydmVyIHVwdGltZSI6eyJ6aC1DTiI6Ilx1NjMwMVx1N2VlZFx1OGZkMFx1ODg0Y1x1NjVmNlx1OTVmNCIsInpoLVRXIjoiXHU2MzAxXHU3ZThjXHU0ZTBhXHU3ZGRhXHU2NjQyXHU5NTkzIn0sIlNlcnZlciBJUCI6eyJ6aC1DTiI6Ilx1NjcwZFx1NTJhMVx1NTY2OCBJUCIsInpoLVRXIjoiXHU0ZjNhXHU2NzBkXHU1NjY4IElQIn0sIlNlcnZlciBuYW1lIjp7InpoLUNOIjoiXHU2NzBkXHU1MmExXHU1NjY4XHU1NDBkIiwiemgtVFciOiJcdTRmM2FcdTY3MGRcdTU2NjhcdTU0MGQifSwiU2VydmVyIHNvZnR3YXJlIjp7InpoLUNOIjoiXHU2NzBkXHU1MmExXHU1NjY4XHU4ZjZmXHU0ZWY2IiwiemgtVFciOiJcdTRmM2FcdTY3MGRcdTU2NjhcdThlZGZcdTlhZDQifSwiQ1BVIG1vZGVsIjp7InpoLUNOIjoiQ1BVIFx1NTc4Ylx1NTNmNyIsInpoLVRXIjoiQ1BVIFx1NTc4Ylx1ODY1ZiJ9LCJTZXJ2ZXIgT1MiOnsiemgtQ04iOiJcdTY3MGRcdTUyYTFcdTU2NjhcdTdjZmJcdTdlZGYiLCJ6aC1UVyI6Ilx1NGYzYVx1NjcwZFx1NTY2OFx1N2NmYlx1N2Q3MSJ9LCJTY3JpcHQgcGF0aCI6eyJ6aC1DTiI6Ilx1ODExYVx1NjcyY1x1OGRlZlx1NWY4NCIsInpoLVRXIjoiXHU4MTczXHU2NzJjXHU4ZGVmXHU1ZjkxIn0sIkRpc2sgdXNhZ2UiOnsiemgtQ04iOiJcdTc4YzFcdTc2ZDhcdTRmN2ZcdTc1MjgiLCJ6aC1UVyI6Ilx1NzhjMVx1Nzg5Zlx1NGY3Zlx1NzUyOCJ9LCJQSFAgdmVyc2lvbiI6eyJ6aC1DTiI6IlBIUCBcdTcyNDhcdTY3MmMiLCJ6aC1UVyI6IlBIUCBcdTcyNDhcdTY3MmMifSwiUEhQIGluZm9ybWF0aW9uIjp7InpoLUNOIjoiUEhQIFx1NGZlMVx1NjA2ZiIsInpoLVRXIjoiUEhQIFx1OGEwYVx1NjA2ZiJ9LCJQSFAgaW5mbyBkZXRhaWwiOnsiemgtQ04iOiJQSFAgXHU4YmU2XHU3ZWM2XHU0ZmUxXHU2MDZmIiwiemgtVFciOiJQSFAgXHU4YTczXHU3ZDMwXHU4YTBhXHU2MDZmIn0sIkNsaWNrIHRvIGNoZWNrIjp7InpoLUNOIjoiXHU3MGI5XHU1MWZiXHU2N2U1XHU3NzBiIiwiemgtVFciOiJcdTllZGVcdTY0Y2FcdTY3ZTVcdTc3MGIifSwiVmVyc2lvbiI6eyJ6aC1DTiI6Ilx1NzI0OFx1NjcyYyIsInpoLVRXIjoiXHU3MjQ4XHU2NzJjIn0sIlNBUEkgaW50ZXJmYWNlIjp7InpoLUNOIjoiU0FQSSBcdTYzYTVcdTUzZTMiLCJ6aC1UVyI6IlNBUEkgXHU0ZWNiXHU5NzYyIn0sIkVycm9yIHJlcG9ydGluZyI6eyJ6aC1DTiI6Ilx1OTUxOVx1OGJlZlx1NjJhNVx1NTQ0YSIsInpoLVRXIjoiXHU5MzJmXHU4YWE0XHU1ODMxXHU1NDRhIn0sIk1heCBtZW1vcnkgbGltaXQiOnsiemgtQ04iOiJcdThmZDBcdTg4NGNcdTUxODVcdTViNThcdTk2NTBcdTUyMzYiLCJ6aC1UVyI6Ilx1NTdmN1x1ODg0Y1x1OGExOFx1NjFiNlx1OWFkNFx1OTY1MFx1NTIzNiJ9LCJNYXggUE9TVCBzaXplIjp7InpoLUNOIjoiUE9TVCBcdTYzZDBcdTRlYTRcdTk2NTBcdTUyMzYiLCJ6aC1UVyI6IlBPU1QgXHU2M2QwXHU0ZWE0XHU5NjUwXHU1MjM2In0sIk1heCB1cGxvYWQgc2l6ZSI6eyJ6aC1DTiI6Ilx1NGUwYVx1NGYyMFx1NjU4N1x1NGVmNlx1OTY1MFx1NTIzNiIsInpoLVRXIjoiXHU0ZTBhXHU1MGIzXHU2YTk0XHU2ODQ4XHU5NjUwXHU1MjM2In0sIk1heCBpbnB1dCB2YXJpYWJsZXMiOnsiemgtQ04iOiJcdTYzZDBcdTRlYTRcdTg4NjhcdTUzNTVcdTk2NTBcdTUyMzYiLCJ6aC1UVyI6Ilx1NjNkMFx1NGVhNFx1ODg2OFx1NTVhZVx1OTY1MFx1NTIzNiJ9LCJNYXggZXhlY3V0aW9uIHRpbWUiOnsiemgtQ04iOiJcdThmZDBcdTg4NGNcdThkODVcdTY1ZjZcdTc5ZDJcdTY1NzAiLCJ6aC1UVyI6Ilx1NTdmN1x1ODg0Y1x1OGQ4NVx1NjY0Mlx1NzlkMlx1NjU3OCJ9LCJUaW1lb3V0IGZvciBzb2NrZXQiOnsiemgtQ04iOiJTb2NrZXQgXHU4ZDg1XHU2NWY2XHU3OWQyXHU2NTcwIiwiemgtVFciOiJTb2NrZXQgXHU4ZDg1XHU2NjQyXHU3OWQyXHU2NTc4In0sIkRpc3BsYXkgZXJyb3JzIjp7InpoLUNOIjoiXHU2NjNlXHU3OTNhXHU5NTE5XHU4YmVmIiwiemgtVFciOiJcdTk4NmZcdTc5M2FcdTkzMmZcdThhYTQifSwiVHJlYXRtZW50IFVSTHMgZmlsZSI6eyJ6aC1DTiI6Ilx1NjU4N1x1NGVmNlx1OGZkY1x1N2FlZlx1NjI1M1x1NWYwMCIsInpoLVRXIjoiXHU2YTk0XHU2ODQ4XHU5MDYwXHU3YWVmXHU2MjUzXHU5NThiIn0sIlNNVFAgc3VwcG9ydCI6eyJ6aC1DTiI6IlNNVFAgXHU2NTJmXHU2MzAxIiwiemgtVFciOiJTTVRQIFx1NjUyZlx1NjNmNCJ9LCJEaXNhYmxlZCBmdW5jdGlvbnMiOnsiemgtQ04iOiJcdTc5ODFcdTc1MjhcdTc2ODRcdTUxZmRcdTY1NzAiLCJ6aC1UVyI6Ilx1Nzk4MVx1NzUyOFx1NzY4NFx1NTFmZFx1NjU3OCJ9LCJQSFAgZXh0ZW5zaW9ucyI6eyJ6aC1DTiI6IlBIUCBcdTYyNjlcdTVjNTUiLCJ6aC1UVyI6IlBIUCBcdTY0ZjRcdTVjNTUifSwiJXMgZXh0ZW5zaW9uIjp7InpoLUNOIjoiJXMgXHU2MjY5XHU1YzU1IiwiemgtVFciOiIlcyBcdTY0ZjRcdTVjNTUifSwiJXMgZW5hYmxlZCI6eyJ6aC1DTiI6IiVzIFx1NTQyZlx1NzUyOCIsInpoLVRXIjoiJXMgXHU1NTVmXHU3NTI4In0sIkxvYWRlZCBleHRlbnNpb25zIjp7InpoLUNOIjoiXHU1MmEwXHU4ZjdkXHU3Njg0IFBIUCBcdTYyNjlcdTVjNTUiLCJ6aC1UVyI6Ilx1OGYwOVx1NTE2NVx1NzY4NCBQSFAgXHU2NGY0XHU1YzU1In0sIkRhdGFiYXNlIjp7InpoLUNOIjoiXHU2NTcwXHU2MzZlXHU1ZTkzIiwiemgtVFciOiJcdThjYzdcdTY1OTlcdTVlYWIifSwiU2VydmVyIEJlbmNobWFyayI6eyJ6aC1DTiI6Ilx1NjcwZFx1NTJhMVx1NTY2OFx1NjAyN1x1ODBmZFx1OGRkMVx1NTIwNiIsInpoLVRXIjoiXHU0ZjNhXHU2NzBkXHU1NjY4XHU2MDI3XHU4MGZkXHU4ZGQxXHU1MjA2In0sIkJlbmNobWFyayI6eyJ6aC1DTiI6Ilx1OGRkMVx1NTIwNiIsInpoLVRXIjoiXHU4ZGQxXHU1MjA2In0sIlx1ZDgzZFx1ZGNhMSBIaWdodCBpcyBiZXR0ZXIuIjp7InpoLUNOIjoiXHVkODNkXHVkY2ExIFx1NTIwNlx1NjU3MFx1OGQ4YVx1OWFkOFx1OGQ4YVx1NTk3ZFx1MzAwMiIsInpoLVRXIjoiXHVkODNkXHVkY2ExIFx1NTIwNlx1NjU3OFx1OGQ4YVx1OWFkOFx1OGQ4YVx1NTk3ZFx1MzAwMiJ9LCJFcnJvciwgY2xpY2sgdG8gcmV0cnkuIjp7InpoLUNOIjoiXHU5NTE5XHU4YmVmXHVmZjBjXHU3MGI5XHU1MWZiXHU5MWNkXHU4YmQ1IiwiemgtVFciOiJcdTkzMmZcdThhYTRcdWZmMGNcdTllZGVcdTY0Y2FcdTkxY2RcdThhNjYifSwiUGxlYXNlIHdhaXQgJWQgc2Vjb25kcyI6eyJ6aC1DTiI6Ilx1OGJmN1x1N2I0OVx1NWY4NSAlZCBcdTc5ZDIiLCJ6aC1UVyI6Ilx1OGFjYlx1N2I0OVx1NWY4NSAlZCBcdTc5ZDIifSwiTG9hZGluZy4uLiI6eyJ6aC1DTiI6Ilx1NTJhMFx1OGY3ZFx1NGUyZFx1MjAyNlx1MjAyNiIsInpoLVRXIjoiXHU4ZjA5XHU1MTY1XHU0ZTJkXHUyMDI2XHUyMDI2In0sIk15IHNlcnZlciI6eyJ6aC1DTiI6Ilx1NjIxMVx1NzY4NFx1NjcwZFx1NTJhMVx1NTY2OCIsInpoLVRXIjoiXHU2MjExXHU3Njg0XHU0ZjNhXHU2NzBkXHU1NjY4In0sIkNsaWNrIHRvIHRlc3QiOnsiemgtQ04iOiJcdTcwYjlcdTUxZmJcdTZkNGJcdThiZDUiLCJ6aC1UVyI6Ilx1OWVkZVx1NjRjYVx1NmUyY1x1OGE2NiJ9LCJBbGl5dW5cL0VDU1wvUEhQNyI6eyJ6aC1DTiI6Ilx1OTYzZlx1OTFjY1x1NGU5MVwvRUNTXC9QSFA3IiwiemgtVFciOiJcdTk2M2ZcdTkxY2NcdTk2ZjJcL0VDU1wvUEhQNyJ9LCJWdWx0clwvUEhQNyI6eyJ6aC1DTiI6IlZ1bHRyXC9QSFA3IiwiemgtVFciOiJWdWx0clwvUEhQNyJ9LCJBbnlOb2RlXC9IRERcL1BIUDciOnsiemgtQ04iOiJBbnlOb2RlXC9IRERcL1BIUDciLCJ6aC1UVyI6IkFueU5vZGVcL0hERFwvUEhQNyJ9LCJBbGl5dW5cL0ludFwvUEhQNSI6eyJ6aC1DTiI6Ilx1OTYzZlx1OTFjY1x1NGU5MVwvXHU1NmZkXHU5NjQ1XHU3MjQ4XC9QSFA1IiwiemgtVFciOiJcdTk2M2ZcdTkxY2NcdTk2ZjJcL1x1NTcwYlx1OTY5Ylx1NzI0OFwvUEhQNSJ9LCJUZW5jZW50XC9QSFA3Ijp7InpoLUNOIjoiXHU4MTdlXHU4YmFmXHU0ZTkxXC9QSFA3IiwiemgtVFciOiJcdTlhMzBcdThhMGFcdTk2ZjJcL1BIUDcifSwiQW1hem9uXC9FQzJcL1BIUDciOnsiemgtQ04iOiJcdTRlOWFcdTlhNmNcdTkwMGFcL0VDMlwvUEhQNyIsInpoLVRXIjoiXHU0ZTllXHU5OWFjXHU5MDVjXC9FQzJcL1BIUDcifSwiTXkgaW5mb3JtYXRpb24iOnsiemgtQ04iOiJcdTYyMTFcdTc2ODRcdTRmZTFcdTYwNmYiLCJ6aC1UVyI6Ilx1NjIxMVx1NzY4NFx1OGEwYVx1NjA2ZiJ9LCJNeSBJUCI6eyJ6aC1DTiI6Ilx1NjIxMVx1NzY4NCBJUCIsInpoLVRXIjoiXHU2MjExXHU3Njg0IElQIn0sIk15IFVBIjp7InpoLUNOIjoiXHU2MjExXHU3Njg0IFVBIiwiemgtVFciOiJcdTYyMTFcdTc2ODQgVUEifSwiR2VuZXJhdG9yICVzIjp7InpoLUNOIjoiXHU4YmU1XHU5ODc1XHU5NzYyXHU3NTMxICVzIFx1NzUxZlx1NjIxMCIsInpoLVRXIjoiXHU4YTcyXHU5ODAxXHU5NzYyXHU3NTMxICVzIFx1NzUxZlx1NjIxMCJ9LCJBdXRob3IgJXMiOnsiemgtQ04iOiJcdTRmNWNcdTgwMDVcdTRlM2EgJXMiLCJ6aC1UVyI6Ilx1NGY1Y1x1ODAwNVx1NzBiYSAlcyJ9fQ=='); namespace InnStudio\Prober\Nav; use InnStudio\Prober\Events\Api as Events; class Nav { private $ID = 'nav'; public function __construct() { Events::on('script', array($this, 'filterScript')); Events::on('style', array($this, 'filterStyle')); } public function filterStyle() { echo << .nav { @@ -76,7 +76,7 @@ {$this->getContent()} HTML; -} private function getContent() { $items = array( array( 'label' => \sprintf(I18n::_('%s extension'), 'Memcache'), 'content' => Helper::getIni(0, \extension_loaded('memcache') && \class_exists('\\Memcache')), ), array( 'label' => \sprintf(I18n::_('%s extension'), 'Memcached'), 'content' => Helper::getIni(0, \extension_loaded('memcached') && \class_exists('\\Memcached')), ), array( 'label' => \sprintf(I18n::_('%s extension'), 'Redis'), 'content' => Helper::getIni(0, \extension_loaded('redis') && \class_exists('\\Redis')), ), array( 'label' => \sprintf(I18n::_('%s extension'), 'Opcache'), 'content' => Helper::getIni(0, \function_exists('\\opcache_get_configuration')), ), array( 'label' => \sprintf(I18n::_('%s enabled'), 'Opcache'), 'content' => Helper::getIni(0, $this->isOpcEnabled()), ), array( 'label' => \sprintf(I18n::_('%s extension'), 'Swoole'), 'content' => Helper::getIni(0, \extension_loaded('Swoole') && \class_exists('\\Swoole')), ), array( 'label' => \sprintf(I18n::_('%s extension'), 'Imagick'), 'content' => Helper::getIni(0, \extension_loaded('Imagick') && \class_exists('\\Imagick')), ), array( 'label' => \sprintf(I18n::_('%s extension'), 'Exif'), 'content' => Helper::getIni(0, \extension_loaded('Exif') && \function_exists('\\exif_imagetype')), ), array( 'label' => \sprintf(I18n::_('%s extension'), 'Sockets'), 'content' => Helper::getIni(0, \extension_loaded('Sockets') && \function_exists('\\socket_accept')), ), array( 'label' => \sprintf(I18n::_('%s extension'), 'MySQLi'), 'content' => Helper::getIni(0, \extension_loaded('MySQLi') && \class_exists('\\mysqli')), ), array( 'label' => \sprintf(I18n::_('%s extension'), 'Zip'), 'content' => Helper::getIni(0, \extension_loaded('Zip') && \class_exists('\\ZipArchive')), ), array( 'label' => \sprintf(I18n::_('%s extension'), 'Multibyte String'), 'content' => Helper::getIni(0, \extension_loaded('mbstring') && \function_exists('\\mb_substr')), ), array( 'label' => I18n::_('Zend Optimizer'), 'content' => Helper::getIni(0, \function_exists('zend_optimizer_version')), ), ); $itemsOrder = array(); foreach ($items as $item) { $itemsOrder[] = $item['label']; } \array_multisort($items, $itemsOrder); $content = ''; foreach ($items as $item) { $title = isset($item['title']) ? "title=\"{$item['title']}\"" : ''; $col = isset($item['col']) ? $item['col'] : '1-3'; $id = isset($item['id']) ? "id=\"{$item['id']}\"" : ''; $content .= << \sprintf(I18n::_('%s extension'), 'Memcache'), 'content' => Helper::getIni(0, \extension_loaded('memcache') && \class_exists('\\Memcache')), ), array( 'label' => \sprintf(I18n::_('%s extension'), 'Memcached'), 'content' => Helper::getIni(0, \extension_loaded('memcached') && \class_exists('\\Memcached')), ), array( 'label' => \sprintf(I18n::_('%s extension'), 'Redis'), 'content' => Helper::getIni(0, \extension_loaded('redis') && \class_exists('\\Redis')), ), array( 'label' => \sprintf(I18n::_('%s extension'), 'Opcache'), 'content' => Helper::getIni(0, \function_exists('\\opcache_get_configuration')), ), array( 'label' => \sprintf(I18n::_('%s enabled'), 'Opcache'), 'content' => Helper::getIni(0, $this->isOpcEnabled()), ), array( 'label' => \sprintf(I18n::_('%s extension'), 'Swoole'), 'content' => Helper::getIni(0, \extension_loaded('Swoole') && \function_exists('\\swoole_version')), ), array( 'label' => \sprintf(I18n::_('%s extension'), 'Imagick'), 'content' => Helper::getIni(0, \extension_loaded('Imagick') && \class_exists('\\Imagick')), ), array( 'label' => \sprintf(I18n::_('%s extension'), 'Exif'), 'content' => Helper::getIni(0, \extension_loaded('Exif') && \function_exists('\\exif_imagetype')), ), array( 'label' => \sprintf(I18n::_('%s extension'), 'Sockets'), 'content' => Helper::getIni(0, \extension_loaded('Sockets') && \function_exists('\\socket_accept')), ), array( 'label' => \sprintf(I18n::_('%s extension'), 'MySQLi'), 'content' => Helper::getIni(0, \extension_loaded('MySQLi') && \class_exists('\\mysqli')), ), array( 'label' => \sprintf(I18n::_('%s extension'), 'Zip'), 'content' => Helper::getIni(0, \extension_loaded('Zip') && \class_exists('\\ZipArchive')), ), array( 'label' => \sprintf(I18n::_('%s extension'), 'Multibyte String'), 'content' => Helper::getIni(0, \extension_loaded('mbstring') && \function_exists('\\mb_substr')), ), array( 'label' => I18n::_('Zend Optimizer'), 'content' => Helper::getIni(0, \function_exists('zend_optimizer_version')), ), array( 'col' => '1-1', 'label' => I18n::_('Loaded extensions'), 'title' => 'loaded_extensions', 'content' => \implode(', ', $this->getLoadedExtensions(true)) ?: '-', ), ); $itemsOrder = array(); foreach ($items as $item) { $itemsOrder[] = $item['label']; } \array_multisort($items, $itemsOrder); $content = ''; foreach ($items as $item) { $title = isset($item['title']) ? "title=\"{$item['title']}\"" : ''; $col = isset($item['col']) ? $item['col'] : '1-3'; $id = isset($item['id']) ? "id=\"{$item['id']}\"" : ''; $content .= <<