Plugin Directory

Changeset 3081041


Ignore:
Timestamp:
05/03/2024 03:28:31 PM (2 years ago)
Author:
andaniel05
Message:

tagging version 1.0.3

Location:
sms-gateway-press
Files:
12 edited
1 copied

Legend:

Unmodified
Added
Removed
  • sms-gateway-press/tags/1.0.3/plugin.php

    r3037249 r3081041  
    44 * Plugin URI:   https://www.sms-gateway-press.com
    55 * Description:  Self-hosted SMS Gateway. Send SMS with your own Android devices across your WordPress site.
    6  * Version:      1.0.2
     6 * Version:      1.0.3
    77 * Requires PHP: 7.3
    88 * Author:       Andy Daniel Navarro Taño
  • sms-gateway-press/tags/1.0.3/private/class-rest-api.php

    r3036929 r3081041  
    142142    public static function get_device_actions( WP_REST_Request $request ): void {
    143143        $request_time       = sanitize_text_field( $_SERVER['REQUEST_TIME'] );
    144         $max_execution_time = ini_get( 'max_execution_time' );
     144        $max_execution_time = 30;
    145145        $request_time_limit = $request_time + $max_execution_time;
    146146        $polling_time_limit = $request_time_limit - 2;
    147147        $device_id          = $request->get_header( 'X-Device-Id' );
    148 
    149         wp_suspend_cache_addition();
     148        $now                = time();
     149        $polling_expires_at = get_post_meta( $device_id, Device::META_KEY_POLLING_EXPIRES_AT, true );
     150
     151        if ( is_numeric( $polling_expires_at ) && $now < $polling_expires_at ) {
     152            wp_send_json_error( null, 403 );
     153            wp_die();
     154        }
     155
     156        update_post_meta( $device_id, Device::META_KEY_POLLING_EXPIRES_AT, $polling_time_limit );
     157
     158        register_shutdown_function(
     159            function () use ( $device_id ) {
     160                delete_post_meta( $device_id, Device::META_KEY_POLLING_EXPIRES_AT );
     161            }
     162        );
     163
     164        wp_suspend_cache_addition( true );
     165        wp_cache_flush();
    150166
    151167        // start the long polling.
    152168        while ( time() <= $polling_time_limit ) {
    153             if ( connection_aborted() ) {
    154                 exit;
     169            $now = time();
     170
     171            update_post_meta( $device_id, Device::META_KEY_LAST_ACTIVITY_AT, $now );
     172
     173            $sms_sending_in_device_posts = get_posts(
     174                array(
     175                    'post_type'   => Sms::POST_TYPE,
     176                    'numberposts' => -1,
     177                    'meta_query'  => array(
     178                        'relation' => 'AND',
     179                        array(
     180                            'key'     => Sms::META_KEY_SEND_AT,
     181                            'compare' => '<=',
     182                            'value'   => $now,
     183                            'type'    => 'NUMERIC',
     184                        ),
     185                        array(
     186                            'key'     => Sms::META_KEY_EXPIRES_AT,
     187                            'compare' => '>',
     188                            'value'   => $now,
     189                            'type'    => 'NUMERIC',
     190                        ),
     191                        array(
     192                            'key'     => Sms::META_KEY_SENT_AT,
     193                            'compare' => 'NOT EXISTS',
     194                        ),
     195                        array(
     196                            'key'   => Sms::META_KEY_SENDING_IN_DEVICE,
     197                            'value' => $device_id,
     198                            'type'  => 'NUMERIC',
     199                        ),
     200                        array(
     201                            'key'     => Sms::META_KEY_INACTIVE_AT,
     202                            'compare' => '>',
     203                            'value'   => $now,
     204                            'type'    => 'NUMERIC',
     205                        ),
     206                    ),
     207                )
     208            );
     209
     210            if ( count( $sms_sending_in_device_posts ) >= 20 ) {
     211                continue;
    155212            }
    156 
    157             $now = time();
    158 
    159             update_post_meta( $device_id, Device::META_KEY_LAST_ACTIVITY_AT, $now );
    160213
    161214            $sms_posts = get_posts(
     
    163216                    'post_type'   => Sms::POST_TYPE,
    164217                    'numberposts' => 1,
     218                    'order'       => 'ASC',
    165219                    'meta_query'  => array(
    166220                        'relation' => 'AND',
     
    201255                            ),
    202256                            array(
    203                                 'key'     => Sms::META_KEY_INACTIVE_AT,
     257                                'key'     => Sms::META_KEY_SENDING_IN_DEVICE,
    204258                                'compare' => 'NOT EQUAL',
    205259                                'value'   => $device_id,
  • sms-gateway-press/tags/1.0.3/private/custom-post-type/class-device.php

    r3036929 r3081041  
    1111    public const NONCE_ACTION_METABOX = 'nonce_metabox';
    1212
    13     public const META_KEY_TOKEN            = '_token';
    14     public const META_KEY_PHONE_NUMBER     = '_phone_number';
    15     public const META_KEY_LAST_ACTIVITY_AT = '_last_activity_at';
    16     public const META_KEY_CURRENT_SMS_ID   = '_current_sms_id';
     13    public const META_KEY_TOKEN              = '_token';
     14    public const META_KEY_PHONE_NUMBER       = '_phone_number';
     15    public const META_KEY_LAST_ACTIVITY_AT   = '_last_activity_at';
     16    public const META_KEY_CURRENT_SMS_ID     = '_current_sms_id';
     17    public const META_KEY_POLLING_EXPIRES_AT = '_polling_expires_at';
    1718
    1819    public static function register(): void {
  • sms-gateway-press/tags/1.0.3/private/custom-post-type/class-sms.php

    r3037249 r3081041  
    99
    1010    public const POST_TYPE            = 'smsgp_sms';
    11     public const DEFAULT_INACTIVITY   = 30; // seconds
     11    public const DEFAULT_INACTIVITY   = 180; // seconds
    1212    public const COLUMN_STATUS        = 'status';
    1313    public const NONCE_ACTION_METABOX = 'nonce_metabox';
     14    public const DATETIME_FORMAT      = 'Y-m-d H:i:s';
    1415
    1516    public const META_BOX_OPTIONS = 'options';
     
    131132
    132133    public static function manage_posts_custom_column( string $column, int $post_id ): void {
    133         $format = 'Y-m-d H:i:s';
    134 
    135134        switch ( $column ) {
    136135            case self::META_KEY_PHONE_NUMBER:
     
    154153                    $dt->setTimestamp( $send_at );
    155154
    156                     echo esc_html( $dt->format( $format ) );
     155                    echo esc_html( $dt->format( self::DATETIME_FORMAT ) );
    157156                }
    158157                break;
     
    165164                    $dt->setTimestamp( $expires_at );
    166165
    167                     echo esc_html( $dt->format( $format ) );
     166                    echo esc_html( $dt->format( self::DATETIME_FORMAT ) );
    168167                }
    169168                break;
     
    192191        $sent_at = get_post_meta( $post_id, self::META_KEY_SENT_AT, true );
    193192
    194         if ( $sent_at ) {
    195             return Utils::format_elapsed_time( $sent_at );
     193        if ( $sent_at && is_numeric( $sent_at ) ) {
     194            $datetime = new DateTime();
     195            $datetime->setTimestamp( $sent_at );
     196
     197            return $datetime->format( self::DATETIME_FORMAT );
    196198        }
    197199    }
     
    405407            } elseif ( is_array( $log ) && isset( $log['time'] ) && isset( $log['text'] ) ) {
    406408                $time = ( new DateTime() )->setTimestamp( $log['time'] );
    407                 echo '<p><strong>' . esc_html( $time->format( 'Y-m-d H:i:s' ) ) . ':</strong>' . esc_html( $log['text'] ) . '</p>';
     409                echo '<p><strong>' . esc_html( $time->format( self::DATETIME_FORMAT ) ) . ':</strong>' . esc_html( $log['text'] ) . '</p>';
    408410            }
    409411        }
  • sms-gateway-press/tags/1.0.3/readme.txt

    r3037249 r3081041  
    44Tags: sms, smsgateway, gateway
    55Requires at least: 6.0
    6 Tested up to: 6.4
    7 Stable tag: 1.0.2
     6Tested up to: 6.5
     7Stable tag: 1.0.3
    88Requires PHP: 7.3
    99License: GPLv2 or later
  • sms-gateway-press/trunk/composer.json

    r3036929 r3081041  
    22    "require-dev": {
    33        "wp-coding-standards/wpcs": "^3.0",
    4         "phpcompatibility/php-compatibility": "*"
     4        "phpcompatibility/php-compatibility": "*",
     5        "thenlabs/pyramidal-tests": "2.0.x-dev",
     6        "brain/monkey": "^2.6"
    57    },
    68    "config": {
  • sms-gateway-press/trunk/composer.lock

    r3036929 r3081041  
    55        "This file is @generated automatically"
    66    ],
    7     "content-hash": "cdc6b6fa5994f422384790c2314bfb89",
     7    "content-hash": "a031cc761b342e7cd2635e4e3b6a4e5b",
    88    "packages": [],
    99    "packages-dev": [
     10        {
     11            "name": "antecedent/patchwork",
     12            "version": "2.1.28",
     13            "source": {
     14                "type": "git",
     15                "url": "https://github.com/antecedent/patchwork.git",
     16                "reference": "6b30aff81ebadf0f2feb9268d3e08385cebcc08d"
     17            },
     18            "dist": {
     19                "type": "zip",
     20                "url": "https://api.github.com/repos/antecedent/patchwork/zipball/6b30aff81ebadf0f2feb9268d3e08385cebcc08d",
     21                "reference": "6b30aff81ebadf0f2feb9268d3e08385cebcc08d",
     22                "shasum": ""
     23            },
     24            "require": {
     25                "php": ">=5.4.0"
     26            },
     27            "require-dev": {
     28                "phpunit/phpunit": ">=4"
     29            },
     30            "type": "library",
     31            "notification-url": "https://packagist.org/downloads/",
     32            "license": [
     33                "MIT"
     34            ],
     35            "authors": [
     36                {
     37                    "name": "Ignas Rudaitis",
     38                    "email": "ignas.rudaitis@gmail.com"
     39                }
     40            ],
     41            "description": "Method redefinition (monkey-patching) functionality for PHP.",
     42            "homepage": "https://antecedent.github.io/patchwork/",
     43            "keywords": [
     44                "aop",
     45                "aspect",
     46                "interception",
     47                "monkeypatching",
     48                "redefinition",
     49                "runkit",
     50                "testing"
     51            ],
     52            "support": {
     53                "issues": "https://github.com/antecedent/patchwork/issues",
     54                "source": "https://github.com/antecedent/patchwork/tree/2.1.28"
     55            },
     56            "time": "2024-02-06T09:26:11+00:00"
     57        },
     58        {
     59            "name": "brain/monkey",
     60            "version": "2.6.1",
     61            "source": {
     62                "type": "git",
     63                "url": "https://github.com/Brain-WP/BrainMonkey.git",
     64                "reference": "a31c84515bb0d49be9310f52ef1733980ea8ffbb"
     65            },
     66            "dist": {
     67                "type": "zip",
     68                "url": "https://api.github.com/repos/Brain-WP/BrainMonkey/zipball/a31c84515bb0d49be9310f52ef1733980ea8ffbb",
     69                "reference": "a31c84515bb0d49be9310f52ef1733980ea8ffbb",
     70                "shasum": ""
     71            },
     72            "require": {
     73                "antecedent/patchwork": "^2.1.17",
     74                "mockery/mockery": "^1.3.5 || ^1.4.4",
     75                "php": ">=5.6.0"
     76            },
     77            "require-dev": {
     78                "dealerdirect/phpcodesniffer-composer-installer": "^0.7.1",
     79                "phpcompatibility/php-compatibility": "^9.3.0",
     80                "phpunit/phpunit": "^5.7.26 || ^6.0 || ^7.0 || >=8.0 <8.5.12 || ^8.5.14 || ^9.0"
     81            },
     82            "type": "library",
     83            "extra": {
     84                "branch-alias": {
     85                    "dev-version/1": "1.x-dev",
     86                    "dev-master": "2.0.x-dev"
     87                }
     88            },
     89            "autoload": {
     90                "files": [
     91                    "inc/api.php"
     92                ],
     93                "psr-4": {
     94                    "Brain\\Monkey\\": "src/"
     95                }
     96            },
     97            "notification-url": "https://packagist.org/downloads/",
     98            "license": [
     99                "MIT"
     100            ],
     101            "authors": [
     102                {
     103                    "name": "Giuseppe Mazzapica",
     104                    "email": "giuseppe.mazzapica@gmail.com",
     105                    "homepage": "https://gmazzap.me",
     106                    "role": "Developer"
     107                }
     108            ],
     109            "description": "Mocking utility for PHP functions and WordPress plugin API",
     110            "keywords": [
     111                "Monkey Patching",
     112                "interception",
     113                "mock",
     114                "mock functions",
     115                "mockery",
     116                "patchwork",
     117                "redefinition",
     118                "runkit",
     119                "test",
     120                "testing"
     121            ],
     122            "support": {
     123                "issues": "https://github.com/Brain-WP/BrainMonkey/issues",
     124                "source": "https://github.com/Brain-WP/BrainMonkey"
     125            },
     126            "time": "2021-11-11T15:53:55+00:00"
     127        },
     128        {
     129            "name": "brick/varexporter",
     130            "version": "0.3.8",
     131            "source": {
     132                "type": "git",
     133                "url": "https://github.com/brick/varexporter.git",
     134                "reference": "b5853edea6204ff8fa10633c3a4cccc4058410ed"
     135            },
     136            "dist": {
     137                "type": "zip",
     138                "url": "https://api.github.com/repos/brick/varexporter/zipball/b5853edea6204ff8fa10633c3a4cccc4058410ed",
     139                "reference": "b5853edea6204ff8fa10633c3a4cccc4058410ed",
     140                "shasum": ""
     141            },
     142            "require": {
     143                "nikic/php-parser": "^4.0",
     144                "php": "^7.2 || ^8.0"
     145            },
     146            "require-dev": {
     147                "php-coveralls/php-coveralls": "^2.2",
     148                "phpunit/phpunit": "^8.5 || ^9.0",
     149                "vimeo/psalm": "4.23.0"
     150            },
     151            "type": "library",
     152            "autoload": {
     153                "psr-4": {
     154                    "Brick\\VarExporter\\": "src/"
     155                }
     156            },
     157            "notification-url": "https://packagist.org/downloads/",
     158            "license": [
     159                "MIT"
     160            ],
     161            "description": "A powerful alternative to var_export(), which can export closures and objects without __set_state()",
     162            "keywords": [
     163                "var_export"
     164            ],
     165            "support": {
     166                "issues": "https://github.com/brick/varexporter/issues",
     167                "source": "https://github.com/brick/varexporter/tree/0.3.8"
     168            },
     169            "funding": [
     170                {
     171                    "url": "https://github.com/BenMorel",
     172                    "type": "github"
     173                }
     174            ],
     175            "time": "2023-01-21T23:05:38+00:00"
     176        },
     177        {
     178            "name": "composer/semver",
     179            "version": "3.4.0",
     180            "source": {
     181                "type": "git",
     182                "url": "https://github.com/composer/semver.git",
     183                "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32"
     184            },
     185            "dist": {
     186                "type": "zip",
     187                "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32",
     188                "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32",
     189                "shasum": ""
     190            },
     191            "require": {
     192                "php": "^5.3.2 || ^7.0 || ^8.0"
     193            },
     194            "require-dev": {
     195                "phpstan/phpstan": "^1.4",
     196                "symfony/phpunit-bridge": "^4.2 || ^5"
     197            },
     198            "type": "library",
     199            "extra": {
     200                "branch-alias": {
     201                    "dev-main": "3.x-dev"
     202                }
     203            },
     204            "autoload": {
     205                "psr-4": {
     206                    "Composer\\Semver\\": "src"
     207                }
     208            },
     209            "notification-url": "https://packagist.org/downloads/",
     210            "license": [
     211                "MIT"
     212            ],
     213            "authors": [
     214                {
     215                    "name": "Nils Adermann",
     216                    "email": "naderman@naderman.de",
     217                    "homepage": "http://www.naderman.de"
     218                },
     219                {
     220                    "name": "Jordi Boggiano",
     221                    "email": "j.boggiano@seld.be",
     222                    "homepage": "http://seld.be"
     223                },
     224                {
     225                    "name": "Rob Bast",
     226                    "email": "rob.bast@gmail.com",
     227                    "homepage": "http://robbast.nl"
     228                }
     229            ],
     230            "description": "Semver library that offers utilities, version constraint parsing and validation.",
     231            "keywords": [
     232                "semantic",
     233                "semver",
     234                "validation",
     235                "versioning"
     236            ],
     237            "support": {
     238                "irc": "ircs://irc.libera.chat:6697/composer",
     239                "issues": "https://github.com/composer/semver/issues",
     240                "source": "https://github.com/composer/semver/tree/3.4.0"
     241            },
     242            "funding": [
     243                {
     244                    "url": "https://packagist.com",
     245                    "type": "custom"
     246                },
     247                {
     248                    "url": "https://github.com/composer",
     249                    "type": "github"
     250                },
     251                {
     252                    "url": "https://tidelift.com/funding/github/packagist/composer/composer",
     253                    "type": "tidelift"
     254                }
     255            ],
     256            "time": "2023-08-31T09:50:34+00:00"
     257        },
    10258        {
    11259            "name": "dealerdirect/phpcodesniffer-composer-installer",
     
    87335        },
    88336        {
     337            "name": "doctrine/annotations",
     338            "version": "1.14.3",
     339            "source": {
     340                "type": "git",
     341                "url": "https://github.com/doctrine/annotations.git",
     342                "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af"
     343            },
     344            "dist": {
     345                "type": "zip",
     346                "url": "https://api.github.com/repos/doctrine/annotations/zipball/fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af",
     347                "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af",
     348                "shasum": ""
     349            },
     350            "require": {
     351                "doctrine/lexer": "^1 || ^2",
     352                "ext-tokenizer": "*",
     353                "php": "^7.1 || ^8.0",
     354                "psr/cache": "^1 || ^2 || ^3"
     355            },
     356            "require-dev": {
     357                "doctrine/cache": "^1.11 || ^2.0",
     358                "doctrine/coding-standard": "^9 || ^10",
     359                "phpstan/phpstan": "~1.4.10 || ^1.8.0",
     360                "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
     361                "symfony/cache": "^4.4 || ^5.4 || ^6",
     362                "vimeo/psalm": "^4.10"
     363            },
     364            "suggest": {
     365                "php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations"
     366            },
     367            "type": "library",
     368            "autoload": {
     369                "psr-4": {
     370                    "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations"
     371                }
     372            },
     373            "notification-url": "https://packagist.org/downloads/",
     374            "license": [
     375                "MIT"
     376            ],
     377            "authors": [
     378                {
     379                    "name": "Guilherme Blanco",
     380                    "email": "guilhermeblanco@gmail.com"
     381                },
     382                {
     383                    "name": "Roman Borschel",
     384                    "email": "roman@code-factory.org"
     385                },
     386                {
     387                    "name": "Benjamin Eberlei",
     388                    "email": "kontakt@beberlei.de"
     389                },
     390                {
     391                    "name": "Jonathan Wage",
     392                    "email": "jonwage@gmail.com"
     393                },
     394                {
     395                    "name": "Johannes Schmitt",
     396                    "email": "schmittjoh@gmail.com"
     397                }
     398            ],
     399            "description": "Docblock Annotations Parser",
     400            "homepage": "https://www.doctrine-project.org/projects/annotations.html",
     401            "keywords": [
     402                "annotations",
     403                "docblock",
     404                "parser"
     405            ],
     406            "support": {
     407                "issues": "https://github.com/doctrine/annotations/issues",
     408                "source": "https://github.com/doctrine/annotations/tree/1.14.3"
     409            },
     410            "time": "2023-02-01T09:20:38+00:00"
     411        },
     412        {
     413            "name": "doctrine/deprecations",
     414            "version": "1.1.3",
     415            "source": {
     416                "type": "git",
     417                "url": "https://github.com/doctrine/deprecations.git",
     418                "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab"
     419            },
     420            "dist": {
     421                "type": "zip",
     422                "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab",
     423                "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab",
     424                "shasum": ""
     425            },
     426            "require": {
     427                "php": "^7.1 || ^8.0"
     428            },
     429            "require-dev": {
     430                "doctrine/coding-standard": "^9",
     431                "phpstan/phpstan": "1.4.10 || 1.10.15",
     432                "phpstan/phpstan-phpunit": "^1.0",
     433                "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
     434                "psalm/plugin-phpunit": "0.18.4",
     435                "psr/log": "^1 || ^2 || ^3",
     436                "vimeo/psalm": "4.30.0 || 5.12.0"
     437            },
     438            "suggest": {
     439                "psr/log": "Allows logging deprecations via PSR-3 logger implementation"
     440            },
     441            "type": "library",
     442            "autoload": {
     443                "psr-4": {
     444                    "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations"
     445                }
     446            },
     447            "notification-url": "https://packagist.org/downloads/",
     448            "license": [
     449                "MIT"
     450            ],
     451            "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.",
     452            "homepage": "https://www.doctrine-project.org/",
     453            "support": {
     454                "issues": "https://github.com/doctrine/deprecations/issues",
     455                "source": "https://github.com/doctrine/deprecations/tree/1.1.3"
     456            },
     457            "time": "2024-01-30T19:34:25+00:00"
     458        },
     459        {
     460            "name": "doctrine/instantiator",
     461            "version": "2.0.0",
     462            "source": {
     463                "type": "git",
     464                "url": "https://github.com/doctrine/instantiator.git",
     465                "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0"
     466            },
     467            "dist": {
     468                "type": "zip",
     469                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0",
     470                "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0",
     471                "shasum": ""
     472            },
     473            "require": {
     474                "php": "^8.1"
     475            },
     476            "require-dev": {
     477                "doctrine/coding-standard": "^11",
     478                "ext-pdo": "*",
     479                "ext-phar": "*",
     480                "phpbench/phpbench": "^1.2",
     481                "phpstan/phpstan": "^1.9.4",
     482                "phpstan/phpstan-phpunit": "^1.3",
     483                "phpunit/phpunit": "^9.5.27",
     484                "vimeo/psalm": "^5.4"
     485            },
     486            "type": "library",
     487            "autoload": {
     488                "psr-4": {
     489                    "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
     490                }
     491            },
     492            "notification-url": "https://packagist.org/downloads/",
     493            "license": [
     494                "MIT"
     495            ],
     496            "authors": [
     497                {
     498                    "name": "Marco Pivetta",
     499                    "email": "ocramius@gmail.com",
     500                    "homepage": "https://ocramius.github.io/"
     501                }
     502            ],
     503            "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
     504            "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
     505            "keywords": [
     506                "constructor",
     507                "instantiate"
     508            ],
     509            "support": {
     510                "issues": "https://github.com/doctrine/instantiator/issues",
     511                "source": "https://github.com/doctrine/instantiator/tree/2.0.0"
     512            },
     513            "funding": [
     514                {
     515                    "url": "https://www.doctrine-project.org/sponsorship.html",
     516                    "type": "custom"
     517                },
     518                {
     519                    "url": "https://www.patreon.com/phpdoctrine",
     520                    "type": "patreon"
     521                },
     522                {
     523                    "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
     524                    "type": "tidelift"
     525                }
     526            ],
     527            "time": "2022-12-30T00:23:10+00:00"
     528        },
     529        {
     530            "name": "doctrine/lexer",
     531            "version": "2.1.1",
     532            "source": {
     533                "type": "git",
     534                "url": "https://github.com/doctrine/lexer.git",
     535                "reference": "861c870e8b75f7c8f69c146c7f89cc1c0f1b49b6"
     536            },
     537            "dist": {
     538                "type": "zip",
     539                "url": "https://api.github.com/repos/doctrine/lexer/zipball/861c870e8b75f7c8f69c146c7f89cc1c0f1b49b6",
     540                "reference": "861c870e8b75f7c8f69c146c7f89cc1c0f1b49b6",
     541                "shasum": ""
     542            },
     543            "require": {
     544                "doctrine/deprecations": "^1.0",
     545                "php": "^7.1 || ^8.0"
     546            },
     547            "require-dev": {
     548                "doctrine/coding-standard": "^9 || ^12",
     549                "phpstan/phpstan": "^1.3",
     550                "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6",
     551                "psalm/plugin-phpunit": "^0.18.3",
     552                "vimeo/psalm": "^4.11 || ^5.21"
     553            },
     554            "type": "library",
     555            "autoload": {
     556                "psr-4": {
     557                    "Doctrine\\Common\\Lexer\\": "src"
     558                }
     559            },
     560            "notification-url": "https://packagist.org/downloads/",
     561            "license": [
     562                "MIT"
     563            ],
     564            "authors": [
     565                {
     566                    "name": "Guilherme Blanco",
     567                    "email": "guilhermeblanco@gmail.com"
     568                },
     569                {
     570                    "name": "Roman Borschel",
     571                    "email": "roman@code-factory.org"
     572                },
     573                {
     574                    "name": "Johannes Schmitt",
     575                    "email": "schmittjoh@gmail.com"
     576                }
     577            ],
     578            "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.",
     579            "homepage": "https://www.doctrine-project.org/projects/lexer.html",
     580            "keywords": [
     581                "annotations",
     582                "docblock",
     583                "lexer",
     584                "parser",
     585                "php"
     586            ],
     587            "support": {
     588                "issues": "https://github.com/doctrine/lexer/issues",
     589                "source": "https://github.com/doctrine/lexer/tree/2.1.1"
     590            },
     591            "funding": [
     592                {
     593                    "url": "https://www.doctrine-project.org/sponsorship.html",
     594                    "type": "custom"
     595                },
     596                {
     597                    "url": "https://www.patreon.com/phpdoctrine",
     598                    "type": "patreon"
     599                },
     600                {
     601                    "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer",
     602                    "type": "tidelift"
     603                }
     604            ],
     605            "time": "2024-02-05T11:35:39+00:00"
     606        },
     607        {
     608            "name": "hamcrest/hamcrest-php",
     609            "version": "v2.0.1",
     610            "source": {
     611                "type": "git",
     612                "url": "https://github.com/hamcrest/hamcrest-php.git",
     613                "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3"
     614            },
     615            "dist": {
     616                "type": "zip",
     617                "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3",
     618                "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3",
     619                "shasum": ""
     620            },
     621            "require": {
     622                "php": "^5.3|^7.0|^8.0"
     623            },
     624            "replace": {
     625                "cordoval/hamcrest-php": "*",
     626                "davedevelopment/hamcrest-php": "*",
     627                "kodova/hamcrest-php": "*"
     628            },
     629            "require-dev": {
     630                "phpunit/php-file-iterator": "^1.4 || ^2.0",
     631                "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0"
     632            },
     633            "type": "library",
     634            "extra": {
     635                "branch-alias": {
     636                    "dev-master": "2.1-dev"
     637                }
     638            },
     639            "autoload": {
     640                "classmap": [
     641                    "hamcrest"
     642                ]
     643            },
     644            "notification-url": "https://packagist.org/downloads/",
     645            "license": [
     646                "BSD-3-Clause"
     647            ],
     648            "description": "This is the PHP port of Hamcrest Matchers",
     649            "keywords": [
     650                "test"
     651            ],
     652            "support": {
     653                "issues": "https://github.com/hamcrest/hamcrest-php/issues",
     654                "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1"
     655            },
     656            "time": "2020-07-09T08:09:16+00:00"
     657        },
     658        {
     659            "name": "mockery/mockery",
     660            "version": "1.6.11",
     661            "source": {
     662                "type": "git",
     663                "url": "https://github.com/mockery/mockery.git",
     664                "reference": "81a161d0b135df89951abd52296adf97deb0723d"
     665            },
     666            "dist": {
     667                "type": "zip",
     668                "url": "https://api.github.com/repos/mockery/mockery/zipball/81a161d0b135df89951abd52296adf97deb0723d",
     669                "reference": "81a161d0b135df89951abd52296adf97deb0723d",
     670                "shasum": ""
     671            },
     672            "require": {
     673                "hamcrest/hamcrest-php": "^2.0.1",
     674                "lib-pcre": ">=7.0",
     675                "php": ">=7.3"
     676            },
     677            "conflict": {
     678                "phpunit/phpunit": "<8.0"
     679            },
     680            "require-dev": {
     681                "phpunit/phpunit": "^8.5 || ^9.6.17",
     682                "symplify/easy-coding-standard": "^12.1.14"
     683            },
     684            "type": "library",
     685            "autoload": {
     686                "files": [
     687                    "library/helpers.php",
     688                    "library/Mockery.php"
     689                ],
     690                "psr-4": {
     691                    "Mockery\\": "library/Mockery"
     692                }
     693            },
     694            "notification-url": "https://packagist.org/downloads/",
     695            "license": [
     696                "BSD-3-Clause"
     697            ],
     698            "authors": [
     699                {
     700                    "name": "Pádraic Brady",
     701                    "email": "padraic.brady@gmail.com",
     702                    "homepage": "https://github.com/padraic",
     703                    "role": "Author"
     704                },
     705                {
     706                    "name": "Dave Marshall",
     707                    "email": "dave.marshall@atstsolutions.co.uk",
     708                    "homepage": "https://davedevelopment.co.uk",
     709                    "role": "Developer"
     710                },
     711                {
     712                    "name": "Nathanael Esayeas",
     713                    "email": "nathanael.esayeas@protonmail.com",
     714                    "homepage": "https://github.com/ghostwriter",
     715                    "role": "Lead Developer"
     716                }
     717            ],
     718            "description": "Mockery is a simple yet flexible PHP mock object framework",
     719            "homepage": "https://github.com/mockery/mockery",
     720            "keywords": [
     721                "BDD",
     722                "TDD",
     723                "library",
     724                "mock",
     725                "mock objects",
     726                "mockery",
     727                "stub",
     728                "test",
     729                "test double",
     730                "testing"
     731            ],
     732            "support": {
     733                "docs": "https://docs.mockery.io/",
     734                "issues": "https://github.com/mockery/mockery/issues",
     735                "rss": "https://github.com/mockery/mockery/releases.atom",
     736                "security": "https://github.com/mockery/mockery/security/advisories",
     737                "source": "https://github.com/mockery/mockery"
     738            },
     739            "time": "2024-03-21T18:34:15+00:00"
     740        },
     741        {
     742            "name": "myclabs/deep-copy",
     743            "version": "1.11.1",
     744            "source": {
     745                "type": "git",
     746                "url": "https://github.com/myclabs/DeepCopy.git",
     747                "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c"
     748            },
     749            "dist": {
     750                "type": "zip",
     751                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c",
     752                "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c",
     753                "shasum": ""
     754            },
     755            "require": {
     756                "php": "^7.1 || ^8.0"
     757            },
     758            "conflict": {
     759                "doctrine/collections": "<1.6.8",
     760                "doctrine/common": "<2.13.3 || >=3,<3.2.2"
     761            },
     762            "require-dev": {
     763                "doctrine/collections": "^1.6.8",
     764                "doctrine/common": "^2.13.3 || ^3.2.2",
     765                "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
     766            },
     767            "type": "library",
     768            "autoload": {
     769                "files": [
     770                    "src/DeepCopy/deep_copy.php"
     771                ],
     772                "psr-4": {
     773                    "DeepCopy\\": "src/DeepCopy/"
     774                }
     775            },
     776            "notification-url": "https://packagist.org/downloads/",
     777            "license": [
     778                "MIT"
     779            ],
     780            "description": "Create deep copies (clones) of your objects",
     781            "keywords": [
     782                "clone",
     783                "copy",
     784                "duplicate",
     785                "object",
     786                "object graph"
     787            ],
     788            "support": {
     789                "issues": "https://github.com/myclabs/DeepCopy/issues",
     790                "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1"
     791            },
     792            "funding": [
     793                {
     794                    "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
     795                    "type": "tidelift"
     796                }
     797            ],
     798            "time": "2023-03-08T13:26:56+00:00"
     799        },
     800        {
     801            "name": "nikic/php-parser",
     802            "version": "v4.19.1",
     803            "source": {
     804                "type": "git",
     805                "url": "https://github.com/nikic/PHP-Parser.git",
     806                "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b"
     807            },
     808            "dist": {
     809                "type": "zip",
     810                "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4e1b88d21c69391150ace211e9eaf05810858d0b",
     811                "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b",
     812                "shasum": ""
     813            },
     814            "require": {
     815                "ext-tokenizer": "*",
     816                "php": ">=7.1"
     817            },
     818            "require-dev": {
     819                "ircmaxell/php-yacc": "^0.0.7",
     820                "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
     821            },
     822            "bin": [
     823                "bin/php-parse"
     824            ],
     825            "type": "library",
     826            "extra": {
     827                "branch-alias": {
     828                    "dev-master": "4.9-dev"
     829                }
     830            },
     831            "autoload": {
     832                "psr-4": {
     833                    "PhpParser\\": "lib/PhpParser"
     834                }
     835            },
     836            "notification-url": "https://packagist.org/downloads/",
     837            "license": [
     838                "BSD-3-Clause"
     839            ],
     840            "authors": [
     841                {
     842                    "name": "Nikita Popov"
     843                }
     844            ],
     845            "description": "A PHP parser written in PHP",
     846            "keywords": [
     847                "parser",
     848                "php"
     849            ],
     850            "support": {
     851                "issues": "https://github.com/nikic/PHP-Parser/issues",
     852                "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.1"
     853            },
     854            "time": "2024-03-17T08:10:35+00:00"
     855        },
     856        {
     857            "name": "phar-io/manifest",
     858            "version": "2.0.4",
     859            "source": {
     860                "type": "git",
     861                "url": "https://github.com/phar-io/manifest.git",
     862                "reference": "54750ef60c58e43759730615a392c31c80e23176"
     863            },
     864            "dist": {
     865                "type": "zip",
     866                "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176",
     867                "reference": "54750ef60c58e43759730615a392c31c80e23176",
     868                "shasum": ""
     869            },
     870            "require": {
     871                "ext-dom": "*",
     872                "ext-libxml": "*",
     873                "ext-phar": "*",
     874                "ext-xmlwriter": "*",
     875                "phar-io/version": "^3.0.1",
     876                "php": "^7.2 || ^8.0"
     877            },
     878            "type": "library",
     879            "extra": {
     880                "branch-alias": {
     881                    "dev-master": "2.0.x-dev"
     882                }
     883            },
     884            "autoload": {
     885                "classmap": [
     886                    "src/"
     887                ]
     888            },
     889            "notification-url": "https://packagist.org/downloads/",
     890            "license": [
     891                "BSD-3-Clause"
     892            ],
     893            "authors": [
     894                {
     895                    "name": "Arne Blankerts",
     896                    "email": "arne@blankerts.de",
     897                    "role": "Developer"
     898                },
     899                {
     900                    "name": "Sebastian Heuer",
     901                    "email": "sebastian@phpeople.de",
     902                    "role": "Developer"
     903                },
     904                {
     905                    "name": "Sebastian Bergmann",
     906                    "email": "sebastian@phpunit.de",
     907                    "role": "Developer"
     908                }
     909            ],
     910            "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
     911            "support": {
     912                "issues": "https://github.com/phar-io/manifest/issues",
     913                "source": "https://github.com/phar-io/manifest/tree/2.0.4"
     914            },
     915            "funding": [
     916                {
     917                    "url": "https://github.com/theseer",
     918                    "type": "github"
     919                }
     920            ],
     921            "time": "2024-03-03T12:33:53+00:00"
     922        },
     923        {
     924            "name": "phar-io/version",
     925            "version": "3.2.1",
     926            "source": {
     927                "type": "git",
     928                "url": "https://github.com/phar-io/version.git",
     929                "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74"
     930            },
     931            "dist": {
     932                "type": "zip",
     933                "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
     934                "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
     935                "shasum": ""
     936            },
     937            "require": {
     938                "php": "^7.2 || ^8.0"
     939            },
     940            "type": "library",
     941            "autoload": {
     942                "classmap": [
     943                    "src/"
     944                ]
     945            },
     946            "notification-url": "https://packagist.org/downloads/",
     947            "license": [
     948                "BSD-3-Clause"
     949            ],
     950            "authors": [
     951                {
     952                    "name": "Arne Blankerts",
     953                    "email": "arne@blankerts.de",
     954                    "role": "Developer"
     955                },
     956                {
     957                    "name": "Sebastian Heuer",
     958                    "email": "sebastian@phpeople.de",
     959                    "role": "Developer"
     960                },
     961                {
     962                    "name": "Sebastian Bergmann",
     963                    "email": "sebastian@phpunit.de",
     964                    "role": "Developer"
     965                }
     966            ],
     967            "description": "Library for handling version information and constraints",
     968            "support": {
     969                "issues": "https://github.com/phar-io/version/issues",
     970                "source": "https://github.com/phar-io/version/tree/3.2.1"
     971            },
     972            "time": "2022-02-21T01:04:05+00:00"
     973        },
     974        {
    89975            "name": "phpcompatibility/php-compatibility",
    90976            "version": "9.3.5",
     
    2281114        {
    2291115            "name": "phpcsstandards/phpcsutils",
    230             "version": "1.0.9",
     1116            "version": "1.0.11",
    2311117            "source": {
    2321118                "type": "git",
    2331119                "url": "https://github.com/PHPCSStandards/PHPCSUtils.git",
    234                 "reference": "908247bc65010c7b7541a9551e002db12e9dae70"
    235             },
    236             "dist": {
    237                 "type": "zip",
    238                 "url": "https://api.github.com/repos/PHPCSStandards/PHPCSUtils/zipball/908247bc65010c7b7541a9551e002db12e9dae70",
    239                 "reference": "908247bc65010c7b7541a9551e002db12e9dae70",
     1120                "reference": "c457da9dabb60eb7106dd5e3c05132b1a6539c6a"
     1121            },
     1122            "dist": {
     1123                "type": "zip",
     1124                "url": "https://api.github.com/repos/PHPCSStandards/PHPCSUtils/zipball/c457da9dabb60eb7106dd5e3c05132b1a6539c6a",
     1125                "reference": "c457da9dabb60eb7106dd5e3c05132b1a6539c6a",
    2401126                "shasum": ""
    2411127            },
     
    2431129                "dealerdirect/phpcodesniffer-composer-installer": "^0.4.1 || ^0.5 || ^0.6.2 || ^0.7 || ^1.0",
    2441130                "php": ">=5.4",
    245                 "squizlabs/php_codesniffer": "^3.8.0 || 4.0.x-dev@dev"
     1131                "squizlabs/php_codesniffer": "^3.9.0 || 4.0.x-dev@dev"
    2461132            },
    2471133            "require-dev": {
     
    3121198                }
    3131199            ],
    314             "time": "2023-12-08T14:50:00+00:00"
     1200            "time": "2024-04-24T11:47:18+00:00"
     1201        },
     1202        {
     1203            "name": "phpunit/php-code-coverage",
     1204            "version": "9.2.31",
     1205            "source": {
     1206                "type": "git",
     1207                "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
     1208                "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965"
     1209            },
     1210            "dist": {
     1211                "type": "zip",
     1212                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/48c34b5d8d983006bd2adc2d0de92963b9155965",
     1213                "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965",
     1214                "shasum": ""
     1215            },
     1216            "require": {
     1217                "ext-dom": "*",
     1218                "ext-libxml": "*",
     1219                "ext-xmlwriter": "*",
     1220                "nikic/php-parser": "^4.18 || ^5.0",
     1221                "php": ">=7.3",
     1222                "phpunit/php-file-iterator": "^3.0.3",
     1223                "phpunit/php-text-template": "^2.0.2",
     1224                "sebastian/code-unit-reverse-lookup": "^2.0.2",
     1225                "sebastian/complexity": "^2.0",
     1226                "sebastian/environment": "^5.1.2",
     1227                "sebastian/lines-of-code": "^1.0.3",
     1228                "sebastian/version": "^3.0.1",
     1229                "theseer/tokenizer": "^1.2.0"
     1230            },
     1231            "require-dev": {
     1232                "phpunit/phpunit": "^9.3"
     1233            },
     1234            "suggest": {
     1235                "ext-pcov": "PHP extension that provides line coverage",
     1236                "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage"
     1237            },
     1238            "type": "library",
     1239            "extra": {
     1240                "branch-alias": {
     1241                    "dev-master": "9.2-dev"
     1242                }
     1243            },
     1244            "autoload": {
     1245                "classmap": [
     1246                    "src/"
     1247                ]
     1248            },
     1249            "notification-url": "https://packagist.org/downloads/",
     1250            "license": [
     1251                "BSD-3-Clause"
     1252            ],
     1253            "authors": [
     1254                {
     1255                    "name": "Sebastian Bergmann",
     1256                    "email": "sebastian@phpunit.de",
     1257                    "role": "lead"
     1258                }
     1259            ],
     1260            "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
     1261            "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
     1262            "keywords": [
     1263                "coverage",
     1264                "testing",
     1265                "xunit"
     1266            ],
     1267            "support": {
     1268                "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
     1269                "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy",
     1270                "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.31"
     1271            },
     1272            "funding": [
     1273                {
     1274                    "url": "https://github.com/sebastianbergmann",
     1275                    "type": "github"
     1276                }
     1277            ],
     1278            "time": "2024-03-02T06:37:42+00:00"
     1279        },
     1280        {
     1281            "name": "phpunit/php-file-iterator",
     1282            "version": "3.0.6",
     1283            "source": {
     1284                "type": "git",
     1285                "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
     1286                "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf"
     1287            },
     1288            "dist": {
     1289                "type": "zip",
     1290                "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf",
     1291                "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf",
     1292                "shasum": ""
     1293            },
     1294            "require": {
     1295                "php": ">=7.3"
     1296            },
     1297            "require-dev": {
     1298                "phpunit/phpunit": "^9.3"
     1299            },
     1300            "type": "library",
     1301            "extra": {
     1302                "branch-alias": {
     1303                    "dev-master": "3.0-dev"
     1304                }
     1305            },
     1306            "autoload": {
     1307                "classmap": [
     1308                    "src/"
     1309                ]
     1310            },
     1311            "notification-url": "https://packagist.org/downloads/",
     1312            "license": [
     1313                "BSD-3-Clause"
     1314            ],
     1315            "authors": [
     1316                {
     1317                    "name": "Sebastian Bergmann",
     1318                    "email": "sebastian@phpunit.de",
     1319                    "role": "lead"
     1320                }
     1321            ],
     1322            "description": "FilterIterator implementation that filters files based on a list of suffixes.",
     1323            "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
     1324            "keywords": [
     1325                "filesystem",
     1326                "iterator"
     1327            ],
     1328            "support": {
     1329                "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
     1330                "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6"
     1331            },
     1332            "funding": [
     1333                {
     1334                    "url": "https://github.com/sebastianbergmann",
     1335                    "type": "github"
     1336                }
     1337            ],
     1338            "time": "2021-12-02T12:48:52+00:00"
     1339        },
     1340        {
     1341            "name": "phpunit/php-invoker",
     1342            "version": "3.1.1",
     1343            "source": {
     1344                "type": "git",
     1345                "url": "https://github.com/sebastianbergmann/php-invoker.git",
     1346                "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67"
     1347            },
     1348            "dist": {
     1349                "type": "zip",
     1350                "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
     1351                "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
     1352                "shasum": ""
     1353            },
     1354            "require": {
     1355                "php": ">=7.3"
     1356            },
     1357            "require-dev": {
     1358                "ext-pcntl": "*",
     1359                "phpunit/phpunit": "^9.3"
     1360            },
     1361            "suggest": {
     1362                "ext-pcntl": "*"
     1363            },
     1364            "type": "library",
     1365            "extra": {
     1366                "branch-alias": {
     1367                    "dev-master": "3.1-dev"
     1368                }
     1369            },
     1370            "autoload": {
     1371                "classmap": [
     1372                    "src/"
     1373                ]
     1374            },
     1375            "notification-url": "https://packagist.org/downloads/",
     1376            "license": [
     1377                "BSD-3-Clause"
     1378            ],
     1379            "authors": [
     1380                {
     1381                    "name": "Sebastian Bergmann",
     1382                    "email": "sebastian@phpunit.de",
     1383                    "role": "lead"
     1384                }
     1385            ],
     1386            "description": "Invoke callables with a timeout",
     1387            "homepage": "https://github.com/sebastianbergmann/php-invoker/",
     1388            "keywords": [
     1389                "process"
     1390            ],
     1391            "support": {
     1392                "issues": "https://github.com/sebastianbergmann/php-invoker/issues",
     1393                "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1"
     1394            },
     1395            "funding": [
     1396                {
     1397                    "url": "https://github.com/sebastianbergmann",
     1398                    "type": "github"
     1399                }
     1400            ],
     1401            "time": "2020-09-28T05:58:55+00:00"
     1402        },
     1403        {
     1404            "name": "phpunit/php-text-template",
     1405            "version": "2.0.4",
     1406            "source": {
     1407                "type": "git",
     1408                "url": "https://github.com/sebastianbergmann/php-text-template.git",
     1409                "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28"
     1410            },
     1411            "dist": {
     1412                "type": "zip",
     1413                "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
     1414                "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
     1415                "shasum": ""
     1416            },
     1417            "require": {
     1418                "php": ">=7.3"
     1419            },
     1420            "require-dev": {
     1421                "phpunit/phpunit": "^9.3"
     1422            },
     1423            "type": "library",
     1424            "extra": {
     1425                "branch-alias": {
     1426                    "dev-master": "2.0-dev"
     1427                }
     1428            },
     1429            "autoload": {
     1430                "classmap": [
     1431                    "src/"
     1432                ]
     1433            },
     1434            "notification-url": "https://packagist.org/downloads/",
     1435            "license": [
     1436                "BSD-3-Clause"
     1437            ],
     1438            "authors": [
     1439                {
     1440                    "name": "Sebastian Bergmann",
     1441                    "email": "sebastian@phpunit.de",
     1442                    "role": "lead"
     1443                }
     1444            ],
     1445            "description": "Simple template engine.",
     1446            "homepage": "https://github.com/sebastianbergmann/php-text-template/",
     1447            "keywords": [
     1448                "template"
     1449            ],
     1450            "support": {
     1451                "issues": "https://github.com/sebastianbergmann/php-text-template/issues",
     1452                "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4"
     1453            },
     1454            "funding": [
     1455                {
     1456                    "url": "https://github.com/sebastianbergmann",
     1457                    "type": "github"
     1458                }
     1459            ],
     1460            "time": "2020-10-26T05:33:50+00:00"
     1461        },
     1462        {
     1463            "name": "phpunit/php-timer",
     1464            "version": "5.0.3",
     1465            "source": {
     1466                "type": "git",
     1467                "url": "https://github.com/sebastianbergmann/php-timer.git",
     1468                "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2"
     1469            },
     1470            "dist": {
     1471                "type": "zip",
     1472                "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
     1473                "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
     1474                "shasum": ""
     1475            },
     1476            "require": {
     1477                "php": ">=7.3"
     1478            },
     1479            "require-dev": {
     1480                "phpunit/phpunit": "^9.3"
     1481            },
     1482            "type": "library",
     1483            "extra": {
     1484                "branch-alias": {
     1485                    "dev-master": "5.0-dev"
     1486                }
     1487            },
     1488            "autoload": {
     1489                "classmap": [
     1490                    "src/"
     1491                ]
     1492            },
     1493            "notification-url": "https://packagist.org/downloads/",
     1494            "license": [
     1495                "BSD-3-Clause"
     1496            ],
     1497            "authors": [
     1498                {
     1499                    "name": "Sebastian Bergmann",
     1500                    "email": "sebastian@phpunit.de",
     1501                    "role": "lead"
     1502                }
     1503            ],
     1504            "description": "Utility class for timing",
     1505            "homepage": "https://github.com/sebastianbergmann/php-timer/",
     1506            "keywords": [
     1507                "timer"
     1508            ],
     1509            "support": {
     1510                "issues": "https://github.com/sebastianbergmann/php-timer/issues",
     1511                "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3"
     1512            },
     1513            "funding": [
     1514                {
     1515                    "url": "https://github.com/sebastianbergmann",
     1516                    "type": "github"
     1517                }
     1518            ],
     1519            "time": "2020-10-26T13:16:10+00:00"
     1520        },
     1521        {
     1522            "name": "phpunit/phpunit",
     1523            "version": "9.6.19",
     1524            "source": {
     1525                "type": "git",
     1526                "url": "https://github.com/sebastianbergmann/phpunit.git",
     1527                "reference": "a1a54a473501ef4cdeaae4e06891674114d79db8"
     1528            },
     1529            "dist": {
     1530                "type": "zip",
     1531                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a1a54a473501ef4cdeaae4e06891674114d79db8",
     1532                "reference": "a1a54a473501ef4cdeaae4e06891674114d79db8",
     1533                "shasum": ""
     1534            },
     1535            "require": {
     1536                "doctrine/instantiator": "^1.3.1 || ^2",
     1537                "ext-dom": "*",
     1538                "ext-json": "*",
     1539                "ext-libxml": "*",
     1540                "ext-mbstring": "*",
     1541                "ext-xml": "*",
     1542                "ext-xmlwriter": "*",
     1543                "myclabs/deep-copy": "^1.10.1",
     1544                "phar-io/manifest": "^2.0.3",
     1545                "phar-io/version": "^3.0.2",
     1546                "php": ">=7.3",
     1547                "phpunit/php-code-coverage": "^9.2.28",
     1548                "phpunit/php-file-iterator": "^3.0.5",
     1549                "phpunit/php-invoker": "^3.1.1",
     1550                "phpunit/php-text-template": "^2.0.3",
     1551                "phpunit/php-timer": "^5.0.2",
     1552                "sebastian/cli-parser": "^1.0.1",
     1553                "sebastian/code-unit": "^1.0.6",
     1554                "sebastian/comparator": "^4.0.8",
     1555                "sebastian/diff": "^4.0.3",
     1556                "sebastian/environment": "^5.1.3",
     1557                "sebastian/exporter": "^4.0.5",
     1558                "sebastian/global-state": "^5.0.1",
     1559                "sebastian/object-enumerator": "^4.0.3",
     1560                "sebastian/resource-operations": "^3.0.3",
     1561                "sebastian/type": "^3.2",
     1562                "sebastian/version": "^3.0.2"
     1563            },
     1564            "suggest": {
     1565                "ext-soap": "To be able to generate mocks based on WSDL files",
     1566                "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage"
     1567            },
     1568            "bin": [
     1569                "phpunit"
     1570            ],
     1571            "type": "library",
     1572            "extra": {
     1573                "branch-alias": {
     1574                    "dev-master": "9.6-dev"
     1575                }
     1576            },
     1577            "autoload": {
     1578                "files": [
     1579                    "src/Framework/Assert/Functions.php"
     1580                ],
     1581                "classmap": [
     1582                    "src/"
     1583                ]
     1584            },
     1585            "notification-url": "https://packagist.org/downloads/",
     1586            "license": [
     1587                "BSD-3-Clause"
     1588            ],
     1589            "authors": [
     1590                {
     1591                    "name": "Sebastian Bergmann",
     1592                    "email": "sebastian@phpunit.de",
     1593                    "role": "lead"
     1594                }
     1595            ],
     1596            "description": "The PHP Unit Testing framework.",
     1597            "homepage": "https://phpunit.de/",
     1598            "keywords": [
     1599                "phpunit",
     1600                "testing",
     1601                "xunit"
     1602            ],
     1603            "support": {
     1604                "issues": "https://github.com/sebastianbergmann/phpunit/issues",
     1605                "security": "https://github.com/sebastianbergmann/phpunit/security/policy",
     1606                "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.19"
     1607            },
     1608            "funding": [
     1609                {
     1610                    "url": "https://phpunit.de/sponsors.html",
     1611                    "type": "custom"
     1612                },
     1613                {
     1614                    "url": "https://github.com/sebastianbergmann",
     1615                    "type": "github"
     1616                },
     1617                {
     1618                    "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit",
     1619                    "type": "tidelift"
     1620                }
     1621            ],
     1622            "time": "2024-04-05T04:35:58+00:00"
     1623        },
     1624        {
     1625            "name": "psr/cache",
     1626            "version": "3.0.0",
     1627            "source": {
     1628                "type": "git",
     1629                "url": "https://github.com/php-fig/cache.git",
     1630                "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf"
     1631            },
     1632            "dist": {
     1633                "type": "zip",
     1634                "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
     1635                "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
     1636                "shasum": ""
     1637            },
     1638            "require": {
     1639                "php": ">=8.0.0"
     1640            },
     1641            "type": "library",
     1642            "extra": {
     1643                "branch-alias": {
     1644                    "dev-master": "1.0.x-dev"
     1645                }
     1646            },
     1647            "autoload": {
     1648                "psr-4": {
     1649                    "Psr\\Cache\\": "src/"
     1650                }
     1651            },
     1652            "notification-url": "https://packagist.org/downloads/",
     1653            "license": [
     1654                "MIT"
     1655            ],
     1656            "authors": [
     1657                {
     1658                    "name": "PHP-FIG",
     1659                    "homepage": "https://www.php-fig.org/"
     1660                }
     1661            ],
     1662            "description": "Common interface for caching libraries",
     1663            "keywords": [
     1664                "cache",
     1665                "psr",
     1666                "psr-6"
     1667            ],
     1668            "support": {
     1669                "source": "https://github.com/php-fig/cache/tree/3.0.0"
     1670            },
     1671            "time": "2021-02-03T23:26:27+00:00"
     1672        },
     1673        {
     1674            "name": "psr/event-dispatcher",
     1675            "version": "1.0.0",
     1676            "source": {
     1677                "type": "git",
     1678                "url": "https://github.com/php-fig/event-dispatcher.git",
     1679                "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0"
     1680            },
     1681            "dist": {
     1682                "type": "zip",
     1683                "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0",
     1684                "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0",
     1685                "shasum": ""
     1686            },
     1687            "require": {
     1688                "php": ">=7.2.0"
     1689            },
     1690            "type": "library",
     1691            "extra": {
     1692                "branch-alias": {
     1693                    "dev-master": "1.0.x-dev"
     1694                }
     1695            },
     1696            "autoload": {
     1697                "psr-4": {
     1698                    "Psr\\EventDispatcher\\": "src/"
     1699                }
     1700            },
     1701            "notification-url": "https://packagist.org/downloads/",
     1702            "license": [
     1703                "MIT"
     1704            ],
     1705            "authors": [
     1706                {
     1707                    "name": "PHP-FIG",
     1708                    "homepage": "http://www.php-fig.org/"
     1709                }
     1710            ],
     1711            "description": "Standard interfaces for event handling.",
     1712            "keywords": [
     1713                "events",
     1714                "psr",
     1715                "psr-14"
     1716            ],
     1717            "support": {
     1718                "issues": "https://github.com/php-fig/event-dispatcher/issues",
     1719                "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0"
     1720            },
     1721            "time": "2019-01-08T18:20:26+00:00"
     1722        },
     1723        {
     1724            "name": "sebastian/cli-parser",
     1725            "version": "1.0.2",
     1726            "source": {
     1727                "type": "git",
     1728                "url": "https://github.com/sebastianbergmann/cli-parser.git",
     1729                "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b"
     1730            },
     1731            "dist": {
     1732                "type": "zip",
     1733                "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/2b56bea83a09de3ac06bb18b92f068e60cc6f50b",
     1734                "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b",
     1735                "shasum": ""
     1736            },
     1737            "require": {
     1738                "php": ">=7.3"
     1739            },
     1740            "require-dev": {
     1741                "phpunit/phpunit": "^9.3"
     1742            },
     1743            "type": "library",
     1744            "extra": {
     1745                "branch-alias": {
     1746                    "dev-master": "1.0-dev"
     1747                }
     1748            },
     1749            "autoload": {
     1750                "classmap": [
     1751                    "src/"
     1752                ]
     1753            },
     1754            "notification-url": "https://packagist.org/downloads/",
     1755            "license": [
     1756                "BSD-3-Clause"
     1757            ],
     1758            "authors": [
     1759                {
     1760                    "name": "Sebastian Bergmann",
     1761                    "email": "sebastian@phpunit.de",
     1762                    "role": "lead"
     1763                }
     1764            ],
     1765            "description": "Library for parsing CLI options",
     1766            "homepage": "https://github.com/sebastianbergmann/cli-parser",
     1767            "support": {
     1768                "issues": "https://github.com/sebastianbergmann/cli-parser/issues",
     1769                "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.2"
     1770            },
     1771            "funding": [
     1772                {
     1773                    "url": "https://github.com/sebastianbergmann",
     1774                    "type": "github"
     1775                }
     1776            ],
     1777            "time": "2024-03-02T06:27:43+00:00"
     1778        },
     1779        {
     1780            "name": "sebastian/code-unit",
     1781            "version": "1.0.8",
     1782            "source": {
     1783                "type": "git",
     1784                "url": "https://github.com/sebastianbergmann/code-unit.git",
     1785                "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120"
     1786            },
     1787            "dist": {
     1788                "type": "zip",
     1789                "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120",
     1790                "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120",
     1791                "shasum": ""
     1792            },
     1793            "require": {
     1794                "php": ">=7.3"
     1795            },
     1796            "require-dev": {
     1797                "phpunit/phpunit": "^9.3"
     1798            },
     1799            "type": "library",
     1800            "extra": {
     1801                "branch-alias": {
     1802                    "dev-master": "1.0-dev"
     1803                }
     1804            },
     1805            "autoload": {
     1806                "classmap": [
     1807                    "src/"
     1808                ]
     1809            },
     1810            "notification-url": "https://packagist.org/downloads/",
     1811            "license": [
     1812                "BSD-3-Clause"
     1813            ],
     1814            "authors": [
     1815                {
     1816                    "name": "Sebastian Bergmann",
     1817                    "email": "sebastian@phpunit.de",
     1818                    "role": "lead"
     1819                }
     1820            ],
     1821            "description": "Collection of value objects that represent the PHP code units",
     1822            "homepage": "https://github.com/sebastianbergmann/code-unit",
     1823            "support": {
     1824                "issues": "https://github.com/sebastianbergmann/code-unit/issues",
     1825                "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8"
     1826            },
     1827            "funding": [
     1828                {
     1829                    "url": "https://github.com/sebastianbergmann",
     1830                    "type": "github"
     1831                }
     1832            ],
     1833            "time": "2020-10-26T13:08:54+00:00"
     1834        },
     1835        {
     1836            "name": "sebastian/code-unit-reverse-lookup",
     1837            "version": "2.0.3",
     1838            "source": {
     1839                "type": "git",
     1840                "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
     1841                "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5"
     1842            },
     1843            "dist": {
     1844                "type": "zip",
     1845                "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
     1846                "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
     1847                "shasum": ""
     1848            },
     1849            "require": {
     1850                "php": ">=7.3"
     1851            },
     1852            "require-dev": {
     1853                "phpunit/phpunit": "^9.3"
     1854            },
     1855            "type": "library",
     1856            "extra": {
     1857                "branch-alias": {
     1858                    "dev-master": "2.0-dev"
     1859                }
     1860            },
     1861            "autoload": {
     1862                "classmap": [
     1863                    "src/"
     1864                ]
     1865            },
     1866            "notification-url": "https://packagist.org/downloads/",
     1867            "license": [
     1868                "BSD-3-Clause"
     1869            ],
     1870            "authors": [
     1871                {
     1872                    "name": "Sebastian Bergmann",
     1873                    "email": "sebastian@phpunit.de"
     1874                }
     1875            ],
     1876            "description": "Looks up which function or method a line of code belongs to",
     1877            "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
     1878            "support": {
     1879                "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
     1880                "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3"
     1881            },
     1882            "funding": [
     1883                {
     1884                    "url": "https://github.com/sebastianbergmann",
     1885                    "type": "github"
     1886                }
     1887            ],
     1888            "time": "2020-09-28T05:30:19+00:00"
     1889        },
     1890        {
     1891            "name": "sebastian/comparator",
     1892            "version": "4.0.8",
     1893            "source": {
     1894                "type": "git",
     1895                "url": "https://github.com/sebastianbergmann/comparator.git",
     1896                "reference": "fa0f136dd2334583309d32b62544682ee972b51a"
     1897            },
     1898            "dist": {
     1899                "type": "zip",
     1900                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a",
     1901                "reference": "fa0f136dd2334583309d32b62544682ee972b51a",
     1902                "shasum": ""
     1903            },
     1904            "require": {
     1905                "php": ">=7.3",
     1906                "sebastian/diff": "^4.0",
     1907                "sebastian/exporter": "^4.0"
     1908            },
     1909            "require-dev": {
     1910                "phpunit/phpunit": "^9.3"
     1911            },
     1912            "type": "library",
     1913            "extra": {
     1914                "branch-alias": {
     1915                    "dev-master": "4.0-dev"
     1916                }
     1917            },
     1918            "autoload": {
     1919                "classmap": [
     1920                    "src/"
     1921                ]
     1922            },
     1923            "notification-url": "https://packagist.org/downloads/",
     1924            "license": [
     1925                "BSD-3-Clause"
     1926            ],
     1927            "authors": [
     1928                {
     1929                    "name": "Sebastian Bergmann",
     1930                    "email": "sebastian@phpunit.de"
     1931                },
     1932                {
     1933                    "name": "Jeff Welch",
     1934                    "email": "whatthejeff@gmail.com"
     1935                },
     1936                {
     1937                    "name": "Volker Dusch",
     1938                    "email": "github@wallbash.com"
     1939                },
     1940                {
     1941                    "name": "Bernhard Schussek",
     1942                    "email": "bschussek@2bepublished.at"
     1943                }
     1944            ],
     1945            "description": "Provides the functionality to compare PHP values for equality",
     1946            "homepage": "https://github.com/sebastianbergmann/comparator",
     1947            "keywords": [
     1948                "comparator",
     1949                "compare",
     1950                "equality"
     1951            ],
     1952            "support": {
     1953                "issues": "https://github.com/sebastianbergmann/comparator/issues",
     1954                "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8"
     1955            },
     1956            "funding": [
     1957                {
     1958                    "url": "https://github.com/sebastianbergmann",
     1959                    "type": "github"
     1960                }
     1961            ],
     1962            "time": "2022-09-14T12:41:17+00:00"
     1963        },
     1964        {
     1965            "name": "sebastian/complexity",
     1966            "version": "2.0.3",
     1967            "source": {
     1968                "type": "git",
     1969                "url": "https://github.com/sebastianbergmann/complexity.git",
     1970                "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a"
     1971            },
     1972            "dist": {
     1973                "type": "zip",
     1974                "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a",
     1975                "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a",
     1976                "shasum": ""
     1977            },
     1978            "require": {
     1979                "nikic/php-parser": "^4.18 || ^5.0",
     1980                "php": ">=7.3"
     1981            },
     1982            "require-dev": {
     1983                "phpunit/phpunit": "^9.3"
     1984            },
     1985            "type": "library",
     1986            "extra": {
     1987                "branch-alias": {
     1988                    "dev-master": "2.0-dev"
     1989                }
     1990            },
     1991            "autoload": {
     1992                "classmap": [
     1993                    "src/"
     1994                ]
     1995            },
     1996            "notification-url": "https://packagist.org/downloads/",
     1997            "license": [
     1998                "BSD-3-Clause"
     1999            ],
     2000            "authors": [
     2001                {
     2002                    "name": "Sebastian Bergmann",
     2003                    "email": "sebastian@phpunit.de",
     2004                    "role": "lead"
     2005                }
     2006            ],
     2007            "description": "Library for calculating the complexity of PHP code units",
     2008            "homepage": "https://github.com/sebastianbergmann/complexity",
     2009            "support": {
     2010                "issues": "https://github.com/sebastianbergmann/complexity/issues",
     2011                "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3"
     2012            },
     2013            "funding": [
     2014                {
     2015                    "url": "https://github.com/sebastianbergmann",
     2016                    "type": "github"
     2017                }
     2018            ],
     2019            "time": "2023-12-22T06:19:30+00:00"
     2020        },
     2021        {
     2022            "name": "sebastian/diff",
     2023            "version": "4.0.6",
     2024            "source": {
     2025                "type": "git",
     2026                "url": "https://github.com/sebastianbergmann/diff.git",
     2027                "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc"
     2028            },
     2029            "dist": {
     2030                "type": "zip",
     2031                "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ba01945089c3a293b01ba9badc29ad55b106b0bc",
     2032                "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc",
     2033                "shasum": ""
     2034            },
     2035            "require": {
     2036                "php": ">=7.3"
     2037            },
     2038            "require-dev": {
     2039                "phpunit/phpunit": "^9.3",
     2040                "symfony/process": "^4.2 || ^5"
     2041            },
     2042            "type": "library",
     2043            "extra": {
     2044                "branch-alias": {
     2045                    "dev-master": "4.0-dev"
     2046                }
     2047            },
     2048            "autoload": {
     2049                "classmap": [
     2050                    "src/"
     2051                ]
     2052            },
     2053            "notification-url": "https://packagist.org/downloads/",
     2054            "license": [
     2055                "BSD-3-Clause"
     2056            ],
     2057            "authors": [
     2058                {
     2059                    "name": "Sebastian Bergmann",
     2060                    "email": "sebastian@phpunit.de"
     2061                },
     2062                {
     2063                    "name": "Kore Nordmann",
     2064                    "email": "mail@kore-nordmann.de"
     2065                }
     2066            ],
     2067            "description": "Diff implementation",
     2068            "homepage": "https://github.com/sebastianbergmann/diff",
     2069            "keywords": [
     2070                "diff",
     2071                "udiff",
     2072                "unidiff",
     2073                "unified diff"
     2074            ],
     2075            "support": {
     2076                "issues": "https://github.com/sebastianbergmann/diff/issues",
     2077                "source": "https://github.com/sebastianbergmann/diff/tree/4.0.6"
     2078            },
     2079            "funding": [
     2080                {
     2081                    "url": "https://github.com/sebastianbergmann",
     2082                    "type": "github"
     2083                }
     2084            ],
     2085            "time": "2024-03-02T06:30:58+00:00"
     2086        },
     2087        {
     2088            "name": "sebastian/environment",
     2089            "version": "5.1.5",
     2090            "source": {
     2091                "type": "git",
     2092                "url": "https://github.com/sebastianbergmann/environment.git",
     2093                "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed"
     2094            },
     2095            "dist": {
     2096                "type": "zip",
     2097                "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed",
     2098                "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed",
     2099                "shasum": ""
     2100            },
     2101            "require": {
     2102                "php": ">=7.3"
     2103            },
     2104            "require-dev": {
     2105                "phpunit/phpunit": "^9.3"
     2106            },
     2107            "suggest": {
     2108                "ext-posix": "*"
     2109            },
     2110            "type": "library",
     2111            "extra": {
     2112                "branch-alias": {
     2113                    "dev-master": "5.1-dev"
     2114                }
     2115            },
     2116            "autoload": {
     2117                "classmap": [
     2118                    "src/"
     2119                ]
     2120            },
     2121            "notification-url": "https://packagist.org/downloads/",
     2122            "license": [
     2123                "BSD-3-Clause"
     2124            ],
     2125            "authors": [
     2126                {
     2127                    "name": "Sebastian Bergmann",
     2128                    "email": "sebastian@phpunit.de"
     2129                }
     2130            ],
     2131            "description": "Provides functionality to handle HHVM/PHP environments",
     2132            "homepage": "http://www.github.com/sebastianbergmann/environment",
     2133            "keywords": [
     2134                "Xdebug",
     2135                "environment",
     2136                "hhvm"
     2137            ],
     2138            "support": {
     2139                "issues": "https://github.com/sebastianbergmann/environment/issues",
     2140                "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5"
     2141            },
     2142            "funding": [
     2143                {
     2144                    "url": "https://github.com/sebastianbergmann",
     2145                    "type": "github"
     2146                }
     2147            ],
     2148            "time": "2023-02-03T06:03:51+00:00"
     2149        },
     2150        {
     2151            "name": "sebastian/exporter",
     2152            "version": "4.0.6",
     2153            "source": {
     2154                "type": "git",
     2155                "url": "https://github.com/sebastianbergmann/exporter.git",
     2156                "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72"
     2157            },
     2158            "dist": {
     2159                "type": "zip",
     2160                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/78c00df8f170e02473b682df15bfcdacc3d32d72",
     2161                "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72",
     2162                "shasum": ""
     2163            },
     2164            "require": {
     2165                "php": ">=7.3",
     2166                "sebastian/recursion-context": "^4.0"
     2167            },
     2168            "require-dev": {
     2169                "ext-mbstring": "*",
     2170                "phpunit/phpunit": "^9.3"
     2171            },
     2172            "type": "library",
     2173            "extra": {
     2174                "branch-alias": {
     2175                    "dev-master": "4.0-dev"
     2176                }
     2177            },
     2178            "autoload": {
     2179                "classmap": [
     2180                    "src/"
     2181                ]
     2182            },
     2183            "notification-url": "https://packagist.org/downloads/",
     2184            "license": [
     2185                "BSD-3-Clause"
     2186            ],
     2187            "authors": [
     2188                {
     2189                    "name": "Sebastian Bergmann",
     2190                    "email": "sebastian@phpunit.de"
     2191                },
     2192                {
     2193                    "name": "Jeff Welch",
     2194                    "email": "whatthejeff@gmail.com"
     2195                },
     2196                {
     2197                    "name": "Volker Dusch",
     2198                    "email": "github@wallbash.com"
     2199                },
     2200                {
     2201                    "name": "Adam Harvey",
     2202                    "email": "aharvey@php.net"
     2203                },
     2204                {
     2205                    "name": "Bernhard Schussek",
     2206                    "email": "bschussek@gmail.com"
     2207                }
     2208            ],
     2209            "description": "Provides the functionality to export PHP variables for visualization",
     2210            "homepage": "https://www.github.com/sebastianbergmann/exporter",
     2211            "keywords": [
     2212                "export",
     2213                "exporter"
     2214            ],
     2215            "support": {
     2216                "issues": "https://github.com/sebastianbergmann/exporter/issues",
     2217                "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.6"
     2218            },
     2219            "funding": [
     2220                {
     2221                    "url": "https://github.com/sebastianbergmann",
     2222                    "type": "github"
     2223                }
     2224            ],
     2225            "time": "2024-03-02T06:33:00+00:00"
     2226        },
     2227        {
     2228            "name": "sebastian/global-state",
     2229            "version": "5.0.7",
     2230            "source": {
     2231                "type": "git",
     2232                "url": "https://github.com/sebastianbergmann/global-state.git",
     2233                "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9"
     2234            },
     2235            "dist": {
     2236                "type": "zip",
     2237                "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9",
     2238                "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9",
     2239                "shasum": ""
     2240            },
     2241            "require": {
     2242                "php": ">=7.3",
     2243                "sebastian/object-reflector": "^2.0",
     2244                "sebastian/recursion-context": "^4.0"
     2245            },
     2246            "require-dev": {
     2247                "ext-dom": "*",
     2248                "phpunit/phpunit": "^9.3"
     2249            },
     2250            "suggest": {
     2251                "ext-uopz": "*"
     2252            },
     2253            "type": "library",
     2254            "extra": {
     2255                "branch-alias": {
     2256                    "dev-master": "5.0-dev"
     2257                }
     2258            },
     2259            "autoload": {
     2260                "classmap": [
     2261                    "src/"
     2262                ]
     2263            },
     2264            "notification-url": "https://packagist.org/downloads/",
     2265            "license": [
     2266                "BSD-3-Clause"
     2267            ],
     2268            "authors": [
     2269                {
     2270                    "name": "Sebastian Bergmann",
     2271                    "email": "sebastian@phpunit.de"
     2272                }
     2273            ],
     2274            "description": "Snapshotting of global state",
     2275            "homepage": "http://www.github.com/sebastianbergmann/global-state",
     2276            "keywords": [
     2277                "global state"
     2278            ],
     2279            "support": {
     2280                "issues": "https://github.com/sebastianbergmann/global-state/issues",
     2281                "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.7"
     2282            },
     2283            "funding": [
     2284                {
     2285                    "url": "https://github.com/sebastianbergmann",
     2286                    "type": "github"
     2287                }
     2288            ],
     2289            "time": "2024-03-02T06:35:11+00:00"
     2290        },
     2291        {
     2292            "name": "sebastian/lines-of-code",
     2293            "version": "1.0.4",
     2294            "source": {
     2295                "type": "git",
     2296                "url": "https://github.com/sebastianbergmann/lines-of-code.git",
     2297                "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5"
     2298            },
     2299            "dist": {
     2300                "type": "zip",
     2301                "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5",
     2302                "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5",
     2303                "shasum": ""
     2304            },
     2305            "require": {
     2306                "nikic/php-parser": "^4.18 || ^5.0",
     2307                "php": ">=7.3"
     2308            },
     2309            "require-dev": {
     2310                "phpunit/phpunit": "^9.3"
     2311            },
     2312            "type": "library",
     2313            "extra": {
     2314                "branch-alias": {
     2315                    "dev-master": "1.0-dev"
     2316                }
     2317            },
     2318            "autoload": {
     2319                "classmap": [
     2320                    "src/"
     2321                ]
     2322            },
     2323            "notification-url": "https://packagist.org/downloads/",
     2324            "license": [
     2325                "BSD-3-Clause"
     2326            ],
     2327            "authors": [
     2328                {
     2329                    "name": "Sebastian Bergmann",
     2330                    "email": "sebastian@phpunit.de",
     2331                    "role": "lead"
     2332                }
     2333            ],
     2334            "description": "Library for counting the lines of code in PHP source code",
     2335            "homepage": "https://github.com/sebastianbergmann/lines-of-code",
     2336            "support": {
     2337                "issues": "https://github.com/sebastianbergmann/lines-of-code/issues",
     2338                "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.4"
     2339            },
     2340            "funding": [
     2341                {
     2342                    "url": "https://github.com/sebastianbergmann",
     2343                    "type": "github"
     2344                }
     2345            ],
     2346            "time": "2023-12-22T06:20:34+00:00"
     2347        },
     2348        {
     2349            "name": "sebastian/object-enumerator",
     2350            "version": "4.0.4",
     2351            "source": {
     2352                "type": "git",
     2353                "url": "https://github.com/sebastianbergmann/object-enumerator.git",
     2354                "reference": "5c9eeac41b290a3712d88851518825ad78f45c71"
     2355            },
     2356            "dist": {
     2357                "type": "zip",
     2358                "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71",
     2359                "reference": "5c9eeac41b290a3712d88851518825ad78f45c71",
     2360                "shasum": ""
     2361            },
     2362            "require": {
     2363                "php": ">=7.3",
     2364                "sebastian/object-reflector": "^2.0",
     2365                "sebastian/recursion-context": "^4.0"
     2366            },
     2367            "require-dev": {
     2368                "phpunit/phpunit": "^9.3"
     2369            },
     2370            "type": "library",
     2371            "extra": {
     2372                "branch-alias": {
     2373                    "dev-master": "4.0-dev"
     2374                }
     2375            },
     2376            "autoload": {
     2377                "classmap": [
     2378                    "src/"
     2379                ]
     2380            },
     2381            "notification-url": "https://packagist.org/downloads/",
     2382            "license": [
     2383                "BSD-3-Clause"
     2384            ],
     2385            "authors": [
     2386                {
     2387                    "name": "Sebastian Bergmann",
     2388                    "email": "sebastian@phpunit.de"
     2389                }
     2390            ],
     2391            "description": "Traverses array structures and object graphs to enumerate all referenced objects",
     2392            "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
     2393            "support": {
     2394                "issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
     2395                "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4"
     2396            },
     2397            "funding": [
     2398                {
     2399                    "url": "https://github.com/sebastianbergmann",
     2400                    "type": "github"
     2401                }
     2402            ],
     2403            "time": "2020-10-26T13:12:34+00:00"
     2404        },
     2405        {
     2406            "name": "sebastian/object-reflector",
     2407            "version": "2.0.4",
     2408            "source": {
     2409                "type": "git",
     2410                "url": "https://github.com/sebastianbergmann/object-reflector.git",
     2411                "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7"
     2412            },
     2413            "dist": {
     2414                "type": "zip",
     2415                "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
     2416                "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
     2417                "shasum": ""
     2418            },
     2419            "require": {
     2420                "php": ">=7.3"
     2421            },
     2422            "require-dev": {
     2423                "phpunit/phpunit": "^9.3"
     2424            },
     2425            "type": "library",
     2426            "extra": {
     2427                "branch-alias": {
     2428                    "dev-master": "2.0-dev"
     2429                }
     2430            },
     2431            "autoload": {
     2432                "classmap": [
     2433                    "src/"
     2434                ]
     2435            },
     2436            "notification-url": "https://packagist.org/downloads/",
     2437            "license": [
     2438                "BSD-3-Clause"
     2439            ],
     2440            "authors": [
     2441                {
     2442                    "name": "Sebastian Bergmann",
     2443                    "email": "sebastian@phpunit.de"
     2444                }
     2445            ],
     2446            "description": "Allows reflection of object attributes, including inherited and non-public ones",
     2447            "homepage": "https://github.com/sebastianbergmann/object-reflector/",
     2448            "support": {
     2449                "issues": "https://github.com/sebastianbergmann/object-reflector/issues",
     2450                "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4"
     2451            },
     2452            "funding": [
     2453                {
     2454                    "url": "https://github.com/sebastianbergmann",
     2455                    "type": "github"
     2456                }
     2457            ],
     2458            "time": "2020-10-26T13:14:26+00:00"
     2459        },
     2460        {
     2461            "name": "sebastian/recursion-context",
     2462            "version": "4.0.5",
     2463            "source": {
     2464                "type": "git",
     2465                "url": "https://github.com/sebastianbergmann/recursion-context.git",
     2466                "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1"
     2467            },
     2468            "dist": {
     2469                "type": "zip",
     2470                "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1",
     2471                "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1",
     2472                "shasum": ""
     2473            },
     2474            "require": {
     2475                "php": ">=7.3"
     2476            },
     2477            "require-dev": {
     2478                "phpunit/phpunit": "^9.3"
     2479            },
     2480            "type": "library",
     2481            "extra": {
     2482                "branch-alias": {
     2483                    "dev-master": "4.0-dev"
     2484                }
     2485            },
     2486            "autoload": {
     2487                "classmap": [
     2488                    "src/"
     2489                ]
     2490            },
     2491            "notification-url": "https://packagist.org/downloads/",
     2492            "license": [
     2493                "BSD-3-Clause"
     2494            ],
     2495            "authors": [
     2496                {
     2497                    "name": "Sebastian Bergmann",
     2498                    "email": "sebastian@phpunit.de"
     2499                },
     2500                {
     2501                    "name": "Jeff Welch",
     2502                    "email": "whatthejeff@gmail.com"
     2503                },
     2504                {
     2505                    "name": "Adam Harvey",
     2506                    "email": "aharvey@php.net"
     2507                }
     2508            ],
     2509            "description": "Provides functionality to recursively process PHP variables",
     2510            "homepage": "https://github.com/sebastianbergmann/recursion-context",
     2511            "support": {
     2512                "issues": "https://github.com/sebastianbergmann/recursion-context/issues",
     2513                "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5"
     2514            },
     2515            "funding": [
     2516                {
     2517                    "url": "https://github.com/sebastianbergmann",
     2518                    "type": "github"
     2519                }
     2520            ],
     2521            "time": "2023-02-03T06:07:39+00:00"
     2522        },
     2523        {
     2524            "name": "sebastian/resource-operations",
     2525            "version": "3.0.4",
     2526            "source": {
     2527                "type": "git",
     2528                "url": "https://github.com/sebastianbergmann/resource-operations.git",
     2529                "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e"
     2530            },
     2531            "dist": {
     2532                "type": "zip",
     2533                "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/05d5692a7993ecccd56a03e40cd7e5b09b1d404e",
     2534                "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e",
     2535                "shasum": ""
     2536            },
     2537            "require": {
     2538                "php": ">=7.3"
     2539            },
     2540            "require-dev": {
     2541                "phpunit/phpunit": "^9.0"
     2542            },
     2543            "type": "library",
     2544            "extra": {
     2545                "branch-alias": {
     2546                    "dev-main": "3.0-dev"
     2547                }
     2548            },
     2549            "autoload": {
     2550                "classmap": [
     2551                    "src/"
     2552                ]
     2553            },
     2554            "notification-url": "https://packagist.org/downloads/",
     2555            "license": [
     2556                "BSD-3-Clause"
     2557            ],
     2558            "authors": [
     2559                {
     2560                    "name": "Sebastian Bergmann",
     2561                    "email": "sebastian@phpunit.de"
     2562                }
     2563            ],
     2564            "description": "Provides a list of PHP built-in functions that operate on resources",
     2565            "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
     2566            "support": {
     2567                "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.4"
     2568            },
     2569            "funding": [
     2570                {
     2571                    "url": "https://github.com/sebastianbergmann",
     2572                    "type": "github"
     2573                }
     2574            ],
     2575            "time": "2024-03-14T16:00:52+00:00"
     2576        },
     2577        {
     2578            "name": "sebastian/type",
     2579            "version": "3.2.1",
     2580            "source": {
     2581                "type": "git",
     2582                "url": "https://github.com/sebastianbergmann/type.git",
     2583                "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7"
     2584            },
     2585            "dist": {
     2586                "type": "zip",
     2587                "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7",
     2588                "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7",
     2589                "shasum": ""
     2590            },
     2591            "require": {
     2592                "php": ">=7.3"
     2593            },
     2594            "require-dev": {
     2595                "phpunit/phpunit": "^9.5"
     2596            },
     2597            "type": "library",
     2598            "extra": {
     2599                "branch-alias": {
     2600                    "dev-master": "3.2-dev"
     2601                }
     2602            },
     2603            "autoload": {
     2604                "classmap": [
     2605                    "src/"
     2606                ]
     2607            },
     2608            "notification-url": "https://packagist.org/downloads/",
     2609            "license": [
     2610                "BSD-3-Clause"
     2611            ],
     2612            "authors": [
     2613                {
     2614                    "name": "Sebastian Bergmann",
     2615                    "email": "sebastian@phpunit.de",
     2616                    "role": "lead"
     2617                }
     2618            ],
     2619            "description": "Collection of value objects that represent the types of the PHP type system",
     2620            "homepage": "https://github.com/sebastianbergmann/type",
     2621            "support": {
     2622                "issues": "https://github.com/sebastianbergmann/type/issues",
     2623                "source": "https://github.com/sebastianbergmann/type/tree/3.2.1"
     2624            },
     2625            "funding": [
     2626                {
     2627                    "url": "https://github.com/sebastianbergmann",
     2628                    "type": "github"
     2629                }
     2630            ],
     2631            "time": "2023-02-03T06:13:03+00:00"
     2632        },
     2633        {
     2634            "name": "sebastian/version",
     2635            "version": "3.0.2",
     2636            "source": {
     2637                "type": "git",
     2638                "url": "https://github.com/sebastianbergmann/version.git",
     2639                "reference": "c6c1022351a901512170118436c764e473f6de8c"
     2640            },
     2641            "dist": {
     2642                "type": "zip",
     2643                "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c",
     2644                "reference": "c6c1022351a901512170118436c764e473f6de8c",
     2645                "shasum": ""
     2646            },
     2647            "require": {
     2648                "php": ">=7.3"
     2649            },
     2650            "type": "library",
     2651            "extra": {
     2652                "branch-alias": {
     2653                    "dev-master": "3.0-dev"
     2654                }
     2655            },
     2656            "autoload": {
     2657                "classmap": [
     2658                    "src/"
     2659                ]
     2660            },
     2661            "notification-url": "https://packagist.org/downloads/",
     2662            "license": [
     2663                "BSD-3-Clause"
     2664            ],
     2665            "authors": [
     2666                {
     2667                    "name": "Sebastian Bergmann",
     2668                    "email": "sebastian@phpunit.de",
     2669                    "role": "lead"
     2670                }
     2671            ],
     2672            "description": "Library that helps with managing the version number of Git-hosted PHP projects",
     2673            "homepage": "https://github.com/sebastianbergmann/version",
     2674            "support": {
     2675                "issues": "https://github.com/sebastianbergmann/version/issues",
     2676                "source": "https://github.com/sebastianbergmann/version/tree/3.0.2"
     2677            },
     2678            "funding": [
     2679                {
     2680                    "url": "https://github.com/sebastianbergmann",
     2681                    "type": "github"
     2682                }
     2683            ],
     2684            "time": "2020-09-28T06:39:44+00:00"
    3152685        },
    3162686        {
    3172687            "name": "squizlabs/php_codesniffer",
    318             "version": "3.8.1",
     2688            "version": "3.9.2",
    3192689            "source": {
    3202690                "type": "git",
    3212691                "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git",
    322                 "reference": "14f5fff1e64118595db5408e946f3a22c75807f7"
    323             },
    324             "dist": {
    325                 "type": "zip",
    326                 "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/14f5fff1e64118595db5408e946f3a22c75807f7",
    327                 "reference": "14f5fff1e64118595db5408e946f3a22c75807f7",
     2692                "reference": "aac1f6f347a5c5ac6bc98ad395007df00990f480"
     2693            },
     2694            "dist": {
     2695                "type": "zip",
     2696                "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/aac1f6f347a5c5ac6bc98ad395007df00990f480",
     2697                "reference": "aac1f6f347a5c5ac6bc98ad395007df00990f480",
    3282698                "shasum": ""
    3292699            },
     
    3922762                }
    3932763            ],
    394             "time": "2024-01-11T20:47:48+00:00"
     2764            "time": "2024-04-23T20:25:34+00:00"
     2765        },
     2766        {
     2767            "name": "symfony/event-dispatcher",
     2768            "version": "v7.0.7",
     2769            "source": {
     2770                "type": "git",
     2771                "url": "https://github.com/symfony/event-dispatcher.git",
     2772                "reference": "db2a7fab994d67d92356bb39c367db115d9d30f9"
     2773            },
     2774            "dist": {
     2775                "type": "zip",
     2776                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/db2a7fab994d67d92356bb39c367db115d9d30f9",
     2777                "reference": "db2a7fab994d67d92356bb39c367db115d9d30f9",
     2778                "shasum": ""
     2779            },
     2780            "require": {
     2781                "php": ">=8.2",
     2782                "symfony/event-dispatcher-contracts": "^2.5|^3"
     2783            },
     2784            "conflict": {
     2785                "symfony/dependency-injection": "<6.4",
     2786                "symfony/service-contracts": "<2.5"
     2787            },
     2788            "provide": {
     2789                "psr/event-dispatcher-implementation": "1.0",
     2790                "symfony/event-dispatcher-implementation": "2.0|3.0"
     2791            },
     2792            "require-dev": {
     2793                "psr/log": "^1|^2|^3",
     2794                "symfony/config": "^6.4|^7.0",
     2795                "symfony/dependency-injection": "^6.4|^7.0",
     2796                "symfony/error-handler": "^6.4|^7.0",
     2797                "symfony/expression-language": "^6.4|^7.0",
     2798                "symfony/http-foundation": "^6.4|^7.0",
     2799                "symfony/service-contracts": "^2.5|^3",
     2800                "symfony/stopwatch": "^6.4|^7.0"
     2801            },
     2802            "type": "library",
     2803            "autoload": {
     2804                "psr-4": {
     2805                    "Symfony\\Component\\EventDispatcher\\": ""
     2806                },
     2807                "exclude-from-classmap": [
     2808                    "/Tests/"
     2809                ]
     2810            },
     2811            "notification-url": "https://packagist.org/downloads/",
     2812            "license": [
     2813                "MIT"
     2814            ],
     2815            "authors": [
     2816                {
     2817                    "name": "Fabien Potencier",
     2818                    "email": "fabien@symfony.com"
     2819                },
     2820                {
     2821                    "name": "Symfony Community",
     2822                    "homepage": "https://symfony.com/contributors"
     2823                }
     2824            ],
     2825            "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
     2826            "homepage": "https://symfony.com",
     2827            "support": {
     2828                "source": "https://github.com/symfony/event-dispatcher/tree/v7.0.7"
     2829            },
     2830            "funding": [
     2831                {
     2832                    "url": "https://symfony.com/sponsor",
     2833                    "type": "custom"
     2834                },
     2835                {
     2836                    "url": "https://github.com/fabpot",
     2837                    "type": "github"
     2838                },
     2839                {
     2840                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
     2841                    "type": "tidelift"
     2842                }
     2843            ],
     2844            "time": "2024-04-18T09:29:19+00:00"
     2845        },
     2846        {
     2847            "name": "symfony/event-dispatcher-contracts",
     2848            "version": "v3.4.2",
     2849            "source": {
     2850                "type": "git",
     2851                "url": "https://github.com/symfony/event-dispatcher-contracts.git",
     2852                "reference": "4e64b49bf370ade88e567de29465762e316e4224"
     2853            },
     2854            "dist": {
     2855                "type": "zip",
     2856                "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/4e64b49bf370ade88e567de29465762e316e4224",
     2857                "reference": "4e64b49bf370ade88e567de29465762e316e4224",
     2858                "shasum": ""
     2859            },
     2860            "require": {
     2861                "php": ">=8.1",
     2862                "psr/event-dispatcher": "^1"
     2863            },
     2864            "type": "library",
     2865            "extra": {
     2866                "branch-alias": {
     2867                    "dev-main": "3.4-dev"
     2868                },
     2869                "thanks": {
     2870                    "name": "symfony/contracts",
     2871                    "url": "https://github.com/symfony/contracts"
     2872                }
     2873            },
     2874            "autoload": {
     2875                "psr-4": {
     2876                    "Symfony\\Contracts\\EventDispatcher\\": ""
     2877                }
     2878            },
     2879            "notification-url": "https://packagist.org/downloads/",
     2880            "license": [
     2881                "MIT"
     2882            ],
     2883            "authors": [
     2884                {
     2885                    "name": "Nicolas Grekas",
     2886                    "email": "p@tchwork.com"
     2887                },
     2888                {
     2889                    "name": "Symfony Community",
     2890                    "homepage": "https://symfony.com/contributors"
     2891                }
     2892            ],
     2893            "description": "Generic abstractions related to dispatching event",
     2894            "homepage": "https://symfony.com",
     2895            "keywords": [
     2896                "abstractions",
     2897                "contracts",
     2898                "decoupling",
     2899                "interfaces",
     2900                "interoperability",
     2901                "standards"
     2902            ],
     2903            "support": {
     2904                "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.2"
     2905            },
     2906            "funding": [
     2907                {
     2908                    "url": "https://symfony.com/sponsor",
     2909                    "type": "custom"
     2910                },
     2911                {
     2912                    "url": "https://github.com/fabpot",
     2913                    "type": "github"
     2914                },
     2915                {
     2916                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
     2917                    "type": "tidelift"
     2918                }
     2919            ],
     2920            "time": "2024-01-23T14:51:35+00:00"
     2921        },
     2922        {
     2923            "name": "symfony/polyfill-ctype",
     2924            "version": "v1.29.0",
     2925            "source": {
     2926                "type": "git",
     2927                "url": "https://github.com/symfony/polyfill-ctype.git",
     2928                "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4"
     2929            },
     2930            "dist": {
     2931                "type": "zip",
     2932                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4",
     2933                "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4",
     2934                "shasum": ""
     2935            },
     2936            "require": {
     2937                "php": ">=7.1"
     2938            },
     2939            "provide": {
     2940                "ext-ctype": "*"
     2941            },
     2942            "suggest": {
     2943                "ext-ctype": "For best performance"
     2944            },
     2945            "type": "library",
     2946            "extra": {
     2947                "thanks": {
     2948                    "name": "symfony/polyfill",
     2949                    "url": "https://github.com/symfony/polyfill"
     2950                }
     2951            },
     2952            "autoload": {
     2953                "files": [
     2954                    "bootstrap.php"
     2955                ],
     2956                "psr-4": {
     2957                    "Symfony\\Polyfill\\Ctype\\": ""
     2958                }
     2959            },
     2960            "notification-url": "https://packagist.org/downloads/",
     2961            "license": [
     2962                "MIT"
     2963            ],
     2964            "authors": [
     2965                {
     2966                    "name": "Gert de Pagter",
     2967                    "email": "BackEndTea@gmail.com"
     2968                },
     2969                {
     2970                    "name": "Symfony Community",
     2971                    "homepage": "https://symfony.com/contributors"
     2972                }
     2973            ],
     2974            "description": "Symfony polyfill for ctype functions",
     2975            "homepage": "https://symfony.com",
     2976            "keywords": [
     2977                "compatibility",
     2978                "ctype",
     2979                "polyfill",
     2980                "portable"
     2981            ],
     2982            "support": {
     2983                "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0"
     2984            },
     2985            "funding": [
     2986                {
     2987                    "url": "https://symfony.com/sponsor",
     2988                    "type": "custom"
     2989                },
     2990                {
     2991                    "url": "https://github.com/fabpot",
     2992                    "type": "github"
     2993                },
     2994                {
     2995                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
     2996                    "type": "tidelift"
     2997                }
     2998            ],
     2999            "time": "2024-01-29T20:11:03+00:00"
     3000        },
     3001        {
     3002            "name": "symfony/yaml",
     3003            "version": "v7.0.7",
     3004            "source": {
     3005                "type": "git",
     3006                "url": "https://github.com/symfony/yaml.git",
     3007                "reference": "0d3916ae69ea28b59d94b60c4f2b50f4e25adb5c"
     3008            },
     3009            "dist": {
     3010                "type": "zip",
     3011                "url": "https://api.github.com/repos/symfony/yaml/zipball/0d3916ae69ea28b59d94b60c4f2b50f4e25adb5c",
     3012                "reference": "0d3916ae69ea28b59d94b60c4f2b50f4e25adb5c",
     3013                "shasum": ""
     3014            },
     3015            "require": {
     3016                "php": ">=8.2",
     3017                "symfony/polyfill-ctype": "^1.8"
     3018            },
     3019            "conflict": {
     3020                "symfony/console": "<6.4"
     3021            },
     3022            "require-dev": {
     3023                "symfony/console": "^6.4|^7.0"
     3024            },
     3025            "bin": [
     3026                "Resources/bin/yaml-lint"
     3027            ],
     3028            "type": "library",
     3029            "autoload": {
     3030                "psr-4": {
     3031                    "Symfony\\Component\\Yaml\\": ""
     3032                },
     3033                "exclude-from-classmap": [
     3034                    "/Tests/"
     3035                ]
     3036            },
     3037            "notification-url": "https://packagist.org/downloads/",
     3038            "license": [
     3039                "MIT"
     3040            ],
     3041            "authors": [
     3042                {
     3043                    "name": "Fabien Potencier",
     3044                    "email": "fabien@symfony.com"
     3045                },
     3046                {
     3047                    "name": "Symfony Community",
     3048                    "homepage": "https://symfony.com/contributors"
     3049                }
     3050            ],
     3051            "description": "Loads and dumps YAML files",
     3052            "homepage": "https://symfony.com",
     3053            "support": {
     3054                "source": "https://github.com/symfony/yaml/tree/v7.0.7"
     3055            },
     3056            "funding": [
     3057                {
     3058                    "url": "https://symfony.com/sponsor",
     3059                    "type": "custom"
     3060                },
     3061                {
     3062                    "url": "https://github.com/fabpot",
     3063                    "type": "github"
     3064                },
     3065                {
     3066                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
     3067                    "type": "tidelift"
     3068                }
     3069            ],
     3070            "time": "2024-04-28T11:44:19+00:00"
     3071        },
     3072        {
     3073            "name": "thenlabs/class-builder",
     3074            "version": "v1.0.10",
     3075            "source": {
     3076                "type": "git",
     3077                "url": "https://github.com/thenlabs/class-builder.git",
     3078                "reference": "5c97bb3afaa952fd3e9cc78d01bb75770aeb5bbe"
     3079            },
     3080            "dist": {
     3081                "type": "zip",
     3082                "url": "https://api.github.com/repos/thenlabs/class-builder/zipball/5c97bb3afaa952fd3e9cc78d01bb75770aeb5bbe",
     3083                "reference": "5c97bb3afaa952fd3e9cc78d01bb75770aeb5bbe",
     3084                "shasum": ""
     3085            },
     3086            "require": {
     3087                "php": ">=7.2"
     3088            },
     3089            "require-dev": {
     3090                "doctrine/annotations": "^1.8",
     3091                "friendsofphp/php-cs-fixer": "^3.2",
     3092                "thenlabs/pyramidal-tests": "2.0.x-dev"
     3093            },
     3094            "type": "library",
     3095            "autoload": {
     3096                "psr-4": {
     3097                    "ThenLabs\\ClassBuilder\\": "src/"
     3098                }
     3099            },
     3100            "notification-url": "https://packagist.org/downloads/",
     3101            "license": [
     3102                "MIT"
     3103            ],
     3104            "authors": [
     3105                {
     3106                    "name": "Andy Daniel Navarro Taño",
     3107                    "email": "andaniel05@gmail.com"
     3108                }
     3109            ],
     3110            "description": "Dynamic management of classes, traits and interfaces in PHP.",
     3111            "keywords": [
     3112                "builder",
     3113                "builder-pattern",
     3114                "php-builder",
     3115                "php-class",
     3116                "php-classes"
     3117            ],
     3118            "support": {
     3119                "issues": "https://github.com/thenlabs/class-builder/issues",
     3120                "source": "https://github.com/thenlabs/class-builder/tree/v1.0.10"
     3121            },
     3122            "time": "2022-05-13T22:27:32+00:00"
     3123        },
     3124        {
     3125            "name": "thenlabs/components",
     3126            "version": "v1.1.3",
     3127            "source": {
     3128                "type": "git",
     3129                "url": "https://github.com/thenlabs/components.git",
     3130                "reference": "8550a7470078bbf525f2befc6a457abd2568b197"
     3131            },
     3132            "dist": {
     3133                "type": "zip",
     3134                "url": "https://api.github.com/repos/thenlabs/components/zipball/8550a7470078bbf525f2befc6a457abd2568b197",
     3135                "reference": "8550a7470078bbf525f2befc6a457abd2568b197",
     3136                "shasum": ""
     3137            },
     3138            "require": {
     3139                "composer/semver": ">=1.5",
     3140                "doctrine/annotations": "^1.6",
     3141                "php": ">=7.2",
     3142                "symfony/event-dispatcher": ">=4.4"
     3143            },
     3144            "require-dev": {
     3145                "friendsofphp/php-cs-fixer": "^3.2",
     3146                "thenlabs/pyramidal-tests": "2.0.x-dev"
     3147            },
     3148            "type": "library",
     3149            "autoload": {
     3150                "psr-4": {
     3151                    "ThenLabs\\Components\\": "src/"
     3152                }
     3153            },
     3154            "notification-url": "https://packagist.org/downloads/",
     3155            "license": [
     3156                "MIT"
     3157            ],
     3158            "authors": [
     3159                {
     3160                    "name": "Andy Daniel Navarro Taño",
     3161                    "email": "andaniel05@gmail.com"
     3162                }
     3163            ],
     3164            "description": "A custom implementation of the Composite pattern in PHP for create component types with useful functionalities.",
     3165            "keywords": [
     3166                "component-architecture",
     3167                "component-based",
     3168                "composite",
     3169                "composite-pattern"
     3170            ],
     3171            "support": {
     3172                "issues": "https://github.com/thenlabs/components/issues",
     3173                "source": "https://github.com/thenlabs/components/tree/v1.1.3"
     3174            },
     3175            "time": "2021-12-17T19:13:15+00:00"
     3176        },
     3177        {
     3178            "name": "thenlabs/pyramidal-tests",
     3179            "version": "2.0.x-dev",
     3180            "source": {
     3181                "type": "git",
     3182                "url": "https://github.com/thenlabs/pyramidal-tests.git",
     3183                "reference": "c53547d623ed49974d50723dfe02ef8625aaaa74"
     3184            },
     3185            "dist": {
     3186                "type": "zip",
     3187                "url": "https://api.github.com/repos/thenlabs/pyramidal-tests/zipball/c53547d623ed49974d50723dfe02ef8625aaaa74",
     3188                "reference": "c53547d623ed49974d50723dfe02ef8625aaaa74",
     3189                "shasum": ""
     3190            },
     3191            "require": {
     3192                "brick/varexporter": "^0.3.2",
     3193                "doctrine/annotations": "^1.13",
     3194                "phpunit/phpunit": "9.*",
     3195                "symfony/yaml": ">=4.4",
     3196                "thenlabs/class-builder": "^1.0.8",
     3197                "thenlabs/components": "^1.1"
     3198            },
     3199            "require-dev": {
     3200                "friendsofphp/php-cs-fixer": "^3.2"
     3201            },
     3202            "default-branch": true,
     3203            "bin": [
     3204                "bin/pyramidal"
     3205            ],
     3206            "type": "library",
     3207            "autoload": {
     3208                "psr-4": {
     3209                    "ThenLabs\\PyramidalTests\\": "src/"
     3210                }
     3211            },
     3212            "notification-url": "https://packagist.org/downloads/",
     3213            "license": [
     3214                "MIT"
     3215            ],
     3216            "authors": [
     3217                {
     3218                    "name": "Andy Daniel Navarro Taño",
     3219                    "email": "andaniel05@gmail.com"
     3220                }
     3221            ],
     3222            "support": {
     3223                "issues": "https://github.com/thenlabs/pyramidal-tests/issues",
     3224                "source": "https://github.com/thenlabs/pyramidal-tests/tree/2.0"
     3225            },
     3226            "time": "2023-03-31T19:43:20+00:00"
     3227        },
     3228        {
     3229            "name": "theseer/tokenizer",
     3230            "version": "1.2.3",
     3231            "source": {
     3232                "type": "git",
     3233                "url": "https://github.com/theseer/tokenizer.git",
     3234                "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2"
     3235            },
     3236            "dist": {
     3237                "type": "zip",
     3238                "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2",
     3239                "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2",
     3240                "shasum": ""
     3241            },
     3242            "require": {
     3243                "ext-dom": "*",
     3244                "ext-tokenizer": "*",
     3245                "ext-xmlwriter": "*",
     3246                "php": "^7.2 || ^8.0"
     3247            },
     3248            "type": "library",
     3249            "autoload": {
     3250                "classmap": [
     3251                    "src/"
     3252                ]
     3253            },
     3254            "notification-url": "https://packagist.org/downloads/",
     3255            "license": [
     3256                "BSD-3-Clause"
     3257            ],
     3258            "authors": [
     3259                {
     3260                    "name": "Arne Blankerts",
     3261                    "email": "arne@blankerts.de",
     3262                    "role": "Developer"
     3263                }
     3264            ],
     3265            "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
     3266            "support": {
     3267                "issues": "https://github.com/theseer/tokenizer/issues",
     3268                "source": "https://github.com/theseer/tokenizer/tree/1.2.3"
     3269            },
     3270            "funding": [
     3271                {
     3272                    "url": "https://github.com/theseer",
     3273                    "type": "github"
     3274                }
     3275            ],
     3276            "time": "2024-03-03T12:36:25+00:00"
    3953277        },
    3963278        {
    3973279            "name": "wp-coding-standards/wpcs",
    398             "version": "3.0.1",
     3280            "version": "3.1.0",
    3993281            "source": {
    4003282                "type": "git",
    4013283                "url": "https://github.com/WordPress/WordPress-Coding-Standards.git",
    402                 "reference": "b4caf9689f1a0e4a4c632679a44e638c1c67aff1"
    403             },
    404             "dist": {
    405                 "type": "zip",
    406                 "url": "https://api.github.com/repos/WordPress/WordPress-Coding-Standards/zipball/b4caf9689f1a0e4a4c632679a44e638c1c67aff1",
    407                 "reference": "b4caf9689f1a0e4a4c632679a44e638c1c67aff1",
     3284                "reference": "9333efcbff231f10dfd9c56bb7b65818b4733ca7"
     3285            },
     3286            "dist": {
     3287                "type": "zip",
     3288                "url": "https://api.github.com/repos/WordPress/WordPress-Coding-Standards/zipball/9333efcbff231f10dfd9c56bb7b65818b4733ca7",
     3289                "reference": "9333efcbff231f10dfd9c56bb7b65818b4733ca7",
    4083290                "shasum": ""
    4093291            },
     
    4143296                "ext-xmlreader": "*",
    4153297                "php": ">=5.4",
    416                 "phpcsstandards/phpcsextra": "^1.1.0",
    417                 "phpcsstandards/phpcsutils": "^1.0.8",
    418                 "squizlabs/php_codesniffer": "^3.7.2"
     3298                "phpcsstandards/phpcsextra": "^1.2.1",
     3299                "phpcsstandards/phpcsutils": "^1.0.10",
     3300                "squizlabs/php_codesniffer": "^3.9.0"
    4193301            },
    4203302            "require-dev": {
     
    4233305                "phpcompatibility/php-compatibility": "^9.0",
    4243306                "phpcsstandards/phpcsdevtools": "^1.2.0",
    425                 "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
     3307                "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0"
    4263308            },
    4273309            "suggest": {
     
    4543336            "funding": [
    4553337                {
    456                     "url": "https://opencollective.com/thewpcc/contribute/wp-php-63406",
     3338                    "url": "https://opencollective.com/php_codesniffer",
    4573339                    "type": "custom"
    4583340                }
    4593341            ],
    460             "time": "2023-09-14T07:06:09+00:00"
     3342            "time": "2024-03-25T16:39:00+00:00"
    4613343        }
    4623344    ],
    4633345    "aliases": [],
    4643346    "minimum-stability": "stable",
    465     "stability-flags": [],
     3347    "stability-flags": {
     3348        "thenlabs/pyramidal-tests": 20
     3349    },
    4663350    "prefer-stable": false,
    4673351    "prefer-lowest": false,
  • sms-gateway-press/trunk/plugin.php

    r3037249 r3081041  
    44 * Plugin URI:   https://www.sms-gateway-press.com
    55 * Description:  Self-hosted SMS Gateway. Send SMS with your own Android devices across your WordPress site.
    6  * Version:      1.0.2
     6 * Version:      1.0.3
    77 * Requires PHP: 7.3
    88 * Author:       Andy Daniel Navarro Taño
  • sms-gateway-press/trunk/private/class-rest-api.php

    r3036929 r3081041  
    142142    public static function get_device_actions( WP_REST_Request $request ): void {
    143143        $request_time       = sanitize_text_field( $_SERVER['REQUEST_TIME'] );
    144         $max_execution_time = ini_get( 'max_execution_time' );
     144        $max_execution_time = 30;
    145145        $request_time_limit = $request_time + $max_execution_time;
    146146        $polling_time_limit = $request_time_limit - 2;
    147147        $device_id          = $request->get_header( 'X-Device-Id' );
    148 
    149         wp_suspend_cache_addition();
     148        $now                = time();
     149        $polling_expires_at = get_post_meta( $device_id, Device::META_KEY_POLLING_EXPIRES_AT, true );
     150
     151        if ( is_numeric( $polling_expires_at ) && $now < $polling_expires_at ) {
     152            wp_send_json_error( null, 403 );
     153            wp_die();
     154        }
     155
     156        update_post_meta( $device_id, Device::META_KEY_POLLING_EXPIRES_AT, $polling_time_limit );
     157
     158        register_shutdown_function(
     159            function () use ( $device_id ) {
     160                delete_post_meta( $device_id, Device::META_KEY_POLLING_EXPIRES_AT );
     161            }
     162        );
     163
     164        wp_suspend_cache_addition( true );
     165        wp_cache_flush();
    150166
    151167        // start the long polling.
    152168        while ( time() <= $polling_time_limit ) {
    153             if ( connection_aborted() ) {
    154                 exit;
     169            $now = time();
     170
     171            update_post_meta( $device_id, Device::META_KEY_LAST_ACTIVITY_AT, $now );
     172
     173            $sms_sending_in_device_posts = get_posts(
     174                array(
     175                    'post_type'   => Sms::POST_TYPE,
     176                    'numberposts' => -1,
     177                    'meta_query'  => array(
     178                        'relation' => 'AND',
     179                        array(
     180                            'key'     => Sms::META_KEY_SEND_AT,
     181                            'compare' => '<=',
     182                            'value'   => $now,
     183                            'type'    => 'NUMERIC',
     184                        ),
     185                        array(
     186                            'key'     => Sms::META_KEY_EXPIRES_AT,
     187                            'compare' => '>',
     188                            'value'   => $now,
     189                            'type'    => 'NUMERIC',
     190                        ),
     191                        array(
     192                            'key'     => Sms::META_KEY_SENT_AT,
     193                            'compare' => 'NOT EXISTS',
     194                        ),
     195                        array(
     196                            'key'   => Sms::META_KEY_SENDING_IN_DEVICE,
     197                            'value' => $device_id,
     198                            'type'  => 'NUMERIC',
     199                        ),
     200                        array(
     201                            'key'     => Sms::META_KEY_INACTIVE_AT,
     202                            'compare' => '>',
     203                            'value'   => $now,
     204                            'type'    => 'NUMERIC',
     205                        ),
     206                    ),
     207                )
     208            );
     209
     210            if ( count( $sms_sending_in_device_posts ) >= 20 ) {
     211                continue;
    155212            }
    156 
    157             $now = time();
    158 
    159             update_post_meta( $device_id, Device::META_KEY_LAST_ACTIVITY_AT, $now );
    160213
    161214            $sms_posts = get_posts(
     
    163216                    'post_type'   => Sms::POST_TYPE,
    164217                    'numberposts' => 1,
     218                    'order'       => 'ASC',
    165219                    'meta_query'  => array(
    166220                        'relation' => 'AND',
     
    201255                            ),
    202256                            array(
    203                                 'key'     => Sms::META_KEY_INACTIVE_AT,
     257                                'key'     => Sms::META_KEY_SENDING_IN_DEVICE,
    204258                                'compare' => 'NOT EQUAL',
    205259                                'value'   => $device_id,
  • sms-gateway-press/trunk/private/custom-post-type/class-device.php

    r3036929 r3081041  
    1111    public const NONCE_ACTION_METABOX = 'nonce_metabox';
    1212
    13     public const META_KEY_TOKEN            = '_token';
    14     public const META_KEY_PHONE_NUMBER     = '_phone_number';
    15     public const META_KEY_LAST_ACTIVITY_AT = '_last_activity_at';
    16     public const META_KEY_CURRENT_SMS_ID   = '_current_sms_id';
     13    public const META_KEY_TOKEN              = '_token';
     14    public const META_KEY_PHONE_NUMBER       = '_phone_number';
     15    public const META_KEY_LAST_ACTIVITY_AT   = '_last_activity_at';
     16    public const META_KEY_CURRENT_SMS_ID     = '_current_sms_id';
     17    public const META_KEY_POLLING_EXPIRES_AT = '_polling_expires_at';
    1718
    1819    public static function register(): void {
  • sms-gateway-press/trunk/private/custom-post-type/class-sms.php

    r3037249 r3081041  
    99
    1010    public const POST_TYPE            = 'smsgp_sms';
    11     public const DEFAULT_INACTIVITY   = 30; // seconds
     11    public const DEFAULT_INACTIVITY   = 180; // seconds
    1212    public const COLUMN_STATUS        = 'status';
    1313    public const NONCE_ACTION_METABOX = 'nonce_metabox';
     14    public const DATETIME_FORMAT      = 'Y-m-d H:i:s';
    1415
    1516    public const META_BOX_OPTIONS = 'options';
     
    131132
    132133    public static function manage_posts_custom_column( string $column, int $post_id ): void {
    133         $format = 'Y-m-d H:i:s';
    134 
    135134        switch ( $column ) {
    136135            case self::META_KEY_PHONE_NUMBER:
     
    154153                    $dt->setTimestamp( $send_at );
    155154
    156                     echo esc_html( $dt->format( $format ) );
     155                    echo esc_html( $dt->format( self::DATETIME_FORMAT ) );
    157156                }
    158157                break;
     
    165164                    $dt->setTimestamp( $expires_at );
    166165
    167                     echo esc_html( $dt->format( $format ) );
     166                    echo esc_html( $dt->format( self::DATETIME_FORMAT ) );
    168167                }
    169168                break;
     
    192191        $sent_at = get_post_meta( $post_id, self::META_KEY_SENT_AT, true );
    193192
    194         if ( $sent_at ) {
    195             return Utils::format_elapsed_time( $sent_at );
     193        if ( $sent_at && is_numeric( $sent_at ) ) {
     194            $datetime = new DateTime();
     195            $datetime->setTimestamp( $sent_at );
     196
     197            return $datetime->format( self::DATETIME_FORMAT );
    196198        }
    197199    }
     
    405407            } elseif ( is_array( $log ) && isset( $log['time'] ) && isset( $log['text'] ) ) {
    406408                $time = ( new DateTime() )->setTimestamp( $log['time'] );
    407                 echo '<p><strong>' . esc_html( $time->format( 'Y-m-d H:i:s' ) ) . ':</strong>' . esc_html( $log['text'] ) . '</p>';
     409                echo '<p><strong>' . esc_html( $time->format( self::DATETIME_FORMAT ) ) . ':</strong>' . esc_html( $log['text'] ) . '</p>';
    408410            }
    409411        }
  • sms-gateway-press/trunk/readme.txt

    r3037249 r3081041  
    44Tags: sms, smsgateway, gateway
    55Requires at least: 6.0
    6 Tested up to: 6.4
    7 Stable tag: 1.0.2
     6Tested up to: 6.5
     7Stable tag: 1.0.3
    88Requires PHP: 7.3
    99License: GPLv2 or later
Note: See TracChangeset for help on using the changeset viewer.