Plugin Directory

Changeset 3338484


Ignore:
Timestamp:
08/03/2025 03:36:32 PM (8 months ago)
Author:
nico23
Message:

Update plugin to version 1.0.5 with NextgenThemes WordPress Plugin Deploy

Location:
advanced-responsive-video-embedder
Files:
89 added
49 deleted
58 edited
1 copied

Legend:

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

    r3203116 r3338484  
    22    "$schema": "https://playground.wordpress.net/blueprint-schema.json",
    33    "preferredVersions": {
    4         "php": "8.2",
     4        "php": "8.3",
    55        "wp": "latest"
    66    },
    77    "siteOptions": {
    8         "blogname": "ARVE Testing Playground",
    9         "blogdescription": "Test ARVE",
     8        "blogname": "Tweakmaster Testing Playground",
     9        "blogdescription": "Test Tweakmaster",
    1010        "permalink_structure": "/%postname%/"
    1111    },
    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     ]
     12    "landingPage": "\/wp-admin\/post.php?options-general.php?page=nextgenthemes_tweakmaster",
     13    "login": true
    3114}
  • advanced-responsive-video-embedder/tags/1.0.5/composer.json

    r3338450 r3338484  
    11{
    2     "name": "nextgenthemes/advanced-responsive-video-embedder",
    3     "description": "ARVE Advanced Responsive Video Embedder",
     2    "name": "nextgenthemes/tweakmaster",
    43    "type": "wordpress-plugin",
    54    "license": "GPL-3.0",
     5    "description": "TweakMaster - A collection or performance, privacy, security and other tweaks..",
    66    "authors": [
    77        {
    8             "name": "Nicolas Jonas",
    9             "homepage": "https://nextgenthemes.com",
    10             "role": "Developer"
     8            "name": "Nicolas Jonas"
    119        }
    1210    ],
     
    1513    },
    1614    "require-dev": {
    17         "nextgenthemes/wp-settings": "@dev",
    18         "automattic/jetpack-autoloader": "^v5.0.2"
     15        "automattic/jetpack-autoloader": "^v5.0.3",
     16        "nextgenthemes/wp-settings": "@dev"
    1917    },
    2018    "config": {
     
    2725        }
    2826    },
    29     "repositories": {
    30         "nextgenthemes/wp-settings": {
    31             "type": "path",
    32             "url": "../../../../../../dev/composer-packages/wp-settings",
    33             "options": {
    34                 "symlink": false
    35             }
    36         }
    37     },
    3827    "scripts": {
    3928        "build": [
    40             "./bin/block-json",
    4129            "./bin/build-readme",
    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"
     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"
    5234        ]
    5335    }
  • advanced-responsive-video-embedder/tags/1.0.5/composer.lock

    r3338450 r3338484  
    55        "This file is @generated automatically"
    66    ],
    7     "content-hash": "91159bc166283f1570929cfd93e02a88",
     7    "content-hash": "dc4a6d1b65d3b499ca79a68a51744651",
    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",
     81                "reference": "4e26cd875e2ba18f6f1bb523ef51d01ec7f7869d"
     82            },
    7883            "dist": {
    79                 "type": "path",
    80                 "url": "../../../../../../dev/composer-packages/wp-settings",
    81                 "reference": "4e26cd875e2ba18f6f1bb523ef51d01ec7f7869d"
     84                "type": "zip",
     85                "url": "https://api.github.com/repos/nextgenthemes/wp-settings/zipball/4e26cd875e2ba18f6f1bb523ef51d01ec7f7869d",
     86                "reference": "4e26cd875e2ba18f6f1bb523ef51d01ec7f7869d",
     87                "shasum": ""
    8288            },
    8389            "require": {
    8490                "php": ">=7.4"
    8591            },
     92            "default-branch": true,
    8693            "type": "library",
    8794            "autoload": {
     
    9097                ]
    9198            },
     99            "notification-url": "https://packagist.org/downloads/",
    92100            "license": [
    93101                "GPL-3.0"
     
    98106                }
    99107            ],
    100             "transport-options": {
    101                 "symlink": false,
    102                 "relative": true
    103             }
     108            "support": {
     109                "source": "https://github.com/nextgenthemes/wp-settings/tree/master"
     110            },
     111            "time": "2025-08-03T12:18:07+00:00"
    104112        }
    105113    ],
  • advanced-responsive-video-embedder/tags/1.0.5/license.txt

    r2484697 r3338484  
     1Nicolas Jonas
     2https://nextgenthemes.com
     3
    14                    GNU GENERAL PUBLIC LICENSE
    25                       Version 3, 29 June 2007
    36
    4  Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
     7 Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
    58 Everyone is permitted to copy and distribute verbatim copies
    69 of this license document, but changing it is not allowed.
     
    646649
    647650    You should have received a copy of the GNU General Public License
    648     along with this program.  If not, see <http://www.gnu.org/licenses/>.
     651    along with this program.  If not, see <https://www.gnu.org/licenses/>.
    649652
    650653Also add information on how to contact you by electronic and paper mail.
     
    665668if any, to sign a "copyright disclaimer" for the program, if necessary.
    666669For more information on this, and how to apply and follow the GNU GPL, see
    667 <http://www.gnu.org/licenses/>.
     670<https://www.gnu.org/licenses/>.
    668671
    669672  The GNU General Public License does not permit incorporating your program
     
    672675the library.  If this is what you want to do, use the GNU Lesser General
    673676Public License instead of this License.  But first, please read
    674 <http://www.gnu.org/philosophy/why-not-lgpl.html>.
     677<https://www.gnu.org/licenses/why-not-lgpl.html>.
  • advanced-responsive-video-embedder/tags/1.0.5/php/fn-settings.php

    r3252812 r3338484  
    33declare(strict_types = 1);
    44
    5 namespace Nextgenthemes\ARVE;
     5namespace Nextgenthemes\TweakMaster;
    66
    77use Nextgenthemes\WP\Settings;
    88use Nextgenthemes\WP\SettingsData;
    9 use function Nextgenthemes\WP\nextgenthemes_settings_instance;
    109
    1110function settings_instance(): Settings {
     
    1817            array(
    1918                '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,
    2519                'base_url'            => plugins_url( '', PLUGIN_FILE ),
    2620                '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                ),
    2735            )
    2836        );
     
    4048}
    4149
    42 function settings_tabs(): array {
    43 
    44     return array(
    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' )
     50function 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
     65function general_settings(): array {
     66    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'
    54139            ),
    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         ],
    90     );
    91 }
    92 
    93 function init_nextgenthemes_settings(): void {
    94 
    95     nextgenthemes_settings_instance(
    96         plugins_url( '', PLUGIN_FILE ),
    97         PLUGIN_DIR
    98     );
    99 }
    100 
    101 function 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             }
     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        ),
     216    );
     217}
     218
     219function 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        ),
     259    );
     260}
     261
     262function 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
     288function 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
     328function 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
     366function 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
     395function 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        );
     408    }
     409
     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    );
     418
     419    return $settings;
     420}
     421
     422function 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    );
     438}
     439
     440function option_is_set( string $key ): bool {
     441
     442    $default_option = default_options()[ $key ];
     443
     444    return options()[ $key ] !== $default_option;
     445}
     446
     447function any_option_is_set( array $options_keys ): bool {
     448
     449    foreach ( $options_keys as $key ) {
     450        if ( option_is_set( $key ) ) {
     451            return true;
    116452        }
    117453    }
    118454
    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;
     455    return false;
     456}
     457
     458/**
     459 * Get post types which support revisions.
     460 */
     461function 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;
    130478    }
    131479
    132     return $settings;
    133 }
    134 
    135 function 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     }
    153 }
    154 
    155 function 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'];
    171         }
    172     }
    173 
    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;
    866 }
     480    return $revision_post_types;
     481}
  • advanced-responsive-video-embedder/tags/1.0.5/php/init.php

    r3338450 r3338484  
    33declare(strict_types = 1);
    44
    5 namespace Nextgenthemes\ARVE;
     5namespace Nextgenthemes\TweakMaster;
    66
    7 // Stop outdated addons from executing
    8 remove_action( 'plugins_loaded', 'Nextgenthemes\ARVE\Pro\init', 15 );
    9 remove_action( 'plugins_loaded', 'Nextgenthemes\ARVE\RandomVideo\init', 15 );
    10 remove_action( 'plugins_loaded', 'Nextgenthemes\ARVE\Privacy\init', 16 );
    11 
    12 add_action( 'init', __NAMESPACE__ . '\init', 9 );
     7add_action( 'init', __NAMESPACE__ . '\init_public', 9 );
    138add_action( 'admin_init', __NAMESPACE__ . '\init_admin', 9 );
    149
    15 function init(): void {
     10function init_public(): void {
    1611
    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';
     12    require_once __DIR__ . '/fn-settings.php';
    2913
    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 );
     14    $settings = settings_data();
     15    $settings->remove( 'scroll-progress-bar' ); // uses options api
    3316
    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' );
     17    foreach ( $settings->get_all() as $key => $setting ) {
    4818
    49     foreach ( ADDON_NAMES as $addon_name ) {
    50         maybe_init_addon( $addon_name );
     19        if ( 'boolean' === $setting->type && option_is_set( $key ) ) {
     20            require_once TWEAKS_DIR_SA . "/$key.php";
     21        }
    5122    }
     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' );
    5237}
    5338
    54 function maybe_init_addon( string $name ): void {
     39function require_file_if_option_is_set( string $key ): void {
    5540
    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();
     41    if ( option_is_set( $key ) ) {
     42        require_once TWEAKS_DIR . "/$key.php";
    6443    }
    6544}
    6645
    6746function init_admin(): void {
    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' );
     47    add_action( 'nextgenthemes/tweakmaster/admin/settings/sidebar', __NAMESPACE__ . '\code_info' );
     48    add_action( 'nextgenthemes/tweakmaster/admin/settings/content', __NAMESPACE__ . '\revisions_tab_info' );
    8949}
    9050
    91 register_uninstall_hook( PLUGIN_FILE, __NAMESPACE__ . '\uninstall' );
     51function code_info(): void {
    9252
    93 function uninstall(): void {
     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
     75}
    9476
    95     global $wpdb;
     77function revisions_tab_info(): void {
    9678
    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     }
     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
    10086}
  • advanced-responsive-video-embedder/tags/1.0.5/readme.md

    r3089848 r3338484  
    1 # Git repository for Advanced Responsive Video Embedder (ARVE)
     1If you just want just use the plugin its on [wordpress.org](https://wordpress.org/tweakmaster).
    22
    3 #### Level up your basic video embeds! Advanced features, privacy. Use URLs, Shortcodes or Blocks to customize videos to your needs.
     3# Contributing is very easy
    44
    5 [ARVE WordPress Plugin][1] is free on [wp.org][1]. Look there for the feature set.
     51. 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.
     61. 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.
     71. 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.
    68
    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.
     9# Advanced usage of standalone tweaks as mu-plugins
    810
    9 Feel free to file issues with the *code*, for support please file a ticket on [nextgenthemes.com/support/](https://nextgenthemes.com/support/)
     11If 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.
    1012
    11 Code contributions are welcome.
     13To 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.
    1214
    13 Paid addons that finance this project are available:
     15If you have WP CLI you can use these command to copy the files directly from Github to your WordPress site.
    1416
    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)
     17```sh
     18# In case you do not have a mu-plugins folder.
     19wp eval "if ( ! file_exists(WP_CONTENT_DIR . '/mu-plugins' ) ) { mkdir(WP_CONTENT_DIR . '/mu-plugins', 0755, true); }"
    1920
    20 If 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
     21# Replace the filename with any file you find in https://github.com/nextgenthemes/tweakmaster/tree/master/php/tweaks-standalone/
     22wp 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```
  • advanced-responsive-video-embedder/tags/1.0.5/readme.txt

    r3338450 r3338484  
    1 === Advanced Responsive Video Embedder for Rumble, Odysee, YouTube, Vimeo, Kick ... ===
     1=== TweakMaster ===
    22Contributors: nico23
    3 Donate link: https://nextgenthemes.com/donate/
    4 Tags: embed, video, lazyload, lightbox, rumble
     3Tags: performance, privacy, security, tweaks, lightweight
    54Requires at least: 6.6
    65Tested up to: 6.8
    76Requires PHP: 7.4
    8 Stable tag: 10.6.13
    9 License: GPL-3.0
     7Stable tag: 1.0.5
     8License: GPLv3
    109License URI: https://www.gnu.org/licenses/gpl-3.0.html
     10Donate link: https://nextgenthemes.com/donate
    1111
    12 Level up your basic video embeds! Advanced features, privacy. Use URLs, Shortcodes or Blocks to customize videos to your needs.
     12A collection of performance, privacy, security, and other tweaks. Minimalistic lightweight plugin.
    1313
    14 ## Description ##
     14== Description ==
     15WP 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.
    1516
    16 The best WordPress plugin for videos? Supports close to everything you can imagine, still keeping it easy & simple.
     17This plugins handles tweaks in a minimalistic way. Only files that contains tweaks that you activate are loaded!
    1718
    18 It 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= Tweaks =
    1920
    20 [youtube https://www.youtube.com/watch?v=m6mkA6Zr1vY ]
     21* **Remove version query strings**<br>
     22Removes <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>
     27Disables 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>
     29Replace "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>
     31Move (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>
     34Set the number of days to keep posts in the trash. Default is 30 days.
     35* **Scroll progress bar**
     36* **Scroll progress color**<br>
     37And 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>
     46Requires a hard refresh of the page to take effect.
     47* **Remove Asset Attributes**
     48* **Disable Non Production Emails**<br>
     49If 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>
     52WP 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>
     54Remove EXIF data from uploaded images.
     55* **Convert jpeg to avif**<br>
     56Convert uploaded jpeg to avif
     57* **Clean upload filenames**<br>
     58Sanitize media filenames to remove non-latin special characters and accents
     59* **Avif compression**<br>
     60Default is 82
     61* **Jpeg compression**<br>
     62Default is 82
     63* **Webp compression**<br>
     64Default is 86
     65* **Limit ALL revisions**<br>
     66Limit 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>
     69Allow XML-RPC only from Jetpack IPs
     70* **Remove WP version**<br>
     71Remove <code>WordPress/6.7.1; https://example.org</code> from html head
     72* **Dequeue jQuery Migrate**<br>
     73Dequeue 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>
     75Optimize 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>
     77Enable relative URLs on the frontend. This may break your site. Use at your own risk!
     78* **Disable Contact Form 7 CSS**<br>
     79Sets <code>wpcf7_load_css</code> filter to <code>false</code>
     80* **Disable Contact Form 7 Autop**<br>
     81Sets <code>wpcf7_autop_or_not</code> filter to <code>false</code>
     82* **Enable Jetpack offline mode**
     83* **Enable maintenance mode**
     84* **Enable duplicate post**
    2185
    22 ### Features ###
    2386
    24 #### Classic Editor ####
     87= Contribute to add quality tweaks to the plugin reviewed by me =
    2588
    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.
     89Unlike 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.
    2990
    30 #### Block Editor (Gutenberg) ####
     91It is very easy to contribute to the plugin. Check out the [Github Readme](https://github.com/nextgenthemes/tweakmaster/blob/master/readme.md).
    3192
    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.
     93If you have questions on adding a more complex tweak please feel free to ask.
    3494
    35 #### Elementor ####
     95== Screenshots ==
     96(Maybe later)
    3697
    37 * Provides a widget for the entire feature set of ARVE inside Elementor
     98== Changelog ==
    3899
    39 #### All ####
     100= 2025-03-29 - 1.0.3
     101* Improved: sanitize, validate correctly, fix prefixes ...
     102* Removed update disable tweak, not allowed on wp.org?
    40103
    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.
     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.
    58109
    59 #### Supported Providers ####
     110= 2025-03-15 - 1.0.1-beta1 =
     111* New: Disable non production email tweak.
    60112
    61 [All providers with iframe embed codes](https://nextgenthemes.com/plugins/arve/documentation/#general-iframe-embedding)
    62 Alugha, 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 ####
    66 I’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…  ####
    69 Have 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 
    73 For 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 ####
    76 So 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 ####
    79 I 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 
    87 This 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 
    112 Keep 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 
    121 Display random video from:
    122 
    123 *  YouTube Playlist
    124 *  Vimeo Showcase
    125 *  Comma separated list of video URLs
    126 
    127 ### [ARVE AMP][29] ###
    128 
    129 When 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 
    155 Please 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 
    159 Best 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 
    163 1. Go though the purchase process on [nextgenthemes.com](https://nextgenthemes.com/plugins/arve-pro/)
    164 1. 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.
    165 1. 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 
    169 You may need to adjust your 'Maximal Width' setting to your liking.
    170 
    171 You 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 
    175 Feel free to ask.
    176 
    177 ### How do I embed videos from a unlisted providers / iframes? ###
    178 
    179 This 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 
    183 Please read the [official documentation](https://wordpress.org/support/article/managing-plugins/#installing-plugins) for that.
    184 
    185 ## Screenshots ##
    186 
    187 1. Block Editor Example
    188 2. Shortcode creation dialog in Classic Editor
    189 3. Main Options
    190 4. Pro Options
    191 5. Video Files Options
    192 6. 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)
     113= 2025-03-xx - 1.0.0-beta1 =
     114* Initial release.
  • advanced-responsive-video-embedder/tags/1.0.5/vendor/autoload.php

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

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

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

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

    r3338450 r3338484  
    7373            "version": "dev-master",
    7474            "version_normalized": "dev-master",
     75            "source": {
     76                "type": "git",
     77                "url": "https://github.com/nextgenthemes/wp-settings.git",
     78                "reference": "4e26cd875e2ba18f6f1bb523ef51d01ec7f7869d"
     79            },
    7580            "dist": {
    76                 "type": "path",
    77                 "url": "../../../../../../dev/composer-packages/wp-settings",
    78                 "reference": "4e26cd875e2ba18f6f1bb523ef51d01ec7f7869d"
     81                "type": "zip",
     82                "url": "https://api.github.com/repos/nextgenthemes/wp-settings/zipball/4e26cd875e2ba18f6f1bb523ef51d01ec7f7869d",
     83                "reference": "4e26cd875e2ba18f6f1bb523ef51d01ec7f7869d",
     84                "shasum": ""
    7985            },
    8086            "require": {
    8187                "php": ">=7.4"
    8288            },
     89            "time": "2025-08-03T12:18:07+00:00",
     90            "default-branch": true,
    8391            "type": "library",
    8492            "installation-source": "dist",
     
    8896                ]
    8997            },
     98            "notification-url": "https://packagist.org/downloads/",
    9099            "license": [
    91100                "GPL-3.0"
     
    96105                }
    97106            ],
    98             "transport-options": {
    99                 "symlink": false,
    100                 "relative": true
     107            "support": {
     108                "source": "https://github.com/nextgenthemes/wp-settings/tree/master"
    101109            },
    102110            "install-path": "../nextgenthemes/wp-settings"
  • advanced-responsive-video-embedder/tags/1.0.5/vendor/composer/installed.php

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    r3338450 r3338484  
    11{
    2     "name": "nextgenthemes/advanced-responsive-video-embedder",
    3     "description": "ARVE Advanced Responsive Video Embedder",
     2    "name": "nextgenthemes/tweakmaster",
    43    "type": "wordpress-plugin",
    54    "license": "GPL-3.0",
     5    "description": "TweakMaster - A collection or performance, privacy, security and other tweaks..",
    66    "authors": [
    77        {
    8             "name": "Nicolas Jonas",
    9             "homepage": "https://nextgenthemes.com",
    10             "role": "Developer"
     8            "name": "Nicolas Jonas"
    119        }
    1210    ],
     
    1513    },
    1614    "require-dev": {
    17         "nextgenthemes/wp-settings": "@dev",
    18         "automattic/jetpack-autoloader": "^v5.0.2"
     15        "automattic/jetpack-autoloader": "^v5.0.3",
     16        "nextgenthemes/wp-settings": "@dev"
    1917    },
    2018    "config": {
     
    2725        }
    2826    },
    29     "repositories": {
    30         "nextgenthemes/wp-settings": {
    31             "type": "path",
    32             "url": "../../../../../../dev/composer-packages/wp-settings",
    33             "options": {
    34                 "symlink": false
    35             }
    36         }
    37     },
    3827    "scripts": {
    3928        "build": [
    40             "./bin/block-json",
    4129            "./bin/build-readme",
    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"
     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"
    5234        ]
    5335    }
  • advanced-responsive-video-embedder/trunk/composer.lock

    r3338450 r3338484  
    55        "This file is @generated automatically"
    66    ],
    7     "content-hash": "91159bc166283f1570929cfd93e02a88",
     7    "content-hash": "dc4a6d1b65d3b499ca79a68a51744651",
    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",
     81                "reference": "4e26cd875e2ba18f6f1bb523ef51d01ec7f7869d"
     82            },
    7883            "dist": {
    79                 "type": "path",
    80                 "url": "../../../../../../dev/composer-packages/wp-settings",
    81                 "reference": "4e26cd875e2ba18f6f1bb523ef51d01ec7f7869d"
     84                "type": "zip",
     85                "url": "https://api.github.com/repos/nextgenthemes/wp-settings/zipball/4e26cd875e2ba18f6f1bb523ef51d01ec7f7869d",
     86                "reference": "4e26cd875e2ba18f6f1bb523ef51d01ec7f7869d",
     87                "shasum": ""
    8288            },
    8389            "require": {
    8490                "php": ">=7.4"
    8591            },
     92            "default-branch": true,
    8693            "type": "library",
    8794            "autoload": {
     
    9097                ]
    9198            },
     99            "notification-url": "https://packagist.org/downloads/",
    92100            "license": [
    93101                "GPL-3.0"
     
    98106                }
    99107            ],
    100             "transport-options": {
    101                 "symlink": false,
    102                 "relative": true
    103             }
     108            "support": {
     109                "source": "https://github.com/nextgenthemes/wp-settings/tree/master"
     110            },
     111            "time": "2025-08-03T12:18:07+00:00"
    104112        }
    105113    ],
  • advanced-responsive-video-embedder/trunk/license.txt

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

    r3252812 r3338484  
    33declare(strict_types = 1);
    44
    5 namespace Nextgenthemes\ARVE;
     5namespace Nextgenthemes\TweakMaster;
    66
    77use Nextgenthemes\WP\Settings;
    88use Nextgenthemes\WP\SettingsData;
    9 use function Nextgenthemes\WP\nextgenthemes_settings_instance;
    109
    1110function settings_instance(): Settings {
     
    1817            array(
    1918                '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,
    2519                'base_url'            => plugins_url( '', PLUGIN_FILE ),
    2620                '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                ),
    2735            )
    2836        );
     
    4048}
    4149
    42 function settings_tabs(): array {
    43 
    44     return array(
    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' )
     50function 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
     65function general_settings(): array {
     66    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'
    54139            ),
    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         ],
    90     );
    91 }
    92 
    93 function init_nextgenthemes_settings(): void {
    94 
    95     nextgenthemes_settings_instance(
    96         plugins_url( '', PLUGIN_FILE ),
    97         PLUGIN_DIR
    98     );
    99 }
    100 
    101 function 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             }
     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        ),
     216    );
     217}
     218
     219function 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        ),
     259    );
     260}
     261
     262function 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
     288function 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
     328function 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
     366function 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
     395function 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        );
     408    }
     409
     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    );
     418
     419    return $settings;
     420}
     421
     422function 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    );
     438}
     439
     440function option_is_set( string $key ): bool {
     441
     442    $default_option = default_options()[ $key ];
     443
     444    return options()[ $key ] !== $default_option;
     445}
     446
     447function any_option_is_set( array $options_keys ): bool {
     448
     449    foreach ( $options_keys as $key ) {
     450        if ( option_is_set( $key ) ) {
     451            return true;
    116452        }
    117453    }
    118454
    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;
     455    return false;
     456}
     457
     458/**
     459 * Get post types which support revisions.
     460 */
     461function 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;
    130478    }
    131479
    132     return $settings;
    133 }
    134 
    135 function 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     }
    153 }
    154 
    155 function 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'];
    171         }
    172     }
    173 
    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;
    866 }
     480    return $revision_post_types;
     481}
  • advanced-responsive-video-embedder/trunk/php/init.php

    r3338450 r3338484  
    33declare(strict_types = 1);
    44
    5 namespace Nextgenthemes\ARVE;
     5namespace Nextgenthemes\TweakMaster;
    66
    7 // Stop outdated addons from executing
    8 remove_action( 'plugins_loaded', 'Nextgenthemes\ARVE\Pro\init', 15 );
    9 remove_action( 'plugins_loaded', 'Nextgenthemes\ARVE\RandomVideo\init', 15 );
    10 remove_action( 'plugins_loaded', 'Nextgenthemes\ARVE\Privacy\init', 16 );
    11 
    12 add_action( 'init', __NAMESPACE__ . '\init', 9 );
     7add_action( 'init', __NAMESPACE__ . '\init_public', 9 );
    138add_action( 'admin_init', __NAMESPACE__ . '\init_admin', 9 );
    149
    15 function init(): void {
     10function init_public(): void {
    1611
    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';
     12    require_once __DIR__ . '/fn-settings.php';
    2913
    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 );
     14    $settings = settings_data();
     15    $settings->remove( 'scroll-progress-bar' ); // uses options api
    3316
    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' );
     17    foreach ( $settings->get_all() as $key => $setting ) {
    4818
    49     foreach ( ADDON_NAMES as $addon_name ) {
    50         maybe_init_addon( $addon_name );
     19        if ( 'boolean' === $setting->type && option_is_set( $key ) ) {
     20            require_once TWEAKS_DIR_SA . "/$key.php";
     21        }
    5122    }
     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' );
    5237}
    5338
    54 function maybe_init_addon( string $name ): void {
     39function require_file_if_option_is_set( string $key ): void {
    5540
    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();
     41    if ( option_is_set( $key ) ) {
     42        require_once TWEAKS_DIR . "/$key.php";
    6443    }
    6544}
    6645
    6746function init_admin(): void {
    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' );
     47    add_action( 'nextgenthemes/tweakmaster/admin/settings/sidebar', __NAMESPACE__ . '\code_info' );
     48    add_action( 'nextgenthemes/tweakmaster/admin/settings/content', __NAMESPACE__ . '\revisions_tab_info' );
    8949}
    9050
    91 register_uninstall_hook( PLUGIN_FILE, __NAMESPACE__ . '\uninstall' );
     51function code_info(): void {
    9252
    93 function uninstall(): void {
     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
     75}
    9476
    95     global $wpdb;
     77function revisions_tab_info(): void {
    9678
    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     }
     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
    10086}
  • advanced-responsive-video-embedder/trunk/readme.md

    r3089848 r3338484  
    1 # Git repository for Advanced Responsive Video Embedder (ARVE)
     1If you just want just use the plugin its on [wordpress.org](https://wordpress.org/tweakmaster).
    22
    3 #### Level up your basic video embeds! Advanced features, privacy. Use URLs, Shortcodes or Blocks to customize videos to your needs.
     3# Contributing is very easy
    44
    5 [ARVE WordPress Plugin][1] is free on [wp.org][1]. Look there for the feature set.
     51. 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.
     61. 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.
     71. 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.
    68
    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.
     9# Advanced usage of standalone tweaks as mu-plugins
    810
    9 Feel free to file issues with the *code*, for support please file a ticket on [nextgenthemes.com/support/](https://nextgenthemes.com/support/)
     11If 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.
    1012
    11 Code contributions are welcome.
     13To 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.
    1214
    13 Paid addons that finance this project are available:
     15If you have WP CLI you can use these command to copy the files directly from Github to your WordPress site.
    1416
    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)
     17```sh
     18# In case you do not have a mu-plugins folder.
     19wp eval "if ( ! file_exists(WP_CONTENT_DIR . '/mu-plugins' ) ) { mkdir(WP_CONTENT_DIR . '/mu-plugins', 0755, true); }"
    1920
    20 If 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
     21# Replace the filename with any file you find in https://github.com/nextgenthemes/tweakmaster/tree/master/php/tweaks-standalone/
     22wp 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```
  • advanced-responsive-video-embedder/trunk/readme.txt

    r3338450 r3338484  
    1 === Advanced Responsive Video Embedder for Rumble, Odysee, YouTube, Vimeo, Kick ... ===
     1=== TweakMaster ===
    22Contributors: nico23
    3 Donate link: https://nextgenthemes.com/donate/
    4 Tags: embed, video, lazyload, lightbox, rumble
     3Tags: performance, privacy, security, tweaks, lightweight
    54Requires at least: 6.6
    65Tested up to: 6.8
    76Requires PHP: 7.4
    8 Stable tag: 10.6.13
    9 License: GPL-3.0
     7Stable tag: 1.0.5
     8License: GPLv3
    109License URI: https://www.gnu.org/licenses/gpl-3.0.html
     10Donate link: https://nextgenthemes.com/donate
    1111
    12 Level up your basic video embeds! Advanced features, privacy. Use URLs, Shortcodes or Blocks to customize videos to your needs.
     12A collection of performance, privacy, security, and other tweaks. Minimalistic lightweight plugin.
    1313
    14 ## Description ##
     14== Description ==
     15WP 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.
    1516
    16 The best WordPress plugin for videos? Supports close to everything you can imagine, still keeping it easy & simple.
     17This plugins handles tweaks in a minimalistic way. Only files that contains tweaks that you activate are loaded!
    1718
    18 It 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= Tweaks =
    1920
    20 [youtube https://www.youtube.com/watch?v=m6mkA6Zr1vY ]
     21* **Remove version query strings**<br>
     22Removes <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>
     27Disables 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>
     29Replace "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>
     31Move (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>
     34Set the number of days to keep posts in the trash. Default is 30 days.
     35* **Scroll progress bar**
     36* **Scroll progress color**<br>
     37And 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>
     46Requires a hard refresh of the page to take effect.
     47* **Remove Asset Attributes**
     48* **Disable Non Production Emails**<br>
     49If 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>
     52WP 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>
     54Remove EXIF data from uploaded images.
     55* **Convert jpeg to avif**<br>
     56Convert uploaded jpeg to avif
     57* **Clean upload filenames**<br>
     58Sanitize media filenames to remove non-latin special characters and accents
     59* **Avif compression**<br>
     60Default is 82
     61* **Jpeg compression**<br>
     62Default is 82
     63* **Webp compression**<br>
     64Default is 86
     65* **Limit ALL revisions**<br>
     66Limit 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>
     69Allow XML-RPC only from Jetpack IPs
     70* **Remove WP version**<br>
     71Remove <code>WordPress/6.7.1; https://example.org</code> from html head
     72* **Dequeue jQuery Migrate**<br>
     73Dequeue 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>
     75Optimize 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>
     77Enable relative URLs on the frontend. This may break your site. Use at your own risk!
     78* **Disable Contact Form 7 CSS**<br>
     79Sets <code>wpcf7_load_css</code> filter to <code>false</code>
     80* **Disable Contact Form 7 Autop**<br>
     81Sets <code>wpcf7_autop_or_not</code> filter to <code>false</code>
     82* **Enable Jetpack offline mode**
     83* **Enable maintenance mode**
     84* **Enable duplicate post**
    2185
    22 ### Features ###
    2386
    24 #### Classic Editor ####
     87= Contribute to add quality tweaks to the plugin reviewed by me =
    2588
    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.
     89Unlike 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.
    2990
    30 #### Block Editor (Gutenberg) ####
     91It is very easy to contribute to the plugin. Check out the [Github Readme](https://github.com/nextgenthemes/tweakmaster/blob/master/readme.md).
    3192
    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.
     93If you have questions on adding a more complex tweak please feel free to ask.
    3494
    35 #### Elementor ####
     95== Screenshots ==
     96(Maybe later)
    3697
    37 * Provides a widget for the entire feature set of ARVE inside Elementor
     98== Changelog ==
    3899
    39 #### All ####
     100= 2025-03-29 - 1.0.3
     101* Improved: sanitize, validate correctly, fix prefixes ...
     102* Removed update disable tweak, not allowed on wp.org?
    40103
    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.
     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.
    58109
    59 #### Supported Providers ####
     110= 2025-03-15 - 1.0.1-beta1 =
     111* New: Disable non production email tweak.
    60112
    61 [All providers with iframe embed codes](https://nextgenthemes.com/plugins/arve/documentation/#general-iframe-embedding)
    62 Alugha, 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 ####
    66 I’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…  ####
    69 Have 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 
    73 For 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 ####
    76 So 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 ####
    79 I 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 
    87 This 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 
    112 Keep 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 
    121 Display random video from:
    122 
    123 *  YouTube Playlist
    124 *  Vimeo Showcase
    125 *  Comma separated list of video URLs
    126 
    127 ### [ARVE AMP][29] ###
    128 
    129 When 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 
    155 Please 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 
    159 Best 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 
    163 1. Go though the purchase process on [nextgenthemes.com](https://nextgenthemes.com/plugins/arve-pro/)
    164 1. 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.
    165 1. 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 
    169 You may need to adjust your 'Maximal Width' setting to your liking.
    170 
    171 You 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 
    175 Feel free to ask.
    176 
    177 ### How do I embed videos from a unlisted providers / iframes? ###
    178 
    179 This 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 
    183 Please read the [official documentation](https://wordpress.org/support/article/managing-plugins/#installing-plugins) for that.
    184 
    185 ## Screenshots ##
    186 
    187 1. Block Editor Example
    188 2. Shortcode creation dialog in Classic Editor
    189 3. Main Options
    190 4. Pro Options
    191 5. Video Files Options
    192 6. 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)
     113= 2025-03-xx - 1.0.0-beta1 =
     114* Initial release.
  • advanced-responsive-video-embedder/trunk/vendor/autoload.php

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

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

    r3256343 r3338484  
    33// autoload_real.php @generated by Composer
    44
    5 class ComposerAutoloaderInitfa4ebaf22f08a8b822c80bc4efcf7610
     5class ComposerAutoloaderInit5aa486b2e15e5a77b655cb1dccf2d827
    66{
    77    private static $loader;
     
    2525        require __DIR__ . '/platform_check.php';
    2626
    27         spl_autoload_register(array('ComposerAutoloaderInitfa4ebaf22f08a8b822c80bc4efcf7610', 'loadClassLoader'), true, true);
     27        spl_autoload_register(array('ComposerAutoloaderInit5aa486b2e15e5a77b655cb1dccf2d827', 'loadClassLoader'), true, true);
    2828        self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
    29         spl_autoload_unregister(array('ComposerAutoloaderInitfa4ebaf22f08a8b822c80bc4efcf7610', 'loadClassLoader'));
     29        spl_autoload_unregister(array('ComposerAutoloaderInit5aa486b2e15e5a77b655cb1dccf2d827', 'loadClassLoader'));
    3030
    3131        require __DIR__ . '/autoload_static.php';
    32         call_user_func(\Composer\Autoload\ComposerStaticInitfa4ebaf22f08a8b822c80bc4efcf7610::getInitializer($loader));
     32        call_user_func(\Composer\Autoload\ComposerStaticInit5aa486b2e15e5a77b655cb1dccf2d827::getInitializer($loader));
    3333
    3434        $loader->register(true);
    3535
    36         $filesToLoad = \Composer\Autoload\ComposerStaticInitfa4ebaf22f08a8b822c80bc4efcf7610::$files;
     36        $filesToLoad = \Composer\Autoload\ComposerStaticInit5aa486b2e15e5a77b655cb1dccf2d827::$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

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

    r3338450 r3338484  
    7373            "version": "dev-master",
    7474            "version_normalized": "dev-master",
     75            "source": {
     76                "type": "git",
     77                "url": "https://github.com/nextgenthemes/wp-settings.git",
     78                "reference": "4e26cd875e2ba18f6f1bb523ef51d01ec7f7869d"
     79            },
    7580            "dist": {
    76                 "type": "path",
    77                 "url": "../../../../../../dev/composer-packages/wp-settings",
    78                 "reference": "4e26cd875e2ba18f6f1bb523ef51d01ec7f7869d"
     81                "type": "zip",
     82                "url": "https://api.github.com/repos/nextgenthemes/wp-settings/zipball/4e26cd875e2ba18f6f1bb523ef51d01ec7f7869d",
     83                "reference": "4e26cd875e2ba18f6f1bb523ef51d01ec7f7869d",
     84                "shasum": ""
    7985            },
    8086            "require": {
    8187                "php": ">=7.4"
    8288            },
     89            "time": "2025-08-03T12:18:07+00:00",
     90            "default-branch": true,
    8391            "type": "library",
    8492            "installation-source": "dist",
     
    8896                ]
    8997            },
     98            "notification-url": "https://packagist.org/downloads/",
    9099            "license": [
    91100                "GPL-3.0"
     
    96105                }
    97106            ],
    98             "transport-options": {
    99                 "symlink": false,
    100                 "relative": true
     107            "support": {
     108                "source": "https://github.com/nextgenthemes/wp-settings/tree/master"
    101109            },
    102110            "install-path": "../nextgenthemes/wp-settings"
  • advanced-responsive-video-embedder/trunk/vendor/composer/installed.php

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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