├── .gitignore
├── index.php
├── embeds
├── index.php
├── strings.php
├── embeds.php
├── helpers.php
├── thumbnails.php
├── script-injection.php
└── content-filters.php
├── plugin-update-checker
├── vendor
│ └── Parsedown.php
├── Puc
│ ├── v4
│ │ └── Factory.php
│ ├── v5
│ │ └── PucFactory.php
│ ├── v4p11
│ │ ├── DebugBar
│ │ │ ├── ThemePanel.php
│ │ │ ├── PluginPanel.php
│ │ │ └── PluginExtension.php
│ │ ├── Vcs
│ │ │ ├── BaseChecker.php
│ │ │ ├── Reference.php
│ │ │ └── ThemeUpdateChecker.php
│ │ ├── Update.php
│ │ ├── Autoloader.php
│ │ ├── Theme
│ │ │ ├── Package.php
│ │ │ └── Update.php
│ │ ├── Utils.php
│ │ ├── OAuthSignature.php
│ │ ├── InstalledPackage.php
│ │ ├── Plugin
│ │ │ ├── Update.php
│ │ │ └── Info.php
│ │ └── Metadata.php
│ └── v5p5
│ │ ├── Vcs
│ │ ├── BaseChecker.php
│ │ ├── Reference.php
│ │ ├── VcsCheckerMethods.php
│ │ ├── ReleaseAssetSupport.php
│ │ ├── ThemeUpdateChecker.php
│ │ └── ReleaseFilteringFeature.php
│ │ ├── DebugBar
│ │ ├── ThemePanel.php
│ │ ├── PluginExtension.php
│ │ └── PluginPanel.php
│ │ ├── Update.php
│ │ ├── Theme
│ │ ├── Package.php
│ │ └── Update.php
│ │ ├── Utils.php
│ │ ├── WpCliCheckTrigger.php
│ │ ├── Autoloader.php
│ │ ├── InstalledPackage.php
│ │ ├── OAuthSignature.php
│ │ ├── Plugin
│ │ ├── Update.php
│ │ └── PluginInfo.php
│ │ └── Metadata.php
├── languages
│ ├── plugin-update-checker-ca.mo
│ ├── plugin-update-checker-el.mo
│ ├── plugin-update-checker-ja.mo
│ ├── plugin-update-checker-cs_CZ.mo
│ ├── plugin-update-checker-da_DK.mo
│ ├── plugin-update-checker-de_DE.mo
│ ├── plugin-update-checker-es_AR.mo
│ ├── plugin-update-checker-es_CL.mo
│ ├── plugin-update-checker-es_CO.mo
│ ├── plugin-update-checker-es_CR.mo
│ ├── plugin-update-checker-es_DO.mo
│ ├── plugin-update-checker-es_ES.mo
│ ├── plugin-update-checker-es_GT.mo
│ ├── plugin-update-checker-es_HN.mo
│ ├── plugin-update-checker-es_MX.mo
│ ├── plugin-update-checker-es_PE.mo
│ ├── plugin-update-checker-es_PR.mo
│ ├── plugin-update-checker-es_UY.mo
│ ├── plugin-update-checker-es_VE.mo
│ ├── plugin-update-checker-fa_IR.mo
│ ├── plugin-update-checker-fr_CA.mo
│ ├── plugin-update-checker-fr_FR.mo
│ ├── plugin-update-checker-hu_HU.mo
│ ├── plugin-update-checker-it_IT.mo
│ ├── plugin-update-checker-nl_BE.mo
│ ├── plugin-update-checker-nl_NL.mo
│ ├── plugin-update-checker-pt_BR.mo
│ ├── plugin-update-checker-ru_RU.mo
│ ├── plugin-update-checker-sl_SI.mo
│ ├── plugin-update-checker-sv_SE.mo
│ ├── plugin-update-checker-tr_TR.mo
│ ├── plugin-update-checker-uk_UA.mo
│ ├── plugin-update-checker-zh_CN.mo
│ ├── plugin-update-checker-de_DE.po
│ ├── plugin-update-checker-fa_IR.po
│ ├── plugin-update-checker-hu_HU.po
│ ├── plugin-update-checker.pot
│ ├── plugin-update-checker-sv_SE.po
│ ├── plugin-update-checker-da_DK.po
│ ├── plugin-update-checker-fr_FR.po
│ ├── plugin-update-checker-cs_CZ.po
│ ├── plugin-update-checker-uk_UA.po
│ ├── plugin-update-checker-it_IT.po
│ ├── plugin-update-checker-ru_RU.po
│ ├── plugin-update-checker-tr_TR.po
│ ├── plugin-update-checker-zh_CN.po
│ ├── plugin-update-checker-ca.po
│ ├── plugin-update-checker-es_AR.po
│ ├── plugin-update-checker-es_CL.po
│ ├── plugin-update-checker-es_CO.po
│ ├── plugin-update-checker-es_CR.po
│ ├── plugin-update-checker-es_DO.po
│ ├── plugin-update-checker-es_ES.po
│ ├── plugin-update-checker-es_GT.po
│ ├── plugin-update-checker-es_HN.po
│ ├── plugin-update-checker-es_MX.po
│ ├── plugin-update-checker-es_PE.po
│ ├── plugin-update-checker-es_PR.po
│ ├── plugin-update-checker-es_UY.po
│ ├── plugin-update-checker-es_VE.po
│ ├── plugin-update-checker-fr_CA.po
│ ├── plugin-update-checker-sl_SI.po
│ ├── plugin-update-checker-pt_BR.po
│ ├── plugin-update-checker-nl_BE.po
│ ├── plugin-update-checker-nl_NL.po
│ ├── plugin-update-checker-ja.po
│ └── plugin-update-checker-el.po
├── examples
│ ├── theme.json
│ └── plugin.json
├── plugin-update-checker.php
├── .editorconfig
├── composer.json
├── .gitignore
├── license.txt
├── load-v4p11.php
├── load-v5p5.php
├── css
│ └── puc-debug-bar.css
└── js
│ └── debug-bar.js
├── .distignore
├── .editorconfig
├── package.json
├── composer.json
├── database.php
├── .github
└── workflows
│ ├── build.yml
│ └── upload-asset-on-release.yml
├── plugin-helpers.php
├── CHANGELOG.md
├── rest-api.php
├── air-cookie.php
├── .travis.yml
└── assets
└── iframemanager.css
/.gitignore:
--------------------------------------------------------------------------------
1 | composer.lock
2 | vendor
3 |
--------------------------------------------------------------------------------
/index.php:
--------------------------------------------------------------------------------
1 | row('Theme directory', htmlentities($this->updateChecker->directoryName));
13 | parent::displayConfigHeader();
14 | }
15 |
16 | protected function getUpdateFields() {
17 | return array_merge(parent::getUpdateFields(), array('details_url'));
18 | }
19 | }
20 |
21 | endif;
22 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "air-cookie",
3 | "version": "1.3.1",
4 | "description": "Simple cookie banner and management.",
5 | "main": "air-cookie.php",
6 | "dependencies": {},
7 | "devDependencies": {},
8 | "scripts": {
9 | "test": "echo \"Error: no test specified\" && exit 1"
10 | },
11 | "repository": {
12 | "type": "git",
13 | "url": "https://github.com/digitoimistodude/air-cookie.git"
14 | },
15 | "author": "Digitoimisto Dude Oy",
16 | "license": "GPL-3.0+",
17 | "bugs": {
18 | "url": "https://github.com/digitoimistodude/air-cookie/issues"
19 | },
20 | "homepage": "https://github.com/digitoimistodude/air-cookie"
21 | }
--------------------------------------------------------------------------------
/plugin-update-checker/Puc/v4p11/Vcs/BaseChecker.php:
--------------------------------------------------------------------------------
1 | row('Theme directory', htmlentities($this->updateChecker->directoryName));
17 | parent::displayConfigHeader();
18 | }
19 |
20 | protected function getUpdateFields() {
21 | return array_merge(parent::getUpdateFields(), array('details_url'));
22 | }
23 | }
24 |
25 | endif;
26 |
--------------------------------------------------------------------------------
/plugin-update-checker/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "yahnis-elsts/plugin-update-checker",
3 | "type": "library",
4 | "description": "A custom update checker for WordPress plugins and themes. Useful if you can't host your plugin in the official WP repository but still want it to support automatic updates.",
5 | "keywords": ["wordpress", "plugin updates", "automatic updates", "theme updates"],
6 | "homepage": "https://github.com/YahnisElsts/plugin-update-checker/",
7 | "license": "MIT",
8 | "authors": [
9 | {
10 | "name": "Yahnis Elsts",
11 | "email": "whiteshadow@w-shadow.com",
12 | "homepage": "https://w-shadow.com/",
13 | "role": "Developer"
14 | }
15 | ],
16 | "require": {
17 | "php": ">=5.6.20",
18 | "ext-json": "*"
19 | },
20 | "autoload": {
21 | "files": ["load-v5p5.php"]
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/plugin-update-checker/Puc/v4p11/Update.php:
--------------------------------------------------------------------------------
1 | slug = $this->slug;
27 | $update->new_version = $this->version;
28 | $update->package = $this->download_url;
29 |
30 | return $update;
31 | }
32 | }
33 |
34 | endif;
35 |
--------------------------------------------------------------------------------
/plugin-update-checker/Puc/v5p5/Update.php:
--------------------------------------------------------------------------------
1 | slug = $this->slug;
31 | $update->new_version = $this->version;
32 | $update->package = $this->download_url;
33 |
34 | return $update;
35 | }
36 | }
37 |
38 | endif;
39 |
--------------------------------------------------------------------------------
/plugin-update-checker/.gitignore:
--------------------------------------------------------------------------------
1 | # Created by .ignore support plugin (hsz.mobi)
2 | ### JetBrains template
3 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
4 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
5 |
6 | # The entire IDEA/PhpStorm directory
7 | .idea/
8 |
9 | # CMake
10 | cmake-build-*/
11 |
12 | # Mongo Explorer plugin
13 | .idea/**/mongoSettings.xml
14 |
15 | # File-based project format
16 | *.iws
17 |
18 | # IntelliJ
19 | out/
20 |
21 | # mpeltonen/sbt-idea plugin
22 | .idea_modules/
23 |
24 | # JIRA plugin
25 | atlassian-ide-plugin.xml
26 |
27 | # Cursive Clojure plugin
28 | .idea/replstate.xml
29 |
30 | # Crashlytics plugin (for Android Studio and IntelliJ)
31 | com_crashlytics_export_strings.xml
32 | crashlytics.properties
33 | crashlytics-build.properties
34 | fabric.properties
35 |
36 | # Editor-based Rest Client
37 | .idea/httpRequests
38 |
39 | # Android studio 3.1+ serialized cache file
40 | .idea/caches/build_file_checksums.ser
41 |
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "digitoimistodude/air-cookie",
3 | "type": "wordpress-plugin",
4 | "description": "Simple cookie banner and management.",
5 | "homepage": "https://github.com/digitoimistodude/air-cookie",
6 | "keywords": [
7 | "wordpress",
8 | "plugin"
9 | ],
10 | "license": "GPL-3.0-or-later",
11 | "authors": [
12 | {
13 | "name": "Timi Wahalahti",
14 | "email": "timi@dude.fi",
15 | "homepage": "https://github.com/timiwahalahti"
16 | },
17 | {
18 | "name": "Roni Laukkarinen",
19 | "email": "roni@dude.fi",
20 | "homepage": "https://github.com/ronilaukkarinen"
21 | },
22 | {
23 | "name": "Elias Kautto",
24 | "email": "elias@dude.fi",
25 | "homepage": "https://github.com/EliasKau"
26 | }
27 | ],
28 | "config": {
29 | "allow-plugins": {
30 | "dealerdirect/phpcodesniffer-composer-installer": true
31 | }
32 | },
33 | "require-dev": {
34 | "wp-coding-standards/wpcs": "^3.0",
35 | "phpcompatibility/php-compatibility": "*"
36 | }
37 | }
--------------------------------------------------------------------------------
/plugin-update-checker/license.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2023 Jānis Elsts
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8 |
--------------------------------------------------------------------------------
/plugin-update-checker/Puc/v4p11/DebugBar/PluginPanel.php:
--------------------------------------------------------------------------------
1 | row('Plugin file', htmlentities($this->updateChecker->pluginFile));
13 | parent::displayConfigHeader();
14 | }
15 |
16 | protected function getMetadataButton() {
17 | $requestInfoButton = '';
18 | if ( function_exists('get_submit_button') ) {
19 | $requestInfoButton = get_submit_button(
20 | 'Request Info',
21 | 'secondary',
22 | 'puc-request-info-button',
23 | false,
24 | array('id' => $this->updateChecker->getUniqueName('request-info-button'))
25 | );
26 | }
27 | return $requestInfoButton;
28 | }
29 |
30 | protected function getUpdateFields() {
31 | return array_merge(
32 | parent::getUpdateFields(),
33 | array('homepage', 'upgrade_notice', 'tested',)
34 | );
35 | }
36 | }
37 |
38 | endif;
39 |
--------------------------------------------------------------------------------
/plugin-update-checker/Puc/v4p11/DebugBar/PluginExtension.php:
--------------------------------------------------------------------------------
1 | updateChecker->getUniqueName('uid') ) {
19 | return;
20 | }
21 | $this->preAjaxRequest();
22 | $info = $this->updateChecker->requestInfo();
23 | if ( $info !== null ) {
24 | echo 'Successfully retrieved plugin info from the metadata URL:';
25 | echo '
', htmlentities(print_r($info, true)), '
';
26 | } else {
27 | echo 'Failed to retrieve plugin info from the metadata URL.';
28 | }
29 | exit;
30 | }
31 | }
32 |
33 | endif;
34 |
--------------------------------------------------------------------------------
/plugin-update-checker/load-v4p11.php:
--------------------------------------------------------------------------------
1 | 'Puc_v4p11_Plugin_UpdateChecker',
12 | 'Theme_UpdateChecker' => 'Puc_v4p11_Theme_UpdateChecker',
13 |
14 | 'Vcs_PluginUpdateChecker' => 'Puc_v4p11_Vcs_PluginUpdateChecker',
15 | 'Vcs_ThemeUpdateChecker' => 'Puc_v4p11_Vcs_ThemeUpdateChecker',
16 |
17 | 'GitHubApi' => 'Puc_v4p11_Vcs_GitHubApi',
18 | 'BitBucketApi' => 'Puc_v4p11_Vcs_BitBucketApi',
19 | 'GitLabApi' => 'Puc_v4p11_Vcs_GitLabApi',
20 | )
21 | as $pucGeneralClass => $pucVersionedClass
22 | ) {
23 | Puc_v4_Factory::addVersion($pucGeneralClass, $pucVersionedClass, '4.11');
24 | //Also add it to the minor-version factory in case the major-version factory
25 | //was already defined by another, older version of the update checker.
26 | Puc_v4p11_Factory::addVersion($pucGeneralClass, $pucVersionedClass, '4.11');
27 | }
28 |
29 |
--------------------------------------------------------------------------------
/plugin-update-checker/load-v5p5.php:
--------------------------------------------------------------------------------
1 | Plugin\UpdateChecker::class,
18 | 'Theme\\UpdateChecker' => Theme\UpdateChecker::class,
19 |
20 | 'Vcs\\PluginUpdateChecker' => Vcs\PluginUpdateChecker::class,
21 | 'Vcs\\ThemeUpdateChecker' => Vcs\ThemeUpdateChecker::class,
22 |
23 | 'GitHubApi' => Vcs\GitHubApi::class,
24 | 'BitBucketApi' => Vcs\BitBucketApi::class,
25 | 'GitLabApi' => Vcs\GitLabApi::class,
26 | )
27 | as $pucGeneralClass => $pucVersionedClass
28 | ) {
29 | MajorFactory::addVersion($pucGeneralClass, $pucVersionedClass, '5.5');
30 | //Also add it to the minor-version factory in case the major-version factory
31 | //was already defined by another, older version of the update checker.
32 | MinorFactory::addVersion($pucGeneralClass, $pucVersionedClass, '5.5');
33 | }
34 |
35 |
--------------------------------------------------------------------------------
/plugin-update-checker/Puc/v4p11/Vcs/Reference.php:
--------------------------------------------------------------------------------
1 | properties = $properties;
21 | }
22 |
23 | /**
24 | * @param string $name
25 | * @return mixed|null
26 | */
27 | public function __get($name) {
28 | return array_key_exists($name, $this->properties) ? $this->properties[$name] : null;
29 | }
30 |
31 | /**
32 | * @param string $name
33 | * @param mixed $value
34 | */
35 | public function __set($name, $value) {
36 | $this->properties[$name] = $value;
37 | }
38 |
39 | /**
40 | * @param string $name
41 | * @return bool
42 | */
43 | public function __isset($name) {
44 | return isset($this->properties[$name]);
45 | }
46 |
47 | }
48 |
49 | endif;
50 |
--------------------------------------------------------------------------------
/plugin-update-checker/languages/plugin-update-checker-de_DE.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: plugin-update-checker\n"
4 | "POT-Creation-Date: 2016-06-29 20:21+0100\n"
5 | "PO-Revision-Date: 2016-06-29 20:23+0100\n"
6 | "Last-Translator: Igor Lückel \n"
7 | "Language-Team: \n"
8 | "MIME-Version: 1.0\n"
9 | "Content-Type: text/plain; charset=UTF-8\n"
10 | "Content-Transfer-Encoding: 8bit\n"
11 | "X-Generator: Poedit 1.8.1\n"
12 | "X-Poedit-Basepath: ..\n"
13 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
14 | "X-Poedit-SourceCharset: UTF-8\n"
15 | "X-Poedit-KeywordsList: __;_e\n"
16 | "Language: de_DE\n"
17 | "X-Poedit-SearchPath-0: .\n"
18 |
19 | #: github-checker.php:137
20 | msgid "There is no changelog available."
21 | msgstr "Es ist keine Liste von Programmänderungen verfügbar."
22 |
23 | #: plugin-update-checker.php:852
24 | msgid "Check for updates"
25 | msgstr "Nach Update suchen"
26 |
27 | #: plugin-update-checker.php:896
28 | msgid "This plugin is up to date."
29 | msgstr "Das Plugin ist aktuell."
30 |
31 | #: plugin-update-checker.php:898
32 | msgid "A new version of this plugin is available."
33 | msgstr "Es ist eine neue Version für das Plugin verfügbar."
34 |
35 | #: plugin-update-checker.php:900
36 | #, php-format
37 | msgid "Unknown update checker status \"%s\""
38 | msgstr "Unbekannter Update Status \"%s\""
39 |
--------------------------------------------------------------------------------
/plugin-update-checker/languages/plugin-update-checker-fa_IR.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: plugin-update-checker\n"
4 | "POT-Creation-Date: 2016-02-17 14:21+0100\n"
5 | "PO-Revision-Date: 2016-10-28 14:30+0330\n"
6 | "Last-Translator: studio RVOLA \n"
7 | "Language-Team: Pro Style \n"
8 | "Language: fa_IR\n"
9 | "MIME-Version: 1.0\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Content-Transfer-Encoding: 8bit\n"
12 | "X-Generator: Poedit 1.8.8\n"
13 | "X-Poedit-Basepath: ..\n"
14 | "Plural-Forms: nplurals=2; plural=(n > 1);\n"
15 | "X-Poedit-SourceCharset: UTF-8\n"
16 | "X-Poedit-KeywordsList: __;_e\n"
17 | "X-Poedit-SearchPath-0: .\n"
18 |
19 | #: github-checker.php:120
20 | msgid "There is no changelog available."
21 | msgstr "شرحی برای تغییرات یافت نشد"
22 |
23 | #: plugin-update-checker.php:637
24 | msgid "Check for updates"
25 | msgstr "بررسی برای بروزرسانی "
26 |
27 | #: plugin-update-checker.php:681
28 | msgid "This plugin is up to date."
29 | msgstr "شما از آخرین نسخه استفاده میکنید . بهروز باشید"
30 |
31 | #: plugin-update-checker.php:683
32 | msgid "A new version of this plugin is available."
33 | msgstr "نسخه جدیدی برای افزونه ارائه شده است ."
34 |
35 | #: plugin-update-checker.php:685
36 | #, php-format
37 | msgid "Unknown update checker status \"%s\""
38 | msgstr "وضعیت ناشناخته برای بروزرسانی \"%s\""
39 |
--------------------------------------------------------------------------------
/plugin-update-checker/Puc/v5p5/Vcs/Reference.php:
--------------------------------------------------------------------------------
1 | properties = $properties;
23 | }
24 |
25 | /**
26 | * @param string $name
27 | * @return mixed|null
28 | */
29 | public function __get($name) {
30 | return array_key_exists($name, $this->properties) ? $this->properties[$name] : null;
31 | }
32 |
33 | /**
34 | * @param string $name
35 | * @param mixed $value
36 | */
37 | public function __set($name, $value) {
38 | $this->properties[$name] = $value;
39 | }
40 |
41 | /**
42 | * @param string $name
43 | * @return bool
44 | */
45 | public function __isset($name) {
46 | return isset($this->properties[$name]);
47 | }
48 |
49 | }
50 |
51 | endif;
52 |
--------------------------------------------------------------------------------
/database.php:
--------------------------------------------------------------------------------
1 | get_charset_collate();
31 |
32 | $sql_table = "CREATE TABLE {$table_name} (
33 | id bigint(20) NOT NULL AUTO_INCREMENT,
34 | visitor_id varchar(255),
35 | cookie_revision varchar(255),
36 | cookie_value varchar(255),
37 | timestamp datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
38 | expiry datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
39 | PRIMARY KEY (id)
40 | ) {$charset_collate};";
41 |
42 | require_once ABSPATH . 'wp-admin/includes/upgrade.php';
43 | dbDelta( $sql_table );
44 |
45 | add_site_option( get_database_version_key(), get_database_version() );
46 | } // end maybe_init_database
47 |
--------------------------------------------------------------------------------
/plugin-update-checker/languages/plugin-update-checker-hu_HU.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: plugin-update-checker\n"
4 | "POT-Creation-Date: 2016-01-11 21:23+0100\n"
5 | "PO-Revision-Date: 2016-01-11 21:25+0100\n"
6 | "Last-Translator: Tamás András Horváth \n"
7 | "Language-Team: \n"
8 | "Language: hu_HU\n"
9 | "MIME-Version: 1.0\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Content-Transfer-Encoding: 8bit\n"
12 | "X-Generator: Poedit 1.8.6\n"
13 | "X-Poedit-Basepath: ..\n"
14 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15 | "X-Poedit-SourceCharset: UTF-8\n"
16 | "X-Poedit-KeywordsList: __;_e\n"
17 | "X-Poedit-SearchPath-0: .\n"
18 |
19 | #: github-checker.php:137
20 | msgid "There is no changelog available."
21 | msgstr "Nem érhető el a changelog."
22 |
23 | #: plugin-update-checker.php:852
24 | msgid "Check for updates"
25 | msgstr "Frissítés ellenőrzése"
26 |
27 | #: plugin-update-checker.php:896
28 | msgid "This plugin is up to date."
29 | msgstr "Ez a plugin naprakész."
30 |
31 | #: plugin-update-checker.php:898
32 | msgid "A new version of this plugin is available."
33 | msgstr "Új verzió érhető el a kiegészítőhöz"
34 |
35 | #: plugin-update-checker.php:900
36 | #, php-format
37 | msgid "Unknown update checker status \"%s\""
38 | msgstr "Ismeretlen a frissítés ellenőrző státusza \"%s\""
39 |
40 | #~ msgid "Every %d hours"
41 | #~ msgstr "Minden %d órában"
42 |
--------------------------------------------------------------------------------
/plugin-update-checker/Puc/v5p5/DebugBar/PluginExtension.php:
--------------------------------------------------------------------------------
1 | updateChecker->getUniqueName('uid')) ) {
25 | return;
26 | }
27 | $this->preAjaxRequest();
28 | $info = $this->updateChecker->requestInfo();
29 | if ( $info !== null ) {
30 | echo 'Successfully retrieved plugin info from the metadata URL:';
31 | //phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_print_r -- For debugging output.
32 | echo '', esc_html(print_r($info, true)), '
';
33 | } else {
34 | echo 'Failed to retrieve plugin info from the metadata URL.';
35 | }
36 | exit;
37 | }
38 | }
39 |
40 | endif;
41 |
--------------------------------------------------------------------------------
/plugin-update-checker/Puc/v5p5/DebugBar/PluginPanel.php:
--------------------------------------------------------------------------------
1 | row('Plugin file', htmlentities($this->updateChecker->pluginFile));
16 | parent::displayConfigHeader();
17 | }
18 |
19 | protected function getMetadataButton() {
20 | $buttonId = $this->updateChecker->getUniqueName('request-info-button');
21 | if ( function_exists('get_submit_button') ) {
22 | $requestInfoButton = get_submit_button(
23 | 'Request Info',
24 | 'secondary',
25 | 'puc-request-info-button',
26 | false,
27 | array('id' => $buttonId)
28 | );
29 | } else {
30 | $requestInfoButton = sprintf(
31 | '',
32 | esc_attr($buttonId),
33 | esc_attr('Request Info')
34 | );
35 | }
36 | return $requestInfoButton;
37 | }
38 |
39 | protected function getUpdateFields() {
40 | return array_merge(
41 | parent::getUpdateFields(),
42 | array('homepage', 'upgrade_notice', 'tested',)
43 | );
44 | }
45 | }
46 |
47 | endif;
48 |
--------------------------------------------------------------------------------
/plugin-update-checker/languages/plugin-update-checker.pot:
--------------------------------------------------------------------------------
1 | #, fuzzy
2 | msgid ""
3 | msgstr ""
4 | "Project-Id-Version: plugin-update-checker\n"
5 | "POT-Creation-Date: 2024-10-16 17:23+0300\n"
6 | "PO-Revision-Date: 2016-01-10 20:59+0100\n"
7 | "Last-Translator: \n"
8 | "Language-Team: \n"
9 | "Language: en_US\n"
10 | "MIME-Version: 1.0\n"
11 | "Content-Type: text/plain; charset=UTF-8\n"
12 | "Content-Transfer-Encoding: 8bit\n"
13 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
14 | "X-Generator: Poedit 3.5\n"
15 | "X-Poedit-Basepath: ..\n"
16 | "X-Poedit-SourceCharset: UTF-8\n"
17 | "X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n"
18 | "X-Poedit-SearchPath-0: .\n"
19 |
20 | #: Puc/v5p5/Plugin/Ui.php:130
21 | msgid "Check for updates"
22 | msgstr ""
23 |
24 | #: Puc/v5p5/Plugin/Ui.php:217
25 | #, php-format
26 | msgctxt "the plugin title"
27 | msgid "The %s plugin is up to date."
28 | msgstr ""
29 |
30 | #: Puc/v5p5/Plugin/Ui.php:219
31 | #, php-format
32 | msgctxt "the plugin title"
33 | msgid "A new version of the %s plugin is available."
34 | msgstr ""
35 |
36 | #: Puc/v5p5/Plugin/Ui.php:221
37 | #, php-format
38 | msgctxt "the plugin title"
39 | msgid "Could not determine if updates are available for %s."
40 | msgstr ""
41 |
42 | #: Puc/v5p5/Plugin/Ui.php:227
43 | #, php-format
44 | msgid "Unknown update checker status \"%s\""
45 | msgstr ""
46 |
47 | #: Puc/v5p5/Vcs/PluginUpdateChecker.php:113
48 | msgid "There is no changelog available."
49 | msgstr ""
50 |
--------------------------------------------------------------------------------
/plugin-update-checker/languages/plugin-update-checker-sv_SE.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: plugin-update-checker\n"
4 | "POT-Creation-Date: 2017-05-20 10:53+0300\n"
5 | "PO-Revision-Date: 2017-10-16 15:02+0200\n"
6 | "Language-Team: \n"
7 | "MIME-Version: 1.0\n"
8 | "Content-Type: text/plain; charset=UTF-8\n"
9 | "Content-Transfer-Encoding: 8bit\n"
10 | "X-Generator: Poedit 2.0.4\n"
11 | "X-Poedit-Basepath: ..\n"
12 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13 | "X-Poedit-SourceCharset: UTF-8\n"
14 | "X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n"
15 | "Last-Translator: \n"
16 | "Language: sv_SE\n"
17 | "X-Poedit-SearchPath-0: .\n"
18 |
19 | #: Puc/v4p1/Plugin/UpdateChecker.php:358
20 | msgid "Check for updates"
21 | msgstr "Sök efter uppdateringar"
22 |
23 | #: Puc/v4p1/Plugin/UpdateChecker.php:405
24 | #, php-format
25 | msgctxt "the plugin title"
26 | msgid "The %s plugin is up to date."
27 | msgstr "Tillägget %s är uppdaterat."
28 |
29 | #: Puc/v4p1/Plugin/UpdateChecker.php:407
30 | #, php-format
31 | msgctxt "the plugin title"
32 | msgid "A new version of the %s plugin is available."
33 | msgstr "Det finns en ny version av tillägget %s."
34 |
35 | #: Puc/v4p1/Plugin/UpdateChecker.php:409
36 | #, php-format
37 | msgid "Unknown update checker status \"%s\""
38 | msgstr "Okänd status för kontroll av uppdatering “%s”"
39 |
40 | #: Puc/v4p1/Vcs/PluginUpdateChecker.php:83
41 | msgid "There is no changelog available."
42 | msgstr "Det finns ingen ändringslogg tillgänglig."
43 |
--------------------------------------------------------------------------------
/plugin-update-checker/languages/plugin-update-checker-da_DK.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: plugin-update-checker\n"
4 | "POT-Creation-Date: 2017-05-20 10:53+0300\n"
5 | "PO-Revision-Date: 2017-10-17 11:07+0200\n"
6 | "Last-Translator: Mikk3lRo\n"
7 | "Language-Team: Mikk3lRo\n"
8 | "MIME-Version: 1.0\n"
9 | "Content-Type: text/plain; charset=UTF-8\n"
10 | "Content-Transfer-Encoding: 8bit\n"
11 | "X-Generator: Poedit 2.0.4\n"
12 | "X-Poedit-Basepath: ..\n"
13 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
14 | "X-Poedit-SourceCharset: UTF-8\n"
15 | "X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n"
16 | "Language: da_DK\n"
17 | "X-Poedit-SearchPath-0: .\n"
18 |
19 | #: Puc/v4p1/Plugin/UpdateChecker.php:358
20 | msgid "Check for updates"
21 | msgstr "Undersøg for opdateringer"
22 |
23 | #: Puc/v4p1/Plugin/UpdateChecker.php:405
24 | #, php-format
25 | msgctxt "the plugin title"
26 | msgid "The %s plugin is up to date."
27 | msgstr "Plugin'et %s er allerede opdateret."
28 |
29 | #: Puc/v4p1/Plugin/UpdateChecker.php:407
30 | #, php-format
31 | msgctxt "the plugin title"
32 | msgid "A new version of the %s plugin is available."
33 | msgstr "En ny version af plugin'et %s er tilgængelig."
34 |
35 | #: Puc/v4p1/Plugin/UpdateChecker.php:409
36 | #, php-format
37 | msgid "Unknown update checker status \"%s\""
38 | msgstr "Ukendt opdateringsstatus: \"%s\""
39 |
40 | #: Puc/v4p1/Vcs/PluginUpdateChecker.php:83
41 | msgid "There is no changelog available."
42 | msgstr "Der er ingen ændringslog tilgængelig."
43 |
--------------------------------------------------------------------------------
/plugin-update-checker/languages/plugin-update-checker-fr_FR.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: plugin-update-checker\n"
4 | "POT-Creation-Date: 2017-07-07 14:53+0200\n"
5 | "PO-Revision-Date: 2017-07-07 14:54+0200\n"
6 | "Language-Team: studio RVOLA \n"
7 | "Language: fr_FR\n"
8 | "MIME-Version: 1.0\n"
9 | "Content-Type: text/plain; charset=UTF-8\n"
10 | "Content-Transfer-Encoding: 8bit\n"
11 | "X-Generator: Poedit 2.0.2\n"
12 | "X-Poedit-Basepath: ..\n"
13 | "Plural-Forms: nplurals=2; plural=(n > 1);\n"
14 | "X-Poedit-SourceCharset: UTF-8\n"
15 | "X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n"
16 | "Last-Translator: Nicolas GEHIN\n"
17 | "X-Poedit-SearchPath-0: .\n"
18 |
19 | #: Puc/v4p1/Plugin/UpdateChecker.php:358
20 | msgid "Check for updates"
21 | msgstr "Vérifier les mises à jour"
22 |
23 | #: Puc/v4p1/Plugin/UpdateChecker.php:405
24 | #, php-format
25 | msgctxt "the plugin title"
26 | msgid "The %s plugin is up to date."
27 | msgstr "L’extension %s est à jour."
28 |
29 | #: Puc/v4p1/Plugin/UpdateChecker.php:407
30 | #, php-format
31 | msgctxt "the plugin title"
32 | msgid "A new version of the %s plugin is available."
33 | msgstr "Une nouvelle version de l’extension %s est disponible."
34 |
35 | #: Puc/v4p1/Plugin/UpdateChecker.php:409
36 | #, php-format
37 | msgid "Unknown update checker status \"%s\""
38 | msgstr "Un problème inconnu est survenu \"%s\""
39 |
40 | #: Puc/v4p1/Vcs/PluginUpdateChecker.php:85
41 | msgid "There is no changelog available."
42 | msgstr "Il n’y a aucun journal de mise à jour disponible."
43 |
--------------------------------------------------------------------------------
/plugin-update-checker/Puc/v5p5/Vcs/VcsCheckerMethods.php:
--------------------------------------------------------------------------------
1 | branch = $branch;
20 | return $this;
21 | }
22 |
23 | /**
24 | * Set authentication credentials.
25 | *
26 | * @param array|string $credentials
27 | * @return $this
28 | */
29 | public function setAuthentication($credentials) {
30 | $this->api->setAuthentication($credentials);
31 | return $this;
32 | }
33 |
34 | /**
35 | * @return Api
36 | */
37 | public function getVcsApi() {
38 | return $this->api;
39 | }
40 |
41 | public function getUpdate() {
42 | $update = parent::getUpdate();
43 |
44 | if ( isset($update) && !empty($update->download_url) ) {
45 | $update->download_url = $this->api->signDownloadUrl($update->download_url);
46 | }
47 |
48 | return $update;
49 | }
50 |
51 | public function onDisplayConfiguration($panel) {
52 | parent::onDisplayConfiguration($panel);
53 | $panel->row('Branch', $this->branch);
54 | $panel->row('Authentication enabled', $this->api->isAuthenticationEnabled() ? 'Yes' : 'No');
55 | $panel->row('API client', get_class($this->api));
56 | }
57 | }
58 |
59 | endif;
--------------------------------------------------------------------------------
/plugin-update-checker/css/puc-debug-bar.css:
--------------------------------------------------------------------------------
1 | .puc-debug-bar-panel-v5 pre {
2 | margin-top: 0;
3 | }
4 |
5 | /* Style the debug data table to match "widefat" table style used by WordPress. */
6 | table.puc-debug-data {
7 | width: 100%;
8 | clear: both;
9 | margin: 0;
10 |
11 | border-spacing: 0;
12 | background-color: #f9f9f9;
13 |
14 | border-radius: 3px;
15 | border: 1px solid #dfdfdf;
16 | border-collapse: separate;
17 | }
18 |
19 | table.puc-debug-data * {
20 | word-wrap: break-word;
21 | }
22 |
23 | table.puc-debug-data th {
24 | width: 11em;
25 | padding: 7px 7px 8px;
26 | text-align: left;
27 |
28 | font-family: "Georgia", "Times New Roman", "Bitstream Charter", "Times", serif;
29 | font-weight: 400;
30 | font-size: 14px;
31 | line-height: 1.3em;
32 | text-shadow: rgba(255, 255, 255, 0.804) 0 1px 0;
33 | }
34 |
35 | table.puc-debug-data td, table.puc-debug-data th {
36 | border-width: 1px 0;
37 | border-style: solid;
38 |
39 | border-top-color: #fff;
40 | border-bottom-color: #dfdfdf;
41 |
42 | text-transform: none;
43 | }
44 |
45 | table.puc-debug-data td {
46 | color: #555;
47 | font-size: 12px;
48 | padding: 4px 7px 2px;
49 | vertical-align: top;
50 | }
51 |
52 | .puc-ajax-response {
53 | border: 1px solid #dfdfdf;
54 | border-radius: 3px;
55 | padding: 0.5em;
56 | margin: 5px 0;
57 | background-color: white;
58 | }
59 |
60 | .puc-ajax-nonce {
61 | display: none;
62 | }
63 |
64 | .puc-ajax-response dt {
65 | margin: 0;
66 | }
67 |
68 | .puc-ajax-response dd {
69 | margin: 0 0 1em;
70 | }
71 |
--------------------------------------------------------------------------------
/plugin-update-checker/languages/plugin-update-checker-cs_CZ.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: plugin-update-checker\n"
4 | "Report-Msgid-Bugs-To: \n"
5 | "POT-Creation-Date: 2017-05-20 10:53+0300\n"
6 | "PO-Revision-Date: 2017-07-05 15:39+0000\n"
7 | "Last-Translator: Vojtěch Sajdl \n"
8 | "Language-Team: Czech (Czech Republic)\n"
9 | "Language: cs-CZ\n"
10 | "Plural-Forms: nplurals=2; plural=(n != 1)\n"
11 | "MIME-Version: 1.0\n"
12 | "Content-Type: text/plain; charset=UTF-8\n"
13 | "Content-Transfer-Encoding: 8bit\n"
14 | "X-Loco-Source-Locale: cs_CZ\n"
15 | "X-Generator: Loco - https://localise.biz/\n"
16 | "X-Poedit-Basepath: ..\n"
17 | "X-Poedit-SourceCharset: UTF-8\n"
18 | "X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n"
19 | "X-Poedit-SearchPath-0: .\n"
20 | "X-Loco-Parser: loco_parse_po"
21 |
22 | #: Puc/v4p1/Plugin/UpdateChecker.php:358
23 | msgid "Check for updates"
24 | msgstr "Zkontrolovat aktualizace"
25 |
26 | #: Puc/v4p1/Plugin/UpdateChecker.php:405
27 | #, php-format
28 | msgctxt "the plugin title"
29 | msgid "The %s plugin is up to date."
30 | msgstr "Plugin %s je aktuální."
31 |
32 | #: Puc/v4p1/Plugin/UpdateChecker.php:407
33 | #, php-format
34 | msgctxt "the plugin title"
35 | msgid "A new version of the %s plugin is available."
36 | msgstr "Nová verze pluginu %s je dostupná."
37 |
38 | #: Puc/v4p1/Plugin/UpdateChecker.php:409
39 | #, php-format
40 | msgid "Unknown update checker status \"%s\""
41 | msgstr "Neznámý status kontroly aktualizací \"%s\""
42 |
43 | #: Puc/v4p1/Vcs/PluginUpdateChecker.php:83
44 | msgid "There is no changelog available."
45 | msgstr "Changelog není dostupný."
46 |
--------------------------------------------------------------------------------
/.github/workflows/build.yml:
--------------------------------------------------------------------------------
1 | # @Author: Roni Laukkarinen
2 | # @Date: 2023-02-15 17:39:37
3 | # @Last Modified by: Roni Laukkarinen
4 | # @Last Modified time: 2024-02-20 17:19:50
5 | name: Build
6 |
7 | on: [push, pull_request]
8 |
9 | env:
10 | PHPCS_DIR: /tmp/phpcs
11 | PHPCOMPAT_DIR: /tmp/phpcompatibility
12 | SNIFFS_DIR: /tmp/sniffs
13 | WPCS_DIR: /tmp/wpcs
14 |
15 | jobs:
16 | build:
17 | name: Test php
18 | runs-on: ubuntu-latest
19 |
20 | steps:
21 | - name: Checkout the repository
22 | uses: actions/checkout@v3
23 |
24 | - name: Setup PHP with Xdebug 2.x
25 | uses: shivammathur/setup-php@v2
26 | with:
27 | php-version: '8.3'
28 | coverage: xdebug2
29 |
30 | - name: Set up PHPCS and WordPress-Coding-Standards
31 | uses: php-actions/composer@v6
32 | env:
33 | COMPOSER: "composer.json"
34 | with:
35 | php_version: "8.3"
36 | version: "2.3.7"
37 | args: "--ignore-platform-reqs --optimize-autoloader"
38 |
39 | - name: Run PHP_CodeSniffer
40 | run: |
41 | vendor/bin/phpcs -p . --warning-severity=0 --extensions=php --ignore=vendor,node_modules,sr,plugin-update-checker --standard=PHPCompatibility --runtime-set testVersion 8.3
42 | vendor/bin/phpcs -p . --extensions=php --ignore=vendor,node_modules,src,js,css,sass,plugin-update-checker --standard=phpcs.xml
43 |
44 | - name: Test PHP for syntax errors
45 | run: find -L . -name '*.php' -not -path "./vendor/*" -not -path "./node_modules/*" -not -path "./src/*" -not -path "./js/*" -not -path "./css/*" -not -path "./sass/*" -not -path "./plugin-update-checker/*" -print0 | xargs -0 -n 1 -P 4 php -l
46 |
--------------------------------------------------------------------------------
/plugin-update-checker/languages/plugin-update-checker-uk_UA.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: plugin-update-checker\n"
4 | "POT-Creation-Date: 2020-08-08 14:36+0300\n"
5 | "PO-Revision-Date: 2021-12-20 17:55+0200\n"
6 | "Language-Team: \n"
7 | "MIME-Version: 1.0\n"
8 | "Content-Type: text/plain; charset=UTF-8\n"
9 | "Content-Transfer-Encoding: 8bit\n"
10 | "X-Generator: Poedit 2.2\n"
11 | "X-Poedit-Basepath: ..\n"
12 | "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n"
13 | "X-Poedit-SourceCharset: UTF-8\n"
14 | "X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n"
15 | "Last-Translator: \n"
16 | "Language: uk_UA\n"
17 | "X-Poedit-SearchPath-0: .\n"
18 |
19 | #: Puc/v4p11/Plugin/Ui.php:128
20 | msgid "Check for updates"
21 | msgstr "Перевірити оновлення"
22 |
23 | #: Puc/v4p11/Plugin/Ui.php:213
24 | #, php-format
25 | msgctxt "the plugin title"
26 | msgid "The %s plugin is up to date."
27 | msgstr "Плагін %s оновлено."
28 |
29 | #: Puc/v4p11/Plugin/Ui.php:215
30 | #, php-format
31 | msgctxt "the plugin title"
32 | msgid "A new version of the %s plugin is available."
33 | msgstr "Нова версія %s доступна."
34 |
35 | #: Puc/v4p11/Plugin/Ui.php:217
36 | #, php-format
37 | msgctxt "the plugin title"
38 | msgid "Could not determine if updates are available for %s."
39 | msgstr "Не вдалося визначити, чи доступні оновлення для %s."
40 |
41 | #: Puc/v4p11/Plugin/Ui.php:223
42 | #, php-format
43 | msgid "Unknown update checker status \"%s\""
44 | msgstr "Невідомий статус перевірки оновлень \"%s\""
45 |
46 | #: Puc/v4p11/Vcs/PluginUpdateChecker.php:98
47 | msgid "There is no changelog available."
48 | msgstr "Немає доступного журналу змін."
49 |
--------------------------------------------------------------------------------
/plugin-update-checker/languages/plugin-update-checker-it_IT.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: plugin-update-checker\n"
4 | "POT-Creation-Date: 2020-08-08 14:36+0300\n"
5 | "PO-Revision-Date: 2022-05-20 00:17+0200\n"
6 | "Language-Team: \n"
7 | "MIME-Version: 1.0\n"
8 | "Content-Type: text/plain; charset=UTF-8\n"
9 | "Content-Transfer-Encoding: 8bit\n"
10 | "X-Generator: Poedit 3.0\n"
11 | "X-Poedit-Basepath: ..\n"
12 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13 | "X-Poedit-SourceCharset: UTF-8\n"
14 | "X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n"
15 | "Last-Translator: d79\n"
16 | "Language: it_IT\n"
17 | "X-Poedit-SearchPath-0: .\n"
18 |
19 | #: Puc/v4p11/Plugin/Ui.php:128
20 | msgid "Check for updates"
21 | msgstr "Verifica aggiornamenti"
22 |
23 | #: Puc/v4p11/Plugin/Ui.php:213
24 | #, php-format
25 | msgctxt "the plugin title"
26 | msgid "The %s plugin is up to date."
27 | msgstr "Il plugin %s è aggiornato."
28 |
29 | #: Puc/v4p11/Plugin/Ui.php:215
30 | #, php-format
31 | msgctxt "the plugin title"
32 | msgid "A new version of the %s plugin is available."
33 | msgstr "Una nuova versione del plugin %s è disponibile."
34 |
35 | #: Puc/v4p11/Plugin/Ui.php:217
36 | #, php-format
37 | msgctxt "the plugin title"
38 | msgid "Could not determine if updates are available for %s."
39 | msgstr "Non è possibile verificare se c'è un aggiornamento disponibile per %s."
40 |
41 | #: Puc/v4p11/Plugin/Ui.php:223
42 | #, php-format
43 | msgid "Unknown update checker status \"%s\""
44 | msgstr "Stato di controllo aggiornamenti sconosciuto \"%s\""
45 |
46 | #: Puc/v4p11/Vcs/PluginUpdateChecker.php:98
47 | msgid "There is no changelog available."
48 | msgstr "Non c'è alcun registro delle modifiche disponibile."
49 |
--------------------------------------------------------------------------------
/plugin-update-checker/languages/plugin-update-checker-ru_RU.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: plugin-update-checker\n"
4 | "POT-Creation-Date: 2020-08-08 14:36+0300\n"
5 | "PO-Revision-Date: 2021-12-20 17:59+0200\n"
6 | "Language-Team: \n"
7 | "MIME-Version: 1.0\n"
8 | "Content-Type: text/plain; charset=UTF-8\n"
9 | "Content-Transfer-Encoding: 8bit\n"
10 | "X-Generator: Poedit 2.2\n"
11 | "X-Poedit-Basepath: ..\n"
12 | "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n"
13 | "X-Poedit-SourceCharset: UTF-8\n"
14 | "X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n"
15 | "Last-Translator: \n"
16 | "Language: ru_RU\n"
17 | "X-Poedit-SearchPath-0: .\n"
18 |
19 | #: Puc/v4p11/Plugin/Ui.php:128
20 | msgid "Check for updates"
21 | msgstr "Проверить обновления"
22 |
23 | #: Puc/v4p11/Plugin/Ui.php:213
24 | #, php-format
25 | msgctxt "the plugin title"
26 | msgid "The %s plugin is up to date."
27 | msgstr "Плагин %s обновлён."
28 |
29 | #: Puc/v4p11/Plugin/Ui.php:215
30 | #, php-format
31 | msgctxt "the plugin title"
32 | msgid "A new version of the %s plugin is available."
33 | msgstr "Новая версия %s доступна."
34 |
35 | #: Puc/v4p11/Plugin/Ui.php:217
36 | #, php-format
37 | msgctxt "the plugin title"
38 | msgid "Could not determine if updates are available for %s."
39 | msgstr "Не удалось определить, доступны ли обновления для %s."
40 |
41 | #: Puc/v4p11/Plugin/Ui.php:223
42 | #, php-format
43 | msgid "Unknown update checker status \"%s\""
44 | msgstr "Неизвестный статус средства проверки обновлений \"%s\""
45 |
46 | #: Puc/v4p11/Vcs/PluginUpdateChecker.php:98
47 | msgid "There is no changelog available."
48 | msgstr "Журнал изменений отсутствует."
49 |
--------------------------------------------------------------------------------
/plugin-update-checker/languages/plugin-update-checker-tr_TR.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: plugin-update-checker\n"
4 | "POT-Creation-Date: 2017-11-24 17:02+0200\n"
5 | "PO-Revision-Date: 2021-11-15 19:07+0300\n"
6 | "Language-Team: \n"
7 | "MIME-Version: 1.0\n"
8 | "Content-Type: text/plain; charset=UTF-8\n"
9 | "Content-Transfer-Encoding: 8bit\n"
10 | "X-Generator: Poedit 3.0\n"
11 | "X-Poedit-Basepath: ..\n"
12 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13 | "X-Poedit-SourceCharset: UTF-8\n"
14 | "X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n"
15 | "Last-Translator: Emre Erkan \n"
16 | "Language: tr\n"
17 | "X-Poedit-SearchPath-0: .\n"
18 |
19 | #: Puc/v4p3/Plugin/UpdateChecker.php:395
20 | msgid "Check for updates"
21 | msgstr "Güncellemeleri kontrol et"
22 |
23 | #: Puc/v4p3/Plugin/UpdateChecker.php:548
24 | #, php-format
25 | msgctxt "the plugin title"
26 | msgid "The %s plugin is up to date."
27 | msgstr "%s eklentisi güncel."
28 |
29 | #: Puc/v4p3/Plugin/UpdateChecker.php:550
30 | #, php-format
31 | msgctxt "the plugin title"
32 | msgid "A new version of the %s plugin is available."
33 | msgstr "%s eklentisinin yeni bir sürümü mevcut."
34 |
35 | #: Puc/v4p3/Plugin/UpdateChecker.php:552
36 | #, php-format
37 | msgctxt "the plugin title"
38 | msgid "Could not determine if updates are available for %s."
39 | msgstr "%s için güncelleme olup olmadığı belirlenemedi."
40 |
41 | #: Puc/v4p3/Plugin/UpdateChecker.php:558
42 | #, php-format
43 | msgid "Unknown update checker status \"%s\""
44 | msgstr "Bilinmeyen güncelleme denetleyicisi durumu \"%s\""
45 |
46 | #: Puc/v4p3/Vcs/PluginUpdateChecker.php:95
47 | msgid "There is no changelog available."
48 | msgstr "Kullanılabilir bir değişiklik yok."
49 |
--------------------------------------------------------------------------------
/plugin-update-checker/languages/plugin-update-checker-zh_CN.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: plugin-update-checker\n"
4 | "POT-Creation-Date: 2024-05-18 00:08+0800\n"
5 | "PO-Revision-Date: 2024-05-18 00:08+0800\n"
6 | "Last-Translator: Seaton Jiang \n"
7 | "Language-Team: \n"
8 | "Language: zh_CN\n"
9 | "MIME-Version: 1.0\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Content-Transfer-Encoding: 8bit\n"
12 | "Plural-Forms: nplurals=1; plural=0;\n"
13 | "X-Generator: Poedit 3.4.4\n"
14 | "X-Poedit-Basepath: ..\n"
15 | "X-Poedit-SourceCharset: UTF-8\n"
16 | "X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n"
17 | "X-Poedit-SearchPath-0: .\n"
18 |
19 | #: Puc/v5p4/Plugin/Ui.php:56
20 | msgid "View details"
21 | msgstr "查看详情"
22 |
23 | #: Puc/v5p4/Plugin/Ui.php:79
24 | #, php-format
25 | msgid "More information about %s"
26 | msgstr "%s 的更多信息"
27 |
28 | #: Puc/v5p4/Plugin/Ui.php:130
29 | msgid "Check for updates"
30 | msgstr "检查更新"
31 |
32 | #: Puc/v5p4/Plugin/Ui.php:217
33 | #, php-format
34 | msgctxt "the plugin title"
35 | msgid "The %s plugin is up to date."
36 | msgstr "%s 目前是最新版本。"
37 |
38 | #: Puc/v5p4/Plugin/Ui.php:219
39 | #, php-format
40 | msgctxt "the plugin title"
41 | msgid "A new version of the %s plugin is available."
42 | msgstr "%s 当前有可用的更新。"
43 |
44 | #: Puc/v5p4/Plugin/Ui.php:221
45 | #, php-format
46 | msgctxt "the plugin title"
47 | msgid "Could not determine if updates are available for %s."
48 | msgstr "%s 无法确定是否有可用的更新。"
49 |
50 | #: Puc/v5p4/Plugin/Ui.php:227
51 | #, php-format
52 | msgid "Unknown update checker status \"%s\""
53 | msgstr "未知的更新检查状态:%s"
54 |
55 | #: Puc/v5p4/Vcs/PluginUpdateChecker.php:113
56 | msgid "There is no changelog available."
57 | msgstr "没有可用的更新日志。"
58 |
--------------------------------------------------------------------------------
/plugin-update-checker/languages/plugin-update-checker-ca.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: plugin-update-checker\n"
4 | "POT-Creation-Date: 2017-11-24 17:02+0200\n"
5 | "PO-Revision-Date: 2019-09-25 18:15+0200\n"
6 | "Language-Team: \n"
7 | "MIME-Version: 1.0\n"
8 | "Content-Type: text/plain; charset=UTF-8\n"
9 | "Content-Transfer-Encoding: 8bit\n"
10 | "X-Generator: Poedit 2.2.3\n"
11 | "X-Poedit-Basepath: ..\n"
12 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13 | "X-Poedit-SourceCharset: UTF-8\n"
14 | "X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n"
15 | "Last-Translator: \n"
16 | "Language: ca\n"
17 | "X-Poedit-SearchPath-0: .\n"
18 |
19 | #: Puc/v4p3/Plugin/UpdateChecker.php:395
20 | msgid "Check for updates"
21 | msgstr "Comprova si hi ha actualitzacions"
22 |
23 | #: Puc/v4p3/Plugin/UpdateChecker.php:548
24 | #, php-format
25 | msgctxt "the plugin title"
26 | msgid "The %s plugin is up to date."
27 | msgstr "L’extensió %s està actualitzada."
28 |
29 | #: Puc/v4p3/Plugin/UpdateChecker.php:550
30 | #, php-format
31 | msgctxt "the plugin title"
32 | msgid "A new version of the %s plugin is available."
33 | msgstr "Una nova versió de l’extensió %s està disponible."
34 |
35 | #: Puc/v4p3/Plugin/UpdateChecker.php:552
36 | #, php-format
37 | msgctxt "the plugin title"
38 | msgid "Could not determine if updates are available for %s."
39 | msgstr "No s’ha pogut determinar si hi ha actualitzacions per a %s."
40 |
41 | #: Puc/v4p3/Plugin/UpdateChecker.php:558
42 | #, php-format
43 | msgid "Unknown update checker status \"%s\""
44 | msgstr "Estat del comprovador d’actualitzacions desconegut \"%s\""
45 |
46 | #: Puc/v4p3/Vcs/PluginUpdateChecker.php:95
47 | msgid "There is no changelog available."
48 | msgstr "No hi ha cap registre de canvis disponible."
49 |
--------------------------------------------------------------------------------
/plugin-update-checker/languages/plugin-update-checker-es_AR.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: plugin-update-checker\n"
4 | "POT-Creation-Date: 2017-11-24 17:02+0200\n"
5 | "PO-Revision-Date: 2020-03-21 15:13-0400\n"
6 | "Language-Team: \n"
7 | "MIME-Version: 1.0\n"
8 | "Content-Type: text/plain; charset=UTF-8\n"
9 | "Content-Transfer-Encoding: 8bit\n"
10 | "X-Generator: Poedit 2.3\n"
11 | "X-Poedit-Basepath: ..\n"
12 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13 | "X-Poedit-SourceCharset: UTF-8\n"
14 | "X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n"
15 | "Last-Translator: \n"
16 | "Language: es_ES\n"
17 | "X-Poedit-SearchPath-0: .\n"
18 |
19 | #: Puc/v4p3/Plugin/UpdateChecker.php:395
20 | msgid "Check for updates"
21 | msgstr "Comprobar si hay actualizaciones"
22 |
23 | #: Puc/v4p3/Plugin/UpdateChecker.php:548
24 | #, php-format
25 | msgctxt "the plugin title"
26 | msgid "The %s plugin is up to date."
27 | msgstr "El plugin %s está actualizado."
28 |
29 | #: Puc/v4p3/Plugin/UpdateChecker.php:550
30 | #, php-format
31 | msgctxt "the plugin title"
32 | msgid "A new version of the %s plugin is available."
33 | msgstr "Una nueva versión del %s plugin está disponible."
34 |
35 | #: Puc/v4p3/Plugin/UpdateChecker.php:552
36 | #, php-format
37 | msgctxt "the plugin title"
38 | msgid "Could not determine if updates are available for %s."
39 | msgstr "No se pudo determinar si hay actualizaciones disponibles para %s."
40 |
41 | #: Puc/v4p3/Plugin/UpdateChecker.php:558
42 | #, php-format
43 | msgid "Unknown update checker status \"%s\""
44 | msgstr "Estado del comprobador de actualización desconocido «%s»"
45 |
46 | #: Puc/v4p3/Vcs/PluginUpdateChecker.php:95
47 | msgid "There is no changelog available."
48 | msgstr "No hay un registro de cambios disponible."
49 |
--------------------------------------------------------------------------------
/plugin-update-checker/languages/plugin-update-checker-es_CL.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: plugin-update-checker\n"
4 | "POT-Creation-Date: 2017-11-24 17:02+0200\n"
5 | "PO-Revision-Date: 2020-03-21 15:14-0400\n"
6 | "Language-Team: \n"
7 | "MIME-Version: 1.0\n"
8 | "Content-Type: text/plain; charset=UTF-8\n"
9 | "Content-Transfer-Encoding: 8bit\n"
10 | "X-Generator: Poedit 2.3\n"
11 | "X-Poedit-Basepath: ..\n"
12 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13 | "X-Poedit-SourceCharset: UTF-8\n"
14 | "X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n"
15 | "Last-Translator: \n"
16 | "Language: es_ES\n"
17 | "X-Poedit-SearchPath-0: .\n"
18 |
19 | #: Puc/v4p3/Plugin/UpdateChecker.php:395
20 | msgid "Check for updates"
21 | msgstr "Comprobar si hay actualizaciones"
22 |
23 | #: Puc/v4p3/Plugin/UpdateChecker.php:548
24 | #, php-format
25 | msgctxt "the plugin title"
26 | msgid "The %s plugin is up to date."
27 | msgstr "El plugin %s está actualizado."
28 |
29 | #: Puc/v4p3/Plugin/UpdateChecker.php:550
30 | #, php-format
31 | msgctxt "the plugin title"
32 | msgid "A new version of the %s plugin is available."
33 | msgstr "Una nueva versión del %s plugin está disponible."
34 |
35 | #: Puc/v4p3/Plugin/UpdateChecker.php:552
36 | #, php-format
37 | msgctxt "the plugin title"
38 | msgid "Could not determine if updates are available for %s."
39 | msgstr "No se pudo determinar si hay actualizaciones disponibles para %s."
40 |
41 | #: Puc/v4p3/Plugin/UpdateChecker.php:558
42 | #, php-format
43 | msgid "Unknown update checker status \"%s\""
44 | msgstr "Estado del comprobador de actualización desconocido «%s»"
45 |
46 | #: Puc/v4p3/Vcs/PluginUpdateChecker.php:95
47 | msgid "There is no changelog available."
48 | msgstr "No hay un registro de cambios disponible."
49 |
--------------------------------------------------------------------------------
/plugin-update-checker/languages/plugin-update-checker-es_CO.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: plugin-update-checker\n"
4 | "POT-Creation-Date: 2017-11-24 17:02+0200\n"
5 | "PO-Revision-Date: 2020-03-21 15:14-0400\n"
6 | "Language-Team: \n"
7 | "MIME-Version: 1.0\n"
8 | "Content-Type: text/plain; charset=UTF-8\n"
9 | "Content-Transfer-Encoding: 8bit\n"
10 | "X-Generator: Poedit 2.3\n"
11 | "X-Poedit-Basepath: ..\n"
12 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13 | "X-Poedit-SourceCharset: UTF-8\n"
14 | "X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n"
15 | "Last-Translator: \n"
16 | "Language: es_ES\n"
17 | "X-Poedit-SearchPath-0: .\n"
18 |
19 | #: Puc/v4p3/Plugin/UpdateChecker.php:395
20 | msgid "Check for updates"
21 | msgstr "Comprobar si hay actualizaciones"
22 |
23 | #: Puc/v4p3/Plugin/UpdateChecker.php:548
24 | #, php-format
25 | msgctxt "the plugin title"
26 | msgid "The %s plugin is up to date."
27 | msgstr "El plugin %s está actualizado."
28 |
29 | #: Puc/v4p3/Plugin/UpdateChecker.php:550
30 | #, php-format
31 | msgctxt "the plugin title"
32 | msgid "A new version of the %s plugin is available."
33 | msgstr "Una nueva versión del %s plugin está disponible."
34 |
35 | #: Puc/v4p3/Plugin/UpdateChecker.php:552
36 | #, php-format
37 | msgctxt "the plugin title"
38 | msgid "Could not determine if updates are available for %s."
39 | msgstr "No se pudo determinar si hay actualizaciones disponibles para %s."
40 |
41 | #: Puc/v4p3/Plugin/UpdateChecker.php:558
42 | #, php-format
43 | msgid "Unknown update checker status \"%s\""
44 | msgstr "Estado del comprobador de actualización desconocido «%s»"
45 |
46 | #: Puc/v4p3/Vcs/PluginUpdateChecker.php:95
47 | msgid "There is no changelog available."
48 | msgstr "No hay un registro de cambios disponible."
49 |
--------------------------------------------------------------------------------
/plugin-update-checker/languages/plugin-update-checker-es_CR.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: plugin-update-checker\n"
4 | "POT-Creation-Date: 2017-11-24 17:02+0200\n"
5 | "PO-Revision-Date: 2020-03-21 15:14-0400\n"
6 | "Language-Team: \n"
7 | "MIME-Version: 1.0\n"
8 | "Content-Type: text/plain; charset=UTF-8\n"
9 | "Content-Transfer-Encoding: 8bit\n"
10 | "X-Generator: Poedit 2.3\n"
11 | "X-Poedit-Basepath: ..\n"
12 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13 | "X-Poedit-SourceCharset: UTF-8\n"
14 | "X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n"
15 | "Last-Translator: \n"
16 | "Language: es_ES\n"
17 | "X-Poedit-SearchPath-0: .\n"
18 |
19 | #: Puc/v4p3/Plugin/UpdateChecker.php:395
20 | msgid "Check for updates"
21 | msgstr "Comprobar si hay actualizaciones"
22 |
23 | #: Puc/v4p3/Plugin/UpdateChecker.php:548
24 | #, php-format
25 | msgctxt "the plugin title"
26 | msgid "The %s plugin is up to date."
27 | msgstr "El plugin %s está actualizado."
28 |
29 | #: Puc/v4p3/Plugin/UpdateChecker.php:550
30 | #, php-format
31 | msgctxt "the plugin title"
32 | msgid "A new version of the %s plugin is available."
33 | msgstr "Una nueva versión del %s plugin está disponible."
34 |
35 | #: Puc/v4p3/Plugin/UpdateChecker.php:552
36 | #, php-format
37 | msgctxt "the plugin title"
38 | msgid "Could not determine if updates are available for %s."
39 | msgstr "No se pudo determinar si hay actualizaciones disponibles para %s."
40 |
41 | #: Puc/v4p3/Plugin/UpdateChecker.php:558
42 | #, php-format
43 | msgid "Unknown update checker status \"%s\""
44 | msgstr "Estado del comprobador de actualización desconocido «%s»"
45 |
46 | #: Puc/v4p3/Vcs/PluginUpdateChecker.php:95
47 | msgid "There is no changelog available."
48 | msgstr "No hay un registro de cambios disponible."
49 |
--------------------------------------------------------------------------------
/plugin-update-checker/languages/plugin-update-checker-es_DO.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: plugin-update-checker\n"
4 | "POT-Creation-Date: 2017-11-24 17:02+0200\n"
5 | "PO-Revision-Date: 2020-03-21 15:14-0400\n"
6 | "Language-Team: \n"
7 | "MIME-Version: 1.0\n"
8 | "Content-Type: text/plain; charset=UTF-8\n"
9 | "Content-Transfer-Encoding: 8bit\n"
10 | "X-Generator: Poedit 2.3\n"
11 | "X-Poedit-Basepath: ..\n"
12 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13 | "X-Poedit-SourceCharset: UTF-8\n"
14 | "X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n"
15 | "Last-Translator: \n"
16 | "Language: es_ES\n"
17 | "X-Poedit-SearchPath-0: .\n"
18 |
19 | #: Puc/v4p3/Plugin/UpdateChecker.php:395
20 | msgid "Check for updates"
21 | msgstr "Comprobar si hay actualizaciones"
22 |
23 | #: Puc/v4p3/Plugin/UpdateChecker.php:548
24 | #, php-format
25 | msgctxt "the plugin title"
26 | msgid "The %s plugin is up to date."
27 | msgstr "El plugin %s está actualizado."
28 |
29 | #: Puc/v4p3/Plugin/UpdateChecker.php:550
30 | #, php-format
31 | msgctxt "the plugin title"
32 | msgid "A new version of the %s plugin is available."
33 | msgstr "Una nueva versión del %s plugin está disponible."
34 |
35 | #: Puc/v4p3/Plugin/UpdateChecker.php:552
36 | #, php-format
37 | msgctxt "the plugin title"
38 | msgid "Could not determine if updates are available for %s."
39 | msgstr "No se pudo determinar si hay actualizaciones disponibles para %s."
40 |
41 | #: Puc/v4p3/Plugin/UpdateChecker.php:558
42 | #, php-format
43 | msgid "Unknown update checker status \"%s\""
44 | msgstr "Estado del comprobador de actualización desconocido «%s»"
45 |
46 | #: Puc/v4p3/Vcs/PluginUpdateChecker.php:95
47 | msgid "There is no changelog available."
48 | msgstr "No hay un registro de cambios disponible."
49 |
--------------------------------------------------------------------------------
/plugin-update-checker/languages/plugin-update-checker-es_ES.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: plugin-update-checker\n"
4 | "POT-Creation-Date: 2017-11-24 17:02+0200\n"
5 | "PO-Revision-Date: 2020-03-21 14:56-0400\n"
6 | "Language-Team: \n"
7 | "MIME-Version: 1.0\n"
8 | "Content-Type: text/plain; charset=UTF-8\n"
9 | "Content-Transfer-Encoding: 8bit\n"
10 | "X-Generator: Poedit 2.3\n"
11 | "X-Poedit-Basepath: ..\n"
12 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13 | "X-Poedit-SourceCharset: UTF-8\n"
14 | "X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n"
15 | "Last-Translator: \n"
16 | "Language: es_ES\n"
17 | "X-Poedit-SearchPath-0: .\n"
18 |
19 | #: Puc/v4p3/Plugin/UpdateChecker.php:395
20 | msgid "Check for updates"
21 | msgstr "Comprobar si hay actualizaciones"
22 |
23 | #: Puc/v4p3/Plugin/UpdateChecker.php:548
24 | #, php-format
25 | msgctxt "the plugin title"
26 | msgid "The %s plugin is up to date."
27 | msgstr "El plugin %s está actualizado."
28 |
29 | #: Puc/v4p3/Plugin/UpdateChecker.php:550
30 | #, php-format
31 | msgctxt "the plugin title"
32 | msgid "A new version of the %s plugin is available."
33 | msgstr "Una nueva versión del %s plugin está disponible."
34 |
35 | #: Puc/v4p3/Plugin/UpdateChecker.php:552
36 | #, php-format
37 | msgctxt "the plugin title"
38 | msgid "Could not determine if updates are available for %s."
39 | msgstr "No se pudo determinar si hay actualizaciones disponibles para %s."
40 |
41 | #: Puc/v4p3/Plugin/UpdateChecker.php:558
42 | #, php-format
43 | msgid "Unknown update checker status \"%s\""
44 | msgstr "Estado del comprobador de actualización desconocido «%s»"
45 |
46 | #: Puc/v4p3/Vcs/PluginUpdateChecker.php:95
47 | msgid "There is no changelog available."
48 | msgstr "No hay un registro de cambios disponible."
49 |
--------------------------------------------------------------------------------
/plugin-update-checker/languages/plugin-update-checker-es_GT.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: plugin-update-checker\n"
4 | "POT-Creation-Date: 2017-11-24 17:02+0200\n"
5 | "PO-Revision-Date: 2020-03-21 15:14-0400\n"
6 | "Language-Team: \n"
7 | "MIME-Version: 1.0\n"
8 | "Content-Type: text/plain; charset=UTF-8\n"
9 | "Content-Transfer-Encoding: 8bit\n"
10 | "X-Generator: Poedit 2.3\n"
11 | "X-Poedit-Basepath: ..\n"
12 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13 | "X-Poedit-SourceCharset: UTF-8\n"
14 | "X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n"
15 | "Last-Translator: \n"
16 | "Language: es_ES\n"
17 | "X-Poedit-SearchPath-0: .\n"
18 |
19 | #: Puc/v4p3/Plugin/UpdateChecker.php:395
20 | msgid "Check for updates"
21 | msgstr "Comprobar si hay actualizaciones"
22 |
23 | #: Puc/v4p3/Plugin/UpdateChecker.php:548
24 | #, php-format
25 | msgctxt "the plugin title"
26 | msgid "The %s plugin is up to date."
27 | msgstr "El plugin %s está actualizado."
28 |
29 | #: Puc/v4p3/Plugin/UpdateChecker.php:550
30 | #, php-format
31 | msgctxt "the plugin title"
32 | msgid "A new version of the %s plugin is available."
33 | msgstr "Una nueva versión del %s plugin está disponible."
34 |
35 | #: Puc/v4p3/Plugin/UpdateChecker.php:552
36 | #, php-format
37 | msgctxt "the plugin title"
38 | msgid "Could not determine if updates are available for %s."
39 | msgstr "No se pudo determinar si hay actualizaciones disponibles para %s."
40 |
41 | #: Puc/v4p3/Plugin/UpdateChecker.php:558
42 | #, php-format
43 | msgid "Unknown update checker status \"%s\""
44 | msgstr "Estado del comprobador de actualización desconocido «%s»"
45 |
46 | #: Puc/v4p3/Vcs/PluginUpdateChecker.php:95
47 | msgid "There is no changelog available."
48 | msgstr "No hay un registro de cambios disponible."
49 |
--------------------------------------------------------------------------------
/plugin-update-checker/languages/plugin-update-checker-es_HN.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: plugin-update-checker\n"
4 | "POT-Creation-Date: 2017-11-24 17:02+0200\n"
5 | "PO-Revision-Date: 2020-03-21 15:14-0400\n"
6 | "Language-Team: \n"
7 | "MIME-Version: 1.0\n"
8 | "Content-Type: text/plain; charset=UTF-8\n"
9 | "Content-Transfer-Encoding: 8bit\n"
10 | "X-Generator: Poedit 2.3\n"
11 | "X-Poedit-Basepath: ..\n"
12 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13 | "X-Poedit-SourceCharset: UTF-8\n"
14 | "X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n"
15 | "Last-Translator: \n"
16 | "Language: es_ES\n"
17 | "X-Poedit-SearchPath-0: .\n"
18 |
19 | #: Puc/v4p3/Plugin/UpdateChecker.php:395
20 | msgid "Check for updates"
21 | msgstr "Comprobar si hay actualizaciones"
22 |
23 | #: Puc/v4p3/Plugin/UpdateChecker.php:548
24 | #, php-format
25 | msgctxt "the plugin title"
26 | msgid "The %s plugin is up to date."
27 | msgstr "El plugin %s está actualizado."
28 |
29 | #: Puc/v4p3/Plugin/UpdateChecker.php:550
30 | #, php-format
31 | msgctxt "the plugin title"
32 | msgid "A new version of the %s plugin is available."
33 | msgstr "Una nueva versión del %s plugin está disponible."
34 |
35 | #: Puc/v4p3/Plugin/UpdateChecker.php:552
36 | #, php-format
37 | msgctxt "the plugin title"
38 | msgid "Could not determine if updates are available for %s."
39 | msgstr "No se pudo determinar si hay actualizaciones disponibles para %s."
40 |
41 | #: Puc/v4p3/Plugin/UpdateChecker.php:558
42 | #, php-format
43 | msgid "Unknown update checker status \"%s\""
44 | msgstr "Estado del comprobador de actualización desconocido «%s»"
45 |
46 | #: Puc/v4p3/Vcs/PluginUpdateChecker.php:95
47 | msgid "There is no changelog available."
48 | msgstr "No hay un registro de cambios disponible."
49 |
--------------------------------------------------------------------------------
/plugin-update-checker/languages/plugin-update-checker-es_MX.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: plugin-update-checker\n"
4 | "POT-Creation-Date: 2017-11-24 17:02+0200\n"
5 | "PO-Revision-Date: 2020-03-21 14:57-0400\n"
6 | "Language-Team: \n"
7 | "MIME-Version: 1.0\n"
8 | "Content-Type: text/plain; charset=UTF-8\n"
9 | "Content-Transfer-Encoding: 8bit\n"
10 | "X-Generator: Poedit 2.3\n"
11 | "X-Poedit-Basepath: ..\n"
12 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13 | "X-Poedit-SourceCharset: UTF-8\n"
14 | "X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n"
15 | "Last-Translator: \n"
16 | "Language: es_ES\n"
17 | "X-Poedit-SearchPath-0: .\n"
18 |
19 | #: Puc/v4p3/Plugin/UpdateChecker.php:395
20 | msgid "Check for updates"
21 | msgstr "Comprobar si hay actualizaciones"
22 |
23 | #: Puc/v4p3/Plugin/UpdateChecker.php:548
24 | #, php-format
25 | msgctxt "the plugin title"
26 | msgid "The %s plugin is up to date."
27 | msgstr "El plugin %s está actualizado."
28 |
29 | #: Puc/v4p3/Plugin/UpdateChecker.php:550
30 | #, php-format
31 | msgctxt "the plugin title"
32 | msgid "A new version of the %s plugin is available."
33 | msgstr "Una nueva versión del %s plugin está disponible."
34 |
35 | #: Puc/v4p3/Plugin/UpdateChecker.php:552
36 | #, php-format
37 | msgctxt "the plugin title"
38 | msgid "Could not determine if updates are available for %s."
39 | msgstr "No se pudo determinar si hay actualizaciones disponibles para %s."
40 |
41 | #: Puc/v4p3/Plugin/UpdateChecker.php:558
42 | #, php-format
43 | msgid "Unknown update checker status \"%s\""
44 | msgstr "Estado del comprobador de actualización desconocido «%s»"
45 |
46 | #: Puc/v4p3/Vcs/PluginUpdateChecker.php:95
47 | msgid "There is no changelog available."
48 | msgstr "No hay un registro de cambios disponible."
49 |
--------------------------------------------------------------------------------
/plugin-update-checker/languages/plugin-update-checker-es_PE.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: plugin-update-checker\n"
4 | "POT-Creation-Date: 2017-11-24 17:02+0200\n"
5 | "PO-Revision-Date: 2020-03-21 15:15-0400\n"
6 | "Language-Team: \n"
7 | "MIME-Version: 1.0\n"
8 | "Content-Type: text/plain; charset=UTF-8\n"
9 | "Content-Transfer-Encoding: 8bit\n"
10 | "X-Generator: Poedit 2.3\n"
11 | "X-Poedit-Basepath: ..\n"
12 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13 | "X-Poedit-SourceCharset: UTF-8\n"
14 | "X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n"
15 | "Last-Translator: \n"
16 | "Language: es_ES\n"
17 | "X-Poedit-SearchPath-0: .\n"
18 |
19 | #: Puc/v4p3/Plugin/UpdateChecker.php:395
20 | msgid "Check for updates"
21 | msgstr "Comprobar si hay actualizaciones"
22 |
23 | #: Puc/v4p3/Plugin/UpdateChecker.php:548
24 | #, php-format
25 | msgctxt "the plugin title"
26 | msgid "The %s plugin is up to date."
27 | msgstr "El plugin %s está actualizado."
28 |
29 | #: Puc/v4p3/Plugin/UpdateChecker.php:550
30 | #, php-format
31 | msgctxt "the plugin title"
32 | msgid "A new version of the %s plugin is available."
33 | msgstr "Una nueva versión del %s plugin está disponible."
34 |
35 | #: Puc/v4p3/Plugin/UpdateChecker.php:552
36 | #, php-format
37 | msgctxt "the plugin title"
38 | msgid "Could not determine if updates are available for %s."
39 | msgstr "No se pudo determinar si hay actualizaciones disponibles para %s."
40 |
41 | #: Puc/v4p3/Plugin/UpdateChecker.php:558
42 | #, php-format
43 | msgid "Unknown update checker status \"%s\""
44 | msgstr "Estado del comprobador de actualización desconocido «%s»"
45 |
46 | #: Puc/v4p3/Vcs/PluginUpdateChecker.php:95
47 | msgid "There is no changelog available."
48 | msgstr "No hay un registro de cambios disponible."
49 |
--------------------------------------------------------------------------------
/plugin-update-checker/languages/plugin-update-checker-es_PR.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: plugin-update-checker\n"
4 | "POT-Creation-Date: 2017-11-24 17:02+0200\n"
5 | "PO-Revision-Date: 2020-03-21 15:15-0400\n"
6 | "Language-Team: \n"
7 | "MIME-Version: 1.0\n"
8 | "Content-Type: text/plain; charset=UTF-8\n"
9 | "Content-Transfer-Encoding: 8bit\n"
10 | "X-Generator: Poedit 2.3\n"
11 | "X-Poedit-Basepath: ..\n"
12 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13 | "X-Poedit-SourceCharset: UTF-8\n"
14 | "X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n"
15 | "Last-Translator: \n"
16 | "Language: es_ES\n"
17 | "X-Poedit-SearchPath-0: .\n"
18 |
19 | #: Puc/v4p3/Plugin/UpdateChecker.php:395
20 | msgid "Check for updates"
21 | msgstr "Comprobar si hay actualizaciones"
22 |
23 | #: Puc/v4p3/Plugin/UpdateChecker.php:548
24 | #, php-format
25 | msgctxt "the plugin title"
26 | msgid "The %s plugin is up to date."
27 | msgstr "El plugin %s está actualizado."
28 |
29 | #: Puc/v4p3/Plugin/UpdateChecker.php:550
30 | #, php-format
31 | msgctxt "the plugin title"
32 | msgid "A new version of the %s plugin is available."
33 | msgstr "Una nueva versión del %s plugin está disponible."
34 |
35 | #: Puc/v4p3/Plugin/UpdateChecker.php:552
36 | #, php-format
37 | msgctxt "the plugin title"
38 | msgid "Could not determine if updates are available for %s."
39 | msgstr "No se pudo determinar si hay actualizaciones disponibles para %s."
40 |
41 | #: Puc/v4p3/Plugin/UpdateChecker.php:558
42 | #, php-format
43 | msgid "Unknown update checker status \"%s\""
44 | msgstr "Estado del comprobador de actualización desconocido «%s»"
45 |
46 | #: Puc/v4p3/Vcs/PluginUpdateChecker.php:95
47 | msgid "There is no changelog available."
48 | msgstr "No hay un registro de cambios disponible."
49 |
--------------------------------------------------------------------------------
/plugin-update-checker/languages/plugin-update-checker-es_UY.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: plugin-update-checker\n"
4 | "POT-Creation-Date: 2017-11-24 17:02+0200\n"
5 | "PO-Revision-Date: 2020-03-21 15:15-0400\n"
6 | "Language-Team: \n"
7 | "MIME-Version: 1.0\n"
8 | "Content-Type: text/plain; charset=UTF-8\n"
9 | "Content-Transfer-Encoding: 8bit\n"
10 | "X-Generator: Poedit 2.3\n"
11 | "X-Poedit-Basepath: ..\n"
12 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13 | "X-Poedit-SourceCharset: UTF-8\n"
14 | "X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n"
15 | "Last-Translator: \n"
16 | "Language: es_ES\n"
17 | "X-Poedit-SearchPath-0: .\n"
18 |
19 | #: Puc/v4p3/Plugin/UpdateChecker.php:395
20 | msgid "Check for updates"
21 | msgstr "Comprobar si hay actualizaciones"
22 |
23 | #: Puc/v4p3/Plugin/UpdateChecker.php:548
24 | #, php-format
25 | msgctxt "the plugin title"
26 | msgid "The %s plugin is up to date."
27 | msgstr "El plugin %s está actualizado."
28 |
29 | #: Puc/v4p3/Plugin/UpdateChecker.php:550
30 | #, php-format
31 | msgctxt "the plugin title"
32 | msgid "A new version of the %s plugin is available."
33 | msgstr "Una nueva versión del %s plugin está disponible."
34 |
35 | #: Puc/v4p3/Plugin/UpdateChecker.php:552
36 | #, php-format
37 | msgctxt "the plugin title"
38 | msgid "Could not determine if updates are available for %s."
39 | msgstr "No se pudo determinar si hay actualizaciones disponibles para %s."
40 |
41 | #: Puc/v4p3/Plugin/UpdateChecker.php:558
42 | #, php-format
43 | msgid "Unknown update checker status \"%s\""
44 | msgstr "Estado del comprobador de actualización desconocido «%s»"
45 |
46 | #: Puc/v4p3/Vcs/PluginUpdateChecker.php:95
47 | msgid "There is no changelog available."
48 | msgstr "No hay un registro de cambios disponible."
49 |
--------------------------------------------------------------------------------
/plugin-update-checker/languages/plugin-update-checker-es_VE.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: plugin-update-checker\n"
4 | "POT-Creation-Date: 2017-11-24 17:02+0200\n"
5 | "PO-Revision-Date: 2020-03-21 14:57-0400\n"
6 | "Language-Team: \n"
7 | "MIME-Version: 1.0\n"
8 | "Content-Type: text/plain; charset=UTF-8\n"
9 | "Content-Transfer-Encoding: 8bit\n"
10 | "X-Generator: Poedit 2.3\n"
11 | "X-Poedit-Basepath: ..\n"
12 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13 | "X-Poedit-SourceCharset: UTF-8\n"
14 | "X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n"
15 | "Last-Translator: \n"
16 | "Language: es_ES\n"
17 | "X-Poedit-SearchPath-0: .\n"
18 |
19 | #: Puc/v4p3/Plugin/UpdateChecker.php:395
20 | msgid "Check for updates"
21 | msgstr "Comprobar si hay actualizaciones"
22 |
23 | #: Puc/v4p3/Plugin/UpdateChecker.php:548
24 | #, php-format
25 | msgctxt "the plugin title"
26 | msgid "The %s plugin is up to date."
27 | msgstr "El plugin %s está actualizado."
28 |
29 | #: Puc/v4p3/Plugin/UpdateChecker.php:550
30 | #, php-format
31 | msgctxt "the plugin title"
32 | msgid "A new version of the %s plugin is available."
33 | msgstr "Una nueva versión del %s plugin está disponible."
34 |
35 | #: Puc/v4p3/Plugin/UpdateChecker.php:552
36 | #, php-format
37 | msgctxt "the plugin title"
38 | msgid "Could not determine if updates are available for %s."
39 | msgstr "No se pudo determinar si hay actualizaciones disponibles para %s."
40 |
41 | #: Puc/v4p3/Plugin/UpdateChecker.php:558
42 | #, php-format
43 | msgid "Unknown update checker status \"%s\""
44 | msgstr "Estado del comprobador de actualización desconocido «%s»"
45 |
46 | #: Puc/v4p3/Vcs/PluginUpdateChecker.php:95
47 | msgid "There is no changelog available."
48 | msgstr "No hay un registro de cambios disponible."
49 |
--------------------------------------------------------------------------------
/plugin-update-checker/languages/plugin-update-checker-fr_CA.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: plugin-update-checker\n"
4 | "POT-Creation-Date: 2017-11-24 17:02+0200\n"
5 | "PO-Revision-Date: 2018-02-12 10:32-0500\n"
6 | "Language-Team: \n"
7 | "MIME-Version: 1.0\n"
8 | "Content-Type: text/plain; charset=UTF-8\n"
9 | "Content-Transfer-Encoding: 8bit\n"
10 | "X-Generator: Poedit 2.0.4\n"
11 | "X-Poedit-Basepath: ..\n"
12 | "Plural-Forms: nplurals=2; plural=(n > 1);\n"
13 | "X-Poedit-SourceCharset: UTF-8\n"
14 | "X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n"
15 | "Last-Translator: Eric Gagnon \n"
16 | "Language: fr_CA\n"
17 | "X-Poedit-SearchPath-0: .\n"
18 |
19 | #: Puc/v4p3/Plugin/UpdateChecker.php:395
20 | msgid "Check for updates"
21 | msgstr "Vérifier les mises à jour"
22 |
23 | #: Puc/v4p3/Plugin/UpdateChecker.php:548
24 | #, php-format
25 | msgctxt "the plugin title"
26 | msgid "The %s plugin is up to date."
27 | msgstr "L’extension %s est à jour."
28 |
29 | #: Puc/v4p3/Plugin/UpdateChecker.php:550
30 | #, php-format
31 | msgctxt "the plugin title"
32 | msgid "A new version of the %s plugin is available."
33 | msgstr "Une nouvelle version de l’extension %s est disponible."
34 |
35 | #: Puc/v4p3/Plugin/UpdateChecker.php:552
36 | #, php-format
37 | msgctxt "the plugin title"
38 | msgid "Could not determine if updates are available for %s."
39 | msgstr "Impossible de déterminer si une mise à jour est disponible pour \"%s\""
40 |
41 | #: Puc/v4p3/Plugin/UpdateChecker.php:558
42 | #, php-format
43 | msgid "Unknown update checker status \"%s\""
44 | msgstr "Un problème inconnu est survenu \"%s\""
45 |
46 | #: Puc/v4p3/Vcs/PluginUpdateChecker.php:95
47 | msgid "There is no changelog available."
48 | msgstr "Il n’y a aucun journal de mise à jour disponible."
49 |
--------------------------------------------------------------------------------
/plugin-update-checker/languages/plugin-update-checker-sl_SI.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: plugin-update-checker\n"
4 | "POT-Creation-Date: 2017-11-24 17:02+0200\n"
5 | "PO-Revision-Date: 2018-10-27 20:36+0200\n"
6 | "Language-Team: \n"
7 | "MIME-Version: 1.0\n"
8 | "Content-Type: text/plain; charset=UTF-8\n"
9 | "Content-Transfer-Encoding: 8bit\n"
10 | "X-Generator: Poedit 2.2\n"
11 | "X-Poedit-Basepath: ..\n"
12 | "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100>=3 && n%100<=4 ? 2 : 3);\n"
13 | "X-Poedit-SourceCharset: UTF-8\n"
14 | "X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n"
15 | "Last-Translator: Igor Funa\n"
16 | "Language: sl_SI\n"
17 | "X-Poedit-SearchPath-0: .\n"
18 |
19 | #: Puc/v4p3/Plugin/UpdateChecker.php:395
20 | msgid "Check for updates"
21 | msgstr "Preveri posodobitve"
22 |
23 | #: Puc/v4p3/Plugin/UpdateChecker.php:548
24 | #, php-format
25 | msgctxt "the plugin title"
26 | msgid "The %s plugin is up to date."
27 | msgstr "Vtičnik %s je že posodobljen."
28 |
29 | #: Puc/v4p3/Plugin/UpdateChecker.php:550
30 | #, php-format
31 | msgctxt "the plugin title"
32 | msgid "A new version of the %s plugin is available."
33 | msgstr "Nova različica vtičnika %s je na razpolago."
34 |
35 | #: Puc/v4p3/Plugin/UpdateChecker.php:552
36 | #, php-format
37 | msgctxt "the plugin title"
38 | msgid "Could not determine if updates are available for %s."
39 | msgstr "Ne morem ugotoviti če se za vtičnik %s na razpolago posodobitve."
40 |
41 | #: Puc/v4p3/Plugin/UpdateChecker.php:558
42 | #, php-format
43 | msgid "Unknown update checker status \"%s\""
44 | msgstr "Neznan status preverjanja posodobitev za \"%s\""
45 |
46 | #: Puc/v4p3/Vcs/PluginUpdateChecker.php:95
47 | msgid "There is no changelog available."
48 | msgstr "Dnevnik sprememb ni na razpolago."
49 |
--------------------------------------------------------------------------------
/plugin-update-checker/languages/plugin-update-checker-pt_BR.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: plugin-update-checker\n"
4 | "POT-Creation-Date: 2017-05-19 15:41-0300\n"
5 | "PO-Revision-Date: 2017-05-19 15:42-0300\n"
6 | "Last-Translator: \n"
7 | "Language-Team: \n"
8 | "Language: pt_BR\n"
9 | "MIME-Version: 1.0\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Content-Transfer-Encoding: 8bit\n"
12 | "X-Generator: Poedit 1.8.8\n"
13 | "X-Poedit-Basepath: ..\n"
14 | "Plural-Forms: nplurals=2; plural=(n > 1);\n"
15 | "X-Poedit-SourceCharset: UTF-8\n"
16 | "X-Poedit-KeywordsList: __;_e;_x;_x:1,2c\n"
17 | "X-Poedit-SearchPath-0: .\n"
18 |
19 | #: Puc/v4p1/Plugin/UpdateChecker.php:358
20 | msgid "Check for updates"
21 | msgstr "Verificar Atualizações"
22 |
23 | #: Puc/v4p1/Plugin/UpdateChecker.php:401 Puc/v4p1/Plugin/UpdateChecker.php:406
24 | #, php-format
25 | msgctxt "the plugin title"
26 | msgid "The %s plugin is up to date."
27 | msgstr "O plugin %s já está na sua versão mais recente."
28 |
29 | #: Puc/v4p1/Plugin/UpdateChecker.php:408
30 | #, php-format
31 | msgctxt "the plugin title"
32 | msgid "A new version of the %s plugin is available."
33 | msgstr "Há uma nova versão para o plugin %s disponível para download."
34 |
35 | #: Puc/v4p1/Plugin/UpdateChecker.php:410
36 | #, php-format
37 | msgid "Unknown update checker status \"%s\""
38 | msgstr "Status \"%s\" desconhecido."
39 |
40 | #: Puc/v4p1/Vcs/PluginUpdateChecker.php:83
41 | msgid "There is no changelog available."
42 | msgstr "Não há um changelog disponível."
43 |
44 | #~ msgid "The %s plugin is up to date."
45 | #~ msgstr "O plugin %s já está na sua versão mais recente."
46 |
47 | #~ msgid "A new version of the %s plugin is available."
48 | #~ msgstr "Há uma nova versão para o plugin %s disponível para download."
49 |
--------------------------------------------------------------------------------
/plugin-update-checker/languages/plugin-update-checker-nl_BE.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: plugin-update-checker\n"
4 | "POT-Creation-Date: 2018-03-25 18:15+0200\n"
5 | "PO-Revision-Date: 2018-03-25 18:32+0200\n"
6 | "Language-Team: \n"
7 | "MIME-Version: 1.0\n"
8 | "Content-Type: text/plain; charset=UTF-8\n"
9 | "Content-Transfer-Encoding: 8bit\n"
10 | "X-Generator: Poedit 1.8.7.1\n"
11 | "X-Poedit-Basepath: ..\n"
12 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13 | "X-Poedit-SourceCharset: UTF-8\n"
14 | "X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n"
15 | "Last-Translator: Frank Goossens \n"
16 | "Language: nl_BE\n"
17 | "X-Poedit-SearchPath-0: .\n"
18 |
19 | #: Puc/v4p3/Plugin/UpdateChecker.php:395
20 | msgid "Check for updates"
21 | msgstr "Controleer op nieuwe versies"
22 |
23 | #: Puc/v4p3/Plugin/UpdateChecker.php:548
24 | #, php-format
25 | msgctxt "the plugin title"
26 | msgid "The %s plugin is up to date."
27 | msgstr "De meest recente %s versie is geïnstalleerd."
28 |
29 | #: Puc/v4p3/Plugin/UpdateChecker.php:550
30 | #, php-format
31 | msgctxt "the plugin title"
32 | msgid "A new version of the %s plugin is available."
33 | msgstr "Er is een nieuwe versie van %s beschikbaar."
34 |
35 | #: Puc/v4p3/Plugin/UpdateChecker.php:552
36 | #, php-format
37 | msgctxt "the plugin title"
38 | msgid "Could not determine if updates are available for %s."
39 | msgstr "Kon niet bepalen of er nieuwe versie van %s beschikbaar is."
40 |
41 | #: Puc/v4p3/Plugin/UpdateChecker.php:558
42 | #, php-format
43 | msgid "Unknown update checker status \"%s\""
44 | msgstr "Ongekende status bij controle op nieuwe versie: \"%s\""
45 |
46 | #: Puc/v4p3/Vcs/PluginUpdateChecker.php:95
47 | msgid "There is no changelog available."
48 | msgstr "Er is geen changelog beschikbaar."
49 |
--------------------------------------------------------------------------------
/plugin-update-checker/languages/plugin-update-checker-nl_NL.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: plugin-update-checker\n"
4 | "POT-Creation-Date: 2018-03-25 18:15+0200\n"
5 | "PO-Revision-Date: 2018-03-25 18:32+0200\n"
6 | "Language-Team: \n"
7 | "MIME-Version: 1.0\n"
8 | "Content-Type: text/plain; charset=UTF-8\n"
9 | "Content-Transfer-Encoding: 8bit\n"
10 | "X-Generator: Poedit 1.8.7.1\n"
11 | "X-Poedit-Basepath: ..\n"
12 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13 | "X-Poedit-SourceCharset: UTF-8\n"
14 | "X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n"
15 | "Last-Translator: Frank Goossens \n"
16 | "Language: nl_NL\n"
17 | "X-Poedit-SearchPath-0: .\n"
18 |
19 | #: Puc/v4p3/Plugin/UpdateChecker.php:395
20 | msgid "Check for updates"
21 | msgstr "Controleer op nieuwe versies"
22 |
23 | #: Puc/v4p3/Plugin/UpdateChecker.php:548
24 | #, php-format
25 | msgctxt "the plugin title"
26 | msgid "The %s plugin is up to date."
27 | msgstr "De meest recente %s versie is geïnstalleerd."
28 |
29 | #: Puc/v4p3/Plugin/UpdateChecker.php:550
30 | #, php-format
31 | msgctxt "the plugin title"
32 | msgid "A new version of the %s plugin is available."
33 | msgstr "Er is een nieuwe versie van %s beschikbaar."
34 |
35 | #: Puc/v4p3/Plugin/UpdateChecker.php:552
36 | #, php-format
37 | msgctxt "the plugin title"
38 | msgid "Could not determine if updates are available for %s."
39 | msgstr "Kon niet bepalen of er nieuwe versie van %s beschikbaar is."
40 |
41 | #: Puc/v4p3/Plugin/UpdateChecker.php:558
42 | #, php-format
43 | msgid "Unknown update checker status \"%s\""
44 | msgstr "Ongekende status bij controle op nieuwe versie: \"%s\""
45 |
46 | #: Puc/v4p3/Vcs/PluginUpdateChecker.php:95
47 | msgid "There is no changelog available."
48 | msgstr "Er is geen changelog beschikbaar."
49 |
--------------------------------------------------------------------------------
/plugin-update-checker/languages/plugin-update-checker-ja.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: \n"
4 | "POT-Creation-Date: 2019-07-15 17:07+0900\n"
5 | "PO-Revision-Date: 2019-07-15 17:12+0900\n"
6 | "Last-Translator: tak \n"
7 | "Language-Team: \n"
8 | "Language: ja_JP\n"
9 | "MIME-Version: 1.0\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Content-Transfer-Encoding: 8bit\n"
12 | "X-Generator: Poedit 2.2.3\n"
13 | "X-Poedit-Basepath: ../../../../../../Applications/XAMPP/xamppfiles/htdocs/"
14 | "kisagai/wordpress/wp-content/plugins/simple-stripe-gateway/Puc\n"
15 | "Plural-Forms: nplurals=1; plural=0;\n"
16 | "X-Poedit-KeywordsList: __;_x:1,2c\n"
17 | "X-Poedit-SearchPath-0: .\n"
18 |
19 | #: v4p7/Plugin/Ui.php:54
20 | msgid "View details"
21 | msgstr "詳細を表示"
22 |
23 | #: v4p7/Plugin/Ui.php:77
24 | #, php-format
25 | msgid "More information about %s"
26 | msgstr "%sについての詳細"
27 |
28 | #: v4p7/Plugin/Ui.php:128
29 | msgid "Check for updates"
30 | msgstr "アップデートを確認"
31 |
32 | #: v4p7/Plugin/Ui.php:213
33 | #, php-format
34 | msgctxt "the plugin title"
35 | msgid "The %s plugin is up to date."
36 | msgstr "%s プラグインは、最新バージョンです。"
37 |
38 | #: v4p7/Plugin/Ui.php:215
39 | #, php-format
40 | msgctxt "the plugin title"
41 | msgid "A new version of the %s plugin is available."
42 | msgstr "%s プラグインの最新バージョンがあります。"
43 |
44 | #: v4p7/Plugin/Ui.php:217
45 | #, php-format
46 | msgctxt "the plugin title"
47 | msgid "Could not determine if updates are available for %s."
48 | msgstr "%s のアップデートがあるかどうかを判断できませんでした。"
49 |
50 | #: v4p7/Plugin/Ui.php:223
51 | #, php-format
52 | msgid "Unknown update checker status \"%s\""
53 | msgstr "バージョンアップの確認で想定外の状態になりました。ステータス:”%s”"
54 |
55 | #: v4p7/Vcs/PluginUpdateChecker.php:98
56 | msgid "There is no changelog available."
57 | msgstr "更新履歴はありません。"
58 |
--------------------------------------------------------------------------------
/plugin-update-checker/languages/plugin-update-checker-el.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: plugin-update-checker\n"
4 | "POT-Creation-Date: 2022-07-29 15:34+0300\n"
5 | "PO-Revision-Date: 2024-05-09 22:22+0000\n"
6 | "Last-Translator: theogk\n"
7 | "Language-Team: Ελληνικά\n"
8 | "Language: el\n"
9 | "MIME-Version: 1.0\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Content-Transfer-Encoding: 8bit\n"
12 | "Plural-Forms: nplurals=2; plural=n != 1;\n"
13 | "X-Generator: Loco https://localise.biz/\n"
14 | "X-Poedit-Basepath: ..\n"
15 | "X-Poedit-SourceCharset: UTF-8\n"
16 | "X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n"
17 | "X-Poedit-SearchPath-0: .\n"
18 | "Report-Msgid-Bugs-To: \n"
19 | "X-Loco-Version: 2.6.9; wp-6.5.3"
20 |
21 | #: Puc/v5p4/Plugin/Ui.php:128
22 | msgid "Check for updates"
23 | msgstr "Έλεγχος για ενημερώσεις"
24 |
25 | #: Puc/v5p4/Plugin/Ui.php:214
26 | #, php-format
27 | msgctxt "the plugin title"
28 | msgid "The %s plugin is up to date."
29 | msgstr "Το πρόσθετο %s είναι ενημερωμένο."
30 |
31 | #: Puc/v5p4/Plugin/Ui.php:216
32 | #, php-format
33 | msgctxt "the plugin title"
34 | msgid "A new version of the %s plugin is available."
35 | msgstr "Μία νέα έκδοση είναι διαθέσιμη για το πρόσθετο %s."
36 |
37 | #: Puc/v5p4/Plugin/Ui.php:218
38 | #, php-format
39 | msgctxt "the plugin title"
40 | msgid "Could not determine if updates are available for %s."
41 | msgstr ""
42 | "Δεν ήταν εφικτό να εκτελεστεί ο έλεγχος για νέες ενημερώσεις για το πρόσθετο "
43 | "%s."
44 |
45 | #: Puc/v5p4/Plugin/Ui.php:224
46 | #, php-format
47 | msgid "Unknown update checker status \"%s\""
48 | msgstr "Άγνωστο πρόβλημα του ενημερωτή προσθέτων \"%s\""
49 |
50 | #: Puc/v5p4/Vcs/PluginUpdateChecker.php:100
51 | msgid "There is no changelog available."
52 | msgstr "Δεν υπάρχει διαθέσιμο αρχείο αλλαγών."
53 |
--------------------------------------------------------------------------------
/plugin-update-checker/examples/plugin.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "My Example Plugin",
3 | "version": "2.0",
4 | "download_url": "http://example.com/updates/example-plugin.zip",
5 |
6 | "homepage": "http://example.com/",
7 | "requires": "4.5",
8 | "tested": "4.8",
9 | "last_updated": "2017-01-01 16:17:00",
10 | "upgrade_notice": "Here's why you should upgrade...",
11 |
12 | "author": "Janis Elsts",
13 | "author_homepage": "http://example.com/",
14 |
15 | "sections": {
16 | "description": "(Required) Plugin description. Basic HTML can be used in all sections.",
17 | "installation": "(Recommended) Installation instructions.",
18 | "changelog": "(Recommended) Changelog. This section will be displayed by default when the user clicks 'View version x.y.z details'.
",
19 | "custom_section": "This is a custom section labeled 'Custom Section'."
20 | },
21 |
22 | "icons" : {
23 | "1x" : "http://w-shadow.com/files/external-update-example/assets/icon-128x128.png",
24 | "2x" : "http://w-shadow.com/files/external-update-example/assets/icon-256x256.png"
25 | },
26 |
27 | "banners": {
28 | "low": "http://w-shadow.com/files/external-update-example/assets/banner-772x250.png",
29 | "high": "http://w-shadow.com/files/external-update-example/assets/banner-1544x500.png"
30 | },
31 |
32 | "translations": [
33 | {
34 | "language": "fr_FR",
35 | "version": "4.0",
36 | "updated": "2016-04-22 23:22:42",
37 | "package": "http://example.com/updates/translations/french-language-pack.zip"
38 | },
39 | {
40 | "language": "de_DE",
41 | "version": "5.0",
42 | "updated": "2016-04-22 23:22:42",
43 | "package": "http://example.com/updates/translations/german-language-pack.zip"
44 | }
45 | ],
46 |
47 | "rating": 90,
48 | "num_ratings": 123,
49 |
50 | "downloaded": 1234,
51 | "active_installs": 12345
52 | }
--------------------------------------------------------------------------------
/plugin-update-checker/js/debug-bar.js:
--------------------------------------------------------------------------------
1 | jQuery(function($) {
2 |
3 | function runAjaxAction(button, action) {
4 | button = $(button);
5 | var panel = button.closest('.puc-debug-bar-panel-v5');
6 | var responseBox = button.closest('td').find('.puc-ajax-response');
7 |
8 | responseBox.text('Processing...').show();
9 | $.post(
10 | ajaxurl,
11 | {
12 | action : action,
13 | uid : panel.data('uid'),
14 | _wpnonce: panel.data('nonce')
15 | },
16 | function(data) {
17 | //The response contains HTML that should already be escaped in server-side code.
18 | //phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html
19 | responseBox.html(data);
20 | },
21 | 'html'
22 | );
23 | }
24 |
25 | $('.puc-debug-bar-panel-v5 input[name="puc-check-now-button"]').on('click', function() {
26 | runAjaxAction(this, 'puc_v5_debug_check_now');
27 | return false;
28 | });
29 |
30 | $('.puc-debug-bar-panel-v5 input[name="puc-request-info-button"]').on('click', function() {
31 | runAjaxAction(this, 'puc_v5_debug_request_info');
32 | return false;
33 | });
34 |
35 |
36 | // Debug Bar uses the panel class name as part of its link and container IDs. This means we can
37 | // end up with multiple identical IDs if more than one plugin uses the update checker library.
38 | // Fix it by replacing the class name with the plugin slug.
39 | var panels = $('#debug-menu-targets').find('.puc-debug-bar-panel-v5');
40 | panels.each(function() {
41 | var panel = $(this);
42 | var uid = panel.data('uid');
43 | var target = panel.closest('.debug-menu-target');
44 |
45 | //Change the panel wrapper ID.
46 | target.attr('id', 'debug-menu-target-puc-' + uid);
47 |
48 | //Change the menu link ID as well and point it at the new target ID.
49 | $('#debug-bar-menu').find('.puc-debug-menu-link-' + uid)
50 | .closest('.debug-menu-link')
51 | .attr('id', 'debug-menu-link-puc-' + uid)
52 | .attr('href', '#' + target.attr('id'));
53 | });
54 | });
--------------------------------------------------------------------------------
/plugin-update-checker/Puc/v4p11/Autoloader.php:
--------------------------------------------------------------------------------
1 | rootDir = dirname(__FILE__) . '/';
14 | $nameParts = explode('_', __CLASS__, 3);
15 | $this->prefix = $nameParts[0] . '_' . $nameParts[1] . '_';
16 |
17 | $this->libraryDir = $this->rootDir . '../..';
18 | if ( !self::isPhar() ) {
19 | $this->libraryDir = realpath($this->libraryDir);
20 | }
21 | $this->libraryDir = $this->libraryDir . '/';
22 |
23 | $this->staticMap = array(
24 | 'PucReadmeParser' => 'vendor/PucReadmeParser.php',
25 | 'Parsedown' => 'vendor/Parsedown.php',
26 | 'Puc_v4_Factory' => 'Puc/v4/Factory.php',
27 | );
28 |
29 | spl_autoload_register(array($this, 'autoload'));
30 | }
31 |
32 | /**
33 | * Determine if this file is running as part of a Phar archive.
34 | *
35 | * @return bool
36 | */
37 | private static function isPhar() {
38 | //Check if the current file path starts with "phar://".
39 | static $pharProtocol = 'phar://';
40 | return (substr(__FILE__, 0, strlen($pharProtocol)) === $pharProtocol);
41 | }
42 |
43 | public function autoload($className) {
44 | if ( isset($this->staticMap[$className]) && file_exists($this->libraryDir . $this->staticMap[$className]) ) {
45 | /** @noinspection PhpIncludeInspection */
46 | include ($this->libraryDir . $this->staticMap[$className]);
47 | return;
48 | }
49 |
50 | if (strpos($className, $this->prefix) === 0) {
51 | $path = substr($className, strlen($this->prefix));
52 | $path = str_replace('_', '/', $path);
53 | $path = $this->rootDir . $path . '.php';
54 |
55 | if (file_exists($path)) {
56 | /** @noinspection PhpIncludeInspection */
57 | include $path;
58 | }
59 | }
60 | }
61 | }
62 |
63 | endif;
64 |
--------------------------------------------------------------------------------
/plugin-update-checker/Puc/v4p11/Theme/Package.php:
--------------------------------------------------------------------------------
1 | stylesheet = $stylesheet;
17 | $this->theme = wp_get_theme($this->stylesheet);
18 |
19 | parent::__construct($updateChecker);
20 | }
21 |
22 | public function getInstalledVersion() {
23 | return $this->theme->get('Version');
24 | }
25 |
26 | public function getAbsoluteDirectoryPath() {
27 | if ( method_exists($this->theme, 'get_stylesheet_directory') ) {
28 | return $this->theme->get_stylesheet_directory(); //Available since WP 3.4.
29 | }
30 | return get_theme_root($this->stylesheet) . '/' . $this->stylesheet;
31 | }
32 |
33 | /**
34 | * Get the value of a specific plugin or theme header.
35 | *
36 | * @param string $headerName
37 | * @param string $defaultValue
38 | * @return string Either the value of the header, or $defaultValue if the header doesn't exist or is empty.
39 | */
40 | public function getHeaderValue($headerName, $defaultValue = '') {
41 | $value = $this->theme->get($headerName);
42 | if ( ($headerName === false) || ($headerName === '') ) {
43 | return $defaultValue;
44 | }
45 | return $value;
46 | }
47 |
48 | protected function getHeaderNames() {
49 | return array(
50 | 'Name' => 'Theme Name',
51 | 'ThemeURI' => 'Theme URI',
52 | 'Description' => 'Description',
53 | 'Author' => 'Author',
54 | 'AuthorURI' => 'Author URI',
55 | 'Version' => 'Version',
56 | 'Template' => 'Template',
57 | 'Status' => 'Status',
58 | 'Tags' => 'Tags',
59 | 'TextDomain' => 'Text Domain',
60 | 'DomainPath' => 'Domain Path',
61 | );
62 | }
63 | }
64 |
65 | endif;
66 |
--------------------------------------------------------------------------------
/embeds/strings.php:
--------------------------------------------------------------------------------
1 | 'Tämä upote saattaa käyttää evästeitä',
25 | 'embeds_description' => 'Salli kaikkien upotteiden näyttäminen hyväksymällä kaikki evästeet tai valitse alta näyttääksesi tämä upote kerran.',
26 | 'embeds_load_button' => 'Näytä vain tämä upote',
27 | 'embeds_category_title' => 'Upotteet',
28 | 'embeds_category_description' => 'Sivuston sisällöissä käytetään upotteita mm. videopalveluista ja sosiaalisen median palveluista. Sallimalla upotteiden evästeet, näet sivuston kaiken sisällön. Upotepalvelut saattavat käyttää evästeitä omaan analytiikkaansa ja markkinoinnin kohdentamiseen. ',
29 | ];
30 |
31 | return array_merge( $strings, $new_strings );
32 | } // end function get_strings
33 |
34 | /**
35 | * Register new cookie category for embeds.
36 | *
37 | * @param array $categories Cookie categories from air cookie
38 | * @return array New cookie categories with new ones added
39 | * @since 0.1.0
40 | */
41 | function register_embeds_cookie_category( $categories ) {
42 | $categories[] = [
43 | 'key' => get_embeds_cookie_category_key(),
44 | 'enabled' => false,
45 | 'readonly' => false,
46 | 'title' => \Air_Cookie\maybe_get_polylang_translation( 'embeds_category_title' ),
47 | 'description' => \Air_Cookie\maybe_get_polylang_translation( 'embeds_category_description' ),
48 | ];
49 |
50 | return $categories;
51 | } // end register_embeds_cookie_category
52 |
--------------------------------------------------------------------------------
/plugin-update-checker/Puc/v5p5/Theme/Package.php:
--------------------------------------------------------------------------------
1 | stylesheet = $stylesheet;
21 | $this->theme = wp_get_theme($this->stylesheet);
22 |
23 | parent::__construct($updateChecker);
24 | }
25 |
26 | public function getInstalledVersion() {
27 | return $this->theme->get('Version');
28 | }
29 |
30 | public function getAbsoluteDirectoryPath() {
31 | if ( method_exists($this->theme, 'get_stylesheet_directory') ) {
32 | return $this->theme->get_stylesheet_directory(); //Available since WP 3.4.
33 | }
34 | return get_theme_root($this->stylesheet) . '/' . $this->stylesheet;
35 | }
36 |
37 | /**
38 | * Get the value of a specific plugin or theme header.
39 | *
40 | * @param string $headerName
41 | * @param string $defaultValue
42 | * @return string Either the value of the header, or $defaultValue if the header doesn't exist or is empty.
43 | */
44 | public function getHeaderValue($headerName, $defaultValue = '') {
45 | $value = $this->theme->get($headerName);
46 | if ( ($headerName === false) || ($headerName === '') ) {
47 | return $defaultValue;
48 | }
49 | return $value;
50 | }
51 |
52 | protected function getHeaderNames() {
53 | return array(
54 | 'Name' => 'Theme Name',
55 | 'ThemeURI' => 'Theme URI',
56 | 'Description' => 'Description',
57 | 'Author' => 'Author',
58 | 'AuthorURI' => 'Author URI',
59 | 'Version' => 'Version',
60 | 'Template' => 'Template',
61 | 'Status' => 'Status',
62 | 'Tags' => 'Tags',
63 | 'TextDomain' => 'Text Domain',
64 | 'DomainPath' => 'Domain Path',
65 | );
66 | }
67 | }
68 |
69 | endif;
70 |
--------------------------------------------------------------------------------
/plugin-update-checker/Puc/v4p11/Utils.php:
--------------------------------------------------------------------------------
1 | $node) ) {
26 | $currentValue = $currentValue->$node;
27 | } else {
28 | return $default;
29 | }
30 | }
31 |
32 | return $currentValue;
33 | }
34 |
35 | /**
36 | * Get the first array element that is not empty.
37 | *
38 | * @param array $values
39 | * @param mixed|null $default Returns this value if there are no non-empty elements.
40 | * @return mixed|null
41 | */
42 | public static function findNotEmpty($values, $default = null) {
43 | if ( empty($values) ) {
44 | return $default;
45 | }
46 |
47 | foreach ($values as $value) {
48 | if ( !empty($value) ) {
49 | return $value;
50 | }
51 | }
52 |
53 | return $default;
54 | }
55 |
56 | /**
57 | * Check if the input string starts with the specified prefix.
58 | *
59 | * @param string $input
60 | * @param string $prefix
61 | * @return bool
62 | */
63 | public static function startsWith($input, $prefix) {
64 | $length = strlen($prefix);
65 | return (substr($input, 0, $length) === $prefix);
66 | }
67 | }
68 |
69 | endif;
70 |
--------------------------------------------------------------------------------
/plugin-update-checker/Puc/v5p5/Utils.php:
--------------------------------------------------------------------------------
1 | $node) ) {
27 | $currentValue = $currentValue->$node;
28 | } else {
29 | return $default;
30 | }
31 | }
32 |
33 | return $currentValue;
34 | }
35 |
36 | /**
37 | * Get the first array element that is not empty.
38 | *
39 | * @param array $values
40 | * @param mixed|null $default Returns this value if there are no non-empty elements.
41 | * @return mixed|null
42 | */
43 | public static function findNotEmpty($values, $default = null) {
44 | if ( empty($values) ) {
45 | return $default;
46 | }
47 |
48 | foreach ($values as $value) {
49 | if ( !empty($value) ) {
50 | return $value;
51 | }
52 | }
53 |
54 | return $default;
55 | }
56 |
57 | /**
58 | * Check if the input string starts with the specified prefix.
59 | *
60 | * @param string $input
61 | * @param string $prefix
62 | * @return bool
63 | */
64 | public static function startsWith($input, $prefix) {
65 | $length = strlen($prefix);
66 | return (substr($input, 0, $length) === $prefix);
67 | }
68 | }
69 |
70 | endif;
71 |
--------------------------------------------------------------------------------
/embeds/embeds.php:
--------------------------------------------------------------------------------
1 | prefix
50 | * @return string Database table name
51 | * @since 0.1.0
52 | */
53 | function get_database_table_name( $prefix = true ) {
54 | $table_name = 'air_cookie';
55 |
56 | if ( $prefix ) {
57 | global $wpdb;
58 | $table_name = $wpdb->prefix . $table_name;
59 | }
60 |
61 | return $table_name;
62 | } // end get_database_table_name
63 |
64 | /**
65 | * Get the setting name where installed database version is stored.
66 | *
67 | * @return string Option name
68 | * @since 0.1.0
69 | */
70 | function get_database_version_key() {
71 | return get_database_table_name( false ) . '_db_version';
72 | }
73 |
74 | /**
75 | * Get the current language for the site. If Polylang is not active,
76 | * return the locale of site.
77 | *
78 | * @return string Language.
79 | * @since 0.1.0
80 | */
81 | function get_current_language() {
82 | if ( function_exists( 'pll_current_language' ) ) {
83 | return pll_current_language();
84 | }
85 |
86 | return get_locale();
87 | } // end get_current_language
88 |
--------------------------------------------------------------------------------
/plugin-update-checker/Puc/v4p11/Theme/Update.php:
--------------------------------------------------------------------------------
1 | $this->slug,
19 | 'new_version' => $this->version,
20 | 'url' => $this->details_url,
21 | );
22 |
23 | if ( !empty($this->download_url) ) {
24 | $update['package'] = $this->download_url;
25 | }
26 |
27 | return $update;
28 | }
29 |
30 | /**
31 | * Create a new instance of Theme_Update from its JSON-encoded representation.
32 | *
33 | * @param string $json Valid JSON string representing a theme information object.
34 | * @return self New instance of ThemeUpdate, or NULL on error.
35 | */
36 | public static function fromJson($json) {
37 | $instance = new self();
38 | if ( !parent::createFromJson($json, $instance) ) {
39 | return null;
40 | }
41 | return $instance;
42 | }
43 |
44 | /**
45 | * Create a new instance by copying the necessary fields from another object.
46 | *
47 | * @param StdClass|Puc_v4p11_Theme_Update $object The source object.
48 | * @return Puc_v4p11_Theme_Update The new copy.
49 | */
50 | public static function fromObject($object) {
51 | $update = new self();
52 | $update->copyFields($object, $update);
53 | return $update;
54 | }
55 |
56 | /**
57 | * Basic validation.
58 | *
59 | * @param StdClass $apiResponse
60 | * @return bool|WP_Error
61 | */
62 | protected function validateMetadata($apiResponse) {
63 | $required = array('version', 'details_url');
64 | foreach($required as $key) {
65 | if ( !isset($apiResponse->$key) || empty($apiResponse->$key) ) {
66 | return new WP_Error(
67 | 'tuc-invalid-metadata',
68 | sprintf('The theme metadata is missing the required "%s" key.', $key)
69 | );
70 | }
71 | }
72 | return true;
73 | }
74 |
75 | protected function getFieldNames() {
76 | return array_merge(parent::getFieldNames(), self::$extraFields);
77 | }
78 |
79 | protected function getPrefixedFilter($tag) {
80 | return parent::getPrefixedFilter($tag) . '_theme';
81 | }
82 | }
83 |
84 | endif;
85 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | ### 1.3.1: 2025-10-08
2 | * Add GitHub Actions workflow for automated releases
3 | * Add .distignore file
4 |
5 | ### 1.3.0: 2024-12-12
6 |
7 | * Update PUC to v5 (T-23373)
8 |
9 | ### 1.2.10: 2024-06-05
10 |
11 | * Hide cookie consent box when all cookies are accepted via a button
12 |
13 | ### 1.2.9: 2024-05-10
14 |
15 | * Run all cookie JS scripts on page load
16 |
17 | ### 1.2.8: 2024-05-10
18 |
19 | * Don't send consent POST request with every request (issue #2)
20 |
21 | ### 1.2.7: 2024-03-14
22 |
23 | * Add index for the database if it does not exist
24 |
25 | ### 1.2.6: 2024-02-21
26 |
27 | * Unit test fixes
28 | * Bump tested WordPress version up to 6.4.3
29 | * More fixes for db query in record_consent
30 |
31 | ### 1.2.5: 2024-02-20
32 |
33 | * Add unit tests
34 | * Support PHP 8.3
35 | * Fix phpcs errors
36 | * Fix db query in record_consent
37 |
38 | ### 1.2.4: 2024-02-12
39 |
40 | * Change changelog format
41 | * Fix bunch of typos
42 | * Update PHP_Codesniffer rule excludes
43 | * Add .editorconfig
44 | * Use $wpdb->prepare() for SQL queries
45 | * Check for $data->visitorid and $data->revision before recording them to database
46 |
47 | ### 1.2.3: 2023-10-27
48 |
49 | * Support for activating all categories with `data-aircookie-accept` using value `all`
50 |
51 | ### 1.2.2: 2023-08-03
52 |
53 | * Update CookieConsent CSS to version 2.9.1
54 | * Filters to modify inline scripts
55 |
56 | ### 1.2.1: 2023-06-28
57 |
58 | * Update CookieConsent to version 2.9.1
59 |
60 | ### 1.2.0: 2022-08-24
61 |
62 | * Update CookieConsent to version 2.8.5
63 | * Elements with `data-aircookie-accept` attribute are listened for clicks, causing the category specified in the value to be accepted
64 | * Elements with `data-aircookie-remove-on` attribute are removed when the category specified is accepted
65 |
66 | ### 1.1.4: 2021-12-14
67 |
68 | * Fix JS loading issue by changing the inject priority
69 |
70 | ### 1.1.3: 2021-12-08
71 |
72 | * Fix JS error, undefined manager after embed group is accepted
73 | * Fix JS error, undefined CC element after consent
74 |
75 | ### 1.1.2: 2021-11-01
76 |
77 | * Fix string register if Polylang is not active
78 |
79 | ### 1.1.1: 2021-10-07
80 |
81 | * Cookie expiry time saving
82 |
83 | ### 1.1.0: 2021-10-07
84 |
85 | * Run the cookie category JS also when user changes the cookie settings (CookieConsent onChange event)
86 | * Updated CookieConsent to version 2.6.0
87 | * Save the visitor id on main cookie
88 | * Functionality related to handling the visitor id in separate cookie
89 |
90 | ### 1.0.0: 2021-09-29
91 |
92 | * First release
93 |
--------------------------------------------------------------------------------
/plugin-update-checker/Puc/v5p5/Theme/Update.php:
--------------------------------------------------------------------------------
1 | $this->slug,
23 | 'new_version' => $this->version,
24 | 'url' => $this->details_url,
25 | );
26 |
27 | if ( !empty($this->download_url) ) {
28 | $update['package'] = $this->download_url;
29 | }
30 |
31 | return $update;
32 | }
33 |
34 | /**
35 | * Create a new instance of Theme_Update from its JSON-encoded representation.
36 | *
37 | * @param string $json Valid JSON string representing a theme information object.
38 | * @return self New instance of ThemeUpdate, or NULL on error.
39 | */
40 | public static function fromJson($json) {
41 | $instance = new self();
42 | if ( !parent::createFromJson($json, $instance) ) {
43 | return null;
44 | }
45 | return $instance;
46 | }
47 |
48 | /**
49 | * Create a new instance by copying the necessary fields from another object.
50 | *
51 | * @param \StdClass|self $object The source object.
52 | * @return self The new copy.
53 | */
54 | public static function fromObject($object) {
55 | $update = new self();
56 | $update->copyFields($object, $update);
57 | return $update;
58 | }
59 |
60 | /**
61 | * Basic validation.
62 | *
63 | * @param \StdClass $apiResponse
64 | * @return bool|\WP_Error
65 | */
66 | protected function validateMetadata($apiResponse) {
67 | $required = array('version', 'details_url');
68 | foreach($required as $key) {
69 | if ( !isset($apiResponse->$key) || empty($apiResponse->$key) ) {
70 | return new \WP_Error(
71 | 'tuc-invalid-metadata',
72 | sprintf('The theme metadata is missing the required "%s" key.', $key)
73 | );
74 | }
75 | }
76 | return true;
77 | }
78 |
79 | protected function getFieldNames() {
80 | return array_merge(parent::getFieldNames(), self::$extraFields);
81 | }
82 |
83 | protected function getPrefixedFilter($tag) {
84 | return parent::getPrefixedFilter($tag) . '_theme';
85 | }
86 | }
87 |
88 | endif;
89 |
--------------------------------------------------------------------------------
/embeds/helpers.php:
--------------------------------------------------------------------------------
1 | ';
44 | } // end get_embed_placeholder
45 |
46 | /**
47 | * Test if URI is Youtube video and return video ID if is.
48 | *
49 | * @param string $src URI to test against
50 | * @return mixed Video ID string or boolean false
51 | */
52 | function maybe_get_youtube_video_id( $src ) {
53 | preg_match( '%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $src, $matches );
54 |
55 | if ( ! isset( $matches[1] ) ) {
56 | return false;
57 | }
58 |
59 | return $matches[1];
60 | } // end maybe_get_youtube_video_id
61 |
62 | /**
63 | * Test if URI is Vimeo video and return video ID if is.
64 | *
65 | * @param string $src URI to test against
66 | * @return mixed Video ID string or boolean false
67 | */
68 | function maybe_get_vimeo_video_id( $src ) {
69 | preg_match( '#(?:https?://)?(?:www.)?(?:player.)?vimeo.com/(?:[a-z]*/)*([0-9]{6,11})[?]?.*#', $src, $matches );
70 |
71 | if ( ! isset( $matches[1] ) ) {
72 | return false;
73 | }
74 |
75 | return $matches[1];
76 | } // end maybe_get_vimeo_video_id
77 |
--------------------------------------------------------------------------------
/plugin-update-checker/Puc/v5p5/Vcs/ReleaseAssetSupport.php:
--------------------------------------------------------------------------------
1 | releaseAssetsEnabled = true;
40 | $this->assetFilterRegex = $nameRegex;
41 | $this->releaseAssetPreference = $preference;
42 | }
43 |
44 | /**
45 | * Disable release assets.
46 | *
47 | * @return void
48 | * @noinspection PhpUnused -- Public API
49 | */
50 | public function disableReleaseAssets() {
51 | $this->releaseAssetsEnabled = false;
52 | $this->assetFilterRegex = null;
53 | }
54 |
55 | /**
56 | * Does the specified asset match the name regex?
57 | *
58 | * @param mixed $releaseAsset Data type and structure depend on the host/API.
59 | * @return bool
60 | */
61 | protected function matchesAssetFilter($releaseAsset) {
62 | if ( $this->assetFilterRegex === null ) {
63 | //The default is to accept all assets.
64 | return true;
65 | }
66 |
67 | $name = $this->getFilterableAssetName($releaseAsset);
68 | if ( !is_string($name) ) {
69 | return false;
70 | }
71 | return (bool)preg_match($this->assetFilterRegex, $releaseAsset->name);
72 | }
73 |
74 | /**
75 | * Get the part of asset data that will be checked against the filter regex.
76 | *
77 | * @param mixed $releaseAsset
78 | * @return string|null
79 | */
80 | abstract protected function getFilterableAssetName($releaseAsset);
81 | }
82 |
83 | endif;
--------------------------------------------------------------------------------
/plugin-update-checker/Puc/v5p5/WpCliCheckTrigger.php:
--------------------------------------------------------------------------------
1 | componentType = $componentType;
42 | $this->scheduler = $scheduler;
43 |
44 | if ( !defined('WP_CLI') || !class_exists(WP_CLI::class, false) ) {
45 | return; //Nothing to do if WP-CLI is not available.
46 | }
47 |
48 | /*
49 | * We can't hook directly into wp_update_plugins(), but we can hook into the WP-CLI
50 | * commands that call it. We'll use the "before_invoke:xyz" hook to trigger update checks.
51 | */
52 | foreach ($this->getRelevantCommands() as $command) {
53 | WP_CLI::add_hook('before_invoke:' . $command, [$this, 'triggerUpdateCheckOnce']);
54 | }
55 | }
56 |
57 | private function getRelevantCommands() {
58 | $result = [];
59 | foreach (['status', 'list', 'update'] as $subcommand) {
60 | $result[] = $this->componentType . ' ' . $subcommand;
61 | }
62 | return $result;
63 | }
64 |
65 | /**
66 | * Trigger a potential update check once.
67 | *
68 | * @param mixed $input
69 | * @return mixed The input value, unchanged.
70 | * @internal This method is public so that it can be used as a WP-CLI hook callback.
71 | * It should not be called directly.
72 | *
73 | */
74 | public function triggerUpdateCheckOnce($input = null) {
75 | if ( $this->wasCheckTriggered ) {
76 | return $input;
77 | }
78 |
79 | $this->wasCheckTriggered = true;
80 | $this->scheduler->maybeCheckForUpdates();
81 |
82 | return $input;
83 | }
84 | }
--------------------------------------------------------------------------------
/embeds/thumbnails.php:
--------------------------------------------------------------------------------
1 | thumbnail_large ) ) {
83 | return false;
84 | }
85 |
86 | // Save to local cache
87 | $thumbnail = $data[0]->thumbnail_large;
88 | wp_cache_set( $cache_key, $thumbnail, $cache_group, MONTH_IN_SECONDS );
89 |
90 | return $thumbnail;
91 | } // end maybe_get_vimeo_thumbnail_url
92 |
--------------------------------------------------------------------------------
/plugin-update-checker/Puc/v5p5/Autoloader.php:
--------------------------------------------------------------------------------
1 | rootDir = dirname(__FILE__) . '/';
18 |
19 | $namespaceWithSlash = __NAMESPACE__ . '\\';
20 | $this->prefix = $namespaceWithSlash;
21 |
22 | $this->libraryDir = $this->rootDir . '../..';
23 | if ( !self::isPhar() ) {
24 | $this->libraryDir = realpath($this->libraryDir);
25 | }
26 | $this->libraryDir = $this->libraryDir . '/';
27 |
28 | //Usually, dependencies like Parsedown are in the global namespace,
29 | //but if someone adds a custom namespace to the entire library, they
30 | //will be in the same namespace as this class.
31 | $isCustomNamespace = (
32 | substr($namespaceWithSlash, 0, strlen(self::DEFAULT_NS_PREFIX)) !== self::DEFAULT_NS_PREFIX
33 | );
34 | $libraryPrefix = $isCustomNamespace ? $namespaceWithSlash : '';
35 |
36 | $this->staticMap = array(
37 | $libraryPrefix . 'PucReadmeParser' => 'vendor/PucReadmeParser.php',
38 | $libraryPrefix . 'Parsedown' => 'vendor/Parsedown.php',
39 | );
40 |
41 | //Add the generic, major-version-only factory class to the static map.
42 | $versionSeparatorPos = strrpos(__NAMESPACE__, '\\v');
43 | if ( $versionSeparatorPos !== false ) {
44 | $versionSegment = substr(__NAMESPACE__, $versionSeparatorPos + 1);
45 | $pointPos = strpos($versionSegment, 'p');
46 | if ( ($pointPos !== false) && ($pointPos > 1) ) {
47 | $majorVersionSegment = substr($versionSegment, 0, $pointPos);
48 | $majorVersionNs = __NAMESPACE__ . '\\' . $majorVersionSegment;
49 | $this->staticMap[$majorVersionNs . '\\PucFactory'] =
50 | 'Puc/' . $majorVersionSegment . '/Factory.php';
51 | }
52 | }
53 |
54 | spl_autoload_register(array($this, 'autoload'));
55 | }
56 |
57 | /**
58 | * Determine if this file is running as part of a Phar archive.
59 | *
60 | * @return bool
61 | */
62 | private static function isPhar() {
63 | //Check if the current file path starts with "phar://".
64 | static $pharProtocol = 'phar://';
65 | return (substr(__FILE__, 0, strlen($pharProtocol)) === $pharProtocol);
66 | }
67 |
68 | public function autoload($className) {
69 | if ( isset($this->staticMap[$className]) && file_exists($this->libraryDir . $this->staticMap[$className]) ) {
70 | include($this->libraryDir . $this->staticMap[$className]);
71 | return;
72 | }
73 |
74 | if ( strpos($className, $this->prefix) === 0 ) {
75 | $path = substr($className, strlen($this->prefix));
76 | $path = str_replace(array('_', '\\'), '/', $path);
77 | $path = $this->rootDir . $path . '.php';
78 |
79 | if ( file_exists($path) ) {
80 | include $path;
81 | }
82 | }
83 | }
84 | }
85 |
86 | endif;
87 |
--------------------------------------------------------------------------------
/plugin-update-checker/Puc/v5p5/Vcs/ThemeUpdateChecker.php:
--------------------------------------------------------------------------------
1 | api = $api;
24 |
25 | parent::__construct($api->getRepositoryUrl(), $stylesheet, $customSlug, $checkPeriod, $optionName);
26 |
27 | $this->api->setHttpFilterName($this->getUniqueName('request_update_options'));
28 | $this->api->setStrategyFilterName($this->getUniqueName('vcs_update_detection_strategies'));
29 | $this->api->setSlug($this->slug);
30 | }
31 |
32 | public function requestUpdate() {
33 | $api = $this->api;
34 | $api->setLocalDirectory($this->package->getAbsoluteDirectoryPath());
35 |
36 | $update = new Theme\Update();
37 | $update->slug = $this->slug;
38 |
39 | //Figure out which reference (tag or branch) we'll use to get the latest version of the theme.
40 | $updateSource = $api->chooseReference($this->branch);
41 | if ( $updateSource ) {
42 | $ref = $updateSource->name;
43 | $update->download_url = $updateSource->downloadUrl;
44 | } else {
45 | do_action(
46 | 'puc_api_error',
47 | new \WP_Error(
48 | 'puc-no-update-source',
49 | 'Could not retrieve version information from the repository. '
50 | . 'This usually means that the update checker either can\'t connect '
51 | . 'to the repository or it\'s configured incorrectly.'
52 | ),
53 | null, null, $this->slug
54 | );
55 | $ref = $this->branch;
56 | }
57 |
58 | //Get headers from the main stylesheet in this branch/tag. Its "Version" header and other metadata
59 | //are what the WordPress install will actually see after upgrading, so they take precedence over releases/tags.
60 | $remoteHeader = $this->package->getFileHeader($api->getRemoteFile('style.css', $ref));
61 | $update->version = Utils::findNotEmpty(array(
62 | $remoteHeader['Version'],
63 | Utils::get($updateSource, 'version'),
64 | ));
65 |
66 | //The details URL defaults to the Theme URI header or the repository URL.
67 | $update->details_url = Utils::findNotEmpty(array(
68 | $remoteHeader['ThemeURI'],
69 | $this->package->getHeaderValue('ThemeURI'),
70 | $this->metadataUrl,
71 | ));
72 |
73 | if ( empty($update->version) ) {
74 | //It looks like we didn't find a valid update after all.
75 | $update = null;
76 | }
77 |
78 | $update = $this->filterUpdateResult($update);
79 | return $update;
80 | }
81 | }
82 |
83 | endif;
84 |
--------------------------------------------------------------------------------
/embeds/script-injection.php:
--------------------------------------------------------------------------------
1 |
32 | var manager = iframemanager();
33 |
34 | manager.run({
35 | currLang: 'en',
36 | services:
37 | });
38 |
39 |
40 | document.querySelectorAll('button.c-la-b').forEach( element => {
41 | element.remove();
42 | } );
43 |
58 | manager.acceptService( 'all' );
59 | $src,
79 | 'cookie' => [
80 | 'name' => 'air_cookie_embeds', // By default, use same cookie for all embeds
81 | ],
82 | 'languages' => [
83 | $lang => [
84 | 'notice' => \Air_Cookie\maybe_get_polylang_translation( 'embeds_description' ),
85 | 'loadBtn' => \Air_Cookie\maybe_get_polylang_translation( 'embeds_load_button' ),
86 | ],
87 | ],
88 | ];
89 |
90 | // Try to get thumbnail, add if one exists
91 | $thumbnail_url = apply_filters( 'air_cookie\embeds\thumbnail', null, $src );
92 | if ( ! empty( $thumbnail_url ) ) {
93 | $service['thumbnailUrl'] = $thumbnail_url;
94 | }
95 |
96 | // Add embed to our services array for javascript
97 | $air_cookie_embeds[ $service_key ] = $service;
98 | } // end register_embed_for_js
99 |
--------------------------------------------------------------------------------
/plugin-update-checker/Puc/v4p11/OAuthSignature.php:
--------------------------------------------------------------------------------
1 | consumerKey = $consumerKey;
14 | $this->consumerSecret = $consumerSecret;
15 | }
16 |
17 | /**
18 | * Sign a URL using OAuth 1.0.
19 | *
20 | * @param string $url The URL to be signed. It may contain query parameters.
21 | * @param string $method HTTP method such as "GET", "POST" and so on.
22 | * @return string The signed URL.
23 | */
24 | public function sign($url, $method = 'GET') {
25 | $parameters = array();
26 |
27 | //Parse query parameters.
28 | $query = parse_url($url, PHP_URL_QUERY);
29 | if ( !empty($query) ) {
30 | parse_str($query, $parsedParams);
31 | if ( is_array($parameters) ) {
32 | $parameters = $parsedParams;
33 | }
34 | //Remove the query string from the URL. We'll replace it later.
35 | $url = substr($url, 0, strpos($url, '?'));
36 | }
37 |
38 | $parameters = array_merge(
39 | $parameters,
40 | array(
41 | 'oauth_consumer_key' => $this->consumerKey,
42 | 'oauth_nonce' => $this->nonce(),
43 | 'oauth_signature_method' => 'HMAC-SHA1',
44 | 'oauth_timestamp' => time(),
45 | 'oauth_version' => '1.0',
46 | )
47 | );
48 | unset($parameters['oauth_signature']);
49 |
50 | //Parameters must be sorted alphabetically before signing.
51 | ksort($parameters);
52 |
53 | //The most complicated part of the request - generating the signature.
54 | //The string to sign contains the HTTP method, the URL path, and all of
55 | //our query parameters. Everything is URL encoded. Then we concatenate
56 | //them with ampersands into a single string to hash.
57 | $encodedVerb = urlencode($method);
58 | $encodedUrl = urlencode($url);
59 | $encodedParams = urlencode(http_build_query($parameters, '', '&'));
60 |
61 | $stringToSign = $encodedVerb . '&' . $encodedUrl . '&' . $encodedParams;
62 |
63 | //Since we only have one OAuth token (the consumer secret) we only have
64 | //to use it as our HMAC key. However, we still have to append an & to it
65 | //as if we were using it with additional tokens.
66 | $secret = urlencode($this->consumerSecret) . '&';
67 |
68 | //The signature is a hash of the consumer key and the base string. Note
69 | //that we have to get the raw output from hash_hmac and base64 encode
70 | //the binary data result.
71 | $parameters['oauth_signature'] = base64_encode(hash_hmac('sha1', $stringToSign, $secret, true));
72 |
73 | return ($url . '?' . http_build_query($parameters));
74 | }
75 |
76 | /**
77 | * Generate a random nonce.
78 | *
79 | * @return string
80 | */
81 | private function nonce() {
82 | $mt = microtime();
83 |
84 | $rand = null;
85 | if ( is_callable('random_bytes') ) {
86 | try {
87 | $rand = random_bytes(16);
88 | } catch (Exception $ex) {
89 | //Fall back to mt_rand (below).
90 | }
91 | }
92 | if ( $rand === null ) {
93 | $rand = mt_rand();
94 | }
95 |
96 | return md5($mt . '_' . $rand);
97 | }
98 | }
99 |
100 | endif;
101 |
--------------------------------------------------------------------------------
/plugin-update-checker/Puc/v4p11/InstalledPackage.php:
--------------------------------------------------------------------------------
1 | updateChecker = $updateChecker;
18 | }
19 |
20 | /**
21 | * Get the currently installed version of the plugin or theme.
22 | *
23 | * @return string|null Version number.
24 | */
25 | abstract public function getInstalledVersion();
26 |
27 | /**
28 | * Get the full path of the plugin or theme directory (without a trailing slash).
29 | *
30 | * @return string
31 | */
32 | abstract public function getAbsoluteDirectoryPath();
33 |
34 | /**
35 | * Check whether a regular file exists in the package's directory.
36 | *
37 | * @param string $relativeFileName File name relative to the package directory.
38 | * @return bool
39 | */
40 | public function fileExists($relativeFileName) {
41 | return is_file(
42 | $this->getAbsoluteDirectoryPath()
43 | . DIRECTORY_SEPARATOR
44 | . ltrim($relativeFileName, '/\\')
45 | );
46 | }
47 |
48 | /* -------------------------------------------------------------------
49 | * File header parsing
50 | * -------------------------------------------------------------------
51 | */
52 |
53 | /**
54 | * Parse plugin or theme metadata from the header comment.
55 | *
56 | * This is basically a simplified version of the get_file_data() function from /wp-includes/functions.php.
57 | * It's intended as a utility for subclasses that detect updates by parsing files in a VCS.
58 | *
59 | * @param string|null $content File contents.
60 | * @return string[]
61 | */
62 | public function getFileHeader($content) {
63 | $content = (string)$content;
64 |
65 | //WordPress only looks at the first 8 KiB of the file, so we do the same.
66 | $content = substr($content, 0, 8192);
67 | //Normalize line endings.
68 | $content = str_replace("\r", "\n", $content);
69 |
70 | $headers = $this->getHeaderNames();
71 | $results = array();
72 | foreach ($headers as $field => $name) {
73 | $success = preg_match('/^[ \t\/*#@]*' . preg_quote($name, '/') . ':(.*)$/mi', $content, $matches);
74 |
75 | if ( ($success === 1) && $matches[1] ) {
76 | $value = $matches[1];
77 | if ( function_exists('_cleanup_header_comment') ) {
78 | $value = _cleanup_header_comment($value);
79 | }
80 | $results[$field] = $value;
81 | } else {
82 | $results[$field] = '';
83 | }
84 | }
85 |
86 | return $results;
87 | }
88 |
89 | /**
90 | * @return array Format: ['HeaderKey' => 'Header Name']
91 | */
92 | abstract protected function getHeaderNames();
93 |
94 | /**
95 | * Get the value of a specific plugin or theme header.
96 | *
97 | * @param string $headerName
98 | * @return string Either the value of the header, or an empty string if the header doesn't exist.
99 | */
100 | abstract public function getHeaderValue($headerName);
101 |
102 | }
103 | endif;
104 |
--------------------------------------------------------------------------------
/embeds/content-filters.php:
--------------------------------------------------------------------------------
1 | ]* src=("|\').*(facebook\.com|youtu\.be|youtube\.com|youtube-nocookie\.com|player\.vimeo\.com|soundcloud\.com|spotify\.com|slideshare\.net|video\.wordpress\.com|embedly\.com).*[^>].*>.*?<\/iframe>/mi'; // phpcs:ignore WordPress.WP.CapitalPDangit.MisspelledInText
25 |
26 | preg_match_all( $regex, $content, $matches );
27 | foreach ( $matches[0] as $x => $match ) {
28 | $start = strpos( $match, ' src=' ) + 6;
29 | $end = strpos( $match, $matches[1][ $x ], $start );
30 | $src = substr( $match, $start, $end - $start );
31 |
32 | // Skip if already has been modified
33 | if ( strpos( $match, 'data-cookiecategory' ) !== false ) {
34 | continue;
35 | }
36 |
37 | // Treat Vimeo embeds a bit differently
38 | $vimeo_video_id = maybe_get_vimeo_video_id( $src );
39 | if ( $vimeo_video_id ) {
40 |
41 | // Add dnt=1 (do not track) to url if allowed via filter
42 | if ( apply_filters( 'air_cookie\embeds\vimeo\add_dnt', true, $src ) ) {
43 | $new_src = add_query_arg( 'dnt', true, $src );
44 | $content = str_replace( $src, $new_src, $content );
45 | $src = $new_src;
46 | }
47 |
48 | // Skip placeholder if src has dnt=1 (do not track) and if allowed via filter
49 | if ( apply_filters( 'air_cookie\embeds\vimeo\skip_dnt', true ) && false !== strpos( $src, 'dnt=1' ) ) {
50 | continue;
51 | }
52 | }
53 |
54 | // Make unqique key and id from the src
55 | $service_key = crc32( $src );
56 | $embed_id = crc32( $src );
57 |
58 | // Register the embed for javascript
59 | do_action( 'air_cookie\embeds\register_embed', $service_key, $embed_id, $src );
60 |
61 | // Get the placeholder for embed, allow changing it via filter
62 | $placeholder = get_embed_placeholder( $service_key, $embed_id, $src );
63 | $placeholder = apply_filters( 'air_cookie\embeds\placeholder', $placeholder, $service_key, $embed_id, $src );
64 |
65 | // Replace the iframe with placeholder
66 | $content = str_replace( $match, $placeholder, $content );
67 | }
68 |
69 | return $content;
70 | } // end iframe_embeds
71 |
72 | /**
73 | * Modify script embeds, move src to data-src and add cookiecategory for
74 | * loading the script when category is accepted.
75 | *
76 | * @param string $content Post content
77 | * @return string Modified post content
78 | * @since 0.1.0
79 | */
80 | function script_tag_embeds( $content ) {
81 | $cookie_category = get_embeds_cookie_category_key();
82 |
83 | preg_match_all( '//mi',
84 | $content, $matches );
85 |
86 | foreach ( $matches[0] as $x => $match ) {
87 | $adjusted = str_replace( ' src=', ' data-cookiecategory="' . $cookie_category . '" data-src=', $match );
88 | $content = str_replace( $match, $adjusted, $content );
89 | }
90 |
91 | return $content;
92 | } // end script_tag_embeds
93 |
--------------------------------------------------------------------------------
/plugin-update-checker/Puc/v5p5/InstalledPackage.php:
--------------------------------------------------------------------------------
1 | updateChecker = $updateChecker;
20 | }
21 |
22 | /**
23 | * Get the currently installed version of the plugin or theme.
24 | *
25 | * @return string|null Version number.
26 | */
27 | abstract public function getInstalledVersion();
28 |
29 | /**
30 | * Get the full path of the plugin or theme directory (without a trailing slash).
31 | *
32 | * @return string
33 | */
34 | abstract public function getAbsoluteDirectoryPath();
35 |
36 | /**
37 | * Check whether a regular file exists in the package's directory.
38 | *
39 | * @param string $relativeFileName File name relative to the package directory.
40 | * @return bool
41 | */
42 | public function fileExists($relativeFileName) {
43 | return is_file(
44 | $this->getAbsoluteDirectoryPath()
45 | . DIRECTORY_SEPARATOR
46 | . ltrim($relativeFileName, '/\\')
47 | );
48 | }
49 |
50 | /* -------------------------------------------------------------------
51 | * File header parsing
52 | * -------------------------------------------------------------------
53 | */
54 |
55 | /**
56 | * Parse plugin or theme metadata from the header comment.
57 | *
58 | * This is basically a simplified version of the get_file_data() function from /wp-includes/functions.php.
59 | * It's intended as a utility for subclasses that detect updates by parsing files in a VCS.
60 | *
61 | * @param string|null $content File contents.
62 | * @return string[]
63 | */
64 | public function getFileHeader($content) {
65 | $content = (string)$content;
66 |
67 | //WordPress only looks at the first 8 KiB of the file, so we do the same.
68 | $content = substr($content, 0, 8192);
69 | //Normalize line endings.
70 | $content = str_replace("\r", "\n", $content);
71 |
72 | $headers = $this->getHeaderNames();
73 | $results = array();
74 | foreach ($headers as $field => $name) {
75 | $success = preg_match('/^[ \t\/*#@]*' . preg_quote($name, '/') . ':(.*)$/mi', $content, $matches);
76 |
77 | if ( ($success === 1) && $matches[1] ) {
78 | $value = $matches[1];
79 | if ( function_exists('_cleanup_header_comment') ) {
80 | $value = _cleanup_header_comment($value);
81 | }
82 | $results[$field] = $value;
83 | } else {
84 | $results[$field] = '';
85 | }
86 | }
87 |
88 | return $results;
89 | }
90 |
91 | /**
92 | * @return array Format: ['HeaderKey' => 'Header Name']
93 | */
94 | abstract protected function getHeaderNames();
95 |
96 | /**
97 | * Get the value of a specific plugin or theme header.
98 | *
99 | * @param string $headerName
100 | * @return string Either the value of the header, or an empty string if the header doesn't exist.
101 | */
102 | abstract public function getHeaderValue($headerName);
103 |
104 | }
105 | endif;
106 |
--------------------------------------------------------------------------------
/plugin-update-checker/Puc/v5p5/OAuthSignature.php:
--------------------------------------------------------------------------------
1 | consumerKey = $consumerKey;
15 | $this->consumerSecret = $consumerSecret;
16 | }
17 |
18 | /**
19 | * Sign a URL using OAuth 1.0.
20 | *
21 | * @param string $url The URL to be signed. It may contain query parameters.
22 | * @param string $method HTTP method such as "GET", "POST" and so on.
23 | * @return string The signed URL.
24 | */
25 | public function sign($url, $method = 'GET') {
26 | $parameters = array();
27 |
28 | //Parse query parameters.
29 | $query = wp_parse_url($url, PHP_URL_QUERY);
30 | if ( !empty($query) ) {
31 | parse_str($query, $parsedParams);
32 | if ( is_array($parsedParams) ) {
33 | $parameters = $parsedParams;
34 | }
35 | //Remove the query string from the URL. We'll replace it later.
36 | $url = substr($url, 0, strpos($url, '?'));
37 | }
38 |
39 | $parameters = array_merge(
40 | $parameters,
41 | array(
42 | 'oauth_consumer_key' => $this->consumerKey,
43 | 'oauth_nonce' => $this->nonce(),
44 | 'oauth_signature_method' => 'HMAC-SHA1',
45 | 'oauth_timestamp' => time(),
46 | 'oauth_version' => '1.0',
47 | )
48 | );
49 | unset($parameters['oauth_signature']);
50 |
51 | //Parameters must be sorted alphabetically before signing.
52 | ksort($parameters);
53 |
54 | //The most complicated part of the request - generating the signature.
55 | //The string to sign contains the HTTP method, the URL path, and all of
56 | //our query parameters. Everything is URL encoded. Then we concatenate
57 | //them with ampersands into a single string to hash.
58 | $encodedVerb = urlencode($method);
59 | $encodedUrl = urlencode($url);
60 | $encodedParams = urlencode(http_build_query($parameters, '', '&'));
61 |
62 | $stringToSign = $encodedVerb . '&' . $encodedUrl . '&' . $encodedParams;
63 |
64 | //Since we only have one OAuth token (the consumer secret) we only have
65 | //to use it as our HMAC key. However, we still have to append an & to it
66 | //as if we were using it with additional tokens.
67 | $secret = urlencode($this->consumerSecret) . '&';
68 |
69 | //The signature is a hash of the consumer key and the base string. Note
70 | //that we have to get the raw output from hash_hmac and base64 encode
71 | //the binary data result.
72 | $parameters['oauth_signature'] = base64_encode(hash_hmac('sha1', $stringToSign, $secret, true));
73 |
74 | return ($url . '?' . http_build_query($parameters));
75 | }
76 |
77 | /**
78 | * Generate a random nonce.
79 | *
80 | * @return string
81 | */
82 | private function nonce() {
83 | $mt = microtime();
84 |
85 | $rand = null;
86 | if ( is_callable('random_bytes') ) {
87 | try {
88 | $rand = random_bytes(16);
89 | } catch (\Exception $ex) {
90 | //Fall back to mt_rand (below).
91 | }
92 | }
93 | if ( $rand === null ) {
94 | //phpcs:ignore WordPress.WP.AlternativeFunctions.rand_mt_rand
95 | $rand = function_exists('wp_rand') ? wp_rand() : mt_rand();
96 | }
97 |
98 | return md5($mt . '_' . $rand);
99 | }
100 | }
101 |
102 | endif;
103 |
--------------------------------------------------------------------------------
/rest-api.php:
--------------------------------------------------------------------------------
1 | 'POST',
19 | 'callback' => __NAMESPACE__ . '\record_consent',
20 | 'permission_callback' => __NAMESPACE__ . '\record_consent_permission_callback',
21 | ] );
22 | } // end register_rest_endpoint
23 |
24 | /**
25 | * Record the given consent to database. Possibility to identify when
26 | * visitor has given their consent is required by Finnish law.
27 | *
28 | * @since 0.1.0
29 | */
30 | function record_consent( $request ) {
31 | global $wpdb;
32 |
33 | // Get request data
34 | $data = json_decode( $request->get_body() );
35 |
36 | // Get database table name
37 | $table_name = get_database_table_name();
38 |
39 | // Get cookie consent settings
40 | // This get_settings() NOT the deprecated WordPress function, but air-cookie's own function
41 | $settings = get_settings(); // phpcs:ignore WordPress.WP.DeprecatedFunctions.get_settingsFound
42 |
43 | // Serialize the cookie levels for storage
44 | $cookie_value = maybe_serialize( $data->level );
45 |
46 | // Check if cookie_revision and cookie_value has content
47 | if ( empty( $table_name ) || empty( $data->visitorid ) || empty( $data->revision ) ) {
48 | return;
49 | }
50 |
51 | // Check if the index exists
52 | $index_exists = $wpdb->get_row( "SHOW INDEX FROM {$table_name} WHERE Key_name = 'idx_id_revision_value'" ); // phpcs:ignore
53 |
54 | // CREATE INDEX idx_id_revision_value ON wp_air_cookie (visitor_id, cookie_revision, cookie_value);
55 | if ( null === $index_exists ) {
56 | $wpdb->query( "CREATE INDEX idx_id_revision_value ON {$table_name} (visitor_id, cookie_revision, cookie_value);" ); // phpcs:ignore
57 | }
58 |
59 | // Check if the user consent for this revision and levels has been already recorded
60 | $exists = $wpdb->get_row( $wpdb->prepare( "SELECT id FROM {$table_name} WHERE visitor_id = %s AND cookie_revision = %s AND cookie_value = %s", $data->visitorid, $data->revision, $cookie_value ) ); // phpcs:ignore
61 |
62 | // Bail if the consent has been already recorded
63 | if ( null !== $exists ) {
64 | return;
65 | }
66 |
67 | // Record the consent.
68 | $inserted = $wpdb->insert( // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
69 | $table_name,
70 | [
71 | 'visitor_id' => $data->visitorid,
72 | 'cookie_revision' => $data->revision,
73 | 'cookie_value' => $cookie_value,
74 | 'timestamp' => wp_date( 'Y-m-d H:i:s' ),
75 | 'expiry' => wp_date( 'Y-m-d H:i:s', strtotime( "+{$settings['cookie_expiration']} days" ) ),
76 | ],
77 | [
78 | '%s',
79 | '%s',
80 | '%s',
81 | '%s',
82 | '%s',
83 | ]
84 | );
85 |
86 | if ( ! $inserted ) {
87 | return false;
88 | }
89 |
90 | return true;
91 | } // end record_consent
92 |
93 | /**
94 | * Check the nonce is set to prevent spamming the endpoint from elsewhere.
95 | *
96 | * @since 0.1.0
97 | */
98 | function record_consent_permission_callback( $request ) {
99 | $nonce = $request->get_header( 'X-WP-Nonce' );
100 | if ( $nonce && wp_verify_nonce( $nonce, 'wp_rest' ) ) {
101 | return true;
102 | }
103 |
104 | return false;
105 | } // end record_consent_permission_callback
106 |
--------------------------------------------------------------------------------
/plugin-update-checker/Puc/v5p5/Vcs/ReleaseFilteringFeature.php:
--------------------------------------------------------------------------------
1 | 100 ) {
39 | throw new \InvalidArgumentException(sprintf(
40 | 'The max number of releases is too high (%d). It must be 100 or less.',
41 | $maxReleases
42 | ));
43 | } else if ( $maxReleases < 1 ) {
44 | throw new \InvalidArgumentException(sprintf(
45 | 'The max number of releases is too low (%d). It must be at least 1.',
46 | $maxReleases
47 | ));
48 | }
49 |
50 | $this->releaseFilterCallback = $callback;
51 | $this->releaseFilterByType = $releaseTypes;
52 | $this->releaseFilterMaxReleases = $maxReleases;
53 | return $this;
54 | }
55 |
56 | /**
57 | * Filter releases by their version number.
58 | *
59 | * @param string $regex A regular expression. The release version number must match this regex.
60 | * @param int $releaseTypes
61 | * @param int $maxReleasesToExamine
62 | * @return $this
63 | * @noinspection PhpUnused -- Public API
64 | */
65 | public function setReleaseVersionFilter(
66 | $regex,
67 | $releaseTypes = Api::RELEASE_FILTER_SKIP_PRERELEASE,
68 | $maxReleasesToExamine = 20
69 | ) {
70 | return $this->setReleaseFilter(
71 | function ($versionNumber) use ($regex) {
72 | return (preg_match($regex, $versionNumber) === 1);
73 | },
74 | $releaseTypes,
75 | $maxReleasesToExamine
76 | );
77 | }
78 |
79 | /**
80 | * @param string $versionNumber The detected release version number.
81 | * @param object $releaseObject Varies depending on the host/API.
82 | * @return bool
83 | */
84 | protected function matchesCustomReleaseFilter($versionNumber, $releaseObject) {
85 | if ( !is_callable($this->releaseFilterCallback) ) {
86 | return true; //No custom filter.
87 | }
88 | return call_user_func($this->releaseFilterCallback, $versionNumber, $releaseObject);
89 | }
90 |
91 | /**
92 | * @return bool
93 | */
94 | protected function shouldSkipPreReleases() {
95 | //Maybe this could be a bitfield in the future, if we need to support
96 | //more release types.
97 | return ($this->releaseFilterByType !== Api::RELEASE_FILTER_ALL);
98 | }
99 |
100 | /**
101 | * @return bool
102 | */
103 | protected function hasCustomReleaseFilter() {
104 | return isset($this->releaseFilterCallback) && is_callable($this->releaseFilterCallback);
105 | }
106 | }
107 |
108 | endif;
--------------------------------------------------------------------------------
/plugin-update-checker/Puc/v4p11/Plugin/Update.php:
--------------------------------------------------------------------------------
1 | copyFields($object, $update);
62 | return $update;
63 | }
64 |
65 | /**
66 | * @return string[]
67 | */
68 | protected function getFieldNames() {
69 | return array_merge(parent::getFieldNames(), self::$extraFields);
70 | }
71 |
72 | /**
73 | * Transform the update into the format used by WordPress native plugin API.
74 | *
75 | * @return object
76 | */
77 | public function toWpFormat() {
78 | $update = parent::toWpFormat();
79 |
80 | $update->id = $this->id;
81 | $update->url = $this->homepage;
82 | $update->tested = $this->tested;
83 | $update->requires_php = $this->requires_php;
84 | $update->plugin = $this->filename;
85 |
86 | if ( !empty($this->upgrade_notice) ) {
87 | $update->upgrade_notice = $this->upgrade_notice;
88 | }
89 |
90 | if ( !empty($this->icons) && is_array($this->icons) ) {
91 | //This should be an array with up to 4 keys: 'svg', '1x', '2x' and 'default'.
92 | //Docs: https://developer.wordpress.org/plugins/wordpress-org/plugin-assets/#plugin-icons
93 | $icons = array_intersect_key(
94 | $this->icons,
95 | array('svg' => true, '1x' => true, '2x' => true, 'default' => true)
96 | );
97 | if ( !empty($icons) ) {
98 | $update->icons = $icons;
99 |
100 | //It appears that the 'default' icon isn't used anywhere in WordPress 4.9,
101 | //but lets set it just in case a future release needs it.
102 | if ( !isset($update->icons['default']) ) {
103 | $update->icons['default'] = current($update->icons);
104 | }
105 | }
106 | }
107 |
108 | return $update;
109 | }
110 | }
111 |
112 | endif;
113 |
--------------------------------------------------------------------------------
/plugin-update-checker/Puc/v5p5/Plugin/Update.php:
--------------------------------------------------------------------------------
1 | copyFields($object, $update);
66 | return $update;
67 | }
68 |
69 | /**
70 | * @return string[]
71 | */
72 | protected function getFieldNames() {
73 | return array_merge(parent::getFieldNames(), self::$extraFields);
74 | }
75 |
76 | /**
77 | * Transform the update into the format used by WordPress native plugin API.
78 | *
79 | * @return object
80 | */
81 | public function toWpFormat() {
82 | $update = parent::toWpFormat();
83 |
84 | $update->id = $this->id;
85 | $update->url = $this->homepage;
86 | $update->tested = $this->tested;
87 | $update->requires_php = $this->requires_php;
88 | $update->plugin = $this->filename;
89 |
90 | if ( !empty($this->upgrade_notice) ) {
91 | $update->upgrade_notice = $this->upgrade_notice;
92 | }
93 |
94 | if ( !empty($this->icons) && is_array($this->icons) ) {
95 | //This should be an array with up to 4 keys: 'svg', '1x', '2x' and 'default'.
96 | //Docs: https://developer.wordpress.org/plugins/wordpress-org/plugin-assets/#plugin-icons
97 | $icons = array_intersect_key(
98 | $this->icons,
99 | array('svg' => true, '1x' => true, '2x' => true, 'default' => true)
100 | );
101 | if ( !empty($icons) ) {
102 | $update->icons = $icons;
103 |
104 | //It appears that the 'default' icon isn't used anywhere in WordPress 4.9,
105 | //but lets set it just in case a future release needs it.
106 | if ( !isset($update->icons['default']) ) {
107 | $update->icons['default'] = current($update->icons);
108 | }
109 | }
110 | }
111 |
112 | return $update;
113 | }
114 | }
115 |
116 | endif;
117 |
--------------------------------------------------------------------------------
/plugin-update-checker/Puc/v4p11/Metadata.php:
--------------------------------------------------------------------------------
1 | validateMetadata($apiResponse);
40 | if ( is_wp_error($valid) ){
41 | do_action('puc_api_error', $valid);
42 | trigger_error($valid->get_error_message(), E_USER_NOTICE);
43 | return false;
44 | }
45 |
46 | foreach(get_object_vars($apiResponse) as $key => $value){
47 | $target->$key = $value;
48 | }
49 |
50 | return true;
51 | }
52 |
53 | /**
54 | * No validation by default! Subclasses should check that the required fields are present.
55 | *
56 | * @param StdClass $apiResponse
57 | * @return bool|WP_Error
58 | */
59 | protected function validateMetadata(/** @noinspection PhpUnusedParameterInspection */ $apiResponse) {
60 | return true;
61 | }
62 |
63 | /**
64 | * Create a new instance by copying the necessary fields from another object.
65 | *
66 | * @abstract
67 | * @param StdClass|self $object The source object.
68 | * @return self The new copy.
69 | */
70 | public static function fromObject(/** @noinspection PhpUnusedParameterInspection */ $object) {
71 | throw new LogicException('The ' . __METHOD__ . ' method must be implemented by subclasses');
72 | }
73 |
74 | /**
75 | * Create an instance of StdClass that can later be converted back to an
76 | * update or info container. Useful for serialization and caching, as it
77 | * avoids the "incomplete object" problem if the cached value is loaded
78 | * before this class.
79 | *
80 | * @return StdClass
81 | */
82 | public function toStdClass() {
83 | $object = new stdClass();
84 | $this->copyFields($this, $object);
85 | return $object;
86 | }
87 |
88 | /**
89 | * Transform the metadata into the format used by WordPress core.
90 | *
91 | * @return object
92 | */
93 | abstract public function toWpFormat();
94 |
95 | /**
96 | * Copy known fields from one object to another.
97 | *
98 | * @param StdClass|self $from
99 | * @param StdClass|self $to
100 | */
101 | protected function copyFields($from, $to) {
102 | $fields = $this->getFieldNames();
103 |
104 | if ( property_exists($from, 'slug') && !empty($from->slug) ) {
105 | //Let plugins add extra fields without having to create subclasses.
106 | $fields = apply_filters($this->getPrefixedFilter('retain_fields') . '-' . $from->slug, $fields);
107 | }
108 |
109 | foreach ($fields as $field) {
110 | if ( property_exists($from, $field) ) {
111 | $to->$field = $from->$field;
112 | }
113 | }
114 | }
115 |
116 | /**
117 | * @return string[]
118 | */
119 | protected function getFieldNames() {
120 | return array();
121 | }
122 |
123 | /**
124 | * @param string $tag
125 | * @return string
126 | */
127 | protected function getPrefixedFilter($tag) {
128 | return 'puc_' . $tag;
129 | }
130 | }
131 |
132 | endif;
133 |
--------------------------------------------------------------------------------
/plugin-update-checker/Puc/v4p11/Vcs/ThemeUpdateChecker.php:
--------------------------------------------------------------------------------
1 | api = $api;
27 | $this->api->setHttpFilterName($this->getUniqueName('request_update_options'));
28 |
29 | parent::__construct($api->getRepositoryUrl(), $stylesheet, $customSlug, $checkPeriod, $optionName);
30 |
31 | $this->api->setSlug($this->slug);
32 | }
33 |
34 | public function requestUpdate() {
35 | $api = $this->api;
36 | $api->setLocalDirectory($this->package->getAbsoluteDirectoryPath());
37 |
38 | $update = new Puc_v4p11_Theme_Update();
39 | $update->slug = $this->slug;
40 |
41 | //Figure out which reference (tag or branch) we'll use to get the latest version of the theme.
42 | $updateSource = $api->chooseReference($this->branch);
43 | if ( $updateSource ) {
44 | $ref = $updateSource->name;
45 | $update->download_url = $updateSource->downloadUrl;
46 | } else {
47 | do_action(
48 | 'puc_api_error',
49 | new WP_Error(
50 | 'puc-no-update-source',
51 | 'Could not retrieve version information from the repository. '
52 | . 'This usually means that the update checker either can\'t connect '
53 | . 'to the repository or it\'s configured incorrectly.'
54 | ),
55 | null, null, $this->slug
56 | );
57 | $ref = $this->branch;
58 | }
59 |
60 | //Get headers from the main stylesheet in this branch/tag. Its "Version" header and other metadata
61 | //are what the WordPress install will actually see after upgrading, so they take precedence over releases/tags.
62 | $remoteHeader = $this->package->getFileHeader($api->getRemoteFile('style.css', $ref));
63 | $update->version = Puc_v4p11_Utils::findNotEmpty(array(
64 | $remoteHeader['Version'],
65 | Puc_v4p11_Utils::get($updateSource, 'version'),
66 | ));
67 |
68 | //The details URL defaults to the Theme URI header or the repository URL.
69 | $update->details_url = Puc_v4p11_Utils::findNotEmpty(array(
70 | $remoteHeader['ThemeURI'],
71 | $this->package->getHeaderValue('ThemeURI'),
72 | $this->metadataUrl,
73 | ));
74 |
75 | if ( empty($update->version) ) {
76 | //It looks like we didn't find a valid update after all.
77 | $update = null;
78 | }
79 |
80 | $update = $this->filterUpdateResult($update);
81 | return $update;
82 | }
83 |
84 | //FIXME: This is duplicated code. Both theme and plugin subclasses that use VCS share these methods.
85 |
86 | public function setBranch($branch) {
87 | $this->branch = $branch;
88 | return $this;
89 | }
90 |
91 | public function setAuthentication($credentials) {
92 | $this->api->setAuthentication($credentials);
93 | return $this;
94 | }
95 |
96 | public function getVcsApi() {
97 | return $this->api;
98 | }
99 |
100 | public function getUpdate() {
101 | $update = parent::getUpdate();
102 |
103 | if ( isset($update) && !empty($update->download_url) ) {
104 | $update->download_url = $this->api->signDownloadUrl($update->download_url);
105 | }
106 |
107 | return $update;
108 | }
109 |
110 | public function onDisplayConfiguration($panel) {
111 | parent::onDisplayConfiguration($panel);
112 | $panel->row('Branch', $this->branch);
113 | $panel->row('Authentication enabled', $this->api->isAuthenticationEnabled() ? 'Yes' : 'No');
114 | $panel->row('API client', get_class($this->api));
115 | }
116 | }
117 |
118 | endif;
119 |
--------------------------------------------------------------------------------
/plugin-update-checker/Puc/v4p11/Plugin/Info.php:
--------------------------------------------------------------------------------
1 | sections = (array)$instance->sections;
59 | $instance->icons = (array)$instance->icons;
60 |
61 | return $instance;
62 | }
63 |
64 | /**
65 | * Very, very basic validation.
66 | *
67 | * @param StdClass $apiResponse
68 | * @return bool|WP_Error
69 | */
70 | protected function validateMetadata($apiResponse) {
71 | if (
72 | !isset($apiResponse->name, $apiResponse->version)
73 | || empty($apiResponse->name)
74 | || empty($apiResponse->version)
75 | ) {
76 | return new WP_Error(
77 | 'puc-invalid-metadata',
78 | "The plugin metadata file does not contain the required 'name' and/or 'version' keys."
79 | );
80 | }
81 | return true;
82 | }
83 |
84 |
85 | /**
86 | * Transform plugin info into the format used by the native WordPress.org API
87 | *
88 | * @return object
89 | */
90 | public function toWpFormat(){
91 | $info = new stdClass;
92 |
93 | //The custom update API is built so that many fields have the same name and format
94 | //as those returned by the native WordPress.org API. These can be assigned directly.
95 | $sameFormat = array(
96 | 'name', 'slug', 'version', 'requires', 'tested', 'rating', 'upgrade_notice',
97 | 'num_ratings', 'downloaded', 'active_installs', 'homepage', 'last_updated',
98 | 'requires_php',
99 | );
100 | foreach($sameFormat as $field){
101 | if ( isset($this->$field) ) {
102 | $info->$field = $this->$field;
103 | } else {
104 | $info->$field = null;
105 | }
106 | }
107 |
108 | //Other fields need to be renamed and/or transformed.
109 | $info->download_link = $this->download_url;
110 | $info->author = $this->getFormattedAuthor();
111 | $info->sections = array_merge(array('description' => ''), $this->sections);
112 |
113 | if ( !empty($this->banners) ) {
114 | //WP expects an array with two keys: "high" and "low". Both are optional.
115 | //Docs: https://wordpress.org/plugins/about/faq/#banners
116 | $info->banners = is_object($this->banners) ? get_object_vars($this->banners) : $this->banners;
117 | $info->banners = array_intersect_key($info->banners, array('high' => true, 'low' => true));
118 | }
119 |
120 | return $info;
121 | }
122 |
123 | protected function getFormattedAuthor() {
124 | if ( !empty($this->author_homepage) ){
125 | /** @noinspection HtmlUnknownTarget */
126 | return sprintf('%s', $this->author_homepage, $this->author);
127 | }
128 | return $this->author;
129 | }
130 | }
131 |
132 | endif;
133 |
--------------------------------------------------------------------------------
/air-cookie.php:
--------------------------------------------------------------------------------
1 | 10300
31 | return 13100;
32 | } // end plugin_version
33 |
34 | /**
35 | * Get current version of database schema.
36 | * Version is timestamp in YYYYmmdd format, so it can be used as a int.
37 | *
38 | * @since 0.1.0
39 | */
40 | function get_database_version() {
41 | return 20210907; // date without dashes
42 | }
43 |
44 | /**
45 | * Get current version of included CookieConsent script version.
46 | *
47 | * @since 0.1.0
48 | */
49 | function get_script_version() {
50 | return '2.9.1';
51 | } // end get_script_version
52 |
53 | /**
54 | * Require helpers for this plugin.
55 | *
56 | * @since 0.1.0
57 | */
58 | require 'plugin-helpers.php';
59 |
60 | /**
61 | * Github updater.
62 | *
63 | * @since 0.1.0
64 | */
65 | require plugin_base_path() . '/plugin-update-checker/plugin-update-checker.php';
66 | use YahnisElsts\PluginUpdateChecker\v5\PucFactory;
67 |
68 | $update_checker = PucFactory::buildUpdateChecker(
69 | 'http://githubupdates.dude.fi/plugins/digitoimistodude/air-cookie',
70 | __FILE__,
71 | 'air-cookie'
72 | );
73 |
74 | /**
75 | * Compile settings for the script.
76 | *
77 | * @since 0.1.0
78 | */
79 | require plugin_base_path() . '/settings.php';
80 |
81 | /**
82 | * Default strings and translation support for those.
83 | *
84 | * @since 0.1.0
85 | */
86 | require plugin_base_path(). '/strings.php';
87 | add_action( 'init', __NAMESPACE__ . '\register_strings' );
88 |
89 | /**
90 | * The actual script and javascript related things.
91 | *
92 | * @since 0.1.0
93 | */
94 | require plugin_base_path() . '/script-injection.php';
95 | add_action( 'wp_enqueue_scripts', __NAMESPACE__ . '\enqueue_stylesheet' );
96 | add_action( 'wp_footer', __NAMESPACE__ . '\inject_js', 15 );
97 |
98 | /**
99 | * Rest api for recording the visitor consents.
100 | *
101 | * @since 0.1.0
102 | */
103 | require plugin_base_path() . '/rest-api.php';
104 | add_action( 'rest_api_init', __NAMESPACE__ . '\register_rest_endpoint' );
105 |
106 | /**
107 | * Database creation.
108 | *
109 | * @since 0.1.0
110 | */
111 | if ( is_admin() ) {
112 | require plugin_base_path() . '/database.php';
113 | add_action( 'admin_init', __NAMESPACE__ . '\maybe_init_database' );
114 | }
115 |
116 | /**
117 | * Embeds control if enabled.
118 | *
119 | * @since 0.1.0
120 | */
121 | if ( apply_filters( 'air_cookie\embeds', true ) ) {
122 | require plugin_base_path() . '/embeds/embeds.php';
123 | }
124 |
125 | /**
126 | * Plugin activation hook to save current version for reference in what version activation happened.
127 | * Check if deactivation without version option is apparent, then do not save current version for
128 | * maintaining backwards compatibility.
129 | *
130 | * @since 0.1.0
131 | */
132 | register_activation_hook( __FILE__, __NAMESPACE__ . '\plugin_activate' );
133 | function plugin_activate() {
134 | $deactivated_without = get_option( 'air_cookie_deactivated_without_version' );
135 |
136 | if ( 'true' !== $deactivated_without ) {
137 | update_option( 'air_cookie_activated_at_version', get_plugin_version() );
138 | }
139 | } // end plugin_activate
140 |
141 | /**
142 | * Maybe add option if activated version is not yet saved.
143 | * Helps to maintain backwards compatibility.
144 | *
145 | * @since 0.1.0
146 | */
147 | register_deactivation_hook( __FILE__, __NAMESPACE__ . '\plugin_deactivate' );
148 | add_action( 'admin_init', __NAMESPACE__ . '\plugin_deactivate' );
149 | function plugin_deactivate() {
150 | $activated_version = get_option( 'air_cookie_activated_at_version' );
151 |
152 | if ( ! $activated_version ) {
153 | update_option( 'air_cookie_deactivated_without_version', 'true', false );
154 | }
155 | } // end plugin_deactivate
156 |
--------------------------------------------------------------------------------
/plugin-update-checker/Puc/v5p5/Plugin/PluginInfo.php:
--------------------------------------------------------------------------------
1 | sections = (array)$instance->sections;
63 | $instance->icons = (array)$instance->icons;
64 |
65 | return $instance;
66 | }
67 |
68 | /**
69 | * Very, very basic validation.
70 | *
71 | * @param \StdClass $apiResponse
72 | * @return bool|\WP_Error
73 | */
74 | protected function validateMetadata($apiResponse) {
75 | if (
76 | !isset($apiResponse->name, $apiResponse->version)
77 | || empty($apiResponse->name)
78 | || empty($apiResponse->version)
79 | ) {
80 | return new \WP_Error(
81 | 'puc-invalid-metadata',
82 | "The plugin metadata file does not contain the required 'name' and/or 'version' keys."
83 | );
84 | }
85 | return true;
86 | }
87 |
88 |
89 | /**
90 | * Transform plugin info into the format used by the native WordPress.org API
91 | *
92 | * @return object
93 | */
94 | public function toWpFormat(){
95 | $info = new \stdClass;
96 |
97 | //The custom update API is built so that many fields have the same name and format
98 | //as those returned by the native WordPress.org API. These can be assigned directly.
99 | $sameFormat = array(
100 | 'name', 'slug', 'version', 'requires', 'tested', 'rating', 'upgrade_notice',
101 | 'num_ratings', 'downloaded', 'active_installs', 'homepage', 'last_updated',
102 | 'requires_php',
103 | );
104 | foreach($sameFormat as $field){
105 | if ( isset($this->$field) ) {
106 | $info->$field = $this->$field;
107 | } else {
108 | $info->$field = null;
109 | }
110 | }
111 |
112 | //Other fields need to be renamed and/or transformed.
113 | $info->download_link = $this->download_url;
114 | $info->author = $this->getFormattedAuthor();
115 | $info->sections = array_merge(array('description' => ''), $this->sections);
116 |
117 | if ( !empty($this->banners) ) {
118 | //WP expects an array with two keys: "high" and "low". Both are optional.
119 | //Docs: https://wordpress.org/plugins/about/faq/#banners
120 | $info->banners = is_object($this->banners) ? get_object_vars($this->banners) : $this->banners;
121 | $info->banners = array_intersect_key($info->banners, array('high' => true, 'low' => true));
122 | }
123 |
124 | return $info;
125 | }
126 |
127 | protected function getFormattedAuthor() {
128 | if ( !empty($this->author_homepage) ){
129 | /** @noinspection HtmlUnknownTarget */
130 | return sprintf('%s', $this->author_homepage, $this->author);
131 | }
132 | return $this->author;
133 | }
134 | }
135 |
136 | endif;
137 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | # Travis CI (MIT License) configuration file for the Underscores WordPress theme.
2 | # @link https://travis-ci.org/
3 |
4 | # For use with the Underscores WordPress theme.
5 | # @link https://github.com/Automattic/_s
6 |
7 | # Ditch sudo and use containers.
8 | # @link http://docs.travis-ci.com/user/migrating-from-legacy/#Why-migrate-to-container-based-infrastructure%3F
9 | # @link http://docs.travis-ci.com/user/workers/container-based-infrastructure/#Routing-your-build-to-container-based-infrastructure
10 | sudo: false
11 |
12 | # Declare project language.
13 | # @link http://about.travis-ci.org/docs/user/languages/php/
14 | language: php
15 |
16 | # Declare versions of PHP to use. Use one decimal max.
17 | # @link http://docs.travis-ci.com/user/build-configuration/
18 | matrix:
19 | fast_finish: true
20 |
21 | include:
22 | # aliased to a recent 5.6.x version
23 | - php: '5.6'
24 | # aliased to a recent 7.0.x version
25 | - php: '7.0'
26 | # aliased to a recent 7.1.x version
27 | - php: '7.1'
28 | # aliased to a recent 7.2.x version
29 | - php: '7.2'
30 | # aliased to a recent 7.3.x version
31 | - php: '7.3'
32 | # aliased to a recent hhvm version
33 | - php: 'hhvm'
34 |
35 | allow_failures:
36 | - php: 'hhvm'
37 | - php: '7.2'
38 | - php: '7.3'
39 |
40 | # Use this to prepare the system to install prerequisites or dependencies.
41 | # e.g. sudo apt-get update.
42 | # Failures in this section will result in build status 'errored'.
43 | # before_install:
44 |
45 | # Use this to prepare your build for testing.
46 | # e.g. copy database configurations, environment variables, etc.
47 | # Failures in this section will result in build status 'errored'.
48 | before_script:
49 | # PHPCS
50 | - export PHPCS_DIR=/tmp/phpcs
51 | # The folder will be bin in phpcs 3.0, scripts in 2.9
52 | - export PHPCS_EXECUTABLE_DIR=scripts
53 | - export SNIFFS_DIR=/tmp/sniffs
54 | # Install CodeSniffer for WordPress Coding Standards checks.
55 | - if [[ "$SNIFF" == "1" ]]; then git clone -b $PHPCS_BRANCH --depth 1 https://github.com/squizlabs/PHP_CodeSniffer.git $PHPCS_DIR; fi
56 | # Install WordPress Coding Standards.
57 | - if [[ "$SNIFF" == "1" ]]; then git clone -b master --depth 1 https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards.git $SNIFFS_DIR; fi
58 | # Install PHP Compatibility sniffs.
59 | - if [[ "$SNIFF" == "1" ]]; then git clone -b master --depth 1 https://github.com/wimg/PHPCompatibility.git $SNIFFS_DIR/PHPCompatibility; fi
60 | # Set install path for PHPCS sniffs.
61 | # @link https://github.com/squizlabs/PHP_CodeSniffer/blob/4237c2fc98cc838730b76ee9cee316f99286a2a7/CodeSniffer.php#L1941
62 | - if [[ "$SNIFF" == "1" ]]; then $PHPCS_DIR/$PHPCS_EXECUTABLE_DIR/phpcs --config-set installed_paths $SNIFFS_DIR; fi
63 | # After CodeSniffer install you should refresh your path.
64 | - if [[ "$SNIFF" == "1" ]]; then phpenv rehash; fi
65 | # Install JSCS: JavaScript Code Style checker.
66 | # @link http://jscs.info/
67 | - if [[ "$SNIFF" == "1" ]]; then npm install -g jscs; fi
68 | # Install JSHint, a JavaScript Code Quality Tool.
69 | # @link http://jshint.com/docs/
70 | - if [[ "$SNIFF" == "1" ]]; then npm install -g jshint; fi
71 | # Pull in the WP Core jshint rules.
72 | - if [[ "$SNIFF" == "1" ]]; then wget https://develop.svn.wordpress.org/trunk/.jshintrc; fi
73 |
74 | # Run test script commands.
75 | # Default is specific to project language.
76 | # All commands must exit with code 0 on success. Anything else is considered failure.
77 | script:
78 | # Search for PHP syntax errors.
79 | - find -L . -name '*.php' -print0 | xargs -0 -n 1 -P 4 php -l
80 | # Run the theme through JSHint.
81 | #- if [[ "$SNIFF" == "1" ]]; then jshint .; fi
82 | # Run the theme through JavaScript Code Style checker.
83 | #- if [[ "$SNIFF" == "1" ]]; then jscs .; fi
84 | # WordPress Coding Standards.
85 | # @link https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards
86 | # @link http://pear.php.net/package/PHP_CodeSniffer/
87 | # -p flag: Show progress of the run.
88 | # -s flag: Show sniff codes in all reports.
89 | # -v flag: Print verbose output.
90 | # -n flag: Do not print warnings. (shortcut for --warning-severity=0)
91 | # --standard: Use WordPress as the standard.
92 | # --extensions: Only sniff PHP files.
93 | - if [[ "$SNIFF" == "1" ]]; then $PHPCS_DIR/$PHPCS_EXECUTABLE_DIR/phpcs -p -s -v -n . --ignore=*/plugin-update-checker/*,*/woocommerce/* --standard=./phpcs.xml --extensions=php; fi
94 |
95 | # Receive notifications for build results.
96 | # @link http://docs.travis-ci.com/user/notifications/#Email-notifications
97 | notifications:
98 | email: false
99 |
--------------------------------------------------------------------------------
/assets/iframemanager.css:
--------------------------------------------------------------------------------
1 | div[data-service] *,div[data-service] :after,div[data-service] :before{-webkit-box-sizing:border-box;box-sizing:border-box;float:none;font-style:inherit;font-variant:normal;font-weight:inherit;font-family:inherit;line-height:1.2;font-size:1em;margin:0;padding:0;text-transform:none;letter-spacing:unset;color:inherit;background:0 0;border:none;box-shadow:none;text-decoration:none;text-align:left}div[data-service] .c-ld{bottom:2em;right:2.5em;opacity:0;visibility:hidden;transform:translateY(10px);transition:opacity .3s ease,visibility .3s ease,transform .3s ease}div[data-service] .c-ld,div[data-service] .c-ld:after{position:absolute;z-index:1;border-radius:100%;width:20px;height:20px}div[data-service] .c-ld::after{content:'';border:4px solid #fff;border-top:4px solid transparent;animation:spin 1s linear infinite}div[data-service].c-h-n .c-ld{opacity:1;visibility:visible;transform:translateY(0)}@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}div[data-service]{display:inline-block;max-width:100%;min-height:150px;min-width:300px;font-family:inherit;position:relative;background-color:#0b1016}div[data-service] button,div[data-service] h1,div[data-service] h2,div[data-service] h3,div[data-service] input,div[data-service] label{transition:none;animation:none}div[data-service]::before{padding-top:56.25%;display:block;content:""}div[data-autoscale]{height:auto;width:100%}div[data-service] .c-nt{color:#fff;max-width:100%;height:100%;width:100%;transition:opacity .3s ease,visibility .3s ease;position:absolute;top:0;left:0;bottom:0;right:0;z-index:2}div[data-service] .c-bg{position:absolute;top:0;right:0;bottom:0;left:0;opacity:.5;z-index:1;transition:opacity .3s ease,visibility .3s ease,transform .3s ease}div[data-service] .c-bg::before{content:'';position:absolute;top:0;left:0;right:0;bottom:0;z-index:1;transition:opacity .3s ease,visibility .3s ease;background:#1e3861;background:linear-gradient(14deg,rgb(12 15 23 / 95%) 10%,rgb(0 0 0 / 51%) 100%,rgba(68,77,125,.1082983535210959) 0);background:-moz-linear-gradient(14deg,#1e3861 0,rgba(206,220,233,.1181022750897234) 100%);background:-webkit-linear-gradient(14deg,#1e3861 0,rgba(206,220,233,.1181022750897234) 100%);background:linear-gradient(14deg,#1e3861 0,rgba(206,220,233,.1181022750897234) 100%)}div[data-service] .c-bg-i{background-size:cover;background-position:center;background-repeat:no-repeat;position:absolute;top:0;left:0;right:0;bottom:0;opacity:0;transition:opacity .5s ease,transform .5s ease}div[data-service] .c-bg-i.loaded{opacity:1}div[data-service] .c-tl{display:block;margin-bottom:10px;font-size:1.2em;font-weight:700;text-align:center}div[data-service].c-h-n .c-bg{opacity:1;transform:scale(1)}div[data-service].c-h-n .c-nt{opacity:0;visibility:hidden}div[data-service] .c-n-c{display:table;height:100%;width:100%;position:relative;z-index:1;margin:0;font-size:.9em;transition:background-color .3s ease,opacity .3s ease}div[data-service] .c-n-t{display:block;font-size:.95em;position:relative;z-index:1;line-height:1.4em;color:#fff;max-width:420px;margin:0 auto;margin-bottom:20px}div[data-service] .c-n-a,div[data-service] .c-n-t{text-align:center}div[data-service] .c-t-cn{display:table-cell;vertical-align:middle;padding:0 12px;transition:opacity .3s ease,transform .3s ease,visibility .3s ease}div[data-service] .c-n-c .c-l-b,div[data-service] .c-n-c .c-la-b{display:inline-block;position:relative;padding:1em;vertical-align:middle;background:rgba(0,102,219,.84);border:none;border-radius:.25em;font-size:.85em;padding-left:2.8em;color:#fff;margin:0 auto;font-weight:700;cursor:pointer;transition:opacity .3s ease,transform .3s cubic-bezier(.25,1,.5,1),visibility .3s ease,box-shadow .3s ease,background-color .3s ease;box-shadow:rgba(0,0,0,.19) 0 4px 12px}div[data-service] .c-n-c .c-l-b::before{content:'';display:block;position:absolute;top:12px;left:1.1em;z-index:2;height:0;border-left:12px solid #fff;border-top:7.5px solid transparent;border-bottom:7.5px solid transparent}div[data-service] .c-n-c .c-la-b{margin-left:1em;padding:1em;background:rgba(225,239,255,.8);color:#0d1f34}div[data-service] .c-n-c .c-la-b:hover{background:rgba(225,239,255,.95)}div[data-service] .c-n-c .c-l-b:hover{background:rgba(9,80,161,.89)}div[data-service] .c-n-c .c-la-b:active{transition:none;background:rgba(225,239,255,.6)}div[data-service] .c-n-c .c-l-b:active{transition:none;box-shadow:0 0 0 4px rgba(24,104,250,.24)}div[data-service].c-h-n .c-t-cn{opacity:0;visibility:hidden;transform:translateY(-10px)}div[data-service] iframe{position:absolute;top:0;left:0;right:0;bottom:0;height:100%;border:none;max-width:100%;width:100%;background:#000;display:block;visibility:hidden;opacity:0;z-index:1;transition:opacity .5s ease}div[data-service].c-h-b iframe{opacity:1;visibility:visible;transform:scale(1);transition-delay:.1s}div[data-service] .c-n-t a{color:#5fb3fb;text-decoration:none;border-bottom:1px solid #5fb3fb}div[data-service] .c-n-t a:hover{border-color:transparent}
--------------------------------------------------------------------------------
/plugin-update-checker/Puc/v5p5/Metadata.php:
--------------------------------------------------------------------------------
1 |
22 | */
23 | protected $extraProperties = array();
24 |
25 | /**
26 | * Create an instance of this class from a JSON document.
27 | *
28 | * @abstract
29 | * @param string $json
30 | * @return self
31 | */
32 | public static function fromJson($json) {
33 | throw new LogicException('The ' . __METHOD__ . ' method must be implemented by subclasses');
34 | }
35 |
36 | /**
37 | * @param string $json
38 | * @param self $target
39 | * @return bool
40 | */
41 | protected static function createFromJson($json, $target) {
42 | /** @var \StdClass $apiResponse */
43 | $apiResponse = json_decode($json);
44 | if ( empty($apiResponse) || !is_object($apiResponse) ){
45 | $errorMessage = "Failed to parse update metadata. Try validating your .json file with https://jsonlint.com/";
46 | do_action('puc_api_error', new WP_Error('puc-invalid-json', $errorMessage));
47 | //phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_trigger_error -- For plugin developers.
48 | trigger_error(esc_html($errorMessage), E_USER_NOTICE);
49 | return false;
50 | }
51 |
52 | $valid = $target->validateMetadata($apiResponse);
53 | if ( is_wp_error($valid) ){
54 | do_action('puc_api_error', $valid);
55 | //phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_trigger_error -- For plugin developers.
56 | trigger_error(esc_html($valid->get_error_message()), E_USER_NOTICE);
57 | return false;
58 | }
59 |
60 | foreach(get_object_vars($apiResponse) as $key => $value){
61 | $target->$key = $value;
62 | }
63 |
64 | return true;
65 | }
66 |
67 | /**
68 | * No validation by default! Subclasses should check that the required fields are present.
69 | *
70 | * @param \StdClass $apiResponse
71 | * @return bool|\WP_Error
72 | */
73 | protected function validateMetadata($apiResponse) {
74 | return true;
75 | }
76 |
77 | /**
78 | * Create a new instance by copying the necessary fields from another object.
79 | *
80 | * @abstract
81 | * @param \StdClass|self $object The source object.
82 | * @return self The new copy.
83 | */
84 | public static function fromObject($object) {
85 | throw new LogicException('The ' . __METHOD__ . ' method must be implemented by subclasses');
86 | }
87 |
88 | /**
89 | * Create an instance of StdClass that can later be converted back to an
90 | * update or info container. Useful for serialization and caching, as it
91 | * avoids the "incomplete object" problem if the cached value is loaded
92 | * before this class.
93 | *
94 | * @return \StdClass
95 | */
96 | public function toStdClass() {
97 | $object = new stdClass();
98 | $this->copyFields($this, $object);
99 | return $object;
100 | }
101 |
102 | /**
103 | * Transform the metadata into the format used by WordPress core.
104 | *
105 | * @return object
106 | */
107 | abstract public function toWpFormat();
108 |
109 | /**
110 | * Copy known fields from one object to another.
111 | *
112 | * @param \StdClass|self $from
113 | * @param \StdClass|self $to
114 | */
115 | protected function copyFields($from, $to) {
116 | $fields = $this->getFieldNames();
117 |
118 | if ( property_exists($from, 'slug') && !empty($from->slug) ) {
119 | //Let plugins add extra fields without having to create subclasses.
120 | $fields = apply_filters($this->getPrefixedFilter('retain_fields') . '-' . $from->slug, $fields);
121 | }
122 |
123 | foreach ($fields as $field) {
124 | if ( property_exists($from, $field) ) {
125 | $to->$field = $from->$field;
126 | }
127 | }
128 | }
129 |
130 | /**
131 | * @return string[]
132 | */
133 | protected function getFieldNames() {
134 | return array();
135 | }
136 |
137 | /**
138 | * @param string $tag
139 | * @return string
140 | */
141 | protected function getPrefixedFilter($tag) {
142 | return 'puc_' . $tag;
143 | }
144 |
145 | public function __set($name, $value) {
146 | $this->extraProperties[$name] = $value;
147 | }
148 |
149 | public function __get($name) {
150 | return isset($this->extraProperties[$name]) ? $this->extraProperties[$name] : null;
151 | }
152 |
153 | public function __isset($name) {
154 | return isset($this->extraProperties[$name]);
155 | }
156 |
157 | public function __unset($name) {
158 | unset($this->extraProperties[$name]);
159 | }
160 | }
161 |
162 | endif;
163 |
--------------------------------------------------------------------------------