Plugin Directory

Changeset 3338557


Ignore:
Timestamp:
08/03/2025 05:50:19 PM (8 months ago)
Author:
nico23
Message:

Update plugin to version 10.6.14 with NextgenThemes WordPress Plugin Deploy

Location:
advanced-responsive-video-embedder
Files:
125 added
11 deleted
58 edited
1 copied

Legend:

Unmodified
Added
Removed
  • advanced-responsive-video-embedder/assets/blueprints/blueprint.json

    r3338484 r3338557  
    22    "$schema": "https://playground.wordpress.net/blueprint-schema.json",
    33    "preferredVersions": {
    4         "php": "8.3",
     4        "php": "8.2",
    55        "wp": "latest"
    66    },
    77    "siteOptions": {
    8         "blogname": "Tweakmaster Testing Playground",
    9         "blogdescription": "Test Tweakmaster",
     8        "blogname": "ARVE Testing Playground",
     9        "blogdescription": "Test ARVE",
    1010        "permalink_structure": "/%postname%/"
    1111    },
    12     "landingPage": "\/wp-admin\/post.php?options-general.php?page=nextgenthemes_tweakmaster",
    13     "login": true
     12    "landingPage": "\/wp-admin\/post.php?post=4&action=edit",
     13    "features": {
     14        "networking": true
     15    },
     16    "login": true,
     17    "steps": [
     18        {
     19            "step": "writeFile",
     20            "path": "/wordpress/wp-content/post-content-classic-editor.md",
     21            "data": {
     22                "resource": "url",
     23                "url": "https://raw.githubusercontent.com/nextgenthemes/advanced-responsive-video-embedder/refs/heads/master/.wordpress-org/blueprints/post-content-classic-editor.md"
     24            }
     25        },
     26        {
     27            "step": "wp-cli",
     28            "command": "wp post create --post_title='ARVE Test' --post_status='published' /wordpress/wp-content/post-content-classic-editor.md"
     29        }
     30    ]
    1431}
  • advanced-responsive-video-embedder/tags/10.6.14/composer.json

    r3338484 r3338557  
    11{
    2     "name": "nextgenthemes/tweakmaster",
     2    "name": "nextgenthemes/advanced-responsive-video-embedder",
     3    "description": "ARVE Advanced Responsive Video Embedder",
    34    "type": "wordpress-plugin",
    45    "license": "GPL-3.0",
    5     "description": "TweakMaster - A collection or performance, privacy, security and other tweaks..",
    66    "authors": [
    77        {
    8             "name": "Nicolas Jonas"
     8            "name": "Nicolas Jonas",
     9            "homepage": "https://nextgenthemes.com",
     10            "role": "Developer"
    911        }
    1012    ],
     
    1315    },
    1416    "require-dev": {
    15         "automattic/jetpack-autoloader": "^v5.0.3",
    16         "nextgenthemes/wp-settings": "@dev"
     17        "nextgenthemes/wp-settings": "@dev",
     18        "automattic/jetpack-autoloader": "^v5.0.2"
    1719    },
    1820    "config": {
     
    2527        }
    2628    },
     29    "repositories": {
     30        "nextgenthemes/wp-settings": {
     31            "type": "path",
     32            "url": "../../../../../../dev/composer-packages/wp-settings",
     33            "options": {
     34                "symlink": false
     35            }
     36        }
     37    },
    2738    "scripts": {
    2839        "build": [
     40            "./bin/block-json",
    2941            "./bin/build-readme",
    30             "cp ../advanced-responsive-video-embedder/bin/install-wp-tests.sh ./bin/",
    31             "cp ../advanced-responsive-video-embedder/tests/phpunit-debug-helpers.php ./tests/",
    32             "cp ../advanced-responsive-video-embedder/.gitignore ./",
    33             "@composer update"
     42            "npm run build:arve",
     43            "npm run build:common",
     44            "@composer update",
     45            "@composer update --working-dir=tests"
     46        ],
     47        "pre-update-cmd": [
     48            "./bin/sync-wp-settings"
     49        ],
     50        "tests": [
     51            "cd ${HOME}/websites && NGT_PHPUNIT_LOAD_PLUGINS=\"advanced-responsive-video-embedder\" phpunit --testsuite advanced-responsive-video-embedder"
    3452        ]
    3553    }
  • advanced-responsive-video-embedder/tags/10.6.14/composer.lock

    r3338484 r3338557  
    55        "This file is @generated automatically"
    66    ],
    7     "content-hash": "dc4a6d1b65d3b499ca79a68a51744651",
     7    "content-hash": "91159bc166283f1570929cfd93e02a88",
    88    "packages": [],
    99    "packages-dev": [
     
    7676            "name": "nextgenthemes/wp-settings",
    7777            "version": "dev-master",
    78             "source": {
    79                 "type": "git",
    80                 "url": "https://github.com/nextgenthemes/wp-settings.git",
     78            "dist": {
     79                "type": "path",
     80                "url": "../../../../../../dev/composer-packages/wp-settings",
    8181                "reference": "4e26cd875e2ba18f6f1bb523ef51d01ec7f7869d"
    82             },
    83             "dist": {
    84                 "type": "zip",
    85                 "url": "https://api.github.com/repos/nextgenthemes/wp-settings/zipball/4e26cd875e2ba18f6f1bb523ef51d01ec7f7869d",
    86                 "reference": "4e26cd875e2ba18f6f1bb523ef51d01ec7f7869d",
    87                 "shasum": ""
    8882            },
    8983            "require": {
    9084                "php": ">=7.4"
    9185            },
    92             "default-branch": true,
    9386            "type": "library",
    9487            "autoload": {
     
    9790                ]
    9891            },
    99             "notification-url": "https://packagist.org/downloads/",
    10092            "license": [
    10193                "GPL-3.0"
     
    10698                }
    10799            ],
    108             "support": {
    109                 "source": "https://github.com/nextgenthemes/wp-settings/tree/master"
    110             },
    111             "time": "2025-08-03T12:18:07+00:00"
     100            "transport-options": {
     101                "symlink": false,
     102                "relative": true
     103            }
    112104        }
    113105    ],
  • advanced-responsive-video-embedder/tags/10.6.14/license.txt

    r3338484 r3338557  
    1 Nicolas Jonas
    2 https://nextgenthemes.com
    3 
    41                    GNU GENERAL PUBLIC LICENSE
    52                       Version 3, 29 June 2007
    63
    7  Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
     4 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
    85 Everyone is permitted to copy and distribute verbatim copies
    96 of this license document, but changing it is not allowed.
     
    649646
    650647    You should have received a copy of the GNU General Public License
    651     along with this program.  If not, see <https://www.gnu.org/licenses/>.
     648    along with this program.  If not, see <http://www.gnu.org/licenses/>.
    652649
    653650Also add information on how to contact you by electronic and paper mail.
     
    668665if any, to sign a "copyright disclaimer" for the program, if necessary.
    669666For more information on this, and how to apply and follow the GNU GPL, see
    670 <https://www.gnu.org/licenses/>.
     667<http://www.gnu.org/licenses/>.
    671668
    672669  The GNU General Public License does not permit incorporating your program
     
    675672the library.  If this is what you want to do, use the GNU Lesser General
    676673Public License instead of this License.  But first, please read
    677 <https://www.gnu.org/licenses/why-not-lgpl.html>.
     674<http://www.gnu.org/philosophy/why-not-lgpl.html>.
  • advanced-responsive-video-embedder/tags/10.6.14/php/fn-settings.php

    r3338484 r3338557  
    33declare(strict_types = 1);
    44
    5 namespace Nextgenthemes\TweakMaster;
     5namespace Nextgenthemes\ARVE;
    66
    77use Nextgenthemes\WP\Settings;
    88use Nextgenthemes\WP\SettingsData;
     9use function Nextgenthemes\WP\nextgenthemes_settings_instance;
    910
    1011function settings_instance(): Settings {
     
    1718            array(
    1819                'namespace'           => __NAMESPACE__,
     20                'settings'            => settings( 'settings_page' ),
     21                'tabs'                => settings_tabs(),
     22                'menu_title'          => __( 'ARVE', 'advanced-responsive-video-embedder' ),
     23                'settings_page_title' => __( 'ARVE Settings', 'advanced-responsive-video-embedder' ),
     24                'plugin_file'         => PLUGIN_FILE,
    1925                'base_url'            => plugins_url( '', PLUGIN_FILE ),
    2026                'base_path'           => PLUGIN_DIR,
    21                 'plugin_file'         => PLUGIN_FILE,
    22                 'settings'            => settings_data(),
    23                 'menu_title'          => esc_html__( 'TweakMaster', 'tweakmaster' ),
    24                 'settings_page_title' => esc_html__( 'TweakMaster', 'tweakmaster' ),
    25                 'tabs'                => array(
    26                     'general'     => array( 'title' => __( 'General', 'tweakmaster' ) ),
    27                     'privacy'     => array( 'title' => __( 'Privacy', 'tweakmaster' ) ),
    28                     'media'       => array( 'title' => __( 'Media', 'tweakmaster' ) ),
    29                     'revisions'   => array( 'title' => __( 'Revisions', 'tweakmaster' ) ),
    30                     'security'    => array( 'title' => __( 'Security', 'tweakmaster' ) ),
    31                     'performance' => array( 'title' => __( 'Performance', 'tweakmaster' ) ),
    32                     'plugins'     => array( 'title' => __( 'Plugins', 'tweakmaster' ) ),
    33                     'tools'       => array( 'title' => __( 'Tools', 'tweakmaster' ) ),
    34                 ),
    3527            )
    3628        );
     
    4840}
    4941
    50 function settings_data(): SettingsData {
    51     $settings = array_merge(
    52         general_settings(),
    53         privacy_settings(),
    54         media_settings(),
    55         revision_settings(),
    56         security_settings(),
    57         performance_settings(),
    58         plugins_settings(),
    59         tools_settings()
    60     );
    61 
    62     return new SettingsData( $settings );
    63 }
    64 
    65 function general_settings(): array {
     42function settings_tabs(): array {
     43
    6644    return array(
    67         'remove-asset-ver-parameter' => array(
    68             'tab'         => 'general',
    69             'label'       => __( 'Remove version query strings', 'tweakmaster' ),
    70             'description' => __( 'Removes <code>?ver=1.2.3</code> from all styles and scripts.', 'tweakmaster' ),
    71             'type'        => 'boolean',
    72             'default'     => false,
    73         ),
    74         'disable-feeds' => array(
    75             'tab'         => 'general',
    76             'label'       => __( 'Disable feeds', 'tweakmaster' ),
    77             'type'        => 'boolean',
    78             'default'     => false,
    79         ),
    80         'disable-emojis' => array(
    81             'tab'         => 'general',
    82             'label'       => __( 'Disable emojis', 'tweakmaster' ),
    83             'type'        => 'boolean',
    84             'default'     => false,
    85         ),
    86         'search-single-result-redirect' => array(
    87             'tab'         => 'general',
    88             'label'       => __( 'Search single result redirect', 'tweakmaster' ),
    89             'type'        => 'boolean',
    90             'default'     => false,
    91         ),
    92         'disallow-file-edit' => array(
    93             'tab'         => 'general',
    94             'label'       => __( 'Disallow File Edits', 'tweakmaster' ),
    95             'description' => __( 'Disables the ability to edit files in the file manager. Sets <code>DISALLOW_FILE_EDIT</code> constant to true. Does only work if the constant is already defined, usually in wp-config.php', 'tweakmaster' ),
    96             'type'        => 'boolean',
    97             'default'     => false,
    98         ),
    99         'admin-bar-greeting' => array(
    100             'tab'         => 'general',
    101             'label'       => __( 'Admin bar greeting', 'tweakmaster' ),
    102             'description' => __( 'Replace "Howdy, {name}" with a custom message. Use <code>{name}</code> for the user\'s display name. For example <code>Hi, {name}!</code>. Leave empty for no greeting. Use <code>default</code> for the default greeting, preventing the tweak from running.', 'tweakmaster' ),
    103             'type'        => 'string',
    104             'default'     => 'default',
    105         ),
    106         'enable-fonts-to-uploads' => array(
    107             'tab'         => 'general',
    108             'label'       => __( 'Enable fonts to uploads', 'tweakmaster' ),
    109             'description' => __( 'Move (Google) Fonts enabled in the Block Editor from wp-content/fonts to wp-content/uploads', 'tweakmaster' ),
    110             'type'        => 'boolean',
    111             'default'     => false,
    112         ),
    113         'disable-auto-trash-emptying' => array(
    114             'tab'         => 'general',
    115             'label'       => __( 'Disable auto trash emptying', 'tweakmaster' ),
    116             'type'        => 'boolean',
    117             'default'     => false,
    118         ),
    119         'trash-keep-days' => array(
    120             'tab'         => 'general',
    121             'label'       => __( 'Set trash keep days', 'tweakmaster' ),
    122             'description' => __( 'Set the number of days to keep posts in the trash. Default is 30 days.', 'tweakmaster' ),
    123             'type'        => 'integer',
    124             'default'     => 30,
    125         ),
    126         'scroll-progress-bar' => array(
    127             'tab'         => 'general',
    128             'label'       => __( 'Scroll progress bar', 'tweakmaster' ),
    129             'type'        => 'boolean',
    130             'default'     => false,
    131         ),
    132         'scroll-progress-bar-progress-bg-color' => array(
    133             'tab'         => 'general',
    134             'label'       => __( 'Scroll progress color', 'tweakmaster' ),
    135             'type'        => 'string',
    136             'description' => sprintf(
    137                 'And valid css will work. You can use <a href="%s" target="_blank">this color picker!</a>.',
    138                 'https://oklch.com'
    139             ),
    140             'default'     => 'var(--wp--preset--color--primary, oklch(45.44% 0.1924 270 / 78.17%))',
    141         ),
    142         'scroll-progress-bar-bg-color' => array(
    143             'tab'         => 'general',
    144             'label'       => __( 'Scroll progress bar background color', 'tweakmaster' ),
    145             'type'        => 'string',
    146             'default'     => 'transparent',
    147         ),
    148         'scroll-progress-bar-progress-height' => array(
    149             'tab'         => 'general',
    150             'label'       => __( 'Scroll progress height', 'tweakmaster' ),
    151             'type'        => 'string',
    152             'default'     => '0.4rem',
    153         ),
    154         'disable-ssl-verify-self' => array(
    155             'tab'         => 'general',
    156             'label'       => __( 'Disable self SSL verify', 'tweakmaster' ),
    157             'type'        => 'boolean',
    158             'default'     => false,
    159         ),
    160         // 'disable-auto-updates' => array(
    161         //  'tab'         => 'general',
    162         //  'label'       => __( 'Disable Auto Updates', 'tweakmaster' ),
    163         //  'type'        => 'boolean',
    164         //  'default'     => false,
    165         // ),
    166         'disable-comments' => array(
    167             'tab'         => 'general',
    168             'label'       => __( 'Disable Comments', 'tweakmaster' ),
    169             'type'        => 'boolean',
    170             'default'     => false,
    171         ),
    172         'disable-email-login' => array(
    173             'tab'         => 'general',
    174             'label'       => __( 'Disable Email Login', 'tweakmaster' ),
    175             'type'        => 'boolean',
    176             'default'     => false,
    177         ),
    178         'disable-rest-api' => array(
    179             'tab'         => 'general',
    180             'label'       => __( 'Disable REST API', 'tweakmaster' ),
    181             'type'        => 'boolean',
    182             'default'     => false,
    183         ),
    184         'disable-success-update-emails' => array(
    185             'tab'         => 'general',
    186             'label'       => __( 'Disable Success Update Emails', 'tweakmaster' ),
    187             'type'        => 'boolean',
    188             'default'     => false,
    189         ),
    190         'remove-admin-bar-logo' => array(
    191             'tab'         => 'general',
    192             'label'       => __( 'Remove Admin Bar WordPress Logo', 'tweakmaster' ),
    193             'description' => __( 'Requires a hard refresh of the page to take effect.', 'tweakmaster' ),
    194             'type'        => 'boolean',
    195             'default'     => false,
    196         ),
    197         'remove-asset-attr' => array(
    198             'tab'         => 'general',
    199             'label'       => __( 'Remove Asset Attributes', 'tweakmaster' ),
    200             'type'        => 'boolean',
    201             'default'     => false,
    202         ),
    203         'disable-non-production-emails' => array(
    204             'tab'         => 'general',
    205             'label'       => __( 'Disable Non Production Emails', 'tweakmaster' ),
    206             'description' => __( 'If WP_ENV (Trellis) or wp_get_environment_type is not production, emails sending is mocked.', 'tweakmaster' ),
    207             'type'        => 'boolean',
    208             'default'     => false,
    209         ),
    210         'remove-rest-api-links' => array(
    211             'tab'         => 'general',
    212             'label'       => __( 'Remove REST API links', 'tweakmaster' ),
    213             'type'        => 'boolean',
    214             'default'     => false,
    215         ),
     45        'main' => [
     46            'title' => __( 'Main', 'advanced-responsive-video-embedder' ),
     47        ],
     48        'pro' => [
     49            'title'        => __( 'Pro', 'advanced-responsive-video-embedder' ),
     50            'premium_link' => sprintf(
     51                '<a href="%s">%s</a>',
     52                'https://nextgenthemes.com/plugins/arve-pro/',
     53                __( 'Pro Addon', 'advanced-responsive-video-embedder' )
     54            ),
     55        ],
     56        'privacy' => [
     57            'title'        => __( 'Extra Privacy', 'advanced-responsive-video-embedder' ),
     58            'premium_link' => sprintf(
     59                '<a href="%s">%s</a>',
     60                'https://nextgenthemes.com/plugins/arve-privacy/',
     61                __( 'Privacy Addon', 'advanced-responsive-video-embedder' )
     62            ),
     63        ],
     64        'sticky_videos' => [
     65            'title'        => __( 'Sticky Videos', 'advanced-responsive-video-embedder' ),
     66            'premium_link' => sprintf(
     67                '<a href="%s">%s</a>',
     68                'https://nextgenthemes.com/plugins/arve-sticky-videos/',
     69                __( 'Sticky Videos Addon', 'advanced-responsive-video-embedder' )
     70            ),
     71        ],
     72        'random_video' => [
     73            'title'        => __( 'Random Video', 'advanced-responsive-video-embedder' ),
     74            'premium_link' => sprintf(
     75                '<a href="%s">%s</a>',
     76                'https://nextgenthemes.com/plugins/arve-random-video/',
     77                __( 'Random Videos Addon', 'advanced-responsive-video-embedder' )
     78            ),
     79            'reset_button' => false,
     80        ],
     81        'urlparams' => [
     82            'title' => __( 'URL Parameters', 'advanced-responsive-video-embedder' ),
     83        ],
     84        'html5' => [
     85            'title' => __( 'Video Files', 'advanced-responsive-video-embedder' ),
     86        ],
     87        'debug' => [
     88            'title' => __( 'Debug', 'advanced-responsive-video-embedder' ),
     89        ],
    21690    );
    21791}
    21892
    219 function security_settings(): array {
    220 
    221     ob_start();
    222     wp_generator();
    223     $generator_html = ob_get_clean();
    224 
    225     $remove_wp_version_description = wp_kses(
    226         sprintf(
    227             /* translators: %s: example of a "generator" meta tag */
    228             __( 'Remove <code>%s</code> from html head', 'tweakmaster' ),
    229             esc_html( $generator_html )
    230         ),
    231         array(
    232             'code' => array(),
    233         )
    234     );
    235 
    236     return array(
    237         'disable-xmlrpc' => array(
    238             'tab'         => 'security',
    239             'label'       => __( 'Disable XML-RPC', 'tweakmaster' ),
    240             'type'        => 'boolean',
    241             'default'     => false,
    242         ),
    243         'disable-xmlrpc-allow-jetpack-ips' => array(
    244             'tab'         => 'security',
    245             'label'       => __( 'Disable XML-RPC - allow Jetpack IPs', 'tweakmaster' ),
    246             'description' => __( 'Allow XML-RPC only from Jetpack IPs', 'tweakmaster' ),
    247             'type'        => 'boolean',
    248             'default'     => false,
    249         ),
    250         'remove-wp-version' => array(
    251             'tab'         => 'security',
    252             'default'     => false,
    253             'option'      => true,
    254             'label'       => __( 'Remove WP version', 'tweakmaster' ),
    255             'type'        => 'boolean',
    256             // translators: %s is example html
    257             'description' => $remove_wp_version_description,
    258         ),
     93function init_nextgenthemes_settings(): void {
     94
     95    nextgenthemes_settings_instance(
     96        plugins_url( '', PLUGIN_FILE ),
     97        PLUGIN_DIR
    25998    );
    26099}
    261100
    262 function performance_settings(): array {
    263     return array(
    264         'dequeue-jquery-migrate' => array(
    265             'tab'         => 'performance',
    266             'label'       => __( 'Dequeue jQuery Migrate', 'tweakmaster' ),
    267             'description' => __( 'Dequeue jQuery Migrate from the jQuery script dependencies on the frontend. This is used to help devs debug from old versions of jQuery. You really do not need this on a production site.', 'tweakmaster' ),
    268             'type'        => 'boolean',
    269             'default'     => false,
    270         ),
    271         'enable-script-optimizer' => array(
    272             'tab'         => 'performance',
    273             'label'       => __( 'Script Optimizer', 'tweakmaster' ),
    274             'description' => __( 'Optimize script loading by moving them into the <code>head</code> and adding <code>defer</code> attribute. This may break your site. Use at your own risk!', 'tweakmaster' ),
    275             'type'        => 'boolean',
    276             'default'     => false,
    277         ),
    278         'enable-relative-urls' => array(
    279             'tab'         => 'performance',
    280             'label'       => __( 'Enable relative URLs', 'tweakmaster' ),
    281             'description' => __( 'Enable relative URLs on the frontend. This may break your site. Use at your own risk!', 'tweakmaster' ),
    282             'type'        => 'boolean',
    283             'default'     => false,
    284         ),
    285     );
    286 }
    287 
    288 function media_settings(): array {
    289     return array(
    290         'convert-jpeg-to-avif' => array(
    291             'tab'         => 'media',
    292             'default'     => false,
    293             'label'       => __( 'Convert jpeg to avif', 'tweakmaster' ),
    294             'description' => __( 'Convert uploaded jpeg to avif', 'tweakmaster' ),
    295             'type'        => 'boolean',
    296         ),
    297         'enable-clean-upload-filenames' => array(
    298             'tab'         => 'media',
    299             'default'     => false,
    300             'label'       => __( 'Clean upload filenames', 'tweakmaster' ),
    301             'description' => __( 'Sanitize media filenames to remove non-latin special characters and accents', 'tweakmaster' ),
    302             'type'        => 'boolean',
    303         ),
    304         'avif-compression' => array(
    305             'tab'         => 'media',
    306             'default'     => 82,
    307             'label'       => __( 'Avif compression', 'tweakmaster' ),
    308             'type'        => 'integer',
    309             'description' => __( 'Default is 82', 'tweakmaster' ),
    310         ),
    311         'jpeg-compression' => array(
    312             'tab'         => 'media',
    313             'default'     => 82,
    314             'label'       => __( 'Jpeg compression', 'tweakmaster' ),
    315             'description' => __( 'Default is 82', 'tweakmaster' ),
    316             'type'        => 'integer',
    317         ),
    318         'webp-compression' => array(
    319             'tab'         => 'media',
    320             'default'     => 86,
    321             'label'       => __( 'Webp compression', 'tweakmaster' ),
    322             'description' => __( 'Default is 86', 'tweakmaster' ),
    323             'type'        => 'integer',
    324         ),
    325     );
    326 }
    327 
    328 function privacy_settings(): array {
    329 
    330     // https://github.com/WordPress/WordPress/blob/c10dbc8434d14371366e413e510cb0d54b4f367b/wp-includes/class-wp-http.php#L206
    331     $default_user_agent     = 'WordPress/' . get_bloginfo( 'version' ) . '; ' . get_bloginfo( 'url' );
    332     $chrome_user_agent      = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36';
    333     $user_agent_description = wp_kses(
    334         sprintf(
    335             // translators: %1$s: Default user agent. %2$s: Chrome user agent.
    336             __( 'WP really hates privacy and sends this <code>%1$s</code> to every site it makes calls to. You can empty the field, pretend to be Chrome <code>%2$s</code> or something else. <code>default</code> will change nothing.', 'tweakmaster' ),
    337             esc_html( $default_user_agent ),
    338             esc_html( $chrome_user_agent )
    339         ),
    340         array(
    341             'code' => array(),
    342         )
    343     );
    344 
    345     return array(
    346         'user-agent' => array(
    347             'tab'         => 'privacy',
    348             'default'     => 'default',
    349             'option'      => true,
    350             'label'       => __( 'Set user agent', 'tweakmaster' ),
    351             'type'        => 'string',
    352             'description' => $user_agent_description,
    353         ),
    354 
    355         'remove-exif' => array(
    356             'tab'         => 'privacy',
    357             'default'     => false,
    358             'option'      => true,
    359             'label'       => __( 'Remove EXIF', 'tweakmaster' ),
    360             'description' => __( 'Remove EXIF data from uploaded images.', 'tweakmaster' ),
    361             'type'        => 'boolean',
    362         ),
    363     );
    364 }
    365 
    366 function plugins_settings(): array {
    367 
    368     return array(
    369         'disable-cf7-css' => array(
    370             'tab'         => 'plugins',
    371             'default'     => false,
    372             'option'      => true,
    373             'label'       => __( 'Disable Contact Form 7 CSS', 'tweakmaster' ),
    374             'description' => __( 'Sets <code>wpcf7_load_css</code> filter to <code>false</code>', 'tweakmaster' ),
    375             'type'        => 'boolean',
    376         ),
    377         'disable-cf7-autop' => array(
    378             'tab'         => 'plugins',
    379             'default'     => false,
    380             'option'      => true,
    381             'label'       => __( 'Disable Contact Form 7 Autop', 'tweakmaster' ),
    382             'description' => __( 'Sets <code>wpcf7_autop_or_not</code> filter to <code>false</code>', 'tweakmaster' ),
    383             'type'        => 'boolean',
    384         ),
    385         'enable-jetpack-offline-mode' => array(
    386             'tab'         => 'plugins',
    387             'default'     => false,
    388             'option'      => true,
    389             'label'       => __( 'Enable Jetpack offline mode', 'tweakmaster' ),
    390             'type'        => 'boolean',
    391         ),
    392     );
    393 }
    394 
    395 function revision_settings(): array {
    396 
    397     $settings = array();
    398 
    399     foreach ( get_revision_post_types() as $type => $name ) {
    400         $settings[ 'revisions-limit-' . $type ] = array(
    401             'tab'         => 'revisions',
    402             'default'     => -1,
    403             'option'      => true,
    404             // translators: %s is post type name
    405             'label'       => sprintf( __( 'Revisions for %s', 'tweakmaster' ), $name ),
    406             'type'        => 'integer',
    407         );
     101function settings( string $context = 'settings_page' ): SettingsData {
     102
     103    $settings = settings_data();
     104
     105    if ( in_array( $context, array( 'gutenberg_block', 'shortcode' ), true ) ) {
     106
     107        foreach ( $settings->get_all() as $k => $s ) {
     108            if ( ! $s->shortcode ) {
     109                $settings->remove( $k );
     110                continue;
     111            }
     112
     113            if ( 'boolean' === $s->type && $s->option ) {
     114                $s->bool_option_to_select();
     115            }
     116        }
    408117    }
    409118
    410     $settings['revisions-limit-all'] = array(
    411         'tab'         => 'revisions',
    412         'default'     => -1,
    413         'option'      => true,
    414         'label'       => __( 'Limit ALL revisions', 'tweakmaster' ),
    415         'description' => __( 'Limit revisions for all post types. This will override the limit for each post type from above!', 'tweakmaster' ),
    416         'type'        => 'integer',
    417     );
     119    switch ( $context ) {
     120        case 'gutenberg_block':
     121            $settings->remove( 'maxwidth' );
     122            break;
     123        case 'settings_page':
     124            foreach ( $settings->get_all() as $k => $s ) {
     125                if ( ! $s->option ) {
     126                    $settings->remove( $k );
     127                }
     128            }
     129            break;
     130    }
    418131
    419132    return $settings;
    420133}
    421134
    422 function tools_settings(): array {
    423 
    424     return array(
    425         'enable-maintenance-mode' => array(
    426             'tab'         => 'tools',
    427             'default'     => false,
    428             'label'       => __( 'Enable maintenance mode', 'tweakmaster' ),
    429             'type'        => 'boolean',
    430         ),
    431         'enable-duplicate-post' => array(
    432             'tab'         => 'tools',
    433             'default'     => false,
    434             'label'       => __( 'Enable duplicate post', 'tweakmaster' ),
    435             'type'        => 'boolean',
    436         ),
    437     );
     135function get_arg_type( string $arg_name ): ?string {
     136
     137    $setting = settings_data()->get( $arg_name );
     138
     139    if ( ! $setting ) {
     140        return null;
     141    }
     142
     143    switch ( $setting->type ) {
     144        case 'string':
     145            return 'string';
     146        case 'boolean':
     147            return 'bool';
     148        case 'integer':
     149            return 'int';
     150        default:
     151            return null;
     152    }
    438153}
    439154
    440 function option_is_set( string $key ): bool {
    441 
    442     $default_option = default_options()[ $key ];
    443 
    444     return options()[ $key ] !== $default_option;
    445 }
    446 
    447 function any_option_is_set( array $options_keys ): bool {
    448 
    449     foreach ( $options_keys as $key ) {
    450         if ( option_is_set( $key ) ) {
    451             return true;
     155function settings_data(): SettingsData {
     156
     157    $properties = get_host_properties();
     158
     159    foreach ( $properties as $provider => $values ) {
     160
     161        if ( ! empty( $values['auto_thumbnail'] ) ) {
     162            $auto_thumbs[] = $values['name'];
     163        }
     164
     165        if ( ! empty( $values['auto_title'] ) ) {
     166            $auto_title[] = $values['name'];
     167        }
     168
     169        if ( ! empty( $values['requires_src'] ) ) {
     170            $embed_code_only[] = $values['name'];
    452171        }
    453172    }
    454173
    455     return false;
     174    $provider_list_link = 'https://nextgenthemes.com/plugins/arve-pro/#support-table';
     175    $pro_addon_link     = 'https://nextgenthemes.com/plugins/arve-pro/';
     176    $auto_thumbs        = implode( ', ', $auto_thumbs );
     177    $auto_title         = implode( ', ', $auto_title );
     178    $embed_code_only    = implode( ', ', $embed_code_only );
     179    $settings           = array(
     180        'url' => array(
     181            'type'                => 'string',
     182            'default'             => '',
     183            'label'               => __( 'Video URL / iframe Embed Code', 'advanced-responsive-video-embedder' ),
     184            'option'              => false,
     185            'placeholder'         => 'https://rumble.com/*, https://www.youtube.com/watch?v=*',
     186            'description'         => sprintf(
     187                // Translators: %1$s Providers
     188                __( 'Post the URL of the video here. For %1$s and any <a href="%2$s">unlisted</a> video hosts paste their iframe embed codes.', 'advanced-responsive-video-embedder' ),
     189                esc_html( $embed_code_only ),
     190                esc_url( $provider_list_link )
     191            ),
     192            'shortcode'           => true,
     193        ),
     194        'loop' => array(
     195            'default'     => false,
     196            'shortcode'   => true,
     197            'option'      => false,
     198            'label'       => __( 'Loop?', 'advanced-responsive-video-embedder' ),
     199            'type'        => 'boolean',
     200            'description' => __( 'Note not all video hosts provide this feature.', 'advanced-responsive-video-embedder' ),
     201        ),
     202        'muted' => array(
     203            'default'     => false,
     204            'shortcode'   => true,
     205            'option'      => false,
     206            'label'       => __( 'Mute?', 'advanced-responsive-video-embedder' ),
     207            'type'        => 'boolean',
     208            'description' => __( 'Note not all video hosts provide this feature.', 'advanced-responsive-video-embedder' ),
     209        ),
     210        'controls' => array(
     211            'default'     => true,
     212            'label'       => __( 'Show Controls?', 'advanced-responsive-video-embedder' ),
     213            'type'        => 'boolean',
     214            'description' => __( 'Note that not all video hosts provide this feature.', 'advanced-responsive-video-embedder' ),
     215            'shortcode'   => true,
     216            'option'      => true,
     217        ),
     218        'title' => array(
     219            'type'                => 'string',
     220            'default'             => '',
     221            'placeholder'         => __( 'Video Title (Pro automatically handles this)', 'advanced-responsive-video-embedder' ),
     222            'label'               => __( 'Title', 'advanced-responsive-video-embedder' ),
     223            'option'              => false,
     224            'shortcode'           => true,
     225            'description'         => sprintf(
     226                // Translators: Provider list
     227                __( 'Used for SEO, is visible on top of thumbnails in Lazyload/Lightbox modes, is used as link text in link-lightbox mode. <a href="%1$s">ARVE Pro</a> is able to get them from %2$s automatically.', 'advanced-responsive-video-embedder' ),
     228                esc_url( $pro_addon_link ),
     229                esc_html( $auto_title )
     230            ),
     231        ),
     232        'description' => array(
     233            'default'             => '',
     234            'option'              => false,
     235            'shortcode'           => true,
     236            'label'               => __( 'Description', 'advanced-responsive-video-embedder' ),
     237            'type'                => 'string',
     238            'placeholder'         => __( 'Description Text (Pro automatically handles this)', 'advanced-responsive-video-embedder' ),
     239            'description'         => sprintf(
     240                // translators: URL
     241                __( 'Needed for SEO <a href="%s">ARVE Pro</a> fills this automatically', 'advanced-responsive-video-embedder' ),
     242                esc_url( $pro_addon_link )
     243            ),
     244        ),
     245        'upload_date' => array(
     246            'type'                => 'string',
     247            'default'             => '',
     248            'option'              => false,
     249            'shortcode'           => true,
     250            'label'               => __( 'Upload Date', 'advanced-responsive-video-embedder' ),
     251            'placeholder'         => __( '2019-09-29 (Pro automatically handles this)', 'advanced-responsive-video-embedder' ),
     252            'description'         => sprintf(
     253                // translators: URL
     254                __( '<a href="%s">ARVE Pro</a> fills this automatically.', 'advanced-responsive-video-embedder' ),
     255                esc_url( $pro_addon_link )
     256            ),
     257        ),
     258        'mode' => array(
     259            'type'                => 'string',
     260            'default'             => 'normal',
     261            'tab'                 => 'pro',
     262            'label'               => __( 'Mode', 'advanced-responsive-video-embedder' ),
     263            'options'             => array(
     264                ''              => __( 'Default', 'advanced-responsive-video-embedder' ),
     265                'normal'        => __( 'Normal', 'advanced-responsive-video-embedder' ),
     266                'lazyload'      => __( 'Lazyload', 'advanced-responsive-video-embedder' ),
     267                'lightbox'      => __( 'Lightbox', 'advanced-responsive-video-embedder' ),
     268                'link-lightbox' => __( 'Link opens Lightbox', 'advanced-responsive-video-embedder' ),
     269            ),
     270            'description'         => sprintf(
     271                // translators: URL
     272                __( 'For Lazyload, Lightbox and Link mode check out <a href="%s">ARVE Pro</a>. Only use normal when Pro is not installed!', 'advanced-responsive-video-embedder' ),
     273                'https://nextgenthemes.com/plugins/arve-pro/'
     274            ),
     275            'option'              => true,
     276            'shortcode'           => true,
     277        ),
     278        'lazyload_style' => array(
     279            'type'                => 'string',
     280            'default'             => 'thumbnail',
     281            'tab'                 => 'pro',
     282            'label'               => __( 'Lazyload Style', 'advanced-responsive-video-embedder' ),
     283            'options'             => array(
     284                ''          => __( 'Default', 'advanced-responsive-video-embedder' ),
     285                'thumbnail' => __( 'Thumbnail', 'advanced-responsive-video-embedder' ),
     286                'card'      => __( 'Card', 'advanced-responsive-video-embedder' ),
     287            ),
     288            'description'         => esc_html__( 'Chose the look of the video preview for Lazyload and Lightbox modes!', 'advanced-responsive-video-embedder' ),
     289            'option'              => true,
     290            'shortcode'           => true,
     291        ),
     292        'thumbnail_fallback' => array(
     293            'type'        => 'string',
     294            'default'     => plugins_url( 'src/img/thumbnail.avif', PLUGIN_FILE ),
     295            'tab'         => 'pro',
     296            'ui'          => 'image_upload',
     297            'shortcode'   => false,
     298            'option'      => true,
     299            'label'       => __( 'Thumbnail Fallback', 'advanced-responsive-video-embedder' ),
     300            'description' => __( 'URL or media gallery image ID used for thumbnail', 'advanced-responsive-video-embedder' ),
     301        ),
     302        'thumbnail_post_image_fallback' => array(
     303            'tab'         => 'pro',
     304            'default'     => true,
     305            'shortcode'   => false,
     306            'option'      => true,
     307            'label'       => __( 'Thumbnail Featured Image Fallback', 'advanced-responsive-video-embedder' ),
     308            'type'        => 'boolean',
     309            'description' => __( 'In case ARVE Pro can not get a thumbnail, the posts Featured image will be used instead', 'advanced-responsive-video-embedder' ),
     310        ),
     311        'thumbnail' => array(
     312            'type'                => 'string',
     313            'default'             => '',
     314            'ui'                  => 'image_upload',
     315            'shortcode'           => true,
     316            'option'              => false,
     317            'label'               => __( 'Thumbnail', 'advanced-responsive-video-embedder' ),
     318            'placeholder'         => '1234, https://* (Pro automatically handles this)',
     319            'description'         => sprintf(
     320                // Translators: 1 Link, 2 Provider list
     321                __( 'Media library image ID or image URL for preview image for SEO and Lazyload modes. <a href="%1$s">ARVE Pro</a> is able to get them from %2$s automatically, leave empty in this case unless you want use a different thumbnail. Type in <code>featured</code> to use the posts featured image.', 'advanced-responsive-video-embedder' ),
     322                esc_url( $pro_addon_link ),
     323                esc_html( $auto_thumbs )
     324            ),
     325        ),
     326        'hide_title' => array(
     327            'type'        => 'boolean',
     328            'default'     => false,
     329            'shortcode'   => true,
     330            'option'      => true,
     331            'tab'         => 'pro',
     332            'label'       => __( 'Hide Title (Lazyload & Lightbox only)', 'advanced-responsive-video-embedder' ),
     333            'description' => __( 'Useful when the thumbnail image already displays the video title (Lazyload & Lightbox modes).', 'advanced-responsive-video-embedder' ),
     334        ),
     335        'grow' => array(
     336            'type'        => 'boolean',
     337            'default'     => true,
     338            'shortcode'   => true,
     339            'option'      => true,
     340            'tab'         => 'pro',
     341            'label'       => __( 'Expand on play? (Lazyload only)', 'advanced-responsive-video-embedder' ),
     342            'description' => __( 'Expands video size after clicking the thumbnail (Lazyload Mode)', 'advanced-responsive-video-embedder' ),
     343        ),
     344        'fullscreen' => array(
     345            'type'        => 'string',
     346            'default'     => 'disabled',
     347            'tab'         => 'pro',
     348            'label'       => __( 'Go Fullscreen on opening Lightbox?', 'advanced-responsive-video-embedder' ),
     349            'description' => __( 'Makes the Browser go fullscreen when opening the Lightbox. Optionally stay in Fullscreen mode even after the Lightbox is closed', 'advanced-responsive-video-embedder' ),
     350            'options'     => array(
     351                ''              => __( 'Default', 'advanced-responsive-video-embedder' ),
     352                'enabled-exit'  => __( 'Enabled, exit FS on lightbox close', 'advanced-responsive-video-embedder' ),
     353                'enabled-stick' => __( 'Enabled, stay FS on lightbox close', 'advanced-responsive-video-embedder' ),
     354                'disabled'      => __( 'Disabled', 'advanced-responsive-video-embedder' ),
     355            ),
     356            'shortcode'   => true,
     357            'option'      => true,
     358        ),
     359        'play_icon_style' => array(
     360            'type'      => 'string',
     361            'default'   => 'youtube',
     362            'tab'       => 'pro',
     363            'label'     => __( 'Play Button', 'advanced-responsive-video-embedder' ),
     364            'options'   => array(
     365                // Translators: 1 %s is play icon style.
     366                ''                    => __( 'Default', 'advanced-responsive-video-embedder' ),
     367                'youtube'             => __( 'Youtube', 'advanced-responsive-video-embedder' ),
     368                'youtube-red-diamond' => __( 'Youtube Red Diamond', 'advanced-responsive-video-embedder' ),
     369                'vimeo'               => __( 'Vimeo', 'advanced-responsive-video-embedder' ),
     370                'circle'              => __( 'Circle', 'advanced-responsive-video-embedder' ),
     371                'none'                => __( 'No play image', 'advanced-responsive-video-embedder' ),
     372                'custom'              => __( 'Custom (for PHP filter)', 'advanced-responsive-video-embedder' ),
     373            ),
     374            'shortcode' => true,
     375            'option'    => true,
     376
     377        ),
     378        'hover_effect' => array(
     379            'type'      => 'string',
     380            'default'   => 'darken',
     381            'tab'       => 'pro',
     382            'label'     => __( 'Hover Effect (Lazyload/Lightbox only)', 'advanced-responsive-video-embedder' ),
     383            'options'   => array(
     384                ''          => __( 'Default', 'advanced-responsive-video-embedder' ),
     385                'darken'    => __( 'Darken', 'advanced-responsive-video-embedder' ),
     386                'zoom'      => __( 'Zoom Thumbnail', 'advanced-responsive-video-embedder' ),
     387                'rectangle' => __( 'Move Rectangle in', 'advanced-responsive-video-embedder' ),
     388                'none'      => __( 'None', 'advanced-responsive-video-embedder' ),
     389                'custom'    => __( 'Custom (for your own CSS styles', 'advanced-responsive-video-embedder' ),
     390            ),
     391            'shortcode' => true,
     392            'option'    => true,
     393        ),
     394        'disable_links' => array(
     395            'tab'         => 'pro',
     396            'default'     => false,
     397            'label'       => __( 'Disable links', 'advanced-responsive-video-embedder' ),
     398            'type'        => 'boolean',
     399            'description' => __( 'Prevent embeds to open new popups/tabs from links inside video embeds. Note: breaks functionality like sharing.', 'advanced-responsive-video-embedder' ),
     400
     401            'shortcode'   => true,
     402            'option'      => true,
     403        ),
     404        'align' => array(
     405            'default'   => 'none',
     406            'shortcode' => true,
     407            'option'    => true,
     408            'label'     => __( 'Alignment', 'advanced-responsive-video-embedder' ),
     409            'type'      => 'string',
     410            'options'   => array(
     411                ''       => __( 'Default', 'advanced-responsive-video-embedder' ),
     412                'none'   => __( 'None', 'advanced-responsive-video-embedder' ),
     413                'left'   => __( 'Left', 'advanced-responsive-video-embedder' ),
     414                'right'  => __( 'Right', 'advanced-responsive-video-embedder' ),
     415                'center' => __( 'Center', 'advanced-responsive-video-embedder' ),
     416            ),
     417        ),
     418        'arve_link' => array(
     419            'default'     => false,
     420            'label'       => __( 'ARVE Link', 'advanced-responsive-video-embedder' ),
     421            'type'        => 'boolean',
     422            'description' => __( "Shows a small 'ARVE' link below the videos. Be the most awesome person and help promoting this plugin.", 'advanced-responsive-video-embedder' ),
     423
     424            'shortcode'   => true,
     425            'option'      => true,
     426        ),
     427        'duration' => array(
     428            'type'        => 'string',
     429            'default'     => '',
     430            'option'      => false,
     431            'label'       => __( 'Duration', 'advanced-responsive-video-embedder' ),
     432            'placeholder' => '1H2M3S',
     433            'description' => __( '`1H2M3S` for 1 hour, 2 minutes and 3 seconds. `5M` for 5 minutes.', 'advanced-responsive-video-embedder' ),
     434
     435            'shortcode'   => true,
     436        ),
     437        'autoplay' => array(
     438            'type'        => 'boolean',
     439            'default'     => false,
     440            'shortcode'   => true,
     441            'option'      => true,
     442            'label'       => __( 'Autoplay', 'advanced-responsive-video-embedder' ),
     443            'description' => __( 'Do not expect this to work! Browsers (especially mobile) or user settings prevent it, some video hosts do not support it at all. Only used in normal mode. ARVE will mute HTML5 video playback in case to make autoplay work for the broadest audience.', 'advanced-responsive-video-embedder' ),
     444        ),
     445        'maxwidth' => array(
     446            'default'     => 0,
     447            'type'        => 'integer',
     448            'label'       => __( 'Maximal Width', 'advanced-responsive-video-embedder' ),
     449            'description' => sprintf(
     450                // Translators: $content_width value.
     451                __( 'In pixels. If set to 0 (default) the $content_width value from your theme is used if present, otherwise the default is %s.', 'advanced-responsive-video-embedder' ),
     452                DEFAULT_MAXWIDTH
     453            ),
     454            'placeholder' => '450',
     455            'shortcode'   => true,
     456            'option'      => true,
     457
     458        ),
     459        'lightbox_maxwidth' => array(
     460            'type'        => 'integer',
     461            'default'     => 1174,
     462            'placeholder' => '1174',
     463            'tab'         => 'pro',
     464            'label'       => __( 'Lightbox Maximal Width', 'advanced-responsive-video-embedder' ),
     465            'description' => __( 'default 1174', 'advanced-responsive-video-embedder' ),
     466            'shortcode'   => true,
     467            'option'      => true,
     468        ),
     469        'sticky' => array(
     470            'type'        => 'boolean',
     471            'default'     => true,
     472            'tab'         => 'sticky_videos',
     473            'option'      => true,
     474            'shortcode'   => true,
     475            'label'       => __( 'Sticky', 'advanced-responsive-video-embedder' ),
     476            'description' => __( 'Keep the video on the screen when scrolling.', 'advanced-responsive-video-embedder' ),
     477        ),
     478        'sticky_width' => array(
     479            'type'        => 'string',
     480            'default'     => '500px',
     481            'tab'         => 'sticky_videos',
     482            'shortcode'   => false,
     483            'option'      => true,
     484            'label'       => __( 'Sticky Video Width', 'advanced-responsive-video-embedder' ),
     485            'description' => __( 'CSS value (px, vw, ...) 350px is default.', 'advanced-responsive-video-embedder' ),
     486        ),
     487        'sticky_max_width' => array(
     488            'type'        => 'string',
     489            'default'     => '40vw',
     490            'tab'         => 'sticky_videos',
     491            'shortcode'   => false,
     492            'option'      => true,
     493            'label'       => __( 'Sticky Video Maximal Width', 'advanced-responsive-video-embedder' ),
     494            'description' => __( 'A vw (viewport width) value is recommended. The default of 40vw tells the video it can never be wider than 40% of the screens width.', 'advanced-responsive-video-embedder' ),
     495        ),
     496        'sticky_gap' => array(
     497            'type'        => 'string',
     498            'default'     => '0.7rem',
     499            'tab'         => 'sticky_videos',
     500            'shortcode'   => false,
     501            'option'      => true,
     502
     503            'label'       => __( 'Sticky Video Corner Gap', 'advanced-responsive-video-embedder' ),
     504            'description' => __( 'CSS value (px, me, rem ...). Space between browser windows corner and pinned video.', 'advanced-responsive-video-embedder' ),
     505        ),
     506        'sticky_navbar_selector' => array(
     507            'type'        => 'string',
     508            'default'     => '.navbar--primary',
     509            'tab'         => 'sticky_videos',
     510            'shortcode'   => false,
     511            'option'      => true,
     512
     513            'label'       => __( 'Selector for fixed Navbar', 'advanced-responsive-video-embedder' ),
     514            'description' => __( 'If you have a fixed navbar on the top if your site you need this. document.querySelector(x) for a fixed navbar element to account for its height when pinning videos to the top.', 'advanced-responsive-video-embedder' ),
     515        ),
     516        'sticky_on_mobile' => array(
     517            'type'        => 'boolean',
     518            'default'     => true,
     519            'tab'         => 'sticky_videos',
     520            'shortcode'   => true,
     521            'option'      => true,
     522            'label'       => __( 'Sticky top on smaller screens', 'advanced-responsive-video-embedder' ),
     523            'description' => __( 'Stick the video to the top of screens below 768px width in portrait orientation. The Video will always be as wide as the screen ignoring the Stick Width and Stick Maxwidth settings.', 'advanced-responsive-video-embedder' ),
     524        ),
     525        'sticky_position' => array(
     526            'tab'         => 'sticky_videos',
     527            'default'     => 'bottom-right',
     528            'label'       => __( 'Sticky Video Position', 'advanced-responsive-video-embedder' ),
     529            'type'        => 'string',
     530            'options'     => array(
     531                ''             => __( 'Default', 'advanced-responsive-video-embedder' ),
     532                'top-left'     => __( 'Top left', 'advanced-responsive-video-embedder' ),
     533                'top-right'    => __( 'Top right', 'advanced-responsive-video-embedder' ),
     534                'bottom-left'  => __( 'Bottom left', 'advanced-responsive-video-embedder' ),
     535                'bottom-right' => __( 'Bottom right', 'advanced-responsive-video-embedder' ),
     536            ),
     537            'description' => __( 'Corner the video gets pinned to on bigger screens.', 'advanced-responsive-video-embedder' ),
     538            'shortcode'   => true,
     539            'option'      => true,
     540        ),
     541        'align_maxwidth' => array(
     542            'default'     => 400,
     543            'shortcode'   => false,
     544            'label'       => __( 'Align Maximal Width', 'advanced-responsive-video-embedder' ),
     545            'type'        => 'integer',
     546            'description' => __( 'In px, Needed! Must be 100+ to work.', 'advanced-responsive-video-embedder' ),
     547            'option'      => true,
     548        ),
     549        'aspect_ratio' => array(
     550            'default'     => '',
     551            'option'      => false,
     552            'shortcode'   => true,
     553            'label'       => __( 'Aspect Ratio', 'advanced-responsive-video-embedder' ),
     554            'type'        => 'string',
     555            'description' => __( 'E.g. 4:3, 21:9. ARVE is usually smart enough to figure this out on its own.', 'advanced-responsive-video-embedder' ),
     556            'placeholder' => '4:3, 21:9 ...',
     557        ),
     558        'parameters' => array(
     559            'default'     => '',
     560            'option'      => false,
     561            'shortcode'   => true,
     562            'label'       => __( 'Parameters', 'advanced-responsive-video-embedder' ),
     563            'type'        => 'string',
     564            'placeholder' => 'example=1&foo=bar',
     565            'description' => sprintf(
     566                // Translators: URL
     567                __( 'Provider specific player settings on iframe src. See <a href="%s">documentation.</a>', 'advanced-responsive-video-embedder' ),
     568                esc_url( 'https://nextgenthemes.com/plugins/arve/documentation/#parameters' )
     569            ),
     570        ),
     571        'wp_video_override' => array(
     572            'tab'         => 'html5',
     573            'default'     => true,
     574            'shortcode'   => false,
     575            'option'      => true,
     576            'label'       => __( 'Use ARVE for video files?', 'advanced-responsive-video-embedder' ),
     577            'type'        => 'boolean',
     578            'description' => __( 'Overwrite the default WordPress behavior.', 'advanced-responsive-video-embedder' ),
     579        ),
     580        'controlslist' => array(
     581            'tab'         => 'html5',
     582            'default'     => '',
     583            'label'       => __( 'Chrome HTML5 Player controls', 'advanced-responsive-video-embedder' ),
     584            'type'        => 'string',
     585            'description' => __( 'controlsList attribute on &lt;video&gt; for example use <code>nodownload nofullscreen noremoteplayback</code> to hide the download and the fullscreen button on the chrome HTML5 video player and disable remote playback.', 'advanced-responsive-video-embedder' ),
     586            'placeholder' => 'nodownload nofullscreen noremoteplayback',
     587            'shortcode'   => true,
     588            'option'      => true,
     589        ),
     590        'volume' => array(
     591            'tab'         => 'pro',
     592            'default'     => 100,
     593            'shortcode'   => true,
     594            'option'      => true,
     595
     596            'label'       => __( 'Volume', 'advanced-responsive-video-embedder' ),
     597            'type'        => 'integer',
     598            'description' => __( 'Works with video files only.', 'advanced-responsive-video-embedder' ),
     599        ),
     600        'always_enqueue_assets' => array(
     601            'shortcode'   => false,
     602            'option'      => true,
     603
     604            'default'     => false,
     605            'label'       => __( 'Always load assets', 'advanced-responsive-video-embedder' ),
     606            'type'        => 'boolean',
     607            'description' => __( 'Default=No ARVE will loads its scripts and styles only when the posts content contains a arve video. In case your content is loaded via AJAX at a later stage this detection will not work or the styles are not loaded for another reason you may have to enable this option', 'advanced-responsive-video-embedder' ),
     608        ),
     609        'youtube_nocookie' => array(
     610            'default'     => true,
     611            'shortcode'   => false,
     612            'option'      => true,
     613            'label'       => __( 'Use youtube-nocookie.com url?', 'advanced-responsive-video-embedder' ),
     614            'type'        => 'boolean',
     615            'description' => __( 'Privacy enhanced mode, will NOT disable cookies but only sets them when a user starts to play a video.', 'advanced-responsive-video-embedder' ),
     616        ),
     617        'vimeo_api_id' => array(
     618            'tab'                 => 'random_video',
     619            'default'             => '',
     620            'shortcode'           => false,
     621            'option'              => true,
     622
     623            'label'               => __( 'Vimeo client identifier', 'advanced-responsive-video-embedder' ),
     624            'type'                => 'string',
     625            'description'         => sprintf(
     626                // Translators: URL
     627                __( 'Needed for <a href="%s">Random Video Addon</a>.', 'advanced-responsive-video-embedder' ),
     628                esc_url( 'https://nextgenthemes.com/plugins/arve-random-video/' )
     629            ),
     630        ),
     631        'vimeo_api_secret' => array(
     632            'tab'                 => 'random_video',
     633            'default'             => '',
     634            'shortcode'           => false,
     635            'option'              => true,
     636            'label'               => __( 'Vimeo client secret', 'advanced-responsive-video-embedder' ),
     637            'type'                => 'string',
     638            'description'         => sprintf(
     639                // Translators: URL
     640                __( 'Needed for <a href="%s">Random Video Addon</a>.', 'advanced-responsive-video-embedder' ),
     641                esc_url( 'https://nextgenthemes.com/plugins/arve-random-video/' )
     642            ),
     643        ),
     644        'vimeo_api_token' => array(
     645            'tab'                 => 'random_video',
     646            'default'             => '',
     647            'shortcode'           => false,
     648            'option'              => true,
     649            'label'               => __( 'Vimeo API Token', 'advanced-responsive-video-embedder' ),
     650            'type'                => 'string',
     651            'description'         => sprintf(
     652                // Translators: URL
     653                __( 'Needed for <a href="%s">Random Video Addon</a>.', 'advanced-responsive-video-embedder' ),
     654                esc_url( 'https://nextgenthemes.com/plugins/arve-random-video/' )
     655            ),
     656        ),
     657        'random_video_url' => array(
     658            'tab'                 => 'random_video',
     659            'default'             => '',
     660            'placeholder'         => 'https://www.youtube.com/playlist?list=PL...',
     661            'option'              => false,
     662            'shortcode'           => true,
     663            'label'               => esc_html__( 'Random Video URL', 'advanced-responsive-video-embedder' ),
     664            'type'                => 'string',
     665            'description'         => sprintf(
     666                // Translators: URL
     667                __( 'Youtube Playlist or Vimeo showcase URL<a href="%s">(Random Video Addon)</a>.', 'advanced-responsive-video-embedder' ),
     668                esc_url( 'https://nextgenthemes.com/plugins/arve-random-video/' )
     669            ),
     670        ),
     671        'random_video_urls' => array(
     672            'tab'                 => 'random_video',
     673            'default'             => '',
     674            'placeholder'         => 'https://youtu.be/abc, https://vimeo.com/123',
     675            'option'              => false,
     676            'shortcode'           => true,
     677            'label'               => esc_html__( 'Random Video URLs', 'advanced-responsive-video-embedder' ),
     678            'type'                => 'string',
     679            'description'         => sprintf(
     680                // Translators: URL
     681                __( 'Video URLs separated by commas. <a href="%s">(Random Video Addon)</a>.', 'advanced-responsive-video-embedder' ),
     682                esc_url( 'https://nextgenthemes.com/plugins/arve-random-video/' )
     683            ),
     684        ),
     685        'legacy_shortcodes' => array(
     686            'default'     => true,
     687            'shortcode'   => false,
     688            'option'      => true,
     689            'label'       => __( 'Enable legacy shortcodes', 'advanced-responsive-video-embedder' ),
     690            'type'        => 'boolean',
     691            'description' => __( 'Enable the old and deprecated <code>[youtube id="abcde" /]</code> or <code>[vimeo id="abcde" /]</code> ... style shortcodes. Only enable if you have them in your content.', 'advanced-responsive-video-embedder' ),
     692        ),
     693        'encrypted_media' => array(
     694            'default'     => false,
     695            'shortcode'   => true,
     696            'option'      => false,
     697            'label'       => __( 'Allow Encrypted Media', 'advanced-responsive-video-embedder' ),
     698            'type'        => 'boolean',
     699            'description' => __( "Only needed in specific situations. Reduces privacy of the iframe embed. 'Disable Links' feature from ARVE Pro will not work with this.", 'advanced-responsive-video-embedder' ),
     700        ),
     701        'credentialless' => array(
     702            'default'     => true,
     703            'shortcode'   => true,
     704            'option'      => false,
     705            'label'       => __( 'Set credentialless on iframe', 'advanced-responsive-video-embedder' ),
     706            'type'        => 'boolean',
     707            'description' => __( 'Needs to be disabled in specific situations like webvideocore.net payment popup. Reduces privacy of the iframe embeds when disabled.', 'advanced-responsive-video-embedder' ),
     708        ),
     709        'seo_data' => array(
     710            'tab'         => 'main',
     711            'default'     => true,
     712            'shortcode'   => false,
     713            'option'      => true,
     714            'label'       => __( 'Enable structured data (schema.org)', 'advanced-responsive-video-embedder' ),
     715            'type'        => 'boolean',
     716            'description' => __( 'ARVE Pro helps you autofill the data so you do not have to manually enter things for every single video to make it complete.', 'advanced-responsive-video-embedder' ),
     717        ),
     718        'gutenberg_help' => array(
     719            'default'     => true,
     720            'shortcode'   => false,
     721            'option'      => true,
     722            'label'       => __( 'Enable help text?', 'advanced-responsive-video-embedder' ),
     723            'type'        => 'boolean',
     724            'description' => __( 'Disabling this makes the interface in Gutenberg/Shortcode dialog much cleaner.', 'advanced-responsive-video-embedder' ),
     725        ),
     726        'feed' => array(
     727            'default'     => true,
     728            'shortcode'   => false,
     729            'option'      => true,
     730            'label'       => __( 'Use in RSS/Atom Feeds?', 'advanced-responsive-video-embedder' ),
     731            'type'        => 'boolean',
     732            'description' => __( 'Enable the plugin in RSS/Atom feeds? Disabling will not completely diable everything but it will use native WP behavior in feeds where possible.', 'advanced-responsive-video-embedder' ),
     733        ),
     734        'reset_after_played' => array(
     735            'tab'         => 'pro',
     736            'default'     => 'enabled',
     737            'shortcode'   => false,
     738            'option'      => true,
     739            'label'       => __( 'Reset after played', 'advanced-responsive-video-embedder' ),
     740            'type'        => 'string',
     741            'options'     => array(
     742                ''                   => __( 'Default', 'advanced-responsive-video-embedder' ),
     743                'enabled'            => __( 'Enabled', 'advanced-responsive-video-embedder' ),
     744                'disabled'           => __( 'Disabled', 'advanced-responsive-video-embedder' ),
     745                'disabled-for-vimeo' => __( 'Disabled for Vimeo only', 'advanced-responsive-video-embedder' ),
     746            ),
     747            'description' => __( 'When enabled ARVE Pro will display the thumbnail again like it is shown before the video was loaded. When a video is displayed in a lightbox the lightbox will automatically close. If you are using Vimeo\'s "call to action" feature for example you want to disable this for vimeo.', 'advanced-responsive-video-embedder' ),
     748        ),
     749        'admin_bar_menu' => array(
     750            'default'     => false,
     751            'shortcode'   => false,
     752            'option'      => true,
     753            'label'       => __( 'Admin bar ARVE button', 'advanced-responsive-video-embedder' ),
     754            'type'        => 'boolean',
     755            'description' => __( 'For quickly accessing the ARVE settings page.', 'advanced-responsive-video-embedder' ),
     756        ),
     757        'lightbox_aspect_ratio' => array(
     758            'tab'         => 'pro',
     759            'default'     => '',
     760            'placeholder' => '9:16',
     761            'shortcode'   => true,
     762            'option'      => false,
     763            'label'       => __( 'Lightbox aspect ratio', 'advanced-responsive-video-embedder' ),
     764            'type'        => 'string',
     765            'description' => __( 'The aspect ratio of the lightbox. Leave empty to use the original video aspect ratio.', 'advanced-responsive-video-embedder' ),
     766        ),
     767        'cache_thumbnails' => array(
     768            'tab'         => 'privacy',
     769            'default'     => false,
     770            'shortcode'   => false,
     771            'option'      => true,
     772            'label'       => __( 'Cache thumbnails in Media Library', 'advanced-responsive-video-embedder' ),
     773            'type'        => 'boolean',
     774            'description' => __( 'No image hotlinking to video hosts. For Lazyload/Lightbox (Pro).', 'advanced-responsive-video-embedder' ),
     775        ),
     776        'invidious' => array(
     777            'tab'         => 'privacy',
     778            'default'     => false,
     779            'shortcode'   => true,
     780            'option'      => true,
     781            'label'       => __( 'Enable Invidious for YouTube', 'advanced-responsive-video-embedder' ),
     782            'type'        => 'boolean',
     783        ),
     784        'invidious_instance' => array(
     785            'tab'                 => 'privacy',
     786            'default'             => 'https://inv.nadeko.net/',
     787            'shortcode'           => false,
     788            'option'              => true,
     789            'label'               => __( 'Invidious instance', 'advanced-responsive-video-embedder' ),
     790            'type'                => 'string',
     791            'description'         => sprintf(
     792                // translators: %s is URL
     793                __( 'Invidious instance <a href="%s" target="_blank">see here</a>.', 'advanced-responsive-video-embedder' ),
     794                esc_url( 'https://docs.invidious.io/instances/' )
     795            ),
     796        ),
     797        'invidious_parameters' => array(
     798            'tab'                 => 'privacy',
     799            'default'             => 'local=true',
     800            'shortcode'           => false,
     801            'option'              => true,
     802            'label'               => __( 'Invidious URL parameters', 'advanced-responsive-video-embedder' ),
     803            'type'                => 'string',
     804            'description'         => sprintf(
     805                // translators: %s is URL
     806                __( 'Invidious <a href="%s" target="_blank">url parameters</a>.', 'advanced-responsive-video-embedder' ),
     807                esc_url( 'https://docs.invidious.io/url-parameters/' )
     808            ),
     809        ),
     810        'allow_referrer' => array(
     811            'label'       => __( 'Allow domain restricted videos (referrerpolicy)', 'advanced-responsive-video-embedder' ),
     812            'tab'         => 'main',
     813            'default'     => 'youtube, vimeo, rumble, xhamster, kick',
     814            'type'        => 'string',
     815            'option'      => true,
     816            'shortcode'   => false,
     817            'description' => __( 'Comma separated list of lowercase hosts that will set <code>referrerpolicy="origin-when-cross-origin"</code> instead of the default <code>referrerpolicy="no-referer"</code> on <code>iframe</code>. This will make video less private for the visitor as the host will be able to see on what website they are watching on but its needed for youtube, vimeo, rumble and possible others for domain restricted videos.', 'advanced-responsive-video-embedder' ),
     818        ),
     819        'show_src_mismatch_errors' => array(
     820            'label'       => __( 'Show src mismatch errors', 'advanced-responsive-video-embedder' ),
     821            'tab'         => 'debug',
     822            'type'        => 'string',
     823            'default'     => 'dev-mode',
     824            'option'      => true,
     825            'shortcode'   => false,
     826            'options'     => array(
     827                'always'   => __( 'Always', 'advanced-responsive-video-embedder' ),
     828                'dev-mode' => __( 'Dev Modes Only', 'advanced-responsive-video-embedder' ),
     829                'never'    => __( 'Never', 'advanced-responsive-video-embedder' ),
     830            ),
     831        ),
     832        'youtube_data_api_key' => array(
     833            'label'       => __( 'YouTube Data API Key', 'advanced-responsive-video-embedder' ),
     834            'tab'         => 'pro',
     835            'type'        => 'string',
     836            'default'     => '',
     837            'option'      => true,
     838            'shortcode'   => false,
     839            'description' => sprintf(
     840                // translators: %s is URL
     841                __( 'If you want ARVE Pro to pull video description text for Card view and SEO. You may need this if the included API key gets rate limited. Get your API key <a href="%s" target="_blank">here</a>.', 'advanced-responsive-video-embedder' ),
     842                esc_url( 'https://www.youtube.com/watch?v=EPeDTRNKAVo' )
     843            ),
     844        ),
     845    );
     846
     847    foreach ( $properties as $provider => $v ) {
     848
     849        if ( isset( $v['default_params'] ) ) {
     850
     851            $settings[ 'url_params_' . $provider ] = array(
     852                'tab'       => 'urlparams',
     853                'default'   => $v['default_params'],
     854                'option'    => true,
     855                'shortcode' => false,
     856                // Translators: %s is Provider
     857                'label'     => sprintf( __( '%s url parameters', 'advanced-responsive-video-embedder' ), $provider ),
     858                'type'      => 'string',
     859            );
     860        }
     861    }
     862
     863        $settings = new SettingsData( $settings, true );
     864
     865        return $settings;
    456866}
    457 
    458 /**
    459  * Get post types which support revisions.
    460  */
    461 function get_revision_post_types(): array {
    462 
    463     $revision_post_types = [];
    464 
    465     foreach ( get_post_types() as $type ) {
    466 
    467         $object = get_post_type_object( $type );
    468 
    469         if ( ! post_type_supports( $type, 'revisions' ) || null === $object ) {
    470             continue;
    471         }
    472 
    473         $name = ( property_exists( $object, 'labels' ) && property_exists( $object->labels, 'name' ) )
    474             ? $object->labels->name
    475             : $object->name;
    476 
    477         $revision_post_types[ $type ] = $name;
    478     }
    479 
    480     return $revision_post_types;
    481 }
  • advanced-responsive-video-embedder/tags/10.6.14/php/init.php

    r3338484 r3338557  
    33declare(strict_types = 1);
    44
    5 namespace Nextgenthemes\TweakMaster;
     5namespace Nextgenthemes\ARVE;
    66
    7 add_action( 'init', __NAMESPACE__ . '\init_public', 9 );
     7// Stop outdated addons from executing
     8remove_action( 'plugins_loaded', 'Nextgenthemes\ARVE\Pro\init', 15 );
     9remove_action( 'plugins_loaded', 'Nextgenthemes\ARVE\RandomVideo\init', 15 );
     10remove_action( 'plugins_loaded', 'Nextgenthemes\ARVE\Privacy\init', 16 );
     11
     12add_action( 'init', __NAMESPACE__ . '\init', 9 );
    813add_action( 'admin_init', __NAMESPACE__ . '\init_admin', 9 );
    914
    10 function init_public(): void {
     15function init(): void {
    1116
    12     require_once __DIR__ . '/fn-settings.php';
     17    require_once PLUGIN_DIR . '/php/Video.php';
     18    require_once PLUGIN_DIR . '/php/fn-cache.php';
     19    require_once PLUGIN_DIR . '/php/fn-assets.php';
     20    require_once PLUGIN_DIR . '/php/fn-html-output.php';
     21    require_once PLUGIN_DIR . '/php/fn-misc.php';
     22    require_once PLUGIN_DIR . '/php/fn-oembed.php';
     23    require_once PLUGIN_DIR . '/php/fn-shortcode-data.php';
     24    require_once PLUGIN_DIR . '/php/fn-shortcode-args.php';
     25    require_once PLUGIN_DIR . '/php/fn-shortcodes.php';
     26    require_once PLUGIN_DIR . '/php/fn-url-handlers.php';
     27    require_once PLUGIN_DIR . '/php/fn-validation.php';
     28    require_once PLUGIN_DIR . '/php/fn-settings.php';
    1329
    14     $settings = settings_data();
    15     $settings->remove( 'scroll-progress-bar' ); // uses options api
     30    add_option( 'arve_install_date', time() );
     31    maybe_delete_oembed_cache(); // Must be before update_option arve_version
     32    update_option( 'arve_version', VERSION );
    1633
    17     foreach ( $settings->get_all() as $key => $setting ) {
     34    add_action( 'init', __NAMESPACE__ . '\settings_instance' );
     35    add_action( 'init', __NAMESPACE__ . '\init_nextgenthemes_settings' );
     36    add_action( 'init', __NAMESPACE__ . '\register_assets' );
     37    add_action( 'init', __NAMESPACE__ . '\create_shortcodes' );
     38    add_action( 'init', __NAMESPACE__ . '\create_url_handlers' );
     39    add_filter( 'mce_css', __NAMESPACE__ . '\add_styles_to_mce' );
     40    add_filter( 'oembed_remote_get_args', __NAMESPACE__ . '\vimeo_referer', 10, 2 );
     41    add_action( 'wp_enqueue_scripts', __NAMESPACE__ . '\action_wp_enqueue_scripts' );
     42    add_filter( 'render_block_core/embed', __NAMESPACE__ . '\remove_embed_block_aspect_ratio' );
     43    add_action( 'wp_video_shortcode_override', __NAMESPACE__ . '\wp_video_shortcode_override', 10, 4 );
     44    add_filter( 'language_attributes', __NAMESPACE__ . '\html_id' );
     45    add_filter( 'oembed_dataparse', __NAMESPACE__ . '\filter_oembed_dataparse', PHP_INT_MAX, 3 );
     46    add_filter( 'embed_oembed_html', __NAMESPACE__ . '\filter_embed_oembed_html', OEMBED_HTML_PRIORITY, 4 );
     47    add_action( 'elementor/widgets/register', __NAMESPACE__ . '\register_elementor_widget' );
    1848
    19         if ( 'boolean' === $setting->type && option_is_set( $key ) ) {
    20             require_once TWEAKS_DIR_SA . "/$key.php";
    21         }
     49    foreach ( ADDON_NAMES as $addon_name ) {
     50        maybe_init_addon( $addon_name );
    2251    }
    23 
    24     if ( any_option_is_set( [ 'jpeg-compression', 'webp-compression', 'avif-compression' ] ) ) {
    25         require_once TWEAKS_DIR . '/image-quality.php';
    26     }
    27 
    28     if ( ! defined( 'EMPTY_TRASH_DAYS' ) && option_is_set( 'trash-keep-days' ) ) {
    29         require_once TWEAKS_DIR . '/set-trash-keep-days.php';
    30     }
    31 
    32     require_once TWEAKS_DIR . '/revisions-to-keep.php';
    33 
    34     require_file_if_option_is_set( 'admin-bar-greeting' );
    35     require_file_if_option_is_set( 'scroll-progress-bar' );
    36     require_file_if_option_is_set( 'user-agent' );
    3752}
    3853
    39 function require_file_if_option_is_set( string $key ): void {
     54function maybe_init_addon( string $name ): void {
    4055
    41     if ( option_is_set( $key ) ) {
    42         require_once TWEAKS_DIR . "/$key.php";
     56    $init_function_name = '\\' . __NAMESPACE__ . '\\' . $name . '\\init';
     57    $version_const_name = '\\' . __NAMESPACE__ . '\\' . $name . '\\VERSION';
     58    $req_ver_const_name = '\\' . __NAMESPACE__ . '\\' . strtoupper( $name ) . '_REQUIRED_VERSION';
     59    $version            = defined( $version_const_name ) ? constant( $version_const_name ) : '';
     60    $req_ver            = defined( $req_ver_const_name ) ? constant( $req_ver_const_name ) : '';
     61
     62    if ( $version && version_compare( $version, $req_ver, '>=' ) && function_exists( $init_function_name ) ) {
     63        $init_function_name();
    4364    }
    4465}
    4566
    4667function init_admin(): void {
    47     add_action( 'nextgenthemes/tweakmaster/admin/settings/sidebar', __NAMESPACE__ . '\code_info' );
    48     add_action( 'nextgenthemes/tweakmaster/admin/settings/content', __NAMESPACE__ . '\revisions_tab_info' );
     68
     69    require_once PLUGIN_DIR . '/php/Admin/fn-admin.php';
     70    require_once PLUGIN_DIR . '/php/Admin/fn-settings-page.php';
     71    require_once PLUGIN_DIR . '/php/Admin/fn-shortcode-creator.php';
     72    require_once PLUGIN_DIR . '/php/Admin/fn-debug-info.php';
     73
     74    add_action( 'nextgenthemes/arve/admin/settings/sidebar', __NAMESPACE__ . '\Admin\settings_sidebar' );
     75    add_action( 'nextgenthemes/arve/admin/settings/content', __NAMESPACE__ . '\Admin\settings_content' );
     76
     77    add_action( 'admin_bar_menu', __NAMESPACE__ . '\Admin\action_admin_bar_menu', 100 );
     78    add_action( 'admin_enqueue_scripts', __NAMESPACE__ . '\Admin\admin_enqueue_scripts' );
     79    add_action( 'admin_enqueue_scripts', __NAMESPACE__ . '\Admin\admin_enqueue_styles', 99 );
     80    add_action( 'admin_init', __NAMESPACE__ . '\Admin\action_admin_init_setup_messages' );
     81    add_action( 'media_buttons', __NAMESPACE__ . '\Admin\add_media_button', 11 );
     82
     83    add_action( 'register_shortcode_ui', __NAMESPACE__ . '\Admin\register_shortcode_ui' );
     84    add_action( 'wp_dashboard_setup', __NAMESPACE__ . '\Admin\add_dashboard_widget' );
     85
     86    add_filter( 'plugin_action_links_' . plugin_basename( PLUGIN_FILE ), __NAMESPACE__ . '\Admin\add_action_links' );
     87
     88    add_filter( 'debug_information', __NAMESPACE__ . '\Admin\add_site_health_metadata' );
    4989}
    5090
    51 function code_info(): void {
     91register_uninstall_hook( PLUGIN_FILE, __NAMESPACE__ . '\uninstall' );
    5292
    53     ?>
    54     <div class="ngt-sidebar-box">
    55         <p>
    56             <?php
    57                 echo wp_kses(
    58                     sprintf(
    59                         // translators: %s: Github URL.
    60                         __( 'See the <a href="%s" target="_blank">code</a> and add tweaks you are missing.', 'tweakmaster' ),
    61                         'https://github.com/nextgenthemes/tweakmaster/tree/master/php/tweaks-standalone'
    62                     ),
    63                     [
    64                         'a' => [
    65                             'href'   => [],
    66                             'target' => [],
    67                         ],
    68                     ],
    69                     [ 'https' ]
    70                 );
    71             ?>
    72         </p>
    73     </div>
    74     <?php
     93function uninstall(): void {
     94
     95    global $wpdb;
     96
     97    if ( version_compare( $wpdb->db_version(), '8.0', '>=' ) ) {
     98        $wpdb->query( "UPDATE {$wpdb->postmeta} SET meta_value = REGEXP_REPLACE( meta_value, '<template[^>]+arve_cachetime[^>]+></template>', '' )" );
     99    }
    75100}
    76 
    77 function revisions_tab_info(): void {
    78 
    79     ?>
    80     <p data-wp-bind--hidden="!context.activeTabs.revisions">
    81         <?php echo wp_kses( __( '<code>-1</code> = Unlimited revisions', 'tweakmaster' ), [ 'code' => [] ] ); ?><br>
    82         <?php echo wp_kses( __( '<code>0</code> = Disable revisions', 'tweakmaster' ), [ 'code' => [] ] ); ?><br>
    83         <?php echo wp_kses( __( 'Positive integer = Number of revisions', 'tweakmaster' ), [ 'code' => [] ] ); ?>
    84     </p>
    85     <?php
    86 }
  • advanced-responsive-video-embedder/tags/10.6.14/readme.md

    r3338484 r3338557  
    1 If you just want just use the plugin its on [wordpress.org](https://wordpress.org/tweakmaster).
     1# Git repository for Advanced Responsive Video Embedder (ARVE)
    22
    3 # Contributing is very easy
     3#### Level up your basic video embeds! Advanced features, privacy. Use URLs, Shortcodes or Blocks to customize videos to your needs.
    44
    5 1. For a basic standalone tweak all you need to do it develop a (mu)plugin as a single file that automatically enabled/disables or otherwise tweaks something with filters or actions.
    6 1. When you have your tiny tweak plugin working simply place the file into `tweakmaster/php/tweaks-standalone/` look at the naming of the files and name your tweak straight to the point. Look at the other files for coding standards. Use Namespace, filters/actions at the top of the file, avoid anonymous functions.
    7 1. Then check out how settings are defined in `tweakmaster/php/fn-settings.php`. Add a setting for your tweak, the array key should be like your filename but without the `.php` ending. Most of the boolean settings simple case a tweak file to be loaded. Think of it like activating plugins.
     5[ARVE WordPress Plugin][1] is free on [wp.org][1]. Look there for the feature set.
    86
    9 # Advanced usage of standalone tweaks as mu-plugins
     7[Permalink download to latest version][2]. It will at times be an alpha or beta version that passed the automatic tests but is not released to wp.org. You can upload it a WordPress site under Dashboard > Plugins -> Add New -> Upload.
    108
    11 If you do it this way, you probably should not use the Plugin at the same time. It won't work for tweaks that have settings that are not just on/off switches. Each standalone tweak can be used as mu-plugin. Simple put the files you need inside your mu-plugins folder.
     9Feel free to file issues with the *code*, for support please file a ticket on [nextgenthemes.com/support/](https://nextgenthemes.com/support/)
    1210
    13 To do this you can simply copy `.php` files you like from [tweaks-standalone/](https://github.com/nextgenthemes/tweakmaster/tree/master/php/tweaks-standalone) to your mu-plugins folder. Github has a 'download file' icon on the top right when you open files.
     11Code contributions are welcome.
    1412
    15 If you have WP CLI you can use these command to copy the files directly from Github to your WordPress site.
     13Paid addons that finance this project are available:
    1614
    17 ```sh
    18 # In case you do not have a mu-plugins folder.
    19 wp eval "if ( ! file_exists(WP_CONTENT_DIR . '/mu-plugins' ) ) { mkdir(WP_CONTENT_DIR . '/mu-plugins', 0755, true); }"
     15* [Pro](https://nextgenthemes.com/plugins/arve-pro) for Lightbox, Lazyload, Autofill of SEO data and more.
     16* [Privacy](https://nextgenthemes.com/plugins/arve-privacy) for DSGVO compliance, self hosted thumbnails, load YouTube videos via an invideo.us instance.
     17* [Sticky Videos](https://nextgenthemes.com/plugins/arve-sticky-videos/)
     18* [Random Video](https://nextgenthemes.com/plugins/arve-random-video)
    2019
    21 # Replace the filename with any file you find in https://github.com/nextgenthemes/tweakmaster/tree/master/php/tweaks-standalone/
    22 wp eval "\$filename = 'disable-auto-trash-emptying.php'; file_put_contents( WP_CONTENT_DIR . '/mu-plugins/' . \$filename, file_get_contents( 'https://raw.githubusercontent.com/nextgenthemes/tweakmaster/refs/heads/master/php/tweaks-standalone/' . \$filename ) );"
    23 ```
     20If you have an idea for a functionality or addon you like to pay for, please [reach out](https://nextgenthemes.com/contact/).
     21
     22[1]: https://wordpress.org/plugins/advanced-responsive-video-embedder/
     23[2]: https://github.com/nextgenthemes/advanced-responsive-video-embedder/releases/latest/download/arve.zip
  • advanced-responsive-video-embedder/tags/10.6.14/readme.txt

    r3338484 r3338557  
    1 === TweakMaster ===
     1=== Advanced Responsive Video Embedder for Rumble, Odysee, YouTube, Vimeo, Kick ... ===
    22Contributors: nico23
    3 Tags: performance, privacy, security, tweaks, lightweight
     3Donate link: https://nextgenthemes.com/donate/
     4Tags: embed, video, lazyload, lightbox, rumble
    45Requires at least: 6.6
    56Tested up to: 6.8
    67Requires PHP: 7.4
    7 Stable tag: 1.0.5
    8 License: GPLv3
     8Stable tag: 10.6.14
     9License: GPL-3.0
    910License URI: https://www.gnu.org/licenses/gpl-3.0.html
    10 Donate link: https://nextgenthemes.com/donate
    11 
    12 A collection of performance, privacy, security, and other tweaks. Minimalistic lightweight plugin.
    13 
    14 == Description ==
    15 WP Tweak is a lightweight and minimalistic WordPress plugin designed to enhance your website with a curated set of tweaks. It focuses on improving performance, bolstering privacy, strengthening security, and adding other useful optimizations—all without unnecessary bloat. Perfect for users who want a simple yet effective solution to fine-tune their WordPress experience.
    16 
    17 This plugins handles tweaks in a minimalistic way. Only files that contains tweaks that you activate are loaded!
    18 
    19 = Tweaks =
    20 
    21 * **Remove version query strings**<br>
    22 Removes <code>?ver=1.2.3</code> from all styles and scripts.
    23 * **Disable feeds**
    24 * **Disable emojis**
    25 * **Search single result redirect**
    26 * **Disallow File Edits**<br>
    27 Disables the ability to edit files in the file manager. Sets <code>DISALLOW_FILE_EDIT</code> constant to true. Does only work if the constant is already defined, usually in wp-config.php
    28 * **Admin bar greeting**<br>
    29 Replace "Howdy, {name}" with a custom message. Use <code>{name}</code> for the user's display name. For example <code>Hi, {name}!</code>. Leave empty for no greeting. Use <code>default</code> for the default greeting, preventing the tweak from running.
    30 * **Enable fonts to uploads**<br>
    31 Move (Google) Fonts enabled in the Block Editor from wp-content/fonts to wp-content/uploads
    32 * **Disable auto trash emptying**
    33 * **Set trash keep days**<br>
    34 Set the number of days to keep posts in the trash. Default is 30 days.
    35 * **Scroll progress bar**
    36 * **Scroll progress color**<br>
    37 And valid css will work. You can use <a href="https://oklch.com" target="_blank">this color picker!</a>.
    38 * **Scroll progress bar background color**
    39 * **Scroll progress height**
    40 * **Disable self SSL verify**
    41 * **Disable Comments**
    42 * **Disable Email Login**
    43 * **Disable REST API**
    44 * **Disable Success Update Emails**
    45 * **Remove Admin Bar WordPress Logo**<br>
    46 Requires a hard refresh of the page to take effect.
    47 * **Remove Asset Attributes**
    48 * **Disable Non Production Emails**<br>
    49 If WP_ENV (Trellis) or wp_get_environment_type is not production, emails sending is mocked.
    50 * **Remove REST API links**
    51 * **Set user agent**<br>
    52 WP really hates privacy and sends this <code>WordPress/1.0; https://example.org</code> to every site it makes calls to. You can empty the field, pretend to be Chrome <code>Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36</code> or something else. <code>default</code> will change nothing.
    53 * **Remove EXIF**<br>
    54 Remove EXIF data from uploaded images.
    55 * **Convert jpeg to avif**<br>
    56 Convert uploaded jpeg to avif
    57 * **Clean upload filenames**<br>
    58 Sanitize media filenames to remove non-latin special characters and accents
    59 * **Avif compression**<br>
    60 Default is 82
    61 * **Jpeg compression**<br>
    62 Default is 82
    63 * **Webp compression**<br>
    64 Default is 86
    65 * **Limit ALL revisions**<br>
    66 Limit revisions for all post types. This will override the limit for each post type from above!
    67 * **Disable XML-RPC**
    68 * **Disable XML-RPC - allow Jetpack IPs**<br>
    69 Allow XML-RPC only from Jetpack IPs
    70 * **Remove WP version**<br>
    71 Remove <code>WordPress/6.7.1; https://example.org</code> from html head
    72 * **Dequeue jQuery Migrate**<br>
    73 Dequeue jQuery Migrate from the jQuery script dependencies on the frontend. This is used to help devs debug from old versions of jQuery. You really do not need this on a production site.
    74 * **Script Optimizer**<br>
    75 Optimize script loading by moving them into the <code>head</code> and adding <code>defer</code> attribute. This may break your site. Use at your own risk!
    76 * **Enable relative URLs**<br>
    77 Enable relative URLs on the frontend. This may break your site. Use at your own risk!
    78 * **Disable Contact Form 7 CSS**<br>
    79 Sets <code>wpcf7_load_css</code> filter to <code>false</code>
    80 * **Disable Contact Form 7 Autop**<br>
    81 Sets <code>wpcf7_autop_or_not</code> filter to <code>false</code>
    82 * **Enable Jetpack offline mode**
    83 * **Enable maintenance mode**
    84 * **Enable duplicate post**
    85 
    86 
    87 = Contribute to add quality tweaks to the plugin reviewed by me =
    88 
    89 Unlike WP Code's snippet database that is filled with low code quality tweaks where some do not even work at all and spam this plugin only contains high quality tweaks. If something is missing please add it.
    90 
    91 It is very easy to contribute to the plugin. Check out the [Github Readme](https://github.com/nextgenthemes/tweakmaster/blob/master/readme.md).
    92 
    93 If you have questions on adding a more complex tweak please feel free to ask.
    94 
    95 == Screenshots ==
    96 (Maybe later)
    97 
    98 == Changelog ==
    99 
    100 = 2025-03-29 - 1.0.3
    101 * Improved: sanitize, validate correctly, fix prefixes ...
    102 * Removed update disable tweak, not allowed on wp.org?
    103 
    104 = 2025-03-xx - 1.0.1-beta2 =
    105 * Improved: Tweak descriptions.
    106 * Fix: Admin Bar Greeting tweak.
    107 * Fix: Link to GH readme.
    108 * Fix: Rename `wptweak` to `tweakmaster` to fix multiple issues.
    109 
    110 = 2025-03-15 - 1.0.1-beta1 =
    111 * New: Disable non production email tweak.
    112 
    113 = 2025-03-xx - 1.0.0-beta1 =
    114 * Initial release.
     11
     12Level up your basic video embeds! Advanced features, privacy. Use URLs, Shortcodes or Blocks to customize videos to your needs.
     13
     14## Description ##
     15
     16The best WordPress plugin for videos? Supports close to everything you can imagine, still keeping it easy & simple.
     17
     18It is very likely the one and only plugin you will ever need to handle video embeds on your WordPress site(s). It goes far beyond just making your videos responsive!
     19
     20[youtube https://www.youtube.com/watch?v=m6mkA6Zr1vY ]
     21
     22### Features ###
     23
     24#### Classic Editor ####
     25
     26*  Adds "Embed Video" button to help you create very powerful `[arve]` shortcodes.
     27*  Takes over WordPress embeds with URLs on their own line and `[embed]` shortcodes.
     28*  Can take over WP's default video file embeds.
     29
     30#### Block Editor (Gutenberg) ####
     31
     32*  Works with Embed, YouTube, Vimeo, Shortcode ... blocks.
     33*  Provides it's own powerful ARVE Block with all the features the `[arve]` shortcode offers, with a nice UI and detailed settings descriptions.
     34
     35#### Elementor ####
     36
     37* Provides a widget for the entire feature set of ARVE inside Elementor
     38
     39#### All ####
     40
     41*   Makes your video embeds [more secure and enhances visitors privacy](https://nextgenthemes.com/privacy-enhanced-and-safer-iframes-in-arve-10-0/).
     42*   Magically makes videos responsive you already embedded with WordPress default features.
     43*   SEO friendly, lets you specify title, description, upload date to provide search engines with the schema.org data they like to have for better indexing. Pro can autofill this for you.
     44*   No 'lock in' if you do not use the ARVE Gutenberg Block or `[arve]` shortcodes.
     45*   Supports [almost every video host](https://nextgenthemes.com/plugins/arve-pro/#support-table) that supports iframe embed codes.
     46*   Embeds via pasting the URL in its own line just like WordPress!
     47*   Optionally use very powerful Shortcodes instead.
     48*   Clean shortcode syntax `[arve url="https://youtu.be/yUCFRL43Zm4" parameters="start=30" ... /]`, no unnecessary shortcode wrapping.
     49*   One shortcode or Block for all video providers.
     50*   Responsive embeds with CSS, much better than with JavaScript.
     51*   Tries to be as unobtrusive as possible, sets 'hide brand' variables if supported, disables related videos from other channels at the end … to help keep people on your site rather then going to YouTube or keep watching videos.
     52*   Limited Autoplay (Mobile browsers usually prevent autoplay or allow it only muted. ARVE will automatically mute it but browser settings can still prevent it, even on Desktop)
     53*   Custom URL parameters to use all options providers offer.
     54*   Optional maximal width.
     55*   Video alignment.
     56*   Detailed description of options in-place.
     57*   Automatic detected and custom aspect ratio.
     58
     59#### Supported Providers ####
     60
     61[All providers with iframe embed codes](https://nextgenthemes.com/plugins/arve/documentation/#general-iframe-embedding)
     62Alugha, Archive.org, Banned.video, Bitchute, Brightcove, Brighteon, Comedy Central, Dailymotion, Dailymotion Playlist, DTube, Facebook, Gab TV, Google Drive, mp4 or webm video files, ARVE general iframe embed, IGN, IMDB, Kickstarter, kla.tv, Livestream.com, Mail.ru, Metacafe, myspace, v.qq.com, Rumble.com, ok.ru, RuTube.ru, TED Talks, TikTok, Twitch, Viddler, Vimeo, VK, Wistia, XTube, xHamster, Yahoo, Youku, YouTube, YouTube Playlist, Kick
     63### Reviews ###
     64
     65#### &#9733; &#9733; &#9733; &#9733; &#9733; Great plugin, great support ####
     66I’ve been using this plugin (free version and pro add-on) for a few years now. It works very well for my purposes (mainly lazyload and lightbox functionality). Recently I had a support issue with the new version which required some intervention – it was a conflict with my theme. Nico, the developer, went above and beyond to get a fix promptly sorted out for me. Thank you Nico.
     67
     68#### &#9733; &#9733; &#9733; &#9733; &#9733; The best there is – I have tried many…  ####
     69Have downloaded and paid for at least 4 other video players that use lightbox. Each one has major flaws. This products works perfectly. If you use the OnSite Editor, then just copy the short code and it works great.
     70
     71[arve url="https://www.youtube.com/watch?v=Z7g8-GxLTSc" /]
     72
     73For speed, the product uses the thumbnails from the server. So many of the other products do NOT do this and it slows the page rendering. This product should appear first on the WordPress search. Spent 3 days of my life wasted on other products, only to delete each one. [review by jodani][16]
     74
     75#### &#9733; &#9733; &#9733; &#9733; &#9733; Finally something that works ####
     76So I have a responsive theme but on pages with you tube videos it wasn't making the you tube videos fit in the mobile screen. I have spent the last hour trying many plugins and researching on google and finally I installed this. And I didn't have to update any settings or anything just refreshed a post with videos and all the sudden it is beautiful and responsive on my mobile phone!!!!!! THANK YOU!!!! [review by happyecho][16]
     77
     78#### &#9733; &#9733; &#9733; &#9733; &#9733; Only Plug-in that worked ####
     79I used a lot of high ranking plug-ins but they still broke my design. Downloaded this and worked right away. Thanks! [review by crconnell89][16]
     80
     81[16]: https://wordpress.org/support/plugin/advanced-responsive-video-embedder/reviews/?filter=5
     82
     83### [ARVE Pro][20] ###
     84
     85**<big>10% off</big>** first year with discount code `wporg`.
     86
     87This plugin is financed by purchases of [ARVE Pro][20]. The development and support of this plugins has become a job for me, so I hope you understand that I can not make all features gratis and that you [purchase it][20] to get extra features and support the development.
     88
     89*   **Disable links in embeds (killer feature!)**<br>
     90    For example: Clicking on a title in a YouTube embed will not open a new tab. **Prevent video hosts to lead your visitors away from your site!**
     91*   **Lazyload**<br>
     92    Make your site load **faster** by loading only an image instead of the entire video player on pageload.
     93*   **Lightbox**<br>
     94    Shows the Video in a Lightbox after clicking a Lazyload preview image
     95*   **Link ⇾ Lightbox**<br>
     96    Use simple links as triggers for opening Video Lightboxes
     97*   Auto pause videos when another video is played
     98*   Automatic or custom thumbnail images
     99*   Automatic or custom titles on top of your thumbnails
     100*   'Expand on click' feature
     101*   2 hover & 3 play icon styles
     102*   Responsive thumbnails (srcset)
     103*   **Feel good about yourself**<br>
     104    for supporting my 8+ years work on this plugin. Tons of hours, weekends … always worked on improving it
     105*   Show the latest video of a YouTube channel by using the channel URL (updated/cached hourly)
     106*   **[Get ARVE Pro][20]**
     107
     108[20]: https://nextgenthemes.com/plugins/arve-pro/
     109
     110### [ARVE Sticky Videos][23] ###
     111
     112Keep videos on the screen when scrolling.
     113
     114*  Choose if videos should be pinned to the top of the screen. Like the YouTube app for example.
     115*  For bigger screen choose a corner where a video should be pinned to. Like last.fm [for example][23].
     116
     117  [23]: https://nextgenthemes.com/plugins/arve-sticky-videos/
     118
     119### [Random Video Addon](https://nextgenthemes.com/plugins/arve-random-video/) ###
     120
     121Display random video from:
     122
     123*  YouTube Playlist
     124*  Vimeo Showcase
     125*  Comma separated list of video URLs
     126
     127### [ARVE AMP][29] ###
     128
     129When you use the AMP or 'AMP for WP' plugin you need this.
     130
     131* It will display videos embedded with ARVE on AMP pages correctly
     132* No options, just works
     133* It creates `<amp-youtube>`, `<amp-vimeo>`, `<amp-dailymotion>` elements
     134* For all other video hosts `<amp-video-iframe>` element is used
     135* Video files are also supported with `<amp-video>`
     136
     137  [29]: https://nextgenthemes.com/plugins/arve-amp/
     138
     139### Thanks ###
     140
     141*   Of course all the customers who bought a addon.
     142*   Howard Iken of [myfloridalaw.com](https://www.myfloridalaw.com) top donor, super nice to me even if I was rude and not deserved it!
     143*   [Ilya Grishkov](https://www.ilyagrishkov.com) for bringing up the idea and the first code to cache thumbnail urls.
     144*   Everybody giving constructive feedback, testing beta versions.
     145*   Everybody who donated back in the days when this was donation based.
     146
     147### Thanks to the developers of the software used in ARVE ###
     148
     149*   [Bigger Picture](https://github.com/henrygd/bigger-picture), used in [Pro Addon](https://nextgenthemes.com/plugins/arve-pro/)
     150
     151## Frequently Asked Questions ##
     152
     153### I have a problem ... ###
     154
     155Please report it on [nextgenthemes.com/support/](https://nextgenthemes.com/support/) **and please do not on the wordpess.org forums, thanks.**
     156
     157### I’m experiencing these errors on Google Search Console ###
     158
     159Best option to resolve these errors is to get [ARVE Pro](https://nextgenthemes.com/plugins/arve-pro/) as it fills these in for you hassle-free, only activate the add-on - done. For more options, please see the [detailed answer](https://nextgenthemes.com/plugins/arve/faq/).
     160
     161### How to get the pro version working? ###
     162
     1631. Go though the purchase process on [nextgenthemes.com](https://nextgenthemes.com/plugins/arve-pro/)
     1641. Follow the 3 easy steps you get with the purchase receipt. It is basically downloading a arve-pro.zip and installing it through your WordPress Admin panel.
     1651. After that you may want to switch your default mode to Lazyload or Lightbox on the ARVE settings page.
     166
     167### Why are my videos not filling their container? ###
     168
     169You may need to adjust your 'Maximal Width' setting to your liking.
     170
     171You are most likely use `align`, this plugin has a option for limiting video width with alignment. If you want your videos to fill their containers then you should not use the `align` shortcode attribute.
     172
     173### Can you add a video provider? ###
     174
     175Feel free to ask.
     176
     177### How do I embed videos from a unlisted providers / iframes? ###
     178
     179This plugin not changes anything to usual HTML `<iframe>` embed codes you have to use the shortcodes or the Gutenberg Block. They will become `[arve url="https://..."]`. The url represents what is the `src` in HTML embeds. It works as simple as this, if the `[arve]` shortcode does not detect a known URL structure then it will treat the URL as a `src` for the iframe.
     180
     181## Installation ##
     182
     183Please read the [official documentation](https://wordpress.org/support/article/managing-plugins/#installing-plugins) for that.
     184
     185## Screenshots ##
     186
     1871. Block Editor Example
     1882. Shortcode creation dialog in Classic Editor
     1893. Main Options
     1904. Pro Options
     1915. Video Files Options
     1926. URL Parameter Options
     193## Changelog ##
     194
     195* [ARVE Pro changelog](https://nextgenthemes.com/plugins/arve-pro/#changelog)
     196* [ARVE Random Videos changelog](https://nextgenthemes.com/plugins/arve-random-video/#changelog)
     197
     198### 2025-07-30 10.6.13 ###
     199
     200* Fix: _load_textdomain_just_in_time was called incorrectly.
     201* Fix: Minor visible error on debug tab with WP_DEBUG enabled.
     202
     203### 2025-03-22 10.6.12 ###
     204
     205* Fix: HTML mistake on the setting page.
     206* Improved: Hide some old errors.
     207
     208### 2025-03-21 10.6.10 ###
     209
     210* Fix: Removing ARVE data from oembed cache on uninstall.
     211* Improved: Error messages and escaping for remote calls.
     212* Improved: Lots of things around caching and how the errors are (not) displayed.
     213
     214### 2025-03-17 10.6.8 ###
     215
     216* Improved: ARVE now handles the execution of addons, not executing outdated addon.
     217* Improved: Added outdated messages for all addons.
     218
     219### 2025-03-16 10.6.7 ###
     220
     221* Fix: Compatibility with Advanced Custom Fields WYSIWYG editors. The ARVE shortcode creation button now finally works there.
     222
     223### 2025-03-15 10.6.6 ###
     224
     225* Improved: Tested with WP 6.8-beta2
     226* Improved: Updated jetpack autoloader.
     227* Improved: Cache deletion.
     228* Improved: Handling of error messaged of YouTube Data API errors.
     229* Abandoned asset wrappers.
     230* Renamed shared code package, now [nextgenthemes/wp-settings](https://packagist.org/packages/nextgenthemes/wp-settings) on Packagist.
     231
     232### 2025-03-09 10.6.5 ###
     233
     234* Fix: Cache management related old YouTube video having broken thumbnails.
     235
     236### 2025-03-09 10.6.4 ###
     237
     238* Fix: Link to settings page in API key notice.
     239* Improved: Link to tutorial video showing you how to get an YouTube Data API key.
     240
     241### 2025-03-09 10.6.1 ###
     242
     243* Improved: Error handling. Show YouTube API errors only on the Admin screens.
     244* Improved: Cache deletion.
     245* New: Option to add your own YouTube Data API key to prevent limits of the one included in Pro.
     246
     247### 2025-03-08 10.6.0 ###
     248
     249* New: Lazyload Style option (Pro Feature).
     250* Fix: Settings page conflicts with admin notices (from other plugins).
     251* Fix: `_load_textdomain_just_in_time` being triggered too early.
     252* Improved: Styles for the settings page and Classic Editor shortcode creator dialog.
     253* Improved: Simplified the way ARVE generates HTML using `WP_HTML_Tag_Processor`.
     254* Improved: `dnt=1` parameter is now part of the visible default parameters for Vimeo and Wistia. You may need to remove it or set it to `0` to get your views tracked by them.
     255
     256### 2025-01-15 10.5.4 ###
     257
     258* Improved: Removed incompatibility notices for AIO SEO Pack (resolved).
     259
     260### 2025-01-11 10.5.3 ###
     261
     262* Fix: Fixed, improved and restored Shortcode UI functionality.
     263
     264### 2025-01-08 10.5.2 ###
     265
     266* Fix: Block errors.
     267
     268### 2025-01-02 10.5.1 ###
     269
     270* Fix: Array merge with NULL error.
     271
     272### 2025-01-02 10.5.0 ###
     273
     274* New: Debug option to control src mismatch errors.
     275* Improved: Removed the debug into in favor or adding data to the Site Health Info screen.
     276* Improved: Introduced a `SettingsData` and `SettingValidator` classes to make the code more robust self testing.
     277
     278### 2024-12-05 10.4.0 ###
     279
     280* New: Added `credentialless="false"` parameter that can be used to remove the same named attribute from the iframe.
     281* Fix: Added `data-lenis-prevent` to the ARVE wrapper div to prevent issues with Lenis Smooth Scroll script.
     282* Fix: Viddler not working by allowing `sync-xhr`.
     283* Improved: Changes enabling latest ARVE Pro versions to use `sizes="auto"` for more efficient image loading.
     284* Improved: Featured image as fallback default change to `true` (Pro).
     285* Improved: ARVE now includes a black image with stripes used as default fallback thumbnail.
     286* Improved: Removed some legacy code, outdated addons are prevented from executing.
     287
     288### 2024-11-08 10.3.4 ###
     289
     290* Fix: xHamster not working. Its direclty supported with normal URLs now. Note ARVE needs to allow referrer to be send, with this privacy enhancement disabled xHamster will see the domain you are embedding from.
     291* Fix: multisite (needs to be confirmed).
     292
     293### 2024-10-23 10.3.3 ###
     294
     295* Show messages about incompatibility issue with All in One SEO Pack.
     296* Fix: Duplicated controls in ARVE Block sidebar.
     297* Fix: Help tests were not showing in Settings page.
     298
     299### 2024-08-22 10.3.2 ###
     300
     301* New: URL detection for VK.com videos.
     302
     303### 2024-08-02 10.3.1 ###
     304
     305* New: Add current theme and version to Debug Info.
     306* Fix: PHP error when `$GLOBALS['content_width']` is not an integer. Props Gianluca.
     307
     308### 2024-07-17 10.3.0 ###
     309* WP 6.6 marked as required.
     310* New: Brings back support for Shortcode UI that was removed previously. Note that in SCUI it uses yes/no and ARVE dialog uses true/false. There may come some improvement on that later.
     311* Fix: Remove script module and WP interactivity registering as this is done by WP in 6.6 now and caused double register and ordering issues.
     312* Fix: Make sure the ARVE shortcode modal is closed when selecting a thumbnail and reopened afterwards.
     313
     314### 2024-07-06 10.2.3 ###
     315* Fix: Help toggle in new ARVE Shortcode dialog.
     316* Improved: Show message that the ARVE Button in Classic Editor needs WP 6.6 (sorry, to be released 2024-07-16).
     317
     318### 2024-06-17 10.2.2 ###
     319* Fix: Rare src mismatch errors with YouTube.
     320* Improved: Set block api version to 3.
     321* Improved: Show message that the ARVE Block needs Gutenberg active or WP 6.6.
     322
     323### 2024-06-17 10.2.1 ###
     324* Improved: Set WP required version to 6.5 in main plugin file, previously only set in readme.
     325
     326### 2024-06-15 10.2.0 ###
     327* New: Invidious URL Parameter setting for new extra privacy addon.
     328* Fix: Encoding and JSON errors related how things were stored in oembed cache.
     329* Fix: Issue activating licenses.
     330* Improved: Yet another Setting page overhaul, dropping Alpine.js for WP Interactivity API.
     331* Improved: Bring back reset buttons for settings sections.
     332* Improved: A couple of typos.
     333* Removed Shortcode UI support. (That plugin did now have a release in 5 years, the ARVE dialog is better anyway IMO)
     334* Compatibility with latest Pro addon.
     335
     336### 2024-05-27 10.1.1 ###
     337* Improved: Changes how the referrer setting works. `no-referrer` by default `strict-origin-when-cross-origin` for selected providers.
     338* Fix: Some YouTube videos (music?) do not without without allowing reverer to be send so YouTube was added to the list to allow it by default.
     339
     340### 2024-05-24 10.1.0 ###
     341* Improved: ARVE own video IDs are no longer random, this is better for SEO and other things.
     342* New: Support for [ok.ru](http://ok.ru).
     343* New: Rutube video url detection. (only embed code worked before).
     344
     345### 2024-05-23 10.0.10 ###
     346* Fix: Videos with quotes in the title/description caused json_decode syntax error.
     347
     348### 2024-05-22 10.0.9 ###
     349* Fix: Some Vimeo videos not working without cache working.
     350* Fix: src mismatch error testing.
     351* Improved: Error display.
     352
     353### 2024-05-21 10.0.8.1 ###
     354* Fix: Do not delete cache every time.
     355
     356### 2024-05-21 10.0.8 ###
     357* Fix: Some broken Vimeo videos. And possibly other bugs.
     358
     359### 2024-05-21 10.0.7 ###
     360* Fix: Lazyload and Lightbox (Pro) were not displayed when used with video files.
     361
     362### 2024-05-17 10.0.6 ###
     363
     364#### Improved
     365* Performance of oembed deletion.
     366* Move the "Delete oEmbed cache" button to the top of the Debug tab in the Settings. Press it if you have trouble with thumbnails.
     367
     368### 2024-05-15 10.0.5 ###
     369* Fix?: Initialize deletion of oembed caches later.
     370* New/Fix: Setting to allow domain restricted videos.
     371* Fix: Show Blog entries in correct order on settings page.
     372
     373### 2024-05-13 10.0.4 ###
     374* Fix: Fatal error prevention for people using outdated versions of ARVE Pro while upgrading the main plugin to version 10. Update to Pro 6.x.x is mandatory.
     375
     376### 2024-05-12 10.0.3 ###
     377* Fix: Vimeo domain restriction
     378
     379### 2024-05-12 10.0.2 ###
     380* Fix: Activation error related to script dependencies. (Elementor)
     381
     382### 2024-05-11 10.0.1 ###
     383
     384#### New ####
     385* Elementor Widget.
     386* Support for Kick.
     387* Optional ARVE button on the admin bar for quick access to the ARVE Settings page.
     388* Support for new [DSGVO and Extra Privacy](https://nextgenthemes.com/plugins/arve-privacy/) addon.
     389
     390#### Fixed ####
     391* Pasting iframe embed code in the URL/Embed Code field in the Block Editor.
     392
     393#### Improved ####
     394* Lots code changes to modernize and make the code more robust.
     395* Better way to negate WPs own aspect ratio for embed blocks.
     396* [Further privacy enhancements](https://nextgenthemes.com/privacy-enhanced-and-safer-iframes-in-arve-10-0/).
     397* New look and UX improvement to the shortcode creation dialog in Classic Editor.
     398* Loop and Mute previously were only used for (self hosted) video files. These shortcode attributes now add `loop=1&mute1` to the iframe `src` as well. Note not every provider supports them. To loop YouTube videos the video ID was also need as the `playlist=` parameter. ARVE is doing this automatically now.
     399* Sandbox setting has been replaced with 'Enable Encrypted Media'.
     400
     401### 2024-02-29 9.10.14 ###
     402* Fix: Wrongly displayed message about outdated PHP version.
     403
     404### 2024-02-29 9.10.13.1 ###
     405* Cut development files from the distribution.
     406
     407### 2024-02-29 9.10.13 ###
     408* Improved: Make Admin notice dismiss without jQuery. May fix an extremely rare issue of dismiss failing.   
     409* Tested with latest WP 6.5-nightly
     410* Plugin is no longer being tested with PHP versions below 7.2+, in theory the 9.x versions should work with PHP 5.6+.
     411
     412### 2023-09-16 9.10.12 ###
     413* Tested with latest WP 6.5-nightly
     414* Updated warning that next major version will required php 7.4+.
     415
     416### 2023-05-17 9.10.9 ###
     417* Fix: Styles not loading correctly in latest Gutenberg versions.
     418
     419### 2023-04-12 9.10.3 ###
     420* Fix: Yoast SEO compatibility and other possible issues.
     421
     422### 2023-04-11 9.10.2 ###
     423* Fix: Fatal error with WordPress 5.8.6
     424
     425### 2023-04-11 9.10.1 ###
     426* New: Warning massage that ARVE will require PHP 7.2 soon.
     427* New: Support for extra classes (Advanced section) on the ARVE block.
     428* New: You can align left/right the ARVE block now.
     429* Fix: Styles were not applied inside new Gutenberg versions.
     430* Improved: Videos are no longer playable in the Block editor, instead the block is selected when clicking on them.
     431* Improved: Some minor code changes.
     432
     433### 2023-02-05 9.9.7 ###
     434* Fix: WP Courseware Course Builder meta box was always collapsed. (Could not get the ARVE button to work for the Course Description)
     435
     436### 2023-01-25 9.9.6 ###
     437* Fix: Rumble videos not work correctly on all cases correct oembed data.
     438
     439### 2023-01-11 9.9.4 ###
     440* Fix: Invisible Shortcode creation dialog content.
     441* Fix: Hide the dialog when the WP image upload dialog is opened.
     442
     443### 2023-01-10 9.9.3 ###
     444* Fix: Issue when browser does not support `<dialog>`.
     445
     446### 2022-01-08 9.9.2 ###
     447
     448* Fix: Incompatibility with Accelerated Mobile Pages by removing the jquery-ui dependency and using a native `<dialog>` for the shortcode creator modal. This may also fix layering (z-index) issues with other plugins.
     449
     450### 2022-10-28 9.8.0 ###
     451
     452* New: TikTok support.
     453* Improved: Removed deprecated message because it broke the WP login when debug output was enabled.
     454
     455### 2022-10-14 9.7.17 ###
     456
     457* Fix: Give errors and prevent php 8.0 and 8.1 from having errors when the aspect ratio contains non integer numbers like `0.9:1` only integers are allowed like `9:10`.
     458* Improved: Update EDD updater class.
     459
     460### 2022-09-01 9.7.16 ###
     461
     462* Fix: Divi endless reload issue is hopefully finally fixed. ARVE Pro users please note this is a workaround that causes previews inside the Divi builder not have the correct data. Most noticeable thumbnails and titles. If you provide a fallback thumbnail in ARVE Pro settings it will show that while you using Divi. The plugin works correctly on the frontend. However the "Video (ARVE)" button currently does not work in Divi.
     463
     464### 2022-08-30 9.7.15 ###
     465
     466* Fix: Shortcode Creator dialog with Advanced Custom Fields plugin active.
     467
     468### 2022-08-22 9.7.14 ###
     469
     470* Improved: Simplified and reduced debug info.
     471* Improved: Adjustments for updated ARVE Pro version.
     472
     473### 2022-08-11 9.7.11 ###
     474
     475* Fix: Block not registering.
     476
     477### 2022-08-09 9.7.10 ###
     478
     479##### Improvements for Gutenberg Block ##### #####
     480* Introduces clickable area above the Block in the Editor.
     481* Fixed Thumbnail image overflowing.
     482* Removed maximal width setting when not aligned. This concept does not fit Gutenberg. Width should be controlled by setting the block to wide or full alignment.
     483* Introduces a recommended `block.json`.
     484* Some other minor improvements.
     485
     486### 2022-08-04 9.7.8 ###
     487
     488* New: Add new 'Darken' hover effect option for Pro Addon.
     489* Removed Ustream from providers (not functional bought up by IBM)
     490
     491### 2022-04-16 9.7.7 ###
     492
     493* Improved browser support to display aspect ratio correctly on older browsers.
     494
     495### 2022-02-01 9.7.4 ###
     496
     497* Fix: '[Vue warn]: Cannot find element: #arve-sc-vue' JavaScript error on admin page.
     498
     499### 2022-01-29 9.7.3 ###
     500
     501* Fix: Some internal errors generated for YouTube embeds.
     502
     503[Older Changes](https://github.com/nextgenthemes/advanced-responsive-video-embedder/blob/master/changelog-2021.md)
  • advanced-responsive-video-embedder/tags/10.6.14/vendor/autoload.php

    r3338484 r3338557  
    2323require_once __DIR__ . '/composer/autoload_real.php';
    2424
    25 return ComposerAutoloaderInit5aa486b2e15e5a77b655cb1dccf2d827::getLoader();
     25return ComposerAutoloaderInitfa4ebaf22f08a8b822c80bc4efcf7610::getLoader();
  • advanced-responsive-video-embedder/tags/10.6.14/vendor/autoload_packages.php

    r3338484 r3338557  
    66 */
    77
    8 namespace Automattic\Jetpack\Autoloader\jp5aa486b2e15e5a77b655cb1dccf2d827\al5_0_9;
     8namespace Automattic\Jetpack\Autoloader\jpfa4ebaf22f08a8b822c80bc4efcf7610\al5_0_9;
    99
    1010 // phpcs:ignore
  • advanced-responsive-video-embedder/tags/10.6.14/vendor/composer/autoload_real.php

    r3338484 r3338557  
    33// autoload_real.php @generated by Composer
    44
    5 class ComposerAutoloaderInit5aa486b2e15e5a77b655cb1dccf2d827
     5class ComposerAutoloaderInitfa4ebaf22f08a8b822c80bc4efcf7610
    66{
    77    private static $loader;
     
    2525        require __DIR__ . '/platform_check.php';
    2626
    27         spl_autoload_register(array('ComposerAutoloaderInit5aa486b2e15e5a77b655cb1dccf2d827', 'loadClassLoader'), true, true);
     27        spl_autoload_register(array('ComposerAutoloaderInitfa4ebaf22f08a8b822c80bc4efcf7610', 'loadClassLoader'), true, true);
    2828        self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
    29         spl_autoload_unregister(array('ComposerAutoloaderInit5aa486b2e15e5a77b655cb1dccf2d827', 'loadClassLoader'));
     29        spl_autoload_unregister(array('ComposerAutoloaderInitfa4ebaf22f08a8b822c80bc4efcf7610', 'loadClassLoader'));
    3030
    3131        require __DIR__ . '/autoload_static.php';
    32         call_user_func(\Composer\Autoload\ComposerStaticInit5aa486b2e15e5a77b655cb1dccf2d827::getInitializer($loader));
     32        call_user_func(\Composer\Autoload\ComposerStaticInitfa4ebaf22f08a8b822c80bc4efcf7610::getInitializer($loader));
    3333
    3434        $loader->register(true);
    3535
    36         $filesToLoad = \Composer\Autoload\ComposerStaticInit5aa486b2e15e5a77b655cb1dccf2d827::$files;
     36        $filesToLoad = \Composer\Autoload\ComposerStaticInitfa4ebaf22f08a8b822c80bc4efcf7610::$files;
    3737        $requireFile = \Closure::bind(static function ($fileIdentifier, $file) {
    3838            if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
  • advanced-responsive-video-embedder/tags/10.6.14/vendor/composer/autoload_static.php

    r3338484 r3338557  
    55namespace Composer\Autoload;
    66
    7 class ComposerStaticInit5aa486b2e15e5a77b655cb1dccf2d827
     7class ComposerStaticInitfa4ebaf22f08a8b822c80bc4efcf7610
    88{
    99    public static $files = array (
     
    3737    {
    3838        return \Closure::bind(function () use ($loader) {
    39             $loader->prefixLengthsPsr4 = ComposerStaticInit5aa486b2e15e5a77b655cb1dccf2d827::$prefixLengthsPsr4;
    40             $loader->prefixDirsPsr4 = ComposerStaticInit5aa486b2e15e5a77b655cb1dccf2d827::$prefixDirsPsr4;
    41             $loader->classMap = ComposerStaticInit5aa486b2e15e5a77b655cb1dccf2d827::$classMap;
     39            $loader->prefixLengthsPsr4 = ComposerStaticInitfa4ebaf22f08a8b822c80bc4efcf7610::$prefixLengthsPsr4;
     40            $loader->prefixDirsPsr4 = ComposerStaticInitfa4ebaf22f08a8b822c80bc4efcf7610::$prefixDirsPsr4;
     41            $loader->classMap = ComposerStaticInitfa4ebaf22f08a8b822c80bc4efcf7610::$classMap;
    4242
    4343        }, null, ClassLoader::class);
  • advanced-responsive-video-embedder/tags/10.6.14/vendor/composer/installed.json

    r3338484 r3338557  
    7373            "version": "dev-master",
    7474            "version_normalized": "dev-master",
    75             "source": {
    76                 "type": "git",
    77                 "url": "https://github.com/nextgenthemes/wp-settings.git",
     75            "dist": {
     76                "type": "path",
     77                "url": "../../../../../../dev/composer-packages/wp-settings",
    7878                "reference": "4e26cd875e2ba18f6f1bb523ef51d01ec7f7869d"
    79             },
    80             "dist": {
    81                 "type": "zip",
    82                 "url": "https://api.github.com/repos/nextgenthemes/wp-settings/zipball/4e26cd875e2ba18f6f1bb523ef51d01ec7f7869d",
    83                 "reference": "4e26cd875e2ba18f6f1bb523ef51d01ec7f7869d",
    84                 "shasum": ""
    8579            },
    8680            "require": {
    8781                "php": ">=7.4"
    8882            },
    89             "time": "2025-08-03T12:18:07+00:00",
    90             "default-branch": true,
    9183            "type": "library",
    9284            "installation-source": "dist",
     
    9688                ]
    9789            },
    98             "notification-url": "https://packagist.org/downloads/",
    9990            "license": [
    10091                "GPL-3.0"
     
    10596                }
    10697            ],
    107             "support": {
    108                 "source": "https://github.com/nextgenthemes/wp-settings/tree/master"
     98            "transport-options": {
     99                "symlink": false,
     100                "relative": true
    109101            },
    110102            "install-path": "../nextgenthemes/wp-settings"
  • advanced-responsive-video-embedder/tags/10.6.14/vendor/composer/installed.php

    r3338484 r3338557  
    11<?php return array(
    22    'root' => array(
    3         'name' => 'nextgenthemes/tweakmaster',
     3        'name' => 'nextgenthemes/advanced-responsive-video-embedder',
    44        'pretty_version' => 'dev-master',
    55        'version' => 'dev-master',
    6         'reference' => '9374cd33520cc47808fb8b87df216de610813745',
     6        'reference' => 'c7029e0034833051a95269f6f04697076b1969f4',
    77        'type' => 'wordpress-plugin',
    88        'install_path' => __DIR__ . '/../../',
     
    2020            'dev_requirement' => true,
    2121        ),
    22         'nextgenthemes/tweakmaster' => array(
     22        'nextgenthemes/advanced-responsive-video-embedder' => array(
    2323            'pretty_version' => 'dev-master',
    2424            'version' => 'dev-master',
    25             'reference' => '9374cd33520cc47808fb8b87df216de610813745',
     25            'reference' => 'c7029e0034833051a95269f6f04697076b1969f4',
    2626            'type' => 'wordpress-plugin',
    2727            'install_path' => __DIR__ . '/../../',
     
    3535            'type' => 'library',
    3636            'install_path' => __DIR__ . '/../nextgenthemes/wp-settings',
    37             'aliases' => array(
    38                 0 => '9999999-dev',
    39             ),
     37            'aliases' => array(),
    4038            'dev_requirement' => true,
    4139        ),
  • advanced-responsive-video-embedder/tags/10.6.14/vendor/jetpack-autoloader/class-autoloader-handler.php

    r3338484 r3338557  
    66 */
    77
    8 namespace Automattic\Jetpack\Autoloader\jp5aa486b2e15e5a77b655cb1dccf2d827\al5_0_9;
     8namespace Automattic\Jetpack\Autoloader\jpfa4ebaf22f08a8b822c80bc4efcf7610\al5_0_9;
    99
    1010 // phpcs:ignore
  • advanced-responsive-video-embedder/tags/10.6.14/vendor/jetpack-autoloader/class-autoloader-locator.php

    r3338484 r3338557  
    66 */
    77
    8 namespace Automattic\Jetpack\Autoloader\jp5aa486b2e15e5a77b655cb1dccf2d827\al5_0_9;
     8namespace Automattic\Jetpack\Autoloader\jpfa4ebaf22f08a8b822c80bc4efcf7610\al5_0_9;
    99
    1010 // phpcs:ignore
  • advanced-responsive-video-embedder/tags/10.6.14/vendor/jetpack-autoloader/class-autoloader.php

    r3338484 r3338557  
    66 */
    77
    8 namespace Automattic\Jetpack\Autoloader\jp5aa486b2e15e5a77b655cb1dccf2d827\al5_0_9;
     8namespace Automattic\Jetpack\Autoloader\jpfa4ebaf22f08a8b822c80bc4efcf7610\al5_0_9;
    99
    1010 // phpcs:ignore
  • advanced-responsive-video-embedder/tags/10.6.14/vendor/jetpack-autoloader/class-container.php

    r3338484 r3338557  
    66 */
    77
    8 namespace Automattic\Jetpack\Autoloader\jp5aa486b2e15e5a77b655cb1dccf2d827\al5_0_9;
     8namespace Automattic\Jetpack\Autoloader\jpfa4ebaf22f08a8b822c80bc4efcf7610\al5_0_9;
    99
    1010 // phpcs:ignore
  • advanced-responsive-video-embedder/tags/10.6.14/vendor/jetpack-autoloader/class-hook-manager.php

    r3338484 r3338557  
    66 */
    77
    8 namespace Automattic\Jetpack\Autoloader\jp5aa486b2e15e5a77b655cb1dccf2d827\al5_0_9;
     8namespace Automattic\Jetpack\Autoloader\jpfa4ebaf22f08a8b822c80bc4efcf7610\al5_0_9;
    99
    1010 // phpcs:ignore
  • advanced-responsive-video-embedder/tags/10.6.14/vendor/jetpack-autoloader/class-latest-autoloader-guard.php

    r3338484 r3338557  
    66 */
    77
    8 namespace Automattic\Jetpack\Autoloader\jp5aa486b2e15e5a77b655cb1dccf2d827\al5_0_9;
     8namespace Automattic\Jetpack\Autoloader\jpfa4ebaf22f08a8b822c80bc4efcf7610\al5_0_9;
    99
    1010 // phpcs:ignore
  • advanced-responsive-video-embedder/tags/10.6.14/vendor/jetpack-autoloader/class-manifest-reader.php

    r3338484 r3338557  
    66 */
    77
    8 namespace Automattic\Jetpack\Autoloader\jp5aa486b2e15e5a77b655cb1dccf2d827\al5_0_9;
     8namespace Automattic\Jetpack\Autoloader\jpfa4ebaf22f08a8b822c80bc4efcf7610\al5_0_9;
    99
    1010 // phpcs:ignore
  • advanced-responsive-video-embedder/tags/10.6.14/vendor/jetpack-autoloader/class-path-processor.php

    r3338484 r3338557  
    66 */
    77
    8 namespace Automattic\Jetpack\Autoloader\jp5aa486b2e15e5a77b655cb1dccf2d827\al5_0_9;
     8namespace Automattic\Jetpack\Autoloader\jpfa4ebaf22f08a8b822c80bc4efcf7610\al5_0_9;
    99
    1010 // phpcs:ignore
  • advanced-responsive-video-embedder/tags/10.6.14/vendor/jetpack-autoloader/class-php-autoloader.php

    r3338484 r3338557  
    66 */
    77
    8 namespace Automattic\Jetpack\Autoloader\jp5aa486b2e15e5a77b655cb1dccf2d827\al5_0_9;
     8namespace Automattic\Jetpack\Autoloader\jpfa4ebaf22f08a8b822c80bc4efcf7610\al5_0_9;
    99
    1010 // phpcs:ignore
  • advanced-responsive-video-embedder/tags/10.6.14/vendor/jetpack-autoloader/class-plugin-locator.php

    r3338484 r3338557  
    66 */
    77
    8 namespace Automattic\Jetpack\Autoloader\jp5aa486b2e15e5a77b655cb1dccf2d827\al5_0_9;
     8namespace Automattic\Jetpack\Autoloader\jpfa4ebaf22f08a8b822c80bc4efcf7610\al5_0_9;
    99
    1010 // phpcs:ignore
  • advanced-responsive-video-embedder/tags/10.6.14/vendor/jetpack-autoloader/class-plugins-handler.php

    r3338484 r3338557  
    66 */
    77
    8 namespace Automattic\Jetpack\Autoloader\jp5aa486b2e15e5a77b655cb1dccf2d827\al5_0_9;
     8namespace Automattic\Jetpack\Autoloader\jpfa4ebaf22f08a8b822c80bc4efcf7610\al5_0_9;
    99
    1010 // phpcs:ignore
  • advanced-responsive-video-embedder/tags/10.6.14/vendor/jetpack-autoloader/class-shutdown-handler.php

    r3338484 r3338557  
    66 */
    77
    8 namespace Automattic\Jetpack\Autoloader\jp5aa486b2e15e5a77b655cb1dccf2d827\al5_0_9;
     8namespace Automattic\Jetpack\Autoloader\jpfa4ebaf22f08a8b822c80bc4efcf7610\al5_0_9;
    99
    1010 // phpcs:ignore
  • advanced-responsive-video-embedder/tags/10.6.14/vendor/jetpack-autoloader/class-version-loader.php

    r3338484 r3338557  
    66 */
    77
    8 namespace Automattic\Jetpack\Autoloader\jp5aa486b2e15e5a77b655cb1dccf2d827\al5_0_9;
     8namespace Automattic\Jetpack\Autoloader\jpfa4ebaf22f08a8b822c80bc4efcf7610\al5_0_9;
    99
    1010 // phpcs:ignore
  • advanced-responsive-video-embedder/tags/10.6.14/vendor/jetpack-autoloader/class-version-selector.php

    r3338484 r3338557  
    66 */
    77
    8 namespace Automattic\Jetpack\Autoloader\jp5aa486b2e15e5a77b655cb1dccf2d827\al5_0_9;
     8namespace Automattic\Jetpack\Autoloader\jpfa4ebaf22f08a8b822c80bc4efcf7610\al5_0_9;
    99
    1010 // phpcs:ignore
  • advanced-responsive-video-embedder/trunk/composer.json

    r3338484 r3338557  
    11{
    2     "name": "nextgenthemes/tweakmaster",
     2    "name": "nextgenthemes/advanced-responsive-video-embedder",
     3    "description": "ARVE Advanced Responsive Video Embedder",
    34    "type": "wordpress-plugin",
    45    "license": "GPL-3.0",
    5     "description": "TweakMaster - A collection or performance, privacy, security and other tweaks..",
    66    "authors": [
    77        {
    8             "name": "Nicolas Jonas"
     8            "name": "Nicolas Jonas",
     9            "homepage": "https://nextgenthemes.com",
     10            "role": "Developer"
    911        }
    1012    ],
     
    1315    },
    1416    "require-dev": {
    15         "automattic/jetpack-autoloader": "^v5.0.3",
    16         "nextgenthemes/wp-settings": "@dev"
     17        "nextgenthemes/wp-settings": "@dev",
     18        "automattic/jetpack-autoloader": "^v5.0.2"
    1719    },
    1820    "config": {
     
    2527        }
    2628    },
     29    "repositories": {
     30        "nextgenthemes/wp-settings": {
     31            "type": "path",
     32            "url": "../../../../../../dev/composer-packages/wp-settings",
     33            "options": {
     34                "symlink": false
     35            }
     36        }
     37    },
    2738    "scripts": {
    2839        "build": [
     40            "./bin/block-json",
    2941            "./bin/build-readme",
    30             "cp ../advanced-responsive-video-embedder/bin/install-wp-tests.sh ./bin/",
    31             "cp ../advanced-responsive-video-embedder/tests/phpunit-debug-helpers.php ./tests/",
    32             "cp ../advanced-responsive-video-embedder/.gitignore ./",
    33             "@composer update"
     42            "npm run build:arve",
     43            "npm run build:common",
     44            "@composer update",
     45            "@composer update --working-dir=tests"
     46        ],
     47        "pre-update-cmd": [
     48            "./bin/sync-wp-settings"
     49        ],
     50        "tests": [
     51            "cd ${HOME}/websites && NGT_PHPUNIT_LOAD_PLUGINS=\"advanced-responsive-video-embedder\" phpunit --testsuite advanced-responsive-video-embedder"
    3452        ]
    3553    }
  • advanced-responsive-video-embedder/trunk/composer.lock

    r3338484 r3338557  
    55        "This file is @generated automatically"
    66    ],
    7     "content-hash": "dc4a6d1b65d3b499ca79a68a51744651",
     7    "content-hash": "91159bc166283f1570929cfd93e02a88",
    88    "packages": [],
    99    "packages-dev": [
     
    7676            "name": "nextgenthemes/wp-settings",
    7777            "version": "dev-master",
    78             "source": {
    79                 "type": "git",
    80                 "url": "https://github.com/nextgenthemes/wp-settings.git",
     78            "dist": {
     79                "type": "path",
     80                "url": "../../../../../../dev/composer-packages/wp-settings",
    8181                "reference": "4e26cd875e2ba18f6f1bb523ef51d01ec7f7869d"
    82             },
    83             "dist": {
    84                 "type": "zip",
    85                 "url": "https://api.github.com/repos/nextgenthemes/wp-settings/zipball/4e26cd875e2ba18f6f1bb523ef51d01ec7f7869d",
    86                 "reference": "4e26cd875e2ba18f6f1bb523ef51d01ec7f7869d",
    87                 "shasum": ""
    8882            },
    8983            "require": {
    9084                "php": ">=7.4"
    9185            },
    92             "default-branch": true,
    9386            "type": "library",
    9487            "autoload": {
     
    9790                ]
    9891            },
    99             "notification-url": "https://packagist.org/downloads/",
    10092            "license": [
    10193                "GPL-3.0"
     
    10698                }
    10799            ],
    108             "support": {
    109                 "source": "https://github.com/nextgenthemes/wp-settings/tree/master"
    110             },
    111             "time": "2025-08-03T12:18:07+00:00"
     100            "transport-options": {
     101                "symlink": false,
     102                "relative": true
     103            }
    112104        }
    113105    ],
  • advanced-responsive-video-embedder/trunk/license.txt

    r3338484 r3338557  
    1 Nicolas Jonas
    2 https://nextgenthemes.com
    3 
    41                    GNU GENERAL PUBLIC LICENSE
    52                       Version 3, 29 June 2007
    63
    7  Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
     4 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
    85 Everyone is permitted to copy and distribute verbatim copies
    96 of this license document, but changing it is not allowed.
     
    649646
    650647    You should have received a copy of the GNU General Public License
    651     along with this program.  If not, see <https://www.gnu.org/licenses/>.
     648    along with this program.  If not, see <http://www.gnu.org/licenses/>.
    652649
    653650Also add information on how to contact you by electronic and paper mail.
     
    668665if any, to sign a "copyright disclaimer" for the program, if necessary.
    669666For more information on this, and how to apply and follow the GNU GPL, see
    670 <https://www.gnu.org/licenses/>.
     667<http://www.gnu.org/licenses/>.
    671668
    672669  The GNU General Public License does not permit incorporating your program
     
    675672the library.  If this is what you want to do, use the GNU Lesser General
    676673Public License instead of this License.  But first, please read
    677 <https://www.gnu.org/licenses/why-not-lgpl.html>.
     674<http://www.gnu.org/philosophy/why-not-lgpl.html>.
  • advanced-responsive-video-embedder/trunk/php/fn-settings.php

    r3338484 r3338557  
    33declare(strict_types = 1);
    44
    5 namespace Nextgenthemes\TweakMaster;
     5namespace Nextgenthemes\ARVE;
    66
    77use Nextgenthemes\WP\Settings;
    88use Nextgenthemes\WP\SettingsData;
     9use function Nextgenthemes\WP\nextgenthemes_settings_instance;
    910
    1011function settings_instance(): Settings {
     
    1718            array(
    1819                'namespace'           => __NAMESPACE__,
     20                'settings'            => settings( 'settings_page' ),
     21                'tabs'                => settings_tabs(),
     22                'menu_title'          => __( 'ARVE', 'advanced-responsive-video-embedder' ),
     23                'settings_page_title' => __( 'ARVE Settings', 'advanced-responsive-video-embedder' ),
     24                'plugin_file'         => PLUGIN_FILE,
    1925                'base_url'            => plugins_url( '', PLUGIN_FILE ),
    2026                'base_path'           => PLUGIN_DIR,
    21                 'plugin_file'         => PLUGIN_FILE,
    22                 'settings'            => settings_data(),
    23                 'menu_title'          => esc_html__( 'TweakMaster', 'tweakmaster' ),
    24                 'settings_page_title' => esc_html__( 'TweakMaster', 'tweakmaster' ),
    25                 'tabs'                => array(
    26                     'general'     => array( 'title' => __( 'General', 'tweakmaster' ) ),
    27                     'privacy'     => array( 'title' => __( 'Privacy', 'tweakmaster' ) ),
    28                     'media'       => array( 'title' => __( 'Media', 'tweakmaster' ) ),
    29                     'revisions'   => array( 'title' => __( 'Revisions', 'tweakmaster' ) ),
    30                     'security'    => array( 'title' => __( 'Security', 'tweakmaster' ) ),
    31                     'performance' => array( 'title' => __( 'Performance', 'tweakmaster' ) ),
    32                     'plugins'     => array( 'title' => __( 'Plugins', 'tweakmaster' ) ),
    33                     'tools'       => array( 'title' => __( 'Tools', 'tweakmaster' ) ),
    34                 ),
    3527            )
    3628        );
     
    4840}
    4941
    50 function settings_data(): SettingsData {
    51     $settings = array_merge(
    52         general_settings(),
    53         privacy_settings(),
    54         media_settings(),
    55         revision_settings(),
    56         security_settings(),
    57         performance_settings(),
    58         plugins_settings(),
    59         tools_settings()
    60     );
    61 
    62     return new SettingsData( $settings );
    63 }
    64 
    65 function general_settings(): array {
     42function settings_tabs(): array {
     43
    6644    return array(
    67         'remove-asset-ver-parameter' => array(
    68             'tab'         => 'general',
    69             'label'       => __( 'Remove version query strings', 'tweakmaster' ),
    70             'description' => __( 'Removes <code>?ver=1.2.3</code> from all styles and scripts.', 'tweakmaster' ),
    71             'type'        => 'boolean',
    72             'default'     => false,
    73         ),
    74         'disable-feeds' => array(
    75             'tab'         => 'general',
    76             'label'       => __( 'Disable feeds', 'tweakmaster' ),
    77             'type'        => 'boolean',
    78             'default'     => false,
    79         ),
    80         'disable-emojis' => array(
    81             'tab'         => 'general',
    82             'label'       => __( 'Disable emojis', 'tweakmaster' ),
    83             'type'        => 'boolean',
    84             'default'     => false,
    85         ),
    86         'search-single-result-redirect' => array(
    87             'tab'         => 'general',
    88             'label'       => __( 'Search single result redirect', 'tweakmaster' ),
    89             'type'        => 'boolean',
    90             'default'     => false,
    91         ),
    92         'disallow-file-edit' => array(
    93             'tab'         => 'general',
    94             'label'       => __( 'Disallow File Edits', 'tweakmaster' ),
    95             'description' => __( 'Disables the ability to edit files in the file manager. Sets <code>DISALLOW_FILE_EDIT</code> constant to true. Does only work if the constant is already defined, usually in wp-config.php', 'tweakmaster' ),
    96             'type'        => 'boolean',
    97             'default'     => false,
    98         ),
    99         'admin-bar-greeting' => array(
    100             'tab'         => 'general',
    101             'label'       => __( 'Admin bar greeting', 'tweakmaster' ),
    102             'description' => __( 'Replace "Howdy, {name}" with a custom message. Use <code>{name}</code> for the user\'s display name. For example <code>Hi, {name}!</code>. Leave empty for no greeting. Use <code>default</code> for the default greeting, preventing the tweak from running.', 'tweakmaster' ),
    103             'type'        => 'string',
    104             'default'     => 'default',
    105         ),
    106         'enable-fonts-to-uploads' => array(
    107             'tab'         => 'general',
    108             'label'       => __( 'Enable fonts to uploads', 'tweakmaster' ),
    109             'description' => __( 'Move (Google) Fonts enabled in the Block Editor from wp-content/fonts to wp-content/uploads', 'tweakmaster' ),
    110             'type'        => 'boolean',
    111             'default'     => false,
    112         ),
    113         'disable-auto-trash-emptying' => array(
    114             'tab'         => 'general',
    115             'label'       => __( 'Disable auto trash emptying', 'tweakmaster' ),
    116             'type'        => 'boolean',
    117             'default'     => false,
    118         ),
    119         'trash-keep-days' => array(
    120             'tab'         => 'general',
    121             'label'       => __( 'Set trash keep days', 'tweakmaster' ),
    122             'description' => __( 'Set the number of days to keep posts in the trash. Default is 30 days.', 'tweakmaster' ),
    123             'type'        => 'integer',
    124             'default'     => 30,
    125         ),
    126         'scroll-progress-bar' => array(
    127             'tab'         => 'general',
    128             'label'       => __( 'Scroll progress bar', 'tweakmaster' ),
    129             'type'        => 'boolean',
    130             'default'     => false,
    131         ),
    132         'scroll-progress-bar-progress-bg-color' => array(
    133             'tab'         => 'general',
    134             'label'       => __( 'Scroll progress color', 'tweakmaster' ),
    135             'type'        => 'string',
    136             'description' => sprintf(
    137                 'And valid css will work. You can use <a href="%s" target="_blank">this color picker!</a>.',
    138                 'https://oklch.com'
    139             ),
    140             'default'     => 'var(--wp--preset--color--primary, oklch(45.44% 0.1924 270 / 78.17%))',
    141         ),
    142         'scroll-progress-bar-bg-color' => array(
    143             'tab'         => 'general',
    144             'label'       => __( 'Scroll progress bar background color', 'tweakmaster' ),
    145             'type'        => 'string',
    146             'default'     => 'transparent',
    147         ),
    148         'scroll-progress-bar-progress-height' => array(
    149             'tab'         => 'general',
    150             'label'       => __( 'Scroll progress height', 'tweakmaster' ),
    151             'type'        => 'string',
    152             'default'     => '0.4rem',
    153         ),
    154         'disable-ssl-verify-self' => array(
    155             'tab'         => 'general',
    156             'label'       => __( 'Disable self SSL verify', 'tweakmaster' ),
    157             'type'        => 'boolean',
    158             'default'     => false,
    159         ),
    160         // 'disable-auto-updates' => array(
    161         //  'tab'         => 'general',
    162         //  'label'       => __( 'Disable Auto Updates', 'tweakmaster' ),
    163         //  'type'        => 'boolean',
    164         //  'default'     => false,
    165         // ),
    166         'disable-comments' => array(
    167             'tab'         => 'general',
    168             'label'       => __( 'Disable Comments', 'tweakmaster' ),
    169             'type'        => 'boolean',
    170             'default'     => false,
    171         ),
    172         'disable-email-login' => array(
    173             'tab'         => 'general',
    174             'label'       => __( 'Disable Email Login', 'tweakmaster' ),
    175             'type'        => 'boolean',
    176             'default'     => false,
    177         ),
    178         'disable-rest-api' => array(
    179             'tab'         => 'general',
    180             'label'       => __( 'Disable REST API', 'tweakmaster' ),
    181             'type'        => 'boolean',
    182             'default'     => false,
    183         ),
    184         'disable-success-update-emails' => array(
    185             'tab'         => 'general',
    186             'label'       => __( 'Disable Success Update Emails', 'tweakmaster' ),
    187             'type'        => 'boolean',
    188             'default'     => false,
    189         ),
    190         'remove-admin-bar-logo' => array(
    191             'tab'         => 'general',
    192             'label'       => __( 'Remove Admin Bar WordPress Logo', 'tweakmaster' ),
    193             'description' => __( 'Requires a hard refresh of the page to take effect.', 'tweakmaster' ),
    194             'type'        => 'boolean',
    195             'default'     => false,
    196         ),
    197         'remove-asset-attr' => array(
    198             'tab'         => 'general',
    199             'label'       => __( 'Remove Asset Attributes', 'tweakmaster' ),
    200             'type'        => 'boolean',
    201             'default'     => false,
    202         ),
    203         'disable-non-production-emails' => array(
    204             'tab'         => 'general',
    205             'label'       => __( 'Disable Non Production Emails', 'tweakmaster' ),
    206             'description' => __( 'If WP_ENV (Trellis) or wp_get_environment_type is not production, emails sending is mocked.', 'tweakmaster' ),
    207             'type'        => 'boolean',
    208             'default'     => false,
    209         ),
    210         'remove-rest-api-links' => array(
    211             'tab'         => 'general',
    212             'label'       => __( 'Remove REST API links', 'tweakmaster' ),
    213             'type'        => 'boolean',
    214             'default'     => false,
    215         ),
     45        'main' => [
     46            'title' => __( 'Main', 'advanced-responsive-video-embedder' ),
     47        ],
     48        'pro' => [
     49            'title'        => __( 'Pro', 'advanced-responsive-video-embedder' ),
     50            'premium_link' => sprintf(
     51                '<a href="%s">%s</a>',
     52                'https://nextgenthemes.com/plugins/arve-pro/',
     53                __( 'Pro Addon', 'advanced-responsive-video-embedder' )
     54            ),
     55        ],
     56        'privacy' => [
     57            'title'        => __( 'Extra Privacy', 'advanced-responsive-video-embedder' ),
     58            'premium_link' => sprintf(
     59                '<a href="%s">%s</a>',
     60                'https://nextgenthemes.com/plugins/arve-privacy/',
     61                __( 'Privacy Addon', 'advanced-responsive-video-embedder' )
     62            ),
     63        ],
     64        'sticky_videos' => [
     65            'title'        => __( 'Sticky Videos', 'advanced-responsive-video-embedder' ),
     66            'premium_link' => sprintf(
     67                '<a href="%s">%s</a>',
     68                'https://nextgenthemes.com/plugins/arve-sticky-videos/',
     69                __( 'Sticky Videos Addon', 'advanced-responsive-video-embedder' )
     70            ),
     71        ],
     72        'random_video' => [
     73            'title'        => __( 'Random Video', 'advanced-responsive-video-embedder' ),
     74            'premium_link' => sprintf(
     75                '<a href="%s">%s</a>',
     76                'https://nextgenthemes.com/plugins/arve-random-video/',
     77                __( 'Random Videos Addon', 'advanced-responsive-video-embedder' )
     78            ),
     79            'reset_button' => false,
     80        ],
     81        'urlparams' => [
     82            'title' => __( 'URL Parameters', 'advanced-responsive-video-embedder' ),
     83        ],
     84        'html5' => [
     85            'title' => __( 'Video Files', 'advanced-responsive-video-embedder' ),
     86        ],
     87        'debug' => [
     88            'title' => __( 'Debug', 'advanced-responsive-video-embedder' ),
     89        ],
    21690    );
    21791}
    21892
    219 function security_settings(): array {
    220 
    221     ob_start();
    222     wp_generator();
    223     $generator_html = ob_get_clean();
    224 
    225     $remove_wp_version_description = wp_kses(
    226         sprintf(
    227             /* translators: %s: example of a "generator" meta tag */
    228             __( 'Remove <code>%s</code> from html head', 'tweakmaster' ),
    229             esc_html( $generator_html )
    230         ),
    231         array(
    232             'code' => array(),
    233         )
    234     );
    235 
    236     return array(
    237         'disable-xmlrpc' => array(
    238             'tab'         => 'security',
    239             'label'       => __( 'Disable XML-RPC', 'tweakmaster' ),
    240             'type'        => 'boolean',
    241             'default'     => false,
    242         ),
    243         'disable-xmlrpc-allow-jetpack-ips' => array(
    244             'tab'         => 'security',
    245             'label'       => __( 'Disable XML-RPC - allow Jetpack IPs', 'tweakmaster' ),
    246             'description' => __( 'Allow XML-RPC only from Jetpack IPs', 'tweakmaster' ),
    247             'type'        => 'boolean',
    248             'default'     => false,
    249         ),
    250         'remove-wp-version' => array(
    251             'tab'         => 'security',
    252             'default'     => false,
    253             'option'      => true,
    254             'label'       => __( 'Remove WP version', 'tweakmaster' ),
    255             'type'        => 'boolean',
    256             // translators: %s is example html
    257             'description' => $remove_wp_version_description,
    258         ),
     93function init_nextgenthemes_settings(): void {
     94
     95    nextgenthemes_settings_instance(
     96        plugins_url( '', PLUGIN_FILE ),
     97        PLUGIN_DIR
    25998    );
    26099}
    261100
    262 function performance_settings(): array {
    263     return array(
    264         'dequeue-jquery-migrate' => array(
    265             'tab'         => 'performance',
    266             'label'       => __( 'Dequeue jQuery Migrate', 'tweakmaster' ),
    267             'description' => __( 'Dequeue jQuery Migrate from the jQuery script dependencies on the frontend. This is used to help devs debug from old versions of jQuery. You really do not need this on a production site.', 'tweakmaster' ),
    268             'type'        => 'boolean',
    269             'default'     => false,
    270         ),
    271         'enable-script-optimizer' => array(
    272             'tab'         => 'performance',
    273             'label'       => __( 'Script Optimizer', 'tweakmaster' ),
    274             'description' => __( 'Optimize script loading by moving them into the <code>head</code> and adding <code>defer</code> attribute. This may break your site. Use at your own risk!', 'tweakmaster' ),
    275             'type'        => 'boolean',
    276             'default'     => false,
    277         ),
    278         'enable-relative-urls' => array(
    279             'tab'         => 'performance',
    280             'label'       => __( 'Enable relative URLs', 'tweakmaster' ),
    281             'description' => __( 'Enable relative URLs on the frontend. This may break your site. Use at your own risk!', 'tweakmaster' ),
    282             'type'        => 'boolean',
    283             'default'     => false,
    284         ),
    285     );
    286 }
    287 
    288 function media_settings(): array {
    289     return array(
    290         'convert-jpeg-to-avif' => array(
    291             'tab'         => 'media',
    292             'default'     => false,
    293             'label'       => __( 'Convert jpeg to avif', 'tweakmaster' ),
    294             'description' => __( 'Convert uploaded jpeg to avif', 'tweakmaster' ),
    295             'type'        => 'boolean',
    296         ),
    297         'enable-clean-upload-filenames' => array(
    298             'tab'         => 'media',
    299             'default'     => false,
    300             'label'       => __( 'Clean upload filenames', 'tweakmaster' ),
    301             'description' => __( 'Sanitize media filenames to remove non-latin special characters and accents', 'tweakmaster' ),
    302             'type'        => 'boolean',
    303         ),
    304         'avif-compression' => array(
    305             'tab'         => 'media',
    306             'default'     => 82,
    307             'label'       => __( 'Avif compression', 'tweakmaster' ),
    308             'type'        => 'integer',
    309             'description' => __( 'Default is 82', 'tweakmaster' ),
    310         ),
    311         'jpeg-compression' => array(
    312             'tab'         => 'media',
    313             'default'     => 82,
    314             'label'       => __( 'Jpeg compression', 'tweakmaster' ),
    315             'description' => __( 'Default is 82', 'tweakmaster' ),
    316             'type'        => 'integer',
    317         ),
    318         'webp-compression' => array(
    319             'tab'         => 'media',
    320             'default'     => 86,
    321             'label'       => __( 'Webp compression', 'tweakmaster' ),
    322             'description' => __( 'Default is 86', 'tweakmaster' ),
    323             'type'        => 'integer',
    324         ),
    325     );
    326 }
    327 
    328 function privacy_settings(): array {
    329 
    330     // https://github.com/WordPress/WordPress/blob/c10dbc8434d14371366e413e510cb0d54b4f367b/wp-includes/class-wp-http.php#L206
    331     $default_user_agent     = 'WordPress/' . get_bloginfo( 'version' ) . '; ' . get_bloginfo( 'url' );
    332     $chrome_user_agent      = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36';
    333     $user_agent_description = wp_kses(
    334         sprintf(
    335             // translators: %1$s: Default user agent. %2$s: Chrome user agent.
    336             __( 'WP really hates privacy and sends this <code>%1$s</code> to every site it makes calls to. You can empty the field, pretend to be Chrome <code>%2$s</code> or something else. <code>default</code> will change nothing.', 'tweakmaster' ),
    337             esc_html( $default_user_agent ),
    338             esc_html( $chrome_user_agent )
    339         ),
    340         array(
    341             'code' => array(),
    342         )
    343     );
    344 
    345     return array(
    346         'user-agent' => array(
    347             'tab'         => 'privacy',
    348             'default'     => 'default',
    349             'option'      => true,
    350             'label'       => __( 'Set user agent', 'tweakmaster' ),
    351             'type'        => 'string',
    352             'description' => $user_agent_description,
    353         ),
    354 
    355         'remove-exif' => array(
    356             'tab'         => 'privacy',
    357             'default'     => false,
    358             'option'      => true,
    359             'label'       => __( 'Remove EXIF', 'tweakmaster' ),
    360             'description' => __( 'Remove EXIF data from uploaded images.', 'tweakmaster' ),
    361             'type'        => 'boolean',
    362         ),
    363     );
    364 }
    365 
    366 function plugins_settings(): array {
    367 
    368     return array(
    369         'disable-cf7-css' => array(
    370             'tab'         => 'plugins',
    371             'default'     => false,
    372             'option'      => true,
    373             'label'       => __( 'Disable Contact Form 7 CSS', 'tweakmaster' ),
    374             'description' => __( 'Sets <code>wpcf7_load_css</code> filter to <code>false</code>', 'tweakmaster' ),
    375             'type'        => 'boolean',
    376         ),
    377         'disable-cf7-autop' => array(
    378             'tab'         => 'plugins',
    379             'default'     => false,
    380             'option'      => true,
    381             'label'       => __( 'Disable Contact Form 7 Autop', 'tweakmaster' ),
    382             'description' => __( 'Sets <code>wpcf7_autop_or_not</code> filter to <code>false</code>', 'tweakmaster' ),
    383             'type'        => 'boolean',
    384         ),
    385         'enable-jetpack-offline-mode' => array(
    386             'tab'         => 'plugins',
    387             'default'     => false,
    388             'option'      => true,
    389             'label'       => __( 'Enable Jetpack offline mode', 'tweakmaster' ),
    390             'type'        => 'boolean',
    391         ),
    392     );
    393 }
    394 
    395 function revision_settings(): array {
    396 
    397     $settings = array();
    398 
    399     foreach ( get_revision_post_types() as $type => $name ) {
    400         $settings[ 'revisions-limit-' . $type ] = array(
    401             'tab'         => 'revisions',
    402             'default'     => -1,
    403             'option'      => true,
    404             // translators: %s is post type name
    405             'label'       => sprintf( __( 'Revisions for %s', 'tweakmaster' ), $name ),
    406             'type'        => 'integer',
    407         );
     101function settings( string $context = 'settings_page' ): SettingsData {
     102
     103    $settings = settings_data();
     104
     105    if ( in_array( $context, array( 'gutenberg_block', 'shortcode' ), true ) ) {
     106
     107        foreach ( $settings->get_all() as $k => $s ) {
     108            if ( ! $s->shortcode ) {
     109                $settings->remove( $k );
     110                continue;
     111            }
     112
     113            if ( 'boolean' === $s->type && $s->option ) {
     114                $s->bool_option_to_select();
     115            }
     116        }
    408117    }
    409118
    410     $settings['revisions-limit-all'] = array(
    411         'tab'         => 'revisions',
    412         'default'     => -1,
    413         'option'      => true,
    414         'label'       => __( 'Limit ALL revisions', 'tweakmaster' ),
    415         'description' => __( 'Limit revisions for all post types. This will override the limit for each post type from above!', 'tweakmaster' ),
    416         'type'        => 'integer',
    417     );
     119    switch ( $context ) {
     120        case 'gutenberg_block':
     121            $settings->remove( 'maxwidth' );
     122            break;
     123        case 'settings_page':
     124            foreach ( $settings->get_all() as $k => $s ) {
     125                if ( ! $s->option ) {
     126                    $settings->remove( $k );
     127                }
     128            }
     129            break;
     130    }
    418131
    419132    return $settings;
    420133}
    421134
    422 function tools_settings(): array {
    423 
    424     return array(
    425         'enable-maintenance-mode' => array(
    426             'tab'         => 'tools',
    427             'default'     => false,
    428             'label'       => __( 'Enable maintenance mode', 'tweakmaster' ),
    429             'type'        => 'boolean',
    430         ),
    431         'enable-duplicate-post' => array(
    432             'tab'         => 'tools',
    433             'default'     => false,
    434             'label'       => __( 'Enable duplicate post', 'tweakmaster' ),
    435             'type'        => 'boolean',
    436         ),
    437     );
     135function get_arg_type( string $arg_name ): ?string {
     136
     137    $setting = settings_data()->get( $arg_name );
     138
     139    if ( ! $setting ) {
     140        return null;
     141    }
     142
     143    switch ( $setting->type ) {
     144        case 'string':
     145            return 'string';
     146        case 'boolean':
     147            return 'bool';
     148        case 'integer':
     149            return 'int';
     150        default:
     151            return null;
     152    }
    438153}
    439154
    440 function option_is_set( string $key ): bool {
    441 
    442     $default_option = default_options()[ $key ];
    443 
    444     return options()[ $key ] !== $default_option;
    445 }
    446 
    447 function any_option_is_set( array $options_keys ): bool {
    448 
    449     foreach ( $options_keys as $key ) {
    450         if ( option_is_set( $key ) ) {
    451             return true;
     155function settings_data(): SettingsData {
     156
     157    $properties = get_host_properties();
     158
     159    foreach ( $properties as $provider => $values ) {
     160
     161        if ( ! empty( $values['auto_thumbnail'] ) ) {
     162            $auto_thumbs[] = $values['name'];
     163        }
     164
     165        if ( ! empty( $values['auto_title'] ) ) {
     166            $auto_title[] = $values['name'];
     167        }
     168
     169        if ( ! empty( $values['requires_src'] ) ) {
     170            $embed_code_only[] = $values['name'];
    452171        }
    453172    }
    454173
    455     return false;
     174    $provider_list_link = 'https://nextgenthemes.com/plugins/arve-pro/#support-table';
     175    $pro_addon_link     = 'https://nextgenthemes.com/plugins/arve-pro/';
     176    $auto_thumbs        = implode( ', ', $auto_thumbs );
     177    $auto_title         = implode( ', ', $auto_title );
     178    $embed_code_only    = implode( ', ', $embed_code_only );
     179    $settings           = array(
     180        'url' => array(
     181            'type'                => 'string',
     182            'default'             => '',
     183            'label'               => __( 'Video URL / iframe Embed Code', 'advanced-responsive-video-embedder' ),
     184            'option'              => false,
     185            'placeholder'         => 'https://rumble.com/*, https://www.youtube.com/watch?v=*',
     186            'description'         => sprintf(
     187                // Translators: %1$s Providers
     188                __( 'Post the URL of the video here. For %1$s and any <a href="%2$s">unlisted</a> video hosts paste their iframe embed codes.', 'advanced-responsive-video-embedder' ),
     189                esc_html( $embed_code_only ),
     190                esc_url( $provider_list_link )
     191            ),
     192            'shortcode'           => true,
     193        ),
     194        'loop' => array(
     195            'default'     => false,
     196            'shortcode'   => true,
     197            'option'      => false,
     198            'label'       => __( 'Loop?', 'advanced-responsive-video-embedder' ),
     199            'type'        => 'boolean',
     200            'description' => __( 'Note not all video hosts provide this feature.', 'advanced-responsive-video-embedder' ),
     201        ),
     202        'muted' => array(
     203            'default'     => false,
     204            'shortcode'   => true,
     205            'option'      => false,
     206            'label'       => __( 'Mute?', 'advanced-responsive-video-embedder' ),
     207            'type'        => 'boolean',
     208            'description' => __( 'Note not all video hosts provide this feature.', 'advanced-responsive-video-embedder' ),
     209        ),
     210        'controls' => array(
     211            'default'     => true,
     212            'label'       => __( 'Show Controls?', 'advanced-responsive-video-embedder' ),
     213            'type'        => 'boolean',
     214            'description' => __( 'Note that not all video hosts provide this feature.', 'advanced-responsive-video-embedder' ),
     215            'shortcode'   => true,
     216            'option'      => true,
     217        ),
     218        'title' => array(
     219            'type'                => 'string',
     220            'default'             => '',
     221            'placeholder'         => __( 'Video Title (Pro automatically handles this)', 'advanced-responsive-video-embedder' ),
     222            'label'               => __( 'Title', 'advanced-responsive-video-embedder' ),
     223            'option'              => false,
     224            'shortcode'           => true,
     225            'description'         => sprintf(
     226                // Translators: Provider list
     227                __( 'Used for SEO, is visible on top of thumbnails in Lazyload/Lightbox modes, is used as link text in link-lightbox mode. <a href="%1$s">ARVE Pro</a> is able to get them from %2$s automatically.', 'advanced-responsive-video-embedder' ),
     228                esc_url( $pro_addon_link ),
     229                esc_html( $auto_title )
     230            ),
     231        ),
     232        'description' => array(
     233            'default'             => '',
     234            'option'              => false,
     235            'shortcode'           => true,
     236            'label'               => __( 'Description', 'advanced-responsive-video-embedder' ),
     237            'type'                => 'string',
     238            'placeholder'         => __( 'Description Text (Pro automatically handles this)', 'advanced-responsive-video-embedder' ),
     239            'description'         => sprintf(
     240                // translators: URL
     241                __( 'Needed for SEO <a href="%s">ARVE Pro</a> fills this automatically', 'advanced-responsive-video-embedder' ),
     242                esc_url( $pro_addon_link )
     243            ),
     244        ),
     245        'upload_date' => array(
     246            'type'                => 'string',
     247            'default'             => '',
     248            'option'              => false,
     249            'shortcode'           => true,
     250            'label'               => __( 'Upload Date', 'advanced-responsive-video-embedder' ),
     251            'placeholder'         => __( '2019-09-29 (Pro automatically handles this)', 'advanced-responsive-video-embedder' ),
     252            'description'         => sprintf(
     253                // translators: URL
     254                __( '<a href="%s">ARVE Pro</a> fills this automatically.', 'advanced-responsive-video-embedder' ),
     255                esc_url( $pro_addon_link )
     256            ),
     257        ),
     258        'mode' => array(
     259            'type'                => 'string',
     260            'default'             => 'normal',
     261            'tab'                 => 'pro',
     262            'label'               => __( 'Mode', 'advanced-responsive-video-embedder' ),
     263            'options'             => array(
     264                ''              => __( 'Default', 'advanced-responsive-video-embedder' ),
     265                'normal'        => __( 'Normal', 'advanced-responsive-video-embedder' ),
     266                'lazyload'      => __( 'Lazyload', 'advanced-responsive-video-embedder' ),
     267                'lightbox'      => __( 'Lightbox', 'advanced-responsive-video-embedder' ),
     268                'link-lightbox' => __( 'Link opens Lightbox', 'advanced-responsive-video-embedder' ),
     269            ),
     270            'description'         => sprintf(
     271                // translators: URL
     272                __( 'For Lazyload, Lightbox and Link mode check out <a href="%s">ARVE Pro</a>. Only use normal when Pro is not installed!', 'advanced-responsive-video-embedder' ),
     273                'https://nextgenthemes.com/plugins/arve-pro/'
     274            ),
     275            'option'              => true,
     276            'shortcode'           => true,
     277        ),
     278        'lazyload_style' => array(
     279            'type'                => 'string',
     280            'default'             => 'thumbnail',
     281            'tab'                 => 'pro',
     282            'label'               => __( 'Lazyload Style', 'advanced-responsive-video-embedder' ),
     283            'options'             => array(
     284                ''          => __( 'Default', 'advanced-responsive-video-embedder' ),
     285                'thumbnail' => __( 'Thumbnail', 'advanced-responsive-video-embedder' ),
     286                'card'      => __( 'Card', 'advanced-responsive-video-embedder' ),
     287            ),
     288            'description'         => esc_html__( 'Chose the look of the video preview for Lazyload and Lightbox modes!', 'advanced-responsive-video-embedder' ),
     289            'option'              => true,
     290            'shortcode'           => true,
     291        ),
     292        'thumbnail_fallback' => array(
     293            'type'        => 'string',
     294            'default'     => plugins_url( 'src/img/thumbnail.avif', PLUGIN_FILE ),
     295            'tab'         => 'pro',
     296            'ui'          => 'image_upload',
     297            'shortcode'   => false,
     298            'option'      => true,
     299            'label'       => __( 'Thumbnail Fallback', 'advanced-responsive-video-embedder' ),
     300            'description' => __( 'URL or media gallery image ID used for thumbnail', 'advanced-responsive-video-embedder' ),
     301        ),
     302        'thumbnail_post_image_fallback' => array(
     303            'tab'         => 'pro',
     304            'default'     => true,
     305            'shortcode'   => false,
     306            'option'      => true,
     307            'label'       => __( 'Thumbnail Featured Image Fallback', 'advanced-responsive-video-embedder' ),
     308            'type'        => 'boolean',
     309            'description' => __( 'In case ARVE Pro can not get a thumbnail, the posts Featured image will be used instead', 'advanced-responsive-video-embedder' ),
     310        ),
     311        'thumbnail' => array(
     312            'type'                => 'string',
     313            'default'             => '',
     314            'ui'                  => 'image_upload',
     315            'shortcode'           => true,
     316            'option'              => false,
     317            'label'               => __( 'Thumbnail', 'advanced-responsive-video-embedder' ),
     318            'placeholder'         => '1234, https://* (Pro automatically handles this)',
     319            'description'         => sprintf(
     320                // Translators: 1 Link, 2 Provider list
     321                __( 'Media library image ID or image URL for preview image for SEO and Lazyload modes. <a href="%1$s">ARVE Pro</a> is able to get them from %2$s automatically, leave empty in this case unless you want use a different thumbnail. Type in <code>featured</code> to use the posts featured image.', 'advanced-responsive-video-embedder' ),
     322                esc_url( $pro_addon_link ),
     323                esc_html( $auto_thumbs )
     324            ),
     325        ),
     326        'hide_title' => array(
     327            'type'        => 'boolean',
     328            'default'     => false,
     329            'shortcode'   => true,
     330            'option'      => true,
     331            'tab'         => 'pro',
     332            'label'       => __( 'Hide Title (Lazyload & Lightbox only)', 'advanced-responsive-video-embedder' ),
     333            'description' => __( 'Useful when the thumbnail image already displays the video title (Lazyload & Lightbox modes).', 'advanced-responsive-video-embedder' ),
     334        ),
     335        'grow' => array(
     336            'type'        => 'boolean',
     337            'default'     => true,
     338            'shortcode'   => true,
     339            'option'      => true,
     340            'tab'         => 'pro',
     341            'label'       => __( 'Expand on play? (Lazyload only)', 'advanced-responsive-video-embedder' ),
     342            'description' => __( 'Expands video size after clicking the thumbnail (Lazyload Mode)', 'advanced-responsive-video-embedder' ),
     343        ),
     344        'fullscreen' => array(
     345            'type'        => 'string',
     346            'default'     => 'disabled',
     347            'tab'         => 'pro',
     348            'label'       => __( 'Go Fullscreen on opening Lightbox?', 'advanced-responsive-video-embedder' ),
     349            'description' => __( 'Makes the Browser go fullscreen when opening the Lightbox. Optionally stay in Fullscreen mode even after the Lightbox is closed', 'advanced-responsive-video-embedder' ),
     350            'options'     => array(
     351                ''              => __( 'Default', 'advanced-responsive-video-embedder' ),
     352                'enabled-exit'  => __( 'Enabled, exit FS on lightbox close', 'advanced-responsive-video-embedder' ),
     353                'enabled-stick' => __( 'Enabled, stay FS on lightbox close', 'advanced-responsive-video-embedder' ),
     354                'disabled'      => __( 'Disabled', 'advanced-responsive-video-embedder' ),
     355            ),
     356            'shortcode'   => true,
     357            'option'      => true,
     358        ),
     359        'play_icon_style' => array(
     360            'type'      => 'string',
     361            'default'   => 'youtube',
     362            'tab'       => 'pro',
     363            'label'     => __( 'Play Button', 'advanced-responsive-video-embedder' ),
     364            'options'   => array(
     365                // Translators: 1 %s is play icon style.
     366                ''                    => __( 'Default', 'advanced-responsive-video-embedder' ),
     367                'youtube'             => __( 'Youtube', 'advanced-responsive-video-embedder' ),
     368                'youtube-red-diamond' => __( 'Youtube Red Diamond', 'advanced-responsive-video-embedder' ),
     369                'vimeo'               => __( 'Vimeo', 'advanced-responsive-video-embedder' ),
     370                'circle'              => __( 'Circle', 'advanced-responsive-video-embedder' ),
     371                'none'                => __( 'No play image', 'advanced-responsive-video-embedder' ),
     372                'custom'              => __( 'Custom (for PHP filter)', 'advanced-responsive-video-embedder' ),
     373            ),
     374            'shortcode' => true,
     375            'option'    => true,
     376
     377        ),
     378        'hover_effect' => array(
     379            'type'      => 'string',
     380            'default'   => 'darken',
     381            'tab'       => 'pro',
     382            'label'     => __( 'Hover Effect (Lazyload/Lightbox only)', 'advanced-responsive-video-embedder' ),
     383            'options'   => array(
     384                ''          => __( 'Default', 'advanced-responsive-video-embedder' ),
     385                'darken'    => __( 'Darken', 'advanced-responsive-video-embedder' ),
     386                'zoom'      => __( 'Zoom Thumbnail', 'advanced-responsive-video-embedder' ),
     387                'rectangle' => __( 'Move Rectangle in', 'advanced-responsive-video-embedder' ),
     388                'none'      => __( 'None', 'advanced-responsive-video-embedder' ),
     389                'custom'    => __( 'Custom (for your own CSS styles', 'advanced-responsive-video-embedder' ),
     390            ),
     391            'shortcode' => true,
     392            'option'    => true,
     393        ),
     394        'disable_links' => array(
     395            'tab'         => 'pro',
     396            'default'     => false,
     397            'label'       => __( 'Disable links', 'advanced-responsive-video-embedder' ),
     398            'type'        => 'boolean',
     399            'description' => __( 'Prevent embeds to open new popups/tabs from links inside video embeds. Note: breaks functionality like sharing.', 'advanced-responsive-video-embedder' ),
     400
     401            'shortcode'   => true,
     402            'option'      => true,
     403        ),
     404        'align' => array(
     405            'default'   => 'none',
     406            'shortcode' => true,
     407            'option'    => true,
     408            'label'     => __( 'Alignment', 'advanced-responsive-video-embedder' ),
     409            'type'      => 'string',
     410            'options'   => array(
     411                ''       => __( 'Default', 'advanced-responsive-video-embedder' ),
     412                'none'   => __( 'None', 'advanced-responsive-video-embedder' ),
     413                'left'   => __( 'Left', 'advanced-responsive-video-embedder' ),
     414                'right'  => __( 'Right', 'advanced-responsive-video-embedder' ),
     415                'center' => __( 'Center', 'advanced-responsive-video-embedder' ),
     416            ),
     417        ),
     418        'arve_link' => array(
     419            'default'     => false,
     420            'label'       => __( 'ARVE Link', 'advanced-responsive-video-embedder' ),
     421            'type'        => 'boolean',
     422            'description' => __( "Shows a small 'ARVE' link below the videos. Be the most awesome person and help promoting this plugin.", 'advanced-responsive-video-embedder' ),
     423
     424            'shortcode'   => true,
     425            'option'      => true,
     426        ),
     427        'duration' => array(
     428            'type'        => 'string',
     429            'default'     => '',
     430            'option'      => false,
     431            'label'       => __( 'Duration', 'advanced-responsive-video-embedder' ),
     432            'placeholder' => '1H2M3S',
     433            'description' => __( '`1H2M3S` for 1 hour, 2 minutes and 3 seconds. `5M` for 5 minutes.', 'advanced-responsive-video-embedder' ),
     434
     435            'shortcode'   => true,
     436        ),
     437        'autoplay' => array(
     438            'type'        => 'boolean',
     439            'default'     => false,
     440            'shortcode'   => true,
     441            'option'      => true,
     442            'label'       => __( 'Autoplay', 'advanced-responsive-video-embedder' ),
     443            'description' => __( 'Do not expect this to work! Browsers (especially mobile) or user settings prevent it, some video hosts do not support it at all. Only used in normal mode. ARVE will mute HTML5 video playback in case to make autoplay work for the broadest audience.', 'advanced-responsive-video-embedder' ),
     444        ),
     445        'maxwidth' => array(
     446            'default'     => 0,
     447            'type'        => 'integer',
     448            'label'       => __( 'Maximal Width', 'advanced-responsive-video-embedder' ),
     449            'description' => sprintf(
     450                // Translators: $content_width value.
     451                __( 'In pixels. If set to 0 (default) the $content_width value from your theme is used if present, otherwise the default is %s.', 'advanced-responsive-video-embedder' ),
     452                DEFAULT_MAXWIDTH
     453            ),
     454            'placeholder' => '450',
     455            'shortcode'   => true,
     456            'option'      => true,
     457
     458        ),
     459        'lightbox_maxwidth' => array(
     460            'type'        => 'integer',
     461            'default'     => 1174,
     462            'placeholder' => '1174',
     463            'tab'         => 'pro',
     464            'label'       => __( 'Lightbox Maximal Width', 'advanced-responsive-video-embedder' ),
     465            'description' => __( 'default 1174', 'advanced-responsive-video-embedder' ),
     466            'shortcode'   => true,
     467            'option'      => true,
     468        ),
     469        'sticky' => array(
     470            'type'        => 'boolean',
     471            'default'     => true,
     472            'tab'         => 'sticky_videos',
     473            'option'      => true,
     474            'shortcode'   => true,
     475            'label'       => __( 'Sticky', 'advanced-responsive-video-embedder' ),
     476            'description' => __( 'Keep the video on the screen when scrolling.', 'advanced-responsive-video-embedder' ),
     477        ),
     478        'sticky_width' => array(
     479            'type'        => 'string',
     480            'default'     => '500px',
     481            'tab'         => 'sticky_videos',
     482            'shortcode'   => false,
     483            'option'      => true,
     484            'label'       => __( 'Sticky Video Width', 'advanced-responsive-video-embedder' ),
     485            'description' => __( 'CSS value (px, vw, ...) 350px is default.', 'advanced-responsive-video-embedder' ),
     486        ),
     487        'sticky_max_width' => array(
     488            'type'        => 'string',
     489            'default'     => '40vw',
     490            'tab'         => 'sticky_videos',
     491            'shortcode'   => false,
     492            'option'      => true,
     493            'label'       => __( 'Sticky Video Maximal Width', 'advanced-responsive-video-embedder' ),
     494            'description' => __( 'A vw (viewport width) value is recommended. The default of 40vw tells the video it can never be wider than 40% of the screens width.', 'advanced-responsive-video-embedder' ),
     495        ),
     496        'sticky_gap' => array(
     497            'type'        => 'string',
     498            'default'     => '0.7rem',
     499            'tab'         => 'sticky_videos',
     500            'shortcode'   => false,
     501            'option'      => true,
     502
     503            'label'       => __( 'Sticky Video Corner Gap', 'advanced-responsive-video-embedder' ),
     504            'description' => __( 'CSS value (px, me, rem ...). Space between browser windows corner and pinned video.', 'advanced-responsive-video-embedder' ),
     505        ),
     506        'sticky_navbar_selector' => array(
     507            'type'        => 'string',
     508            'default'     => '.navbar--primary',
     509            'tab'         => 'sticky_videos',
     510            'shortcode'   => false,
     511            'option'      => true,
     512
     513            'label'       => __( 'Selector for fixed Navbar', 'advanced-responsive-video-embedder' ),
     514            'description' => __( 'If you have a fixed navbar on the top if your site you need this. document.querySelector(x) for a fixed navbar element to account for its height when pinning videos to the top.', 'advanced-responsive-video-embedder' ),
     515        ),
     516        'sticky_on_mobile' => array(
     517            'type'        => 'boolean',
     518            'default'     => true,
     519            'tab'         => 'sticky_videos',
     520            'shortcode'   => true,
     521            'option'      => true,
     522            'label'       => __( 'Sticky top on smaller screens', 'advanced-responsive-video-embedder' ),
     523            'description' => __( 'Stick the video to the top of screens below 768px width in portrait orientation. The Video will always be as wide as the screen ignoring the Stick Width and Stick Maxwidth settings.', 'advanced-responsive-video-embedder' ),
     524        ),
     525        'sticky_position' => array(
     526            'tab'         => 'sticky_videos',
     527            'default'     => 'bottom-right',
     528            'label'       => __( 'Sticky Video Position', 'advanced-responsive-video-embedder' ),
     529            'type'        => 'string',
     530            'options'     => array(
     531                ''             => __( 'Default', 'advanced-responsive-video-embedder' ),
     532                'top-left'     => __( 'Top left', 'advanced-responsive-video-embedder' ),
     533                'top-right'    => __( 'Top right', 'advanced-responsive-video-embedder' ),
     534                'bottom-left'  => __( 'Bottom left', 'advanced-responsive-video-embedder' ),
     535                'bottom-right' => __( 'Bottom right', 'advanced-responsive-video-embedder' ),
     536            ),
     537            'description' => __( 'Corner the video gets pinned to on bigger screens.', 'advanced-responsive-video-embedder' ),
     538            'shortcode'   => true,
     539            'option'      => true,
     540        ),
     541        'align_maxwidth' => array(
     542            'default'     => 400,
     543            'shortcode'   => false,
     544            'label'       => __( 'Align Maximal Width', 'advanced-responsive-video-embedder' ),
     545            'type'        => 'integer',
     546            'description' => __( 'In px, Needed! Must be 100+ to work.', 'advanced-responsive-video-embedder' ),
     547            'option'      => true,
     548        ),
     549        'aspect_ratio' => array(
     550            'default'     => '',
     551            'option'      => false,
     552            'shortcode'   => true,
     553            'label'       => __( 'Aspect Ratio', 'advanced-responsive-video-embedder' ),
     554            'type'        => 'string',
     555            'description' => __( 'E.g. 4:3, 21:9. ARVE is usually smart enough to figure this out on its own.', 'advanced-responsive-video-embedder' ),
     556            'placeholder' => '4:3, 21:9 ...',
     557        ),
     558        'parameters' => array(
     559            'default'     => '',
     560            'option'      => false,
     561            'shortcode'   => true,
     562            'label'       => __( 'Parameters', 'advanced-responsive-video-embedder' ),
     563            'type'        => 'string',
     564            'placeholder' => 'example=1&foo=bar',
     565            'description' => sprintf(
     566                // Translators: URL
     567                __( 'Provider specific player settings on iframe src. See <a href="%s">documentation.</a>', 'advanced-responsive-video-embedder' ),
     568                esc_url( 'https://nextgenthemes.com/plugins/arve/documentation/#parameters' )
     569            ),
     570        ),
     571        'wp_video_override' => array(
     572            'tab'         => 'html5',
     573            'default'     => true,
     574            'shortcode'   => false,
     575            'option'      => true,
     576            'label'       => __( 'Use ARVE for video files?', 'advanced-responsive-video-embedder' ),
     577            'type'        => 'boolean',
     578            'description' => __( 'Overwrite the default WordPress behavior.', 'advanced-responsive-video-embedder' ),
     579        ),
     580        'controlslist' => array(
     581            'tab'         => 'html5',
     582            'default'     => '',
     583            'label'       => __( 'Chrome HTML5 Player controls', 'advanced-responsive-video-embedder' ),
     584            'type'        => 'string',
     585            'description' => __( 'controlsList attribute on &lt;video&gt; for example use <code>nodownload nofullscreen noremoteplayback</code> to hide the download and the fullscreen button on the chrome HTML5 video player and disable remote playback.', 'advanced-responsive-video-embedder' ),
     586            'placeholder' => 'nodownload nofullscreen noremoteplayback',
     587            'shortcode'   => true,
     588            'option'      => true,
     589        ),
     590        'volume' => array(
     591            'tab'         => 'pro',
     592            'default'     => 100,
     593            'shortcode'   => true,
     594            'option'      => true,
     595
     596            'label'       => __( 'Volume', 'advanced-responsive-video-embedder' ),
     597            'type'        => 'integer',
     598            'description' => __( 'Works with video files only.', 'advanced-responsive-video-embedder' ),
     599        ),
     600        'always_enqueue_assets' => array(
     601            'shortcode'   => false,
     602            'option'      => true,
     603
     604            'default'     => false,
     605            'label'       => __( 'Always load assets', 'advanced-responsive-video-embedder' ),
     606            'type'        => 'boolean',
     607            'description' => __( 'Default=No ARVE will loads its scripts and styles only when the posts content contains a arve video. In case your content is loaded via AJAX at a later stage this detection will not work or the styles are not loaded for another reason you may have to enable this option', 'advanced-responsive-video-embedder' ),
     608        ),
     609        'youtube_nocookie' => array(
     610            'default'     => true,
     611            'shortcode'   => false,
     612            'option'      => true,
     613            'label'       => __( 'Use youtube-nocookie.com url?', 'advanced-responsive-video-embedder' ),
     614            'type'        => 'boolean',
     615            'description' => __( 'Privacy enhanced mode, will NOT disable cookies but only sets them when a user starts to play a video.', 'advanced-responsive-video-embedder' ),
     616        ),
     617        'vimeo_api_id' => array(
     618            'tab'                 => 'random_video',
     619            'default'             => '',
     620            'shortcode'           => false,
     621            'option'              => true,
     622
     623            'label'               => __( 'Vimeo client identifier', 'advanced-responsive-video-embedder' ),
     624            'type'                => 'string',
     625            'description'         => sprintf(
     626                // Translators: URL
     627                __( 'Needed for <a href="%s">Random Video Addon</a>.', 'advanced-responsive-video-embedder' ),
     628                esc_url( 'https://nextgenthemes.com/plugins/arve-random-video/' )
     629            ),
     630        ),
     631        'vimeo_api_secret' => array(
     632            'tab'                 => 'random_video',
     633            'default'             => '',
     634            'shortcode'           => false,
     635            'option'              => true,
     636            'label'               => __( 'Vimeo client secret', 'advanced-responsive-video-embedder' ),
     637            'type'                => 'string',
     638            'description'         => sprintf(
     639                // Translators: URL
     640                __( 'Needed for <a href="%s">Random Video Addon</a>.', 'advanced-responsive-video-embedder' ),
     641                esc_url( 'https://nextgenthemes.com/plugins/arve-random-video/' )
     642            ),
     643        ),
     644        'vimeo_api_token' => array(
     645            'tab'                 => 'random_video',
     646            'default'             => '',
     647            'shortcode'           => false,
     648            'option'              => true,
     649            'label'               => __( 'Vimeo API Token', 'advanced-responsive-video-embedder' ),
     650            'type'                => 'string',
     651            'description'         => sprintf(
     652                // Translators: URL
     653                __( 'Needed for <a href="%s">Random Video Addon</a>.', 'advanced-responsive-video-embedder' ),
     654                esc_url( 'https://nextgenthemes.com/plugins/arve-random-video/' )
     655            ),
     656        ),
     657        'random_video_url' => array(
     658            'tab'                 => 'random_video',
     659            'default'             => '',
     660            'placeholder'         => 'https://www.youtube.com/playlist?list=PL...',
     661            'option'              => false,
     662            'shortcode'           => true,
     663            'label'               => esc_html__( 'Random Video URL', 'advanced-responsive-video-embedder' ),
     664            'type'                => 'string',
     665            'description'         => sprintf(
     666                // Translators: URL
     667                __( 'Youtube Playlist or Vimeo showcase URL<a href="%s">(Random Video Addon)</a>.', 'advanced-responsive-video-embedder' ),
     668                esc_url( 'https://nextgenthemes.com/plugins/arve-random-video/' )
     669            ),
     670        ),
     671        'random_video_urls' => array(
     672            'tab'                 => 'random_video',
     673            'default'             => '',
     674            'placeholder'         => 'https://youtu.be/abc, https://vimeo.com/123',
     675            'option'              => false,
     676            'shortcode'           => true,
     677            'label'               => esc_html__( 'Random Video URLs', 'advanced-responsive-video-embedder' ),
     678            'type'                => 'string',
     679            'description'         => sprintf(
     680                // Translators: URL
     681                __( 'Video URLs separated by commas. <a href="%s">(Random Video Addon)</a>.', 'advanced-responsive-video-embedder' ),
     682                esc_url( 'https://nextgenthemes.com/plugins/arve-random-video/' )
     683            ),
     684        ),
     685        'legacy_shortcodes' => array(
     686            'default'     => true,
     687            'shortcode'   => false,
     688            'option'      => true,
     689            'label'       => __( 'Enable legacy shortcodes', 'advanced-responsive-video-embedder' ),
     690            'type'        => 'boolean',
     691            'description' => __( 'Enable the old and deprecated <code>[youtube id="abcde" /]</code> or <code>[vimeo id="abcde" /]</code> ... style shortcodes. Only enable if you have them in your content.', 'advanced-responsive-video-embedder' ),
     692        ),
     693        'encrypted_media' => array(
     694            'default'     => false,
     695            'shortcode'   => true,
     696            'option'      => false,
     697            'label'       => __( 'Allow Encrypted Media', 'advanced-responsive-video-embedder' ),
     698            'type'        => 'boolean',
     699            'description' => __( "Only needed in specific situations. Reduces privacy of the iframe embed. 'Disable Links' feature from ARVE Pro will not work with this.", 'advanced-responsive-video-embedder' ),
     700        ),
     701        'credentialless' => array(
     702            'default'     => true,
     703            'shortcode'   => true,
     704            'option'      => false,
     705            'label'       => __( 'Set credentialless on iframe', 'advanced-responsive-video-embedder' ),
     706            'type'        => 'boolean',
     707            'description' => __( 'Needs to be disabled in specific situations like webvideocore.net payment popup. Reduces privacy of the iframe embeds when disabled.', 'advanced-responsive-video-embedder' ),
     708        ),
     709        'seo_data' => array(
     710            'tab'         => 'main',
     711            'default'     => true,
     712            'shortcode'   => false,
     713            'option'      => true,
     714            'label'       => __( 'Enable structured data (schema.org)', 'advanced-responsive-video-embedder' ),
     715            'type'        => 'boolean',
     716            'description' => __( 'ARVE Pro helps you autofill the data so you do not have to manually enter things for every single video to make it complete.', 'advanced-responsive-video-embedder' ),
     717        ),
     718        'gutenberg_help' => array(
     719            'default'     => true,
     720            'shortcode'   => false,
     721            'option'      => true,
     722            'label'       => __( 'Enable help text?', 'advanced-responsive-video-embedder' ),
     723            'type'        => 'boolean',
     724            'description' => __( 'Disabling this makes the interface in Gutenberg/Shortcode dialog much cleaner.', 'advanced-responsive-video-embedder' ),
     725        ),
     726        'feed' => array(
     727            'default'     => true,
     728            'shortcode'   => false,
     729            'option'      => true,
     730            'label'       => __( 'Use in RSS/Atom Feeds?', 'advanced-responsive-video-embedder' ),
     731            'type'        => 'boolean',
     732            'description' => __( 'Enable the plugin in RSS/Atom feeds? Disabling will not completely diable everything but it will use native WP behavior in feeds where possible.', 'advanced-responsive-video-embedder' ),
     733        ),
     734        'reset_after_played' => array(
     735            'tab'         => 'pro',
     736            'default'     => 'enabled',
     737            'shortcode'   => false,
     738            'option'      => true,
     739            'label'       => __( 'Reset after played', 'advanced-responsive-video-embedder' ),
     740            'type'        => 'string',
     741            'options'     => array(
     742                ''                   => __( 'Default', 'advanced-responsive-video-embedder' ),
     743                'enabled'            => __( 'Enabled', 'advanced-responsive-video-embedder' ),
     744                'disabled'           => __( 'Disabled', 'advanced-responsive-video-embedder' ),
     745                'disabled-for-vimeo' => __( 'Disabled for Vimeo only', 'advanced-responsive-video-embedder' ),
     746            ),
     747            'description' => __( 'When enabled ARVE Pro will display the thumbnail again like it is shown before the video was loaded. When a video is displayed in a lightbox the lightbox will automatically close. If you are using Vimeo\'s "call to action" feature for example you want to disable this for vimeo.', 'advanced-responsive-video-embedder' ),
     748        ),
     749        'admin_bar_menu' => array(
     750            'default'     => false,
     751            'shortcode'   => false,
     752            'option'      => true,
     753            'label'       => __( 'Admin bar ARVE button', 'advanced-responsive-video-embedder' ),
     754            'type'        => 'boolean',
     755            'description' => __( 'For quickly accessing the ARVE settings page.', 'advanced-responsive-video-embedder' ),
     756        ),
     757        'lightbox_aspect_ratio' => array(
     758            'tab'         => 'pro',
     759            'default'     => '',
     760            'placeholder' => '9:16',
     761            'shortcode'   => true,
     762            'option'      => false,
     763            'label'       => __( 'Lightbox aspect ratio', 'advanced-responsive-video-embedder' ),
     764            'type'        => 'string',
     765            'description' => __( 'The aspect ratio of the lightbox. Leave empty to use the original video aspect ratio.', 'advanced-responsive-video-embedder' ),
     766        ),
     767        'cache_thumbnails' => array(
     768            'tab'         => 'privacy',
     769            'default'     => false,
     770            'shortcode'   => false,
     771            'option'      => true,
     772            'label'       => __( 'Cache thumbnails in Media Library', 'advanced-responsive-video-embedder' ),
     773            'type'        => 'boolean',
     774            'description' => __( 'No image hotlinking to video hosts. For Lazyload/Lightbox (Pro).', 'advanced-responsive-video-embedder' ),
     775        ),
     776        'invidious' => array(
     777            'tab'         => 'privacy',
     778            'default'     => false,
     779            'shortcode'   => true,
     780            'option'      => true,
     781            'label'       => __( 'Enable Invidious for YouTube', 'advanced-responsive-video-embedder' ),
     782            'type'        => 'boolean',
     783        ),
     784        'invidious_instance' => array(
     785            'tab'                 => 'privacy',
     786            'default'             => 'https://inv.nadeko.net/',
     787            'shortcode'           => false,
     788            'option'              => true,
     789            'label'               => __( 'Invidious instance', 'advanced-responsive-video-embedder' ),
     790            'type'                => 'string',
     791            'description'         => sprintf(
     792                // translators: %s is URL
     793                __( 'Invidious instance <a href="%s" target="_blank">see here</a>.', 'advanced-responsive-video-embedder' ),
     794                esc_url( 'https://docs.invidious.io/instances/' )
     795            ),
     796        ),
     797        'invidious_parameters' => array(
     798            'tab'                 => 'privacy',
     799            'default'             => 'local=true',
     800            'shortcode'           => false,
     801            'option'              => true,
     802            'label'               => __( 'Invidious URL parameters', 'advanced-responsive-video-embedder' ),
     803            'type'                => 'string',
     804            'description'         => sprintf(
     805                // translators: %s is URL
     806                __( 'Invidious <a href="%s" target="_blank">url parameters</a>.', 'advanced-responsive-video-embedder' ),
     807                esc_url( 'https://docs.invidious.io/url-parameters/' )
     808            ),
     809        ),
     810        'allow_referrer' => array(
     811            'label'       => __( 'Allow domain restricted videos (referrerpolicy)', 'advanced-responsive-video-embedder' ),
     812            'tab'         => 'main',
     813            'default'     => 'youtube, vimeo, rumble, xhamster, kick',
     814            'type'        => 'string',
     815            'option'      => true,
     816            'shortcode'   => false,
     817            'description' => __( 'Comma separated list of lowercase hosts that will set <code>referrerpolicy="origin-when-cross-origin"</code> instead of the default <code>referrerpolicy="no-referer"</code> on <code>iframe</code>. This will make video less private for the visitor as the host will be able to see on what website they are watching on but its needed for youtube, vimeo, rumble and possible others for domain restricted videos.', 'advanced-responsive-video-embedder' ),
     818        ),
     819        'show_src_mismatch_errors' => array(
     820            'label'       => __( 'Show src mismatch errors', 'advanced-responsive-video-embedder' ),
     821            'tab'         => 'debug',
     822            'type'        => 'string',
     823            'default'     => 'dev-mode',
     824            'option'      => true,
     825            'shortcode'   => false,
     826            'options'     => array(
     827                'always'   => __( 'Always', 'advanced-responsive-video-embedder' ),
     828                'dev-mode' => __( 'Dev Modes Only', 'advanced-responsive-video-embedder' ),
     829                'never'    => __( 'Never', 'advanced-responsive-video-embedder' ),
     830            ),
     831        ),
     832        'youtube_data_api_key' => array(
     833            'label'       => __( 'YouTube Data API Key', 'advanced-responsive-video-embedder' ),
     834            'tab'         => 'pro',
     835            'type'        => 'string',
     836            'default'     => '',
     837            'option'      => true,
     838            'shortcode'   => false,
     839            'description' => sprintf(
     840                // translators: %s is URL
     841                __( 'If you want ARVE Pro to pull video description text for Card view and SEO. You may need this if the included API key gets rate limited. Get your API key <a href="%s" target="_blank">here</a>.', 'advanced-responsive-video-embedder' ),
     842                esc_url( 'https://www.youtube.com/watch?v=EPeDTRNKAVo' )
     843            ),
     844        ),
     845    );
     846
     847    foreach ( $properties as $provider => $v ) {
     848
     849        if ( isset( $v['default_params'] ) ) {
     850
     851            $settings[ 'url_params_' . $provider ] = array(
     852                'tab'       => 'urlparams',
     853                'default'   => $v['default_params'],
     854                'option'    => true,
     855                'shortcode' => false,
     856                // Translators: %s is Provider
     857                'label'     => sprintf( __( '%s url parameters', 'advanced-responsive-video-embedder' ), $provider ),
     858                'type'      => 'string',
     859            );
     860        }
     861    }
     862
     863        $settings = new SettingsData( $settings, true );
     864
     865        return $settings;
    456866}
    457 
    458 /**
    459  * Get post types which support revisions.
    460  */
    461 function get_revision_post_types(): array {
    462 
    463     $revision_post_types = [];
    464 
    465     foreach ( get_post_types() as $type ) {
    466 
    467         $object = get_post_type_object( $type );
    468 
    469         if ( ! post_type_supports( $type, 'revisions' ) || null === $object ) {
    470             continue;
    471         }
    472 
    473         $name = ( property_exists( $object, 'labels' ) && property_exists( $object->labels, 'name' ) )
    474             ? $object->labels->name
    475             : $object->name;
    476 
    477         $revision_post_types[ $type ] = $name;
    478     }
    479 
    480     return $revision_post_types;
    481 }
  • advanced-responsive-video-embedder/trunk/php/init.php

    r3338484 r3338557  
    33declare(strict_types = 1);
    44
    5 namespace Nextgenthemes\TweakMaster;
     5namespace Nextgenthemes\ARVE;
    66
    7 add_action( 'init', __NAMESPACE__ . '\init_public', 9 );
     7// Stop outdated addons from executing
     8remove_action( 'plugins_loaded', 'Nextgenthemes\ARVE\Pro\init', 15 );
     9remove_action( 'plugins_loaded', 'Nextgenthemes\ARVE\RandomVideo\init', 15 );
     10remove_action( 'plugins_loaded', 'Nextgenthemes\ARVE\Privacy\init', 16 );
     11
     12add_action( 'init', __NAMESPACE__ . '\init', 9 );
    813add_action( 'admin_init', __NAMESPACE__ . '\init_admin', 9 );
    914
    10 function init_public(): void {
     15function init(): void {
    1116
    12     require_once __DIR__ . '/fn-settings.php';
     17    require_once PLUGIN_DIR . '/php/Video.php';
     18    require_once PLUGIN_DIR . '/php/fn-cache.php';
     19    require_once PLUGIN_DIR . '/php/fn-assets.php';
     20    require_once PLUGIN_DIR . '/php/fn-html-output.php';
     21    require_once PLUGIN_DIR . '/php/fn-misc.php';
     22    require_once PLUGIN_DIR . '/php/fn-oembed.php';
     23    require_once PLUGIN_DIR . '/php/fn-shortcode-data.php';
     24    require_once PLUGIN_DIR . '/php/fn-shortcode-args.php';
     25    require_once PLUGIN_DIR . '/php/fn-shortcodes.php';
     26    require_once PLUGIN_DIR . '/php/fn-url-handlers.php';
     27    require_once PLUGIN_DIR . '/php/fn-validation.php';
     28    require_once PLUGIN_DIR . '/php/fn-settings.php';
    1329
    14     $settings = settings_data();
    15     $settings->remove( 'scroll-progress-bar' ); // uses options api
     30    add_option( 'arve_install_date', time() );
     31    maybe_delete_oembed_cache(); // Must be before update_option arve_version
     32    update_option( 'arve_version', VERSION );
    1633
    17     foreach ( $settings->get_all() as $key => $setting ) {
     34    add_action( 'init', __NAMESPACE__ . '\settings_instance' );
     35    add_action( 'init', __NAMESPACE__ . '\init_nextgenthemes_settings' );
     36    add_action( 'init', __NAMESPACE__ . '\register_assets' );
     37    add_action( 'init', __NAMESPACE__ . '\create_shortcodes' );
     38    add_action( 'init', __NAMESPACE__ . '\create_url_handlers' );
     39    add_filter( 'mce_css', __NAMESPACE__ . '\add_styles_to_mce' );
     40    add_filter( 'oembed_remote_get_args', __NAMESPACE__ . '\vimeo_referer', 10, 2 );
     41    add_action( 'wp_enqueue_scripts', __NAMESPACE__ . '\action_wp_enqueue_scripts' );
     42    add_filter( 'render_block_core/embed', __NAMESPACE__ . '\remove_embed_block_aspect_ratio' );
     43    add_action( 'wp_video_shortcode_override', __NAMESPACE__ . '\wp_video_shortcode_override', 10, 4 );
     44    add_filter( 'language_attributes', __NAMESPACE__ . '\html_id' );
     45    add_filter( 'oembed_dataparse', __NAMESPACE__ . '\filter_oembed_dataparse', PHP_INT_MAX, 3 );
     46    add_filter( 'embed_oembed_html', __NAMESPACE__ . '\filter_embed_oembed_html', OEMBED_HTML_PRIORITY, 4 );
     47    add_action( 'elementor/widgets/register', __NAMESPACE__ . '\register_elementor_widget' );
    1848
    19         if ( 'boolean' === $setting->type && option_is_set( $key ) ) {
    20             require_once TWEAKS_DIR_SA . "/$key.php";
    21         }
     49    foreach ( ADDON_NAMES as $addon_name ) {
     50        maybe_init_addon( $addon_name );
    2251    }
    23 
    24     if ( any_option_is_set( [ 'jpeg-compression', 'webp-compression', 'avif-compression' ] ) ) {
    25         require_once TWEAKS_DIR . '/image-quality.php';
    26     }
    27 
    28     if ( ! defined( 'EMPTY_TRASH_DAYS' ) && option_is_set( 'trash-keep-days' ) ) {
    29         require_once TWEAKS_DIR . '/set-trash-keep-days.php';
    30     }
    31 
    32     require_once TWEAKS_DIR . '/revisions-to-keep.php';
    33 
    34     require_file_if_option_is_set( 'admin-bar-greeting' );
    35     require_file_if_option_is_set( 'scroll-progress-bar' );
    36     require_file_if_option_is_set( 'user-agent' );
    3752}
    3853
    39 function require_file_if_option_is_set( string $key ): void {
     54function maybe_init_addon( string $name ): void {
    4055
    41     if ( option_is_set( $key ) ) {
    42         require_once TWEAKS_DIR . "/$key.php";
     56    $init_function_name = '\\' . __NAMESPACE__ . '\\' . $name . '\\init';
     57    $version_const_name = '\\' . __NAMESPACE__ . '\\' . $name . '\\VERSION';
     58    $req_ver_const_name = '\\' . __NAMESPACE__ . '\\' . strtoupper( $name ) . '_REQUIRED_VERSION';
     59    $version            = defined( $version_const_name ) ? constant( $version_const_name ) : '';
     60    $req_ver            = defined( $req_ver_const_name ) ? constant( $req_ver_const_name ) : '';
     61
     62    if ( $version && version_compare( $version, $req_ver, '>=' ) && function_exists( $init_function_name ) ) {
     63        $init_function_name();
    4364    }
    4465}
    4566
    4667function init_admin(): void {
    47     add_action( 'nextgenthemes/tweakmaster/admin/settings/sidebar', __NAMESPACE__ . '\code_info' );
    48     add_action( 'nextgenthemes/tweakmaster/admin/settings/content', __NAMESPACE__ . '\revisions_tab_info' );
     68
     69    require_once PLUGIN_DIR . '/php/Admin/fn-admin.php';
     70    require_once PLUGIN_DIR . '/php/Admin/fn-settings-page.php';
     71    require_once PLUGIN_DIR . '/php/Admin/fn-shortcode-creator.php';
     72    require_once PLUGIN_DIR . '/php/Admin/fn-debug-info.php';
     73
     74    add_action( 'nextgenthemes/arve/admin/settings/sidebar', __NAMESPACE__ . '\Admin\settings_sidebar' );
     75    add_action( 'nextgenthemes/arve/admin/settings/content', __NAMESPACE__ . '\Admin\settings_content' );
     76
     77    add_action( 'admin_bar_menu', __NAMESPACE__ . '\Admin\action_admin_bar_menu', 100 );
     78    add_action( 'admin_enqueue_scripts', __NAMESPACE__ . '\Admin\admin_enqueue_scripts' );
     79    add_action( 'admin_enqueue_scripts', __NAMESPACE__ . '\Admin\admin_enqueue_styles', 99 );
     80    add_action( 'admin_init', __NAMESPACE__ . '\Admin\action_admin_init_setup_messages' );
     81    add_action( 'media_buttons', __NAMESPACE__ . '\Admin\add_media_button', 11 );
     82
     83    add_action( 'register_shortcode_ui', __NAMESPACE__ . '\Admin\register_shortcode_ui' );
     84    add_action( 'wp_dashboard_setup', __NAMESPACE__ . '\Admin\add_dashboard_widget' );
     85
     86    add_filter( 'plugin_action_links_' . plugin_basename( PLUGIN_FILE ), __NAMESPACE__ . '\Admin\add_action_links' );
     87
     88    add_filter( 'debug_information', __NAMESPACE__ . '\Admin\add_site_health_metadata' );
    4989}
    5090
    51 function code_info(): void {
     91register_uninstall_hook( PLUGIN_FILE, __NAMESPACE__ . '\uninstall' );
    5292
    53     ?>
    54     <div class="ngt-sidebar-box">
    55         <p>
    56             <?php
    57                 echo wp_kses(
    58                     sprintf(
    59                         // translators: %s: Github URL.
    60                         __( 'See the <a href="%s" target="_blank">code</a> and add tweaks you are missing.', 'tweakmaster' ),
    61                         'https://github.com/nextgenthemes/tweakmaster/tree/master/php/tweaks-standalone'
    62                     ),
    63                     [
    64                         'a' => [
    65                             'href'   => [],
    66                             'target' => [],
    67                         ],
    68                     ],
    69                     [ 'https' ]
    70                 );
    71             ?>
    72         </p>
    73     </div>
    74     <?php
     93function uninstall(): void {
     94
     95    global $wpdb;
     96
     97    if ( version_compare( $wpdb->db_version(), '8.0', '>=' ) ) {
     98        $wpdb->query( "UPDATE {$wpdb->postmeta} SET meta_value = REGEXP_REPLACE( meta_value, '<template[^>]+arve_cachetime[^>]+></template>', '' )" );
     99    }
    75100}
    76 
    77 function revisions_tab_info(): void {
    78 
    79     ?>
    80     <p data-wp-bind--hidden="!context.activeTabs.revisions">
    81         <?php echo wp_kses( __( '<code>-1</code> = Unlimited revisions', 'tweakmaster' ), [ 'code' => [] ] ); ?><br>
    82         <?php echo wp_kses( __( '<code>0</code> = Disable revisions', 'tweakmaster' ), [ 'code' => [] ] ); ?><br>
    83         <?php echo wp_kses( __( 'Positive integer = Number of revisions', 'tweakmaster' ), [ 'code' => [] ] ); ?>
    84     </p>
    85     <?php
    86 }
  • advanced-responsive-video-embedder/trunk/readme.md

    r3338484 r3338557  
    1 If you just want just use the plugin its on [wordpress.org](https://wordpress.org/tweakmaster).
     1# Git repository for Advanced Responsive Video Embedder (ARVE)
    22
    3 # Contributing is very easy
     3#### Level up your basic video embeds! Advanced features, privacy. Use URLs, Shortcodes or Blocks to customize videos to your needs.
    44
    5 1. For a basic standalone tweak all you need to do it develop a (mu)plugin as a single file that automatically enabled/disables or otherwise tweaks something with filters or actions.
    6 1. When you have your tiny tweak plugin working simply place the file into `tweakmaster/php/tweaks-standalone/` look at the naming of the files and name your tweak straight to the point. Look at the other files for coding standards. Use Namespace, filters/actions at the top of the file, avoid anonymous functions.
    7 1. Then check out how settings are defined in `tweakmaster/php/fn-settings.php`. Add a setting for your tweak, the array key should be like your filename but without the `.php` ending. Most of the boolean settings simple case a tweak file to be loaded. Think of it like activating plugins.
     5[ARVE WordPress Plugin][1] is free on [wp.org][1]. Look there for the feature set.
    86
    9 # Advanced usage of standalone tweaks as mu-plugins
     7[Permalink download to latest version][2]. It will at times be an alpha or beta version that passed the automatic tests but is not released to wp.org. You can upload it a WordPress site under Dashboard > Plugins -> Add New -> Upload.
    108
    11 If you do it this way, you probably should not use the Plugin at the same time. It won't work for tweaks that have settings that are not just on/off switches. Each standalone tweak can be used as mu-plugin. Simple put the files you need inside your mu-plugins folder.
     9Feel free to file issues with the *code*, for support please file a ticket on [nextgenthemes.com/support/](https://nextgenthemes.com/support/)
    1210
    13 To do this you can simply copy `.php` files you like from [tweaks-standalone/](https://github.com/nextgenthemes/tweakmaster/tree/master/php/tweaks-standalone) to your mu-plugins folder. Github has a 'download file' icon on the top right when you open files.
     11Code contributions are welcome.
    1412
    15 If you have WP CLI you can use these command to copy the files directly from Github to your WordPress site.
     13Paid addons that finance this project are available:
    1614
    17 ```sh
    18 # In case you do not have a mu-plugins folder.
    19 wp eval "if ( ! file_exists(WP_CONTENT_DIR . '/mu-plugins' ) ) { mkdir(WP_CONTENT_DIR . '/mu-plugins', 0755, true); }"
     15* [Pro](https://nextgenthemes.com/plugins/arve-pro) for Lightbox, Lazyload, Autofill of SEO data and more.
     16* [Privacy](https://nextgenthemes.com/plugins/arve-privacy) for DSGVO compliance, self hosted thumbnails, load YouTube videos via an invideo.us instance.
     17* [Sticky Videos](https://nextgenthemes.com/plugins/arve-sticky-videos/)
     18* [Random Video](https://nextgenthemes.com/plugins/arve-random-video)
    2019
    21 # Replace the filename with any file you find in https://github.com/nextgenthemes/tweakmaster/tree/master/php/tweaks-standalone/
    22 wp eval "\$filename = 'disable-auto-trash-emptying.php'; file_put_contents( WP_CONTENT_DIR . '/mu-plugins/' . \$filename, file_get_contents( 'https://raw.githubusercontent.com/nextgenthemes/tweakmaster/refs/heads/master/php/tweaks-standalone/' . \$filename ) );"
    23 ```
     20If you have an idea for a functionality or addon you like to pay for, please [reach out](https://nextgenthemes.com/contact/).
     21
     22[1]: https://wordpress.org/plugins/advanced-responsive-video-embedder/
     23[2]: https://github.com/nextgenthemes/advanced-responsive-video-embedder/releases/latest/download/arve.zip
  • advanced-responsive-video-embedder/trunk/readme.txt

    r3338484 r3338557  
    1 === TweakMaster ===
     1=== Advanced Responsive Video Embedder for Rumble, Odysee, YouTube, Vimeo, Kick ... ===
    22Contributors: nico23
    3 Tags: performance, privacy, security, tweaks, lightweight
     3Donate link: https://nextgenthemes.com/donate/
     4Tags: embed, video, lazyload, lightbox, rumble
    45Requires at least: 6.6
    56Tested up to: 6.8
    67Requires PHP: 7.4
    7 Stable tag: 1.0.5
    8 License: GPLv3
     8Stable tag: 10.6.14
     9License: GPL-3.0
    910License URI: https://www.gnu.org/licenses/gpl-3.0.html
    10 Donate link: https://nextgenthemes.com/donate
    11 
    12 A collection of performance, privacy, security, and other tweaks. Minimalistic lightweight plugin.
    13 
    14 == Description ==
    15 WP Tweak is a lightweight and minimalistic WordPress plugin designed to enhance your website with a curated set of tweaks. It focuses on improving performance, bolstering privacy, strengthening security, and adding other useful optimizations—all without unnecessary bloat. Perfect for users who want a simple yet effective solution to fine-tune their WordPress experience.
    16 
    17 This plugins handles tweaks in a minimalistic way. Only files that contains tweaks that you activate are loaded!
    18 
    19 = Tweaks =
    20 
    21 * **Remove version query strings**<br>
    22 Removes <code>?ver=1.2.3</code> from all styles and scripts.
    23 * **Disable feeds**
    24 * **Disable emojis**
    25 * **Search single result redirect**
    26 * **Disallow File Edits**<br>
    27 Disables the ability to edit files in the file manager. Sets <code>DISALLOW_FILE_EDIT</code> constant to true. Does only work if the constant is already defined, usually in wp-config.php
    28 * **Admin bar greeting**<br>
    29 Replace "Howdy, {name}" with a custom message. Use <code>{name}</code> for the user's display name. For example <code>Hi, {name}!</code>. Leave empty for no greeting. Use <code>default</code> for the default greeting, preventing the tweak from running.
    30 * **Enable fonts to uploads**<br>
    31 Move (Google) Fonts enabled in the Block Editor from wp-content/fonts to wp-content/uploads
    32 * **Disable auto trash emptying**
    33 * **Set trash keep days**<br>
    34 Set the number of days to keep posts in the trash. Default is 30 days.
    35 * **Scroll progress bar**
    36 * **Scroll progress color**<br>
    37 And valid css will work. You can use <a href="https://oklch.com" target="_blank">this color picker!</a>.
    38 * **Scroll progress bar background color**
    39 * **Scroll progress height**
    40 * **Disable self SSL verify**
    41 * **Disable Comments**
    42 * **Disable Email Login**
    43 * **Disable REST API**
    44 * **Disable Success Update Emails**
    45 * **Remove Admin Bar WordPress Logo**<br>
    46 Requires a hard refresh of the page to take effect.
    47 * **Remove Asset Attributes**
    48 * **Disable Non Production Emails**<br>
    49 If WP_ENV (Trellis) or wp_get_environment_type is not production, emails sending is mocked.
    50 * **Remove REST API links**
    51 * **Set user agent**<br>
    52 WP really hates privacy and sends this <code>WordPress/1.0; https://example.org</code> to every site it makes calls to. You can empty the field, pretend to be Chrome <code>Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36</code> or something else. <code>default</code> will change nothing.
    53 * **Remove EXIF**<br>
    54 Remove EXIF data from uploaded images.
    55 * **Convert jpeg to avif**<br>
    56 Convert uploaded jpeg to avif
    57 * **Clean upload filenames**<br>
    58 Sanitize media filenames to remove non-latin special characters and accents
    59 * **Avif compression**<br>
    60 Default is 82
    61 * **Jpeg compression**<br>
    62 Default is 82
    63 * **Webp compression**<br>
    64 Default is 86
    65 * **Limit ALL revisions**<br>
    66 Limit revisions for all post types. This will override the limit for each post type from above!
    67 * **Disable XML-RPC**
    68 * **Disable XML-RPC - allow Jetpack IPs**<br>
    69 Allow XML-RPC only from Jetpack IPs
    70 * **Remove WP version**<br>
    71 Remove <code>WordPress/6.7.1; https://example.org</code> from html head
    72 * **Dequeue jQuery Migrate**<br>
    73 Dequeue jQuery Migrate from the jQuery script dependencies on the frontend. This is used to help devs debug from old versions of jQuery. You really do not need this on a production site.
    74 * **Script Optimizer**<br>
    75 Optimize script loading by moving them into the <code>head</code> and adding <code>defer</code> attribute. This may break your site. Use at your own risk!
    76 * **Enable relative URLs**<br>
    77 Enable relative URLs on the frontend. This may break your site. Use at your own risk!
    78 * **Disable Contact Form 7 CSS**<br>
    79 Sets <code>wpcf7_load_css</code> filter to <code>false</code>
    80 * **Disable Contact Form 7 Autop**<br>
    81 Sets <code>wpcf7_autop_or_not</code> filter to <code>false</code>
    82 * **Enable Jetpack offline mode**
    83 * **Enable maintenance mode**
    84 * **Enable duplicate post**
    85 
    86 
    87 = Contribute to add quality tweaks to the plugin reviewed by me =
    88 
    89 Unlike WP Code's snippet database that is filled with low code quality tweaks where some do not even work at all and spam this plugin only contains high quality tweaks. If something is missing please add it.
    90 
    91 It is very easy to contribute to the plugin. Check out the [Github Readme](https://github.com/nextgenthemes/tweakmaster/blob/master/readme.md).
    92 
    93 If you have questions on adding a more complex tweak please feel free to ask.
    94 
    95 == Screenshots ==
    96 (Maybe later)
    97 
    98 == Changelog ==
    99 
    100 = 2025-03-29 - 1.0.3
    101 * Improved: sanitize, validate correctly, fix prefixes ...
    102 * Removed update disable tweak, not allowed on wp.org?
    103 
    104 = 2025-03-xx - 1.0.1-beta2 =
    105 * Improved: Tweak descriptions.
    106 * Fix: Admin Bar Greeting tweak.
    107 * Fix: Link to GH readme.
    108 * Fix: Rename `wptweak` to `tweakmaster` to fix multiple issues.
    109 
    110 = 2025-03-15 - 1.0.1-beta1 =
    111 * New: Disable non production email tweak.
    112 
    113 = 2025-03-xx - 1.0.0-beta1 =
    114 * Initial release.
     11
     12Level up your basic video embeds! Advanced features, privacy. Use URLs, Shortcodes or Blocks to customize videos to your needs.
     13
     14## Description ##
     15
     16The best WordPress plugin for videos? Supports close to everything you can imagine, still keeping it easy & simple.
     17
     18It is very likely the one and only plugin you will ever need to handle video embeds on your WordPress site(s). It goes far beyond just making your videos responsive!
     19
     20[youtube https://www.youtube.com/watch?v=m6mkA6Zr1vY ]
     21
     22### Features ###
     23
     24#### Classic Editor ####
     25
     26*  Adds "Embed Video" button to help you create very powerful `[arve]` shortcodes.
     27*  Takes over WordPress embeds with URLs on their own line and `[embed]` shortcodes.
     28*  Can take over WP's default video file embeds.
     29
     30#### Block Editor (Gutenberg) ####
     31
     32*  Works with Embed, YouTube, Vimeo, Shortcode ... blocks.
     33*  Provides it's own powerful ARVE Block with all the features the `[arve]` shortcode offers, with a nice UI and detailed settings descriptions.
     34
     35#### Elementor ####
     36
     37* Provides a widget for the entire feature set of ARVE inside Elementor
     38
     39#### All ####
     40
     41*   Makes your video embeds [more secure and enhances visitors privacy](https://nextgenthemes.com/privacy-enhanced-and-safer-iframes-in-arve-10-0/).
     42*   Magically makes videos responsive you already embedded with WordPress default features.
     43*   SEO friendly, lets you specify title, description, upload date to provide search engines with the schema.org data they like to have for better indexing. Pro can autofill this for you.
     44*   No 'lock in' if you do not use the ARVE Gutenberg Block or `[arve]` shortcodes.
     45*   Supports [almost every video host](https://nextgenthemes.com/plugins/arve-pro/#support-table) that supports iframe embed codes.
     46*   Embeds via pasting the URL in its own line just like WordPress!
     47*   Optionally use very powerful Shortcodes instead.
     48*   Clean shortcode syntax `[arve url="https://youtu.be/yUCFRL43Zm4" parameters="start=30" ... /]`, no unnecessary shortcode wrapping.
     49*   One shortcode or Block for all video providers.
     50*   Responsive embeds with CSS, much better than with JavaScript.
     51*   Tries to be as unobtrusive as possible, sets 'hide brand' variables if supported, disables related videos from other channels at the end … to help keep people on your site rather then going to YouTube or keep watching videos.
     52*   Limited Autoplay (Mobile browsers usually prevent autoplay or allow it only muted. ARVE will automatically mute it but browser settings can still prevent it, even on Desktop)
     53*   Custom URL parameters to use all options providers offer.
     54*   Optional maximal width.
     55*   Video alignment.
     56*   Detailed description of options in-place.
     57*   Automatic detected and custom aspect ratio.
     58
     59#### Supported Providers ####
     60
     61[All providers with iframe embed codes](https://nextgenthemes.com/plugins/arve/documentation/#general-iframe-embedding)
     62Alugha, Archive.org, Banned.video, Bitchute, Brightcove, Brighteon, Comedy Central, Dailymotion, Dailymotion Playlist, DTube, Facebook, Gab TV, Google Drive, mp4 or webm video files, ARVE general iframe embed, IGN, IMDB, Kickstarter, kla.tv, Livestream.com, Mail.ru, Metacafe, myspace, v.qq.com, Rumble.com, ok.ru, RuTube.ru, TED Talks, TikTok, Twitch, Viddler, Vimeo, VK, Wistia, XTube, xHamster, Yahoo, Youku, YouTube, YouTube Playlist, Kick
     63### Reviews ###
     64
     65#### &#9733; &#9733; &#9733; &#9733; &#9733; Great plugin, great support ####
     66I’ve been using this plugin (free version and pro add-on) for a few years now. It works very well for my purposes (mainly lazyload and lightbox functionality). Recently I had a support issue with the new version which required some intervention – it was a conflict with my theme. Nico, the developer, went above and beyond to get a fix promptly sorted out for me. Thank you Nico.
     67
     68#### &#9733; &#9733; &#9733; &#9733; &#9733; The best there is – I have tried many…  ####
     69Have downloaded and paid for at least 4 other video players that use lightbox. Each one has major flaws. This products works perfectly. If you use the OnSite Editor, then just copy the short code and it works great.
     70
     71[arve url="https://www.youtube.com/watch?v=Z7g8-GxLTSc" /]
     72
     73For speed, the product uses the thumbnails from the server. So many of the other products do NOT do this and it slows the page rendering. This product should appear first on the WordPress search. Spent 3 days of my life wasted on other products, only to delete each one. [review by jodani][16]
     74
     75#### &#9733; &#9733; &#9733; &#9733; &#9733; Finally something that works ####
     76So I have a responsive theme but on pages with you tube videos it wasn't making the you tube videos fit in the mobile screen. I have spent the last hour trying many plugins and researching on google and finally I installed this. And I didn't have to update any settings or anything just refreshed a post with videos and all the sudden it is beautiful and responsive on my mobile phone!!!!!! THANK YOU!!!! [review by happyecho][16]
     77
     78#### &#9733; &#9733; &#9733; &#9733; &#9733; Only Plug-in that worked ####
     79I used a lot of high ranking plug-ins but they still broke my design. Downloaded this and worked right away. Thanks! [review by crconnell89][16]
     80
     81[16]: https://wordpress.org/support/plugin/advanced-responsive-video-embedder/reviews/?filter=5
     82
     83### [ARVE Pro][20] ###
     84
     85**<big>10% off</big>** first year with discount code `wporg`.
     86
     87This plugin is financed by purchases of [ARVE Pro][20]. The development and support of this plugins has become a job for me, so I hope you understand that I can not make all features gratis and that you [purchase it][20] to get extra features and support the development.
     88
     89*   **Disable links in embeds (killer feature!)**<br>
     90    For example: Clicking on a title in a YouTube embed will not open a new tab. **Prevent video hosts to lead your visitors away from your site!**
     91*   **Lazyload**<br>
     92    Make your site load **faster** by loading only an image instead of the entire video player on pageload.
     93*   **Lightbox**<br>
     94    Shows the Video in a Lightbox after clicking a Lazyload preview image
     95*   **Link ⇾ Lightbox**<br>
     96    Use simple links as triggers for opening Video Lightboxes
     97*   Auto pause videos when another video is played
     98*   Automatic or custom thumbnail images
     99*   Automatic or custom titles on top of your thumbnails
     100*   'Expand on click' feature
     101*   2 hover & 3 play icon styles
     102*   Responsive thumbnails (srcset)
     103*   **Feel good about yourself**<br>
     104    for supporting my 8+ years work on this plugin. Tons of hours, weekends … always worked on improving it
     105*   Show the latest video of a YouTube channel by using the channel URL (updated/cached hourly)
     106*   **[Get ARVE Pro][20]**
     107
     108[20]: https://nextgenthemes.com/plugins/arve-pro/
     109
     110### [ARVE Sticky Videos][23] ###
     111
     112Keep videos on the screen when scrolling.
     113
     114*  Choose if videos should be pinned to the top of the screen. Like the YouTube app for example.
     115*  For bigger screen choose a corner where a video should be pinned to. Like last.fm [for example][23].
     116
     117  [23]: https://nextgenthemes.com/plugins/arve-sticky-videos/
     118
     119### [Random Video Addon](https://nextgenthemes.com/plugins/arve-random-video/) ###
     120
     121Display random video from:
     122
     123*  YouTube Playlist
     124*  Vimeo Showcase
     125*  Comma separated list of video URLs
     126
     127### [ARVE AMP][29] ###
     128
     129When you use the AMP or 'AMP for WP' plugin you need this.
     130
     131* It will display videos embedded with ARVE on AMP pages correctly
     132* No options, just works
     133* It creates `<amp-youtube>`, `<amp-vimeo>`, `<amp-dailymotion>` elements
     134* For all other video hosts `<amp-video-iframe>` element is used
     135* Video files are also supported with `<amp-video>`
     136
     137  [29]: https://nextgenthemes.com/plugins/arve-amp/
     138
     139### Thanks ###
     140
     141*   Of course all the customers who bought a addon.
     142*   Howard Iken of [myfloridalaw.com](https://www.myfloridalaw.com) top donor, super nice to me even if I was rude and not deserved it!
     143*   [Ilya Grishkov](https://www.ilyagrishkov.com) for bringing up the idea and the first code to cache thumbnail urls.
     144*   Everybody giving constructive feedback, testing beta versions.
     145*   Everybody who donated back in the days when this was donation based.
     146
     147### Thanks to the developers of the software used in ARVE ###
     148
     149*   [Bigger Picture](https://github.com/henrygd/bigger-picture), used in [Pro Addon](https://nextgenthemes.com/plugins/arve-pro/)
     150
     151## Frequently Asked Questions ##
     152
     153### I have a problem ... ###
     154
     155Please report it on [nextgenthemes.com/support/](https://nextgenthemes.com/support/) **and please do not on the wordpess.org forums, thanks.**
     156
     157### I’m experiencing these errors on Google Search Console ###
     158
     159Best option to resolve these errors is to get [ARVE Pro](https://nextgenthemes.com/plugins/arve-pro/) as it fills these in for you hassle-free, only activate the add-on - done. For more options, please see the [detailed answer](https://nextgenthemes.com/plugins/arve/faq/).
     160
     161### How to get the pro version working? ###
     162
     1631. Go though the purchase process on [nextgenthemes.com](https://nextgenthemes.com/plugins/arve-pro/)
     1641. Follow the 3 easy steps you get with the purchase receipt. It is basically downloading a arve-pro.zip and installing it through your WordPress Admin panel.
     1651. After that you may want to switch your default mode to Lazyload or Lightbox on the ARVE settings page.
     166
     167### Why are my videos not filling their container? ###
     168
     169You may need to adjust your 'Maximal Width' setting to your liking.
     170
     171You are most likely use `align`, this plugin has a option for limiting video width with alignment. If you want your videos to fill their containers then you should not use the `align` shortcode attribute.
     172
     173### Can you add a video provider? ###
     174
     175Feel free to ask.
     176
     177### How do I embed videos from a unlisted providers / iframes? ###
     178
     179This plugin not changes anything to usual HTML `<iframe>` embed codes you have to use the shortcodes or the Gutenberg Block. They will become `[arve url="https://..."]`. The url represents what is the `src` in HTML embeds. It works as simple as this, if the `[arve]` shortcode does not detect a known URL structure then it will treat the URL as a `src` for the iframe.
     180
     181## Installation ##
     182
     183Please read the [official documentation](https://wordpress.org/support/article/managing-plugins/#installing-plugins) for that.
     184
     185## Screenshots ##
     186
     1871. Block Editor Example
     1882. Shortcode creation dialog in Classic Editor
     1893. Main Options
     1904. Pro Options
     1915. Video Files Options
     1926. URL Parameter Options
     193## Changelog ##
     194
     195* [ARVE Pro changelog](https://nextgenthemes.com/plugins/arve-pro/#changelog)
     196* [ARVE Random Videos changelog](https://nextgenthemes.com/plugins/arve-random-video/#changelog)
     197
     198### 2025-07-30 10.6.13 ###
     199
     200* Fix: _load_textdomain_just_in_time was called incorrectly.
     201* Fix: Minor visible error on debug tab with WP_DEBUG enabled.
     202
     203### 2025-03-22 10.6.12 ###
     204
     205* Fix: HTML mistake on the setting page.
     206* Improved: Hide some old errors.
     207
     208### 2025-03-21 10.6.10 ###
     209
     210* Fix: Removing ARVE data from oembed cache on uninstall.
     211* Improved: Error messages and escaping for remote calls.
     212* Improved: Lots of things around caching and how the errors are (not) displayed.
     213
     214### 2025-03-17 10.6.8 ###
     215
     216* Improved: ARVE now handles the execution of addons, not executing outdated addon.
     217* Improved: Added outdated messages for all addons.
     218
     219### 2025-03-16 10.6.7 ###
     220
     221* Fix: Compatibility with Advanced Custom Fields WYSIWYG editors. The ARVE shortcode creation button now finally works there.
     222
     223### 2025-03-15 10.6.6 ###
     224
     225* Improved: Tested with WP 6.8-beta2
     226* Improved: Updated jetpack autoloader.
     227* Improved: Cache deletion.
     228* Improved: Handling of error messaged of YouTube Data API errors.
     229* Abandoned asset wrappers.
     230* Renamed shared code package, now [nextgenthemes/wp-settings](https://packagist.org/packages/nextgenthemes/wp-settings) on Packagist.
     231
     232### 2025-03-09 10.6.5 ###
     233
     234* Fix: Cache management related old YouTube video having broken thumbnails.
     235
     236### 2025-03-09 10.6.4 ###
     237
     238* Fix: Link to settings page in API key notice.
     239* Improved: Link to tutorial video showing you how to get an YouTube Data API key.
     240
     241### 2025-03-09 10.6.1 ###
     242
     243* Improved: Error handling. Show YouTube API errors only on the Admin screens.
     244* Improved: Cache deletion.
     245* New: Option to add your own YouTube Data API key to prevent limits of the one included in Pro.
     246
     247### 2025-03-08 10.6.0 ###
     248
     249* New: Lazyload Style option (Pro Feature).
     250* Fix: Settings page conflicts with admin notices (from other plugins).
     251* Fix: `_load_textdomain_just_in_time` being triggered too early.
     252* Improved: Styles for the settings page and Classic Editor shortcode creator dialog.
     253* Improved: Simplified the way ARVE generates HTML using `WP_HTML_Tag_Processor`.
     254* Improved: `dnt=1` parameter is now part of the visible default parameters for Vimeo and Wistia. You may need to remove it or set it to `0` to get your views tracked by them.
     255
     256### 2025-01-15 10.5.4 ###
     257
     258* Improved: Removed incompatibility notices for AIO SEO Pack (resolved).
     259
     260### 2025-01-11 10.5.3 ###
     261
     262* Fix: Fixed, improved and restored Shortcode UI functionality.
     263
     264### 2025-01-08 10.5.2 ###
     265
     266* Fix: Block errors.
     267
     268### 2025-01-02 10.5.1 ###
     269
     270* Fix: Array merge with NULL error.
     271
     272### 2025-01-02 10.5.0 ###
     273
     274* New: Debug option to control src mismatch errors.
     275* Improved: Removed the debug into in favor or adding data to the Site Health Info screen.
     276* Improved: Introduced a `SettingsData` and `SettingValidator` classes to make the code more robust self testing.
     277
     278### 2024-12-05 10.4.0 ###
     279
     280* New: Added `credentialless="false"` parameter that can be used to remove the same named attribute from the iframe.
     281* Fix: Added `data-lenis-prevent` to the ARVE wrapper div to prevent issues with Lenis Smooth Scroll script.
     282* Fix: Viddler not working by allowing `sync-xhr`.
     283* Improved: Changes enabling latest ARVE Pro versions to use `sizes="auto"` for more efficient image loading.
     284* Improved: Featured image as fallback default change to `true` (Pro).
     285* Improved: ARVE now includes a black image with stripes used as default fallback thumbnail.
     286* Improved: Removed some legacy code, outdated addons are prevented from executing.
     287
     288### 2024-11-08 10.3.4 ###
     289
     290* Fix: xHamster not working. Its direclty supported with normal URLs now. Note ARVE needs to allow referrer to be send, with this privacy enhancement disabled xHamster will see the domain you are embedding from.
     291* Fix: multisite (needs to be confirmed).
     292
     293### 2024-10-23 10.3.3 ###
     294
     295* Show messages about incompatibility issue with All in One SEO Pack.
     296* Fix: Duplicated controls in ARVE Block sidebar.
     297* Fix: Help tests were not showing in Settings page.
     298
     299### 2024-08-22 10.3.2 ###
     300
     301* New: URL detection for VK.com videos.
     302
     303### 2024-08-02 10.3.1 ###
     304
     305* New: Add current theme and version to Debug Info.
     306* Fix: PHP error when `$GLOBALS['content_width']` is not an integer. Props Gianluca.
     307
     308### 2024-07-17 10.3.0 ###
     309* WP 6.6 marked as required.
     310* New: Brings back support for Shortcode UI that was removed previously. Note that in SCUI it uses yes/no and ARVE dialog uses true/false. There may come some improvement on that later.
     311* Fix: Remove script module and WP interactivity registering as this is done by WP in 6.6 now and caused double register and ordering issues.
     312* Fix: Make sure the ARVE shortcode modal is closed when selecting a thumbnail and reopened afterwards.
     313
     314### 2024-07-06 10.2.3 ###
     315* Fix: Help toggle in new ARVE Shortcode dialog.
     316* Improved: Show message that the ARVE Button in Classic Editor needs WP 6.6 (sorry, to be released 2024-07-16).
     317
     318### 2024-06-17 10.2.2 ###
     319* Fix: Rare src mismatch errors with YouTube.
     320* Improved: Set block api version to 3.
     321* Improved: Show message that the ARVE Block needs Gutenberg active or WP 6.6.
     322
     323### 2024-06-17 10.2.1 ###
     324* Improved: Set WP required version to 6.5 in main plugin file, previously only set in readme.
     325
     326### 2024-06-15 10.2.0 ###
     327* New: Invidious URL Parameter setting for new extra privacy addon.
     328* Fix: Encoding and JSON errors related how things were stored in oembed cache.
     329* Fix: Issue activating licenses.
     330* Improved: Yet another Setting page overhaul, dropping Alpine.js for WP Interactivity API.
     331* Improved: Bring back reset buttons for settings sections.
     332* Improved: A couple of typos.
     333* Removed Shortcode UI support. (That plugin did now have a release in 5 years, the ARVE dialog is better anyway IMO)
     334* Compatibility with latest Pro addon.
     335
     336### 2024-05-27 10.1.1 ###
     337* Improved: Changes how the referrer setting works. `no-referrer` by default `strict-origin-when-cross-origin` for selected providers.
     338* Fix: Some YouTube videos (music?) do not without without allowing reverer to be send so YouTube was added to the list to allow it by default.
     339
     340### 2024-05-24 10.1.0 ###
     341* Improved: ARVE own video IDs are no longer random, this is better for SEO and other things.
     342* New: Support for [ok.ru](http://ok.ru).
     343* New: Rutube video url detection. (only embed code worked before).
     344
     345### 2024-05-23 10.0.10 ###
     346* Fix: Videos with quotes in the title/description caused json_decode syntax error.
     347
     348### 2024-05-22 10.0.9 ###
     349* Fix: Some Vimeo videos not working without cache working.
     350* Fix: src mismatch error testing.
     351* Improved: Error display.
     352
     353### 2024-05-21 10.0.8.1 ###
     354* Fix: Do not delete cache every time.
     355
     356### 2024-05-21 10.0.8 ###
     357* Fix: Some broken Vimeo videos. And possibly other bugs.
     358
     359### 2024-05-21 10.0.7 ###
     360* Fix: Lazyload and Lightbox (Pro) were not displayed when used with video files.
     361
     362### 2024-05-17 10.0.6 ###
     363
     364#### Improved
     365* Performance of oembed deletion.
     366* Move the "Delete oEmbed cache" button to the top of the Debug tab in the Settings. Press it if you have trouble with thumbnails.
     367
     368### 2024-05-15 10.0.5 ###
     369* Fix?: Initialize deletion of oembed caches later.
     370* New/Fix: Setting to allow domain restricted videos.
     371* Fix: Show Blog entries in correct order on settings page.
     372
     373### 2024-05-13 10.0.4 ###
     374* Fix: Fatal error prevention for people using outdated versions of ARVE Pro while upgrading the main plugin to version 10. Update to Pro 6.x.x is mandatory.
     375
     376### 2024-05-12 10.0.3 ###
     377* Fix: Vimeo domain restriction
     378
     379### 2024-05-12 10.0.2 ###
     380* Fix: Activation error related to script dependencies. (Elementor)
     381
     382### 2024-05-11 10.0.1 ###
     383
     384#### New ####
     385* Elementor Widget.
     386* Support for Kick.
     387* Optional ARVE button on the admin bar for quick access to the ARVE Settings page.
     388* Support for new [DSGVO and Extra Privacy](https://nextgenthemes.com/plugins/arve-privacy/) addon.
     389
     390#### Fixed ####
     391* Pasting iframe embed code in the URL/Embed Code field in the Block Editor.
     392
     393#### Improved ####
     394* Lots code changes to modernize and make the code more robust.
     395* Better way to negate WPs own aspect ratio for embed blocks.
     396* [Further privacy enhancements](https://nextgenthemes.com/privacy-enhanced-and-safer-iframes-in-arve-10-0/).
     397* New look and UX improvement to the shortcode creation dialog in Classic Editor.
     398* Loop and Mute previously were only used for (self hosted) video files. These shortcode attributes now add `loop=1&mute1` to the iframe `src` as well. Note not every provider supports them. To loop YouTube videos the video ID was also need as the `playlist=` parameter. ARVE is doing this automatically now.
     399* Sandbox setting has been replaced with 'Enable Encrypted Media'.
     400
     401### 2024-02-29 9.10.14 ###
     402* Fix: Wrongly displayed message about outdated PHP version.
     403
     404### 2024-02-29 9.10.13.1 ###
     405* Cut development files from the distribution.
     406
     407### 2024-02-29 9.10.13 ###
     408* Improved: Make Admin notice dismiss without jQuery. May fix an extremely rare issue of dismiss failing.   
     409* Tested with latest WP 6.5-nightly
     410* Plugin is no longer being tested with PHP versions below 7.2+, in theory the 9.x versions should work with PHP 5.6+.
     411
     412### 2023-09-16 9.10.12 ###
     413* Tested with latest WP 6.5-nightly
     414* Updated warning that next major version will required php 7.4+.
     415
     416### 2023-05-17 9.10.9 ###
     417* Fix: Styles not loading correctly in latest Gutenberg versions.
     418
     419### 2023-04-12 9.10.3 ###
     420* Fix: Yoast SEO compatibility and other possible issues.
     421
     422### 2023-04-11 9.10.2 ###
     423* Fix: Fatal error with WordPress 5.8.6
     424
     425### 2023-04-11 9.10.1 ###
     426* New: Warning massage that ARVE will require PHP 7.2 soon.
     427* New: Support for extra classes (Advanced section) on the ARVE block.
     428* New: You can align left/right the ARVE block now.
     429* Fix: Styles were not applied inside new Gutenberg versions.
     430* Improved: Videos are no longer playable in the Block editor, instead the block is selected when clicking on them.
     431* Improved: Some minor code changes.
     432
     433### 2023-02-05 9.9.7 ###
     434* Fix: WP Courseware Course Builder meta box was always collapsed. (Could not get the ARVE button to work for the Course Description)
     435
     436### 2023-01-25 9.9.6 ###
     437* Fix: Rumble videos not work correctly on all cases correct oembed data.
     438
     439### 2023-01-11 9.9.4 ###
     440* Fix: Invisible Shortcode creation dialog content.
     441* Fix: Hide the dialog when the WP image upload dialog is opened.
     442
     443### 2023-01-10 9.9.3 ###
     444* Fix: Issue when browser does not support `<dialog>`.
     445
     446### 2022-01-08 9.9.2 ###
     447
     448* Fix: Incompatibility with Accelerated Mobile Pages by removing the jquery-ui dependency and using a native `<dialog>` for the shortcode creator modal. This may also fix layering (z-index) issues with other plugins.
     449
     450### 2022-10-28 9.8.0 ###
     451
     452* New: TikTok support.
     453* Improved: Removed deprecated message because it broke the WP login when debug output was enabled.
     454
     455### 2022-10-14 9.7.17 ###
     456
     457* Fix: Give errors and prevent php 8.0 and 8.1 from having errors when the aspect ratio contains non integer numbers like `0.9:1` only integers are allowed like `9:10`.
     458* Improved: Update EDD updater class.
     459
     460### 2022-09-01 9.7.16 ###
     461
     462* Fix: Divi endless reload issue is hopefully finally fixed. ARVE Pro users please note this is a workaround that causes previews inside the Divi builder not have the correct data. Most noticeable thumbnails and titles. If you provide a fallback thumbnail in ARVE Pro settings it will show that while you using Divi. The plugin works correctly on the frontend. However the "Video (ARVE)" button currently does not work in Divi.
     463
     464### 2022-08-30 9.7.15 ###
     465
     466* Fix: Shortcode Creator dialog with Advanced Custom Fields plugin active.
     467
     468### 2022-08-22 9.7.14 ###
     469
     470* Improved: Simplified and reduced debug info.
     471* Improved: Adjustments for updated ARVE Pro version.
     472
     473### 2022-08-11 9.7.11 ###
     474
     475* Fix: Block not registering.
     476
     477### 2022-08-09 9.7.10 ###
     478
     479##### Improvements for Gutenberg Block ##### #####
     480* Introduces clickable area above the Block in the Editor.
     481* Fixed Thumbnail image overflowing.
     482* Removed maximal width setting when not aligned. This concept does not fit Gutenberg. Width should be controlled by setting the block to wide or full alignment.
     483* Introduces a recommended `block.json`.
     484* Some other minor improvements.
     485
     486### 2022-08-04 9.7.8 ###
     487
     488* New: Add new 'Darken' hover effect option for Pro Addon.
     489* Removed Ustream from providers (not functional bought up by IBM)
     490
     491### 2022-04-16 9.7.7 ###
     492
     493* Improved browser support to display aspect ratio correctly on older browsers.
     494
     495### 2022-02-01 9.7.4 ###
     496
     497* Fix: '[Vue warn]: Cannot find element: #arve-sc-vue' JavaScript error on admin page.
     498
     499### 2022-01-29 9.7.3 ###
     500
     501* Fix: Some internal errors generated for YouTube embeds.
     502
     503[Older Changes](https://github.com/nextgenthemes/advanced-responsive-video-embedder/blob/master/changelog-2021.md)
  • advanced-responsive-video-embedder/trunk/vendor/autoload.php

    r3338484 r3338557  
    2323require_once __DIR__ . '/composer/autoload_real.php';
    2424
    25 return ComposerAutoloaderInit5aa486b2e15e5a77b655cb1dccf2d827::getLoader();
     25return ComposerAutoloaderInitfa4ebaf22f08a8b822c80bc4efcf7610::getLoader();
  • advanced-responsive-video-embedder/trunk/vendor/autoload_packages.php

    r3338484 r3338557  
    66 */
    77
    8 namespace Automattic\Jetpack\Autoloader\jp5aa486b2e15e5a77b655cb1dccf2d827\al5_0_9;
     8namespace Automattic\Jetpack\Autoloader\jpfa4ebaf22f08a8b822c80bc4efcf7610\al5_0_9;
    99
    1010 // phpcs:ignore
  • advanced-responsive-video-embedder/trunk/vendor/composer/autoload_real.php

    r3338484 r3338557  
    33// autoload_real.php @generated by Composer
    44
    5 class ComposerAutoloaderInit5aa486b2e15e5a77b655cb1dccf2d827
     5class ComposerAutoloaderInitfa4ebaf22f08a8b822c80bc4efcf7610
    66{
    77    private static $loader;
     
    2525        require __DIR__ . '/platform_check.php';
    2626
    27         spl_autoload_register(array('ComposerAutoloaderInit5aa486b2e15e5a77b655cb1dccf2d827', 'loadClassLoader'), true, true);
     27        spl_autoload_register(array('ComposerAutoloaderInitfa4ebaf22f08a8b822c80bc4efcf7610', 'loadClassLoader'), true, true);
    2828        self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
    29         spl_autoload_unregister(array('ComposerAutoloaderInit5aa486b2e15e5a77b655cb1dccf2d827', 'loadClassLoader'));
     29        spl_autoload_unregister(array('ComposerAutoloaderInitfa4ebaf22f08a8b822c80bc4efcf7610', 'loadClassLoader'));
    3030
    3131        require __DIR__ . '/autoload_static.php';
    32         call_user_func(\Composer\Autoload\ComposerStaticInit5aa486b2e15e5a77b655cb1dccf2d827::getInitializer($loader));
     32        call_user_func(\Composer\Autoload\ComposerStaticInitfa4ebaf22f08a8b822c80bc4efcf7610::getInitializer($loader));
    3333
    3434        $loader->register(true);
    3535
    36         $filesToLoad = \Composer\Autoload\ComposerStaticInit5aa486b2e15e5a77b655cb1dccf2d827::$files;
     36        $filesToLoad = \Composer\Autoload\ComposerStaticInitfa4ebaf22f08a8b822c80bc4efcf7610::$files;
    3737        $requireFile = \Closure::bind(static function ($fileIdentifier, $file) {
    3838            if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
  • advanced-responsive-video-embedder/trunk/vendor/composer/autoload_static.php

    r3338484 r3338557  
    55namespace Composer\Autoload;
    66
    7 class ComposerStaticInit5aa486b2e15e5a77b655cb1dccf2d827
     7class ComposerStaticInitfa4ebaf22f08a8b822c80bc4efcf7610
    88{
    99    public static $files = array (
     
    3737    {
    3838        return \Closure::bind(function () use ($loader) {
    39             $loader->prefixLengthsPsr4 = ComposerStaticInit5aa486b2e15e5a77b655cb1dccf2d827::$prefixLengthsPsr4;
    40             $loader->prefixDirsPsr4 = ComposerStaticInit5aa486b2e15e5a77b655cb1dccf2d827::$prefixDirsPsr4;
    41             $loader->classMap = ComposerStaticInit5aa486b2e15e5a77b655cb1dccf2d827::$classMap;
     39            $loader->prefixLengthsPsr4 = ComposerStaticInitfa4ebaf22f08a8b822c80bc4efcf7610::$prefixLengthsPsr4;
     40            $loader->prefixDirsPsr4 = ComposerStaticInitfa4ebaf22f08a8b822c80bc4efcf7610::$prefixDirsPsr4;
     41            $loader->classMap = ComposerStaticInitfa4ebaf22f08a8b822c80bc4efcf7610::$classMap;
    4242
    4343        }, null, ClassLoader::class);
  • advanced-responsive-video-embedder/trunk/vendor/composer/installed.json

    r3338484 r3338557  
    7373            "version": "dev-master",
    7474            "version_normalized": "dev-master",
    75             "source": {
    76                 "type": "git",
    77                 "url": "https://github.com/nextgenthemes/wp-settings.git",
     75            "dist": {
     76                "type": "path",
     77                "url": "../../../../../../dev/composer-packages/wp-settings",
    7878                "reference": "4e26cd875e2ba18f6f1bb523ef51d01ec7f7869d"
    79             },
    80             "dist": {
    81                 "type": "zip",
    82                 "url": "https://api.github.com/repos/nextgenthemes/wp-settings/zipball/4e26cd875e2ba18f6f1bb523ef51d01ec7f7869d",
    83                 "reference": "4e26cd875e2ba18f6f1bb523ef51d01ec7f7869d",
    84                 "shasum": ""
    8579            },
    8680            "require": {
    8781                "php": ">=7.4"
    8882            },
    89             "time": "2025-08-03T12:18:07+00:00",
    90             "default-branch": true,
    9183            "type": "library",
    9284            "installation-source": "dist",
     
    9688                ]
    9789            },
    98             "notification-url": "https://packagist.org/downloads/",
    9990            "license": [
    10091                "GPL-3.0"
     
    10596                }
    10697            ],
    107             "support": {
    108                 "source": "https://github.com/nextgenthemes/wp-settings/tree/master"
     98            "transport-options": {
     99                "symlink": false,
     100                "relative": true
    109101            },
    110102            "install-path": "../nextgenthemes/wp-settings"
  • advanced-responsive-video-embedder/trunk/vendor/composer/installed.php

    r3338484 r3338557  
    11<?php return array(
    22    'root' => array(
    3         'name' => 'nextgenthemes/tweakmaster',
     3        'name' => 'nextgenthemes/advanced-responsive-video-embedder',
    44        'pretty_version' => 'dev-master',
    55        'version' => 'dev-master',
    6         'reference' => '9374cd33520cc47808fb8b87df216de610813745',
     6        'reference' => 'c7029e0034833051a95269f6f04697076b1969f4',
    77        'type' => 'wordpress-plugin',
    88        'install_path' => __DIR__ . '/../../',
     
    2020            'dev_requirement' => true,
    2121        ),
    22         'nextgenthemes/tweakmaster' => array(
     22        'nextgenthemes/advanced-responsive-video-embedder' => array(
    2323            'pretty_version' => 'dev-master',
    2424            'version' => 'dev-master',
    25             'reference' => '9374cd33520cc47808fb8b87df216de610813745',
     25            'reference' => 'c7029e0034833051a95269f6f04697076b1969f4',
    2626            'type' => 'wordpress-plugin',
    2727            'install_path' => __DIR__ . '/../../',
     
    3535            'type' => 'library',
    3636            'install_path' => __DIR__ . '/../nextgenthemes/wp-settings',
    37             'aliases' => array(
    38                 0 => '9999999-dev',
    39             ),
     37            'aliases' => array(),
    4038            'dev_requirement' => true,
    4139        ),
  • advanced-responsive-video-embedder/trunk/vendor/jetpack-autoloader/class-autoloader-handler.php

    r3338484 r3338557  
    66 */
    77
    8 namespace Automattic\Jetpack\Autoloader\jp5aa486b2e15e5a77b655cb1dccf2d827\al5_0_9;
     8namespace Automattic\Jetpack\Autoloader\jpfa4ebaf22f08a8b822c80bc4efcf7610\al5_0_9;
    99
    1010 // phpcs:ignore
  • advanced-responsive-video-embedder/trunk/vendor/jetpack-autoloader/class-autoloader-locator.php

    r3338484 r3338557  
    66 */
    77
    8 namespace Automattic\Jetpack\Autoloader\jp5aa486b2e15e5a77b655cb1dccf2d827\al5_0_9;
     8namespace Automattic\Jetpack\Autoloader\jpfa4ebaf22f08a8b822c80bc4efcf7610\al5_0_9;
    99
    1010 // phpcs:ignore
  • advanced-responsive-video-embedder/trunk/vendor/jetpack-autoloader/class-autoloader.php

    r3338484 r3338557  
    66 */
    77
    8 namespace Automattic\Jetpack\Autoloader\jp5aa486b2e15e5a77b655cb1dccf2d827\al5_0_9;
     8namespace Automattic\Jetpack\Autoloader\jpfa4ebaf22f08a8b822c80bc4efcf7610\al5_0_9;
    99
    1010 // phpcs:ignore
  • advanced-responsive-video-embedder/trunk/vendor/jetpack-autoloader/class-container.php

    r3338484 r3338557  
    66 */
    77
    8 namespace Automattic\Jetpack\Autoloader\jp5aa486b2e15e5a77b655cb1dccf2d827\al5_0_9;
     8namespace Automattic\Jetpack\Autoloader\jpfa4ebaf22f08a8b822c80bc4efcf7610\al5_0_9;
    99
    1010 // phpcs:ignore
  • advanced-responsive-video-embedder/trunk/vendor/jetpack-autoloader/class-hook-manager.php

    r3338484 r3338557  
    66 */
    77
    8 namespace Automattic\Jetpack\Autoloader\jp5aa486b2e15e5a77b655cb1dccf2d827\al5_0_9;
     8namespace Automattic\Jetpack\Autoloader\jpfa4ebaf22f08a8b822c80bc4efcf7610\al5_0_9;
    99
    1010 // phpcs:ignore
  • advanced-responsive-video-embedder/trunk/vendor/jetpack-autoloader/class-latest-autoloader-guard.php

    r3338484 r3338557  
    66 */
    77
    8 namespace Automattic\Jetpack\Autoloader\jp5aa486b2e15e5a77b655cb1dccf2d827\al5_0_9;
     8namespace Automattic\Jetpack\Autoloader\jpfa4ebaf22f08a8b822c80bc4efcf7610\al5_0_9;
    99
    1010 // phpcs:ignore
  • advanced-responsive-video-embedder/trunk/vendor/jetpack-autoloader/class-manifest-reader.php

    r3338484 r3338557  
    66 */
    77
    8 namespace Automattic\Jetpack\Autoloader\jp5aa486b2e15e5a77b655cb1dccf2d827\al5_0_9;
     8namespace Automattic\Jetpack\Autoloader\jpfa4ebaf22f08a8b822c80bc4efcf7610\al5_0_9;
    99
    1010 // phpcs:ignore
  • advanced-responsive-video-embedder/trunk/vendor/jetpack-autoloader/class-path-processor.php

    r3338484 r3338557  
    66 */
    77
    8 namespace Automattic\Jetpack\Autoloader\jp5aa486b2e15e5a77b655cb1dccf2d827\al5_0_9;
     8namespace Automattic\Jetpack\Autoloader\jpfa4ebaf22f08a8b822c80bc4efcf7610\al5_0_9;
    99
    1010 // phpcs:ignore
  • advanced-responsive-video-embedder/trunk/vendor/jetpack-autoloader/class-php-autoloader.php

    r3338484 r3338557  
    66 */
    77
    8 namespace Automattic\Jetpack\Autoloader\jp5aa486b2e15e5a77b655cb1dccf2d827\al5_0_9;
     8namespace Automattic\Jetpack\Autoloader\jpfa4ebaf22f08a8b822c80bc4efcf7610\al5_0_9;
    99
    1010 // phpcs:ignore
  • advanced-responsive-video-embedder/trunk/vendor/jetpack-autoloader/class-plugin-locator.php

    r3338484 r3338557  
    66 */
    77
    8 namespace Automattic\Jetpack\Autoloader\jp5aa486b2e15e5a77b655cb1dccf2d827\al5_0_9;
     8namespace Automattic\Jetpack\Autoloader\jpfa4ebaf22f08a8b822c80bc4efcf7610\al5_0_9;
    99
    1010 // phpcs:ignore
  • advanced-responsive-video-embedder/trunk/vendor/jetpack-autoloader/class-plugins-handler.php

    r3338484 r3338557  
    66 */
    77
    8 namespace Automattic\Jetpack\Autoloader\jp5aa486b2e15e5a77b655cb1dccf2d827\al5_0_9;
     8namespace Automattic\Jetpack\Autoloader\jpfa4ebaf22f08a8b822c80bc4efcf7610\al5_0_9;
    99
    1010 // phpcs:ignore
  • advanced-responsive-video-embedder/trunk/vendor/jetpack-autoloader/class-shutdown-handler.php

    r3338484 r3338557  
    66 */
    77
    8 namespace Automattic\Jetpack\Autoloader\jp5aa486b2e15e5a77b655cb1dccf2d827\al5_0_9;
     8namespace Automattic\Jetpack\Autoloader\jpfa4ebaf22f08a8b822c80bc4efcf7610\al5_0_9;
    99
    1010 // phpcs:ignore
  • advanced-responsive-video-embedder/trunk/vendor/jetpack-autoloader/class-version-loader.php

    r3338484 r3338557  
    66 */
    77
    8 namespace Automattic\Jetpack\Autoloader\jp5aa486b2e15e5a77b655cb1dccf2d827\al5_0_9;
     8namespace Automattic\Jetpack\Autoloader\jpfa4ebaf22f08a8b822c80bc4efcf7610\al5_0_9;
    99
    1010 // phpcs:ignore
  • advanced-responsive-video-embedder/trunk/vendor/jetpack-autoloader/class-version-selector.php

    r3338484 r3338557  
    66 */
    77
    8 namespace Automattic\Jetpack\Autoloader\jp5aa486b2e15e5a77b655cb1dccf2d827\al5_0_9;
     8namespace Automattic\Jetpack\Autoloader\jpfa4ebaf22f08a8b822c80bc4efcf7610\al5_0_9;
    99
    1010 // phpcs:ignore
Note: See TracChangeset for help on using the changeset viewer.