Version Description
Current Release = Released: 19th March, 2018 - Release Notes
(v.0) NEW: [PRO] Keyless Activation of Pro licenses.
(v.0) ADDED: WordPress Password Policies.
(v.0) ADDED: Pwned Passwords Detection.
(v.0) IMPROVED: Major rewrite of plugin AJAX handling.
(v.0) IMPROVED: Notices to indicate the time of the last scans.
(v.0) FIXED: A few bugs
Download this release
Release Info
Developer | paultgoodchild |
Plugin | Shield Security for WordPress |
Version | 6.6.0 |
Comparing to | |
See all releases |
Code changes from version 6.5.0 to 6.6.0
- icwp-plugin-controller.php +62 -39
- icwp-wpsf.php +3 -3
- init.php +1 -1
- languages/default.mo +0 -0
- languages/default.po +3799 -2047
- languages/wp-simple-firewall-fi.mo +0 -0
- languages/wp-simple-firewall-sr_RS.mo +0 -0
- plugin-spec.php +2 -2
- readme.txt +67 -40
- resources/js/global-plugin.js +3 -3
- resources/js/plugin.js +1 -7
- resources/js/whitelabel.js +8 -0
- src/common/easydigitaldownloads/ICWP_EDD_LicenseVO.php +8 -0
- src/common/icwp-data.php +27 -8
- src/common/icwp-edd.php +50 -7
- src/common/icwp-optionsvo.php +4 -5
- src/common/icwp-usermeta.php +3 -0
- src/common/icwp-wpfunctions.php +11 -14
- src/common/lib/composer.json +16 -11
- src/common/lib/composer.lock +75 -33
- src/common/lib/vendor/autoload.php +1 -0
- src/common/lib/vendor/composer/autoload_classmap.php +0 -457
- src/common/lib/vendor/composer/autoload_static.php +0 -461
- src/common/lib/vendor/composer/installed.json +81 -85
- src/common/lib/vendor/nesbot/carbon/src/Carbon/Carbon.php +840 -333
- src/common/lib/vendor/nesbot/carbon/src/Carbon/CarbonInterval.php +47 -21
- src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/ar.php +3 -3
- src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/ar_Shakl.php +31 -0
- src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/az.php +2 -2
- src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/bg.php +1 -1
- src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/dv_MV.php +31 -0
- src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/el.php +3 -3
- src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/fr.php +5 -5
- src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/hy.php +9 -9
- src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/ja.php +18 -18
- src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/kk.php +29 -0
- src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/mn.php +62 -0
- src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/pl.php +2 -2
- src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/ps.php +31 -0
- src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/sk.php +8 -1
- src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/sr.php +6 -0
- src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl.php +38 -0
- src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/sr_ME.php +1 -27
- src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/th.php +18 -18
- src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/uk.php +1 -1
- src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/uz.php +15 -15
- src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/zh_TW.php +15 -15
- src/common/lib/vendor/symfony/translation/CHANGELOG.md +0 -31
- src/common/lib/vendor/symfony/translation/Catalogue/AbstractOperation.php +5 -7
- src/common/lib/vendor/symfony/translation/Catalogue/DiffOperation.php +33 -0
- src/common/lib/vendor/symfony/translation/Command/XliffLintCommand.php +0 -245
- src/common/lib/vendor/symfony/translation/DataCollector/TranslationDataCollector.php +0 -23
- src/common/lib/vendor/symfony/translation/DataCollectorTranslator.php +1 -3
- src/common/lib/vendor/symfony/translation/DependencyInjection/TranslationDumperPass.php +0 -44
- src/common/lib/vendor/symfony/translation/DependencyInjection/TranslationExtractorPass.php +0 -49
- src/common/lib/vendor/symfony/translation/DependencyInjection/TranslatorPass.php +0 -95
- src/common/lib/vendor/symfony/translation/Dumper/CsvFileDumper.php +10 -0
- src/common/lib/vendor/symfony/translation/Dumper/FileDumper.php +25 -6
- src/common/lib/vendor/symfony/translation/Dumper/IcuResFileDumper.php +10 -0
- src/common/lib/vendor/symfony/translation/Dumper/IniFileDumper.php +10 -0
- src/common/lib/vendor/symfony/translation/Dumper/JsonFileDumper.php +10 -0
- src/common/lib/vendor/symfony/translation/Dumper/MoFileDumper.php +10 -0
- src/common/lib/vendor/symfony/translation/Dumper/PhpFileDumper.php +10 -0
- src/common/lib/vendor/symfony/translation/Dumper/PoFileDumper.php +10 -0
- src/common/lib/vendor/symfony/translation/Dumper/QtFileDumper.php +10 -0
- src/common/lib/vendor/symfony/translation/Dumper/XliffFileDumper.php +14 -21
- src/common/lib/vendor/symfony/translation/Dumper/YamlFileDumper.php +12 -10
- src/common/lib/vendor/symfony/translation/Exception/InvalidArgumentException.php +0 -21
- src/common/lib/vendor/symfony/translation/Exception/LogicException.php +0 -21
- src/common/lib/vendor/symfony/translation/Exception/RuntimeException.php +0 -21
- src/common/lib/vendor/symfony/translation/Extractor/AbstractFileExtractor.php +2 -4
- src/common/lib/vendor/symfony/translation/Extractor/PhpExtractor.php +0 -258
- src/common/lib/vendor/symfony/translation/Extractor/PhpStringTokenParser.php +0 -142
- src/common/lib/vendor/symfony/translation/Formatter/ChoiceMessageFormatterInterface.php +0 -30
- src/common/lib/vendor/symfony/translation/Formatter/MessageFormatter.php +0 -48
- src/common/lib/vendor/symfony/translation/Formatter/MessageFormatterInterface.php +0 -30
- src/common/lib/vendor/symfony/translation/Interval.php +2 -4
- src/common/lib/vendor/symfony/translation/Loader/XliffFileLoader.php +7 -27
- src/common/lib/vendor/symfony/translation/Loader/YamlFileLoader.php +2 -11
- src/common/lib/vendor/symfony/translation/LoggingTranslator.php +1 -2
- src/common/lib/vendor/symfony/translation/MessageCatalogue.php +3 -4
- src/common/lib/vendor/symfony/translation/MessageSelector.php +4 -12
- src/common/lib/vendor/symfony/translation/PluralizationRules.php +7 -1
- src/common/lib/vendor/symfony/translation/Reader/TranslationReader.php +0 -63
- src/common/lib/vendor/symfony/translation/Reader/TranslationReaderInterface.php +0 -30
- src/common/lib/vendor/symfony/translation/Resources/schemas/xliff-core-1.2-strict.xsd +0 -2223
- src/common/lib/vendor/symfony/translation/Translator.php +65 -39
- src/common/lib/vendor/symfony/translation/TranslatorBagInterface.php +1 -3
- src/common/lib/vendor/symfony/translation/TranslatorInterface.php +3 -5
- src/common/lib/vendor/symfony/translation/Writer/TranslationWriter.php +6 -25
- src/common/lib/vendor/symfony/translation/Writer/TranslationWriterInterface.php +0 -34
- src/common/lib/vendor/symfony/translation/composer.json +6 -10
- src/common/lib/vendor/twig/twig/lib/Twig/Compiler.php +3 -1
- src/common/lib/vendor/twig/twig/lib/Twig/Environment.php +13 -9
- src/common/lib/vendor/twig/twig/lib/Twig/ExpressionParser.php +8 -5
- src/common/lib/vendor/twig/twig/lib/Twig/Extension/Core.php +12 -4
- src/common/lib/vendor/twig/twig/lib/Twig/Lexer.php +2 -2
- src/common/lib/vendor/twig/twig/lib/Twig/Loader/Filesystem.php +1 -1
- src/common/lib/vendor/twig/twig/lib/Twig/NodeVisitor/Optimizer.php +2 -2
- src/common/lib/vendor/twig/twig/lib/Twig/Parser.php +5 -3
- src/common/lib/vendor/twig/twig/lib/Twig/Profiler/NodeVisitor/Profiler.php +1 -1
- src/common/lib/vendor/twig/twig/lib/Twig/Template.php +3 -1
- src/common/lib/vendor/twig/twig/lib/Twig/TokenParser/For.php +1 -1
- src/common/lib/vendor/twig/twig/lib/Twig/TokenParserBroker.php +2 -2
- src/common/lib/vendor/twig/twig/lib/Twig/TokenStream.php +1 -1
- src/common/wp-admin-notices.php +23 -45
- src/common/wp-comments.php +1 -2
- src/config/feature-admin_access_restriction.php +87 -0
- src/config/feature-autoupdates.php +1 -1
- src/config/feature-hack_protect.php +19 -1
- src/config/feature-license.php +26 -10
- src/config/feature-plugin.php +1 -0
- src/config/feature-user_management.php +110 -0
- src/features/admin_access_restriction.php +163 -42
- src/features/audit_trail.php +35 -15
- src/features/autoupdates.php +42 -25
- src/features/base.php +168 -172
- src/features/base_wpsf.php +21 -2
- src/features/email.php +62 -69
- src/features/hack_protect.php +79 -6
- src/features/ips.php +50 -30
- src/features/license.php +221 -208
- src/features/login_protect.php +0 -7
- src/features/plugin.php +41 -18
- src/features/sessions.php +2 -2
- src/features/user_management.php +116 -14
- src/processors/admin_access_restriction.php +28 -2
- src/processors/adminaccess_whitelabel.php +111 -0
- src/processors/autoupdates.php +2 -4
- src/processors/base.php +4 -2
- src/processors/base_plugin.php +0 -4
- src/processors/base_wpsf.php +2 -2
- src/processors/basedb.php +1 -1
- src/processors/hackprotect_corechecksumscan.php +22 -24
- src/processors/hackprotect_filecleanerscan.php +6 -9
- src/processors/hackprotect_ptguard.php +3 -0
- src/processors/hackprotect_wpvulnscan.php +6 -7
- src/processors/license.php +28 -2
- src/processors/plugin.php +2 -3
- src/processors/plugin_badgewidget.php +1 -1
- src/processors/plugin_tracking.php +3 -1
- src/processors/user_management.php +51 -4
- src/processors/usermanagement_passwords.php +337 -0
- src/wizards/base.php +29 -20
- src/wizards/plugin.php +17 -22
- templates/php/access_restricted.php +11 -8
- templates/php/index.php +1 -1
- templates/php/index_body.php +0 -1
- templates/php/index_footer.php +2 -2
- templates/php/notices/admin-notice-template.php +11 -13
- templates/php/notices/allow-tracking.php +7 -9
- templates/php/snippets/admin_access_login.php +16 -22
- templates/php/snippets/admin_access_login_box.php +16 -18
- templates/php/snippets/module-actions-audit_trail.php +4 -10
- templates/php/snippets/module-actions-ips.php +0 -1
- templates/php/snippets/options_form.php +36 -69
- templates/php/snippets/plugin_badge.php +53 -60
- templates/php/snippets/pro.php +28 -56
- templates/twig/snippets/state_summary.twig +0 -33
- templates/twig/wizard/pages/wizard.twig +17 -10
- templates/twig/wizard/slides/welcome/ip_detect.twig +1 -1
icwp-plugin-controller.php
CHANGED
@@ -2,11 +2,9 @@
|
|
2 |
/**
|
3 |
* Copyright (c) 2018 iControlWP <support@icontrolwp.com>
|
4 |
* All rights reserved.
|
5 |
-
*
|
6 |
* "Shield" (formerly WordPress Simple Firewall) is distributed under the GNU
|
7 |
* General Public License, Version 2, June 1991. Copyright (C) 1989, 1991 Free
|
8 |
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
|
9 |
-
*
|
10 |
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
11 |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
12 |
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
@@ -247,14 +245,14 @@ class ICWP_WPSF_Plugin_Controller extends ICWP_WPSF_Foundation {
|
|
247 |
/**
|
248 |
*/
|
249 |
public function onWpDeactivatePlugin() {
|
250 |
-
if ( current_user_can( $this->getBasePermissions() ) && apply_filters( $this->
|
251 |
-
do_action( $this->
|
252 |
$this->deletePluginControllerOptions();
|
253 |
}
|
254 |
}
|
255 |
|
256 |
public function onWpActivatePlugin() {
|
257 |
-
do_action( $this->
|
258 |
$this->loadAllFeatures( true, true );
|
259 |
}
|
260 |
|
@@ -270,6 +268,11 @@ class ICWP_WPSF_Plugin_Controller extends ICWP_WPSF_Foundation {
|
|
270 |
add_action( 'admin_menu', array( $this, 'onWpAdminMenu' ) );
|
271 |
add_action( 'network_admin_menu', array( $this, 'onWpAdminMenu' ) );
|
272 |
|
|
|
|
|
|
|
|
|
|
|
273 |
add_filter( 'all_plugins', array( $this, 'filter_hidePluginFromTableList' ) );
|
274 |
add_filter( 'all_plugins', array( $this, 'doPluginLabels' ) );
|
275 |
add_filter( 'plugin_action_links_'.$this->getPluginBaseFile(), array( $this, 'onWpPluginActionLinks' ), 50, 1 );
|
@@ -285,7 +288,9 @@ class ICWP_WPSF_Plugin_Controller extends ICWP_WPSF_Foundation {
|
|
285 |
|
286 |
// outsource the collection of admin notices
|
287 |
if ( is_admin() ) {
|
288 |
-
$
|
|
|
|
|
289 |
}
|
290 |
}
|
291 |
|
@@ -328,15 +333,15 @@ class ICWP_WPSF_Plugin_Controller extends ICWP_WPSF_Foundation {
|
|
328 |
public function onWpDashboardSetup() {
|
329 |
if ( $this->getIsValidAdminArea() ) {
|
330 |
wp_add_dashboard_widget(
|
331 |
-
$this->
|
332 |
-
apply_filters( $this->
|
333 |
array( $this, 'displayDashboardWidget' )
|
334 |
);
|
335 |
}
|
336 |
}
|
337 |
|
338 |
public function displayDashboardWidget() {
|
339 |
-
$aContent = apply_filters( $this->
|
340 |
echo implode( '', $aContent );
|
341 |
}
|
342 |
|
@@ -346,10 +351,10 @@ class ICWP_WPSF_Plugin_Controller extends ICWP_WPSF_Foundation {
|
|
346 |
* @return bool
|
347 |
*/
|
348 |
public function getHasPermissionToManage() {
|
349 |
-
if ( apply_filters( $this->
|
350 |
return true;
|
351 |
}
|
352 |
-
return ( $this->getMeetsBasePermissions() && apply_filters( $this->
|
353 |
}
|
354 |
|
355 |
/**
|
@@ -371,8 +376,8 @@ class ICWP_WPSF_Plugin_Controller extends ICWP_WPSF_Foundation {
|
|
371 |
*/
|
372 |
private function downloadOptionsExport() {
|
373 |
$oDp = $this->loadDataProcessor();
|
374 |
-
if ( $oDp->
|
375 |
-
$aExportOptions = apply_filters( $this->
|
376 |
if ( !empty( $aExportOptions ) && is_array( $aExportOptions ) ) {
|
377 |
$oDp->downloadStringAsFile(
|
378 |
wp_json_encode( $aExportOptions ),
|
@@ -384,6 +389,25 @@ class ICWP_WPSF_Plugin_Controller extends ICWP_WPSF_Foundation {
|
|
384 |
}
|
385 |
}
|
386 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
387 |
/**
|
388 |
* @return string
|
389 |
*/
|
@@ -421,22 +445,21 @@ class ICWP_WPSF_Plugin_Controller extends ICWP_WPSF_Foundation {
|
|
421 |
*/
|
422 |
protected function createPluginMenu() {
|
423 |
|
424 |
-
$bHideMenu = apply_filters( $this->
|
425 |
if ( $bHideMenu ) {
|
426 |
return true;
|
427 |
}
|
428 |
|
429 |
if ( $this->getPluginSpec_Menu( 'top_level' ) ) {
|
430 |
|
431 |
-
$
|
432 |
-
|
433 |
-
$sMenuTitle = $this->getPluginSpec_Menu( 'title' );
|
434 |
if ( is_null( $sMenuTitle ) ) {
|
435 |
$sMenuTitle = $this->getHumanName();
|
436 |
}
|
437 |
|
438 |
$sMenuIcon = $this->getPluginUrl_Image( $this->getPluginSpec_Menu( 'icon_image' ) );
|
439 |
-
$sIconUrl = empty( $
|
440 |
|
441 |
$sFullParentMenuId = $this->getPluginPrefix();
|
442 |
add_menu_page(
|
@@ -450,7 +473,7 @@ class ICWP_WPSF_Plugin_Controller extends ICWP_WPSF_Foundation {
|
|
450 |
|
451 |
if ( $this->getPluginSpec_Menu( 'has_submenu' ) ) {
|
452 |
|
453 |
-
$aPluginMenuItems = apply_filters( $this->
|
454 |
if ( !empty( $aPluginMenuItems ) ) {
|
455 |
foreach ( $aPluginMenuItems as $sMenuTitle => $aMenu ) {
|
456 |
list( $sMenuItemText, $sMenuItemId, $aMenuCallBack, $bShowItem ) = $aMenu;
|
@@ -530,7 +553,7 @@ class ICWP_WPSF_Plugin_Controller extends ICWP_WPSF_Foundation {
|
|
530 |
$sSettingsLink = sprintf( $sLinkTemplate, $this->{$sMethod}(), "_top", $aLink[ 'name' ] );;
|
531 |
$aActionLinks = array_merge(
|
532 |
array(
|
533 |
-
$this->
|
534 |
),
|
535 |
$aActionLinks
|
536 |
);
|
@@ -540,7 +563,7 @@ class ICWP_WPSF_Plugin_Controller extends ICWP_WPSF_Foundation {
|
|
540 |
$sSettingsLink = sprintf( $sLinkTemplate, $aLink[ 'href' ], "_blank", $aLink[ 'name' ] );
|
541 |
$aActionLinks = array_merge(
|
542 |
array(
|
543 |
-
$this->
|
544 |
),
|
545 |
$aActionLinks
|
546 |
);
|
@@ -556,7 +579,7 @@ class ICWP_WPSF_Plugin_Controller extends ICWP_WPSF_Foundation {
|
|
556 |
$aFrontendIncludes = $this->getPluginSpec_Include( 'frontend' );
|
557 |
if ( isset( $aFrontendIncludes[ 'css' ] ) && !empty( $aFrontendIncludes[ 'css' ] ) && is_array( $aFrontendIncludes[ 'css' ] ) ) {
|
558 |
foreach ( $aFrontendIncludes[ 'css' ] as $sCssAsset ) {
|
559 |
-
$sUnique = $this->
|
560 |
wp_register_style( $sUnique, $this->getPluginUrl_Css( $sCssAsset.'.css' ), ( empty( $sDependent ) ? false : $sDependent ), $this->getVersion() );
|
561 |
wp_enqueue_style( $sUnique );
|
562 |
$sDependent = $sUnique;
|
@@ -573,7 +596,7 @@ class ICWP_WPSF_Plugin_Controller extends ICWP_WPSF_Foundation {
|
|
573 |
foreach ( $aAdminJs[ 'css' ] as $sAsset ) {
|
574 |
$sUrl = $this->getPluginUrl_Js( $sAsset.'.js' );
|
575 |
if ( !empty( $sUrl ) ) {
|
576 |
-
$sUnique = $this->
|
577 |
wp_register_script( $sUnique, $sUrl, $sDependent, $this->getVersion().rand() );
|
578 |
wp_enqueue_script( $sUnique );
|
579 |
$sDependent = $sUnique;
|
@@ -589,7 +612,7 @@ class ICWP_WPSF_Plugin_Controller extends ICWP_WPSF_Foundation {
|
|
589 |
foreach ( $aAdminJs[ 'js' ] as $sJsAsset ) {
|
590 |
$sUrl = $this->getPluginUrl_Js( $sJsAsset.'.js' );
|
591 |
if ( !empty( $sUrl ) ) {
|
592 |
-
$sUnique = $this->
|
593 |
wp_register_script( $sUnique, $sUrl, $sDependent, $this->getVersion() );
|
594 |
wp_enqueue_script( $sUnique );
|
595 |
$sDependent = $sUnique;
|
@@ -608,7 +631,7 @@ class ICWP_WPSF_Plugin_Controller extends ICWP_WPSF_Foundation {
|
|
608 |
foreach ( $aAdminCss[ 'css' ] as $sCssAsset ) {
|
609 |
$sUrl = $this->getPluginUrl_Css( $sCssAsset.'.css' );
|
610 |
if ( !empty( $sUrl ) ) {
|
611 |
-
$sUnique = $this->
|
612 |
wp_register_style( $sUnique, $sUrl, $sDependent, $this->getVersion().rand() );
|
613 |
wp_enqueue_style( $sUnique );
|
614 |
$sDependent = $sUnique;
|
@@ -624,7 +647,7 @@ class ICWP_WPSF_Plugin_Controller extends ICWP_WPSF_Foundation {
|
|
624 |
foreach ( $aAdminCss[ 'css' ] as $sCssAsset ) {
|
625 |
$sUrl = $this->getPluginUrl_Css( $sCssAsset.'.css' );
|
626 |
if ( !empty( $sUrl ) ) {
|
627 |
-
$sUnique = $this->
|
628 |
wp_register_style( $sUnique, $sUrl, $sDependent, $this->getVersion().rand() );
|
629 |
wp_enqueue_style( $sUnique );
|
630 |
$sDependent = $sUnique;
|
@@ -639,7 +662,7 @@ class ICWP_WPSF_Plugin_Controller extends ICWP_WPSF_Foundation {
|
|
639 |
*/
|
640 |
public function onWpPluginUpdateMessage() {
|
641 |
$sDefault = sprintf( 'Upgrade Now To Get The Latest Available %s Features.', $this->getHumanName() );
|
642 |
-
$sMessage = apply_filters( $this->
|
643 |
if ( empty( $sMessage ) ) {
|
644 |
$sMessage = '';
|
645 |
}
|
@@ -772,15 +795,15 @@ class ICWP_WPSF_Plugin_Controller extends ICWP_WPSF_Foundation {
|
|
772 |
* @return array
|
773 |
*/
|
774 |
public function getPluginLabels() {
|
775 |
-
return apply_filters( $this->
|
776 |
}
|
777 |
|
778 |
/**
|
779 |
* Hooked to 'shutdown'
|
780 |
*/
|
781 |
public function onWpShutdown() {
|
782 |
-
do_action( $this->
|
783 |
-
do_action( $this->
|
784 |
$this->saveCurrentPluginControllerOptions();
|
785 |
$this->deleteFlags();
|
786 |
}
|
@@ -813,7 +836,7 @@ class ICWP_WPSF_Plugin_Controller extends ICWP_WPSF_Foundation {
|
|
813 |
*/
|
814 |
public function filter_hidePluginFromTableList( $aPlugins ) {
|
815 |
|
816 |
-
$bHide = apply_filters( $this->
|
817 |
if ( !$bHide ) {
|
818 |
return $aPlugins;
|
819 |
}
|
@@ -839,7 +862,7 @@ class ICWP_WPSF_Plugin_Controller extends ICWP_WPSF_Foundation {
|
|
839 |
if ( $this->loadWp()->isCron() ) {
|
840 |
return $oPlugins;
|
841 |
}
|
842 |
-
if ( !apply_filters( $this->
|
843 |
return $oPlugins;
|
844 |
}
|
845 |
if ( isset( $oPlugins->response[ $this->getPluginBaseFile() ] ) ) {
|
@@ -867,7 +890,7 @@ class ICWP_WPSF_Plugin_Controller extends ICWP_WPSF_Foundation {
|
|
867 |
}
|
868 |
|
869 |
// do all the plugin feature/options saving
|
870 |
-
do_action( $this->
|
871 |
|
872 |
if ( $this->getIsPage_PluginAdmin() ) {
|
873 |
$oWp = $this->loadWp();
|
@@ -881,7 +904,7 @@ class ICWP_WPSF_Plugin_Controller extends ICWP_WPSF_Foundation {
|
|
881 |
* @param string $sGlue
|
882 |
* @return string
|
883 |
*/
|
884 |
-
public function
|
885 |
$sPrefix = $this->getPluginPrefix( $sGlue );
|
886 |
|
887 |
if ( $sSuffix == $sPrefix || strpos( $sSuffix, $sPrefix.$sGlue ) === 0 ) { //it already has the full prefix
|
@@ -895,8 +918,8 @@ class ICWP_WPSF_Plugin_Controller extends ICWP_WPSF_Foundation {
|
|
895 |
* @param string $sSuffix
|
896 |
* @return string
|
897 |
*/
|
898 |
-
public function
|
899 |
-
return $this->
|
900 |
}
|
901 |
|
902 |
/**
|
@@ -1408,9 +1431,9 @@ class ICWP_WPSF_Plugin_Controller extends ICWP_WPSF_Foundation {
|
|
1408 |
protected function saveCurrentPluginControllerOptions() {
|
1409 |
$oOptions = $this->getPluginControllerOptions();
|
1410 |
if ( $this->sConfigOptionsHashWhenLoaded != md5( serialize( $oOptions ) ) ) {
|
1411 |
-
add_filter( $this->
|
1412 |
$this->loadWp()->updateOption( $this->getPluginControllerOptionsKey(), $oOptions );
|
1413 |
-
remove_filter( $this->
|
1414 |
}
|
1415 |
}
|
1416 |
|
@@ -1555,7 +1578,7 @@ class ICWP_WPSF_Plugin_Controller extends ICWP_WPSF_Foundation {
|
|
1555 |
}
|
1556 |
}
|
1557 |
|
1558 |
-
do_action( $this->
|
1559 |
|
1560 |
return $bSuccess;
|
1561 |
}
|
2 |
/**
|
3 |
* Copyright (c) 2018 iControlWP <support@icontrolwp.com>
|
4 |
* All rights reserved.
|
|
|
5 |
* "Shield" (formerly WordPress Simple Firewall) is distributed under the GNU
|
6 |
* General Public License, Version 2, June 1991. Copyright (C) 1989, 1991 Free
|
7 |
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
|
|
|
8 |
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
9 |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
10 |
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
245 |
/**
|
246 |
*/
|
247 |
public function onWpDeactivatePlugin() {
|
248 |
+
if ( current_user_can( $this->getBasePermissions() ) && apply_filters( $this->prefix( 'delete_on_deactivate' ), false ) ) {
|
249 |
+
do_action( $this->prefix( 'delete_plugin' ) );
|
250 |
$this->deletePluginControllerOptions();
|
251 |
}
|
252 |
}
|
253 |
|
254 |
public function onWpActivatePlugin() {
|
255 |
+
do_action( $this->prefix( 'plugin_activate' ) );
|
256 |
$this->loadAllFeatures( true, true );
|
257 |
}
|
258 |
|
268 |
add_action( 'admin_menu', array( $this, 'onWpAdminMenu' ) );
|
269 |
add_action( 'network_admin_menu', array( $this, 'onWpAdminMenu' ) );
|
270 |
|
271 |
+
if ( $this->loadWp()->isAjax() ) {
|
272 |
+
add_action( 'wp_ajax_'.$this->prefix(), array( $this, 'ajaxAction' ) );
|
273 |
+
add_action( 'wp_ajax_nopriv_'.$this->prefix(), array( $this, 'ajaxAction' ) );
|
274 |
+
}
|
275 |
+
|
276 |
add_filter( 'all_plugins', array( $this, 'filter_hidePluginFromTableList' ) );
|
277 |
add_filter( 'all_plugins', array( $this, 'doPluginLabels' ) );
|
278 |
add_filter( 'plugin_action_links_'.$this->getPluginBaseFile(), array( $this, 'onWpPluginActionLinks' ), 50, 1 );
|
288 |
|
289 |
// outsource the collection of admin notices
|
290 |
if ( is_admin() ) {
|
291 |
+
$oNofics = $this->loadAdminNoticesProcessor();
|
292 |
+
$oNofics->setActionPrefix( $this->prefix() );
|
293 |
+
add_filter( $this->prefix( 'ajaxAuthAction' ), array( $oNofics, 'handleAuthAjax' ) );
|
294 |
}
|
295 |
}
|
296 |
|
333 |
public function onWpDashboardSetup() {
|
334 |
if ( $this->getIsValidAdminArea() ) {
|
335 |
wp_add_dashboard_widget(
|
336 |
+
$this->prefix( 'dashboard_widget' ),
|
337 |
+
apply_filters( $this->prefix( 'dashboard_widget_title' ), $this->getHumanName() ),
|
338 |
array( $this, 'displayDashboardWidget' )
|
339 |
);
|
340 |
}
|
341 |
}
|
342 |
|
343 |
public function displayDashboardWidget() {
|
344 |
+
$aContent = apply_filters( $this->prefix( 'dashboard_widget_content' ), array() );
|
345 |
echo implode( '', $aContent );
|
346 |
}
|
347 |
|
351 |
* @return bool
|
352 |
*/
|
353 |
public function getHasPermissionToManage() {
|
354 |
+
if ( apply_filters( $this->prefix( 'bypass_permission_to_manage' ), false ) ) {
|
355 |
return true;
|
356 |
}
|
357 |
+
return ( $this->getMeetsBasePermissions() && apply_filters( $this->prefix( 'has_permission_to_manage' ), true ) );
|
358 |
}
|
359 |
|
360 |
/**
|
376 |
*/
|
377 |
private function downloadOptionsExport() {
|
378 |
$oDp = $this->loadDataProcessor();
|
379 |
+
if ( $oDp->query( 'icwp_shield_export' ) == 1 ) {
|
380 |
+
$aExportOptions = apply_filters( $this->prefix( 'gather_options_for_export' ), array() );
|
381 |
if ( !empty( $aExportOptions ) && is_array( $aExportOptions ) ) {
|
382 |
$oDp->downloadStringAsFile(
|
383 |
wp_json_encode( $aExportOptions ),
|
389 |
}
|
390 |
}
|
391 |
|
392 |
+
public function ajaxAction() {
|
393 |
+
$sNonceAction = $this->loadDP()->request( 'exec' );
|
394 |
+
check_ajax_referer( $sNonceAction, 'exec_nonce' );
|
395 |
+
|
396 |
+
$sAction = $this->loadWpUsers()->isUserLoggedIn() ? 'ajaxAuthAction' : 'ajaxNonAuthAction';
|
397 |
+
$aResponse = apply_filters( $this->prefix( $sAction ), array() );
|
398 |
+
$aResponse = apply_filters( $this->prefix( 'ajaxAction' ), $aResponse );
|
399 |
+
|
400 |
+
if ( !empty( $aResponse ) && is_array( $aResponse ) && isset( $aResponse[ 'success' ] ) ) {
|
401 |
+
$bSuccess = $aResponse[ 'success' ];
|
402 |
+
wp_send_json(
|
403 |
+
array(
|
404 |
+
'success' => $bSuccess,
|
405 |
+
'data' => $aResponse
|
406 |
+
)
|
407 |
+
);
|
408 |
+
}
|
409 |
+
}
|
410 |
+
|
411 |
/**
|
412 |
* @return string
|
413 |
*/
|
445 |
*/
|
446 |
protected function createPluginMenu() {
|
447 |
|
448 |
+
$bHideMenu = apply_filters( $this->prefix( 'filter_hidePluginMenu' ), !$this->getPluginSpec_Menu( 'show' ) );
|
449 |
if ( $bHideMenu ) {
|
450 |
return true;
|
451 |
}
|
452 |
|
453 |
if ( $this->getPluginSpec_Menu( 'top_level' ) ) {
|
454 |
|
455 |
+
$aLabels = $this->getPluginLabels();
|
456 |
+
$sMenuTitle = empty( $aLabels[ 'MenuTitle' ] ) ? $this->getPluginSpec_Menu( 'title' ) : $aLabels[ 'MenuTitle' ];
|
|
|
457 |
if ( is_null( $sMenuTitle ) ) {
|
458 |
$sMenuTitle = $this->getHumanName();
|
459 |
}
|
460 |
|
461 |
$sMenuIcon = $this->getPluginUrl_Image( $this->getPluginSpec_Menu( 'icon_image' ) );
|
462 |
+
$sIconUrl = empty( $aLabels[ 'icon_url_16x16' ] ) ? $sMenuIcon : $aLabels[ 'icon_url_16x16' ];
|
463 |
|
464 |
$sFullParentMenuId = $this->getPluginPrefix();
|
465 |
add_menu_page(
|
473 |
|
474 |
if ( $this->getPluginSpec_Menu( 'has_submenu' ) ) {
|
475 |
|
476 |
+
$aPluginMenuItems = apply_filters( $this->prefix( 'filter_plugin_submenu_items' ), array() );
|
477 |
if ( !empty( $aPluginMenuItems ) ) {
|
478 |
foreach ( $aPluginMenuItems as $sMenuTitle => $aMenu ) {
|
479 |
list( $sMenuItemText, $sMenuItemId, $aMenuCallBack, $bShowItem ) = $aMenu;
|
553 |
$sSettingsLink = sprintf( $sLinkTemplate, $this->{$sMethod}(), "_top", $aLink[ 'name' ] );;
|
554 |
$aActionLinks = array_merge(
|
555 |
array(
|
556 |
+
$this->prefix( 'dashboard' ) => $sSettingsLink
|
557 |
),
|
558 |
$aActionLinks
|
559 |
);
|
563 |
$sSettingsLink = sprintf( $sLinkTemplate, $aLink[ 'href' ], "_blank", $aLink[ 'name' ] );
|
564 |
$aActionLinks = array_merge(
|
565 |
array(
|
566 |
+
$this->prefix( 'dashboard' ) => $sSettingsLink
|
567 |
),
|
568 |
$aActionLinks
|
569 |
);
|
579 |
$aFrontendIncludes = $this->getPluginSpec_Include( 'frontend' );
|
580 |
if ( isset( $aFrontendIncludes[ 'css' ] ) && !empty( $aFrontendIncludes[ 'css' ] ) && is_array( $aFrontendIncludes[ 'css' ] ) ) {
|
581 |
foreach ( $aFrontendIncludes[ 'css' ] as $sCssAsset ) {
|
582 |
+
$sUnique = $this->prefix( $sCssAsset );
|
583 |
wp_register_style( $sUnique, $this->getPluginUrl_Css( $sCssAsset.'.css' ), ( empty( $sDependent ) ? false : $sDependent ), $this->getVersion() );
|
584 |
wp_enqueue_style( $sUnique );
|
585 |
$sDependent = $sUnique;
|
596 |
foreach ( $aAdminJs[ 'css' ] as $sAsset ) {
|
597 |
$sUrl = $this->getPluginUrl_Js( $sAsset.'.js' );
|
598 |
if ( !empty( $sUrl ) ) {
|
599 |
+
$sUnique = $this->prefix( $sAsset );
|
600 |
wp_register_script( $sUnique, $sUrl, $sDependent, $this->getVersion().rand() );
|
601 |
wp_enqueue_script( $sUnique );
|
602 |
$sDependent = $sUnique;
|
612 |
foreach ( $aAdminJs[ 'js' ] as $sJsAsset ) {
|
613 |
$sUrl = $this->getPluginUrl_Js( $sJsAsset.'.js' );
|
614 |
if ( !empty( $sUrl ) ) {
|
615 |
+
$sUnique = $this->prefix( $sJsAsset );
|
616 |
wp_register_script( $sUnique, $sUrl, $sDependent, $this->getVersion() );
|
617 |
wp_enqueue_script( $sUnique );
|
618 |
$sDependent = $sUnique;
|
631 |
foreach ( $aAdminCss[ 'css' ] as $sCssAsset ) {
|
632 |
$sUrl = $this->getPluginUrl_Css( $sCssAsset.'.css' );
|
633 |
if ( !empty( $sUrl ) ) {
|
634 |
+
$sUnique = $this->prefix( $sCssAsset );
|
635 |
wp_register_style( $sUnique, $sUrl, $sDependent, $this->getVersion().rand() );
|
636 |
wp_enqueue_style( $sUnique );
|
637 |
$sDependent = $sUnique;
|
647 |
foreach ( $aAdminCss[ 'css' ] as $sCssAsset ) {
|
648 |
$sUrl = $this->getPluginUrl_Css( $sCssAsset.'.css' );
|
649 |
if ( !empty( $sUrl ) ) {
|
650 |
+
$sUnique = $this->prefix( $sCssAsset );
|
651 |
wp_register_style( $sUnique, $sUrl, $sDependent, $this->getVersion().rand() );
|
652 |
wp_enqueue_style( $sUnique );
|
653 |
$sDependent = $sUnique;
|
662 |
*/
|
663 |
public function onWpPluginUpdateMessage() {
|
664 |
$sDefault = sprintf( 'Upgrade Now To Get The Latest Available %s Features.', $this->getHumanName() );
|
665 |
+
$sMessage = apply_filters( $this->prefix( 'plugin_update_message' ), $sDefault );
|
666 |
if ( empty( $sMessage ) ) {
|
667 |
$sMessage = '';
|
668 |
}
|
795 |
* @return array
|
796 |
*/
|
797 |
public function getPluginLabels() {
|
798 |
+
return array_map( 'stripslashes', apply_filters( $this->prefix( 'plugin_labels' ), $this->getPluginSpec_Labels() ) );
|
799 |
}
|
800 |
|
801 |
/**
|
802 |
* Hooked to 'shutdown'
|
803 |
*/
|
804 |
public function onWpShutdown() {
|
805 |
+
do_action( $this->prefix( 'pre_plugin_shutdown' ) );
|
806 |
+
do_action( $this->prefix( 'plugin_shutdown' ) );
|
807 |
$this->saveCurrentPluginControllerOptions();
|
808 |
$this->deleteFlags();
|
809 |
}
|
836 |
*/
|
837 |
public function filter_hidePluginFromTableList( $aPlugins ) {
|
838 |
|
839 |
+
$bHide = apply_filters( $this->prefix( 'hide_plugin' ), false );
|
840 |
if ( !$bHide ) {
|
841 |
return $aPlugins;
|
842 |
}
|
862 |
if ( $this->loadWp()->isCron() ) {
|
863 |
return $oPlugins;
|
864 |
}
|
865 |
+
if ( !apply_filters( $this->prefix( 'hide_plugin_updates' ), false ) ) {
|
866 |
return $oPlugins;
|
867 |
}
|
868 |
if ( isset( $oPlugins->response[ $this->getPluginBaseFile() ] ) ) {
|
890 |
}
|
891 |
|
892 |
// do all the plugin feature/options saving
|
893 |
+
do_action( $this->prefix( 'form_submit' ) );
|
894 |
|
895 |
if ( $this->getIsPage_PluginAdmin() ) {
|
896 |
$oWp = $this->loadWp();
|
904 |
* @param string $sGlue
|
905 |
* @return string
|
906 |
*/
|
907 |
+
public function prefix( $sSuffix = '', $sGlue = '-' ) {
|
908 |
$sPrefix = $this->getPluginPrefix( $sGlue );
|
909 |
|
910 |
if ( $sSuffix == $sPrefix || strpos( $sSuffix, $sPrefix.$sGlue ) === 0 ) { //it already has the full prefix
|
918 |
* @param string $sSuffix
|
919 |
* @return string
|
920 |
*/
|
921 |
+
public function prefixOption( $sSuffix = '' ) {
|
922 |
+
return $this->prefix( $sSuffix, '_' );
|
923 |
}
|
924 |
|
925 |
/**
|
1431 |
protected function saveCurrentPluginControllerOptions() {
|
1432 |
$oOptions = $this->getPluginControllerOptions();
|
1433 |
if ( $this->sConfigOptionsHashWhenLoaded != md5( serialize( $oOptions ) ) ) {
|
1434 |
+
add_filter( $this->prefix( 'bypass_permission_to_manage' ), '__return_true' );
|
1435 |
$this->loadWp()->updateOption( $this->getPluginControllerOptionsKey(), $oOptions );
|
1436 |
+
remove_filter( $this->prefix( 'bypass_permission_to_manage' ), '__return_true' );
|
1437 |
}
|
1438 |
}
|
1439 |
|
1578 |
}
|
1579 |
}
|
1580 |
|
1581 |
+
do_action( $this->prefix( 'run_processors' ) );
|
1582 |
|
1583 |
return $bSuccess;
|
1584 |
}
|
icwp-wpsf.php
CHANGED
@@ -3,11 +3,11 @@
|
|
3 |
* Plugin Name: Shield Security
|
4 |
* Plugin URI: http://icwp.io/2f
|
5 |
* Description: Powerful, Easy-To-Use #1 Rated WordPress Security System
|
6 |
-
* Version: 6.
|
7 |
* Text Domain: wp-simple-firewall
|
8 |
* Domain Path: /languages/
|
9 |
-
* Author:
|
10 |
-
* Author URI: http://icwp.io/
|
11 |
*/
|
12 |
|
13 |
/**
|
3 |
* Plugin Name: Shield Security
|
4 |
* Plugin URI: http://icwp.io/2f
|
5 |
* Description: Powerful, Easy-To-Use #1 Rated WordPress Security System
|
6 |
+
* Version: 6.6.0
|
7 |
* Text Domain: wp-simple-firewall
|
8 |
* Domain Path: /languages/
|
9 |
+
* Author: One Dollar Plugin
|
10 |
+
* Author URI: http://icwp.io/bv
|
11 |
*/
|
12 |
|
13 |
/**
|
init.php
CHANGED
@@ -25,7 +25,7 @@ class ICWP_Wordpress_Simple_Firewall extends ICWP_WPSF_Foundation {
|
|
25 |
// All core values of the plugin are derived from the values stored in this value object.
|
26 |
self::$oPluginController = $oController;
|
27 |
$this->getController()->loadAllFeatures();
|
28 |
-
add_filter( $oController->
|
29 |
$this,
|
30 |
'getPluginsListUpdateMessage'
|
31 |
) );
|
25 |
// All core values of the plugin are derived from the values stored in this value object.
|
26 |
self::$oPluginController = $oController;
|
27 |
$this->getController()->loadAllFeatures();
|
28 |
+
add_filter( $oController->prefix( 'plugin_update_message' ), array(
|
29 |
$this,
|
30 |
'getPluginsListUpdateMessage'
|
31 |
) );
|
languages/default.mo
CHANGED
Binary file
|
languages/default.po
CHANGED
@@ -1,15 +1,15 @@
|
|
1 |
msgid ""
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: WPSF v2.0\n"
|
4 |
-
"POT-Creation-Date:
|
5 |
-
"PO-Revision-Date:
|
6 |
"Last-Translator: \n"
|
7 |
"Language-Team: \n"
|
8 |
"Language: en_GB\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
|
13 |
"X-Poedit-KeywordsList: _wpsf__;gettext;gettext_noop;_wpsf_e\n"
|
14 |
"X-Poedit-Basepath: ..\n"
|
15 |
"X-Poedit-SourceCharset: UTF-8\n"
|
@@ -18,1154 +18,1379 @@ msgstr ""
|
|
18 |
"X-Poedit-SearchPathExcluded-0: .git\n"
|
19 |
"X-Poedit-SearchPathExcluded-1: .idea\n"
|
20 |
|
21 |
-
#:
|
22 |
msgid "Upgrade Now To Keep Your Firewall Up-To-Date With The Latest Features."
|
23 |
msgstr ""
|
24 |
|
25 |
-
#: src/
|
26 |
-
msgid "
|
27 |
msgstr ""
|
28 |
|
29 |
-
#: src/
|
30 |
-
msgid "
|
31 |
-
msgstr ""
|
32 |
-
|
33 |
-
#: src/config/feature-admin_access_restriction.php:177
|
34 |
-
#: src/features/admin_access_restriction.php:241
|
35 |
-
#: src/features/admin_access_restriction.php:285
|
36 |
-
msgid "Security Admin"
|
37 |
-
msgstr ""
|
38 |
-
|
39 |
-
#: src/config/feature-audit_trail.php:123 src/features/audit_trail.php:107
|
40 |
-
msgid "Audit Trail"
|
41 |
-
msgstr ""
|
42 |
-
|
43 |
-
#: src/config/feature-audit_trail.php:124
|
44 |
-
msgid "Get a view on what happens on your site, when it happens"
|
45 |
-
msgstr ""
|
46 |
-
|
47 |
-
#: src/config/feature-audit_trail.php:125 src/features/audit_trail.php:40
|
48 |
-
msgid "Audit Trail Viewer"
|
49 |
-
msgstr ""
|
50 |
-
|
51 |
-
#: src/config/feature-autoupdates.php:130 src/features/autoupdates.php:31
|
52 |
-
msgid "Automatic Updates"
|
53 |
-
msgstr ""
|
54 |
-
|
55 |
-
#: src/config/feature-autoupdates.php:131
|
56 |
-
msgid "Take back full control of WordPress automatic updates"
|
57 |
-
msgstr ""
|
58 |
-
|
59 |
-
#: src/config/feature-comments_filter.php:211
|
60 |
-
msgid "Comments SPAM"
|
61 |
-
msgstr ""
|
62 |
-
|
63 |
-
#: src/config/feature-comments_filter.php:212
|
64 |
-
msgid "Block comment SPAM and retain your privacy"
|
65 |
-
msgstr ""
|
66 |
-
|
67 |
-
#: src/config/feature-email.php:32 src/features/login_protect.php:226
|
68 |
-
msgid "Email"
|
69 |
-
msgstr ""
|
70 |
-
|
71 |
-
#: src/config/feature-firewall.php:226 src/features/firewall.php:48
|
72 |
-
msgid "Firewall"
|
73 |
-
msgstr ""
|
74 |
-
|
75 |
-
#: src/config/feature-firewall.php:227
|
76 |
-
msgid "Automatically block malicious URLs and data sent to your site"
|
77 |
-
msgstr ""
|
78 |
-
|
79 |
-
#: src/config/feature-hack_protect.php:74 src/features/hack_protect.php:23
|
80 |
-
msgid "Hack Protection"
|
81 |
-
msgstr ""
|
82 |
-
|
83 |
-
#: src/config/feature-headers.php:131
|
84 |
-
msgid "HTTP Headers"
|
85 |
-
msgstr ""
|
86 |
-
|
87 |
-
#: src/config/feature-headers.php:132
|
88 |
-
msgid "Control HTTP Security Headers"
|
89 |
-
msgstr ""
|
90 |
-
|
91 |
-
#: src/config/feature-ips.php:105 src/features/ips.php:260
|
92 |
-
msgid "IP Manager"
|
93 |
-
msgstr ""
|
94 |
-
|
95 |
-
#: src/config/feature-ips.php:106
|
96 |
-
msgid "Manage Visitor IP Address"
|
97 |
-
msgstr ""
|
98 |
-
|
99 |
-
#: src/config/feature-lockdown.php:90 src/features/lockdown.php:36
|
100 |
-
msgid "Lockdown"
|
101 |
-
msgstr ""
|
102 |
-
|
103 |
-
#: src/config/feature-lockdown.php:91
|
104 |
-
msgid "Harden the more loosely controlled settings of your site"
|
105 |
-
msgstr ""
|
106 |
-
|
107 |
-
#: src/config/feature-login_protect.php:214 src/features/login_protect.php:125
|
108 |
-
msgid "Login Protection"
|
109 |
-
msgstr ""
|
110 |
-
|
111 |
-
#: src/config/feature-login_protect.php:215
|
112 |
-
msgid ""
|
113 |
-
"Block brute force attacks and secure user identities with Two-Factor "
|
114 |
-
"Authentication"
|
115 |
-
msgstr ""
|
116 |
-
|
117 |
-
#: src/config/feature-plugin.php:217
|
118 |
-
msgid "Dashboard"
|
119 |
-
msgstr ""
|
120 |
-
|
121 |
-
#: src/config/feature-plugin.php:218
|
122 |
-
msgid "Overview of the plugin settings"
|
123 |
-
msgstr ""
|
124 |
-
|
125 |
-
#: src/config/feature-statistics.php:46
|
126 |
-
msgid "Statistics"
|
127 |
-
msgstr ""
|
128 |
-
|
129 |
-
#: src/config/feature-statistics.php:47
|
130 |
-
msgid "Summary of the main security actions taken by this plugin"
|
131 |
-
msgstr ""
|
132 |
-
|
133 |
-
#: src/config/feature-statistics.php:48
|
134 |
-
msgid "Stats Viewer"
|
135 |
-
msgstr ""
|
136 |
-
|
137 |
-
#: src/config/feature-support.php:39
|
138 |
-
msgid "Premium Support"
|
139 |
-
msgstr ""
|
140 |
-
|
141 |
-
#: src/config/feature-support.php:40
|
142 |
-
msgid "Premium Plugin Support Centre"
|
143 |
msgstr ""
|
144 |
|
145 |
-
#: src/
|
146 |
-
#: src/features/
|
147 |
-
msgid "
|
148 |
msgstr ""
|
149 |
|
150 |
-
#: src/
|
151 |
-
|
152 |
-
"
|
153 |
-
"timeouts"
|
154 |
msgstr ""
|
155 |
|
156 |
-
#: src/features/admin_access_restriction.php:
|
157 |
-
msgid "
|
158 |
msgstr ""
|
159 |
|
160 |
-
#: src/features/admin_access_restriction.php:
|
161 |
-
|
|
|
162 |
msgstr ""
|
163 |
|
164 |
-
#: src/features/admin_access_restriction.php:
|
165 |
-
|
|
|
166 |
msgstr ""
|
167 |
|
168 |
-
#: src/features/admin_access_restriction.php:
|
169 |
-
|
|
|
170 |
msgstr ""
|
171 |
|
172 |
-
#: src/features/admin_access_restriction.php:
|
173 |
-
#: src/features/audit_trail.php:
|
174 |
-
#: src/features/comments_filter.php:
|
175 |
-
#: src/features/
|
176 |
-
#: src/features/
|
177 |
-
#: src/features/
|
178 |
-
#: src/features/statistics.php:
|
179 |
-
#: src/features/user_management.php:
|
180 |
-
#, php-format
|
181 |
-
msgid "Enable
|
182 |
-
msgstr ""
|
183 |
-
|
184 |
-
#: src/features/admin_access_restriction.php:
|
185 |
-
#: src/features/admin_access_restriction.php:
|
186 |
-
#: src/features/admin_access_restriction.php:
|
187 |
-
#: src/features/
|
188 |
-
#: src/features/audit_trail.php:
|
189 |
-
#: src/features/
|
190 |
-
#: src/features/autoupdates.php:
|
191 |
-
#: src/features/
|
192 |
-
#: src/features/
|
193 |
-
#: src/features/
|
194 |
-
#: src/features/
|
195 |
-
#: src/features/
|
196 |
-
#: src/features/
|
197 |
-
#: src/features/
|
198 |
-
#: src/features/
|
199 |
-
#: src/features/
|
200 |
-
#: src/features/
|
201 |
-
#: src/features/
|
202 |
-
#: src/features/
|
203 |
-
#: src/features/
|
204 |
-
#: src/features/
|
205 |
-
#: src/features/
|
206 |
-
#: src/features/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
207 |
#, php-format
|
208 |
msgid "Purpose - %s"
|
209 |
msgstr ""
|
210 |
|
211 |
-
#: src/features/admin_access_restriction.php:
|
|
|
212 |
msgid ""
|
213 |
"Restricts access to this plugin preventing unauthorized changes to your "
|
214 |
"security settings."
|
215 |
msgstr ""
|
216 |
|
217 |
-
#: src/features/admin_access_restriction.php:
|
218 |
-
#: src/features/admin_access_restriction.php:
|
219 |
-
#: src/features/admin_access_restriction.php:
|
220 |
-
#: src/features/audit_trail.php:
|
221 |
-
#: src/features/audit_trail.php:
|
222 |
-
#: src/features/autoupdates.php:
|
223 |
-
#: src/features/autoupdates.php:
|
224 |
-
#: src/features/comments_filter.php:
|
225 |
-
#: src/features/comments_filter.php:
|
226 |
-
#: src/features/firewall.php:
|
227 |
-
#: src/features/firewall.php:
|
228 |
-
#: src/features/hack_protect.php:
|
229 |
-
#: src/features/
|
230 |
-
#: src/features/
|
231 |
-
#: src/features/
|
232 |
-
#: src/features/
|
233 |
-
#: src/features/
|
234 |
-
#: src/features/
|
235 |
-
#: src/features/
|
236 |
-
#: src/features/
|
237 |
-
#: src/features/
|
238 |
-
#: src/features/
|
239 |
-
#: src/features/
|
240 |
-
#: src/features/
|
|
|
|
|
|
|
|
|
241 |
#, php-format
|
242 |
msgid "Recommendation - %s"
|
243 |
msgstr ""
|
244 |
|
245 |
-
#: src/features/admin_access_restriction.php:
|
246 |
-
#: src/features/audit_trail.php:
|
247 |
-
#: src/features/comments_filter.php:
|
248 |
-
#: src/features/hack_protect.php:
|
249 |
-
#: src/features/hack_protect.php:
|
250 |
-
#: src/features/
|
251 |
-
#: src/features/
|
252 |
-
#: src/features/
|
|
|
|
|
253 |
#, php-format
|
254 |
msgid "Keep the %s feature turned on."
|
255 |
msgstr ""
|
256 |
|
257 |
-
#: src/features/admin_access_restriction.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
258 |
msgid "You need to also enter a new Access Key to enable this feature."
|
259 |
msgstr ""
|
260 |
|
261 |
-
#: src/features/admin_access_restriction.php:
|
262 |
-
#: src/features/audit_trail.php:
|
263 |
-
#: src/features/comments_filter.php:
|
264 |
-
#: src/features/
|
265 |
-
#: src/features/
|
266 |
-
#: src/features/
|
267 |
-
#: src/features/
|
268 |
-
#: src/features/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
269 |
msgid "Enable"
|
270 |
msgstr ""
|
271 |
|
272 |
-
#: src/features/admin_access_restriction.php:
|
273 |
-
#: src/features/audit_trail.php:
|
274 |
-
#: src/features/comments_filter.php:
|
275 |
-
#: src/features/
|
276 |
-
#: src/features/
|
277 |
-
#: src/features/
|
278 |
-
#: src/features/
|
279 |
-
#: src/features/
|
280 |
msgid "Disable"
|
281 |
msgstr ""
|
282 |
|
283 |
-
#: src/features/admin_access_restriction.php:
|
284 |
msgid "Security Admin Restriction Settings"
|
285 |
msgstr ""
|
286 |
|
287 |
-
#: src/features/admin_access_restriction.php:
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
#: src/features/
|
292 |
-
#: src/features/
|
293 |
-
#: src/features/
|
294 |
-
#: src/features/login_protect.php:152 src/features/login_protect.php:163
|
295 |
-
#: src/features/login_protect.php:172 src/features/user_management.php:111
|
296 |
-
#: src/features/user_management.php:120 src/features/user_management.php:129
|
297 |
msgid "Use of this feature is highly recommend."
|
298 |
msgstr ""
|
299 |
|
300 |
-
#: src/features/admin_access_restriction.php:
|
301 |
msgid "Security Admin Settings"
|
302 |
msgstr ""
|
303 |
|
304 |
-
#: src/features/admin_access_restriction.php:
|
305 |
msgid "Security Admin Restriction Zones"
|
306 |
msgstr ""
|
307 |
|
308 |
-
#: src/features/admin_access_restriction.php:
|
309 |
msgid ""
|
310 |
"Restricts access to key WordPress areas for all users not authenticated with "
|
311 |
"the Security Admin Access system."
|
312 |
msgstr ""
|
313 |
|
314 |
-
#: src/features/admin_access_restriction.php:
|
315 |
msgid "Access Restriction Zones"
|
316 |
msgstr ""
|
317 |
|
318 |
-
#: src/features/admin_access_restriction.php:
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
#: src/features/
|
323 |
-
#: src/features/lockdown.php:88 src/features/login_protect.php:196
|
324 |
-
#: src/features/login_protect.php:219 src/features/login_protect.php:225
|
325 |
-
#: src/features/plugin.php:227 src/features/statistics.php:59
|
326 |
-
#: src/features/support.php:109 src/features/user_management.php:154
|
327 |
#, php-format
|
328 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
329 |
msgstr ""
|
330 |
|
331 |
-
#: src/features/admin_access_restriction.php:
|
332 |
msgid "Enforce Security Admin Access Restriction"
|
333 |
msgstr ""
|
334 |
|
335 |
-
#: src/features/admin_access_restriction.php:
|
336 |
msgid ""
|
337 |
-
"Enable this with great care and consideration.
|
338 |
-
"
|
339 |
-
"plugin."
|
340 |
msgstr ""
|
341 |
|
342 |
-
#: src/features/admin_access_restriction.php:
|
343 |
msgid "Security Admin Access Key"
|
344 |
msgstr ""
|
345 |
|
346 |
-
#: src/features/admin_access_restriction.php:
|
347 |
msgid "Provide/Update Security Admin Access Key"
|
348 |
msgstr ""
|
349 |
|
350 |
-
#: src/features/admin_access_restriction.php:
|
351 |
-
#: src/features/admin_access_restriction.php:
|
352 |
-
#: src/features/admin_access_restriction.php:
|
353 |
-
#: src/features/admin_access_restriction.php:
|
354 |
-
#: src/features/admin_access_restriction.php:
|
355 |
-
#: src/features/admin_access_restriction.php:
|
356 |
#, php-format
|
357 |
msgid "Careful: %s"
|
358 |
msgstr ""
|
359 |
|
360 |
-
#: src/features/admin_access_restriction.php:
|
361 |
msgid ""
|
362 |
"If you forget this, you could potentially lock yourself out from using this "
|
363 |
"plugin."
|
364 |
msgstr ""
|
365 |
|
366 |
-
#: src/features/admin_access_restriction.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
367 |
msgid "Security Admin Timeout"
|
368 |
msgstr ""
|
369 |
|
370 |
-
#: src/features/admin_access_restriction.php:
|
371 |
msgid "Specify An Automatic Timeout Interval For Security Admin Access"
|
372 |
msgstr ""
|
373 |
|
374 |
-
#: src/features/admin_access_restriction.php:
|
375 |
msgid "This will automatically expire your Security Admin Session."
|
376 |
msgstr ""
|
377 |
|
378 |
-
#: src/features/admin_access_restriction.php:
|
379 |
-
msgid "Does not apply until you enter the access key again."
|
380 |
-
msgstr ""
|
381 |
-
|
382 |
-
#: src/features/admin_access_restriction.php:302
|
383 |
#, php-format
|
384 |
msgid "Default: %s minutes."
|
385 |
msgstr ""
|
386 |
|
387 |
-
#: src/features/admin_access_restriction.php:
|
388 |
msgid "Pages"
|
389 |
msgstr ""
|
390 |
|
391 |
-
#: src/features/admin_access_restriction.php:
|
392 |
msgid "Restrict Access To Key WordPress Posts And Pages Actions"
|
393 |
msgstr ""
|
394 |
|
395 |
-
#: src/features/admin_access_restriction.php:
|
396 |
msgid "This will restrict access to page/post creation, editing and deletion."
|
397 |
msgstr ""
|
398 |
|
399 |
-
#: src/features/admin_access_restriction.php:
|
400 |
-
#: src/features/admin_access_restriction.php:
|
401 |
-
#: src/features/admin_access_restriction.php:
|
402 |
-
#: src/features/login_protect.php:
|
|
|
403 |
#, php-format
|
404 |
msgid "Note: %s"
|
405 |
msgstr ""
|
406 |
|
407 |
-
#: src/features/admin_access_restriction.php:
|
408 |
-
#: src/features/admin_access_restriction.php:
|
409 |
-
#: src/features/admin_access_restriction.php:
|
410 |
#, php-format
|
411 |
msgid "Selecting \"%s\" will also restrict all other options."
|
412 |
msgstr ""
|
413 |
|
414 |
-
#: src/features/admin_access_restriction.php:
|
415 |
msgid "Edit"
|
416 |
msgstr ""
|
417 |
|
418 |
-
#: src/features/admin_access_restriction.php:
|
419 |
-
#: src/features/audit_trail.php:
|
420 |
-
#: src/features/audit_trail.php:
|
421 |
msgid "Plugins"
|
422 |
msgstr ""
|
423 |
|
424 |
-
#: src/features/admin_access_restriction.php:
|
425 |
msgid "Restrict Access To Key WordPress Plugin Actions"
|
426 |
msgstr ""
|
427 |
|
428 |
-
#: src/features/admin_access_restriction.php:
|
429 |
msgid ""
|
430 |
"This will restrict access to plugin installation, update, activation and "
|
431 |
"deletion."
|
432 |
msgstr ""
|
433 |
|
434 |
-
#: src/features/admin_access_restriction.php:
|
435 |
-
#: src/features/admin_access_restriction.php:
|
436 |
msgid "Activate"
|
437 |
msgstr ""
|
438 |
|
439 |
-
#: src/features/admin_access_restriction.php:
|
440 |
msgid "WordPress Options"
|
441 |
msgstr ""
|
442 |
|
443 |
-
#: src/features/admin_access_restriction.php:
|
444 |
msgid "Restrict Access To Certain WordPress Admin Options"
|
445 |
msgstr ""
|
446 |
|
447 |
-
#: src/features/admin_access_restriction.php:
|
448 |
msgid ""
|
449 |
"This will restrict the ability of WordPress administrators from changing key "
|
450 |
"WordPress settings."
|
451 |
msgstr ""
|
452 |
|
453 |
-
#: src/features/admin_access_restriction.php:
|
454 |
msgid "Admin Users"
|
455 |
msgstr ""
|
456 |
|
457 |
-
#: src/features/admin_access_restriction.php:
|
458 |
msgid "Restrict Access To Create/Delete/Modify Other Admin Users"
|
459 |
msgstr ""
|
460 |
|
461 |
-
#: src/features/admin_access_restriction.php:
|
462 |
msgid ""
|
463 |
"This will restrict the ability of WordPress administrators from creating, "
|
464 |
"modifying or promoting other administrators."
|
465 |
msgstr ""
|
466 |
|
467 |
-
#: src/features/admin_access_restriction.php:
|
468 |
-
#: src/features/audit_trail.php:
|
469 |
-
#: src/features/audit_trail.php:
|
470 |
msgid "Themes"
|
471 |
msgstr ""
|
472 |
|
473 |
-
#: src/features/admin_access_restriction.php:
|
474 |
msgid "Restrict Access To WordPress Theme Actions"
|
475 |
msgstr ""
|
476 |
|
477 |
-
#: src/features/admin_access_restriction.php:
|
478 |
msgid ""
|
479 |
"This will restrict access to theme installation, update, activation and "
|
480 |
"deletion."
|
481 |
msgstr ""
|
482 |
|
483 |
-
#: src/features/admin_access_restriction.php:
|
484 |
#, php-format
|
485 |
msgid "%s and %s"
|
486 |
msgstr ""
|
487 |
|
488 |
-
#: src/features/admin_access_restriction.php:
|
489 |
msgid "Edit Theme Options"
|
490 |
msgstr ""
|
491 |
|
492 |
-
#: src/features/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
493 |
msgid "Users"
|
494 |
msgstr ""
|
495 |
|
496 |
-
#: src/features/audit_trail.php:
|
497 |
msgid "WordPress"
|
498 |
msgstr ""
|
499 |
|
500 |
-
#: src/features/audit_trail.php:
|
501 |
msgid "Posts"
|
502 |
msgstr ""
|
503 |
|
504 |
-
#: src/features/audit_trail.php:
|
505 |
-
#: src/features/audit_trail.php:
|
506 |
msgid "Emails"
|
507 |
msgstr ""
|
508 |
|
509 |
-
#: src/features/audit_trail.php:
|
510 |
msgid "Time"
|
511 |
msgstr ""
|
512 |
|
513 |
-
#: src/features/audit_trail.php:
|
514 |
msgid "Event"
|
515 |
msgstr ""
|
516 |
|
517 |
-
#: src/features/audit_trail.php:
|
518 |
msgid "Message"
|
519 |
msgstr ""
|
520 |
|
521 |
-
#: src/features/audit_trail.php:
|
522 |
msgid "Username"
|
523 |
msgstr ""
|
524 |
|
525 |
-
#: src/features/audit_trail.php:
|
526 |
msgid "Category"
|
527 |
msgstr ""
|
528 |
|
529 |
-
#: src/features/audit_trail.php:
|
530 |
msgid "IP Address"
|
531 |
msgstr ""
|
532 |
|
533 |
-
#: src/features/audit_trail.php:
|
534 |
msgid "You"
|
535 |
msgstr ""
|
536 |
|
537 |
-
#: src/features/audit_trail.php:
|
538 |
msgid "There are currently no audit entries this is section."
|
539 |
msgstr ""
|
540 |
|
541 |
-
#: src/features/audit_trail.php:
|
542 |
msgid ""
|
543 |
"The Audit Trail is designed so you can look back on events and analyse what "
|
544 |
"happened and what may have gone wrong."
|
545 |
msgstr ""
|
546 |
|
547 |
-
#: src/features/audit_trail.php:
|
|
|
|
|
|
|
|
|
|
|
548 |
msgid "Audit Trail Options"
|
549 |
msgstr ""
|
550 |
|
551 |
-
#: src/features/audit_trail.php:
|
552 |
msgid "Provides finer control over the audit trail itself."
|
553 |
msgstr ""
|
554 |
|
555 |
-
#: src/features/audit_trail.php:
|
556 |
msgid "These settings are dependent on your requirements."
|
557 |
msgstr ""
|
558 |
|
559 |
-
#: src/features/audit_trail.php:
|
|
|
560 |
msgid "Options"
|
561 |
msgstr ""
|
562 |
|
563 |
-
#: src/features/audit_trail.php:
|
564 |
msgid "Enable Audit Contexts"
|
565 |
msgstr ""
|
566 |
|
567 |
-
#: src/features/audit_trail.php:
|
568 |
msgid "Specify which types of actions on your site are logged."
|
569 |
msgstr ""
|
570 |
|
571 |
-
#: src/features/audit_trail.php:
|
572 |
msgid "Audit Contexts"
|
573 |
msgstr ""
|
574 |
|
575 |
-
#: src/features/audit_trail.php:
|
576 |
-
#: src/features/firewall.php:
|
577 |
-
#: src/features/headers.php:
|
578 |
-
#: src/features/lockdown.php:
|
579 |
-
#: src/features/
|
580 |
-
#: src/features/user_management.php:
|
581 |
#, php-format
|
582 |
-
msgid "Enable (or Disable) The %s
|
583 |
msgstr ""
|
584 |
|
585 |
-
#: src/features/audit_trail.php:
|
586 |
-
#: src/features/comments_filter.php:
|
587 |
-
#: src/features/hack_protect.php:
|
588 |
-
#: src/features/ips.php:
|
589 |
-
#: src/features/login_protect.php:
|
590 |
-
#: src/features/
|
|
|
591 |
#, php-format
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
592 |
msgid ""
|
593 |
-
"
|
594 |
-
"feature."
|
595 |
msgstr ""
|
596 |
|
597 |
-
#: src/features/audit_trail.php:
|
598 |
msgid "Auto Clean"
|
599 |
msgstr ""
|
600 |
|
601 |
-
#: src/features/audit_trail.php:
|
602 |
msgid "Enable Audit Auto Cleaning"
|
603 |
msgstr ""
|
604 |
|
605 |
-
#: src/features/audit_trail.php:
|
606 |
msgid ""
|
607 |
"Events older than the number of days specified will be automatically cleaned "
|
608 |
"from the database."
|
609 |
msgstr ""
|
610 |
|
611 |
-
#: src/features/audit_trail.php:
|
612 |
-
#: src/features/audit_trail.php:
|
613 |
msgid "Users And Logins"
|
614 |
msgstr ""
|
615 |
|
616 |
-
#: src/features/audit_trail.php:
|
617 |
-
#: src/features/audit_trail.php:
|
618 |
-
#: src/features/audit_trail.php:
|
619 |
-
#: src/features/audit_trail.php:
|
620 |
#, php-format
|
621 |
msgid "Enable Audit Context - %s"
|
622 |
msgstr ""
|
623 |
|
624 |
-
#: src/features/audit_trail.php:
|
625 |
-
#: src/features/audit_trail.php:
|
626 |
-
#: src/features/audit_trail.php:
|
627 |
-
#: src/features/audit_trail.php:
|
628 |
#, php-format
|
629 |
msgid ""
|
630 |
"When this context is enabled, the audit trail will track activity relating "
|
631 |
"to: %s"
|
632 |
msgstr ""
|
633 |
|
634 |
-
#: src/features/audit_trail.php:
|
635 |
msgid "WordPress Plugins"
|
636 |
msgstr ""
|
637 |
|
638 |
-
#: src/features/audit_trail.php:
|
639 |
msgid "WordPress Themes"
|
640 |
msgstr ""
|
641 |
|
642 |
-
#: src/features/audit_trail.php:
|
643 |
msgid "Posts And Pages"
|
644 |
msgstr ""
|
645 |
|
646 |
-
#: src/features/audit_trail.php:
|
647 |
msgid "Editing and publishing of posts and pages"
|
648 |
msgstr ""
|
649 |
|
650 |
-
#: src/features/audit_trail.php:
|
651 |
msgid "WordPress And Settings"
|
652 |
msgstr ""
|
653 |
|
654 |
-
#: src/features/audit_trail.php:
|
655 |
msgid "WordPress upgrades and changes to particular WordPress settings"
|
656 |
msgstr ""
|
657 |
|
658 |
-
#: src/features/audit_trail.php:
|
659 |
msgid "Email Sending"
|
660 |
msgstr ""
|
661 |
|
662 |
-
#: src/features/autoupdates.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
663 |
msgid ""
|
664 |
"Automatic Updates lets you manage the WordPress automatic updates engine so "
|
665 |
"you choose what exactly gets updated automatically."
|
666 |
msgstr ""
|
667 |
|
668 |
-
#: src/features/autoupdates.php:
|
|
|
|
|
|
|
|
|
|
|
669 |
msgid "Disable ALL WordPress Automatic Updates"
|
670 |
msgstr ""
|
671 |
|
672 |
-
#: src/features/autoupdates.php:
|
673 |
msgid ""
|
674 |
"If you never want WordPress to automatically update anything on your site, "
|
675 |
"turn on this option."
|
676 |
msgstr ""
|
677 |
|
678 |
-
#: src/features/autoupdates.php:
|
679 |
msgid "Do not turn on this option unless you really need to block updates."
|
680 |
msgstr ""
|
681 |
|
682 |
-
#: src/features/autoupdates.php:
|
683 |
msgid "Turn Off"
|
684 |
msgstr ""
|
685 |
|
686 |
-
#: src/features/autoupdates.php:
|
687 |
msgid "Automatic Plugin Self-Update"
|
688 |
msgstr ""
|
689 |
|
690 |
-
#: src/features/autoupdates.php:
|
691 |
#, php-format
|
692 |
msgid ""
|
693 |
"Allows the %s plugin to automatically update itself when an update is "
|
694 |
"available."
|
695 |
msgstr ""
|
696 |
|
697 |
-
#: src/features/autoupdates.php:
|
698 |
msgid "Keep this option turned on."
|
699 |
msgstr ""
|
700 |
|
701 |
-
#: src/features/autoupdates.php:
|
702 |
msgid "Self-Update"
|
703 |
msgstr ""
|
704 |
|
705 |
-
#: src/features/autoupdates.php:
|
706 |
msgid "Automatic Updates For WordPress Components"
|
707 |
msgstr ""
|
708 |
|
709 |
-
#: src/features/autoupdates.php:
|
710 |
msgid "Control how automatic updates for each WordPress component is handled."
|
711 |
msgstr ""
|
712 |
|
713 |
-
#: src/features/autoupdates.php:
|
714 |
msgid "You should at least allow minor updates for the WordPress core."
|
715 |
msgstr ""
|
716 |
|
717 |
-
#: src/features/autoupdates.php:
|
718 |
msgid "WordPress Components"
|
719 |
msgstr ""
|
720 |
|
721 |
-
#: src/features/autoupdates.php:
|
722 |
-
msgid "
|
723 |
msgstr ""
|
724 |
|
725 |
-
#: src/features/autoupdates.php:
|
726 |
-
msgid "
|
727 |
msgstr ""
|
728 |
|
729 |
-
#: src/features/autoupdates.php:
|
730 |
-
msgid "Notifications"
|
731 |
-
msgstr ""
|
732 |
-
|
733 |
-
#: src/features/autoupdates.php:98
|
734 |
msgid "Disable All"
|
735 |
msgstr ""
|
736 |
|
737 |
-
#: src/features/autoupdates.php:
|
738 |
msgid "Completely Disable WordPress Automatic Updates"
|
739 |
msgstr ""
|
740 |
|
741 |
-
#: src/features/autoupdates.php:
|
742 |
msgid ""
|
743 |
"When selected, regardless of any other settings, all WordPress automatic "
|
744 |
"updates on this site will be completely disabled!"
|
745 |
msgstr ""
|
746 |
|
747 |
-
#: src/features/autoupdates.php:
|
748 |
msgid "Auto Update Plugin"
|
749 |
msgstr ""
|
750 |
|
751 |
-
#: src/features/autoupdates.php:
|
752 |
msgid "Always Automatically Update This Plugin"
|
753 |
msgstr ""
|
754 |
|
755 |
-
#: src/features/autoupdates.php:
|
756 |
#, php-format
|
757 |
msgid ""
|
758 |
"Regardless of any component settings below, automatically update the \"%s\" "
|
759 |
"plugin."
|
760 |
msgstr ""
|
761 |
|
762 |
-
#: src/features/autoupdates.php:
|
763 |
msgid "WordPress Core Updates"
|
764 |
msgstr ""
|
765 |
|
766 |
-
#: src/features/autoupdates.php:
|
767 |
msgid "Decide how the WordPress Core will automatically update, if at all"
|
768 |
msgstr ""
|
769 |
|
770 |
-
#: src/features/autoupdates.php:
|
771 |
msgid ""
|
772 |
"At least automatically upgrading minor versions is recommended (and is the "
|
773 |
"WordPress default)."
|
774 |
msgstr ""
|
775 |
|
776 |
-
#: src/features/autoupdates.php:
|
777 |
msgid "Translations"
|
778 |
msgstr ""
|
779 |
|
780 |
-
#: src/features/autoupdates.php:
|
781 |
msgid "Automatically Update Translations"
|
782 |
msgstr ""
|
783 |
|
784 |
-
#: src/features/autoupdates.php:
|
785 |
msgid ""
|
786 |
"Note: Automatic updates for translations are enabled on WordPress by default."
|
787 |
msgstr ""
|
788 |
|
789 |
-
#: src/features/autoupdates.php:
|
790 |
-
msgid "Automatically Update Plugins"
|
791 |
msgstr ""
|
792 |
|
793 |
-
#: src/features/autoupdates.php:
|
794 |
msgid ""
|
795 |
"Note: Automatic updates for plugins are disabled on WordPress by default."
|
796 |
msgstr ""
|
797 |
|
798 |
-
#: src/features/autoupdates.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
799 |
msgid "Automatically Update Themes"
|
800 |
msgstr ""
|
801 |
|
802 |
-
#: src/features/autoupdates.php:
|
803 |
msgid ""
|
804 |
"Note: Automatic updates for themes are disabled on WordPress by default."
|
805 |
msgstr ""
|
806 |
|
807 |
-
#: src/features/autoupdates.php:
|
808 |
msgid "Ignore Version Control"
|
809 |
msgstr ""
|
810 |
|
811 |
-
#: src/features/autoupdates.php:
|
812 |
msgid "Ignore Version Control Systems Such As GIT and SVN"
|
813 |
msgstr ""
|
814 |
|
815 |
-
#: src/features/autoupdates.php:
|
816 |
msgid ""
|
817 |
"If you use SVN or GIT and WordPress detects it, automatic updates are "
|
818 |
"disabled by default. Check this box to ignore version control systems and "
|
819 |
"allow automatic updates."
|
820 |
msgstr ""
|
821 |
|
822 |
-
#: src/features/autoupdates.php:
|
823 |
msgid "Send Report Email"
|
824 |
msgstr ""
|
825 |
|
826 |
-
#: src/features/autoupdates.php:
|
827 |
msgid "Send email notices after automatic updates"
|
828 |
msgstr ""
|
829 |
|
830 |
-
#: src/features/autoupdates.php:
|
831 |
msgid ""
|
832 |
"You can turn on/off email notices from automatic updates by un/checking this "
|
833 |
"box."
|
834 |
msgstr ""
|
835 |
|
836 |
-
#: src/features/autoupdates.php:
|
837 |
msgid "Report Email Address"
|
838 |
msgstr ""
|
839 |
|
840 |
-
#: src/features/autoupdates.php:
|
841 |
msgid "Where to send upgrade notification reports"
|
842 |
msgstr ""
|
843 |
|
844 |
-
#: src/features/autoupdates.php:
|
845 |
msgid "If this is empty, it will default to the Site Admin email address"
|
846 |
msgstr ""
|
847 |
|
848 |
-
#: src/features/
|
849 |
-
msgid "
|
850 |
msgstr ""
|
851 |
|
852 |
-
#: src/features/
|
853 |
-
msgid "
|
854 |
msgstr ""
|
855 |
|
856 |
-
#: src/features/
|
857 |
-
msgid "
|
|
|
|
|
858 |
msgstr ""
|
859 |
|
860 |
-
#: src/features/
|
861 |
-
|
862 |
-
|
863 |
-
|
864 |
-
msgid "More Info"
|
865 |
msgstr ""
|
866 |
|
867 |
-
#: src/features/
|
868 |
-
msgid "
|
869 |
msgstr ""
|
870 |
|
871 |
-
#: src/features/
|
872 |
-
|
|
|
873 |
msgstr ""
|
874 |
|
875 |
-
#: src/features/
|
876 |
-
|
|
|
877 |
msgstr ""
|
878 |
|
879 |
-
#: src/features/
|
880 |
-
|
|
|
|
|
|
|
881 |
msgstr ""
|
882 |
|
883 |
-
#: src/features/base_wpsf.php:
|
884 |
-
msgid ""
|
885 |
-
"At some point you entered a Security Admin Access Key - to manage this "
|
886 |
-
"plugin, you must supply it here first."
|
887 |
msgstr ""
|
888 |
|
889 |
-
#: src/features/base_wpsf.php:
|
890 |
-
msgid "
|
891 |
msgstr ""
|
892 |
|
893 |
-
#: src/features/base_wpsf.php:
|
894 |
-
msgid "
|
895 |
msgstr ""
|
896 |
|
897 |
-
#: src/features/base_wpsf.php:
|
898 |
-
|
|
|
|
|
|
|
|
|
899 |
msgstr ""
|
900 |
|
901 |
-
#: src/features/base_wpsf.php:
|
902 |
-
msgid "
|
903 |
msgstr ""
|
904 |
|
905 |
-
#: src/features/base_wpsf.php:
|
906 |
-
|
907 |
-
msgid "Nonce security checking failed - the nonce supplied was \"%s\"."
|
908 |
msgstr ""
|
909 |
|
910 |
-
#: src/features/
|
911 |
-
msgid "
|
912 |
msgstr ""
|
913 |
|
914 |
-
#: src/features/
|
915 |
-
|
916 |
-
msgid ""
|
917 |
-
"The Comments Filter can block 100% of automated spam bots and also offer the "
|
918 |
-
"option to analyse human-generated spam."
|
919 |
msgstr ""
|
920 |
|
921 |
-
#: src/features/
|
922 |
-
msgid "
|
923 |
msgstr ""
|
924 |
|
925 |
-
#: src/features/
|
926 |
-
|
927 |
-
msgid "%s Comment SPAM Protection Filter"
|
928 |
msgstr ""
|
929 |
|
930 |
-
#: src/features/
|
931 |
-
msgid "
|
932 |
msgstr ""
|
933 |
|
934 |
-
#: src/features/
|
935 |
-
|
936 |
-
msgid "Blocks 100% of all automated bot-generated comment SPAM."
|
937 |
msgstr ""
|
938 |
|
939 |
-
#: src/features/
|
940 |
-
msgid "
|
|
|
|
|
941 |
msgstr ""
|
942 |
|
943 |
-
#: src/features/
|
944 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
945 |
msgstr ""
|
946 |
|
947 |
#: src/features/comments_filter.php:60
|
948 |
-
msgid "
|
949 |
msgstr ""
|
950 |
|
951 |
-
#: src/features/comments_filter.php:
|
|
|
|
|
|
|
|
|
|
|
952 |
msgid ""
|
953 |
-
"
|
954 |
-
"
|
955 |
msgstr ""
|
956 |
|
957 |
-
#: src/features/comments_filter.php:
|
958 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
959 |
msgstr ""
|
960 |
|
961 |
-
#: src/features/comments_filter.php:
|
962 |
-
msgid "
|
963 |
msgstr ""
|
964 |
|
965 |
-
#: src/features/comments_filter.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
966 |
msgid ""
|
967 |
-
"
|
968 |
-
"
|
969 |
msgstr ""
|
970 |
|
971 |
-
#: src/features/comments_filter.php:
|
972 |
-
msgid "
|
973 |
msgstr ""
|
974 |
|
975 |
-
#: src/features/comments_filter.php:
|
976 |
-
msgid "
|
977 |
msgstr ""
|
978 |
|
979 |
-
#: src/features/comments_filter.php:
|
980 |
-
|
|
|
981 |
msgstr ""
|
982 |
|
983 |
-
#: src/features/comments_filter.php:
|
984 |
msgid "Human SPAM Filter"
|
985 |
msgstr ""
|
986 |
|
987 |
-
#: src/features/comments_filter.php:
|
988 |
-
|
|
|
989 |
msgstr ""
|
990 |
|
991 |
-
#: src/features/comments_filter.php:
|
992 |
msgid ""
|
993 |
"Scans the content of WordPress comments for keywords that are indicative of "
|
994 |
"SPAM and marks the comment according to your preferred setting below."
|
995 |
msgstr ""
|
996 |
|
997 |
-
#: src/features/comments_filter.php:
|
998 |
msgid "Comment Filter Items"
|
999 |
msgstr ""
|
1000 |
|
1001 |
-
#: src/features/comments_filter.php:
|
1002 |
msgid "Select The Items To Scan For SPAM"
|
1003 |
msgstr ""
|
1004 |
|
1005 |
-
#: src/features/comments_filter.php:
|
1006 |
msgid ""
|
1007 |
"When a user submits a comment, only the selected parts of the comment data "
|
1008 |
"will be scanned for SPAM content."
|
1009 |
msgstr ""
|
1010 |
|
1011 |
-
#: src/features/comments_filter.php:
|
1012 |
-
#: src/features/login_protect.php:269
|
1013 |
#, php-format
|
1014 |
msgid "Recommended: %s"
|
1015 |
msgstr ""
|
1016 |
|
1017 |
-
#: src/features/comments_filter.php:
|
1018 |
msgid "All"
|
1019 |
msgstr ""
|
1020 |
|
1021 |
-
#: src/features/comments_filter.php:
|
1022 |
msgid "Default SPAM Action"
|
1023 |
msgstr ""
|
1024 |
|
1025 |
-
#: src/features/comments_filter.php:
|
1026 |
msgid "How To Categorise Comments When Identified To Be SPAM"
|
1027 |
msgstr ""
|
1028 |
|
1029 |
-
#: src/features/comments_filter.php:
|
1030 |
#, php-format
|
1031 |
msgid ""
|
1032 |
"When a comment is detected as being SPAM from %s, the comment will be "
|
1033 |
"categorised based on this setting."
|
1034 |
msgstr ""
|
1035 |
|
1036 |
-
#: src/features/comments_filter.php:
|
1037 |
msgid "a human commenter"
|
1038 |
msgstr ""
|
1039 |
|
1040 |
-
#: src/features/comments_filter.php:
|
1041 |
-
msgid "
|
1042 |
-
msgstr ""
|
1043 |
-
|
1044 |
-
#: src/features/comments_filter.php:122
|
1045 |
-
msgid "Use Google reCAPTCHA on the comments form to prevent bot-spam comments."
|
1046 |
-
msgstr ""
|
1047 |
-
|
1048 |
-
#: src/features/comments_filter.php:126
|
1049 |
-
msgid "GASP Protection"
|
1050 |
msgstr ""
|
1051 |
|
1052 |
-
#: src/features/comments_filter.php:
|
1053 |
-
msgid "
|
1054 |
msgstr ""
|
1055 |
|
1056 |
-
#: src/features/comments_filter.php:
|
1057 |
msgid ""
|
1058 |
-
"
|
1059 |
-
"extended it to include advanced spam-bot protection."
|
1060 |
msgstr ""
|
1061 |
|
1062 |
-
#: src/features/comments_filter.php:
|
1063 |
msgid "an automatic bot"
|
1064 |
msgstr ""
|
1065 |
|
1066 |
-
#: src/features/comments_filter.php:
|
1067 |
msgid "Comments Cooldown"
|
1068 |
msgstr ""
|
1069 |
|
1070 |
-
#: src/features/comments_filter.php:
|
1071 |
msgid "Limit posting comments to X seconds after the page has loaded"
|
1072 |
msgstr ""
|
1073 |
|
1074 |
-
#: src/features/comments_filter.php:
|
1075 |
msgid ""
|
1076 |
"By forcing a comments cooldown period, you restrict a Spambot's ability to "
|
1077 |
"post multiple times to your posts."
|
1078 |
msgstr ""
|
1079 |
|
1080 |
-
#: src/features/comments_filter.php:
|
1081 |
msgid "Comment Token Expire"
|
1082 |
msgstr ""
|
1083 |
|
1084 |
-
#: src/features/comments_filter.php:
|
1085 |
msgid "A visitor has X seconds within which to post a comment"
|
1086 |
msgstr ""
|
1087 |
|
1088 |
-
#: src/features/comments_filter.php:
|
1089 |
msgid ""
|
1090 |
"Default: 600 seconds (10 minutes). Each visitor is given a unique 'Token' so "
|
1091 |
"they can comment. This restricts spambots, but we need to force these tokens "
|
1092 |
"to expire and at the same time not bother the visitors."
|
1093 |
msgstr ""
|
1094 |
|
1095 |
-
#: src/features/comments_filter.php:
|
1096 |
-
msgid "
|
1097 |
msgstr ""
|
1098 |
|
1099 |
-
#: src/features/comments_filter.php:
|
1100 |
msgid "If you want a custom checkbox message, please provide this here"
|
1101 |
msgstr ""
|
1102 |
|
1103 |
-
#: src/features/comments_filter.php:
|
1104 |
msgid "You can customise the message beside the checkbox."
|
1105 |
msgstr ""
|
1106 |
|
1107 |
-
#: src/features/comments_filter.php:
|
1108 |
-
#: src/features/comments_filter.php:
|
1109 |
#, php-format
|
1110 |
msgid "Default Message: %s"
|
1111 |
msgstr ""
|
1112 |
|
1113 |
-
#: src/features/comments_filter.php:
|
1114 |
msgid "Please check the box to confirm you're not a spammer"
|
1115 |
msgstr ""
|
1116 |
|
1117 |
-
#: src/features/comments_filter.php:
|
1118 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1119 |
msgstr ""
|
1120 |
|
1121 |
-
#: src/features/comments_filter.php:
|
1122 |
msgid "If you want a custom alert message, please provide this here"
|
1123 |
msgstr ""
|
1124 |
|
1125 |
-
#: src/features/comments_filter.php:
|
1126 |
msgid ""
|
1127 |
"This alert message is displayed when a visitor attempts to submit a comment "
|
1128 |
"without checking the box."
|
1129 |
msgstr ""
|
1130 |
|
1131 |
-
#: src/features/comments_filter.php:
|
1132 |
-
msgid "
|
1133 |
msgstr ""
|
1134 |
|
1135 |
-
#: src/features/comments_filter.php:
|
1136 |
msgid ""
|
1137 |
"If you want a custom submit-button wait message, please provide this here."
|
1138 |
msgstr ""
|
1139 |
|
1140 |
-
#: src/features/comments_filter.php:
|
1141 |
#, php-format
|
1142 |
msgid ""
|
1143 |
"Where you see the '%s' this will be the number of seconds. You must ensure "
|
1144 |
"you include 1, and only 1, of these."
|
1145 |
msgstr ""
|
1146 |
|
1147 |
-
#: src/features/comments_filter.php:
|
1148 |
#, php-format
|
1149 |
msgid "Please wait %s seconds before posting your comment"
|
1150 |
msgstr ""
|
1151 |
|
1152 |
-
#: src/features/comments_filter.php:
|
1153 |
-
msgid "
|
1154 |
msgstr ""
|
1155 |
|
1156 |
-
#: src/features/comments_filter.php:
|
1157 |
msgid ""
|
1158 |
"If you want a custom message when the comment token has expired, please "
|
1159 |
"provide this here."
|
1160 |
msgstr ""
|
1161 |
|
1162 |
-
#: src/features/comments_filter.php:
|
1163 |
msgid ""
|
1164 |
"This message is displayed on the submit-button when the comment token is "
|
1165 |
"expired"
|
1166 |
msgstr ""
|
1167 |
|
1168 |
-
#: src/features/comments_filter.php:
|
1169 |
msgid "Please reload this page to post a comment"
|
1170 |
msgstr ""
|
1171 |
|
@@ -1173,2911 +1398,4438 @@ msgstr ""
|
|
1173 |
msgid "Email Options"
|
1174 |
msgstr ""
|
1175 |
|
1176 |
-
#: src/features/email.php:
|
1177 |
-
msgid "Report Email"
|
1178 |
-
msgstr ""
|
1179 |
-
|
1180 |
-
#: src/features/email.php:66 src/features/plugin.php:236
|
1181 |
-
msgid "Where to send email reports"
|
1182 |
-
msgstr ""
|
1183 |
-
|
1184 |
-
#: src/features/email.php:67
|
1185 |
-
msgid "If this is empty, it will default to the blog admin email address."
|
1186 |
-
msgstr ""
|
1187 |
-
|
1188 |
-
#: src/features/email.php:71
|
1189 |
msgid "Email Throttle Limit"
|
1190 |
msgstr ""
|
1191 |
|
1192 |
-
#: src/features/email.php:
|
1193 |
msgid "Limit Emails Per Second"
|
1194 |
msgstr ""
|
1195 |
|
1196 |
-
#: src/features/email.php:
|
1197 |
msgid ""
|
1198 |
"You throttle emails sent by this plugin by limiting the number of emails "
|
1199 |
"sent every second. This is useful in case you get hit by a bot attack. Zero "
|
1200 |
"(0) turns this off. Suggested: 10"
|
1201 |
msgstr ""
|
1202 |
|
1203 |
-
#: src/features/firewall.php:
|
|
|
|
|
|
|
|
|
|
|
1204 |
msgid ""
|
1205 |
"The Firewall is designed to analyse data sent to your website and block any "
|
1206 |
"requests that appear to be malicious."
|
1207 |
msgstr ""
|
1208 |
|
1209 |
-
#: src/features/firewall.php:
|
|
|
|
|
|
|
|
|
1210 |
msgid "Firewall Blocking Options"
|
1211 |
msgstr ""
|
1212 |
|
1213 |
-
#: src/features/firewall.php:
|
1214 |
msgid "Here you choose what kind of malicious data to scan for."
|
1215 |
msgstr ""
|
1216 |
|
1217 |
-
#: src/features/firewall.php:
|
1218 |
msgid "Turn on as many options here as you can."
|
1219 |
msgstr ""
|
1220 |
|
1221 |
-
#: src/features/firewall.php:
|
1222 |
msgid ""
|
1223 |
"If you find an incompatibility or something stops working, un-check 1 option "
|
1224 |
"at a time until you find the problem or review the Audit Trail."
|
1225 |
msgstr ""
|
1226 |
|
1227 |
-
#: src/features/firewall.php:
|
1228 |
msgid "Firewall Blocking"
|
1229 |
msgstr ""
|
1230 |
|
1231 |
-
#: src/features/firewall.php:
|
1232 |
msgid "Choose Firewall Block Response"
|
1233 |
msgstr ""
|
1234 |
|
1235 |
-
#: src/features/firewall.php:
|
1236 |
msgid ""
|
1237 |
"Here you choose how the plugin will respond when it detects malicious data."
|
1238 |
msgstr ""
|
1239 |
|
1240 |
-
#: src/features/firewall.php:
|
1241 |
#, php-format
|
1242 |
msgid "Choose the option \"%s\"."
|
1243 |
msgstr ""
|
1244 |
|
1245 |
-
#: src/features/firewall.php:
|
1246 |
msgid "Die With Message"
|
1247 |
msgstr ""
|
1248 |
|
1249 |
-
#: src/features/firewall.php:
|
1250 |
msgid "Firewall Response"
|
1251 |
msgstr ""
|
1252 |
|
1253 |
-
#: src/features/firewall.php:
|
1254 |
msgid ""
|
1255 |
"Whitelists - IPs, Pages, Parameters, and Users that by-pass the Firewall"
|
1256 |
msgstr ""
|
1257 |
|
1258 |
-
#: src/features/firewall.php:
|
1259 |
msgid ""
|
1260 |
"In principle you should not need to whitelist anything or anyone unless you "
|
1261 |
"have discovered a collision with another plugin."
|
1262 |
msgstr ""
|
1263 |
|
1264 |
-
#: src/features/firewall.php:
|
1265 |
msgid ""
|
1266 |
"Do not whitelist anything unless you are confident in what you are doing."
|
1267 |
msgstr ""
|
1268 |
|
1269 |
-
#: src/features/firewall.php:
|
1270 |
msgid "Whitelist"
|
1271 |
msgstr ""
|
1272 |
|
1273 |
-
#: src/features/firewall.php:
|
1274 |
msgid "Include Cookies"
|
1275 |
msgstr ""
|
1276 |
|
1277 |
-
#: src/features/firewall.php:
|
1278 |
msgid "Also Test Cookie Values In Firewall Tests"
|
1279 |
msgstr ""
|
1280 |
|
1281 |
-
#: src/features/firewall.php:
|
1282 |
msgid ""
|
1283 |
"The firewall tests GET and POST, but with this option checked it will also "
|
1284 |
"check COOKIE values."
|
1285 |
msgstr ""
|
1286 |
|
1287 |
-
#: src/features/firewall.php:
|
1288 |
msgid "Directory Traversals"
|
1289 |
msgstr ""
|
1290 |
|
1291 |
-
#: src/features/firewall.php:
|
1292 |
msgid "Block Directory Traversals"
|
1293 |
msgstr ""
|
1294 |
|
1295 |
-
#: src/features/firewall.php:
|
|
|
1296 |
msgid ""
|
1297 |
-
"This will block directory traversal paths in in application parameters (e."
|
1298 |
-
"
|
1299 |
msgstr ""
|
1300 |
|
1301 |
-
#: src/features/firewall.php:
|
1302 |
msgid "SQL Queries"
|
1303 |
msgstr ""
|
1304 |
|
1305 |
-
#: src/features/firewall.php:
|
1306 |
msgid "Block SQL Queries"
|
1307 |
msgstr ""
|
1308 |
|
1309 |
-
#: src/features/firewall.php:
|
1310 |
-
|
1311 |
-
"This will block sql in application parameters (e.g.
|
1312 |
-
"**/, etc.)."
|
1313 |
msgstr ""
|
1314 |
|
1315 |
-
#: src/features/firewall.php:
|
1316 |
msgid "WordPress Terms"
|
1317 |
msgstr ""
|
1318 |
|
1319 |
-
#: src/features/firewall.php:
|
1320 |
msgid "Block WordPress Specific Terms"
|
1321 |
msgstr ""
|
1322 |
|
1323 |
-
#: src/features/firewall.php:
|
1324 |
msgid ""
|
1325 |
"This will block WordPress specific terms in application parameters (wp_, "
|
1326 |
"user_login, etc.)."
|
1327 |
msgstr ""
|
1328 |
|
1329 |
-
#: src/features/firewall.php:
|
1330 |
msgid "Field Truncation"
|
1331 |
msgstr ""
|
1332 |
|
1333 |
-
#: src/features/firewall.php:
|
1334 |
msgid "Block Field Truncation Attacks"
|
1335 |
msgstr ""
|
1336 |
|
1337 |
-
#: src/features/firewall.php:
|
1338 |
msgid "This will block field truncation attacks in application parameters."
|
1339 |
msgstr ""
|
1340 |
|
1341 |
-
#: src/features/firewall.php:
|
1342 |
msgid "PHP Code"
|
1343 |
msgstr ""
|
1344 |
|
1345 |
-
#: src/features/firewall.php:
|
1346 |
#, php-format
|
1347 |
msgid "Block %s"
|
1348 |
msgstr ""
|
1349 |
|
1350 |
-
#: src/features/firewall.php:
|
1351 |
msgid "PHP Code Includes"
|
1352 |
msgstr ""
|
1353 |
|
1354 |
-
#: src/features/firewall.php:
|
1355 |
msgid "This will block any data that appears to try and include PHP files."
|
1356 |
msgstr ""
|
1357 |
|
1358 |
-
#: src/features/firewall.php:
|
1359 |
msgid "Will probably block saving within the Plugin/Theme file editors."
|
1360 |
msgstr ""
|
1361 |
|
1362 |
-
#: src/features/firewall.php:
|
1363 |
msgid "Exe File Uploads"
|
1364 |
msgstr ""
|
1365 |
|
1366 |
-
#: src/features/firewall.php:
|
1367 |
msgid "Block Executable File Uploads"
|
1368 |
msgstr ""
|
1369 |
|
1370 |
-
#: src/features/firewall.php:
|
1371 |
msgid "This will block executable file uploads (.php, .exe, etc.)."
|
1372 |
msgstr ""
|
1373 |
|
1374 |
-
#: src/features/firewall.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1375 |
msgid "Aggressive Scan"
|
1376 |
msgstr ""
|
1377 |
|
1378 |
-
#: src/features/firewall.php:
|
1379 |
msgid "Aggressively Block Data"
|
1380 |
msgstr ""
|
1381 |
|
1382 |
-
#: src/features/firewall.php:
|
1383 |
msgid ""
|
1384 |
"Employs a set of aggressive rules to detect and block malicious data "
|
1385 |
"submitted to your site."
|
1386 |
msgstr ""
|
1387 |
|
1388 |
-
#: src/features/firewall.php:
|
1389 |
-
#: src/processors/hackprotect_corechecksumscan.php:
|
1390 |
-
#: src/processors/
|
1391 |
-
#: src/processors/
|
|
|
|
|
1392 |
#, php-format
|
1393 |
msgid "Warning - %s"
|
1394 |
msgstr ""
|
1395 |
|
1396 |
-
#: src/features/firewall.php:
|
1397 |
msgid "May cause an increase in false-positive firewall blocks."
|
1398 |
msgstr ""
|
1399 |
|
1400 |
-
#: src/features/firewall.php:
|
1401 |
-
msgid "Leading Schemas"
|
1402 |
-
msgstr ""
|
1403 |
-
|
1404 |
-
#: src/features/firewall.php:162
|
1405 |
-
msgid "Block Leading Schemas (HTTPS / HTTP)"
|
1406 |
-
msgstr ""
|
1407 |
-
|
1408 |
-
#: src/features/firewall.php:163
|
1409 |
-
msgid ""
|
1410 |
-
"This will block leading schemas http:// and https:// in application "
|
1411 |
-
"parameters (off by default; may cause problems with other plugins)."
|
1412 |
-
msgstr ""
|
1413 |
-
|
1414 |
-
#: src/features/firewall.php:167
|
1415 |
msgid "Block Response"
|
1416 |
msgstr ""
|
1417 |
|
1418 |
-
#: src/features/firewall.php:
|
1419 |
msgid "Choose how the firewall responds when it blocks a request"
|
1420 |
msgstr ""
|
1421 |
|
1422 |
-
#: src/features/firewall.php:
|
1423 |
msgid ""
|
1424 |
"We recommend dying with a message so you know what might have occurred when "
|
1425 |
"the firewall blocks you"
|
1426 |
msgstr ""
|
1427 |
|
1428 |
-
#: src/features/firewall.php:
|
1429 |
msgid "Send Email Report"
|
1430 |
msgstr ""
|
1431 |
|
1432 |
-
#: src/features/firewall.php:
|
1433 |
msgid ""
|
1434 |
"When a visitor is blocked the firewall will send an email to the configured "
|
1435 |
"email address"
|
1436 |
msgstr ""
|
1437 |
|
1438 |
-
#: src/features/firewall.php:
|
1439 |
msgid ""
|
1440 |
"Use with caution - if you get hit by automated bots you may send out too "
|
1441 |
"many emails and you could get blocked by your host"
|
1442 |
msgstr ""
|
1443 |
|
1444 |
-
#: src/features/firewall.php:
|
1445 |
msgid "Whitelist Parameters"
|
1446 |
msgstr ""
|
1447 |
|
1448 |
-
#: src/features/firewall.php:
|
1449 |
msgid ""
|
1450 |
"Detail pages and parameters that are whitelisted (ignored by the firewall)"
|
1451 |
msgstr ""
|
1452 |
|
1453 |
-
#: src/features/firewall.php:
|
1454 |
msgid ""
|
1455 |
"This should be used with caution and you should only provide parameter names "
|
1456 |
"that you must have excluded"
|
1457 |
msgstr ""
|
1458 |
|
1459 |
-
#: src/features/firewall.php:
|
1460 |
-
#: src/features/firewall.php:
|
1461 |
#, php-format
|
1462 |
msgid "Ignore %s"
|
1463 |
msgstr ""
|
1464 |
|
1465 |
-
#: src/features/firewall.php:
|
1466 |
-
#: src/features/login_protect.php:
|
1467 |
msgid "Administrators"
|
1468 |
msgstr ""
|
1469 |
|
1470 |
-
#: src/features/firewall.php:
|
1471 |
msgid ""
|
1472 |
"Authenticated administrator users will not be processed by the firewall "
|
1473 |
"rules."
|
1474 |
msgstr ""
|
1475 |
|
1476 |
-
#: src/features/firewall.php:
|
1477 |
msgid "Search Engines"
|
1478 |
msgstr ""
|
1479 |
|
1480 |
-
#: src/features/firewall.php:
|
1481 |
msgid "Ignore Search Engine Bot Traffic"
|
1482 |
msgstr ""
|
1483 |
|
1484 |
-
#: src/features/firewall.php:
|
1485 |
msgid ""
|
1486 |
"The firewall will try to recognise search engine spiders/bots and not apply "
|
1487 |
"firewall rules to them."
|
1488 |
msgstr ""
|
1489 |
|
1490 |
-
#: src/features/firewall.php:
|
1491 |
-
msgid "Firewall
|
1492 |
-
msgstr ""
|
1493 |
-
|
1494 |
-
#: src/features/firewall.php:198
|
1495 |
-
msgid "Turn on Firewall Log"
|
1496 |
msgstr ""
|
1497 |
|
1498 |
-
#: src/features/firewall.php:
|
1499 |
-
msgid ""
|
1500 |
-
"Will log every visit to the site and how the firewall processes it. Not "
|
1501 |
-
"recommended to leave on unless you want to debug something and check the "
|
1502 |
-
"firewall is working as you expect"
|
1503 |
msgstr ""
|
1504 |
|
1505 |
-
#: src/features/
|
1506 |
-
msgid ""
|
1507 |
-
"The Hack Protection system is a set of tools to warn you and protect you "
|
1508 |
-
"against hacks on your site."
|
1509 |
msgstr ""
|
1510 |
|
1511 |
-
#: src/features/hack_protect.php:
|
1512 |
-
|
1513 |
-
msgid "
|
1514 |
msgstr ""
|
1515 |
|
1516 |
-
#: src/features/hack_protect.php:
|
|
|
1517 |
msgid ""
|
1518 |
-
"
|
|
|
1519 |
msgstr ""
|
1520 |
|
1521 |
-
#: src/features/hack_protect.php:
|
1522 |
-
msgid "
|
1523 |
msgstr ""
|
1524 |
|
1525 |
-
#: src/features/hack_protect.php:
|
1526 |
-
msgid "
|
1527 |
msgstr ""
|
1528 |
|
1529 |
-
#: src/features/hack_protect.php:
|
1530 |
msgid ""
|
1531 |
-
"
|
1532 |
-
"
|
1533 |
-
msgstr ""
|
1534 |
-
|
1535 |
-
#: src/features/hack_protect.php:43 src/features/hack_protect.php:77
|
1536 |
-
msgid "Core File Scanner"
|
1537 |
msgstr ""
|
1538 |
|
1539 |
-
#: src/features/hack_protect.php:
|
1540 |
-
|
1541 |
-
msgid "Daily Cron - %s"
|
1542 |
msgstr ""
|
1543 |
|
1544 |
-
#: src/features/hack_protect.php:
|
1545 |
-
msgid "
|
1546 |
msgstr ""
|
1547 |
|
1548 |
-
#: src/features/hack_protect.php:
|
1549 |
msgid ""
|
1550 |
-
"
|
1551 |
"vulnerabilities."
|
1552 |
msgstr ""
|
1553 |
|
1554 |
-
#: src/features/hack_protect.php:
|
1555 |
-
|
|
|
1556 |
msgstr ""
|
1557 |
|
1558 |
-
#: src/features/hack_protect.php:
|
1559 |
msgid ""
|
1560 |
-
"
|
1561 |
-
"
|
1562 |
msgstr ""
|
1563 |
|
1564 |
-
#: src/features/hack_protect.php:
|
1565 |
-
msgid "
|
|
|
1566 |
msgstr ""
|
1567 |
|
1568 |
-
#: src/features/hack_protect.php:
|
1569 |
-
msgid "
|
1570 |
msgstr ""
|
1571 |
|
1572 |
-
#: src/features/hack_protect.php:
|
1573 |
-
msgid "
|
1574 |
msgstr ""
|
1575 |
|
1576 |
-
#: src/features/hack_protect.php:
|
1577 |
msgid ""
|
1578 |
-
"
|
1579 |
-
"WordPress
|
1580 |
msgstr ""
|
1581 |
|
1582 |
-
#: src/features/
|
1583 |
-
msgid ""
|
1584 |
-
"Protect visitors to your site by implementing increased security response "
|
1585 |
-
"headers."
|
1586 |
msgstr ""
|
1587 |
|
1588 |
-
#: src/features/
|
1589 |
-
#: src/features/
|
1590 |
-
msgid ""
|
1591 |
-
"Enabling these features are advised, but you must test them on your site "
|
1592 |
-
"thoroughly."
|
1593 |
msgstr ""
|
1594 |
|
1595 |
-
#: src/features/
|
1596 |
-
msgid "
|
1597 |
msgstr ""
|
1598 |
|
1599 |
-
#: src/features/
|
1600 |
-
msgid "
|
1601 |
msgstr ""
|
1602 |
|
1603 |
-
#: src/features/
|
1604 |
-
|
1605 |
-
msgid "Content Security Policy"
|
1606 |
msgstr ""
|
1607 |
|
1608 |
-
#: src/features/
|
1609 |
-
msgid ""
|
1610 |
-
"Restrict the sources and types of content that may be loaded and processed "
|
1611 |
-
"by visitor browsers."
|
1612 |
msgstr ""
|
1613 |
|
1614 |
-
#: src/features/
|
1615 |
-
msgid "
|
1616 |
msgstr ""
|
1617 |
|
1618 |
-
#: src/features/
|
1619 |
-
msgid "
|
1620 |
msgstr ""
|
1621 |
|
1622 |
-
#: src/features/
|
1623 |
-
msgid ""
|
1624 |
-
"The setting prevents any external website from embedding your site in an "
|
1625 |
-
"iFrame."
|
1626 |
msgstr ""
|
1627 |
|
1628 |
-
#: src/features/
|
1629 |
-
msgid "
|
1630 |
msgstr ""
|
1631 |
|
1632 |
-
#: src/features/
|
1633 |
-
msgid "
|
1634 |
msgstr ""
|
1635 |
|
1636 |
-
#: src/features/
|
1637 |
-
msgid "
|
1638 |
msgstr ""
|
1639 |
|
1640 |
-
#: src/features/
|
1641 |
-
msgid ""
|
1642 |
-
"Directs compatible browser to block what they detect as Reflective XSS "
|
1643 |
-
"attacks."
|
1644 |
msgstr ""
|
1645 |
|
1646 |
-
#: src/features/
|
1647 |
-
msgid "
|
|
|
|
|
1648 |
msgstr ""
|
1649 |
|
1650 |
-
#: src/features/
|
1651 |
-
|
|
|
1652 |
msgstr ""
|
1653 |
|
1654 |
-
#: src/features/
|
1655 |
-
msgid "
|
1656 |
msgstr ""
|
1657 |
|
1658 |
-
#: src/features/
|
1659 |
msgid ""
|
1660 |
-
"
|
|
|
1661 |
msgstr ""
|
1662 |
|
1663 |
-
#: src/features/
|
1664 |
-
msgid "
|
1665 |
msgstr ""
|
1666 |
|
1667 |
-
#: src/features/
|
1668 |
-
msgid "
|
1669 |
msgstr ""
|
1670 |
|
1671 |
-
#: src/features/
|
1672 |
-
msgid "
|
|
|
|
|
1673 |
msgstr ""
|
1674 |
|
1675 |
-
#: src/features/
|
1676 |
-
msgid ""
|
1677 |
-
"It essentially means that resources from your own host:protocol are "
|
1678 |
-
"permitted."
|
1679 |
msgstr ""
|
1680 |
|
1681 |
-
#: src/features/
|
1682 |
-
msgid "
|
|
|
|
|
1683 |
msgstr ""
|
1684 |
|
1685 |
-
#: src/features/
|
1686 |
-
msgid "
|
1687 |
msgstr ""
|
1688 |
|
1689 |
-
#: src/features/
|
1690 |
-
msgid "
|
1691 |
msgstr ""
|
1692 |
|
1693 |
-
#: src/features/
|
1694 |
-
msgid "
|
1695 |
msgstr ""
|
1696 |
|
1697 |
-
#: src/features/
|
1698 |
-
msgid "
|
1699 |
msgstr ""
|
1700 |
|
1701 |
-
#: src/features/
|
1702 |
msgid ""
|
1703 |
-
"
|
1704 |
-
"
|
1705 |
msgstr ""
|
1706 |
|
1707 |
-
#: src/features/
|
1708 |
-
msgid "
|
1709 |
msgstr ""
|
1710 |
|
1711 |
-
#: src/features/
|
1712 |
-
msgid "
|
1713 |
msgstr ""
|
1714 |
|
1715 |
-
#: src/features/
|
1716 |
-
msgid "
|
1717 |
msgstr ""
|
1718 |
|
1719 |
-
#: src/features/
|
1720 |
-
msgid "
|
|
|
|
|
1721 |
msgstr ""
|
1722 |
|
1723 |
-
#: src/features/
|
1724 |
-
msgid "
|
1725 |
msgstr ""
|
1726 |
|
1727 |
-
#: src/features/
|
1728 |
-
msgid "
|
|
|
|
|
1729 |
msgstr ""
|
1730 |
|
1731 |
-
#: src/features/
|
1732 |
-
msgid "
|
1733 |
msgstr ""
|
1734 |
|
1735 |
-
#: src/features/
|
1736 |
-
msgid "
|
1737 |
msgstr ""
|
1738 |
|
1739 |
-
#: src/features/
|
1740 |
msgid ""
|
1741 |
-
"
|
1742 |
msgstr ""
|
1743 |
|
1744 |
-
#: src/features/
|
1745 |
msgid ""
|
1746 |
-
"
|
|
|
1747 |
msgstr ""
|
1748 |
|
1749 |
-
#: src/features/
|
1750 |
-
msgid "
|
1751 |
msgstr ""
|
1752 |
|
1753 |
-
#: src/features/
|
1754 |
-
msgid ""
|
1755 |
-
"You can force only HTTPS for a given domain by prefixing it with \"https://"
|
1756 |
-
"\"."
|
1757 |
msgstr ""
|
1758 |
|
1759 |
-
#: src/features/
|
1760 |
-
msgid ""
|
1761 |
-
"You need to authenticate with the plugin Admin Access Protection system."
|
1762 |
msgstr ""
|
1763 |
|
1764 |
-
#: src/features/
|
1765 |
-
|
1766 |
-
msgid "now: %s"
|
1767 |
msgstr ""
|
1768 |
|
1769 |
-
#: src/features/
|
1770 |
-
msgid ""
|
1771 |
-
"The IP Manager allows you to whitelist, blacklist and configure auto-"
|
1772 |
-
"blacklist rules."
|
1773 |
msgstr ""
|
1774 |
|
1775 |
-
#: src/features/
|
1776 |
-
msgid "
|
1777 |
msgstr ""
|
1778 |
|
1779 |
-
#: src/features/
|
1780 |
-
msgid "
|
1781 |
msgstr ""
|
1782 |
|
1783 |
-
#: src/features/
|
1784 |
-
msgid ""
|
1785 |
-
"The Automatic IP Black List system will block the IP addresses of naughty "
|
1786 |
-
"visitors after a specified number of transgressions."
|
1787 |
msgstr ""
|
1788 |
|
1789 |
-
#: src/features/
|
1790 |
-
msgid "
|
1791 |
msgstr ""
|
1792 |
|
1793 |
-
#: src/features/
|
1794 |
-
msgid "
|
|
|
|
|
1795 |
msgstr ""
|
1796 |
|
1797 |
-
#: src/features/
|
1798 |
-
msgid ""
|
1799 |
-
"Visitor IP address will be Black Listed after X bad actions on your site"
|
1800 |
msgstr ""
|
1801 |
|
1802 |
-
#: src/features/
|
|
|
|
|
1803 |
#, php-format
|
1804 |
-
msgid ""
|
1805 |
-
"A black mark is set against an IP address each time a visitor trips the "
|
1806 |
-
"defenses of the %s plugin."
|
1807 |
msgstr ""
|
1808 |
|
1809 |
-
#: src/features/
|
1810 |
msgid ""
|
1811 |
-
"
|
1812 |
-
"
|
1813 |
msgstr ""
|
1814 |
|
1815 |
-
#: src/features/
|
1816 |
-
|
1817 |
-
|
|
|
1818 |
msgstr ""
|
1819 |
|
1820 |
-
#: src/features/
|
1821 |
-
|
|
|
|
|
|
|
1822 |
msgstr ""
|
1823 |
|
1824 |
-
#: src/features/
|
1825 |
-
msgid "
|
1826 |
msgstr ""
|
1827 |
|
1828 |
-
#: src/features/
|
1829 |
-
msgid "
|
1830 |
msgstr ""
|
1831 |
|
1832 |
-
#: src/features/
|
1833 |
msgid ""
|
1834 |
-
"
|
1835 |
-
"
|
1836 |
msgstr ""
|
1837 |
|
1838 |
-
#: src/features/
|
1839 |
-
msgid ""
|
1840 |
-
"Shorter IP black lists are more efficient and a more intelligent use of an "
|
1841 |
-
"IP-based blocking system."
|
1842 |
msgstr ""
|
1843 |
|
1844 |
-
#: src/features/
|
1845 |
-
|
1846 |
-
msgid ""
|
1847 |
-
"Sorry, the %s feature may not be disabled while there are IP addresses in "
|
1848 |
-
"the White List"
|
1849 |
msgstr ""
|
1850 |
|
1851 |
-
#: src/features/
|
1852 |
msgid ""
|
1853 |
-
"
|
1854 |
-
"
|
1855 |
msgstr ""
|
1856 |
|
1857 |
-
#: src/features/
|
1858 |
-
|
|
|
|
|
|
|
1859 |
msgstr ""
|
1860 |
|
1861 |
-
#: src/features/
|
1862 |
-
msgid "
|
1863 |
msgstr ""
|
1864 |
|
1865 |
-
#: src/features/
|
1866 |
-
msgid ""
|
1867 |
-
"This depends on your usage and needs for certain WordPress functions and "
|
1868 |
-
"features."
|
1869 |
msgstr ""
|
1870 |
|
1871 |
-
#: src/features/
|
1872 |
-
msgid "
|
1873 |
msgstr ""
|
1874 |
|
1875 |
-
#: src/features/
|
1876 |
-
msgid "
|
1877 |
msgstr ""
|
1878 |
|
1879 |
-
#: src/features/
|
1880 |
-
msgid "
|
1881 |
msgstr ""
|
1882 |
|
1883 |
-
#: src/features/
|
1884 |
-
msgid "
|
1885 |
msgstr ""
|
1886 |
|
1887 |
-
#: src/features/
|
1888 |
-
msgid "
|
1889 |
msgstr ""
|
1890 |
|
1891 |
-
#: src/features/
|
1892 |
-
msgid "
|
|
|
|
|
1893 |
msgstr ""
|
1894 |
|
1895 |
-
#: src/features/
|
1896 |
-
msgid "
|
|
|
|
|
1897 |
msgstr ""
|
1898 |
|
1899 |
-
#: src/features/
|
|
|
1900 |
msgid ""
|
1901 |
-
"
|
1902 |
-
"
|
1903 |
msgstr ""
|
1904 |
|
1905 |
-
#: src/features/
|
1906 |
-
msgid "
|
1907 |
msgstr ""
|
1908 |
|
1909 |
-
#: src/features/
|
1910 |
-
|
1911 |
-
msgid "Disable %s"
|
1912 |
msgstr ""
|
1913 |
|
1914 |
-
#: src/features/
|
1915 |
-
|
1916 |
-
msgid "
|
1917 |
msgstr ""
|
1918 |
|
1919 |
-
#: src/features/
|
1920 |
-
|
1921 |
-
|
|
|
1922 |
msgstr ""
|
1923 |
|
1924 |
-
#: src/features/
|
1925 |
-
msgid "
|
1926 |
msgstr ""
|
1927 |
|
1928 |
-
#: src/features/
|
1929 |
-
msgid "
|
1930 |
msgstr ""
|
1931 |
|
1932 |
-
#: src/features/
|
1933 |
msgid ""
|
1934 |
-
"
|
1935 |
-
"
|
1936 |
msgstr ""
|
1937 |
|
1938 |
-
#: src/features/
|
1939 |
-
msgid "
|
1940 |
msgstr ""
|
1941 |
|
1942 |
-
#: src/features/
|
1943 |
-
msgid "
|
1944 |
msgstr ""
|
1945 |
|
1946 |
-
#: src/features/
|
1947 |
-
msgid "
|
1948 |
msgstr ""
|
1949 |
|
1950 |
-
#: src/features/
|
1951 |
msgid ""
|
1952 |
-
"
|
1953 |
-
|
1954 |
-
|
1955 |
-
#: src/features/lockdown.php:110
|
1956 |
-
msgid "Equivalent to setting \"FORCE_SSL_ADMIN\" to TRUE."
|
1957 |
msgstr ""
|
1958 |
|
1959 |
-
#: src/features/
|
1960 |
-
msgid "
|
1961 |
msgstr ""
|
1962 |
|
1963 |
-
#: src/features/
|
1964 |
-
msgid "
|
1965 |
msgstr ""
|
1966 |
|
1967 |
-
#: src/features/
|
1968 |
msgid ""
|
1969 |
-
"
|
1970 |
-
"
|
1971 |
msgstr ""
|
1972 |
|
1973 |
-
#: src/features/
|
1974 |
-
msgid ""
|
1975 |
-
"Warning: This may interfere with WordPress plugins that rely on the "
|
1976 |
-
"$wp_version variable."
|
1977 |
msgstr ""
|
1978 |
|
1979 |
-
#: src/features/
|
1980 |
-
msgid "
|
1981 |
msgstr ""
|
1982 |
|
1983 |
-
#: src/features/
|
1984 |
-
msgid "
|
1985 |
msgstr ""
|
1986 |
|
1987 |
-
#: src/features/
|
1988 |
msgid ""
|
1989 |
-
"
|
1990 |
-
"site is WordPress and its current version."
|
1991 |
msgstr ""
|
1992 |
|
1993 |
-
#: src/features/
|
1994 |
-
msgid "
|
1995 |
msgstr ""
|
1996 |
|
1997 |
-
#: src/features/
|
1998 |
-
msgid "
|
1999 |
msgstr ""
|
2000 |
|
2001 |
-
#: src/features/
|
2002 |
-
|
2003 |
-
msgid "When enabled, any URL requests containing \"%s\" will be killed."
|
2004 |
msgstr ""
|
2005 |
|
2006 |
-
#: src/features/
|
2007 |
-
|
2008 |
-
|
|
|
2009 |
msgstr ""
|
2010 |
|
2011 |
-
#: src/features/
|
2012 |
-
msgid ""
|
2013 |
-
"Enabling this option may interfere with expected operations of your site."
|
2014 |
msgstr ""
|
2015 |
|
2016 |
-
#: src/features/
|
2017 |
-
msgid ""
|
2018 |
-
"Before enabling 2-factor email authentication for your WordPress site, you "
|
2019 |
-
"must verify you can receive this email."
|
2020 |
msgstr ""
|
2021 |
|
2022 |
-
#: src/features/
|
2023 |
msgid ""
|
2024 |
-
"
|
2025 |
-
"emails sent from your site."
|
2026 |
msgstr ""
|
2027 |
|
2028 |
-
#: src/features/
|
2029 |
-
|
2030 |
-
msgid "Verify Link: %s"
|
2031 |
msgstr ""
|
2032 |
|
2033 |
-
#: src/features/
|
2034 |
-
|
2035 |
-
msgid "Email Sending Verification For %s"
|
2036 |
msgstr ""
|
2037 |
|
2038 |
-
#: src/features/
|
2039 |
msgid ""
|
2040 |
-
"
|
2041 |
-
"
|
2042 |
msgstr ""
|
2043 |
|
2044 |
-
#: src/features/
|
2045 |
-
msgid "
|
2046 |
msgstr ""
|
2047 |
|
2048 |
-
#: src/features/
|
2049 |
-
msgid ""
|
2050 |
-
"Compatibility with XML-RPC services such as the WordPress iPhone and Android "
|
2051 |
-
"Apps."
|
2052 |
msgstr ""
|
2053 |
|
2054 |
-
#: src/features/
|
2055 |
-
msgid "
|
2056 |
msgstr ""
|
2057 |
|
2058 |
-
#: src/features/
|
2059 |
-
msgid "
|
2060 |
msgstr ""
|
2061 |
|
2062 |
-
#: src/features/
|
2063 |
-
msgid "
|
2064 |
msgstr ""
|
2065 |
|
2066 |
-
#: src/features/
|
2067 |
-
msgid ""
|
2068 |
-
"To hide your wp-login.php page from brute force attacks and hacking attempts "
|
2069 |
-
"- if your login page cannot be found, no-one can login."
|
2070 |
msgstr ""
|
2071 |
|
2072 |
-
#: src/features/
|
2073 |
-
msgid ""
|
2074 |
-
"This is not required for complete security and if your site has irregular or "
|
2075 |
-
"inconsistent configuration it may not work for you."
|
2076 |
msgstr ""
|
2077 |
|
2078 |
-
#: src/features/
|
2079 |
-
|
2080 |
-
msgid "Rename \"%s\""
|
2081 |
msgstr ""
|
2082 |
|
2083 |
-
#: src/features/
|
2084 |
-
msgid "
|
|
|
2085 |
msgstr ""
|
2086 |
|
2087 |
-
#: src/features/
|
2088 |
-
#: src/features/user_management.php:119
|
2089 |
msgid ""
|
2090 |
-
"
|
2091 |
-
"they say they are."
|
2092 |
msgstr ""
|
2093 |
|
2094 |
-
#: src/features/
|
2095 |
-
msgid "
|
2096 |
msgstr ""
|
2097 |
|
2098 |
-
#: src/features/
|
2099 |
-
msgid "
|
|
|
|
|
2100 |
msgstr ""
|
2101 |
|
2102 |
-
#: src/features/
|
2103 |
-
msgid "
|
2104 |
msgstr ""
|
2105 |
|
2106 |
-
#: src/features/
|
2107 |
-
msgid "
|
2108 |
msgstr ""
|
2109 |
|
2110 |
-
#: src/features/
|
2111 |
-
|
|
|
2112 |
msgstr ""
|
2113 |
|
2114 |
-
#: src/features/
|
2115 |
msgid ""
|
2116 |
-
"
|
|
|
2117 |
msgstr ""
|
2118 |
|
2119 |
-
#: src/features/
|
2120 |
-
|
|
|
|
|
|
|
2121 |
msgstr ""
|
2122 |
|
2123 |
-
#: src/features/
|
2124 |
-
msgid "
|
2125 |
msgstr ""
|
2126 |
|
2127 |
-
#: src/features/
|
2128 |
-
msgid "
|
|
|
|
|
2129 |
msgstr ""
|
2130 |
|
2131 |
-
#: src/features/
|
2132 |
-
|
|
|
2133 |
msgstr ""
|
2134 |
|
2135 |
-
#: src/features/
|
2136 |
-
msgid "
|
2137 |
msgstr ""
|
2138 |
|
2139 |
-
#: src/features/
|
2140 |
-
msgid "
|
2141 |
msgstr ""
|
2142 |
|
2143 |
-
#: src/features/
|
2144 |
msgid ""
|
2145 |
-
"
|
2146 |
-
"
|
2147 |
-
msgstr ""
|
2148 |
-
|
2149 |
-
#: src/features/login_protect.php:208
|
2150 |
-
msgid "Rename WP Login"
|
2151 |
msgstr ""
|
2152 |
|
2153 |
-
#: src/features/
|
2154 |
-
msgid "
|
2155 |
msgstr ""
|
2156 |
|
2157 |
-
#: src/features/
|
2158 |
-
msgid "
|
2159 |
msgstr ""
|
2160 |
|
2161 |
-
#: src/features/
|
2162 |
-
|
2163 |
-
msgid "Only letters and numbers are permitted: %s"
|
2164 |
msgstr ""
|
2165 |
|
2166 |
-
#: src/features/
|
2167 |
-
|
2168 |
-
msgid "Your current login URL is: %s"
|
2169 |
msgstr ""
|
2170 |
|
2171 |
-
#: src/features/
|
2172 |
-
|
2173 |
-
|
|
|
2174 |
msgstr ""
|
2175 |
|
2176 |
-
#: src/features/
|
2177 |
-
msgid "
|
2178 |
msgstr ""
|
2179 |
|
2180 |
-
#: src/features/
|
2181 |
msgid ""
|
2182 |
-
"
|
2183 |
-
"authentication to their WordPress user profile"
|
2184 |
-
msgstr ""
|
2185 |
-
|
2186 |
-
#: src/features/login_protect.php:225 src/features/login_protect.php:231
|
2187 |
-
#: src/features/login_protect.php:234
|
2188 |
-
#: src/processors/loginprotect_twofactorauth.php:338
|
2189 |
-
#: src/processors/loginprotect_twofactorauth.php:339
|
2190 |
-
msgid "Email Authentication"
|
2191 |
msgstr ""
|
2192 |
|
2193 |
-
#: src/features/
|
2194 |
#, php-format
|
2195 |
-
msgid "
|
|
|
|
|
2196 |
msgstr ""
|
2197 |
|
2198 |
-
#: src/features/
|
2199 |
msgid ""
|
2200 |
-
"
|
2201 |
-
"
|
2202 |
msgstr ""
|
2203 |
|
2204 |
-
#: src/features/
|
2205 |
#, php-format
|
2206 |
-
msgid "
|
2207 |
msgstr ""
|
2208 |
|
2209 |
-
#: src/features/
|
2210 |
-
msgid "
|
2211 |
msgstr ""
|
2212 |
|
2213 |
-
#: src/features/
|
2214 |
-
msgid ""
|
2215 |
-
"Enforces email-based authentication on all users with the selected roles."
|
2216 |
msgstr ""
|
2217 |
|
2218 |
-
#: src/features/
|
2219 |
-
|
2220 |
-
msgid "This setting only applies to %s."
|
2221 |
msgstr ""
|
2222 |
|
2223 |
-
#: src/features/
|
2224 |
-
msgid "
|
|
|
|
|
2225 |
msgstr ""
|
2226 |
|
2227 |
-
#: src/features/
|
2228 |
-
msgid "
|
|
|
|
|
2229 |
msgstr ""
|
2230 |
|
2231 |
-
#: src/features/
|
2232 |
-
msgid ""
|
2233 |
-
"When enabled, settings in this section will also apply to new user "
|
2234 |
-
"registration and users trying to reset passwords."
|
2235 |
msgstr ""
|
2236 |
|
2237 |
-
#: src/features/
|
2238 |
-
msgid "
|
2239 |
msgstr ""
|
2240 |
|
2241 |
-
#: src/features/
|
2242 |
-
msgid "
|
2243 |
msgstr ""
|
2244 |
|
2245 |
-
#: src/features/
|
2246 |
-
msgid ""
|
2247 |
-
"WordPress will process only ONE login attempt for every number of seconds "
|
2248 |
-
"specified."
|
2249 |
msgstr ""
|
2250 |
|
2251 |
-
#: src/features/
|
2252 |
-
msgid "
|
2253 |
msgstr ""
|
2254 |
|
2255 |
-
#: src/features/
|
2256 |
-
|
2257 |
-
msgid "Default: \"%s\"."
|
2258 |
msgstr ""
|
2259 |
|
2260 |
-
#: src/features/
|
2261 |
-
msgid "
|
2262 |
msgstr ""
|
2263 |
|
2264 |
-
#: src/features/
|
2265 |
-
msgid "
|
2266 |
msgstr ""
|
2267 |
|
2268 |
-
#: src/features/
|
2269 |
msgid ""
|
2270 |
-
"
|
2271 |
-
"
|
2272 |
msgstr ""
|
2273 |
|
2274 |
-
#: src/features/
|
2275 |
-
|
|
|
|
|
|
|
2276 |
msgstr ""
|
2277 |
|
2278 |
-
#: src/features/
|
2279 |
-
msgid "
|
2280 |
msgstr ""
|
2281 |
|
2282 |
-
#: src/features/
|
2283 |
-
msgid "
|
2284 |
msgstr ""
|
2285 |
|
2286 |
-
#: src/features/
|
2287 |
-
msgid "
|
2288 |
msgstr ""
|
2289 |
|
2290 |
-
#: src/features/
|
2291 |
-
msgid "
|
2292 |
msgstr ""
|
2293 |
|
2294 |
-
#: src/features/
|
2295 |
-
msgid "
|
2296 |
msgstr ""
|
2297 |
|
2298 |
-
#: src/features/
|
2299 |
-
msgid "
|
2300 |
msgstr ""
|
2301 |
|
2302 |
-
#: src/features/
|
2303 |
-
msgid ""
|
2304 |
-
"You will not be able to enable this option if your web server does not "
|
2305 |
-
"support it."
|
2306 |
msgstr ""
|
2307 |
|
2308 |
-
#: src/features/
|
2309 |
-
msgid "
|
2310 |
msgstr ""
|
2311 |
|
2312 |
-
#: src/features/
|
2313 |
-
msgid "
|
2314 |
msgstr ""
|
2315 |
|
2316 |
-
#: src/features/
|
2317 |
-
msgid ""
|
2318 |
-
"Combined with your Yubikey API Key (below) this will form the basis of your "
|
2319 |
-
"Yubikey Authentication"
|
2320 |
msgstr ""
|
2321 |
|
2322 |
-
#: src/features/
|
2323 |
-
msgid "
|
2324 |
msgstr ""
|
2325 |
|
2326 |
-
#: src/features/
|
2327 |
-
|
|
|
2328 |
msgstr ""
|
2329 |
|
2330 |
-
#: src/features/
|
2331 |
msgid ""
|
2332 |
-
"
|
2333 |
-
"
|
2334 |
msgstr ""
|
2335 |
|
2336 |
-
#: src/features/
|
2337 |
-
msgid ""
|
2338 |
-
"Please review the info link on how to obtain your own Yubikey App ID and API "
|
2339 |
-
"Key."
|
2340 |
msgstr ""
|
2341 |
|
2342 |
-
#: src/features/
|
2343 |
-
msgid "
|
2344 |
msgstr ""
|
2345 |
|
2346 |
-
#: src/features/
|
2347 |
-
msgid "
|
2348 |
msgstr ""
|
2349 |
|
2350 |
-
#: src/features/
|
2351 |
msgid ""
|
2352 |
-
"
|
2353 |
-
"
|
2354 |
msgstr ""
|
2355 |
|
2356 |
-
#: src/features/
|
2357 |
-
msgid ""
|
2358 |
-
"Please review the info link on how to get your own Yubikey App ID and API "
|
2359 |
-
"Key."
|
2360 |
msgstr ""
|
2361 |
|
2362 |
-
#: src/features/
|
2363 |
-
msgid "
|
2364 |
msgstr ""
|
2365 |
|
2366 |
-
#: src/features/
|
2367 |
-
msgid "
|
2368 |
msgstr ""
|
2369 |
|
2370 |
-
#: src/features/
|
2371 |
-
|
2372 |
-
msgid "Format: %s"
|
2373 |
msgstr ""
|
2374 |
|
2375 |
-
#: src/features/
|
2376 |
-
msgid "
|
2377 |
msgstr ""
|
2378 |
|
2379 |
-
#: src/features/
|
2380 |
-
msgid ""
|
2381 |
-
"If a Username if not assigned a Yubikey, Yubikey Authentication is OFF for "
|
2382 |
-
"that user."
|
2383 |
msgstr ""
|
2384 |
|
2385 |
-
#: src/features/
|
2386 |
msgid ""
|
2387 |
-
"
|
2388 |
-
"
|
2389 |
-
msgstr ""
|
2390 |
-
|
2391 |
-
#: src/features/login_protect.php:324
|
2392 |
-
msgid "Subscribers"
|
2393 |
msgstr ""
|
2394 |
|
2395 |
-
#: src/features/
|
2396 |
-
msgid "
|
2397 |
msgstr ""
|
2398 |
|
2399 |
-
#: src/features/
|
2400 |
-
|
|
|
2401 |
msgstr ""
|
2402 |
|
2403 |
-
#: src/features/
|
2404 |
-
|
|
|
2405 |
msgstr ""
|
2406 |
|
2407 |
-
#: src/features/
|
2408 |
#, php-format
|
2409 |
-
msgid "
|
2410 |
msgstr ""
|
2411 |
|
2412 |
-
#: src/features/
|
2413 |
-
msgid "
|
2414 |
msgstr ""
|
2415 |
|
2416 |
-
#: src/features/
|
2417 |
-
msgid "You
|
2418 |
msgstr ""
|
2419 |
|
2420 |
-
#: src/features/
|
2421 |
-
msgid "
|
2422 |
msgstr ""
|
2423 |
|
2424 |
-
#: src/features/
|
2425 |
-
msgid "
|
2426 |
msgstr ""
|
2427 |
|
2428 |
-
#: src/features/
|
2429 |
-
msgid "
|
|
|
|
|
2430 |
msgstr ""
|
2431 |
|
2432 |
-
#: src/features/
|
2433 |
-
msgid "
|
2434 |
msgstr ""
|
2435 |
|
2436 |
-
#: src/features/
|
2437 |
-
msgid "
|
2438 |
msgstr ""
|
2439 |
|
2440 |
-
#: src/features/
|
2441 |
-
msgid "
|
|
|
|
|
2442 |
msgstr ""
|
2443 |
|
2444 |
-
#: src/features/
|
2445 |
-
msgid "
|
2446 |
msgstr ""
|
2447 |
|
2448 |
-
#: src/features/
|
2449 |
-
msgid "
|
2450 |
msgstr ""
|
2451 |
|
2452 |
-
#: src/features/
|
2453 |
-
|
2454 |
-
msgid "Uncheck this option to disable all %s features."
|
2455 |
msgstr ""
|
2456 |
|
2457 |
-
#: src/features/
|
2458 |
-
msgid "
|
|
|
2459 |
msgstr ""
|
2460 |
|
2461 |
-
#: src/features/
|
2462 |
-
msgid "
|
2463 |
msgstr ""
|
2464 |
|
2465 |
-
#: src/features/
|
2466 |
-
msgid ""
|
2467 |
-
"Allows us to gather information on statistics and features in-use across our "
|
2468 |
-
"client installations."
|
2469 |
msgstr ""
|
2470 |
|
2471 |
-
#: src/features/
|
2472 |
-
msgid ""
|
2473 |
-
"This information is strictly anonymous and contains no personally, or "
|
2474 |
-
"otherwise, identifiable data."
|
2475 |
msgstr ""
|
2476 |
|
2477 |
-
#: src/features/
|
2478 |
-
msgid "
|
|
|
|
|
2479 |
msgstr ""
|
2480 |
|
2481 |
-
#: src/features/
|
2482 |
-
|
2483 |
-
|
|
|
2484 |
msgstr ""
|
2485 |
|
2486 |
-
#: src/features/
|
2487 |
-
msgid "
|
2488 |
msgstr ""
|
2489 |
|
2490 |
-
#: src/features/
|
2491 |
-
msgid "
|
2492 |
msgstr ""
|
2493 |
|
2494 |
-
#: src/features/
|
2495 |
msgid ""
|
2496 |
-
"
|
2497 |
-
"
|
2498 |
msgstr ""
|
2499 |
|
2500 |
-
#: src/features/
|
2501 |
-
msgid "
|
2502 |
msgstr ""
|
2503 |
|
2504 |
-
#: src/features/
|
2505 |
-
msgid "
|
2506 |
msgstr ""
|
2507 |
|
2508 |
-
#: src/features/
|
2509 |
-
|
2510 |
-
"
|
2511 |
-
"on your website."
|
2512 |
msgstr ""
|
2513 |
|
2514 |
-
#: src/features/
|
2515 |
msgid ""
|
2516 |
-
"
|
2517 |
-
"security seriously."
|
2518 |
msgstr ""
|
2519 |
|
2520 |
-
#: src/features/
|
2521 |
-
msgid "
|
2522 |
msgstr ""
|
2523 |
|
2524 |
-
#: src/features/
|
2525 |
-
msgid "
|
2526 |
msgstr ""
|
2527 |
|
2528 |
-
#: src/features/
|
2529 |
-
msgid "
|
|
|
|
|
2530 |
msgstr ""
|
2531 |
|
2532 |
-
#: src/features/
|
2533 |
-
msgid "
|
|
|
|
|
2534 |
msgstr ""
|
2535 |
|
2536 |
-
#: src/features/
|
2537 |
-
|
|
|
2538 |
msgstr ""
|
2539 |
|
2540 |
-
#: src/features/
|
2541 |
-
|
|
|
2542 |
msgstr ""
|
2543 |
|
2544 |
-
#: src/features/
|
2545 |
-
msgid "
|
2546 |
msgstr ""
|
2547 |
|
2548 |
-
#: src/features/
|
2549 |
-
msgid "
|
2550 |
msgstr ""
|
2551 |
|
2552 |
-
#: src/features/
|
2553 |
-
msgid "
|
2554 |
msgstr ""
|
2555 |
|
2556 |
-
#: src/features/
|
2557 |
-
msgid "
|
2558 |
msgstr ""
|
2559 |
|
2560 |
-
#: src/features/
|
2561 |
-
msgid "
|
2562 |
msgstr ""
|
2563 |
|
2564 |
-
#: src/features/
|
2565 |
-
msgid "
|
2566 |
msgstr ""
|
2567 |
|
2568 |
-
#: src/features/
|
2569 |
-
msgid "
|
2570 |
msgstr ""
|
2571 |
|
2572 |
-
#: src/features/
|
2573 |
-
msgid "
|
|
|
|
|
2574 |
msgstr ""
|
2575 |
|
2576 |
-
#: src/features/plugin.php:
|
2577 |
-
|
2578 |
-
"
|
2579 |
msgstr ""
|
2580 |
|
2581 |
-
#: src/features/
|
2582 |
-
|
2583 |
-
#, php-format
|
2584 |
-
msgid "Your IP address is: %s"
|
2585 |
msgstr ""
|
2586 |
|
2587 |
-
#: src/features/
|
2588 |
-
msgid "
|
2589 |
msgstr ""
|
2590 |
|
2591 |
-
#: src/features/
|
2592 |
-
|
|
|
2593 |
msgstr ""
|
2594 |
|
2595 |
-
#: src/features/
|
2596 |
-
msgid "
|
2597 |
msgstr ""
|
2598 |
|
2599 |
-
#: src/features/
|
2600 |
-
#, php-format
|
2601 |
msgid ""
|
2602 |
-
"
|
2603 |
-
"
|
2604 |
msgstr ""
|
2605 |
|
2606 |
-
#: src/features/
|
2607 |
-
#, php-format
|
2608 |
msgid ""
|
2609 |
-
"
|
|
|
2610 |
msgstr ""
|
2611 |
|
2612 |
-
#: src/features/
|
2613 |
-
|
|
|
2614 |
msgstr ""
|
2615 |
|
2616 |
-
#: src/features/
|
2617 |
-
msgid "
|
2618 |
msgstr ""
|
2619 |
|
2620 |
-
#: src/features/
|
2621 |
msgid ""
|
2622 |
-
"
|
2623 |
-
"
|
2624 |
msgstr ""
|
2625 |
|
2626 |
-
#: src/features/
|
2627 |
-
|
2628 |
-
"
|
2629 |
-
"factor authentication, when logging in from a new IP address"
|
2630 |
msgstr ""
|
2631 |
|
2632 |
-
#: src/features/
|
2633 |
-
msgid "
|
2634 |
msgstr ""
|
2635 |
|
2636 |
-
#: src/features/
|
2637 |
-
msgid "
|
2638 |
msgstr ""
|
2639 |
|
2640 |
-
#: src/features/
|
2641 |
msgid ""
|
2642 |
-
"
|
2643 |
-
"
|
2644 |
msgstr ""
|
2645 |
|
2646 |
-
#: src/features/
|
2647 |
-
msgid "
|
2648 |
msgstr ""
|
2649 |
|
2650 |
-
#: src/features/
|
2651 |
-
msgid "
|
2652 |
msgstr ""
|
2653 |
|
2654 |
-
#: src/features/
|
2655 |
-
msgid ""
|
2656 |
-
"Help us to provide globally accessible statistics on the effectiveness of "
|
2657 |
-
"the plugin."
|
2658 |
msgstr ""
|
2659 |
|
2660 |
-
#: src/features/
|
2661 |
-
msgid "
|
|
|
|
|
2662 |
msgstr ""
|
2663 |
|
2664 |
-
#: src/features/
|
2665 |
-
msgid "
|
2666 |
msgstr ""
|
2667 |
|
2668 |
-
#: src/features/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2669 |
msgid ""
|
2670 |
-
"
|
2671 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2672 |
msgstr ""
|
2673 |
|
2674 |
-
#: src/
|
2675 |
-
msgid "
|
2676 |
msgstr ""
|
2677 |
|
2678 |
-
#: src/
|
2679 |
-
msgid "
|
2680 |
msgstr ""
|
2681 |
|
2682 |
-
#: src/
|
2683 |
-
|
2684 |
-
"
|
2685 |
-
"analysis"
|
2686 |
msgstr ""
|
2687 |
|
2688 |
-
#: src/
|
2689 |
-
msgid ""
|
2690 |
-
"Sharing the statistics garnered from the plugin will help show how effective "
|
2691 |
-
"we are and areas we can improve."
|
2692 |
msgstr ""
|
2693 |
|
2694 |
-
#: src/
|
2695 |
-
|
|
|
2696 |
msgstr ""
|
2697 |
|
2698 |
-
#: src/
|
2699 |
-
msgid "
|
2700 |
msgstr ""
|
2701 |
|
2702 |
-
#: src/
|
2703 |
-
|
|
|
2704 |
msgstr ""
|
2705 |
|
2706 |
-
#: src/
|
2707 |
-
|
|
|
2708 |
msgstr ""
|
2709 |
|
2710 |
-
#: src/
|
2711 |
-
msgid "
|
2712 |
msgstr ""
|
2713 |
|
2714 |
-
#: src/
|
2715 |
-
msgid "
|
2716 |
msgstr ""
|
2717 |
|
2718 |
-
#: src/
|
2719 |
-
|
|
|
2720 |
msgstr ""
|
2721 |
|
2722 |
-
#: src/
|
2723 |
-
msgid ""
|
2724 |
-
"You need to enable the User Management feature to view and manage user "
|
2725 |
-
"sessions."
|
2726 |
msgstr ""
|
2727 |
|
2728 |
-
#: src/
|
2729 |
-
msgid ""
|
2730 |
-
"User Management offers real user sessions, finer control over user session "
|
2731 |
-
"time-out, and ensures users have logged-in in a correct manner."
|
2732 |
msgstr ""
|
2733 |
|
2734 |
-
#: src/
|
2735 |
-
msgid "
|
2736 |
msgstr ""
|
2737 |
|
2738 |
-
#: src/
|
2739 |
-
|
|
|
2740 |
msgstr ""
|
2741 |
|
2742 |
-
#: src/
|
2743 |
-
msgid ""
|
2744 |
-
"So you can be made aware of when a WordPress administrator has logged into "
|
2745 |
-
"your site when you are not expecting it."
|
2746 |
msgstr ""
|
2747 |
|
2748 |
-
#: src/
|
2749 |
-
msgid "
|
2750 |
msgstr ""
|
2751 |
|
2752 |
-
#: src/
|
2753 |
-
msgid "
|
2754 |
msgstr ""
|
2755 |
|
2756 |
-
#: src/
|
2757 |
-
msgid ""
|
2758 |
-
"Allows you to better control user sessions on your site and expire idle "
|
2759 |
-
"sessions and prevent account sharing."
|
2760 |
msgstr ""
|
2761 |
|
2762 |
-
#: src/
|
2763 |
-
msgid "
|
2764 |
msgstr ""
|
2765 |
|
2766 |
-
#: src/
|
2767 |
-
|
|
|
2768 |
msgstr ""
|
2769 |
|
2770 |
-
#: src/
|
2771 |
-
|
|
|
2772 |
msgstr ""
|
2773 |
|
2774 |
-
#: src/
|
2775 |
-
|
|
|
2776 |
msgstr ""
|
2777 |
|
2778 |
-
#: src/
|
2779 |
-
|
2780 |
-
"
|
2781 |
-
"this WordPress site, enter a notification email address."
|
2782 |
msgstr ""
|
2783 |
|
2784 |
-
#: src/
|
2785 |
-
msgid "
|
2786 |
msgstr ""
|
2787 |
|
2788 |
-
#: src/
|
2789 |
-
|
|
|
|
|
|
|
2790 |
msgstr ""
|
2791 |
|
2792 |
-
#: src/
|
2793 |
-
|
|
|
2794 |
msgstr ""
|
2795 |
|
2796 |
-
#: src/
|
2797 |
-
msgid ""
|
2798 |
-
"WordPress default is 2 days, or 14 days if you check the \"Remember Me\" box."
|
2799 |
msgstr ""
|
2800 |
|
2801 |
-
#: src/
|
2802 |
-
|
2803 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2804 |
msgstr ""
|
2805 |
|
2806 |
-
#: src/
|
2807 |
#, php-format
|
2808 |
-
msgid "
|
2809 |
msgstr ""
|
2810 |
|
2811 |
-
#: src/
|
2812 |
-
msgid "
|
2813 |
msgstr ""
|
2814 |
|
2815 |
-
#: src/
|
2816 |
-
msgid "
|
2817 |
msgstr ""
|
2818 |
|
2819 |
-
#: src/
|
2820 |
-
|
2821 |
-
"
|
2822 |
-
"forcefully logged out next time they return."
|
2823 |
msgstr ""
|
2824 |
|
2825 |
-
#: src/
|
|
|
|
|
2826 |
#, php-format
|
2827 |
-
msgid "
|
2828 |
msgstr ""
|
2829 |
|
2830 |
-
#: src/
|
2831 |
-
|
|
|
2832 |
msgstr ""
|
2833 |
|
2834 |
-
#: src/
|
2835 |
-
msgid "
|
2836 |
msgstr ""
|
2837 |
|
2838 |
-
#: src/
|
2839 |
-
|
2840 |
-
"
|
2841 |
-
|
|
|
|
|
|
|
|
|
2842 |
msgstr ""
|
2843 |
|
2844 |
-
#: src/
|
|
|
2845 |
msgid ""
|
2846 |
-
"
|
2847 |
-
"
|
2848 |
msgstr ""
|
2849 |
|
2850 |
-
#: src/
|
2851 |
-
|
|
|
2852 |
msgstr ""
|
2853 |
|
2854 |
-
#: src/
|
2855 |
-
msgid "
|
2856 |
msgstr ""
|
2857 |
|
2858 |
-
#: src/
|
|
|
|
|
|
|
|
|
|
|
2859 |
msgid ""
|
2860 |
-
"
|
2861 |
-
"
|
2862 |
msgstr ""
|
2863 |
|
2864 |
-
#: src/
|
2865 |
-
msgid "
|
|
|
|
|
2866 |
msgstr ""
|
2867 |
|
2868 |
-
#: src/processors/
|
2869 |
msgid ""
|
2870 |
-
"
|
2871 |
-
"
|
2872 |
msgstr ""
|
2873 |
|
2874 |
-
#: src/processors/
|
2875 |
msgid ""
|
2876 |
-
"
|
2877 |
-
"
|
2878 |
msgstr ""
|
2879 |
|
2880 |
-
#: src/processors/
|
2881 |
-
|
|
|
2882 |
msgstr ""
|
2883 |
|
2884 |
-
#: src/processors/
|
2885 |
-
#: src/processors/
|
|
|
|
|
|
|
|
|
2886 |
#, php-format
|
2887 |
-
msgid "
|
2888 |
msgstr ""
|
2889 |
|
2890 |
-
#: src/processors/
|
2891 |
-
msgid ""
|
2892 |
-
"Editing existing administrators, promoting existing users to the "
|
2893 |
-
"administrator role, or deleting administrator users is currently restricted."
|
2894 |
msgstr ""
|
2895 |
|
2896 |
-
#: src/processors/
|
2897 |
-
|
2898 |
-
"
|
2899 |
-
"administrator user modifications."
|
2900 |
msgstr ""
|
2901 |
|
2902 |
-
#: src/processors/
|
2903 |
-
|
|
|
|
|
2904 |
msgstr ""
|
2905 |
|
2906 |
-
#: src/processors/
|
2907 |
-
#: src/processors/
|
2908 |
-
|
|
|
2909 |
msgstr ""
|
2910 |
|
2911 |
-
#: src/processors/
|
2912 |
-
|
|
|
|
|
2913 |
msgstr ""
|
2914 |
|
2915 |
-
#: src/processors/
|
2916 |
-
|
|
|
2917 |
msgstr ""
|
2918 |
|
2919 |
-
#: src/processors/
|
|
|
2920 |
#, php-format
|
2921 |
-
msgid "
|
2922 |
msgstr ""
|
2923 |
|
2924 |
-
#: src/processors/
|
2925 |
#, php-format
|
2926 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2927 |
msgstr ""
|
2928 |
|
2929 |
-
#: src/processors/
|
|
|
2930 |
#, php-format
|
2931 |
-
msgid "Plugin
|
2932 |
msgstr ""
|
2933 |
|
2934 |
-
#: src/processors/
|
|
|
2935 |
#, php-format
|
2936 |
-
msgid "Plugin
|
2937 |
msgstr ""
|
2938 |
|
2939 |
-
#: src/processors/
|
2940 |
#, php-format
|
2941 |
msgid ""
|
2942 |
-
"
|
2943 |
-
"
|
|
|
|
|
|
|
|
|
|
|
2944 |
msgstr ""
|
2945 |
|
2946 |
-
#: src/processors/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2947 |
#, php-format
|
2948 |
-
msgid "
|
|
|
2949 |
msgstr ""
|
2950 |
|
2951 |
-
#: src/processors/
|
2952 |
-
msgid "
|
|
|
|
|
2953 |
msgstr ""
|
2954 |
|
2955 |
-
#: src/processors/
|
2956 |
-
msgid "
|
2957 |
msgstr ""
|
2958 |
|
2959 |
-
#: src/processors/
|
2960 |
-
msgid "
|
2961 |
msgstr ""
|
2962 |
|
2963 |
-
#: src/processors/
|
2964 |
-
msgid "
|
2965 |
msgstr ""
|
2966 |
|
2967 |
-
#: src/processors/
|
2968 |
-
msgid "
|
|
|
|
|
|
|
|
|
2969 |
msgstr ""
|
2970 |
|
2971 |
-
#: src/processors/
|
2972 |
#, php-format
|
2973 |
-
msgid "
|
2974 |
msgstr ""
|
2975 |
|
2976 |
-
#: src/processors/
|
2977 |
#, php-format
|
2978 |
-
msgid "Theme
|
|
|
|
|
|
|
|
|
2979 |
msgstr ""
|
2980 |
|
2981 |
-
#: src/processors/
|
2982 |
#, php-format
|
2983 |
msgid ""
|
2984 |
-
"
|
2985 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2986 |
msgstr ""
|
2987 |
|
2988 |
-
#: src/processors/
|
2989 |
#, php-format
|
2990 |
-
msgid "
|
2991 |
msgstr ""
|
2992 |
|
2993 |
-
#: src/processors/
|
2994 |
#, php-format
|
2995 |
-
msgid "
|
2996 |
msgstr ""
|
2997 |
|
2998 |
-
#: src/processors/
|
2999 |
-
|
|
|
3000 |
msgstr ""
|
3001 |
|
3002 |
-
#: src/processors/
|
3003 |
#, php-format
|
3004 |
-
msgid "
|
3005 |
msgstr ""
|
3006 |
|
3007 |
-
#: src/processors/
|
3008 |
-
|
|
|
3009 |
msgstr ""
|
3010 |
|
3011 |
-
#: src/processors/
|
3012 |
#, php-format
|
3013 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3014 |
msgstr ""
|
3015 |
|
3016 |
-
#: src/processors/
|
3017 |
-
msgid "
|
|
|
|
|
3018 |
msgstr ""
|
3019 |
|
3020 |
-
#: src/processors/
|
3021 |
#, php-format
|
3022 |
-
msgid "
|
3023 |
msgstr ""
|
3024 |
|
3025 |
-
#: src/processors/
|
3026 |
-
|
3027 |
-
msgid "WordPress Core was updated from \"v%s\" to \"v%s\"."
|
3028 |
msgstr ""
|
3029 |
|
3030 |
-
#: src/processors/
|
3031 |
-
|
3032 |
-
msgid "WordPress Permalinks Structure was updated from \"%s\" to \"%s\"."
|
3033 |
msgstr ""
|
3034 |
|
3035 |
-
#: src/processors/
|
3036 |
#, php-format
|
3037 |
-
msgid ""
|
3038 |
-
"This is a quick notification from the %s that WordPress Automatic Updates "
|
3039 |
-
"just completed on your site with the following results."
|
3040 |
msgstr ""
|
3041 |
|
3042 |
-
#: src/processors/
|
3043 |
-
|
|
|
|
|
|
|
3044 |
msgstr ""
|
3045 |
|
3046 |
-
#: src/processors/
|
3047 |
-
msgid "
|
3048 |
msgstr ""
|
3049 |
|
3050 |
-
#: src/processors/
|
3051 |
-
msgid "
|
3052 |
msgstr ""
|
3053 |
|
3054 |
-
#: src/processors/
|
3055 |
-
msgid "
|
|
|
|
|
3056 |
msgstr ""
|
3057 |
|
3058 |
-
#: src/processors/
|
3059 |
-
|
3060 |
-
#, php-format
|
3061 |
-
msgid "Notice - %s"
|
3062 |
msgstr ""
|
3063 |
|
3064 |
-
#: src/processors/
|
3065 |
-
#: src/processors/commentsfilter_antibotspam.php:497
|
3066 |
#, php-format
|
3067 |
-
msgid "
|
3068 |
msgstr ""
|
3069 |
|
3070 |
-
#: src/processors/
|
3071 |
-
|
3072 |
-
#, php-format
|
3073 |
-
msgid "Reason: %s"
|
3074 |
msgstr ""
|
3075 |
|
3076 |
-
#: src/processors/
|
3077 |
-
msgid "
|
3078 |
msgstr ""
|
3079 |
|
3080 |
-
#: src/processors/
|
3081 |
-
msgid "
|
3082 |
msgstr ""
|
3083 |
|
3084 |
-
#: src/processors/
|
3085 |
#, php-format
|
3086 |
-
msgid "
|
3087 |
msgstr ""
|
3088 |
|
3089 |
-
#: src/processors/
|
3090 |
-
|
3091 |
-
msgid "
|
3092 |
msgstr ""
|
3093 |
|
3094 |
-
#: src/processors/
|
3095 |
-
msgid ""
|
3096 |
-
"You should ask your host to upgrade or provide a much newer PHP version."
|
3097 |
msgstr ""
|
3098 |
|
3099 |
-
#: src/processors/
|
3100 |
-
msgid "
|
3101 |
msgstr ""
|
3102 |
|
3103 |
-
#: src/processors/
|
3104 |
-
|
3105 |
-
msgid "Dismiss this notice"
|
3106 |
msgstr ""
|
3107 |
|
3108 |
-
#: src/processors/
|
3109 |
#, php-format
|
3110 |
-
msgid "
|
3111 |
msgstr ""
|
3112 |
|
3113 |
-
#: src/processors/
|
3114 |
-
|
|
|
3115 |
msgstr ""
|
3116 |
|
3117 |
-
#: src/processors/
|
3118 |
-
|
3119 |
-
msgid "Would you like to help translate the %s plugin into your language?"
|
3120 |
msgstr ""
|
3121 |
|
3122 |
-
#: src/processors/
|
3123 |
#, php-format
|
3124 |
-
msgid "
|
3125 |
-
msgstr ""
|
3126 |
-
|
3127 |
-
#: src/processors/comments_filter.php:62
|
3128 |
-
msgid ""
|
3129 |
-
"It appears you have Akismet Anti-SPAM running alongside the our human Anti-"
|
3130 |
-
"SPAM filter."
|
3131 |
msgstr ""
|
3132 |
|
3133 |
-
#: src/processors/
|
3134 |
-
|
|
|
3135 |
msgstr ""
|
3136 |
|
3137 |
-
#: src/processors/
|
3138 |
-
msgid "
|
3139 |
msgstr ""
|
3140 |
|
3141 |
-
#: src/processors/
|
3142 |
-
|
3143 |
-
#: src/processors/commentsfilter_antibotspam.php:191
|
3144 |
-
#, php-format
|
3145 |
-
msgid "Failed GASP Bot Filter Test (%s)"
|
3146 |
msgstr ""
|
3147 |
|
3148 |
-
#: src/processors/
|
3149 |
-
msgid "
|
|
|
|
|
3150 |
msgstr ""
|
3151 |
|
3152 |
-
#: src/processors/
|
3153 |
-
msgid "
|
|
|
|
|
3154 |
msgstr ""
|
3155 |
|
3156 |
-
#: src/processors/
|
3157 |
-
msgid "
|
3158 |
msgstr ""
|
3159 |
|
3160 |
-
#: src/processors/
|
3161 |
-
|
3162 |
-
msgid "
|
3163 |
msgstr ""
|
3164 |
|
3165 |
-
#: src/processors/
|
3166 |
-
#: src/processors/
|
3167 |
-
msgid "Google
|
3168 |
msgstr ""
|
3169 |
|
3170 |
-
#: src/processors/
|
3171 |
-
|
3172 |
-
msgid "Human SPAM filter found \"%s\" in \"%s\""
|
3173 |
msgstr ""
|
3174 |
|
3175 |
-
#: src/processors/
|
3176 |
-
msgid "
|
3177 |
msgstr ""
|
3178 |
|
3179 |
-
#: src/processors/
|
|
|
3180 |
#, php-format
|
3181 |
-
msgid "
|
3182 |
msgstr ""
|
3183 |
|
3184 |
-
#: src/processors/
|
|
|
3185 |
#, php-format
|
3186 |
-
msgid "
|
|
|
|
|
3187 |
msgstr ""
|
3188 |
|
3189 |
-
#: src/processors/
|
|
|
|
|
3190 |
#, php-format
|
3191 |
-
msgid "
|
3192 |
msgstr ""
|
3193 |
|
3194 |
-
#: src/processors/
|
3195 |
-
|
3196 |
-
msgid "
|
3197 |
msgstr ""
|
3198 |
|
3199 |
-
#: src/processors/
|
3200 |
-
|
|
|
3201 |
msgstr ""
|
3202 |
|
3203 |
-
#: src/processors/
|
3204 |
-
msgid "
|
|
|
|
|
3205 |
msgstr ""
|
3206 |
|
3207 |
-
#: src/processors/
|
3208 |
-
|
3209 |
-
msgid "
|
3210 |
msgstr ""
|
3211 |
|
3212 |
-
#: src/processors/
|
3213 |
-
|
|
|
3214 |
msgstr ""
|
3215 |
|
3216 |
-
#: src/processors/
|
3217 |
-
msgid "
|
|
|
|
|
3218 |
msgstr ""
|
3219 |
|
3220 |
-
#: src/processors/
|
3221 |
-
msgid "
|
|
|
|
|
3222 |
msgstr ""
|
3223 |
|
3224 |
-
#: src/processors/
|
|
|
3225 |
#, php-format
|
3226 |
-
msgid "
|
3227 |
msgstr ""
|
3228 |
|
3229 |
-
#: src/processors/
|
3230 |
-
msgid "
|
3231 |
msgstr ""
|
3232 |
|
3233 |
-
#: src/processors/
|
3234 |
-
msgid "
|
3235 |
msgstr ""
|
3236 |
|
3237 |
-
#: src/processors/
|
3238 |
-
msgid "
|
3239 |
msgstr ""
|
3240 |
|
3241 |
-
#: src/processors/
|
3242 |
-
msgid "
|
3243 |
msgstr ""
|
3244 |
|
3245 |
-
#: src/processors/
|
3246 |
-
msgid "
|
|
|
|
|
3247 |
msgstr ""
|
3248 |
|
3249 |
-
#: src/processors/
|
3250 |
-
|
3251 |
-
msgid "Firewall Block Response: %s."
|
3252 |
msgstr ""
|
3253 |
|
3254 |
-
#: src/processors/
|
3255 |
-
|
3256 |
-
msgid "Successfully sent Firewall Block email alert to: %s"
|
3257 |
msgstr ""
|
3258 |
|
3259 |
-
#: src/processors/
|
3260 |
-
|
3261 |
-
msgid "Failed to send Firewall Block email alert to: %s"
|
3262 |
msgstr ""
|
3263 |
|
3264 |
-
#: src/processors/
|
3265 |
#, php-format
|
3266 |
-
msgid "
|
|
|
|
|
3267 |
msgstr ""
|
3268 |
|
3269 |
-
#: src/processors/
|
3270 |
#, php-format
|
3271 |
-
msgid "
|
3272 |
-
|
3273 |
-
|
3274 |
-
#: src/processors/firewall.php:472
|
3275 |
-
msgid "Log details for this visitor are below:"
|
3276 |
msgstr ""
|
3277 |
|
3278 |
-
#: src/processors/
|
3279 |
-
|
3280 |
-
#: src/processors/user_management.php:187
|
3281 |
-
#, php-format
|
3282 |
-
msgid "IP Address: %s"
|
3283 |
msgstr ""
|
3284 |
|
3285 |
-
#: src/processors/
|
3286 |
-
|
3287 |
-
msgid "You can look up the offending IP Address here: %s"
|
3288 |
msgstr ""
|
3289 |
|
3290 |
-
#: src/processors/
|
3291 |
-
|
3292 |
-
msgid "Firewall Block Email Alert for %s"
|
3293 |
msgstr ""
|
3294 |
|
3295 |
-
#: src/processors/
|
3296 |
-
msgid "
|
3297 |
msgstr ""
|
3298 |
|
3299 |
-
#: src/processors/
|
3300 |
-
msgid "
|
3301 |
msgstr ""
|
3302 |
|
3303 |
-
#: src/processors/
|
3304 |
-
msgid "
|
3305 |
msgstr ""
|
3306 |
|
3307 |
-
#: src/processors/
|
3308 |
-
msgid "
|
3309 |
msgstr ""
|
3310 |
|
3311 |
-
#: src/processors/
|
3312 |
-
|
3313 |
-
msgid "%s escaped HTML the following comment due to its size: %s"
|
3314 |
msgstr ""
|
3315 |
|
3316 |
-
#: src/processors/
|
3317 |
-
|
3318 |
-
msgid "%s has detected files on your site with potential problems."
|
3319 |
msgstr ""
|
3320 |
|
3321 |
-
#: src/processors/
|
3322 |
-
msgid ""
|
3323 |
-
"This is part of the Hack Protection feature for the WordPress Core File "
|
3324 |
-
"Scanner."
|
3325 |
msgstr ""
|
3326 |
|
3327 |
-
#: src/processors/
|
3328 |
-
|
3329 |
-
msgid "Site Home URL - %s"
|
3330 |
msgstr ""
|
3331 |
|
3332 |
-
#: src/processors/
|
3333 |
-
msgid "
|
3334 |
msgstr ""
|
3335 |
|
3336 |
-
#: src/processors/
|
3337 |
-
|
3338 |
-
"
|
3339 |
-
"WordPress.org Checksum Hashes:"
|
3340 |
msgstr ""
|
3341 |
|
3342 |
-
#: src/processors/
|
3343 |
-
|
|
|
3344 |
msgstr ""
|
3345 |
|
3346 |
-
#: src/processors/
|
|
|
3347 |
msgid ""
|
3348 |
-
"
|
3349 |
-
"settings."
|
3350 |
msgstr ""
|
3351 |
|
3352 |
-
#: src/processors/
|
|
|
3353 |
msgid ""
|
3354 |
-
"
|
3355 |
-
"
|
3356 |
msgstr ""
|
3357 |
|
3358 |
-
#: src/processors/
|
3359 |
-
msgid ""
|
3360 |
-
"You should review these files and replace them with official versions if "
|
3361 |
-
"required."
|
3362 |
msgstr ""
|
3363 |
|
3364 |
-
#: src/processors/
|
3365 |
-
msgid ""
|
3366 |
-
"Alternatively you can have the plugin attempt to repair/replace these files "
|
3367 |
-
"automatically."
|
3368 |
msgstr ""
|
3369 |
|
3370 |
-
#: src/processors/
|
3371 |
-
msgid "
|
3372 |
msgstr ""
|
3373 |
|
3374 |
-
#: src/processors/
|
3375 |
-
|
3376 |
-
msgid "Successfully sent Checksum Scan Notification email alert to: %s"
|
3377 |
msgstr ""
|
3378 |
|
3379 |
-
#: src/processors/
|
3380 |
#, php-format
|
3381 |
-
msgid "
|
3382 |
-
msgstr ""
|
3383 |
-
|
3384 |
-
#: src/processors/hackprotect_corechecksumscan.php:239
|
3385 |
-
msgid "Repair file now"
|
3386 |
msgstr ""
|
3387 |
|
3388 |
-
#: src/processors/
|
3389 |
-
msgid "
|
3390 |
msgstr ""
|
3391 |
|
3392 |
-
#: src/processors/
|
3393 |
#, php-format
|
3394 |
-
msgid "
|
3395 |
msgstr ""
|
3396 |
|
3397 |
-
#: src/processors/
|
|
|
3398 |
#, php-format
|
3399 |
-
msgid "
|
3400 |
msgstr ""
|
3401 |
|
3402 |
-
#: src/processors/
|
3403 |
-
|
3404 |
-
msgid "Vulnerable Plugin Version Range: %s"
|
3405 |
msgstr ""
|
3406 |
|
3407 |
-
#: src/processors/
|
3408 |
-
|
3409 |
-
msgid "Further Information: %s"
|
3410 |
msgstr ""
|
3411 |
|
3412 |
-
#: src/processors/
|
3413 |
#, php-format
|
3414 |
msgid ""
|
3415 |
-
"%s
|
|
|
3416 |
msgstr ""
|
3417 |
|
3418 |
-
#: src/processors/
|
3419 |
-
|
|
|
|
|
|
|
3420 |
msgstr ""
|
3421 |
|
3422 |
-
#: src/processors/
|
3423 |
-
msgid "
|
3424 |
msgstr ""
|
3425 |
|
3426 |
-
#: src/processors/
|
3427 |
-
msgid "
|
|
|
|
|
3428 |
msgstr ""
|
3429 |
|
3430 |
-
#: src/processors/
|
|
|
3431 |
#, php-format
|
3432 |
-
msgid "
|
|
|
|
|
3433 |
msgstr ""
|
3434 |
|
3435 |
-
#: src/processors/
|
3436 |
#, php-format
|
3437 |
-
msgid "
|
|
|
3438 |
msgstr ""
|
3439 |
|
3440 |
-
#: src/processors/
|
3441 |
#, php-format
|
3442 |
msgid ""
|
3443 |
-
"
|
3444 |
-
"
|
3445 |
-
msgstr ""
|
3446 |
-
|
3447 |
-
#: src/processors/hackprotect_pluginvulnerabilities.php:150
|
3448 |
-
msgid "Vulnerability Type"
|
3449 |
-
msgstr ""
|
3450 |
-
|
3451 |
-
#: src/processors/hackprotect_pluginvulnerabilities.php:152
|
3452 |
-
msgid "Vulnerable Versions"
|
3453 |
msgstr ""
|
3454 |
|
3455 |
-
#: src/processors/
|
3456 |
msgid ""
|
3457 |
-
"
|
3458 |
-
"
|
3459 |
msgstr ""
|
3460 |
|
3461 |
-
#: src/processors/
|
3462 |
-
msgid ""
|
3463 |
-
"You should know that your IP address is whitelisted and features you "
|
3464 |
-
"activate do not apply to you."
|
3465 |
msgstr ""
|
3466 |
|
3467 |
-
#: src/processors/
|
3468 |
-
msgid "
|
3469 |
msgstr ""
|
3470 |
|
3471 |
-
#: src/processors/
|
3472 |
-
|
3473 |
-
msgid ""
|
3474 |
-
"You have %s remaining transgression(s) against this site and then you will "
|
3475 |
-
"be black listed."
|
3476 |
msgstr ""
|
3477 |
|
3478 |
-
#: src/processors/
|
3479 |
-
msgid "
|
3480 |
msgstr ""
|
3481 |
|
3482 |
-
#: src/processors/
|
3483 |
-
|
3484 |
-
msgid ""
|
3485 |
-
"Visitor was found to be on the Black List with IP address \"%s\" and their "
|
3486 |
-
"connection was killed."
|
3487 |
msgstr ""
|
3488 |
|
3489 |
-
#: src/processors/
|
3490 |
-
|
3491 |
-
msgid "
|
3492 |
msgstr ""
|
3493 |
|
3494 |
-
#: src/processors/
|
3495 |
-
|
3496 |
-
msgid ""
|
3497 |
-
"You tripped the security plugin defenses a total of %s times making you a "
|
3498 |
-
"suspect."
|
3499 |
msgstr ""
|
3500 |
|
3501 |
-
#: src/processors/
|
3502 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3503 |
msgstr ""
|
3504 |
|
3505 |
-
#: src/processors/
|
3506 |
#, php-format
|
3507 |
msgid ""
|
3508 |
-
"
|
3509 |
-
"
|
3510 |
msgstr ""
|
3511 |
|
3512 |
-
#: src/processors/
|
|
|
3513 |
msgid ""
|
3514 |
-
"
|
3515 |
-
"
|
3516 |
msgstr ""
|
3517 |
|
3518 |
-
#: src/processors/
|
3519 |
-
|
|
|
|
|
3520 |
msgstr ""
|
3521 |
|
3522 |
-
#: src/processors/
|
3523 |
-
#, php-format
|
3524 |
msgid ""
|
3525 |
-
"
|
3526 |
-
"visitor at IP address \"%s\"."
|
3527 |
msgstr ""
|
3528 |
|
3529 |
-
#: src/processors/
|
|
|
3530 |
#, php-format
|
3531 |
msgid ""
|
3532 |
-
"
|
3533 |
-
"
|
3534 |
-
msgstr ""
|
3535 |
-
|
3536 |
-
#: src/processors/ips.php:480
|
3537 |
-
msgid "No Label"
|
3538 |
msgstr ""
|
3539 |
|
3540 |
-
#: src/processors/
|
3541 |
#, php-format
|
3542 |
msgid ""
|
3543 |
-
"
|
3544 |
-
"
|
3545 |
msgstr ""
|
3546 |
|
3547 |
-
#: src/processors/
|
3548 |
-
msgid "
|
3549 |
msgstr ""
|
3550 |
|
3551 |
-
#: src/processors/
|
|
|
3552 |
msgid ""
|
3553 |
-
"
|
3554 |
-
"need you to confirm your site can send emails."
|
3555 |
msgstr ""
|
3556 |
|
3557 |
-
#: src/processors/
|
3558 |
-
msgid "
|
3559 |
msgstr ""
|
3560 |
|
3561 |
-
#: src/processors/
|
3562 |
#, php-format
|
3563 |
-
msgid "
|
3564 |
-
msgstr ""
|
3565 |
-
|
3566 |
-
#: src/processors/login_protect.php:83
|
3567 |
-
msgid "To have this email resent, re-save your Login Protection settings."
|
3568 |
msgstr ""
|
3569 |
|
3570 |
-
#: src/processors/
|
3571 |
-
|
|
|
3572 |
msgstr ""
|
3573 |
|
3574 |
-
#: src/processors/
|
3575 |
-
msgid ""
|
3576 |
-
"Your Two-Factor Authentication was un-verified or invalidated by a login "
|
3577 |
-
"from another location or browser."
|
3578 |
msgstr ""
|
3579 |
|
3580 |
-
#: src/processors/
|
3581 |
-
|
3582 |
-
msgid "Please login again."
|
3583 |
msgstr ""
|
3584 |
|
3585 |
-
#: src/processors/
|
3586 |
-
|
|
|
3587 |
msgstr ""
|
3588 |
|
3589 |
-
#: src/processors/
|
3590 |
#, php-format
|
3591 |
-
msgid "
|
3592 |
msgstr ""
|
3593 |
|
3594 |
-
#: src/processors/
|
3595 |
-
|
3596 |
-
msgid "
|
3597 |
msgstr ""
|
3598 |
|
3599 |
-
#: src/processors/
|
3600 |
-
|
3601 |
-
msgid "
|
|
|
3602 |
msgstr ""
|
3603 |
|
3604 |
-
#: src/processors/
|
3605 |
-
|
3606 |
-
#: src/processors/loginprotect_gasp.php:90
|
3607 |
-
msgid "G.A.S.P. Checking Failed."
|
3608 |
msgstr ""
|
3609 |
|
3610 |
-
#: src/processors/
|
3611 |
-
|
|
|
3612 |
msgstr ""
|
3613 |
|
3614 |
-
#: src/processors/
|
3615 |
-
msgid "
|
3616 |
msgstr ""
|
3617 |
|
3618 |
-
#: src/processors/
|
3619 |
-
msgid "
|
3620 |
msgstr ""
|
3621 |
|
3622 |
-
#: src/processors/
|
3623 |
-
|
|
|
3624 |
msgstr ""
|
3625 |
|
3626 |
-
#: src/processors/
|
3627 |
#, php-format
|
3628 |
-
msgid "
|
3629 |
msgstr ""
|
3630 |
|
3631 |
-
#: src/processors/
|
3632 |
-
|
3633 |
-
msgid "
|
3634 |
msgstr ""
|
3635 |
|
3636 |
-
#: src/processors/
|
3637 |
-
|
|
|
3638 |
msgstr ""
|
3639 |
|
3640 |
-
#: src/processors/
|
3641 |
#, php-format
|
3642 |
-
msgid "
|
3643 |
msgstr ""
|
3644 |
|
3645 |
-
#: src/processors/
|
3646 |
#, php-format
|
3647 |
-
msgid "
|
3648 |
msgstr ""
|
3649 |
|
3650 |
-
#: src/processors/
|
3651 |
-
msgid "
|
3652 |
msgstr ""
|
3653 |
|
3654 |
-
#: src/processors/
|
3655 |
msgid ""
|
3656 |
-
"
|
3657 |
-
"
|
3658 |
msgstr ""
|
3659 |
|
3660 |
-
#: src/processors/
|
3661 |
-
msgid ""
|
3662 |
-
"If you have a problem with scanning the QR code enter this code manually "
|
3663 |
-
"into the app."
|
3664 |
msgstr ""
|
3665 |
|
3666 |
-
#: src/processors/
|
3667 |
-
msgid "
|
3668 |
msgstr ""
|
3669 |
|
3670 |
-
#: src/processors/
|
3671 |
-
msgid "
|
3672 |
msgstr ""
|
3673 |
|
3674 |
-
#: src/processors/
|
3675 |
-
|
3676 |
-
msgid "Google Authenticator Code"
|
3677 |
msgstr ""
|
3678 |
|
3679 |
-
#: src/processors/
|
3680 |
-
msgid "
|
3681 |
msgstr ""
|
3682 |
|
3683 |
-
#: src/processors/
|
3684 |
-
msgid "
|
3685 |
msgstr ""
|
3686 |
|
3687 |
-
#: src/processors/
|
3688 |
-
msgid "
|
3689 |
msgstr ""
|
3690 |
|
3691 |
-
#: src/processors/
|
3692 |
-
msgid ""
|
3693 |
-
"Sorry, Google Authenticator may not be removed from another administrator's "
|
3694 |
-
"account."
|
3695 |
msgstr ""
|
3696 |
|
3697 |
-
#: src/processors/
|
3698 |
-
|
3699 |
-
#, php-format
|
3700 |
-
msgid "Provided by %s"
|
3701 |
msgstr ""
|
3702 |
|
3703 |
-
#: src/processors/
|
3704 |
-
|
3705 |
-
#: src/processors/loginprotect_googlerecaptcha.php:87
|
3706 |
-
msgid "Whoops."
|
3707 |
msgstr ""
|
3708 |
|
3709 |
-
#: src/processors/
|
3710 |
-
msgid "
|
3711 |
msgstr ""
|
3712 |
|
3713 |
-
#: src/processors/
|
3714 |
-
msgid "
|
3715 |
msgstr ""
|
3716 |
|
3717 |
-
#: src/processors/
|
3718 |
-
msgid "
|
3719 |
msgstr ""
|
3720 |
|
3721 |
-
#: src/processors/
|
3722 |
-
msgid "
|
3723 |
msgstr ""
|
3724 |
|
3725 |
-
#: src/processors/
|
3726 |
#, php-format
|
3727 |
-
msgid "
|
|
|
|
|
3728 |
msgstr ""
|
3729 |
|
3730 |
-
#: src/processors/
|
3731 |
-
|
|
|
3732 |
msgstr ""
|
3733 |
|
3734 |
-
#: src/processors/
|
3735 |
msgid ""
|
3736 |
-
"
|
3737 |
-
"
|
3738 |
msgstr ""
|
3739 |
|
3740 |
-
#: src/processors/
|
3741 |
-
msgid ""
|
3742 |
-
"You, or someone pretending to be you, just attempted to login into your "
|
3743 |
-
"WordPress site."
|
3744 |
msgstr ""
|
3745 |
|
3746 |
-
#: src/processors/
|
3747 |
-
|
3748 |
-
"
|
3749 |
-
"verified."
|
3750 |
msgstr ""
|
3751 |
|
3752 |
-
#: src/processors/
|
3753 |
-
|
|
|
3754 |
msgstr ""
|
3755 |
|
3756 |
-
#: src/processors/
|
3757 |
-
msgid "
|
3758 |
msgstr ""
|
3759 |
|
3760 |
-
#: src/processors/
|
3761 |
-
#: src/processors/user_management.php:185
|
3762 |
#, php-format
|
3763 |
-
msgid "
|
3764 |
msgstr ""
|
3765 |
|
3766 |
-
#: src/processors/
|
3767 |
#, php-format
|
3768 |
-
msgid "
|
3769 |
msgstr ""
|
3770 |
|
3771 |
-
#: src/processors/
|
3772 |
-
|
3773 |
-
|
|
|
3774 |
msgstr ""
|
3775 |
|
3776 |
-
#: src/processors/
|
3777 |
-
#, php-format
|
3778 |
msgid ""
|
3779 |
-
"
|
3780 |
-
"Login Auth for IP address \"%s\"."
|
3781 |
msgstr ""
|
3782 |
|
3783 |
-
#: src/processors/
|
3784 |
#, php-format
|
3785 |
-
msgid ""
|
3786 |
-
"Tried to send email to User \"%s\" to verify their identity using Two-Factor "
|
3787 |
-
"Login Auth for IP address \"%s\", but email sending failed."
|
3788 |
msgstr ""
|
3789 |
|
3790 |
-
#: src/processors/
|
3791 |
-
|
|
|
3792 |
msgstr ""
|
3793 |
|
3794 |
-
#: src/processors/
|
3795 |
-
|
3796 |
-
"
|
3797 |
-
"currently supported on WPMS."
|
3798 |
msgstr ""
|
3799 |
|
3800 |
-
#: src/processors/
|
3801 |
-
#: src/processors/
|
3802 |
#, php-format
|
3803 |
-
msgid ""
|
3804 |
-
"Can not use the Rename WP Login feature because you have the \"%s\" plugin "
|
3805 |
-
"installed and it is active."
|
3806 |
msgstr ""
|
3807 |
|
3808 |
-
#: src/processors/
|
3809 |
-
|
3810 |
-
msgid ""
|
3811 |
-
"Can not use the Rename WP Login feature because you have not enabled %s."
|
3812 |
msgstr ""
|
3813 |
|
3814 |
-
#: src/processors/
|
3815 |
-
|
3816 |
-
msgid ""
|
3817 |
-
"Can not use the Rename WP Login feature because you have chosen a path (\"%s"
|
3818 |
-
"\") that is reserved on your WordPress site."
|
3819 |
msgstr ""
|
3820 |
|
3821 |
-
#: src/processors/
|
3822 |
-
|
3823 |
-
msgid "Warning"
|
3824 |
msgstr ""
|
3825 |
|
3826 |
-
#: src/processors/
|
3827 |
-
|
3828 |
-
"
|
3829 |
-
"cannot parse the necessary information."
|
3830 |
msgstr ""
|
3831 |
|
3832 |
-
#: src/processors/
|
3833 |
-
|
3834 |
-
msgid ""
|
3835 |
-
"User \"%s\" logged in without a Yubikey One Time Password because no "
|
3836 |
-
"username-yubikey pair was found for this user."
|
3837 |
msgstr ""
|
3838 |
|
3839 |
-
#: src/processors/
|
3840 |
-
|
3841 |
-
#: src/processors/loginprotect_yubikey.php:102
|
3842 |
-
#, php-format
|
3843 |
-
msgid "ERROR: %s"
|
3844 |
msgstr ""
|
3845 |
|
3846 |
-
#: src/processors/
|
3847 |
-
msgid ""
|
3848 |
-
"The Yubikey provided is not on the list of permitted keys for this user."
|
3849 |
msgstr ""
|
3850 |
|
3851 |
-
#: src/processors/
|
|
|
|
|
|
|
|
|
3852 |
#, php-format
|
3853 |
-
msgid ""
|
3854 |
-
"User \"%s\" attempted to login but Yubikey ID \"%s\" used was not in list of "
|
3855 |
-
"authorised keys."
|
3856 |
msgstr ""
|
3857 |
|
3858 |
-
#: src/
|
3859 |
-
|
3860 |
-
msgid "The Yubikey authentication was not validated successfully."
|
3861 |
msgstr ""
|
3862 |
|
3863 |
-
#: src/
|
3864 |
-
|
3865 |
-
msgid ""
|
3866 |
-
"User \"%s\" attempted to login but Yubikey One Time Password failed to "
|
3867 |
-
"validate due to invalid Yubi API."
|
3868 |
msgstr ""
|
3869 |
|
3870 |
-
#: src/
|
3871 |
#, php-format
|
3872 |
-
msgid ""
|
3873 |
-
"User \"%s\" attempted to login but Yubikey One Time Password failed to "
|
3874 |
-
"validate due to invalid Yubi API response status: \"%s\"."
|
3875 |
msgstr ""
|
3876 |
|
3877 |
-
#: src/
|
3878 |
-
|
3879 |
-
msgid ""
|
3880 |
-
"User \"%s\" successfully logged in using a validated Yubikey One Time "
|
3881 |
-
"Password."
|
3882 |
msgstr ""
|
3883 |
|
3884 |
-
#: src/
|
3885 |
-
msgid "
|
3886 |
msgstr ""
|
3887 |
|
3888 |
-
#: src/
|
3889 |
#, php-format
|
3890 |
-
msgid "%s
|
3891 |
msgstr ""
|
3892 |
|
3893 |
-
#: src/
|
3894 |
-
|
3895 |
-
msgid "Days Installed: %s"
|
3896 |
msgstr ""
|
3897 |
|
3898 |
-
#: src/
|
3899 |
-
|
3900 |
-
msgid "This Site Is Protected By %s"
|
3901 |
msgstr ""
|
3902 |
|
3903 |
-
#: src/
|
3904 |
-
|
3905 |
-
msgid "%s is not currently running"
|
3906 |
msgstr ""
|
3907 |
|
3908 |
-
#: src/
|
3909 |
#, php-format
|
3910 |
-
msgid "
|
3911 |
msgstr ""
|
3912 |
|
3913 |
-
#: src/
|
3914 |
-
msgid "
|
3915 |
msgstr ""
|
3916 |
|
3917 |
-
#: src/
|
3918 |
-
msgid "
|
3919 |
msgstr ""
|
3920 |
|
3921 |
-
#: src/
|
3922 |
#, php-format
|
3923 |
-
msgid "%s
|
3924 |
msgstr ""
|
3925 |
|
3926 |
-
#: src/
|
3927 |
-
|
3928 |
-
msgid ""
|
3929 |
-
"You can now help spread the word about the %s plugin anywhere on your site"
|
3930 |
msgstr ""
|
3931 |
|
3932 |
-
#: src/
|
3933 |
-
msgid "
|
3934 |
msgstr ""
|
3935 |
|
3936 |
-
#: src/
|
3937 |
-
|
3938 |
-
msgid "Will you help us to make %s even better?"
|
3939 |
msgstr ""
|
3940 |
|
3941 |
-
#: src/
|
3942 |
-
msgid ""
|
3943 |
-
"We're working to understand how people, just like you, use this plugin every "
|
3944 |
-
"day."
|
3945 |
msgstr ""
|
3946 |
|
3947 |
-
#: src/
|
3948 |
-
msgid ""
|
3949 |
-
"We'd like to understand better the features used most and how effective we "
|
3950 |
-
"are on a global scale."
|
3951 |
msgstr ""
|
3952 |
|
3953 |
-
#: src/
|
3954 |
-
msgid ""
|
3955 |
-
"The data sent will be always completely anonymous and we will never be able "
|
3956 |
-
"to track you or your website."
|
3957 |
msgstr ""
|
3958 |
|
3959 |
-
#: src/
|
3960 |
-
msgid ""
|
3961 |
-
"You can easily turn it off at any time within the plugin options if you "
|
3962 |
-
"change your mind."
|
3963 |
msgstr ""
|
3964 |
|
3965 |
-
#: src/
|
3966 |
-
msgid "
|
3967 |
msgstr ""
|
3968 |
|
3969 |
-
#: src/
|
3970 |
-
|
|
|
3971 |
msgstr ""
|
3972 |
|
3973 |
-
#: src/
|
3974 |
-
msgid "
|
|
|
|
|
3975 |
msgstr ""
|
3976 |
|
3977 |
-
#: src/
|
3978 |
-
msgid "
|
|
|
|
|
3979 |
msgstr ""
|
3980 |
|
3981 |
-
#: src/
|
3982 |
-
msgid "
|
3983 |
msgstr ""
|
3984 |
|
3985 |
-
#: src/
|
3986 |
-
msgid "
|
|
|
|
|
3987 |
msgstr ""
|
3988 |
|
3989 |
-
#: src/
|
3990 |
-
msgid "
|
|
|
3991 |
msgstr ""
|
3992 |
|
3993 |
-
#: src/
|
3994 |
-
msgid "
|
3995 |
msgstr ""
|
3996 |
|
3997 |
-
#: src/
|
3998 |
-
msgid "
|
|
|
|
|
3999 |
msgstr ""
|
4000 |
|
4001 |
-
#: src/
|
4002 |
-
msgid "
|
|
|
|
|
4003 |
msgstr ""
|
4004 |
|
4005 |
-
#: src/
|
4006 |
-
msgid "
|
4007 |
msgstr ""
|
4008 |
|
4009 |
-
#: src/
|
4010 |
-
msgid "
|
4011 |
msgstr ""
|
4012 |
|
4013 |
-
#: src/
|
4014 |
-
msgid "
|
4015 |
msgstr ""
|
4016 |
|
4017 |
-
#: src/
|
4018 |
-
msgid "
|
4019 |
msgstr ""
|
4020 |
|
4021 |
-
#: src/
|
4022 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4023 |
msgid ""
|
4024 |
-
"
|
4025 |
-
"
|
4026 |
msgstr ""
|
4027 |
|
4028 |
-
#: src/
|
4029 |
-
msgid "
|
4030 |
msgstr ""
|
4031 |
|
4032 |
-
#: src/
|
4033 |
-
|
4034 |
-
msgid "Site URL: %s"
|
4035 |
msgstr ""
|
4036 |
|
4037 |
-
#: src/
|
4038 |
-
|
4039 |
-
msgid "User Email: %s"
|
4040 |
msgstr ""
|
4041 |
|
4042 |
-
#: src/
|
4043 |
-
msgid "
|
4044 |
msgstr ""
|
4045 |
|
4046 |
-
#: src/
|
4047 |
#, php-format
|
4048 |
-
msgid "
|
4049 |
msgstr ""
|
4050 |
|
4051 |
-
#: src/
|
4052 |
-
msgid "
|
4053 |
msgstr ""
|
4054 |
|
4055 |
-
#: src/
|
4056 |
-
msgid "
|
4057 |
msgstr ""
|
4058 |
|
4059 |
-
#: src/
|
4060 |
-
|
|
|
|
|
4061 |
msgstr ""
|
4062 |
|
4063 |
-
#: src/
|
4064 |
-
|
4065 |
-
msgid "
|
4066 |
msgstr ""
|
4067 |
|
4068 |
-
#: src/
|
4069 |
-
|
|
|
4070 |
msgstr ""
|
4071 |
|
4072 |
-
#: src/
|
4073 |
-
|
|
|
|
|
4074 |
msgstr ""
|
4075 |
|
4076 |
-
#: src/
|
4077 |
-
msgid "
|
4078 |
msgstr ""
|
4079 |
|
4080 |
-
#: templates/php/snippets/
|
4081 |
-
|
4082 |
-
msgid "Shield (from %s)"
|
4083 |
msgstr ""
|
1 |
msgid ""
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: WPSF v2.0\n"
|
4 |
+
"POT-Creation-Date: 2018-03-01 10:55+0000\n"
|
5 |
+
"PO-Revision-Date: 2018-03-01 10:55+0000\n"
|
6 |
"Last-Translator: \n"
|
7 |
"Language-Team: \n"
|
8 |
"Language: en_GB\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.0.6\n"
|
13 |
"X-Poedit-KeywordsList: _wpsf__;gettext;gettext_noop;_wpsf_e\n"
|
14 |
"X-Poedit-Basepath: ..\n"
|
15 |
"X-Poedit-SourceCharset: UTF-8\n"
|
18 |
"X-Poedit-SearchPathExcluded-0: .git\n"
|
19 |
"X-Poedit-SearchPathExcluded-1: .idea\n"
|
20 |
|
21 |
+
#: init.php:43
|
22 |
msgid "Upgrade Now To Keep Your Firewall Up-To-Date With The Latest Features."
|
23 |
msgstr ""
|
24 |
|
25 |
+
#: src/common/Components/Tables/AuditTrailTable.php:15
|
26 |
+
msgid "Refresh"
|
27 |
msgstr ""
|
28 |
|
29 |
+
#: src/features/admin_access_restriction.php:42
|
30 |
+
msgid "Enter your Security Admin Access Key"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
msgstr ""
|
32 |
|
33 |
+
#: src/features/admin_access_restriction.php:54
|
34 |
+
#: src/features/admin_access_restriction.php:72
|
35 |
+
msgid "Security Admin Access Key Accepted."
|
36 |
msgstr ""
|
37 |
|
38 |
+
#: src/features/admin_access_restriction.php:54
|
39 |
+
#: src/features/admin_access_restriction.php:72
|
40 |
+
msgid "Please wait"
|
|
|
41 |
msgstr ""
|
42 |
|
43 |
+
#: src/features/admin_access_restriction.php:57
|
44 |
+
msgid "Failed to process key - you may need to re-login to WordPress."
|
45 |
msgstr ""
|
46 |
|
47 |
+
#: src/features/admin_access_restriction.php:61
|
48 |
+
#: src/features/admin_access_restriction.php:75
|
49 |
+
msgid "Error - Invalid Key"
|
50 |
msgstr ""
|
51 |
|
52 |
+
#: src/features/admin_access_restriction.php:209
|
53 |
+
#, php-format
|
54 |
+
msgid "%s Security Admin key accepted."
|
55 |
msgstr ""
|
56 |
|
57 |
+
#: src/features/admin_access_restriction.php:212
|
58 |
+
#, php-format
|
59 |
+
msgid "%s Security Admin key not accepted."
|
60 |
msgstr ""
|
61 |
|
62 |
+
#: src/features/admin_access_restriction.php:333
|
63 |
+
#: src/features/audit_trail.php:217 src/features/autoupdates.php:162
|
64 |
+
#: src/features/comments_filter.php:110 src/features/firewall.php:66
|
65 |
+
#: src/features/hack_protect.php:554 src/features/headers.php:127
|
66 |
+
#: src/features/ips.php:273 src/features/lockdown.php:64
|
67 |
+
#: src/features/login_protect.php:438 src/features/sessions.php:51
|
68 |
+
#: src/features/statistics.php:43 src/features/statistics.php:52
|
69 |
+
#: src/features/user_management.php:211
|
70 |
+
#, php-format
|
71 |
+
msgid "Enable Module: %s"
|
72 |
+
msgstr ""
|
73 |
+
|
74 |
+
#: src/features/admin_access_restriction.php:335
|
75 |
+
#: src/features/admin_access_restriction.php:345
|
76 |
+
#: src/features/admin_access_restriction.php:354
|
77 |
+
#: src/features/admin_access_restriction.php:363
|
78 |
+
#: src/features/audit_trail.php:219 src/features/audit_trail.php:228
|
79 |
+
#: src/features/audit_trail.php:237 src/features/autoupdates.php:164
|
80 |
+
#: src/features/autoupdates.php:173 src/features/autoupdates.php:182
|
81 |
+
#: src/features/autoupdates.php:192 src/features/autoupdates.php:202
|
82 |
+
#: src/features/base_wpsf.php:221 src/features/comments_filter.php:112
|
83 |
+
#: src/features/comments_filter.php:121 src/features/comments_filter.php:131
|
84 |
+
#: src/features/comments_filter.php:140 src/features/firewall.php:68
|
85 |
+
#: src/features/hack_protect.php:549 src/features/hack_protect.php:556
|
86 |
+
#: src/features/hack_protect.php:565 src/features/hack_protect.php:575
|
87 |
+
#: src/features/hack_protect.php:584 src/features/hack_protect.php:593
|
88 |
+
#: src/features/hack_protect.php:603 src/features/hack_protect.php:613
|
89 |
+
#: src/features/headers.php:129 src/features/headers.php:138
|
90 |
+
#: src/features/headers.php:147 src/features/ips.php:275
|
91 |
+
#: src/features/ips.php:285 src/features/ips.php:295
|
92 |
+
#: src/features/license.php:560 src/features/lockdown.php:66
|
93 |
+
#: src/features/lockdown.php:75 src/features/lockdown.php:84
|
94 |
+
#: src/features/lockdown.php:93 src/features/login_protect.php:441
|
95 |
+
#: src/features/login_protect.php:450 src/features/login_protect.php:461
|
96 |
+
#: src/features/login_protect.php:470 src/features/login_protect.php:479
|
97 |
+
#: src/features/login_protect.php:489 src/features/login_protect.php:498
|
98 |
+
#: src/features/login_protect.php:507 src/features/plugin.php:661
|
99 |
+
#: src/features/plugin.php:668 src/features/plugin.php:683
|
100 |
+
#: src/features/sessions.php:53 src/features/statistics.php:45
|
101 |
+
#: src/features/statistics.php:54 src/features/statistics.php:63
|
102 |
+
#: src/features/user_management.php:213 src/features/user_management.php:223
|
103 |
+
#: src/features/user_management.php:232 src/features/user_management.php:241
|
104 |
+
#: src/features/user_management.php:250
|
105 |
#, php-format
|
106 |
msgid "Purpose - %s"
|
107 |
msgstr ""
|
108 |
|
109 |
+
#: src/features/admin_access_restriction.php:335
|
110 |
+
#: src/features/admin_access_restriction.php:345
|
111 |
msgid ""
|
112 |
"Restricts access to this plugin preventing unauthorized changes to your "
|
113 |
"security settings."
|
114 |
msgstr ""
|
115 |
|
116 |
+
#: src/features/admin_access_restriction.php:336
|
117 |
+
#: src/features/admin_access_restriction.php:346
|
118 |
+
#: src/features/admin_access_restriction.php:355
|
119 |
+
#: src/features/audit_trail.php:220 src/features/audit_trail.php:229
|
120 |
+
#: src/features/audit_trail.php:238 src/features/autoupdates.php:165
|
121 |
+
#: src/features/autoupdates.php:174 src/features/autoupdates.php:184
|
122 |
+
#: src/features/autoupdates.php:193 src/features/base_wpsf.php:222
|
123 |
+
#: src/features/comments_filter.php:113 src/features/comments_filter.php:122
|
124 |
+
#: src/features/comments_filter.php:132 src/features/comments_filter.php:141
|
125 |
+
#: src/features/firewall.php:69 src/features/firewall.php:78
|
126 |
+
#: src/features/firewall.php:89 src/features/firewall.php:98
|
127 |
+
#: src/features/hack_protect.php:557 src/features/hack_protect.php:566
|
128 |
+
#: src/features/hack_protect.php:576 src/features/hack_protect.php:585
|
129 |
+
#: src/features/hack_protect.php:594 src/features/hack_protect.php:604
|
130 |
+
#: src/features/hack_protect.php:614 src/features/headers.php:130
|
131 |
+
#: src/features/headers.php:139 src/features/headers.php:148
|
132 |
+
#: src/features/ips.php:276 src/features/ips.php:286 src/features/ips.php:296
|
133 |
+
#: src/features/license.php:561 src/features/lockdown.php:67
|
134 |
+
#: src/features/lockdown.php:76 src/features/lockdown.php:85
|
135 |
+
#: src/features/lockdown.php:94 src/features/login_protect.php:442
|
136 |
+
#: src/features/login_protect.php:451 src/features/login_protect.php:462
|
137 |
+
#: src/features/login_protect.php:480 src/features/login_protect.php:499
|
138 |
+
#: src/features/plugin.php:684 src/features/plugin.php:847
|
139 |
+
#: src/features/sessions.php:54 src/features/statistics.php:46
|
140 |
+
#: src/features/statistics.php:55 src/features/statistics.php:64
|
141 |
+
#: src/features/user_management.php:214 src/features/user_management.php:224
|
142 |
+
#: src/features/user_management.php:233 src/features/user_management.php:242
|
143 |
+
#: src/features/user_management.php:251
|
144 |
#, php-format
|
145 |
msgid "Recommendation - %s"
|
146 |
msgstr ""
|
147 |
|
148 |
+
#: src/features/admin_access_restriction.php:336
|
149 |
+
#: src/features/audit_trail.php:220 src/features/autoupdates.php:165
|
150 |
+
#: src/features/comments_filter.php:113 src/features/firewall.php:69
|
151 |
+
#: src/features/hack_protect.php:557 src/features/hack_protect.php:566
|
152 |
+
#: src/features/hack_protect.php:576 src/features/hack_protect.php:585
|
153 |
+
#: src/features/hack_protect.php:594 src/features/ips.php:276
|
154 |
+
#: src/features/ips.php:286 src/features/lockdown.php:67
|
155 |
+
#: src/features/login_protect.php:442 src/features/sessions.php:54
|
156 |
+
#: src/features/statistics.php:46 src/features/statistics.php:55
|
157 |
+
#: src/features/user_management.php:214
|
158 |
#, php-format
|
159 |
msgid "Keep the %s feature turned on."
|
160 |
msgstr ""
|
161 |
|
162 |
+
#: src/features/admin_access_restriction.php:336
|
163 |
+
#: src/features/admin_access_restriction.php:390 src/features/plugin.php:861
|
164 |
+
#: src/features/plugin.php:863 src/wizards/base_wpsf.php:65
|
165 |
+
msgid "Security Admin"
|
166 |
+
msgstr ""
|
167 |
+
|
168 |
+
#: src/features/admin_access_restriction.php:337
|
169 |
msgid "You need to also enter a new Access Key to enable this feature."
|
170 |
msgstr ""
|
171 |
|
172 |
+
#: src/features/admin_access_restriction.php:339
|
173 |
+
#: src/features/audit_trail.php:222 src/features/autoupdates.php:167
|
174 |
+
#: src/features/comments_filter.php:115 src/features/firewall.php:71
|
175 |
+
#: src/features/hack_protect.php:559 src/features/headers.php:132
|
176 |
+
#: src/features/ips.php:279 src/features/lockdown.php:69
|
177 |
+
#: src/features/login_protect.php:439 src/features/sessions.php:56
|
178 |
+
#: src/features/statistics.php:48 src/features/statistics.php:57
|
179 |
+
#: src/features/user_management.php:216
|
180 |
+
#, php-format
|
181 |
+
msgid "%s/%s Module"
|
182 |
+
msgstr ""
|
183 |
+
|
184 |
+
#: src/features/admin_access_restriction.php:339
|
185 |
+
#: src/features/admin_access_restriction.php:455
|
186 |
+
#: src/features/audit_trail.php:222 src/features/autoupdates.php:167
|
187 |
+
#: src/features/comments_filter.php:115 src/features/firewall.php:71
|
188 |
+
#: src/features/hack_protect.php:559 src/features/headers.php:132
|
189 |
+
#: src/features/ips.php:279 src/features/lockdown.php:69
|
190 |
+
#: src/features/login_protect.php:439 src/features/sessions.php:56
|
191 |
+
#: src/features/statistics.php:48 src/features/statistics.php:57
|
192 |
+
#: src/features/user_management.php:216
|
193 |
msgid "Enable"
|
194 |
msgstr ""
|
195 |
|
196 |
+
#: src/features/admin_access_restriction.php:339
|
197 |
+
#: src/features/audit_trail.php:222 src/features/autoupdates.php:167
|
198 |
+
#: src/features/comments_filter.php:115 src/features/firewall.php:71
|
199 |
+
#: src/features/hack_protect.php:559 src/features/headers.php:132
|
200 |
+
#: src/features/ips.php:279 src/features/lockdown.php:69
|
201 |
+
#: src/features/login_protect.php:439 src/features/sessions.php:56
|
202 |
+
#: src/features/statistics.php:48 src/features/statistics.php:57
|
203 |
+
#: src/features/user_management.php:216
|
204 |
msgid "Disable"
|
205 |
msgstr ""
|
206 |
|
207 |
+
#: src/features/admin_access_restriction.php:343
|
208 |
msgid "Security Admin Restriction Settings"
|
209 |
msgstr ""
|
210 |
|
211 |
+
#: src/features/admin_access_restriction.php:346
|
212 |
+
#: src/features/admin_access_restriction.php:355
|
213 |
+
#: src/features/comments_filter.php:122 src/features/comments_filter.php:141
|
214 |
+
#: src/features/login_protect.php:480 src/features/login_protect.php:499
|
215 |
+
#: src/features/plugin.php:684 src/features/user_management.php:224
|
216 |
+
#: src/features/user_management.php:233 src/features/user_management.php:242
|
217 |
+
#: src/features/user_management.php:251
|
|
|
|
|
|
|
218 |
msgid "Use of this feature is highly recommend."
|
219 |
msgstr ""
|
220 |
|
221 |
+
#: src/features/admin_access_restriction.php:348
|
222 |
msgid "Security Admin Settings"
|
223 |
msgstr ""
|
224 |
|
225 |
+
#: src/features/admin_access_restriction.php:352
|
226 |
msgid "Security Admin Restriction Zones"
|
227 |
msgstr ""
|
228 |
|
229 |
+
#: src/features/admin_access_restriction.php:354
|
230 |
msgid ""
|
231 |
"Restricts access to key WordPress areas for all users not authenticated with "
|
232 |
"the Security Admin Access system."
|
233 |
msgstr ""
|
234 |
|
235 |
+
#: src/features/admin_access_restriction.php:357
|
236 |
msgid "Access Restriction Zones"
|
237 |
msgstr ""
|
238 |
|
239 |
+
#: src/features/admin_access_restriction.php:361
|
240 |
+
msgid "Shield White Label"
|
241 |
+
msgstr ""
|
242 |
+
|
243 |
+
#: src/features/admin_access_restriction.php:364
|
|
|
|
|
|
|
|
|
244 |
#, php-format
|
245 |
+
msgid "Rename and re-brand the %s plugin for your client site installations."
|
246 |
+
msgstr ""
|
247 |
+
|
248 |
+
#: src/features/admin_access_restriction.php:367
|
249 |
+
#: src/features/admin_access_restriction.php:455
|
250 |
+
msgid "White Label"
|
251 |
+
msgstr ""
|
252 |
+
|
253 |
+
#: src/features/admin_access_restriction.php:390
|
254 |
+
#: src/features/audit_trail.php:265 src/features/autoupdates.php:226
|
255 |
+
#: src/features/comments_filter.php:195 src/features/firewall.php:122
|
256 |
+
#: src/features/hack_protect.php:637 src/features/headers.php:173
|
257 |
+
#: src/features/ips.php:318 src/features/lockdown.php:119
|
258 |
+
#: src/features/login_protect.php:532 src/features/plugin.php:721
|
259 |
+
#: src/features/sessions.php:79 src/features/statistics.php:91
|
260 |
+
#: src/features/statistics.php:97 src/features/user_management.php:276
|
261 |
+
#, php-format
|
262 |
+
msgid "Enable %s Module"
|
263 |
msgstr ""
|
264 |
|
265 |
+
#: src/features/admin_access_restriction.php:391
|
266 |
msgid "Enforce Security Admin Access Restriction"
|
267 |
msgstr ""
|
268 |
|
269 |
+
#: src/features/admin_access_restriction.php:392
|
270 |
msgid ""
|
271 |
+
"Enable this with great care and consideration. Ensure that you set a key "
|
272 |
+
"that you have set an access key that you will remember."
|
|
|
273 |
msgstr ""
|
274 |
|
275 |
+
#: src/features/admin_access_restriction.php:396
|
276 |
msgid "Security Admin Access Key"
|
277 |
msgstr ""
|
278 |
|
279 |
+
#: src/features/admin_access_restriction.php:397
|
280 |
msgid "Provide/Update Security Admin Access Key"
|
281 |
msgstr ""
|
282 |
|
283 |
+
#: src/features/admin_access_restriction.php:398
|
284 |
+
#: src/features/admin_access_restriction.php:413
|
285 |
+
#: src/features/admin_access_restriction.php:420
|
286 |
+
#: src/features/admin_access_restriction.php:427
|
287 |
+
#: src/features/admin_access_restriction.php:433
|
288 |
+
#: src/features/admin_access_restriction.php:439
|
289 |
#, php-format
|
290 |
msgid "Careful: %s"
|
291 |
msgstr ""
|
292 |
|
293 |
+
#: src/features/admin_access_restriction.php:398
|
294 |
msgid ""
|
295 |
"If you forget this, you could potentially lock yourself out from using this "
|
296 |
"plugin."
|
297 |
msgstr ""
|
298 |
|
299 |
+
#: src/features/admin_access_restriction.php:399
|
300 |
+
msgid "Security Key Currently Set"
|
301 |
+
msgstr ""
|
302 |
+
|
303 |
+
#: src/features/admin_access_restriction.php:399
|
304 |
+
msgid "Security Key NOT Currently Set"
|
305 |
+
msgstr ""
|
306 |
+
|
307 |
+
#: src/features/admin_access_restriction.php:403
|
308 |
msgid "Security Admin Timeout"
|
309 |
msgstr ""
|
310 |
|
311 |
+
#: src/features/admin_access_restriction.php:404
|
312 |
msgid "Specify An Automatic Timeout Interval For Security Admin Access"
|
313 |
msgstr ""
|
314 |
|
315 |
+
#: src/features/admin_access_restriction.php:405
|
316 |
msgid "This will automatically expire your Security Admin Session."
|
317 |
msgstr ""
|
318 |
|
319 |
+
#: src/features/admin_access_restriction.php:406
|
|
|
|
|
|
|
|
|
320 |
#, php-format
|
321 |
msgid "Default: %s minutes."
|
322 |
msgstr ""
|
323 |
|
324 |
+
#: src/features/admin_access_restriction.php:411
|
325 |
msgid "Pages"
|
326 |
msgstr ""
|
327 |
|
328 |
+
#: src/features/admin_access_restriction.php:412
|
329 |
msgid "Restrict Access To Key WordPress Posts And Pages Actions"
|
330 |
msgstr ""
|
331 |
|
332 |
+
#: src/features/admin_access_restriction.php:413
|
333 |
msgid "This will restrict access to page/post creation, editing and deletion."
|
334 |
msgstr ""
|
335 |
|
336 |
+
#: src/features/admin_access_restriction.php:414
|
337 |
+
#: src/features/admin_access_restriction.php:421
|
338 |
+
#: src/features/admin_access_restriction.php:442 src/features/headers.php:246
|
339 |
+
#: src/features/login_protect.php:481 src/features/login_protect.php:490
|
340 |
+
#: src/features/login_protect.php:508 src/features/login_protect.php:575
|
341 |
#, php-format
|
342 |
msgid "Note: %s"
|
343 |
msgstr ""
|
344 |
|
345 |
+
#: src/features/admin_access_restriction.php:414
|
346 |
+
#: src/features/admin_access_restriction.php:421
|
347 |
+
#: src/features/admin_access_restriction.php:444
|
348 |
#, php-format
|
349 |
msgid "Selecting \"%s\" will also restrict all other options."
|
350 |
msgstr ""
|
351 |
|
352 |
+
#: src/features/admin_access_restriction.php:414
|
353 |
msgid "Edit"
|
354 |
msgstr ""
|
355 |
|
356 |
+
#: src/features/admin_access_restriction.php:418
|
357 |
+
#: src/features/audit_trail.php:182 src/features/audit_trail.php:289
|
358 |
+
#: src/features/audit_trail.php:290 src/features/autoupdates.php:257
|
359 |
msgid "Plugins"
|
360 |
msgstr ""
|
361 |
|
362 |
+
#: src/features/admin_access_restriction.php:419
|
363 |
msgid "Restrict Access To Key WordPress Plugin Actions"
|
364 |
msgstr ""
|
365 |
|
366 |
+
#: src/features/admin_access_restriction.php:420
|
367 |
msgid ""
|
368 |
"This will restrict access to plugin installation, update, activation and "
|
369 |
"deletion."
|
370 |
msgstr ""
|
371 |
|
372 |
+
#: src/features/admin_access_restriction.php:421
|
373 |
+
#: src/features/admin_access_restriction.php:447
|
374 |
msgid "Activate"
|
375 |
msgstr ""
|
376 |
|
377 |
+
#: src/features/admin_access_restriction.php:425
|
378 |
msgid "WordPress Options"
|
379 |
msgstr ""
|
380 |
|
381 |
+
#: src/features/admin_access_restriction.php:426
|
382 |
msgid "Restrict Access To Certain WordPress Admin Options"
|
383 |
msgstr ""
|
384 |
|
385 |
+
#: src/features/admin_access_restriction.php:427
|
386 |
msgid ""
|
387 |
"This will restrict the ability of WordPress administrators from changing key "
|
388 |
"WordPress settings."
|
389 |
msgstr ""
|
390 |
|
391 |
+
#: src/features/admin_access_restriction.php:431
|
392 |
msgid "Admin Users"
|
393 |
msgstr ""
|
394 |
|
395 |
+
#: src/features/admin_access_restriction.php:432
|
396 |
msgid "Restrict Access To Create/Delete/Modify Other Admin Users"
|
397 |
msgstr ""
|
398 |
|
399 |
+
#: src/features/admin_access_restriction.php:433
|
400 |
msgid ""
|
401 |
"This will restrict the ability of WordPress administrators from creating, "
|
402 |
"modifying or promoting other administrators."
|
403 |
msgstr ""
|
404 |
|
405 |
+
#: src/features/admin_access_restriction.php:437
|
406 |
+
#: src/features/audit_trail.php:183 src/features/audit_trail.php:295
|
407 |
+
#: src/features/audit_trail.php:296 src/features/autoupdates.php:269
|
408 |
msgid "Themes"
|
409 |
msgstr ""
|
410 |
|
411 |
+
#: src/features/admin_access_restriction.php:438
|
412 |
msgid "Restrict Access To WordPress Theme Actions"
|
413 |
msgstr ""
|
414 |
|
415 |
+
#: src/features/admin_access_restriction.php:439
|
416 |
msgid ""
|
417 |
"This will restrict access to theme installation, update, activation and "
|
418 |
"deletion."
|
419 |
msgstr ""
|
420 |
|
421 |
+
#: src/features/admin_access_restriction.php:446
|
422 |
#, php-format
|
423 |
msgid "%s and %s"
|
424 |
msgstr ""
|
425 |
|
426 |
+
#: src/features/admin_access_restriction.php:448
|
427 |
msgid "Edit Theme Options"
|
428 |
msgstr ""
|
429 |
|
430 |
+
#: src/features/admin_access_restriction.php:456
|
431 |
+
msgid "Activate Your White Label Settings"
|
432 |
+
msgstr ""
|
433 |
+
|
434 |
+
#: src/features/admin_access_restriction.php:457
|
435 |
+
msgid "Turn on/off the application of your White Label settings."
|
436 |
+
msgstr ""
|
437 |
+
|
438 |
+
#: src/features/admin_access_restriction.php:460
|
439 |
+
msgid "Hide Updates"
|
440 |
+
msgstr ""
|
441 |
+
|
442 |
+
#: src/features/admin_access_restriction.php:461
|
443 |
+
msgid "Hide Plugin Updates From Non-Security Admins"
|
444 |
+
msgstr ""
|
445 |
+
|
446 |
+
#: src/features/admin_access_restriction.php:462
|
447 |
+
msgid "Do not show the availability of updates to non-security administrators."
|
448 |
+
msgstr ""
|
449 |
+
|
450 |
+
#: src/features/admin_access_restriction.php:465
|
451 |
+
#: src/features/admin_access_restriction.php:472
|
452 |
+
msgid "Plugin Name"
|
453 |
+
msgstr ""
|
454 |
+
|
455 |
+
#: src/features/admin_access_restriction.php:466
|
456 |
+
msgid "The Name Of The Plugin"
|
457 |
+
msgstr ""
|
458 |
+
|
459 |
+
#: src/features/admin_access_restriction.php:467
|
460 |
+
msgid "The name of the plugin that will be displayed to your site users."
|
461 |
+
msgstr ""
|
462 |
+
|
463 |
+
#: src/features/admin_access_restriction.php:470
|
464 |
+
msgid "Menu Title"
|
465 |
+
msgstr ""
|
466 |
+
|
467 |
+
#: src/features/admin_access_restriction.php:471
|
468 |
+
msgid "The Main Menu Title Of The Plugin"
|
469 |
+
msgstr ""
|
470 |
+
|
471 |
+
#: src/features/admin_access_restriction.php:472
|
472 |
+
#, php-format
|
473 |
+
msgid ""
|
474 |
+
"The Main Menu Title Of The Plugin. If left empty, the \"%s\" will be used."
|
475 |
+
msgstr ""
|
476 |
+
|
477 |
+
#: src/features/admin_access_restriction.php:475
|
478 |
+
msgid "Description"
|
479 |
+
msgstr ""
|
480 |
+
|
481 |
+
#: src/features/admin_access_restriction.php:476
|
482 |
+
msgid "The Description Of The Plugin"
|
483 |
+
msgstr ""
|
484 |
+
|
485 |
+
#: src/features/admin_access_restriction.php:477
|
486 |
+
msgid "The description of the plugin displayed on the plugins page."
|
487 |
+
msgstr ""
|
488 |
+
|
489 |
+
#: src/features/admin_access_restriction.php:480
|
490 |
+
msgid "Home URL"
|
491 |
+
msgstr ""
|
492 |
+
|
493 |
+
#: src/features/admin_access_restriction.php:481
|
494 |
+
msgid "Plugin Home Page URL"
|
495 |
+
msgstr ""
|
496 |
+
|
497 |
+
#: src/features/admin_access_restriction.php:482
|
498 |
+
msgid ""
|
499 |
+
"When a user clicks the home link for this plugin, this is where they'll be "
|
500 |
+
"directed."
|
501 |
+
msgstr ""
|
502 |
+
|
503 |
+
#: src/features/admin_access_restriction.php:485
|
504 |
+
msgid "Icon URL"
|
505 |
+
msgstr ""
|
506 |
+
|
507 |
+
#: src/features/admin_access_restriction.php:486
|
508 |
+
msgid "Plugin Icon URL"
|
509 |
+
msgstr ""
|
510 |
+
|
511 |
+
#: src/features/admin_access_restriction.php:487
|
512 |
+
msgid "The URL of the icon displayed in the menu and in the admin pages."
|
513 |
+
msgstr ""
|
514 |
+
|
515 |
+
#: src/features/audit_trail.php:134
|
516 |
+
msgid "Your IP"
|
517 |
+
msgstr ""
|
518 |
+
|
519 |
+
#: src/features/audit_trail.php:165 src/features/audit_trail.php:178
|
520 |
+
#: src/features/license.php:80 src/features/plugin.php:866
|
521 |
+
msgid "Audit Trail Viewer"
|
522 |
+
msgstr ""
|
523 |
+
|
524 |
+
#: src/features/audit_trail.php:179 src/features/license.php:81
|
525 |
+
msgid "Review audit trail logs "
|
526 |
+
msgstr ""
|
527 |
+
|
528 |
+
#: src/features/audit_trail.php:181
|
529 |
msgid "Users"
|
530 |
msgstr ""
|
531 |
|
532 |
+
#: src/features/audit_trail.php:184
|
533 |
msgid "WordPress"
|
534 |
msgstr ""
|
535 |
|
536 |
+
#: src/features/audit_trail.php:185
|
537 |
msgid "Posts"
|
538 |
msgstr ""
|
539 |
|
540 |
+
#: src/features/audit_trail.php:186 src/features/audit_trail.php:313
|
541 |
+
#: src/features/audit_trail.php:314
|
542 |
msgid "Emails"
|
543 |
msgstr ""
|
544 |
|
545 |
+
#: src/features/audit_trail.php:187
|
546 |
msgid "Time"
|
547 |
msgstr ""
|
548 |
|
549 |
+
#: src/features/audit_trail.php:188
|
550 |
msgid "Event"
|
551 |
msgstr ""
|
552 |
|
553 |
+
#: src/features/audit_trail.php:189
|
554 |
msgid "Message"
|
555 |
msgstr ""
|
556 |
|
557 |
+
#: src/features/audit_trail.php:190 src/features/user_management.php:113
|
558 |
msgid "Username"
|
559 |
msgstr ""
|
560 |
|
561 |
+
#: src/features/audit_trail.php:191
|
562 |
msgid "Category"
|
563 |
msgstr ""
|
564 |
|
565 |
+
#: src/features/audit_trail.php:192 src/features/plugin.php:853
|
566 |
msgid "IP Address"
|
567 |
msgstr ""
|
568 |
|
569 |
+
#: src/features/audit_trail.php:193
|
570 |
msgid "You"
|
571 |
msgstr ""
|
572 |
|
573 |
+
#: src/features/audit_trail.php:194
|
574 |
msgid "There are currently no audit entries this is section."
|
575 |
msgstr ""
|
576 |
|
577 |
+
#: src/features/audit_trail.php:219
|
578 |
msgid ""
|
579 |
"The Audit Trail is designed so you can look back on events and analyse what "
|
580 |
"happened and what may have gone wrong."
|
581 |
msgstr ""
|
582 |
|
583 |
+
#: src/features/audit_trail.php:220 src/features/plugin.php:864
|
584 |
+
#: src/wizards/plugin.php:438 src/wizards/plugin.php:443
|
585 |
+
msgid "Audit Trail"
|
586 |
+
msgstr ""
|
587 |
+
|
588 |
+
#: src/features/audit_trail.php:226
|
589 |
msgid "Audit Trail Options"
|
590 |
msgstr ""
|
591 |
|
592 |
+
#: src/features/audit_trail.php:228
|
593 |
msgid "Provides finer control over the audit trail itself."
|
594 |
msgstr ""
|
595 |
|
596 |
+
#: src/features/audit_trail.php:229 src/features/audit_trail.php:238
|
597 |
msgid "These settings are dependent on your requirements."
|
598 |
msgstr ""
|
599 |
|
600 |
+
#: src/features/audit_trail.php:231 src/features/base_wpsf.php:107
|
601 |
+
#: src/features/base_wpsf.php:146
|
602 |
msgid "Options"
|
603 |
msgstr ""
|
604 |
|
605 |
+
#: src/features/audit_trail.php:235
|
606 |
msgid "Enable Audit Contexts"
|
607 |
msgstr ""
|
608 |
|
609 |
+
#: src/features/audit_trail.php:237
|
610 |
msgid "Specify which types of actions on your site are logged."
|
611 |
msgstr ""
|
612 |
|
613 |
+
#: src/features/audit_trail.php:240
|
614 |
msgid "Audit Contexts"
|
615 |
msgstr ""
|
616 |
|
617 |
+
#: src/features/audit_trail.php:266 src/features/autoupdates.php:227
|
618 |
+
#: src/features/firewall.php:123 src/features/hack_protect.php:638
|
619 |
+
#: src/features/headers.php:174 src/features/ips.php:319
|
620 |
+
#: src/features/lockdown.php:120 src/features/login_protect.php:533
|
621 |
+
#: src/features/sessions.php:80 src/features/statistics.php:92
|
622 |
+
#: src/features/statistics.php:98 src/features/user_management.php:277
|
623 |
#, php-format
|
624 |
+
msgid "Enable (or Disable) The %s Module"
|
625 |
msgstr ""
|
626 |
|
627 |
+
#: src/features/audit_trail.php:267 src/features/autoupdates.php:228
|
628 |
+
#: src/features/comments_filter.php:197 src/features/firewall.php:124
|
629 |
+
#: src/features/hack_protect.php:639 src/features/headers.php:175
|
630 |
+
#: src/features/ips.php:320 src/features/lockdown.php:121
|
631 |
+
#: src/features/login_protect.php:534 src/features/sessions.php:81
|
632 |
+
#: src/features/statistics.php:93 src/features/statistics.php:99
|
633 |
+
#: src/features/user_management.php:278
|
634 |
#, php-format
|
635 |
+
msgid "Un-Checking this option will completely disable the %s module."
|
636 |
+
msgstr ""
|
637 |
+
|
638 |
+
#: src/features/audit_trail.php:271
|
639 |
+
msgid "Max Trail Length"
|
640 |
+
msgstr ""
|
641 |
+
|
642 |
+
#: src/features/audit_trail.php:272
|
643 |
+
msgid "Maximum Audit Trail Length To Keep"
|
644 |
+
msgstr ""
|
645 |
+
|
646 |
+
#: src/features/audit_trail.php:273
|
647 |
msgid ""
|
648 |
+
"Automatically remove any audit trail entries when this limit is exceeded."
|
|
|
649 |
msgstr ""
|
650 |
|
651 |
+
#: src/features/audit_trail.php:277
|
652 |
msgid "Auto Clean"
|
653 |
msgstr ""
|
654 |
|
655 |
+
#: src/features/audit_trail.php:278
|
656 |
msgid "Enable Audit Auto Cleaning"
|
657 |
msgstr ""
|
658 |
|
659 |
+
#: src/features/audit_trail.php:279
|
660 |
msgid ""
|
661 |
"Events older than the number of days specified will be automatically cleaned "
|
662 |
"from the database."
|
663 |
msgstr ""
|
664 |
|
665 |
+
#: src/features/audit_trail.php:283 src/features/audit_trail.php:284
|
666 |
+
#: src/features/audit_trail.php:285
|
667 |
msgid "Users And Logins"
|
668 |
msgstr ""
|
669 |
|
670 |
+
#: src/features/audit_trail.php:284 src/features/audit_trail.php:290
|
671 |
+
#: src/features/audit_trail.php:296 src/features/audit_trail.php:302
|
672 |
+
#: src/features/audit_trail.php:308 src/features/audit_trail.php:314
|
673 |
+
#: src/features/audit_trail.php:320
|
674 |
#, php-format
|
675 |
msgid "Enable Audit Context - %s"
|
676 |
msgstr ""
|
677 |
|
678 |
+
#: src/features/audit_trail.php:285 src/features/audit_trail.php:291
|
679 |
+
#: src/features/audit_trail.php:297 src/features/audit_trail.php:303
|
680 |
+
#: src/features/audit_trail.php:309 src/features/audit_trail.php:315
|
681 |
+
#: src/features/audit_trail.php:321
|
682 |
#, php-format
|
683 |
msgid ""
|
684 |
"When this context is enabled, the audit trail will track activity relating "
|
685 |
"to: %s"
|
686 |
msgstr ""
|
687 |
|
688 |
+
#: src/features/audit_trail.php:291
|
689 |
msgid "WordPress Plugins"
|
690 |
msgstr ""
|
691 |
|
692 |
+
#: src/features/audit_trail.php:297
|
693 |
msgid "WordPress Themes"
|
694 |
msgstr ""
|
695 |
|
696 |
+
#: src/features/audit_trail.php:301 src/features/audit_trail.php:302
|
697 |
msgid "Posts And Pages"
|
698 |
msgstr ""
|
699 |
|
700 |
+
#: src/features/audit_trail.php:303
|
701 |
msgid "Editing and publishing of posts and pages"
|
702 |
msgstr ""
|
703 |
|
704 |
+
#: src/features/audit_trail.php:307 src/features/audit_trail.php:308
|
705 |
msgid "WordPress And Settings"
|
706 |
msgstr ""
|
707 |
|
708 |
+
#: src/features/audit_trail.php:309
|
709 |
msgid "WordPress upgrades and changes to particular WordPress settings"
|
710 |
msgstr ""
|
711 |
|
712 |
+
#: src/features/audit_trail.php:315
|
713 |
msgid "Email Sending"
|
714 |
msgstr ""
|
715 |
|
716 |
+
#: src/features/autoupdates.php:116
|
717 |
+
#, php-format
|
718 |
+
msgid "Plugin \"%s\" will %s."
|
719 |
+
msgstr ""
|
720 |
+
|
721 |
+
#: src/features/autoupdates.php:119
|
722 |
+
msgid "update automatically"
|
723 |
+
msgstr ""
|
724 |
+
|
725 |
+
#: src/features/autoupdates.php:119
|
726 |
+
msgid "not update automatically"
|
727 |
+
msgstr ""
|
728 |
+
|
729 |
+
#: src/features/autoupdates.php:124
|
730 |
+
msgid "Failed to change the update status of the plugin."
|
731 |
+
msgstr ""
|
732 |
+
|
733 |
+
#: src/features/autoupdates.php:128
|
734 |
+
msgid "Nonce security checking failed. Please reload."
|
735 |
+
msgstr ""
|
736 |
+
|
737 |
+
#: src/features/autoupdates.php:164
|
738 |
msgid ""
|
739 |
"Automatic Updates lets you manage the WordPress automatic updates engine so "
|
740 |
"you choose what exactly gets updated automatically."
|
741 |
msgstr ""
|
742 |
|
743 |
+
#: src/features/autoupdates.php:165 src/features/hack_protect.php:661
|
744 |
+
#: src/features/plugin.php:867
|
745 |
+
msgid "Automatic Updates"
|
746 |
+
msgstr ""
|
747 |
+
|
748 |
+
#: src/features/autoupdates.php:171
|
749 |
msgid "Disable ALL WordPress Automatic Updates"
|
750 |
msgstr ""
|
751 |
|
752 |
+
#: src/features/autoupdates.php:173
|
753 |
msgid ""
|
754 |
"If you never want WordPress to automatically update anything on your site, "
|
755 |
"turn on this option."
|
756 |
msgstr ""
|
757 |
|
758 |
+
#: src/features/autoupdates.php:174
|
759 |
msgid "Do not turn on this option unless you really need to block updates."
|
760 |
msgstr ""
|
761 |
|
762 |
+
#: src/features/autoupdates.php:176
|
763 |
msgid "Turn Off"
|
764 |
msgstr ""
|
765 |
|
766 |
+
#: src/features/autoupdates.php:180
|
767 |
msgid "Automatic Plugin Self-Update"
|
768 |
msgstr ""
|
769 |
|
770 |
+
#: src/features/autoupdates.php:182
|
771 |
#, php-format
|
772 |
msgid ""
|
773 |
"Allows the %s plugin to automatically update itself when an update is "
|
774 |
"available."
|
775 |
msgstr ""
|
776 |
|
777 |
+
#: src/features/autoupdates.php:184
|
778 |
msgid "Keep this option turned on."
|
779 |
msgstr ""
|
780 |
|
781 |
+
#: src/features/autoupdates.php:186
|
782 |
msgid "Self-Update"
|
783 |
msgstr ""
|
784 |
|
785 |
+
#: src/features/autoupdates.php:190
|
786 |
msgid "Automatic Updates For WordPress Components"
|
787 |
msgstr ""
|
788 |
|
789 |
+
#: src/features/autoupdates.php:192
|
790 |
msgid "Control how automatic updates for each WordPress component is handled."
|
791 |
msgstr ""
|
792 |
|
793 |
+
#: src/features/autoupdates.php:193
|
794 |
msgid "You should at least allow minor updates for the WordPress core."
|
795 |
msgstr ""
|
796 |
|
797 |
+
#: src/features/autoupdates.php:195
|
798 |
msgid "WordPress Components"
|
799 |
msgstr ""
|
800 |
|
801 |
+
#: src/features/autoupdates.php:199 src/features/autoupdates.php:200
|
802 |
+
msgid "Auto-Update Options"
|
803 |
msgstr ""
|
804 |
|
805 |
+
#: src/features/autoupdates.php:202
|
806 |
+
msgid "Make adjustments to how automatic updates are handled on your site."
|
807 |
msgstr ""
|
808 |
|
809 |
+
#: src/features/autoupdates.php:232
|
|
|
|
|
|
|
|
|
810 |
msgid "Disable All"
|
811 |
msgstr ""
|
812 |
|
813 |
+
#: src/features/autoupdates.php:233
|
814 |
msgid "Completely Disable WordPress Automatic Updates"
|
815 |
msgstr ""
|
816 |
|
817 |
+
#: src/features/autoupdates.php:234
|
818 |
msgid ""
|
819 |
"When selected, regardless of any other settings, all WordPress automatic "
|
820 |
"updates on this site will be completely disabled!"
|
821 |
msgstr ""
|
822 |
|
823 |
+
#: src/features/autoupdates.php:238
|
824 |
msgid "Auto Update Plugin"
|
825 |
msgstr ""
|
826 |
|
827 |
+
#: src/features/autoupdates.php:239
|
828 |
msgid "Always Automatically Update This Plugin"
|
829 |
msgstr ""
|
830 |
|
831 |
+
#: src/features/autoupdates.php:240
|
832 |
#, php-format
|
833 |
msgid ""
|
834 |
"Regardless of any component settings below, automatically update the \"%s\" "
|
835 |
"plugin."
|
836 |
msgstr ""
|
837 |
|
838 |
+
#: src/features/autoupdates.php:245
|
839 |
msgid "WordPress Core Updates"
|
840 |
msgstr ""
|
841 |
|
842 |
+
#: src/features/autoupdates.php:246
|
843 |
msgid "Decide how the WordPress Core will automatically update, if at all"
|
844 |
msgstr ""
|
845 |
|
846 |
+
#: src/features/autoupdates.php:247
|
847 |
msgid ""
|
848 |
"At least automatically upgrading minor versions is recommended (and is the "
|
849 |
"WordPress default)."
|
850 |
msgstr ""
|
851 |
|
852 |
+
#: src/features/autoupdates.php:251
|
853 |
msgid "Translations"
|
854 |
msgstr ""
|
855 |
|
856 |
+
#: src/features/autoupdates.php:252
|
857 |
msgid "Automatically Update Translations"
|
858 |
msgstr ""
|
859 |
|
860 |
+
#: src/features/autoupdates.php:253
|
861 |
msgid ""
|
862 |
"Note: Automatic updates for translations are enabled on WordPress by default."
|
863 |
msgstr ""
|
864 |
|
865 |
+
#: src/features/autoupdates.php:258
|
866 |
+
msgid "Automatically Update All Plugins"
|
867 |
msgstr ""
|
868 |
|
869 |
+
#: src/features/autoupdates.php:259
|
870 |
msgid ""
|
871 |
"Note: Automatic updates for plugins are disabled on WordPress by default."
|
872 |
msgstr ""
|
873 |
|
874 |
+
#: src/features/autoupdates.php:263
|
875 |
+
msgid "Individually Select Plugins"
|
876 |
+
msgstr ""
|
877 |
+
|
878 |
+
#: src/features/autoupdates.php:264
|
879 |
+
msgid "Select Individual Plugins To Automatically Update"
|
880 |
+
msgstr ""
|
881 |
+
|
882 |
+
#: src/features/autoupdates.php:265
|
883 |
+
msgid ""
|
884 |
+
"Turning this on will provide an option on the plugins page to select whether "
|
885 |
+
"a plugin is automatically updated."
|
886 |
+
msgstr ""
|
887 |
+
|
888 |
+
#: src/features/autoupdates.php:270
|
889 |
msgid "Automatically Update Themes"
|
890 |
msgstr ""
|
891 |
|
892 |
+
#: src/features/autoupdates.php:271
|
893 |
msgid ""
|
894 |
"Note: Automatic updates for themes are disabled on WordPress by default."
|
895 |
msgstr ""
|
896 |
|
897 |
+
#: src/features/autoupdates.php:275
|
898 |
msgid "Ignore Version Control"
|
899 |
msgstr ""
|
900 |
|
901 |
+
#: src/features/autoupdates.php:276
|
902 |
msgid "Ignore Version Control Systems Such As GIT and SVN"
|
903 |
msgstr ""
|
904 |
|
905 |
+
#: src/features/autoupdates.php:277
|
906 |
msgid ""
|
907 |
"If you use SVN or GIT and WordPress detects it, automatic updates are "
|
908 |
"disabled by default. Check this box to ignore version control systems and "
|
909 |
"allow automatic updates."
|
910 |
msgstr ""
|
911 |
|
912 |
+
#: src/features/autoupdates.php:281
|
913 |
msgid "Send Report Email"
|
914 |
msgstr ""
|
915 |
|
916 |
+
#: src/features/autoupdates.php:282
|
917 |
msgid "Send email notices after automatic updates"
|
918 |
msgstr ""
|
919 |
|
920 |
+
#: src/features/autoupdates.php:283
|
921 |
msgid ""
|
922 |
"You can turn on/off email notices from automatic updates by un/checking this "
|
923 |
"box."
|
924 |
msgstr ""
|
925 |
|
926 |
+
#: src/features/autoupdates.php:287
|
927 |
msgid "Report Email Address"
|
928 |
msgstr ""
|
929 |
|
930 |
+
#: src/features/autoupdates.php:288
|
931 |
msgid "Where to send upgrade notification reports"
|
932 |
msgstr ""
|
933 |
|
934 |
+
#: src/features/autoupdates.php:289
|
935 |
msgid "If this is empty, it will default to the Site Admin email address"
|
936 |
msgstr ""
|
937 |
|
938 |
+
#: src/features/autoupdates.php:293
|
939 |
+
msgid "Update Delay"
|
940 |
msgstr ""
|
941 |
|
942 |
+
#: src/features/autoupdates.php:294
|
943 |
+
msgid "Delay Automatic Updates For Period Of Stability"
|
944 |
msgstr ""
|
945 |
|
946 |
+
#: src/features/autoupdates.php:295
|
947 |
+
msgid ""
|
948 |
+
"Shield will delay upgrades until the new update has been available for the "
|
949 |
+
"set number of days."
|
950 |
msgstr ""
|
951 |
|
952 |
+
#: src/features/autoupdates.php:296
|
953 |
+
msgid ""
|
954 |
+
"This helps ensure updates are more stable before they're automatically "
|
955 |
+
"applied to your site."
|
|
|
956 |
msgstr ""
|
957 |
|
958 |
+
#: src/features/base.php:946
|
959 |
+
msgid "Unfortunately your PHP version is too low to support this feature."
|
960 |
msgstr ""
|
961 |
|
962 |
+
#: src/features/base.php:1086
|
963 |
+
#, php-format
|
964 |
+
msgid "Failed up to update %s plugin options."
|
965 |
msgstr ""
|
966 |
|
967 |
+
#: src/features/base.php:1091 src/features/base.php:1153
|
968 |
+
#, php-format
|
969 |
+
msgid "%s Plugin options updated successfully."
|
970 |
msgstr ""
|
971 |
|
972 |
+
#: src/features/base.php:1095
|
973 |
+
#, php-format
|
974 |
+
msgid ""
|
975 |
+
"Failed to update %s options as you are not authenticated with %s as a "
|
976 |
+
"Security Admin."
|
977 |
msgstr ""
|
978 |
|
979 |
+
#: src/features/base_wpsf.php:101 src/features/base_wpsf.php:140
|
980 |
+
msgid "Settings"
|
|
|
|
|
981 |
msgstr ""
|
982 |
|
983 |
+
#: src/features/base_wpsf.php:102 src/features/base_wpsf.php:141
|
984 |
+
msgid "On"
|
985 |
msgstr ""
|
986 |
|
987 |
+
#: src/features/base_wpsf.php:103 src/features/base_wpsf.php:142
|
988 |
+
msgid "Off"
|
989 |
msgstr ""
|
990 |
|
991 |
+
#: src/features/base_wpsf.php:104 src/features/base_wpsf.php:143
|
992 |
+
#: src/processors/hackprotect_corechecksumscan.php:332
|
993 |
+
#: src/processors/hackprotect_pluginvulnerabilities.php:155
|
994 |
+
#: src/processors/hackprotect_wpvulnscan.php:147
|
995 |
+
#: src/processors/loginprotect_intent.php:265
|
996 |
+
msgid "More Info"
|
997 |
msgstr ""
|
998 |
|
999 |
+
#: src/features/base_wpsf.php:105 src/features/base_wpsf.php:144
|
1000 |
+
msgid "Blog"
|
1001 |
msgstr ""
|
1002 |
|
1003 |
+
#: src/features/base_wpsf.php:106 src/features/base_wpsf.php:145
|
1004 |
+
msgid "Save All Settings"
|
|
|
1005 |
msgstr ""
|
1006 |
|
1007 |
+
#: src/features/base_wpsf.php:108 src/features/base_wpsf.php:147
|
1008 |
+
msgid "Configure Module"
|
1009 |
msgstr ""
|
1010 |
|
1011 |
+
#: src/features/base_wpsf.php:109 src/features/base_wpsf.php:148
|
1012 |
+
msgid "Actions and Info"
|
|
|
|
|
|
|
1013 |
msgstr ""
|
1014 |
|
1015 |
+
#: src/features/base_wpsf.php:110 src/features/base_wpsf.php:149
|
1016 |
+
msgid "Perform actions for this module"
|
1017 |
msgstr ""
|
1018 |
|
1019 |
+
#: src/features/base_wpsf.php:111 src/features/base_wpsf.php:150
|
1020 |
+
msgid "Help"
|
|
|
1021 |
msgstr ""
|
1022 |
|
1023 |
+
#: src/features/base_wpsf.php:112 src/features/base_wpsf.php:151
|
1024 |
+
msgid "Learn More"
|
1025 |
msgstr ""
|
1026 |
|
1027 |
+
#: src/features/base_wpsf.php:114 src/features/base_wpsf.php:153
|
1028 |
+
msgid "Plugin Access Restricted"
|
|
|
1029 |
msgstr ""
|
1030 |
|
1031 |
+
#: src/features/base_wpsf.php:115 src/features/base_wpsf.php:154
|
1032 |
+
msgid ""
|
1033 |
+
"This security plugin is restricted to administrators with the Security "
|
1034 |
+
"Access Key."
|
1035 |
msgstr ""
|
1036 |
|
1037 |
+
#: src/features/base_wpsf.php:116 src/features/base_wpsf.php:155
|
1038 |
+
msgid "Please provide the Security Access Key to manage this plugin."
|
1039 |
+
msgstr ""
|
1040 |
+
|
1041 |
+
#: src/features/base_wpsf.php:117 src/features/base_wpsf.php:156
|
1042 |
+
msgid "To manage this plugin you must enter the access key."
|
1043 |
+
msgstr ""
|
1044 |
+
|
1045 |
+
#: src/features/base_wpsf.php:118 src/features/base_wpsf.php:157
|
1046 |
+
msgid "Enter Access Key"
|
1047 |
+
msgstr ""
|
1048 |
+
|
1049 |
+
#: src/features/base_wpsf.php:119 src/features/base_wpsf.php:158
|
1050 |
+
msgid "Submit Security Admin Key"
|
1051 |
+
msgstr ""
|
1052 |
+
|
1053 |
+
#: src/features/base_wpsf.php:120 src/features/base_wpsf.php:159
|
1054 |
+
msgid "Forgotten Key"
|
1055 |
+
msgstr ""
|
1056 |
+
|
1057 |
+
#: src/features/base_wpsf.php:166
|
1058 |
+
msgid "Nonce security checking failed - the nonce value was empty."
|
1059 |
+
msgstr ""
|
1060 |
+
|
1061 |
+
#: src/features/base_wpsf.php:167
|
1062 |
+
#, php-format
|
1063 |
+
msgid "Nonce security checking failed - the nonce supplied was \"%s\"."
|
1064 |
+
msgstr ""
|
1065 |
+
|
1066 |
+
#: src/features/base_wpsf.php:218 src/features/base_wpsf.php:219
|
1067 |
+
msgid "User Messages"
|
1068 |
+
msgstr ""
|
1069 |
+
|
1070 |
+
#: src/features/base_wpsf.php:221
|
1071 |
+
msgid "Customize the messages displayed to the user."
|
1072 |
+
msgstr ""
|
1073 |
+
|
1074 |
+
#: src/features/base_wpsf.php:222
|
1075 |
+
msgid ""
|
1076 |
+
"Use this section if you need to communicate to the user in a particular "
|
1077 |
+
"manner."
|
1078 |
+
msgstr ""
|
1079 |
+
|
1080 |
+
#: src/features/base_wpsf.php:223
|
1081 |
+
#, php-format
|
1082 |
+
msgid "Hint - %s"
|
1083 |
+
msgstr ""
|
1084 |
+
|
1085 |
+
#: src/features/base_wpsf.php:223
|
1086 |
+
#, php-format
|
1087 |
+
msgid "To reset any message to its default, enter the text exactly: %s"
|
1088 |
+
msgstr ""
|
1089 |
+
|
1090 |
+
#: src/features/comments_filter.php:51
|
1091 |
+
msgid "I'm not a spammer."
|
1092 |
+
msgstr ""
|
1093 |
+
|
1094 |
+
#: src/features/comments_filter.php:54
|
1095 |
+
msgid "Please check the box to confirm you're not a spammer."
|
1096 |
+
msgstr ""
|
1097 |
+
|
1098 |
+
#: src/features/comments_filter.php:57
|
1099 |
+
#, php-format
|
1100 |
+
msgid "Please wait %s seconds before posting your comment."
|
1101 |
msgstr ""
|
1102 |
|
1103 |
#: src/features/comments_filter.php:60
|
1104 |
+
msgid "Please reload this page to post a comment."
|
1105 |
msgstr ""
|
1106 |
|
1107 |
+
#: src/features/comments_filter.php:110
|
1108 |
+
msgid "Comments SPAM Protection"
|
1109 |
+
msgstr ""
|
1110 |
+
|
1111 |
+
#: src/features/comments_filter.php:112
|
1112 |
+
#, php-format
|
1113 |
msgid ""
|
1114 |
+
"The Comments Filter can block 100% of automated spam bots and also offer the "
|
1115 |
+
"option to analyse human-generated spam."
|
1116 |
msgstr ""
|
1117 |
|
1118 |
+
#: src/features/comments_filter.php:113
|
1119 |
+
msgid "Comments Filter"
|
1120 |
+
msgstr ""
|
1121 |
+
|
1122 |
+
#: src/features/comments_filter.php:119
|
1123 |
+
#, php-format
|
1124 |
+
msgid "%s Comment SPAM Protection"
|
1125 |
+
msgstr ""
|
1126 |
+
|
1127 |
+
#: src/features/comments_filter.php:119
|
1128 |
+
msgid "Automatic Bot"
|
1129 |
+
msgstr ""
|
1130 |
+
|
1131 |
+
#: src/features/comments_filter.php:121
|
1132 |
+
#, php-format
|
1133 |
+
msgid "Blocks 100% of all automated bot-generated comment SPAM."
|
1134 |
+
msgstr ""
|
1135 |
+
|
1136 |
+
#: src/features/comments_filter.php:124
|
1137 |
+
msgid "Bot SPAM"
|
1138 |
msgstr ""
|
1139 |
|
1140 |
+
#: src/features/comments_filter.php:131
|
1141 |
+
msgid "Adds Google reCAPTCHA to the Comment Forms."
|
1142 |
msgstr ""
|
1143 |
|
1144 |
+
#: src/features/comments_filter.php:132 src/features/login_protect.php:451
|
1145 |
+
msgid "Keep this turned on."
|
1146 |
+
msgstr ""
|
1147 |
+
|
1148 |
+
#: src/features/comments_filter.php:133 src/features/hack_protect.php:605
|
1149 |
+
#: src/features/login_protect.php:452 src/features/plugin.php:685
|
1150 |
+
#: src/features/user_management.php:225
|
1151 |
+
#, php-format
|
1152 |
+
msgid "Note - %s"
|
1153 |
+
msgstr ""
|
1154 |
+
|
1155 |
+
#: src/features/comments_filter.php:133 src/features/login_protect.php:452
|
1156 |
+
msgid ""
|
1157 |
+
"You will need to register for Google reCAPTCHA keys and store them in the "
|
1158 |
+
"Shield 'Dashboard' settings."
|
1159 |
+
msgstr ""
|
1160 |
+
|
1161 |
+
#: src/features/comments_filter.php:138
|
1162 |
+
#, php-format
|
1163 |
+
msgid "%s Comment SPAM Protection Filter"
|
1164 |
+
msgstr ""
|
1165 |
+
|
1166 |
+
#: src/features/comments_filter.php:138
|
1167 |
+
msgid "Human"
|
1168 |
+
msgstr ""
|
1169 |
+
|
1170 |
+
#: src/features/comments_filter.php:140
|
1171 |
+
msgid "Uses a 3rd party SPAM dictionary to detect human-based comment SPAM."
|
1172 |
+
msgstr ""
|
1173 |
+
|
1174 |
+
#: src/features/comments_filter.php:142
|
1175 |
msgid ""
|
1176 |
+
"This tool, unlike other SPAM tools such as Akismet, will not send your "
|
1177 |
+
"comment data to 3rd party services for analysis."
|
1178 |
msgstr ""
|
1179 |
|
1180 |
+
#: src/features/comments_filter.php:144
|
1181 |
+
msgid "Human SPAM"
|
1182 |
msgstr ""
|
1183 |
|
1184 |
+
#: src/features/comments_filter.php:196
|
1185 |
+
msgid "Enable (or Disable) The Comment SPAM Protection Feature"
|
1186 |
msgstr ""
|
1187 |
|
1188 |
+
#: src/features/comments_filter.php:197 src/wizards/plugin.php:581
|
1189 |
+
#: src/wizards/plugin.php:586
|
1190 |
+
msgid "Comment SPAM Protection"
|
1191 |
msgstr ""
|
1192 |
|
1193 |
+
#: src/features/comments_filter.php:201 src/features/comments_filter.php:202
|
1194 |
msgid "Human SPAM Filter"
|
1195 |
msgstr ""
|
1196 |
|
1197 |
+
#: src/features/comments_filter.php:202
|
1198 |
+
#, php-format
|
1199 |
+
msgid "Enable (or Disable) The %s Feature"
|
1200 |
msgstr ""
|
1201 |
|
1202 |
+
#: src/features/comments_filter.php:203
|
1203 |
msgid ""
|
1204 |
"Scans the content of WordPress comments for keywords that are indicative of "
|
1205 |
"SPAM and marks the comment according to your preferred setting below."
|
1206 |
msgstr ""
|
1207 |
|
1208 |
+
#: src/features/comments_filter.php:207
|
1209 |
msgid "Comment Filter Items"
|
1210 |
msgstr ""
|
1211 |
|
1212 |
+
#: src/features/comments_filter.php:208
|
1213 |
msgid "Select The Items To Scan For SPAM"
|
1214 |
msgstr ""
|
1215 |
|
1216 |
+
#: src/features/comments_filter.php:209
|
1217 |
msgid ""
|
1218 |
"When a user submits a comment, only the selected parts of the comment data "
|
1219 |
"will be scanned for SPAM content."
|
1220 |
msgstr ""
|
1221 |
|
1222 |
+
#: src/features/comments_filter.php:209 src/features/login_protect.php:594
|
|
|
1223 |
#, php-format
|
1224 |
msgid "Recommended: %s"
|
1225 |
msgstr ""
|
1226 |
|
1227 |
+
#: src/features/comments_filter.php:209
|
1228 |
msgid "All"
|
1229 |
msgstr ""
|
1230 |
|
1231 |
+
#: src/features/comments_filter.php:213 src/features/comments_filter.php:225
|
1232 |
msgid "Default SPAM Action"
|
1233 |
msgstr ""
|
1234 |
|
1235 |
+
#: src/features/comments_filter.php:214 src/features/comments_filter.php:226
|
1236 |
msgid "How To Categorise Comments When Identified To Be SPAM"
|
1237 |
msgstr ""
|
1238 |
|
1239 |
+
#: src/features/comments_filter.php:215 src/features/comments_filter.php:227
|
1240 |
#, php-format
|
1241 |
msgid ""
|
1242 |
"When a comment is detected as being SPAM from %s, the comment will be "
|
1243 |
"categorised based on this setting."
|
1244 |
msgstr ""
|
1245 |
|
1246 |
+
#: src/features/comments_filter.php:215
|
1247 |
msgid "a human commenter"
|
1248 |
msgstr ""
|
1249 |
|
1250 |
+
#: src/features/comments_filter.php:219
|
1251 |
+
msgid "SPAM Bot Protection"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1252 |
msgstr ""
|
1253 |
|
1254 |
+
#: src/features/comments_filter.php:220
|
1255 |
+
msgid "Block Automatic Comment SPAM By Bots"
|
1256 |
msgstr ""
|
1257 |
|
1258 |
+
#: src/features/comments_filter.php:221
|
1259 |
msgid ""
|
1260 |
+
"Simple, yet highly effective SPAM Bot protection for your WordPress comments."
|
|
|
1261 |
msgstr ""
|
1262 |
|
1263 |
+
#: src/features/comments_filter.php:227
|
1264 |
msgid "an automatic bot"
|
1265 |
msgstr ""
|
1266 |
|
1267 |
+
#: src/features/comments_filter.php:231
|
1268 |
msgid "Comments Cooldown"
|
1269 |
msgstr ""
|
1270 |
|
1271 |
+
#: src/features/comments_filter.php:232
|
1272 |
msgid "Limit posting comments to X seconds after the page has loaded"
|
1273 |
msgstr ""
|
1274 |
|
1275 |
+
#: src/features/comments_filter.php:233
|
1276 |
msgid ""
|
1277 |
"By forcing a comments cooldown period, you restrict a Spambot's ability to "
|
1278 |
"post multiple times to your posts."
|
1279 |
msgstr ""
|
1280 |
|
1281 |
+
#: src/features/comments_filter.php:237
|
1282 |
msgid "Comment Token Expire"
|
1283 |
msgstr ""
|
1284 |
|
1285 |
+
#: src/features/comments_filter.php:238
|
1286 |
msgid "A visitor has X seconds within which to post a comment"
|
1287 |
msgstr ""
|
1288 |
|
1289 |
+
#: src/features/comments_filter.php:239
|
1290 |
msgid ""
|
1291 |
"Default: 600 seconds (10 minutes). Each visitor is given a unique 'Token' so "
|
1292 |
"they can comment. This restricts spambots, but we need to force these tokens "
|
1293 |
"to expire and at the same time not bother the visitors."
|
1294 |
msgstr ""
|
1295 |
|
1296 |
+
#: src/features/comments_filter.php:243
|
1297 |
+
msgid "GASP Checkbox Message"
|
1298 |
msgstr ""
|
1299 |
|
1300 |
+
#: src/features/comments_filter.php:244
|
1301 |
msgid "If you want a custom checkbox message, please provide this here"
|
1302 |
msgstr ""
|
1303 |
|
1304 |
+
#: src/features/comments_filter.php:245
|
1305 |
msgid "You can customise the message beside the checkbox."
|
1306 |
msgstr ""
|
1307 |
|
1308 |
+
#: src/features/comments_filter.php:246 src/features/comments_filter.php:265
|
1309 |
+
#: src/features/comments_filter.php:272 src/features/comments_filter.php:279
|
1310 |
#, php-format
|
1311 |
msgid "Default Message: %s"
|
1312 |
msgstr ""
|
1313 |
|
1314 |
+
#: src/features/comments_filter.php:246 src/features/comments_filter.php:265
|
1315 |
msgid "Please check the box to confirm you're not a spammer"
|
1316 |
msgstr ""
|
1317 |
|
1318 |
+
#: src/features/comments_filter.php:251
|
1319 |
+
msgid "Enable Google reCAPTCHA For Comments"
|
1320 |
+
msgstr ""
|
1321 |
+
|
1322 |
+
#: src/features/comments_filter.php:252
|
1323 |
+
msgid "Use Google reCAPTCHA on the comments form to prevent bot-spam comments."
|
1324 |
+
msgstr ""
|
1325 |
+
|
1326 |
+
#: src/features/comments_filter.php:256 src/features/login_protect.php:585
|
1327 |
+
#: src/features/plugin.php:823
|
1328 |
+
msgid "reCAPTCHA Style"
|
1329 |
+
msgstr ""
|
1330 |
+
|
1331 |
+
#: src/features/comments_filter.php:257 src/features/login_protect.php:586
|
1332 |
+
msgid "How Google reCAPTCHA Will Be Displayed"
|
1333 |
+
msgstr ""
|
1334 |
+
|
1335 |
+
#: src/features/comments_filter.php:258 src/features/login_protect.php:587
|
1336 |
+
#: src/features/plugin.php:825
|
1337 |
+
msgid ""
|
1338 |
+
"You can choose the reCAPTCHA display format that best suits your site, "
|
1339 |
+
"including the new Invisible Recaptcha"
|
1340 |
+
msgstr ""
|
1341 |
+
|
1342 |
+
#: src/features/comments_filter.php:262
|
1343 |
+
msgid "GASP Alert Message"
|
1344 |
msgstr ""
|
1345 |
|
1346 |
+
#: src/features/comments_filter.php:263
|
1347 |
msgid "If you want a custom alert message, please provide this here"
|
1348 |
msgstr ""
|
1349 |
|
1350 |
+
#: src/features/comments_filter.php:264
|
1351 |
msgid ""
|
1352 |
"This alert message is displayed when a visitor attempts to submit a comment "
|
1353 |
"without checking the box."
|
1354 |
msgstr ""
|
1355 |
|
1356 |
+
#: src/features/comments_filter.php:269
|
1357 |
+
msgid "GASP Wait Message"
|
1358 |
msgstr ""
|
1359 |
|
1360 |
+
#: src/features/comments_filter.php:270
|
1361 |
msgid ""
|
1362 |
"If you want a custom submit-button wait message, please provide this here."
|
1363 |
msgstr ""
|
1364 |
|
1365 |
+
#: src/features/comments_filter.php:271
|
1366 |
#, php-format
|
1367 |
msgid ""
|
1368 |
"Where you see the '%s' this will be the number of seconds. You must ensure "
|
1369 |
"you include 1, and only 1, of these."
|
1370 |
msgstr ""
|
1371 |
|
1372 |
+
#: src/features/comments_filter.php:272
|
1373 |
#, php-format
|
1374 |
msgid "Please wait %s seconds before posting your comment"
|
1375 |
msgstr ""
|
1376 |
|
1377 |
+
#: src/features/comments_filter.php:276
|
1378 |
+
msgid "GASP Reload Message"
|
1379 |
msgstr ""
|
1380 |
|
1381 |
+
#: src/features/comments_filter.php:277
|
1382 |
msgid ""
|
1383 |
"If you want a custom message when the comment token has expired, please "
|
1384 |
"provide this here."
|
1385 |
msgstr ""
|
1386 |
|
1387 |
+
#: src/features/comments_filter.php:278
|
1388 |
msgid ""
|
1389 |
"This message is displayed on the submit-button when the comment token is "
|
1390 |
"expired"
|
1391 |
msgstr ""
|
1392 |
|
1393 |
+
#: src/features/comments_filter.php:279
|
1394 |
msgid "Please reload this page to post a comment"
|
1395 |
msgstr ""
|
1396 |
|
1398 |
msgid "Email Options"
|
1399 |
msgstr ""
|
1400 |
|
1401 |
+
#: src/features/email.php:64
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1402 |
msgid "Email Throttle Limit"
|
1403 |
msgstr ""
|
1404 |
|
1405 |
+
#: src/features/email.php:65
|
1406 |
msgid "Limit Emails Per Second"
|
1407 |
msgstr ""
|
1408 |
|
1409 |
+
#: src/features/email.php:66
|
1410 |
msgid ""
|
1411 |
"You throttle emails sent by this plugin by limiting the number of emails "
|
1412 |
"sent every second. This is useful in case you get hit by a bot attack. Zero "
|
1413 |
"(0) turns this off. Suggested: 10"
|
1414 |
msgstr ""
|
1415 |
|
1416 |
+
#: src/features/firewall.php:43
|
1417 |
+
#, php-format
|
1418 |
+
msgid "You were blocked by the %s."
|
1419 |
+
msgstr ""
|
1420 |
+
|
1421 |
+
#: src/features/firewall.php:68
|
1422 |
msgid ""
|
1423 |
"The Firewall is designed to analyse data sent to your website and block any "
|
1424 |
"requests that appear to be malicious."
|
1425 |
msgstr ""
|
1426 |
|
1427 |
+
#: src/features/firewall.php:69 src/features/plugin.php:872
|
1428 |
+
msgid "Firewall"
|
1429 |
+
msgstr ""
|
1430 |
+
|
1431 |
+
#: src/features/firewall.php:75
|
1432 |
msgid "Firewall Blocking Options"
|
1433 |
msgstr ""
|
1434 |
|
1435 |
+
#: src/features/firewall.php:77
|
1436 |
msgid "Here you choose what kind of malicious data to scan for."
|
1437 |
msgstr ""
|
1438 |
|
1439 |
+
#: src/features/firewall.php:79
|
1440 |
msgid "Turn on as many options here as you can."
|
1441 |
msgstr ""
|
1442 |
|
1443 |
+
#: src/features/firewall.php:80
|
1444 |
msgid ""
|
1445 |
"If you find an incompatibility or something stops working, un-check 1 option "
|
1446 |
"at a time until you find the problem or review the Audit Trail."
|
1447 |
msgstr ""
|
1448 |
|
1449 |
+
#: src/features/firewall.php:82
|
1450 |
msgid "Firewall Blocking"
|
1451 |
msgstr ""
|
1452 |
|
1453 |
+
#: src/features/firewall.php:86
|
1454 |
msgid "Choose Firewall Block Response"
|
1455 |
msgstr ""
|
1456 |
|
1457 |
+
#: src/features/firewall.php:88
|
1458 |
msgid ""
|
1459 |
"Here you choose how the plugin will respond when it detects malicious data."
|
1460 |
msgstr ""
|
1461 |
|
1462 |
+
#: src/features/firewall.php:89
|
1463 |
#, php-format
|
1464 |
msgid "Choose the option \"%s\"."
|
1465 |
msgstr ""
|
1466 |
|
1467 |
+
#: src/features/firewall.php:89
|
1468 |
msgid "Die With Message"
|
1469 |
msgstr ""
|
1470 |
|
1471 |
+
#: src/features/firewall.php:91
|
1472 |
msgid "Firewall Response"
|
1473 |
msgstr ""
|
1474 |
|
1475 |
+
#: src/features/firewall.php:95
|
1476 |
msgid ""
|
1477 |
"Whitelists - IPs, Pages, Parameters, and Users that by-pass the Firewall"
|
1478 |
msgstr ""
|
1479 |
|
1480 |
+
#: src/features/firewall.php:97
|
1481 |
msgid ""
|
1482 |
"In principle you should not need to whitelist anything or anyone unless you "
|
1483 |
"have discovered a collision with another plugin."
|
1484 |
msgstr ""
|
1485 |
|
1486 |
+
#: src/features/firewall.php:98
|
1487 |
msgid ""
|
1488 |
"Do not whitelist anything unless you are confident in what you are doing."
|
1489 |
msgstr ""
|
1490 |
|
1491 |
+
#: src/features/firewall.php:100
|
1492 |
msgid "Whitelist"
|
1493 |
msgstr ""
|
1494 |
|
1495 |
+
#: src/features/firewall.php:128
|
1496 |
msgid "Include Cookies"
|
1497 |
msgstr ""
|
1498 |
|
1499 |
+
#: src/features/firewall.php:129
|
1500 |
msgid "Also Test Cookie Values In Firewall Tests"
|
1501 |
msgstr ""
|
1502 |
|
1503 |
+
#: src/features/firewall.php:130
|
1504 |
msgid ""
|
1505 |
"The firewall tests GET and POST, but with this option checked it will also "
|
1506 |
"check COOKIE values."
|
1507 |
msgstr ""
|
1508 |
|
1509 |
+
#: src/features/firewall.php:134
|
1510 |
msgid "Directory Traversals"
|
1511 |
msgstr ""
|
1512 |
|
1513 |
+
#: src/features/firewall.php:135
|
1514 |
msgid "Block Directory Traversals"
|
1515 |
msgstr ""
|
1516 |
|
1517 |
+
#: src/features/firewall.php:136
|
1518 |
+
#, php-format
|
1519 |
msgid ""
|
1520 |
+
"This will block directory traversal paths in in application parameters (e.g. "
|
1521 |
+
"%s, etc)."
|
1522 |
msgstr ""
|
1523 |
|
1524 |
+
#: src/features/firewall.php:140 src/processors/firewall.php:539
|
1525 |
msgid "SQL Queries"
|
1526 |
msgstr ""
|
1527 |
|
1528 |
+
#: src/features/firewall.php:141
|
1529 |
msgid "Block SQL Queries"
|
1530 |
msgstr ""
|
1531 |
|
1532 |
+
#: src/features/firewall.php:142
|
1533 |
+
#, php-format
|
1534 |
+
msgid "This will block sql in application parameters (e.g. %s, etc)."
|
|
|
1535 |
msgstr ""
|
1536 |
|
1537 |
+
#: src/features/firewall.php:146 src/processors/firewall.php:533
|
1538 |
msgid "WordPress Terms"
|
1539 |
msgstr ""
|
1540 |
|
1541 |
+
#: src/features/firewall.php:147
|
1542 |
msgid "Block WordPress Specific Terms"
|
1543 |
msgstr ""
|
1544 |
|
1545 |
+
#: src/features/firewall.php:148
|
1546 |
msgid ""
|
1547 |
"This will block WordPress specific terms in application parameters (wp_, "
|
1548 |
"user_login, etc.)."
|
1549 |
msgstr ""
|
1550 |
|
1551 |
+
#: src/features/firewall.php:152 src/processors/firewall.php:536
|
1552 |
msgid "Field Truncation"
|
1553 |
msgstr ""
|
1554 |
|
1555 |
+
#: src/features/firewall.php:153
|
1556 |
msgid "Block Field Truncation Attacks"
|
1557 |
msgstr ""
|
1558 |
|
1559 |
+
#: src/features/firewall.php:154
|
1560 |
msgid "This will block field truncation attacks in application parameters."
|
1561 |
msgstr ""
|
1562 |
|
1563 |
+
#: src/features/firewall.php:158 src/processors/firewall.php:548
|
1564 |
msgid "PHP Code"
|
1565 |
msgstr ""
|
1566 |
|
1567 |
+
#: src/features/firewall.php:159
|
1568 |
#, php-format
|
1569 |
msgid "Block %s"
|
1570 |
msgstr ""
|
1571 |
|
1572 |
+
#: src/features/firewall.php:159
|
1573 |
msgid "PHP Code Includes"
|
1574 |
msgstr ""
|
1575 |
|
1576 |
+
#: src/features/firewall.php:160
|
1577 |
msgid "This will block any data that appears to try and include PHP files."
|
1578 |
msgstr ""
|
1579 |
|
1580 |
+
#: src/features/firewall.php:161
|
1581 |
msgid "Will probably block saving within the Plugin/Theme file editors."
|
1582 |
msgstr ""
|
1583 |
|
1584 |
+
#: src/features/firewall.php:165
|
1585 |
msgid "Exe File Uploads"
|
1586 |
msgstr ""
|
1587 |
|
1588 |
+
#: src/features/firewall.php:166
|
1589 |
msgid "Block Executable File Uploads"
|
1590 |
msgstr ""
|
1591 |
|
1592 |
+
#: src/features/firewall.php:167
|
1593 |
msgid "This will block executable file uploads (.php, .exe, etc.)."
|
1594 |
msgstr ""
|
1595 |
|
1596 |
+
#: src/features/firewall.php:171
|
1597 |
+
msgid "Leading Schemas"
|
1598 |
+
msgstr ""
|
1599 |
+
|
1600 |
+
#: src/features/firewall.php:172
|
1601 |
+
msgid "Block Leading Schemas (HTTPS / HTTP)"
|
1602 |
+
msgstr ""
|
1603 |
+
|
1604 |
+
#: src/features/firewall.php:173
|
1605 |
+
msgid ""
|
1606 |
+
"This will block leading schemas http:// and https:// in application "
|
1607 |
+
"parameters (off by default; may cause problems with other plugins)."
|
1608 |
+
msgstr ""
|
1609 |
+
|
1610 |
+
#: src/features/firewall.php:177
|
1611 |
msgid "Aggressive Scan"
|
1612 |
msgstr ""
|
1613 |
|
1614 |
+
#: src/features/firewall.php:178
|
1615 |
msgid "Aggressively Block Data"
|
1616 |
msgstr ""
|
1617 |
|
1618 |
+
#: src/features/firewall.php:179
|
1619 |
msgid ""
|
1620 |
"Employs a set of aggressive rules to detect and block malicious data "
|
1621 |
"submitted to your site."
|
1622 |
msgstr ""
|
1623 |
|
1624 |
+
#: src/features/firewall.php:180 src/features/hack_protect.php:694
|
1625 |
+
#: src/processors/hackprotect_corechecksumscan.php:253
|
1626 |
+
#: src/processors/hackprotect_filecleanerscan.php:237
|
1627 |
+
#: src/processors/hackprotect_pluginvulnerabilities.php:109
|
1628 |
+
#: src/processors/hackprotect_ptguard.php:486
|
1629 |
+
#: src/processors/hackprotect_wpvulnscan.php:218 src/processors/plugin.php:159
|
1630 |
#, php-format
|
1631 |
msgid "Warning - %s"
|
1632 |
msgstr ""
|
1633 |
|
1634 |
+
#: src/features/firewall.php:180
|
1635 |
msgid "May cause an increase in false-positive firewall blocks."
|
1636 |
msgstr ""
|
1637 |
|
1638 |
+
#: src/features/firewall.php:184
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1639 |
msgid "Block Response"
|
1640 |
msgstr ""
|
1641 |
|
1642 |
+
#: src/features/firewall.php:185
|
1643 |
msgid "Choose how the firewall responds when it blocks a request"
|
1644 |
msgstr ""
|
1645 |
|
1646 |
+
#: src/features/firewall.php:186
|
1647 |
msgid ""
|
1648 |
"We recommend dying with a message so you know what might have occurred when "
|
1649 |
"the firewall blocks you"
|
1650 |
msgstr ""
|
1651 |
|
1652 |
+
#: src/features/firewall.php:190
|
1653 |
msgid "Send Email Report"
|
1654 |
msgstr ""
|
1655 |
|
1656 |
+
#: src/features/firewall.php:191
|
1657 |
msgid ""
|
1658 |
"When a visitor is blocked the firewall will send an email to the configured "
|
1659 |
"email address"
|
1660 |
msgstr ""
|
1661 |
|
1662 |
+
#: src/features/firewall.php:192
|
1663 |
msgid ""
|
1664 |
"Use with caution - if you get hit by automated bots you may send out too "
|
1665 |
"many emails and you could get blocked by your host"
|
1666 |
msgstr ""
|
1667 |
|
1668 |
+
#: src/features/firewall.php:196
|
1669 |
msgid "Whitelist Parameters"
|
1670 |
msgstr ""
|
1671 |
|
1672 |
+
#: src/features/firewall.php:197
|
1673 |
msgid ""
|
1674 |
"Detail pages and parameters that are whitelisted (ignored by the firewall)"
|
1675 |
msgstr ""
|
1676 |
|
1677 |
+
#: src/features/firewall.php:198
|
1678 |
msgid ""
|
1679 |
"This should be used with caution and you should only provide parameter names "
|
1680 |
"that you must have excluded"
|
1681 |
msgstr ""
|
1682 |
|
1683 |
+
#: src/features/firewall.php:202 src/features/firewall.php:203
|
1684 |
+
#: src/features/firewall.php:208
|
1685 |
#, php-format
|
1686 |
msgid "Ignore %s"
|
1687 |
msgstr ""
|
1688 |
|
1689 |
+
#: src/features/firewall.php:202 src/features/firewall.php:203
|
1690 |
+
#: src/features/login_protect.php:162
|
1691 |
msgid "Administrators"
|
1692 |
msgstr ""
|
1693 |
|
1694 |
+
#: src/features/firewall.php:204
|
1695 |
msgid ""
|
1696 |
"Authenticated administrator users will not be processed by the firewall "
|
1697 |
"rules."
|
1698 |
msgstr ""
|
1699 |
|
1700 |
+
#: src/features/firewall.php:208
|
1701 |
msgid "Search Engines"
|
1702 |
msgstr ""
|
1703 |
|
1704 |
+
#: src/features/firewall.php:209
|
1705 |
msgid "Ignore Search Engine Bot Traffic"
|
1706 |
msgstr ""
|
1707 |
|
1708 |
+
#: src/features/firewall.php:210
|
1709 |
msgid ""
|
1710 |
"The firewall will try to recognise search engine spiders/bots and not apply "
|
1711 |
"firewall rules to them."
|
1712 |
msgstr ""
|
1713 |
|
1714 |
+
#: src/features/firewall.php:214
|
1715 |
+
msgid "Firewall Block Message"
|
|
|
|
|
|
|
|
|
1716 |
msgstr ""
|
1717 |
|
1718 |
+
#: src/features/firewall.php:215
|
1719 |
+
msgid "Message Displayed To Visitor When A Firewall Block Is Triggered"
|
|
|
|
|
|
|
1720 |
msgstr ""
|
1721 |
|
1722 |
+
#: src/features/firewall.php:216
|
1723 |
+
msgid "This is the message displayed to visitors that trigger the firewall."
|
|
|
|
|
1724 |
msgstr ""
|
1725 |
|
1726 |
+
#: src/features/hack_protect.php:79
|
1727 |
+
#, php-format
|
1728 |
+
msgid "%s per day"
|
1729 |
msgstr ""
|
1730 |
|
1731 |
+
#: src/features/hack_protect.php:528
|
1732 |
+
#, php-format
|
1733 |
msgid ""
|
1734 |
+
"Sorry, this feature is not available because we cannot write to disk at this "
|
1735 |
+
"location: \"%s\""
|
1736 |
msgstr ""
|
1737 |
|
1738 |
+
#: src/features/hack_protect.php:546 src/features/hack_protect.php:547
|
1739 |
+
msgid "Scan Schedule"
|
1740 |
msgstr ""
|
1741 |
|
1742 |
+
#: src/features/hack_protect.php:549
|
1743 |
+
msgid "Set how frequently the Hack Guard scans will run."
|
1744 |
msgstr ""
|
1745 |
|
1746 |
+
#: src/features/hack_protect.php:556
|
1747 |
msgid ""
|
1748 |
+
"Hack Guard is a set of tools to warn you and protect you against hacks on "
|
1749 |
+
"your site."
|
|
|
|
|
|
|
|
|
1750 |
msgstr ""
|
1751 |
|
1752 |
+
#: src/features/hack_protect.php:557 src/features/plugin.php:874
|
1753 |
+
msgid "Hack Guard"
|
|
|
1754 |
msgstr ""
|
1755 |
|
1756 |
+
#: src/features/hack_protect.php:563 src/features/hack_protect.php:569
|
1757 |
+
msgid "Vulnerabilities Scanner"
|
1758 |
msgstr ""
|
1759 |
|
1760 |
+
#: src/features/hack_protect.php:565
|
1761 |
msgid ""
|
1762 |
+
"Regularly scan your WordPress plugins and themes for known security "
|
1763 |
"vulnerabilities."
|
1764 |
msgstr ""
|
1765 |
|
1766 |
+
#: src/features/hack_protect.php:566 src/features/hack_protect.php:573
|
1767 |
+
#: src/features/hack_protect.php:576 src/features/hack_protect.php:649
|
1768 |
+
msgid "Plugin Vulnerabilities Scanner"
|
1769 |
msgstr ""
|
1770 |
|
1771 |
+
#: src/features/hack_protect.php:567
|
1772 |
msgid ""
|
1773 |
+
"Ensure this is turned on and you will always know if any of your assets have "
|
1774 |
+
"known security vulnerabilities."
|
1775 |
msgstr ""
|
1776 |
|
1777 |
+
#: src/features/hack_protect.php:575
|
1778 |
+
msgid ""
|
1779 |
+
"Regularly scan your plugins against a database of known vulnerabilities."
|
1780 |
msgstr ""
|
1781 |
|
1782 |
+
#: src/features/hack_protect.php:578
|
1783 |
+
msgid "Plugin Vulnerabilities"
|
1784 |
msgstr ""
|
1785 |
|
1786 |
+
#: src/features/hack_protect.php:582 src/features/hack_protect.php:585
|
1787 |
+
msgid "Core File Integrity Scanner"
|
1788 |
msgstr ""
|
1789 |
|
1790 |
+
#: src/features/hack_protect.php:584
|
1791 |
msgid ""
|
1792 |
+
"Regularly scan your WordPress core files for changes compared to official "
|
1793 |
+
"WordPress files."
|
1794 |
msgstr ""
|
1795 |
|
1796 |
+
#: src/features/hack_protect.php:587 src/features/hack_protect.php:673
|
1797 |
+
msgid "Core File Scanner"
|
|
|
|
|
1798 |
msgstr ""
|
1799 |
|
1800 |
+
#: src/features/hack_protect.php:591 src/features/hack_protect.php:594
|
1801 |
+
#: src/features/hack_protect.php:596 src/features/hack_protect.php:686
|
1802 |
+
msgid "Unrecognised Files Scanner"
|
|
|
|
|
1803 |
msgstr ""
|
1804 |
|
1805 |
+
#: src/features/hack_protect.php:593
|
1806 |
+
msgid "Regularly scan your WordPress core folders for files that don't belong."
|
1807 |
msgstr ""
|
1808 |
|
1809 |
+
#: src/features/hack_protect.php:600
|
1810 |
+
msgid "Plugins and Themes Guard"
|
1811 |
msgstr ""
|
1812 |
|
1813 |
+
#: src/features/hack_protect.php:601
|
1814 |
+
msgid "Plugins/Themes Guard"
|
|
|
1815 |
msgstr ""
|
1816 |
|
1817 |
+
#: src/features/hack_protect.php:603
|
1818 |
+
msgid "Detect malicious changes to your themes and plugins."
|
|
|
|
|
1819 |
msgstr ""
|
1820 |
|
1821 |
+
#: src/features/hack_protect.php:604
|
1822 |
+
msgid "Keep the Plugins/Theme Guard feature turned on."
|
1823 |
msgstr ""
|
1824 |
|
1825 |
+
#: src/features/hack_protect.php:605 src/features/user_management.php:225
|
1826 |
+
msgid "Requires PHP v5.4 and above."
|
1827 |
msgstr ""
|
1828 |
|
1829 |
+
#: src/features/hack_protect.php:610 src/features/hack_protect.php:611
|
1830 |
+
msgid "Integrity Checks"
|
|
|
|
|
1831 |
msgstr ""
|
1832 |
|
1833 |
+
#: src/features/hack_protect.php:613
|
1834 |
+
msgid "Monitor for unrecognised changes to your system."
|
1835 |
msgstr ""
|
1836 |
|
1837 |
+
#: src/features/hack_protect.php:614
|
1838 |
+
msgid "Enable these to prevent unauthorized changes to your WordPress site."
|
1839 |
msgstr ""
|
1840 |
|
1841 |
+
#: src/features/hack_protect.php:643
|
1842 |
+
msgid "Daily Scan Frequency"
|
1843 |
msgstr ""
|
1844 |
|
1845 |
+
#: src/features/hack_protect.php:644
|
1846 |
+
msgid "Number Of Times To Automatically Run File Scan In 24hrs"
|
|
|
|
|
1847 |
msgstr ""
|
1848 |
|
1849 |
+
#: src/features/hack_protect.php:645
|
1850 |
+
msgid ""
|
1851 |
+
"Default: Once every 24hrs. To improve security, increase the number of scans "
|
1852 |
+
"per day."
|
1853 |
msgstr ""
|
1854 |
|
1855 |
+
#: src/features/hack_protect.php:650
|
1856 |
+
#, php-format
|
1857 |
+
msgid "Daily Cron - %s"
|
1858 |
msgstr ""
|
1859 |
|
1860 |
+
#: src/features/hack_protect.php:650
|
1861 |
+
msgid "Scans Plugins For Known Vulnerabilities"
|
1862 |
msgstr ""
|
1863 |
|
1864 |
+
#: src/features/hack_protect.php:651
|
1865 |
msgid ""
|
1866 |
+
"Runs a scan of all your plugins against a database of known WordPress plugin "
|
1867 |
+
"vulnerabilities."
|
1868 |
msgstr ""
|
1869 |
|
1870 |
+
#: src/features/hack_protect.php:655
|
1871 |
+
msgid "Vulnerability Scanner"
|
1872 |
msgstr ""
|
1873 |
|
1874 |
+
#: src/features/hack_protect.php:656
|
1875 |
+
msgid "Enable The Vulnerability Scanner"
|
1876 |
msgstr ""
|
1877 |
|
1878 |
+
#: src/features/hack_protect.php:657
|
1879 |
+
msgid ""
|
1880 |
+
"Runs a scan of all your plugins against a database of known WordPress "
|
1881 |
+
"vulnerabilities."
|
1882 |
msgstr ""
|
1883 |
|
1884 |
+
#: src/features/hack_protect.php:662
|
1885 |
+
msgid "Apply Updates Automatically To Vulnerable Plugins"
|
|
|
|
|
1886 |
msgstr ""
|
1887 |
|
1888 |
+
#: src/features/hack_protect.php:663
|
1889 |
+
msgid ""
|
1890 |
+
"When an update becomes available, automatically apply updates to items with "
|
1891 |
+
"known vulnerabilities."
|
1892 |
msgstr ""
|
1893 |
|
1894 |
+
#: src/features/hack_protect.php:667
|
1895 |
+
msgid "Highlight Plugins"
|
1896 |
msgstr ""
|
1897 |
|
1898 |
+
#: src/features/hack_protect.php:668
|
1899 |
+
msgid "Highlight Vulnerable Plugins Upon Display"
|
1900 |
msgstr ""
|
1901 |
|
1902 |
+
#: src/features/hack_protect.php:669
|
1903 |
+
msgid "Vulnerable plugins will be highlighted on the main plugins page."
|
1904 |
msgstr ""
|
1905 |
|
1906 |
+
#: src/features/hack_protect.php:674
|
1907 |
+
msgid "Scans WordPress Core Files For Alterations"
|
1908 |
msgstr ""
|
1909 |
|
1910 |
+
#: src/features/hack_protect.php:675
|
1911 |
msgid ""
|
1912 |
+
"Compares all WordPress core files on your site against the official "
|
1913 |
+
"WordPress files."
|
1914 |
msgstr ""
|
1915 |
|
1916 |
+
#: src/features/hack_protect.php:676
|
1917 |
+
msgid "WordPress Core files should never be altered for any reason."
|
1918 |
msgstr ""
|
1919 |
|
1920 |
+
#: src/features/hack_protect.php:680
|
1921 |
+
msgid "Auto Repair"
|
1922 |
msgstr ""
|
1923 |
|
1924 |
+
#: src/features/hack_protect.php:681
|
1925 |
+
msgid "Automatically Repair WordPress Core Files That Have Been Altered"
|
1926 |
msgstr ""
|
1927 |
|
1928 |
+
#: src/features/hack_protect.php:682
|
1929 |
+
msgid ""
|
1930 |
+
"Attempts to automatically repair WordPress Core files with the official "
|
1931 |
+
"WordPress file data, for files that have been altered or are missing."
|
1932 |
msgstr ""
|
1933 |
|
1934 |
+
#: src/features/hack_protect.php:687
|
1935 |
+
msgid "Daily Scan For Unrecognised Files In Core Directories"
|
1936 |
msgstr ""
|
1937 |
|
1938 |
+
#: src/features/hack_protect.php:688
|
1939 |
+
msgid ""
|
1940 |
+
"Scans for, and automatically deletes, any files in your core WordPress "
|
1941 |
+
"folders that are not part of your WordPress installation."
|
1942 |
msgstr ""
|
1943 |
|
1944 |
+
#: src/features/hack_protect.php:692
|
1945 |
+
msgid "Scan Uploads"
|
1946 |
msgstr ""
|
1947 |
|
1948 |
+
#: src/features/hack_protect.php:693
|
1949 |
+
msgid "Scan Uploads Folder For PHP and Javascript"
|
1950 |
msgstr ""
|
1951 |
|
1952 |
+
#: src/features/hack_protect.php:694
|
1953 |
msgid ""
|
1954 |
+
"Take care when turning on this option - if you are unsure, leave it disabled."
|
1955 |
msgstr ""
|
1956 |
|
1957 |
+
#: src/features/hack_protect.php:695
|
1958 |
msgid ""
|
1959 |
+
"The Uploads folder is primarily for media, but could be used to store "
|
1960 |
+
"nefarious files."
|
1961 |
msgstr ""
|
1962 |
|
1963 |
+
#: src/features/hack_protect.php:699
|
1964 |
+
msgid "File Exclusions"
|
1965 |
msgstr ""
|
1966 |
|
1967 |
+
#: src/features/hack_protect.php:700
|
1968 |
+
msgid "Provide A List Of Files To Be Excluded From The Scan"
|
|
|
|
|
1969 |
msgstr ""
|
1970 |
|
1971 |
+
#: src/features/hack_protect.php:702
|
1972 |
+
msgid "Take a new line for each file you wish to exclude from the scan."
|
|
|
1973 |
msgstr ""
|
1974 |
|
1975 |
+
#: src/features/hack_protect.php:703
|
1976 |
+
msgid "No commas are necessary."
|
|
|
1977 |
msgstr ""
|
1978 |
|
1979 |
+
#: src/features/hack_protect.php:708
|
1980 |
+
msgid "Enable Integrity Scan"
|
|
|
|
|
1981 |
msgstr ""
|
1982 |
|
1983 |
+
#: src/features/hack_protect.php:709
|
1984 |
+
msgid "Scans For Critical Changes Made To Your WordPress Site"
|
1985 |
msgstr ""
|
1986 |
|
1987 |
+
#: src/features/hack_protect.php:710
|
1988 |
+
msgid "Detects changes made to your WordPress site outside of WordPress."
|
1989 |
msgstr ""
|
1990 |
|
1991 |
+
#: src/features/hack_protect.php:714
|
1992 |
+
msgid "Monitor User Accounts"
|
|
|
|
|
1993 |
msgstr ""
|
1994 |
|
1995 |
+
#: src/features/hack_protect.php:715
|
1996 |
+
msgid "Scans For Critical Changes Made To User Accounts"
|
1997 |
msgstr ""
|
1998 |
|
1999 |
+
#: src/features/hack_protect.php:716
|
2000 |
+
msgid ""
|
2001 |
+
"Detects changes made to critical user account information that were made "
|
2002 |
+
"directly on the database and outside of the WordPress system."
|
2003 |
msgstr ""
|
2004 |
|
2005 |
+
#: src/features/hack_protect.php:717
|
2006 |
+
msgid "An example of this might be some form of SQL Injection attack."
|
|
|
2007 |
msgstr ""
|
2008 |
|
2009 |
+
#: src/features/hack_protect.php:718 src/features/hack_protect.php:719
|
2010 |
+
#: src/features/ips.php:243 src/features/ips.php:250
|
2011 |
+
#: src/features/lockdown.php:173
|
2012 |
#, php-format
|
2013 |
+
msgid "Warning: %s"
|
|
|
|
|
2014 |
msgstr ""
|
2015 |
|
2016 |
+
#: src/features/hack_protect.php:718
|
2017 |
msgid ""
|
2018 |
+
"Enabling this option for every page low may slow down your site with large "
|
2019 |
+
"numbers of users."
|
2020 |
msgstr ""
|
2021 |
|
2022 |
+
#: src/features/hack_protect.php:719
|
2023 |
+
msgid ""
|
2024 |
+
"This option may cause critial problem with 3rd party plugins that manage "
|
2025 |
+
"user accounts."
|
2026 |
msgstr ""
|
2027 |
|
2028 |
+
#: src/features/hack_protect.php:723 src/features/headers.php:204
|
2029 |
+
#: src/features/headers.php:205 src/features/login_protect.php:548
|
2030 |
+
#: src/features/login_protect.php:560 src/features/login_protect.php:566
|
2031 |
+
#, php-format
|
2032 |
+
msgid "Enable %s"
|
2033 |
msgstr ""
|
2034 |
|
2035 |
+
#: src/features/hack_protect.php:723
|
2036 |
+
msgid "Guard"
|
2037 |
msgstr ""
|
2038 |
|
2039 |
+
#: src/features/hack_protect.php:724
|
2040 |
+
msgid "Enable The Guard For Plugin And Theme Files"
|
2041 |
msgstr ""
|
2042 |
|
2043 |
+
#: src/features/hack_protect.php:725
|
2044 |
msgid ""
|
2045 |
+
"When enabled the Guard will automatically scan for changes to your Plugin "
|
2046 |
+
"and Theme files."
|
2047 |
msgstr ""
|
2048 |
|
2049 |
+
#: src/features/hack_protect.php:729
|
2050 |
+
msgid "Guard/Scan Depth"
|
|
|
|
|
2051 |
msgstr ""
|
2052 |
|
2053 |
+
#: src/features/hack_protect.php:730
|
2054 |
+
msgid "How Deep Into The Plugin Directories To Scan And Guard"
|
|
|
|
|
|
|
2055 |
msgstr ""
|
2056 |
|
2057 |
+
#: src/features/hack_protect.php:731
|
2058 |
msgid ""
|
2059 |
+
"The Guard normally scans only the top level of a folder. Increasing depth "
|
2060 |
+
"will increase scan times."
|
2061 |
msgstr ""
|
2062 |
|
2063 |
+
#: src/features/hack_protect.php:732
|
2064 |
+
#, php-format
|
2065 |
+
msgid ""
|
2066 |
+
"Setting it to %s will remove this limit and all sub-folders will be scanned "
|
2067 |
+
"- not recommended"
|
2068 |
msgstr ""
|
2069 |
|
2070 |
+
#: src/features/hack_protect.php:736
|
2071 |
+
msgid "Included File Types"
|
2072 |
msgstr ""
|
2073 |
|
2074 |
+
#: src/features/hack_protect.php:737
|
2075 |
+
msgid "The File Types (by File Extension) Included In The Scan"
|
|
|
|
|
2076 |
msgstr ""
|
2077 |
|
2078 |
+
#: src/features/hack_protect.php:738
|
2079 |
+
msgid "Take a new line for each file extension."
|
2080 |
msgstr ""
|
2081 |
|
2082 |
+
#: src/features/hack_protect.php:739
|
2083 |
+
msgid "No commas(,) or periods(.) necessary."
|
2084 |
msgstr ""
|
2085 |
|
2086 |
+
#: src/features/hack_protect.php:740
|
2087 |
+
msgid "Remove all extensions to scan all file type (not recommended)."
|
2088 |
msgstr ""
|
2089 |
|
2090 |
+
#: src/features/hack_protect.php:744
|
2091 |
+
msgid "Show Re-Install Links"
|
2092 |
msgstr ""
|
2093 |
|
2094 |
+
#: src/features/hack_protect.php:745
|
2095 |
+
msgid "Show Re-Install Links For Plugins"
|
2096 |
msgstr ""
|
2097 |
|
2098 |
+
#: src/features/hack_protect.php:746
|
2099 |
+
msgid ""
|
2100 |
+
"Show links to re-install plugins and offer re-install when activating "
|
2101 |
+
"plugins."
|
2102 |
msgstr ""
|
2103 |
|
2104 |
+
#: src/features/headers.php:129 src/features/headers.php:138
|
2105 |
+
msgid ""
|
2106 |
+
"Protect visitors to your site by implementing increased security response "
|
2107 |
+
"headers."
|
2108 |
msgstr ""
|
2109 |
|
2110 |
+
#: src/features/headers.php:130 src/features/headers.php:139
|
2111 |
+
#: src/features/headers.php:148
|
2112 |
msgid ""
|
2113 |
+
"Enabling these features are advised, but you must test them on your site "
|
2114 |
+
"thoroughly."
|
2115 |
msgstr ""
|
2116 |
|
2117 |
+
#: src/features/headers.php:136
|
2118 |
+
msgid "Advanced Security Headers"
|
2119 |
msgstr ""
|
2120 |
|
2121 |
+
#: src/features/headers.php:141
|
2122 |
+
msgid "Security Headers"
|
|
|
2123 |
msgstr ""
|
2124 |
|
2125 |
+
#: src/features/headers.php:145 src/features/headers.php:150
|
2126 |
+
#: src/features/headers.php:205
|
2127 |
+
msgid "Content Security Policy"
|
2128 |
msgstr ""
|
2129 |
|
2130 |
+
#: src/features/headers.php:147
|
2131 |
+
msgid ""
|
2132 |
+
"Restrict the sources and types of content that may be loaded and processed "
|
2133 |
+
"by visitor browsers."
|
2134 |
msgstr ""
|
2135 |
|
2136 |
+
#: src/features/headers.php:179
|
2137 |
+
msgid "Block iFrames"
|
2138 |
msgstr ""
|
2139 |
|
2140 |
+
#: src/features/headers.php:180
|
2141 |
+
msgid "Block Remote iFrames Of This Site"
|
2142 |
msgstr ""
|
2143 |
|
2144 |
+
#: src/features/headers.php:181
|
2145 |
msgid ""
|
2146 |
+
"The setting prevents any external website from embedding your site in an "
|
2147 |
+
"iFrame."
|
2148 |
msgstr ""
|
2149 |
|
2150 |
+
#: src/features/headers.php:182
|
2151 |
+
msgid "This is useful for preventing so-called \"ClickJack attacks\"."
|
2152 |
msgstr ""
|
2153 |
|
2154 |
+
#: src/features/headers.php:186
|
2155 |
+
msgid "Referrer Policy"
|
2156 |
msgstr ""
|
2157 |
|
2158 |
+
#: src/features/headers.php:187
|
2159 |
+
msgid "Referrer Policy Header"
|
2160 |
msgstr ""
|
2161 |
|
2162 |
+
#: src/features/headers.php:188
|
2163 |
msgid ""
|
2164 |
+
"The Referrer Policy Header allows you to control when and what referral "
|
2165 |
+
"information a browser may pass along with links clicked on your site."
|
|
|
|
|
|
|
2166 |
msgstr ""
|
2167 |
|
2168 |
+
#: src/features/headers.php:192
|
2169 |
+
msgid "XSS Protection"
|
2170 |
msgstr ""
|
2171 |
|
2172 |
+
#: src/features/headers.php:193
|
2173 |
+
msgid "Employ Built-In Browser XSS Protection"
|
2174 |
msgstr ""
|
2175 |
|
2176 |
+
#: src/features/headers.php:194
|
2177 |
msgid ""
|
2178 |
+
"Directs compatible browsers to block what they detect as Reflective XSS "
|
2179 |
+
"attacks."
|
2180 |
msgstr ""
|
2181 |
|
2182 |
+
#: src/features/headers.php:198
|
2183 |
+
msgid "Prevent Mime-Sniff"
|
|
|
|
|
2184 |
msgstr ""
|
2185 |
|
2186 |
+
#: src/features/headers.php:199
|
2187 |
+
msgid "Turn-Off Browser Mime-Sniff"
|
2188 |
msgstr ""
|
2189 |
|
2190 |
+
#: src/features/headers.php:200
|
2191 |
+
msgid "Reduces visitor exposure to malicious user-uploaded content."
|
2192 |
msgstr ""
|
2193 |
|
2194 |
+
#: src/features/headers.php:206
|
2195 |
msgid ""
|
2196 |
+
"Allows for permission and restriction of all resources loaded on your site."
|
|
|
2197 |
msgstr ""
|
2198 |
|
2199 |
+
#: src/features/headers.php:210
|
2200 |
+
msgid "Self"
|
2201 |
msgstr ""
|
2202 |
|
2203 |
+
#: src/features/headers.php:211
|
2204 |
+
msgid "Allow 'self' Directive"
|
2205 |
msgstr ""
|
2206 |
|
2207 |
+
#: src/features/headers.php:212
|
2208 |
+
msgid "Using 'self' is generally recommended."
|
|
|
2209 |
msgstr ""
|
2210 |
|
2211 |
+
#: src/features/headers.php:213
|
2212 |
+
msgid ""
|
2213 |
+
"It essentially means that resources from your own host:protocol are "
|
2214 |
+
"permitted."
|
2215 |
msgstr ""
|
2216 |
|
2217 |
+
#: src/features/headers.php:217
|
2218 |
+
msgid "Inline Entities"
|
|
|
2219 |
msgstr ""
|
2220 |
|
2221 |
+
#: src/features/headers.php:218
|
2222 |
+
msgid "Allow Inline Scripts and CSS"
|
|
|
|
|
2223 |
msgstr ""
|
2224 |
|
2225 |
+
#: src/features/headers.php:219
|
2226 |
msgid ""
|
2227 |
+
"Allows parsing of Javascript and CSS declared in-line in your html document."
|
|
|
2228 |
msgstr ""
|
2229 |
|
2230 |
+
#: src/features/headers.php:223
|
2231 |
+
msgid "Embedded Data"
|
|
|
2232 |
msgstr ""
|
2233 |
|
2234 |
+
#: src/features/headers.php:224
|
2235 |
+
msgid "Allow \"data:\" Directives"
|
|
|
2236 |
msgstr ""
|
2237 |
|
2238 |
+
#: src/features/headers.php:225
|
2239 |
msgid ""
|
2240 |
+
"Allows use of embedded data directives, most commonly used for images and "
|
2241 |
+
"fonts."
|
2242 |
msgstr ""
|
2243 |
|
2244 |
+
#: src/features/headers.php:229
|
2245 |
+
msgid "Allow eval()"
|
2246 |
msgstr ""
|
2247 |
|
2248 |
+
#: src/features/headers.php:230
|
2249 |
+
msgid "Allow Javascript eval()"
|
|
|
|
|
2250 |
msgstr ""
|
2251 |
|
2252 |
+
#: src/features/headers.php:231
|
2253 |
+
msgid "Permits the use of Javascript the eval() function."
|
2254 |
msgstr ""
|
2255 |
|
2256 |
+
#: src/features/headers.php:235
|
2257 |
+
msgid "HTTPS"
|
2258 |
msgstr ""
|
2259 |
|
2260 |
+
#: src/features/headers.php:236
|
2261 |
+
msgid "HTTPS Resource Loading"
|
2262 |
msgstr ""
|
2263 |
|
2264 |
+
#: src/features/headers.php:237
|
2265 |
+
msgid "Allows loading of any content provided over HTTPS."
|
|
|
|
|
2266 |
msgstr ""
|
2267 |
|
2268 |
+
#: src/features/headers.php:241
|
2269 |
+
msgid "Permitted Hosts"
|
|
|
|
|
2270 |
msgstr ""
|
2271 |
|
2272 |
+
#: src/features/headers.php:242
|
2273 |
+
msgid "Permitted Hosts and Domains"
|
|
|
2274 |
msgstr ""
|
2275 |
|
2276 |
+
#: src/features/headers.php:243
|
2277 |
+
msgid ""
|
2278 |
+
"You can explicitly state which hosts/domain from which content may be loaded."
|
2279 |
msgstr ""
|
2280 |
|
2281 |
+
#: src/features/headers.php:244
|
|
|
2282 |
msgid ""
|
2283 |
+
"Take great care and test your site as you may block legitimate resources."
|
|
|
2284 |
msgstr ""
|
2285 |
|
2286 |
+
#: src/features/headers.php:245
|
2287 |
+
msgid "If in-doubt, leave blank or use \"*\" only."
|
2288 |
msgstr ""
|
2289 |
|
2290 |
+
#: src/features/headers.php:246
|
2291 |
+
msgid ""
|
2292 |
+
"You can force only HTTPS for a given domain by prefixing it with \"https://"
|
2293 |
+
"\"."
|
2294 |
msgstr ""
|
2295 |
|
2296 |
+
#: src/features/ips.php:22
|
2297 |
+
msgid "Manage IP Lists"
|
2298 |
msgstr ""
|
2299 |
|
2300 |
+
#: src/features/ips.php:23
|
2301 |
+
msgid "Add/Remove IPs"
|
2302 |
msgstr ""
|
2303 |
|
2304 |
+
#: src/features/ips.php:199 src/features/user_management.php:44
|
2305 |
+
#, php-format
|
2306 |
+
msgid "now: %s"
|
2307 |
msgstr ""
|
2308 |
|
2309 |
+
#: src/features/ips.php:244
|
2310 |
msgid ""
|
2311 |
+
"Repeated login attempts that fail will result in a complete ban of your IP "
|
2312 |
+
"Address."
|
2313 |
msgstr ""
|
2314 |
|
2315 |
+
#: src/features/ips.php:251
|
2316 |
+
#, php-format
|
2317 |
+
msgid ""
|
2318 |
+
"You have %s remaining transgression(s) against this site and then you will "
|
2319 |
+
"be black listed."
|
2320 |
msgstr ""
|
2321 |
|
2322 |
+
#: src/features/ips.php:252
|
2323 |
+
msgid "Seriously, stop repeating what you are doing or you will be locked out."
|
2324 |
msgstr ""
|
2325 |
|
2326 |
+
#: src/features/ips.php:275
|
2327 |
+
msgid ""
|
2328 |
+
"The IP Manager allows you to whitelist, blacklist and configure auto-"
|
2329 |
+
"blacklist rules."
|
2330 |
msgstr ""
|
2331 |
|
2332 |
+
#: src/features/ips.php:276 src/features/plugin.php:877
|
2333 |
+
#: src/wizards/plugin.php:471 src/wizards/plugin.php:476
|
2334 |
+
msgid "IP Manager"
|
2335 |
msgstr ""
|
2336 |
|
2337 |
+
#: src/features/ips.php:277
|
2338 |
+
msgid "You should also carefully review the automatic black list settings."
|
2339 |
msgstr ""
|
2340 |
|
2341 |
+
#: src/features/ips.php:283 src/features/ips.php:286 src/features/ips.php:329
|
2342 |
+
msgid "Automatic IP Black List"
|
2343 |
msgstr ""
|
2344 |
|
2345 |
+
#: src/features/ips.php:285
|
2346 |
msgid ""
|
2347 |
+
"The Automatic IP Black List system will block the IP addresses of naughty "
|
2348 |
+
"visitors after a specified number of transgressions."
|
|
|
|
|
|
|
|
|
2349 |
msgstr ""
|
2350 |
|
2351 |
+
#: src/features/ips.php:288
|
2352 |
+
msgid "Auto Black List"
|
2353 |
msgstr ""
|
2354 |
|
2355 |
+
#: src/features/ips.php:292
|
2356 |
+
msgid "Bad Request Tracking"
|
2357 |
msgstr ""
|
2358 |
|
2359 |
+
#: src/features/ips.php:293
|
2360 |
+
msgid "Request Tracking"
|
|
|
2361 |
msgstr ""
|
2362 |
|
2363 |
+
#: src/features/ips.php:295
|
2364 |
+
msgid "Track strange behaviour to determine whether visitors are legitimate."
|
|
|
2365 |
msgstr ""
|
2366 |
|
2367 |
+
#: src/features/ips.php:296
|
2368 |
+
msgid ""
|
2369 |
+
"These aren't security issues in their own right, but may indicate probing "
|
2370 |
+
"bots."
|
2371 |
msgstr ""
|
2372 |
|
2373 |
+
#: src/features/ips.php:324
|
2374 |
+
msgid "Transgression Limit"
|
2375 |
msgstr ""
|
2376 |
|
2377 |
+
#: src/features/ips.php:325
|
2378 |
msgid ""
|
2379 |
+
"Visitor IP address will be Black Listed after X bad actions on your site"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2380 |
msgstr ""
|
2381 |
|
2382 |
+
#: src/features/ips.php:326
|
2383 |
#, php-format
|
2384 |
+
msgid ""
|
2385 |
+
"A black mark is set against an IP address each time a visitor trips the "
|
2386 |
+
"defenses of the %s plugin."
|
2387 |
msgstr ""
|
2388 |
|
2389 |
+
#: src/features/ips.php:328
|
2390 |
msgid ""
|
2391 |
+
"When the number of these transgressions exceeds specified limit, they are "
|
2392 |
+
"automatically blocked from accessing the site."
|
2393 |
msgstr ""
|
2394 |
|
2395 |
+
#: src/features/ips.php:329
|
2396 |
#, php-format
|
2397 |
+
msgid "Set this to \"0\" to turn off the %s feature."
|
2398 |
msgstr ""
|
2399 |
|
2400 |
+
#: src/features/ips.php:333
|
2401 |
+
msgid "Auto Block Expiration"
|
2402 |
msgstr ""
|
2403 |
|
2404 |
+
#: src/features/ips.php:334
|
2405 |
+
msgid "After 1 \"X\" a black listed IP will be removed from the black list"
|
|
|
2406 |
msgstr ""
|
2407 |
|
2408 |
+
#: src/features/ips.php:335
|
2409 |
+
msgid "Permanent and lengthy IP Black Lists are harmful to performance."
|
|
|
2410 |
msgstr ""
|
2411 |
|
2412 |
+
#: src/features/ips.php:336
|
2413 |
+
msgid ""
|
2414 |
+
"You should allow IP addresses on the black list to be eventually removed "
|
2415 |
+
"over time."
|
2416 |
msgstr ""
|
2417 |
|
2418 |
+
#: src/features/ips.php:337
|
2419 |
+
msgid ""
|
2420 |
+
"Shorter IP black lists are more efficient and a more intelligent use of an "
|
2421 |
+
"IP-based blocking system."
|
2422 |
msgstr ""
|
2423 |
|
2424 |
+
#: src/features/ips.php:341
|
2425 |
+
msgid "Track 404s"
|
|
|
|
|
2426 |
msgstr ""
|
2427 |
|
2428 |
+
#: src/features/ips.php:342
|
2429 |
+
msgid "Use 404s As An Transgression"
|
2430 |
msgstr ""
|
2431 |
|
2432 |
+
#: src/features/ips.php:343
|
2433 |
+
msgid "Repeated 404s may indicate a probing bot."
|
2434 |
msgstr ""
|
2435 |
|
2436 |
+
#: src/features/ips.php:347
|
2437 |
+
msgid "Login Failed"
|
|
|
|
|
2438 |
msgstr ""
|
2439 |
|
2440 |
+
#: src/features/ips.php:348
|
2441 |
+
msgid "Visitor Triggers The IP Transgression System Through A Failed Login"
|
2442 |
msgstr ""
|
2443 |
|
2444 |
+
#: src/features/ips.php:349
|
2445 |
+
msgid "This message is displayed if the visitor fails a login attempt."
|
|
|
2446 |
msgstr ""
|
2447 |
|
2448 |
+
#: src/features/ips.php:353
|
2449 |
+
msgid "Remaining Transgressions"
|
2450 |
msgstr ""
|
2451 |
|
2452 |
+
#: src/features/ips.php:354
|
2453 |
+
msgid "Visitor Triggers The IP Transgression System Through A Firewall Block"
|
2454 |
msgstr ""
|
2455 |
|
2456 |
+
#: src/features/ips.php:355
|
2457 |
msgid ""
|
2458 |
+
"This message is displayed if the visitor triggered the IP Transgression "
|
2459 |
+
"system and reports how many transgressions remain before being blocked."
|
2460 |
msgstr ""
|
2461 |
|
2462 |
+
#: src/features/ips.php:398
|
2463 |
+
#, php-format
|
2464 |
+
msgid ""
|
2465 |
+
"Sorry, the %s feature may not be disabled while there are IP addresses in "
|
2466 |
+
"the White List"
|
2467 |
msgstr ""
|
2468 |
|
2469 |
+
#: src/features/license.php:83
|
2470 |
+
msgid "Name"
|
2471 |
msgstr ""
|
2472 |
|
2473 |
+
#: src/features/license.php:84
|
2474 |
+
msgid "Active"
|
2475 |
msgstr ""
|
2476 |
|
2477 |
+
#: src/features/license.php:85
|
2478 |
+
msgid "Status"
|
2479 |
msgstr ""
|
2480 |
|
2481 |
+
#: src/features/license.php:86
|
2482 |
+
msgid "Key"
|
2483 |
msgstr ""
|
2484 |
|
2485 |
+
#: src/features/license.php:87
|
2486 |
+
msgid "Expires"
|
2487 |
msgstr ""
|
2488 |
|
2489 |
+
#: src/features/license.php:88
|
2490 |
+
msgid "Owner"
|
2491 |
msgstr ""
|
2492 |
|
2493 |
+
#: src/features/license.php:89
|
2494 |
+
msgid "Checked"
|
|
|
|
|
2495 |
msgstr ""
|
2496 |
|
2497 |
+
#: src/features/license.php:90
|
2498 |
+
msgid "Error"
|
2499 |
msgstr ""
|
2500 |
|
2501 |
+
#: src/features/license.php:557 src/features/license.php:558
|
2502 |
+
msgid "License Options"
|
2503 |
msgstr ""
|
2504 |
|
2505 |
+
#: src/features/license.php:560
|
2506 |
+
msgid "Activate Shield Pro Extensions."
|
|
|
|
|
2507 |
msgstr ""
|
2508 |
|
2509 |
+
#: src/features/license.php:561
|
2510 |
+
msgid "TODO."
|
2511 |
msgstr ""
|
2512 |
|
2513 |
+
#: src/features/license.php:585 src/features/license.php:586
|
2514 |
+
#: src/features/license.php:587
|
2515 |
+
msgid "License Key"
|
2516 |
msgstr ""
|
2517 |
|
2518 |
+
#: src/features/lockdown.php:66
|
2519 |
msgid ""
|
2520 |
+
"Lockdown helps secure-up certain loosely-controlled WordPress settings on "
|
2521 |
+
"your site."
|
2522 |
msgstr ""
|
2523 |
|
2524 |
+
#: src/features/lockdown.php:67 src/features/plugin.php:879
|
2525 |
+
msgid "Lockdown"
|
|
|
|
|
2526 |
msgstr ""
|
2527 |
|
2528 |
+
#: src/features/lockdown.php:73 src/features/lockdown.php:78
|
2529 |
+
msgid "API & XML-RPC"
|
2530 |
msgstr ""
|
2531 |
|
2532 |
+
#: src/features/lockdown.php:75
|
2533 |
+
msgid "Lockdown certain core WordPress system features."
|
2534 |
msgstr ""
|
2535 |
|
2536 |
+
#: src/features/lockdown.php:76
|
2537 |
msgid ""
|
2538 |
+
"This depends on your usage and needs for certain WordPress functions and "
|
2539 |
+
"features."
|
2540 |
msgstr ""
|
2541 |
|
2542 |
+
#: src/features/lockdown.php:82
|
2543 |
+
msgid "Permissions and Access Options"
|
|
|
|
|
2544 |
msgstr ""
|
2545 |
|
2546 |
+
#: src/features/lockdown.php:84
|
2547 |
+
msgid "Provides finer control of certain WordPress permissions."
|
2548 |
msgstr ""
|
2549 |
|
2550 |
+
#: src/features/lockdown.php:85
|
2551 |
+
msgid "Only enable SSL if you have a valid certificate installed."
|
2552 |
msgstr ""
|
2553 |
|
2554 |
+
#: src/features/lockdown.php:87
|
2555 |
+
msgid "Permissions"
|
|
|
2556 |
msgstr ""
|
2557 |
|
2558 |
+
#: src/features/lockdown.php:91
|
2559 |
+
msgid "WordPress Obscurity Options"
|
2560 |
msgstr ""
|
2561 |
|
2562 |
+
#: src/features/lockdown.php:93
|
2563 |
+
msgid "Obscures certain WordPress settings from public view."
|
|
|
|
|
2564 |
msgstr ""
|
2565 |
|
2566 |
+
#: src/features/lockdown.php:94
|
2567 |
msgid ""
|
2568 |
+
"Obscurity is not true security and so these settings are down to your "
|
2569 |
+
"personal tastes."
|
|
|
|
|
|
|
|
|
2570 |
msgstr ""
|
2571 |
|
2572 |
+
#: src/features/lockdown.php:96
|
2573 |
+
msgid "Obscurity"
|
2574 |
msgstr ""
|
2575 |
|
2576 |
+
#: src/features/lockdown.php:125 src/features/plugin.php:654
|
2577 |
+
#, php-format
|
2578 |
+
msgid "Disable %s"
|
2579 |
msgstr ""
|
2580 |
|
2581 |
+
#: src/features/lockdown.php:126 src/features/lockdown.php:132
|
2582 |
+
#, php-format
|
2583 |
+
msgid "Disable The %s System"
|
2584 |
msgstr ""
|
2585 |
|
2586 |
+
#: src/features/lockdown.php:127
|
2587 |
#, php-format
|
2588 |
+
msgid "Checking this option will completely turn off the whole %s system."
|
2589 |
msgstr ""
|
2590 |
|
2591 |
+
#: src/features/lockdown.php:131 src/features/lockdown.php:132
|
2592 |
+
msgid "Anonymous Rest API"
|
2593 |
msgstr ""
|
2594 |
|
2595 |
+
#: src/features/lockdown.php:133
|
2596 |
+
msgid "You can choose to completely disable anonymous access to the REST API."
|
2597 |
msgstr ""
|
2598 |
|
2599 |
+
#: src/features/lockdown.php:137
|
2600 |
+
msgid "Rest API Exclusions"
|
2601 |
msgstr ""
|
2602 |
|
2603 |
+
#: src/features/lockdown.php:138
|
2604 |
+
msgid "Anonymous REST API Exclusions"
|
2605 |
msgstr ""
|
2606 |
|
2607 |
+
#: src/features/lockdown.php:139
|
2608 |
+
msgid ""
|
2609 |
+
"Any namespaces provided here will be excluded from the Anonymous API "
|
2610 |
+
"restriction."
|
2611 |
msgstr ""
|
2612 |
|
2613 |
+
#: src/features/lockdown.php:143
|
2614 |
+
msgid "Disable File Editing"
|
2615 |
msgstr ""
|
2616 |
|
2617 |
+
#: src/features/lockdown.php:144
|
2618 |
+
msgid "Disable Ability To Edit Files From Within WordPress"
|
2619 |
msgstr ""
|
2620 |
|
2621 |
+
#: src/features/lockdown.php:145
|
2622 |
+
msgid ""
|
2623 |
+
"Removes the option to directly edit any files from within the WordPress "
|
2624 |
+
"admin area."
|
2625 |
msgstr ""
|
2626 |
|
2627 |
+
#: src/features/lockdown.php:146
|
2628 |
+
msgid "Equivalent to setting \"DISALLOW_FILE_EDIT\" to TRUE."
|
2629 |
msgstr ""
|
2630 |
|
2631 |
+
#: src/features/lockdown.php:150
|
2632 |
+
msgid "Force SSL Admin"
|
2633 |
msgstr ""
|
2634 |
|
2635 |
+
#: src/features/lockdown.php:151
|
2636 |
+
msgid "Forces WordPress Admin Dashboard To Be Delivered Over SSL"
|
|
|
2637 |
msgstr ""
|
2638 |
|
2639 |
+
#: src/features/lockdown.php:152
|
2640 |
+
msgid ""
|
2641 |
+
"Please only enable this option if you have a valid SSL certificate installed."
|
2642 |
msgstr ""
|
2643 |
|
2644 |
+
#: src/features/lockdown.php:153
|
2645 |
+
msgid "Equivalent to setting \"FORCE_SSL_ADMIN\" to TRUE."
|
2646 |
msgstr ""
|
2647 |
|
2648 |
+
#: src/features/lockdown.php:157
|
2649 |
+
msgid "Mask WordPress Version"
|
|
|
|
|
2650 |
msgstr ""
|
2651 |
|
2652 |
+
#: src/features/lockdown.php:158
|
2653 |
+
msgid "Prevents Public Display Of Your WordPress Version"
|
|
|
|
|
2654 |
msgstr ""
|
2655 |
|
2656 |
+
#: src/features/lockdown.php:159
|
2657 |
+
msgid ""
|
2658 |
+
"Enter how you would like your WordPress version displayed publicly. Leave "
|
2659 |
+
"blank to disable this feature."
|
2660 |
msgstr ""
|
2661 |
|
2662 |
+
#: src/features/lockdown.php:160
|
2663 |
+
msgid ""
|
2664 |
+
"Warning: This may interfere with WordPress plugins that rely on the "
|
2665 |
+
"$wp_version variable."
|
2666 |
msgstr ""
|
2667 |
|
2668 |
+
#: src/features/lockdown.php:164
|
2669 |
+
msgid "WP Generator Tag"
|
2670 |
msgstr ""
|
2671 |
|
2672 |
+
#: src/features/lockdown.php:165
|
2673 |
+
msgid "Remove WP Generator Meta Tag"
|
2674 |
msgstr ""
|
2675 |
|
2676 |
+
#: src/features/lockdown.php:166
|
2677 |
msgid ""
|
2678 |
+
"Remove a meta tag from your WordPress pages that publicly displays that your "
|
2679 |
+
"site is WordPress and its current version."
|
2680 |
msgstr ""
|
2681 |
|
2682 |
+
#: src/features/lockdown.php:170
|
2683 |
+
msgid "Block Username Fishing"
|
2684 |
msgstr ""
|
2685 |
|
2686 |
+
#: src/features/lockdown.php:171
|
2687 |
+
msgid "Block the ability to discover WordPress usernames based on author IDs"
|
2688 |
msgstr ""
|
2689 |
|
2690 |
+
#: src/features/lockdown.php:172
|
2691 |
+
#, php-format
|
2692 |
+
msgid "When enabled, any URL requests containing \"%s\" will be killed."
|
|
|
2693 |
msgstr ""
|
2694 |
|
2695 |
+
#: src/features/lockdown.php:173
|
2696 |
msgid ""
|
2697 |
+
"Enabling this option may interfere with expected operations of your site."
|
|
|
2698 |
msgstr ""
|
2699 |
|
2700 |
+
#: src/features/login_protect.php:27
|
2701 |
+
msgid "Email verification completed successfully."
|
2702 |
msgstr ""
|
2703 |
|
2704 |
+
#: src/features/login_protect.php:32
|
2705 |
+
msgid "Email verification could not be completed."
|
2706 |
msgstr ""
|
2707 |
|
2708 |
+
#: src/features/login_protect.php:117
|
2709 |
+
msgid ""
|
2710 |
+
"Before enabling 2-factor email authentication for your WordPress site, you "
|
2711 |
+
"must verify you can receive this email."
|
2712 |
msgstr ""
|
2713 |
|
2714 |
+
#: src/features/login_protect.php:118
|
2715 |
+
msgid ""
|
2716 |
+
"This verifies your website can send email and that your account can receive "
|
2717 |
+
"emails sent from your site."
|
2718 |
msgstr ""
|
2719 |
|
2720 |
+
#: src/features/login_protect.php:123
|
2721 |
+
#, php-format
|
2722 |
+
msgid "Click the verify link: %s"
|
2723 |
msgstr ""
|
2724 |
|
2725 |
+
#: src/features/login_protect.php:126
|
2726 |
+
#, php-format
|
2727 |
+
msgid "Here's your code for the guided wizard: %s"
|
2728 |
msgstr ""
|
2729 |
|
2730 |
+
#: src/features/login_protect.php:129
|
2731 |
+
msgid "Email Sending Verification"
|
2732 |
msgstr ""
|
2733 |
|
2734 |
+
#: src/features/login_protect.php:158
|
2735 |
+
msgid "Subscribers"
|
2736 |
msgstr ""
|
2737 |
|
2738 |
+
#: src/features/login_protect.php:159
|
2739 |
+
msgid "Contributors"
|
2740 |
msgstr ""
|
2741 |
|
2742 |
+
#: src/features/login_protect.php:160
|
2743 |
+
msgid "Authors"
|
2744 |
msgstr ""
|
2745 |
|
2746 |
+
#: src/features/login_protect.php:161
|
2747 |
+
msgid "Editors"
|
2748 |
msgstr ""
|
2749 |
|
2750 |
+
#: src/features/login_protect.php:399
|
2751 |
+
msgid "I'm a human."
|
2752 |
msgstr ""
|
2753 |
|
2754 |
+
#: src/features/login_protect.php:403
|
2755 |
+
msgid "Please check the box to show us you're a human."
|
2756 |
msgstr ""
|
2757 |
|
2758 |
+
#: src/features/login_protect.php:441
|
2759 |
+
msgid ""
|
2760 |
+
"Login Guard blocks all automated and brute force attempts to log in to your "
|
2761 |
+
"site."
|
2762 |
msgstr ""
|
2763 |
|
2764 |
+
#: src/features/login_protect.php:442 src/features/plugin.php:881
|
2765 |
+
#: src/wizards/plugin.php:507 src/wizards/plugin.php:512
|
2766 |
+
msgid "Login Guard"
|
2767 |
msgstr ""
|
2768 |
|
2769 |
+
#: src/features/login_protect.php:450
|
2770 |
+
msgid "Adds Google reCAPTCHA to the Login Forms."
|
|
|
|
|
2771 |
msgstr ""
|
2772 |
|
2773 |
+
#: src/features/login_protect.php:457
|
2774 |
+
msgid "Hide WordPress Login Page"
|
2775 |
msgstr ""
|
2776 |
|
2777 |
+
#: src/features/login_protect.php:458
|
2778 |
+
#, php-format
|
2779 |
+
msgid "Rename \"%s\""
|
2780 |
msgstr ""
|
2781 |
|
2782 |
+
#: src/features/login_protect.php:459
|
2783 |
+
msgid "Hide Login Page"
|
2784 |
msgstr ""
|
2785 |
|
2786 |
+
#: src/features/login_protect.php:461
|
|
|
2787 |
msgid ""
|
2788 |
+
"To hide your wp-login.php page from brute force attacks and hacking attempts "
|
2789 |
+
"- if your login page cannot be found, no-one can login."
|
2790 |
msgstr ""
|
2791 |
|
2792 |
+
#: src/features/login_protect.php:462
|
|
|
2793 |
msgid ""
|
2794 |
+
"This is not required for complete security and if your site has irregular or "
|
2795 |
+
"inconsistent configuration it may not work for you."
|
2796 |
msgstr ""
|
2797 |
|
2798 |
+
#: src/features/login_protect.php:467 src/features/login_protect.php:548
|
2799 |
+
#: src/features/user_management.php:244
|
2800 |
+
msgid "Multi-Factor Authentication"
|
2801 |
msgstr ""
|
2802 |
|
2803 |
+
#: src/features/login_protect.php:468
|
2804 |
+
msgid "Multi-Factor Auth"
|
2805 |
msgstr ""
|
2806 |
|
2807 |
+
#: src/features/login_protect.php:470 src/features/user_management.php:241
|
2808 |
msgid ""
|
2809 |
+
"Verifies the identity of users who log in to your site - i.e. they are who "
|
2810 |
+
"they say they are."
|
2811 |
msgstr ""
|
2812 |
|
2813 |
+
#: src/features/login_protect.php:471 src/features/login_protect.php:481
|
2814 |
+
#: src/features/login_protect.php:490 src/features/login_protect.php:508
|
2815 |
+
msgid "You may combine multiple authentication factors for increased security."
|
|
|
2816 |
msgstr ""
|
2817 |
|
2818 |
+
#: src/features/login_protect.php:476
|
2819 |
+
msgid "Email Two-Factor Authentication"
|
2820 |
msgstr ""
|
2821 |
|
2822 |
+
#: src/features/login_protect.php:477
|
2823 |
+
msgid "2FA - Email"
|
2824 |
msgstr ""
|
2825 |
|
2826 |
+
#: src/features/login_protect.php:479
|
2827 |
msgid ""
|
2828 |
+
"Verifies the identity of users who log in to your site using email-based one-"
|
2829 |
+
"time-passwords."
|
2830 |
msgstr ""
|
2831 |
|
2832 |
+
#: src/features/login_protect.php:480 src/features/user_management.php:242
|
2833 |
+
msgid "However, if your host blocks email sending you may lock yourself out."
|
2834 |
msgstr ""
|
2835 |
|
2836 |
+
#: src/features/login_protect.php:486
|
2837 |
+
msgid "Google Authenticator Two-Factor Authentication"
|
2838 |
msgstr ""
|
2839 |
|
2840 |
+
#: src/features/login_protect.php:487
|
2841 |
+
msgid "2FA - Google Authenticator"
|
|
|
|
|
2842 |
msgstr ""
|
2843 |
|
2844 |
+
#: src/features/login_protect.php:489
|
2845 |
+
msgid ""
|
2846 |
+
"Verifies the identity of users who log in to your site using Google "
|
2847 |
+
"Authenticator one-time-passwords."
|
2848 |
msgstr ""
|
2849 |
|
2850 |
+
#: src/features/login_protect.php:495
|
2851 |
+
msgid "Brute Force Login Protection"
|
2852 |
msgstr ""
|
2853 |
|
2854 |
+
#: src/features/login_protect.php:496
|
2855 |
+
msgid "Brute Force"
|
2856 |
+
msgstr ""
|
2857 |
+
|
2858 |
+
#: src/features/login_protect.php:498
|
2859 |
+
msgid ""
|
2860 |
+
"Blocks brute force hacking attacks against your login and registration pages."
|
2861 |
+
msgstr ""
|
2862 |
+
|
2863 |
+
#: src/features/login_protect.php:504
|
2864 |
+
msgid "Yubikey Two-Factor Authentication"
|
2865 |
+
msgstr ""
|
2866 |
+
|
2867 |
+
#: src/features/login_protect.php:505
|
2868 |
+
msgid "2FA -Yubikey"
|
2869 |
+
msgstr ""
|
2870 |
+
|
2871 |
+
#: src/features/login_protect.php:507
|
2872 |
+
msgid ""
|
2873 |
+
"Verifies the identity of users who log in to your site using Yubikey one-"
|
2874 |
+
"time-passwords."
|
2875 |
+
msgstr ""
|
2876 |
+
|
2877 |
+
#: src/features/login_protect.php:538
|
2878 |
+
msgid "Hide WP Login Page"
|
2879 |
+
msgstr ""
|
2880 |
+
|
2881 |
+
#: src/features/login_protect.php:539
|
2882 |
+
msgid "Hide The WordPress Login Page"
|
2883 |
+
msgstr ""
|
2884 |
+
|
2885 |
+
#: src/features/login_protect.php:540
|
2886 |
+
msgid "Creating a path here will disable your wp-login.php"
|
2887 |
+
msgstr ""
|
2888 |
+
|
2889 |
+
#: src/features/login_protect.php:542
|
2890 |
+
#, php-format
|
2891 |
+
msgid "Only letters and numbers are permitted: %s"
|
2892 |
+
msgstr ""
|
2893 |
+
|
2894 |
+
#: src/features/login_protect.php:544
|
2895 |
+
#, php-format
|
2896 |
+
msgid "Your current login URL is: %s"
|
2897 |
+
msgstr ""
|
2898 |
+
|
2899 |
+
#: src/features/login_protect.php:549
|
2900 |
+
msgid "Require All Active Authentication Factors"
|
2901 |
+
msgstr ""
|
2902 |
+
|
2903 |
+
#: src/features/login_protect.php:550
|
2904 |
+
msgid ""
|
2905 |
+
"When enabled, all multi-factor authentication methods will be applied to a "
|
2906 |
+
"user login. Disable to require only one to login."
|
2907 |
+
msgstr ""
|
2908 |
+
|
2909 |
+
#: src/features/login_protect.php:554
|
2910 |
+
msgid "Multi-Factor By-Pass"
|
2911 |
+
msgstr ""
|
2912 |
+
|
2913 |
+
#: src/features/login_protect.php:555
|
2914 |
+
msgid ""
|
2915 |
+
"A User Can By-Pass Multi-Factor Authentication (MFA) For The Set Number Of "
|
2916 |
+
"Days"
|
2917 |
+
msgstr ""
|
2918 |
+
|
2919 |
+
#: src/features/login_protect.php:556
|
2920 |
+
msgid ""
|
2921 |
+
"Enter the number of days a user can by-pass future MFA after a successful "
|
2922 |
+
"MFA-login. 0 to disable."
|
2923 |
+
msgstr ""
|
2924 |
+
|
2925 |
+
#: src/features/login_protect.php:560
|
2926 |
+
#: src/processors/loginprotect_googleauthenticator.php:41
|
2927 |
+
#: src/processors/loginprotect_googleauthenticator.php:45
|
2928 |
+
#: src/processors/loginprotect_googleauthenticator.php:47
|
2929 |
+
#: src/processors/loginprotect_googleauthenticator.php:194
|
2930 |
+
msgid "Google Authenticator"
|
2931 |
+
msgstr ""
|
2932 |
+
|
2933 |
+
#: src/features/login_protect.php:561
|
2934 |
+
msgid "Allow Users To Use Google Authenticator"
|
2935 |
+
msgstr ""
|
2936 |
+
|
2937 |
+
#: src/features/login_protect.php:562
|
2938 |
+
msgid ""
|
2939 |
+
"When enabled, users will have the option to add Google Authenticator to "
|
2940 |
+
"their WordPress user profile"
|
2941 |
+
msgstr ""
|
2942 |
+
|
2943 |
+
#: src/features/login_protect.php:566 src/features/login_protect.php:572
|
2944 |
+
#: src/features/login_protect.php:575
|
2945 |
+
#: src/processors/loginprotect_twofactorauth.php:224
|
2946 |
+
#: src/processors/loginprotect_twofactorauth.php:225
|
2947 |
+
msgid "Email Authentication"
|
2948 |
+
msgstr ""
|
2949 |
+
|
2950 |
+
#: src/features/login_protect.php:567
|
2951 |
+
#, php-format
|
2952 |
+
msgid "Two-Factor Login Authentication By %s"
|
2953 |
+
msgstr ""
|
2954 |
+
|
2955 |
+
#: src/features/login_protect.php:567 src/features/plugin.php:871
|
2956 |
+
msgid "Email"
|
2957 |
+
msgstr ""
|
2958 |
+
|
2959 |
+
#: src/features/login_protect.php:568
|
2960 |
+
msgid ""
|
2961 |
+
"All users will be required to verify their login by email-based two-factor "
|
2962 |
+
"authentication."
|
2963 |
+
msgstr ""
|
2964 |
+
|
2965 |
+
#: src/features/login_protect.php:572
|
2966 |
+
#, php-format
|
2967 |
+
msgid "Enforce - %s"
|
2968 |
+
msgstr ""
|
2969 |
+
|
2970 |
+
#: src/features/login_protect.php:573
|
2971 |
+
msgid "All User Roles Subject To Email Authentication"
|
2972 |
+
msgstr ""
|
2973 |
+
|
2974 |
+
#: src/features/login_protect.php:574
|
2975 |
+
msgid ""
|
2976 |
+
"Enforces email-based authentication on all users with the selected roles."
|
2977 |
+
msgstr ""
|
2978 |
+
|
2979 |
+
#: src/features/login_protect.php:575
|
2980 |
+
#, php-format
|
2981 |
+
msgid "This setting only applies to %s."
|
2982 |
+
msgstr ""
|
2983 |
+
|
2984 |
+
#: src/features/login_protect.php:579
|
2985 |
+
msgid "Google reCAPTCHA"
|
2986 |
+
msgstr ""
|
2987 |
+
|
2988 |
+
#: src/features/login_protect.php:580
|
2989 |
+
msgid "Enable Google reCAPTCHA"
|
2990 |
+
msgstr ""
|
2991 |
+
|
2992 |
+
#: src/features/login_protect.php:581
|
2993 |
+
msgid "Use Google reCAPTCHA on the login screen."
|
2994 |
+
msgstr ""
|
2995 |
+
|
2996 |
+
#: src/features/login_protect.php:591
|
2997 |
+
msgid "Bot Protection"
|
2998 |
+
msgstr ""
|
2999 |
+
|
3000 |
+
#: src/features/login_protect.php:592
|
3001 |
+
msgid "Protect WP Login From Automated Login Attempts By Bots"
|
3002 |
+
msgstr ""
|
3003 |
+
|
3004 |
+
#: src/features/login_protect.php:593
|
3005 |
+
msgid ""
|
3006 |
+
"Adds a dynamically (Javascript) generated checkbox to the login form that "
|
3007 |
+
"prevents bots using automated login techniques."
|
3008 |
+
msgstr ""
|
3009 |
+
|
3010 |
+
#: src/features/login_protect.php:594
|
3011 |
+
msgid "ON"
|
3012 |
+
msgstr ""
|
3013 |
+
|
3014 |
+
#: src/features/login_protect.php:598
|
3015 |
+
msgid "Login Cooldown Interval"
|
3016 |
+
msgstr ""
|
3017 |
+
|
3018 |
+
#: src/features/login_protect.php:599
|
3019 |
+
msgid "Limit login attempts to every X seconds"
|
3020 |
+
msgstr ""
|
3021 |
+
|
3022 |
+
#: src/features/login_protect.php:600
|
3023 |
+
msgid ""
|
3024 |
+
"WordPress will process only ONE login attempt for every number of seconds "
|
3025 |
+
"specified."
|
3026 |
+
msgstr ""
|
3027 |
+
|
3028 |
+
#: src/features/login_protect.php:601
|
3029 |
+
msgid "Zero (0) turns this off."
|
3030 |
+
msgstr ""
|
3031 |
+
|
3032 |
+
#: src/features/login_protect.php:602 src/features/login_protect.php:645
|
3033 |
+
#: src/features/login_protect.php:652
|
3034 |
+
#, php-format
|
3035 |
+
msgid "Default: \"%s\"."
|
3036 |
+
msgstr ""
|
3037 |
+
|
3038 |
+
#: src/features/login_protect.php:607
|
3039 |
+
msgid "User Registration"
|
3040 |
+
msgstr ""
|
3041 |
+
|
3042 |
+
#: src/features/login_protect.php:608
|
3043 |
+
msgid "Apply Brute Force Protection To User Registration And Lost Passwords"
|
3044 |
+
msgstr ""
|
3045 |
+
|
3046 |
+
#: src/features/login_protect.php:609
|
3047 |
+
msgid ""
|
3048 |
+
"When enabled, settings in this section will also apply to new user "
|
3049 |
+
"registration and users trying to reset passwords."
|
3050 |
+
msgstr ""
|
3051 |
+
|
3052 |
+
#: src/features/login_protect.php:613
|
3053 |
+
msgid "Enable Yubikey Authentication"
|
3054 |
+
msgstr ""
|
3055 |
+
|
3056 |
+
#: src/features/login_protect.php:614
|
3057 |
+
msgid "Turn On / Off Yubikey Authentication On This Site"
|
3058 |
+
msgstr ""
|
3059 |
+
|
3060 |
+
#: src/features/login_protect.php:615
|
3061 |
+
msgid ""
|
3062 |
+
"Combined with your Yubikey API details this will form the basis of your "
|
3063 |
+
"Yubikey Authentication"
|
3064 |
+
msgstr ""
|
3065 |
+
|
3066 |
+
#: src/features/login_protect.php:619
|
3067 |
+
msgid "Yubikey App ID"
|
3068 |
+
msgstr ""
|
3069 |
+
|
3070 |
+
#: src/features/login_protect.php:620
|
3071 |
+
msgid "Your Unique Yubikey App ID"
|
3072 |
+
msgstr ""
|
3073 |
+
|
3074 |
+
#: src/features/login_protect.php:621
|
3075 |
+
msgid ""
|
3076 |
+
"Combined with your Yubikey API Key this will form the basis of your Yubikey "
|
3077 |
+
"Authentication"
|
3078 |
+
msgstr ""
|
3079 |
+
|
3080 |
+
#: src/features/login_protect.php:622
|
3081 |
+
msgid ""
|
3082 |
+
"Please review the info link on how to obtain your own Yubikey App ID and API "
|
3083 |
+
"Key."
|
3084 |
+
msgstr ""
|
3085 |
+
|
3086 |
+
#: src/features/login_protect.php:626
|
3087 |
+
msgid "Yubikey API Key"
|
3088 |
+
msgstr ""
|
3089 |
+
|
3090 |
+
#: src/features/login_protect.php:627
|
3091 |
+
msgid "Your Unique Yubikey App API Key"
|
3092 |
+
msgstr ""
|
3093 |
+
|
3094 |
+
#: src/features/login_protect.php:628
|
3095 |
+
msgid ""
|
3096 |
+
"Combined with your Yubikey App ID this will form the basis of your Yubikey "
|
3097 |
+
"Authentication."
|
3098 |
+
msgstr ""
|
3099 |
+
|
3100 |
+
#: src/features/login_protect.php:629
|
3101 |
+
msgid ""
|
3102 |
+
"Please review the info link on how to get your own Yubikey App ID and API "
|
3103 |
+
"Key."
|
3104 |
+
msgstr ""
|
3105 |
+
|
3106 |
+
#: src/features/login_protect.php:633
|
3107 |
+
msgid "Yubikey Unique Keys"
|
3108 |
+
msgstr ""
|
3109 |
+
|
3110 |
+
#: src/features/login_protect.php:634
|
3111 |
+
msgid ""
|
3112 |
+
"This method for Yubikeys is no longer supported. Please see your user profile"
|
3113 |
+
msgstr ""
|
3114 |
+
|
3115 |
+
#: src/features/login_protect.php:635
|
3116 |
+
#, php-format
|
3117 |
+
msgid "Format: %s"
|
3118 |
+
msgstr ""
|
3119 |
+
|
3120 |
+
#: src/features/login_protect.php:636
|
3121 |
+
msgid "Provide Username<->Yubikey Pairs that are usable for this site."
|
3122 |
+
msgstr ""
|
3123 |
+
|
3124 |
+
#: src/features/login_protect.php:637
|
3125 |
+
msgid ""
|
3126 |
+
"If a Username if not assigned a Yubikey, Yubikey Authentication is OFF for "
|
3127 |
+
"that user."
|
3128 |
+
msgstr ""
|
3129 |
+
|
3130 |
+
#: src/features/login_protect.php:638
|
3131 |
+
msgid ""
|
3132 |
+
"Each [Username,Key] pair should be separated by a new line: you only need to "
|
3133 |
+
"provide the first 12 characters of the yubikey."
|
3134 |
+
msgstr ""
|
3135 |
+
|
3136 |
+
#: src/features/login_protect.php:642
|
3137 |
+
msgid "GASP Checkbox Text"
|
3138 |
+
msgstr ""
|
3139 |
+
|
3140 |
+
#: src/features/login_protect.php:643
|
3141 |
+
msgid "The User Message Displayed Next To The GASP Checkbox"
|
3142 |
+
msgstr ""
|
3143 |
+
|
3144 |
+
#: src/features/login_protect.php:644
|
3145 |
+
msgid ""
|
3146 |
+
"You can change the text displayed to the user beside the checkbox if you "
|
3147 |
+
"need a custom message."
|
3148 |
+
msgstr ""
|
3149 |
+
|
3150 |
+
#: src/features/login_protect.php:649
|
3151 |
+
msgid "GASP Alert Text"
|
3152 |
+
msgstr ""
|
3153 |
+
|
3154 |
+
#: src/features/login_protect.php:650
|
3155 |
+
msgid "The Message Displayed If The User Doesn't Check The Box"
|
3156 |
+
msgstr ""
|
3157 |
+
|
3158 |
+
#: src/features/login_protect.php:651
|
3159 |
+
msgid ""
|
3160 |
+
"You can change the text displayed to the user in the alert message if they "
|
3161 |
+
"don't check the box."
|
3162 |
+
msgstr ""
|
3163 |
+
|
3164 |
+
#: src/features/plugin.php:263
|
3165 |
+
msgid "Sorry, you do not have permission to disable this plugin."
|
3166 |
+
msgstr ""
|
3167 |
+
|
3168 |
+
#: src/features/plugin.php:264
|
3169 |
+
msgid "You need to authenticate first."
|
3170 |
+
msgstr ""
|
3171 |
+
|
3172 |
+
#: src/features/plugin.php:606
|
3173 |
+
#, php-format
|
3174 |
+
msgid "This Site Is Protected By %s"
|
3175 |
+
msgstr ""
|
3176 |
+
|
3177 |
+
#: src/features/plugin.php:629
|
3178 |
+
msgid "Plugin Actions"
|
3179 |
+
msgstr ""
|
3180 |
+
|
3181 |
+
#: src/features/plugin.php:630
|
3182 |
+
msgid "E.g. Import/Export"
|
3183 |
+
msgstr ""
|
3184 |
+
|
3185 |
+
#: src/features/plugin.php:653
|
3186 |
+
msgid "Global Security Plugin Disable"
|
3187 |
+
msgstr ""
|
3188 |
+
|
3189 |
+
#: src/features/plugin.php:658 src/features/plugin.php:659
|
3190 |
+
msgid "Plugin Defaults"
|
3191 |
+
msgstr ""
|
3192 |
+
|
3193 |
+
#: src/features/plugin.php:661
|
3194 |
+
msgid "Important default settings used throughout the plugin."
|
3195 |
+
msgstr ""
|
3196 |
+
|
3197 |
+
#: src/features/plugin.php:666 src/features/plugin.php:671
|
3198 |
+
msgid "Import"
|
3199 |
+
msgstr ""
|
3200 |
+
|
3201 |
+
#: src/features/plugin.php:666 src/features/plugin.php:671
|
3202 |
+
msgid "Export"
|
3203 |
+
msgstr ""
|
3204 |
+
|
3205 |
+
#: src/features/plugin.php:668
|
3206 |
+
msgid ""
|
3207 |
+
"Automatically import options, and deploy configurations across your entire "
|
3208 |
+
"network."
|
3209 |
+
msgstr ""
|
3210 |
+
|
3211 |
+
#: src/features/plugin.php:669
|
3212 |
+
msgid "This is a Pro-only feature."
|
3213 |
+
msgstr ""
|
3214 |
+
|
3215 |
+
#: src/features/plugin.php:675
|
3216 |
+
msgid "General Plugin Options"
|
3217 |
+
msgstr ""
|
3218 |
+
|
3219 |
+
#: src/features/plugin.php:676
|
3220 |
+
msgid "General Options"
|
3221 |
+
msgstr ""
|
3222 |
+
|
3223 |
+
#: src/features/plugin.php:680 src/features/plugin.php:681
|
3224 |
+
msgid "Google"
|
3225 |
+
msgstr ""
|
3226 |
+
|
3227 |
+
#: src/features/plugin.php:683
|
3228 |
+
msgid "Setup Google reCAPTCHA for use across Shield."
|
3229 |
+
msgstr ""
|
3230 |
+
|
3231 |
+
#: src/features/plugin.php:684
|
3232 |
+
msgid "Note: you must create your own Google reCAPTCHA API Keys."
|
3233 |
+
msgstr ""
|
3234 |
+
|
3235 |
+
#: src/features/plugin.php:685
|
3236 |
+
msgid "Invisible Google reCAPTCHA is available with Shield Pro."
|
3237 |
+
msgstr ""
|
3238 |
+
|
3239 |
+
#: src/features/plugin.php:690 src/features/plugin.php:691
|
3240 |
+
msgid "Duo Security"
|
3241 |
+
msgstr ""
|
3242 |
+
|
3243 |
+
#: src/features/plugin.php:714
|
3244 |
+
msgid "Enable/Disable Plugin Modules"
|
3245 |
+
msgstr ""
|
3246 |
+
|
3247 |
+
#: src/features/plugin.php:715
|
3248 |
+
msgid "Enable/Disable All Plugin Modules"
|
3249 |
+
msgstr ""
|
3250 |
+
|
3251 |
+
#: src/features/plugin.php:716
|
3252 |
+
#, php-format
|
3253 |
+
msgid "Uncheck this option to disable all %s features."
|
3254 |
+
msgstr ""
|
3255 |
+
|
3256 |
+
#: src/features/plugin.php:721
|
3257 |
+
msgid "Information Gathering"
|
3258 |
+
msgstr ""
|
3259 |
+
|
3260 |
+
#: src/features/plugin.php:722
|
3261 |
+
msgid "Permit Anonymous Usage Information Gathering"
|
3262 |
+
msgstr ""
|
3263 |
+
|
3264 |
+
#: src/features/plugin.php:723
|
3265 |
+
msgid ""
|
3266 |
+
"Allows us to gather information on statistics and features in-use across our "
|
3267 |
+
"client installations."
|
3268 |
+
msgstr ""
|
3269 |
+
|
3270 |
+
#: src/features/plugin.php:724
|
3271 |
+
msgid ""
|
3272 |
+
"This information is strictly anonymous and contains no personally, or "
|
3273 |
+
"otherwise, identifiable data."
|
3274 |
+
msgstr ""
|
3275 |
+
|
3276 |
+
#: src/features/plugin.php:725
|
3277 |
+
msgid "Click to see the exact data that would be sent."
|
3278 |
+
msgstr ""
|
3279 |
+
|
3280 |
+
#: src/features/plugin.php:729
|
3281 |
+
msgid "IP Source"
|
3282 |
+
msgstr ""
|
3283 |
+
|
3284 |
+
#: src/features/plugin.php:730
|
3285 |
+
msgid "Which IP Address Is Yours"
|
3286 |
+
msgstr ""
|
3287 |
+
|
3288 |
+
#: src/features/plugin.php:731
|
3289 |
+
msgid ""
|
3290 |
+
"There are many possible ways to detect visitor IP addresses. If Auto-Detect "
|
3291 |
+
"is not working, please select yours from the list."
|
3292 |
+
msgstr ""
|
3293 |
+
|
3294 |
+
#: src/features/plugin.php:732
|
3295 |
+
msgid ""
|
3296 |
+
"If the option you select becomes unavailable, we will revert to auto "
|
3297 |
+
"detection."
|
3298 |
+
msgstr ""
|
3299 |
+
|
3300 |
+
#: src/features/plugin.php:733
|
3301 |
+
#, php-format
|
3302 |
+
msgid "Current source is: %s"
|
3303 |
+
msgstr ""
|
3304 |
+
|
3305 |
+
#: src/features/plugin.php:738
|
3306 |
+
msgid "Report Email"
|
3307 |
+
msgstr ""
|
3308 |
+
|
3309 |
+
#: src/features/plugin.php:739
|
3310 |
+
msgid "Where to send email reports"
|
3311 |
+
msgstr ""
|
3312 |
+
|
3313 |
+
#: src/features/plugin.php:740
|
3314 |
+
#, php-format
|
3315 |
+
msgid "If this is empty, it will default to the blog admin email address: %s"
|
3316 |
+
msgstr ""
|
3317 |
+
|
3318 |
+
#: src/features/plugin.php:744
|
3319 |
+
msgid "In-Plugin Notices"
|
3320 |
+
msgstr ""
|
3321 |
+
|
3322 |
+
#: src/features/plugin.php:745
|
3323 |
+
msgid "Display Plugin Specific Notices"
|
3324 |
+
msgstr ""
|
3325 |
+
|
3326 |
+
#: src/features/plugin.php:746
|
3327 |
+
msgid ""
|
3328 |
+
"Disable this option to hide certain plugin admin notices about available "
|
3329 |
+
"updates and post-update notices."
|
3330 |
+
msgstr ""
|
3331 |
+
|
3332 |
+
#: src/features/plugin.php:750
|
3333 |
+
msgid "Show Plugin Badge"
|
3334 |
+
msgstr ""
|
3335 |
+
|
3336 |
+
#: src/features/plugin.php:751
|
3337 |
+
msgid "Display Plugin Badge On Your Site"
|
3338 |
+
msgstr ""
|
3339 |
+
|
3340 |
+
#: src/features/plugin.php:752
|
3341 |
+
msgid ""
|
3342 |
+
"Enabling this option helps support the plugin by spreading the word about it "
|
3343 |
+
"on your website."
|
3344 |
+
msgstr ""
|
3345 |
+
|
3346 |
+
#: src/features/plugin.php:753
|
3347 |
+
msgid ""
|
3348 |
+
"The plugin badge also lets visitors know your are taking your website "
|
3349 |
+
"security seriously."
|
3350 |
+
msgstr ""
|
3351 |
+
|
3352 |
+
#: src/features/plugin.php:754
|
3353 |
+
msgid "Read this carefully before enabling this option."
|
3354 |
+
msgstr ""
|
3355 |
+
|
3356 |
+
#: src/features/plugin.php:758
|
3357 |
+
msgid "Delete Plugin Settings"
|
3358 |
+
msgstr ""
|
3359 |
+
|
3360 |
+
#: src/features/plugin.php:759
|
3361 |
+
msgid "Delete All Plugin Settings Upon Plugin Deactivation"
|
3362 |
+
msgstr ""
|
3363 |
+
|
3364 |
+
#: src/features/plugin.php:760
|
3365 |
+
msgid "Careful: Removes all plugin options when you deactivate the plugin"
|
3366 |
+
msgstr ""
|
3367 |
+
|
3368 |
+
#: src/features/plugin.php:764
|
3369 |
+
msgid "XML-RPC Compatibility"
|
3370 |
+
msgstr ""
|
3371 |
+
|
3372 |
+
#: src/features/plugin.php:765
|
3373 |
+
msgid "Allow Login Through XML-RPC To By-Pass Accounts Management Rules"
|
3374 |
+
msgstr ""
|
3375 |
+
|
3376 |
+
#: src/features/plugin.php:766
|
3377 |
+
msgid ""
|
3378 |
+
"Enable this if you need XML-RPC functionality e.g. if you use the WordPress "
|
3379 |
+
"iPhone/Android App."
|
3380 |
+
msgstr ""
|
3381 |
+
|
3382 |
+
#: src/features/plugin.php:770
|
3383 |
+
msgid "Allow Import/Export"
|
3384 |
+
msgstr ""
|
3385 |
+
|
3386 |
+
#: src/features/plugin.php:771
|
3387 |
+
msgid "Allow Import And Export Of Options On This Site"
|
3388 |
+
msgstr ""
|
3389 |
+
|
3390 |
+
#: src/features/plugin.php:772
|
3391 |
+
msgid "Uncheck this box to completely disable import and export of options."
|
3392 |
+
msgstr ""
|
3393 |
+
|
3394 |
+
#: src/features/plugin.php:773
|
3395 |
+
msgid "Note"
|
3396 |
+
msgstr ""
|
3397 |
+
|
3398 |
+
#: src/features/plugin.php:773
|
3399 |
+
msgid "Import/Export is a premium-only feature."
|
3400 |
+
msgstr ""
|
3401 |
+
|
3402 |
+
#: src/features/plugin.php:777
|
3403 |
+
msgid "Export Whitelist"
|
3404 |
+
msgstr ""
|
3405 |
+
|
3406 |
+
#: src/features/plugin.php:778
|
3407 |
+
msgid "Whitelisted Sites To Export Options From This Site"
|
3408 |
+
msgstr ""
|
3409 |
+
|
3410 |
+
#: src/features/plugin.php:779
|
3411 |
+
msgid "Whitelisted sites may export options from this site without the key."
|
3412 |
+
msgstr ""
|
3413 |
+
|
3414 |
+
#: src/features/plugin.php:780
|
3415 |
+
msgid "List each site URL on a new line."
|
3416 |
+
msgstr ""
|
3417 |
+
|
3418 |
+
#: src/features/plugin.php:781
|
3419 |
+
msgid "This is to be used in conjunction with the Master Import Site feature."
|
3420 |
+
msgstr ""
|
3421 |
+
|
3422 |
+
#: src/features/plugin.php:785
|
3423 |
+
msgid "Master Import Site"
|
3424 |
+
msgstr ""
|
3425 |
+
|
3426 |
+
#: src/features/plugin.php:786
|
3427 |
+
msgid "Automatically Import Options From This Site URL"
|
3428 |
+
msgstr ""
|
3429 |
+
|
3430 |
+
#: src/features/plugin.php:787
|
3431 |
+
msgid "Supplying a site URL here will make this site an 'Options Slave'."
|
3432 |
+
msgstr ""
|
3433 |
+
|
3434 |
+
#: src/features/plugin.php:788
|
3435 |
+
msgid ""
|
3436 |
+
"Options will be automatically imported from the Master Import site each day."
|
3437 |
+
msgstr ""
|
3438 |
+
|
3439 |
+
#: src/features/plugin.php:789 src/processors/loginprotect_wplogin.php:74
|
3440 |
+
#: src/processors/loginprotect_wplogin.php:93
|
3441 |
+
msgid "Warning"
|
3442 |
+
msgstr ""
|
3443 |
+
|
3444 |
+
#: src/features/plugin.php:789
|
3445 |
+
msgid ""
|
3446 |
+
"Use of this feature will overwrite existing options and replace them with "
|
3447 |
+
"those from the Master Import Site."
|
3448 |
+
msgstr ""
|
3449 |
+
|
3450 |
+
#: src/features/plugin.php:793
|
3451 |
+
msgid "Notify Whitelist"
|
3452 |
+
msgstr ""
|
3453 |
+
|
3454 |
+
#: src/features/plugin.php:794
|
3455 |
+
msgid "Notify Sites On The Whitelist To Update Options From Master"
|
3456 |
+
msgstr ""
|
3457 |
+
|
3458 |
+
#: src/features/plugin.php:795
|
3459 |
+
msgid ""
|
3460 |
+
"When enabled, manual options saving will notify sites on the whitelist to "
|
3461 |
+
"export options from the Master site."
|
3462 |
+
msgstr ""
|
3463 |
+
|
3464 |
+
#: src/features/plugin.php:799
|
3465 |
+
msgid "Secret Key"
|
3466 |
+
msgstr ""
|
3467 |
+
|
3468 |
+
#: src/features/plugin.php:800
|
3469 |
+
msgid "Import/Export Secret Key"
|
3470 |
+
msgstr ""
|
3471 |
+
|
3472 |
+
#: src/features/plugin.php:801
|
3473 |
+
msgid ""
|
3474 |
+
"Keep this Secret Key private as it will allow the import and export of "
|
3475 |
+
"options."
|
3476 |
+
msgstr ""
|
3477 |
+
|
3478 |
+
#: src/features/plugin.php:805
|
3479 |
+
msgid "Installation ID"
|
3480 |
+
msgstr ""
|
3481 |
+
|
3482 |
+
#: src/features/plugin.php:806
|
3483 |
+
msgid "Unique Plugin Installation ID"
|
3484 |
+
msgstr ""
|
3485 |
+
|
3486 |
+
#: src/features/plugin.php:807
|
3487 |
+
msgid "Keep this ID private."
|
3488 |
+
msgstr ""
|
3489 |
+
|
3490 |
+
#: src/features/plugin.php:811
|
3491 |
+
msgid "reCAPTCHA Secret"
|
3492 |
+
msgstr ""
|
3493 |
+
|
3494 |
+
#: src/features/plugin.php:812
|
3495 |
+
msgid "Google reCAPTCHA Secret Key"
|
3496 |
+
msgstr ""
|
3497 |
+
|
3498 |
+
#: src/features/plugin.php:813
|
3499 |
+
msgid "Enter your Google reCAPTCHA secret key for use throughout the plugin."
|
3500 |
+
msgstr ""
|
3501 |
+
|
3502 |
+
#: src/features/plugin.php:817
|
3503 |
+
msgid "reCAPTCHA Site Key"
|
3504 |
+
msgstr ""
|
3505 |
+
|
3506 |
+
#: src/features/plugin.php:818
|
3507 |
+
msgid "Google reCAPTCHA Site Key"
|
3508 |
+
msgstr ""
|
3509 |
+
|
3510 |
+
#: src/features/plugin.php:819
|
3511 |
+
msgid "Enter your Google reCAPTCHA site key for use throughout the plugin"
|
3512 |
+
msgstr ""
|
3513 |
+
|
3514 |
+
#: src/features/plugin.php:824
|
3515 |
+
msgid "How Google reCAPTCHA Will Be Displayed By Default"
|
3516 |
+
msgstr ""
|
3517 |
+
|
3518 |
+
#: src/features/plugin.php:842
|
3519 |
+
msgid "IP Whitelist"
|
3520 |
+
msgstr ""
|
3521 |
+
|
3522 |
+
#: src/features/plugin.php:843
|
3523 |
+
msgid "IP Address White List"
|
3524 |
+
msgstr ""
|
3525 |
+
|
3526 |
+
#: src/features/plugin.php:844
|
3527 |
+
msgid ""
|
3528 |
+
"Any IP addresses on this list will by-pass all Plugin Security Checking."
|
3529 |
+
msgstr ""
|
3530 |
+
|
3531 |
+
#: src/features/plugin.php:845 src/processors/ips.php:113
|
3532 |
+
#: src/processors/plugin.php:144 src/processors/plugin_badge.php:37
|
3533 |
+
#, php-format
|
3534 |
+
msgid "Your IP address is: %s"
|
3535 |
+
msgstr ""
|
3536 |
+
|
3537 |
+
#: src/features/plugin.php:846
|
3538 |
+
msgid "Choose IP Addresses To Blacklist"
|
3539 |
+
msgstr ""
|
3540 |
+
|
3541 |
+
#: src/features/plugin.php:848
|
3542 |
+
msgid "Blacklist"
|
3543 |
+
msgstr ""
|
3544 |
+
|
3545 |
+
#: src/features/plugin.php:849
|
3546 |
+
msgid "Logging"
|
3547 |
+
msgstr ""
|
3548 |
+
|
3549 |
+
#: src/features/plugin.php:850
|
3550 |
+
#, php-format
|
3551 |
+
msgid ""
|
3552 |
+
"User \"%s\" was forcefully logged out as they were not verified by either "
|
3553 |
+
"cookie or IP address (or both)."
|
3554 |
+
msgstr ""
|
3555 |
+
|
3556 |
+
#: src/features/plugin.php:851
|
3557 |
+
#, php-format
|
3558 |
+
msgid ""
|
3559 |
+
"User \"%s\" was found to be un-verified at the given IP Address: \"%s\"."
|
3560 |
+
msgstr ""
|
3561 |
+
|
3562 |
+
#: src/features/plugin.php:852
|
3563 |
+
msgid "Cookie"
|
3564 |
+
msgstr ""
|
3565 |
+
|
3566 |
+
#: src/features/plugin.php:854
|
3567 |
+
msgid "IP"
|
3568 |
+
msgstr ""
|
3569 |
+
|
3570 |
+
#: src/features/plugin.php:855
|
3571 |
+
msgid ""
|
3572 |
+
"This will restrict all user login sessions to a single browser. Use this if "
|
3573 |
+
"your users have dynamic IP addresses."
|
3574 |
+
msgstr ""
|
3575 |
+
|
3576 |
+
#: src/features/plugin.php:856
|
3577 |
+
msgid ""
|
3578 |
+
"All users will be required to authenticate their login by email-based two-"
|
3579 |
+
"factor authentication, when logging in from a new IP address"
|
3580 |
+
msgstr ""
|
3581 |
+
|
3582 |
+
#: src/features/plugin.php:857
|
3583 |
+
msgid "2-Factor Auth"
|
3584 |
+
msgstr ""
|
3585 |
+
|
3586 |
+
#: src/features/plugin.php:858
|
3587 |
+
msgid "Include Logged-In Users"
|
3588 |
+
msgstr ""
|
3589 |
+
|
3590 |
+
#: src/features/plugin.php:859
|
3591 |
+
msgid "You may also enable GASP for logged in users"
|
3592 |
+
msgstr ""
|
3593 |
+
|
3594 |
+
#: src/features/plugin.php:860
|
3595 |
+
msgid ""
|
3596 |
+
"Since logged-in users would be expected to be vetted already, this is off by "
|
3597 |
+
"default."
|
3598 |
+
msgstr ""
|
3599 |
+
|
3600 |
+
#: src/features/plugin.php:862
|
3601 |
+
msgid "Protect your security plugin not just your WordPress site"
|
3602 |
+
msgstr ""
|
3603 |
+
|
3604 |
+
#: src/features/plugin.php:865
|
3605 |
+
msgid "Get a view on what happens on your site, when it happens"
|
3606 |
+
msgstr ""
|
3607 |
+
|
3608 |
+
#: src/features/plugin.php:868
|
3609 |
+
msgid "Take back full control of WordPress automatic updates"
|
3610 |
+
msgstr ""
|
3611 |
+
|
3612 |
+
#: src/features/plugin.php:869
|
3613 |
+
msgid "Comments SPAM"
|
3614 |
+
msgstr ""
|
3615 |
+
|
3616 |
+
#: src/features/plugin.php:870
|
3617 |
+
msgid "Block comment SPAM and retain your privacy"
|
3618 |
+
msgstr ""
|
3619 |
+
|
3620 |
+
#: src/features/plugin.php:873
|
3621 |
+
msgid "Automatically block malicious URLs and data sent to your site"
|
3622 |
+
msgstr ""
|
3623 |
+
|
3624 |
+
#: src/features/plugin.php:875
|
3625 |
+
msgid "HTTP Headers"
|
3626 |
+
msgstr ""
|
3627 |
+
|
3628 |
+
#: src/features/plugin.php:876
|
3629 |
+
msgid "Control HTTP Security Headers"
|
3630 |
+
msgstr ""
|
3631 |
+
|
3632 |
+
#: src/features/plugin.php:878
|
3633 |
+
msgid "Manage Visitor IP Address"
|
3634 |
+
msgstr ""
|
3635 |
+
|
3636 |
+
#: src/features/plugin.php:880
|
3637 |
+
msgid "Harden the more loosely controlled settings of your site"
|
3638 |
+
msgstr ""
|
3639 |
+
|
3640 |
+
#: src/features/plugin.php:882
|
3641 |
+
msgid ""
|
3642 |
+
"Block brute force attacks and secure user identities with Two-Factor "
|
3643 |
+
"Authentication"
|
3644 |
+
msgstr ""
|
3645 |
+
|
3646 |
+
#: src/features/plugin.php:883
|
3647 |
+
msgid "Dashboard"
|
3648 |
+
msgstr ""
|
3649 |
+
|
3650 |
+
#: src/features/plugin.php:884
|
3651 |
+
msgid "General Plugin Settings"
|
3652 |
+
msgstr ""
|
3653 |
+
|
3654 |
+
#: src/features/plugin.php:885
|
3655 |
+
msgid "Statistics"
|
3656 |
+
msgstr ""
|
3657 |
+
|
3658 |
+
#: src/features/plugin.php:886
|
3659 |
+
msgid "Summary of the main security actions taken by this plugin"
|
3660 |
+
msgstr ""
|
3661 |
+
|
3662 |
+
#: src/features/plugin.php:887
|
3663 |
+
msgid "Stats Viewer"
|
3664 |
+
msgstr ""
|
3665 |
+
|
3666 |
+
#: src/features/plugin.php:888
|
3667 |
+
msgid "Premium Support"
|
3668 |
+
msgstr ""
|
3669 |
+
|
3670 |
+
#: src/features/plugin.php:889
|
3671 |
+
msgid "Premium Plugin Support Centre"
|
3672 |
+
msgstr ""
|
3673 |
+
|
3674 |
+
#: src/features/plugin.php:890 src/features/sessions.php:54
|
3675 |
+
#: src/features/user_management.php:214
|
3676 |
+
msgid "User Management"
|
3677 |
+
msgstr ""
|
3678 |
+
|
3679 |
+
#: src/features/plugin.php:891
|
3680 |
+
msgid ""
|
3681 |
+
"Get true user sessions and control account sharing, session duration and "
|
3682 |
+
"timeouts"
|
3683 |
+
msgstr ""
|
3684 |
+
|
3685 |
+
#: src/features/plugin.php:892
|
3686 |
+
msgid "Two-Factor Authentication"
|
3687 |
+
msgstr ""
|
3688 |
+
|
3689 |
+
#: src/features/sessions.php:53
|
3690 |
+
msgid "Creates and Manages User Sessions."
|
3691 |
+
msgstr ""
|
3692 |
+
|
3693 |
+
#: src/features/statistics.php:45
|
3694 |
+
msgid "Helps you see at a glance how effective the plugin has been."
|
3695 |
+
msgstr ""
|
3696 |
+
|
3697 |
+
#: src/features/statistics.php:54
|
3698 |
+
msgid "To track stats and issue reports."
|
3699 |
+
msgstr ""
|
3700 |
+
|
3701 |
+
#: src/features/statistics.php:61
|
3702 |
+
msgid "Statistics Sharing"
|
3703 |
+
msgstr ""
|
3704 |
+
|
3705 |
+
#: src/features/statistics.php:63
|
3706 |
+
msgid ""
|
3707 |
+
"Help us to provide globally accessible statistics on the effectiveness of "
|
3708 |
+
"the plugin."
|
3709 |
+
msgstr ""
|
3710 |
+
|
3711 |
+
#: src/features/statistics.php:64
|
3712 |
+
msgid "Enabling this option helps us improve our plugin over time."
|
3713 |
+
msgstr ""
|
3714 |
+
|
3715 |
+
#: src/features/statistics.php:65
|
3716 |
+
msgid "All statistics data collection is 100% anonymous."
|
3717 |
+
msgstr ""
|
3718 |
+
|
3719 |
+
#: src/features/statistics.php:65
|
3720 |
+
msgid ""
|
3721 |
+
"Neither we nor anyone else will be able to trace the data back to the "
|
3722 |
+
"originating site."
|
3723 |
+
msgstr ""
|
3724 |
+
|
3725 |
+
#: src/features/statistics.php:68
|
3726 |
+
msgid "Sharing"
|
3727 |
+
msgstr ""
|
3728 |
+
|
3729 |
+
#: src/features/user_management.php:109 src/processors/statistics.php:135
|
3730 |
+
msgid "User Sessions"
|
3731 |
+
msgstr ""
|
3732 |
+
|
3733 |
+
#: src/features/user_management.php:110
|
3734 |
+
msgid "Review user sessions"
|
3735 |
+
msgstr ""
|
3736 |
+
|
3737 |
+
#: src/features/user_management.php:112
|
3738 |
+
msgid "Current User Sessions"
|
3739 |
+
msgstr ""
|
3740 |
+
|
3741 |
+
#: src/features/user_management.php:114
|
3742 |
+
msgid "Logged In At"
|
3743 |
+
msgstr ""
|
3744 |
+
|
3745 |
+
#: src/features/user_management.php:115
|
3746 |
+
msgid "Last Activity At"
|
3747 |
+
msgstr ""
|
3748 |
+
|
3749 |
+
#: src/features/user_management.php:116
|
3750 |
+
msgid "Last Activity URI"
|
3751 |
+
msgstr ""
|
3752 |
+
|
3753 |
+
#: src/features/user_management.php:117
|
3754 |
+
msgid "Login IP"
|
3755 |
+
msgstr ""
|
3756 |
+
|
3757 |
+
#: src/features/user_management.php:118
|
3758 |
+
msgid ""
|
3759 |
+
"You need to enable the User Management feature to view and manage user "
|
3760 |
+
"sessions."
|
3761 |
+
msgstr ""
|
3762 |
+
|
3763 |
+
#: src/features/user_management.php:162 src/features/user_management.php:163
|
3764 |
+
msgid "Weak"
|
3765 |
+
msgstr ""
|
3766 |
+
|
3767 |
+
#: src/features/user_management.php:164
|
3768 |
+
msgid "Medium"
|
3769 |
+
msgstr ""
|
3770 |
+
|
3771 |
+
#: src/features/user_management.php:165
|
3772 |
+
msgid "Strong"
|
3773 |
+
msgstr ""
|
3774 |
+
|
3775 |
+
#: src/features/user_management.php:166
|
3776 |
+
msgid "Very Strong"
|
3777 |
+
msgstr ""
|
3778 |
+
|
3779 |
+
#: src/features/user_management.php:213
|
3780 |
+
msgid ""
|
3781 |
+
"User Management offers real user sessions, finer control over user session "
|
3782 |
+
"time-out, and ensures users have logged-in in a correct manner."
|
3783 |
+
msgstr ""
|
3784 |
+
|
3785 |
+
#: src/features/user_management.php:220 src/features/user_management.php:221
|
3786 |
+
msgid "Password Policies"
|
3787 |
+
msgstr ""
|
3788 |
+
|
3789 |
+
#: src/features/user_management.php:223
|
3790 |
+
msgid "Have full control over passwords used by users on the site."
|
3791 |
+
msgstr ""
|
3792 |
+
|
3793 |
+
#: src/features/user_management.php:230
|
3794 |
+
msgid "Admin Login Notification"
|
3795 |
+
msgstr ""
|
3796 |
+
|
3797 |
+
#: src/features/user_management.php:232
|
3798 |
+
msgid ""
|
3799 |
+
"So you can be made aware of when a WordPress administrator has logged into "
|
3800 |
+
"your site when you are not expecting it."
|
3801 |
+
msgstr ""
|
3802 |
+
|
3803 |
+
#: src/features/user_management.php:235
|
3804 |
+
msgid "Notifications"
|
3805 |
+
msgstr ""
|
3806 |
+
|
3807 |
+
#: src/features/user_management.php:239
|
3808 |
+
msgid "Multi-Factor User Authentication"
|
3809 |
+
msgstr ""
|
3810 |
+
|
3811 |
+
#: src/features/user_management.php:248
|
3812 |
+
msgid "User Session Management"
|
3813 |
+
msgstr ""
|
3814 |
+
|
3815 |
+
#: src/features/user_management.php:250
|
3816 |
+
msgid ""
|
3817 |
+
"Allows you to better control user sessions on your site and expire idle "
|
3818 |
+
"sessions and prevent account sharing."
|
3819 |
+
msgstr ""
|
3820 |
+
|
3821 |
+
#: src/features/user_management.php:253
|
3822 |
+
msgid "Session Options"
|
3823 |
+
msgstr ""
|
3824 |
+
|
3825 |
+
#: src/features/user_management.php:282
|
3826 |
+
msgid "Admin Login Notification Email"
|
3827 |
+
msgstr ""
|
3828 |
+
|
3829 |
+
#: src/features/user_management.php:283
|
3830 |
+
msgid "Send An Notification Email When Administrator Logs In"
|
3831 |
+
msgstr ""
|
3832 |
+
|
3833 |
+
#: src/features/user_management.php:284
|
3834 |
+
msgid ""
|
3835 |
+
"If you would like to be notified every time an administrator user logs into "
|
3836 |
+
"this WordPress site, enter a notification email address."
|
3837 |
+
msgstr ""
|
3838 |
+
|
3839 |
+
#: src/features/user_management.php:285
|
3840 |
+
msgid "No email address - No Notification."
|
3841 |
+
msgstr ""
|
3842 |
+
|
3843 |
+
#: src/features/user_management.php:289
|
3844 |
+
msgid "Session Timeout"
|
3845 |
+
msgstr ""
|
3846 |
+
|
3847 |
+
#: src/features/user_management.php:290
|
3848 |
+
msgid "Specify How Many Days After Login To Automatically Force Re-Login"
|
3849 |
+
msgstr ""
|
3850 |
+
|
3851 |
+
#: src/features/user_management.php:291
|
3852 |
+
msgid ""
|
3853 |
+
"WordPress default is 2 days, or 14 days if you check the \"Remember Me\" box."
|
3854 |
+
msgstr ""
|
3855 |
+
|
3856 |
+
#: src/features/user_management.php:292
|
3857 |
+
#, php-format
|
3858 |
+
msgid "This cannot be less than %s."
|
3859 |
+
msgstr ""
|
3860 |
+
|
3861 |
+
#: src/features/user_management.php:293
|
3862 |
+
#, php-format
|
3863 |
+
msgid "Default: %s."
|
3864 |
+
msgstr ""
|
3865 |
+
|
3866 |
+
#: src/features/user_management.php:298
|
3867 |
+
msgid "Idle Timeout"
|
3868 |
+
msgstr ""
|
3869 |
+
|
3870 |
+
#: src/features/user_management.php:299
|
3871 |
+
msgid "Specify How Many Hours After Inactivity To Automatically Logout User"
|
3872 |
+
msgstr ""
|
3873 |
+
|
3874 |
+
#: src/features/user_management.php:300
|
3875 |
+
msgid ""
|
3876 |
+
"If the user is inactive for the number of hours specified, they will be "
|
3877 |
+
"forcefully logged out next time they return."
|
3878 |
+
msgstr ""
|
3879 |
+
|
3880 |
+
#: src/features/user_management.php:301
|
3881 |
+
#, php-format
|
3882 |
+
msgid "Set to %s to turn off this option."
|
3883 |
+
msgstr ""
|
3884 |
+
|
3885 |
+
#: src/features/user_management.php:305
|
3886 |
+
msgid "Lock To Location"
|
3887 |
+
msgstr ""
|
3888 |
+
|
3889 |
+
#: src/features/user_management.php:306
|
3890 |
+
msgid "Locks A User Session To IP address"
|
3891 |
+
msgstr ""
|
3892 |
+
|
3893 |
+
#: src/features/user_management.php:307
|
3894 |
+
msgid ""
|
3895 |
+
"When selected, a session is restricted to the same IP address as when the "
|
3896 |
+
"user logged in."
|
3897 |
+
msgstr ""
|
3898 |
+
|
3899 |
+
#: src/features/user_management.php:308
|
3900 |
+
msgid ""
|
3901 |
+
"If a logged-in user's IP address changes, the session will be invalidated "
|
3902 |
+
"and they'll be forced to re-login to WordPress."
|
3903 |
+
msgstr ""
|
3904 |
+
|
3905 |
+
#: src/features/user_management.php:312
|
3906 |
+
msgid "Max Simultaneous Sessions"
|
3907 |
+
msgstr ""
|
3908 |
+
|
3909 |
+
#: src/features/user_management.php:313
|
3910 |
+
msgid "Limit Simultaneous Sessions For The Same Username"
|
3911 |
+
msgstr ""
|
3912 |
+
|
3913 |
+
#: src/features/user_management.php:314
|
3914 |
+
msgid ""
|
3915 |
+
"The number provided here is the maximum number of simultaneous, distinct, "
|
3916 |
+
"sessions allowed for any given username."
|
3917 |
+
msgstr ""
|
3918 |
+
|
3919 |
+
#: src/features/user_management.php:315
|
3920 |
+
msgid "Zero (0) will allow unlimited simultaneous sessions."
|
3921 |
+
msgstr ""
|
3922 |
+
|
3923 |
+
#: src/features/user_management.php:319
|
3924 |
+
msgid "Enable Password Policies"
|
3925 |
+
msgstr ""
|
3926 |
+
|
3927 |
+
#: src/features/user_management.php:320
|
3928 |
+
msgid "Enable The Password Policies Detailed Below"
|
3929 |
+
msgstr ""
|
3930 |
+
|
3931 |
+
#: src/features/user_management.php:321
|
3932 |
+
msgid "Turn on/off all password policy settings."
|
3933 |
+
msgstr ""
|
3934 |
+
|
3935 |
+
#: src/features/user_management.php:325
|
3936 |
+
msgid "Prevent Pwned Passwords"
|
3937 |
+
msgstr ""
|
3938 |
+
|
3939 |
+
#: src/features/user_management.php:326
|
3940 |
+
msgid "Prevent Use Of Any Pwned Passwords"
|
3941 |
+
msgstr ""
|
3942 |
+
|
3943 |
+
#: src/features/user_management.php:327
|
3944 |
+
msgid ""
|
3945 |
+
"Prevents users from using any passwords found on the public available list "
|
3946 |
+
"of \"pwned\" passwords."
|
3947 |
+
msgstr ""
|
3948 |
+
|
3949 |
+
#: src/features/user_management.php:331
|
3950 |
+
msgid "Minimum Length"
|
3951 |
+
msgstr ""
|
3952 |
+
|
3953 |
+
#: src/features/user_management.php:332
|
3954 |
+
msgid "Minimum Password Length"
|
3955 |
+
msgstr ""
|
3956 |
+
|
3957 |
+
#: src/features/user_management.php:333
|
3958 |
+
msgid ""
|
3959 |
+
"All passwords that a user sets must be at least this many characters in "
|
3960 |
+
"length."
|
3961 |
+
msgstr ""
|
3962 |
+
|
3963 |
+
#: src/features/user_management.php:337
|
3964 |
+
msgid "Minimum Strength"
|
3965 |
+
msgstr ""
|
3966 |
+
|
3967 |
+
#: src/features/user_management.php:338
|
3968 |
+
msgid "Minimum Password Strength"
|
3969 |
+
msgstr ""
|
3970 |
+
|
3971 |
+
#: src/features/user_management.php:339
|
3972 |
+
msgid "All passwords that a user sets must meet this minimum strength."
|
3973 |
+
msgstr ""
|
3974 |
+
|
3975 |
+
#: src/features/user_management.php:343
|
3976 |
+
msgid "Apply To Existing"
|
3977 |
+
msgstr ""
|
3978 |
+
|
3979 |
+
#: src/features/user_management.php:344
|
3980 |
+
msgid "Apply Password Policies To Existing Users and Their Passwords"
|
3981 |
+
msgstr ""
|
3982 |
+
|
3983 |
+
#: src/features/user_management.php:345
|
3984 |
+
msgid ""
|
3985 |
+
"Forces existing users to update their passwords if they don't meet "
|
3986 |
+
"requirements, after they next login."
|
3987 |
+
msgstr ""
|
3988 |
+
|
3989 |
+
#: src/features/user_management.php:346
|
3990 |
+
msgid "Note: You may want to warn users prior to enabling this option."
|
3991 |
+
msgstr ""
|
3992 |
+
|
3993 |
+
#: src/features/user_management.php:350
|
3994 |
+
msgid "Password Expiration"
|
3995 |
+
msgstr ""
|
3996 |
+
|
3997 |
+
#: src/features/user_management.php:351
|
3998 |
+
msgid "Passwords Expire After This Many Days"
|
3999 |
+
msgstr ""
|
4000 |
+
|
4001 |
+
#: src/features/user_management.php:352
|
4002 |
msgid ""
|
4003 |
+
"Users will be forced to reset their passwords after the number of days "
|
4004 |
+
"specified."
|
4005 |
+
msgstr ""
|
4006 |
+
|
4007 |
+
#: src/features/user_management.php:353
|
4008 |
+
msgid "Set to Zero(0) to disable."
|
4009 |
+
msgstr ""
|
4010 |
+
|
4011 |
+
#: src/processors/admin_access_restriction.php:199
|
4012 |
+
#: src/processors/admin_access_restriction.php:235
|
4013 |
+
#, php-format
|
4014 |
+
msgid "%s Security Restrictions Applied"
|
4015 |
+
msgstr ""
|
4016 |
+
|
4017 |
+
#: src/processors/admin_access_restriction.php:200
|
4018 |
+
msgid ""
|
4019 |
+
"Altering certain options has been restricted by your WordPress security "
|
4020 |
+
"administrator."
|
4021 |
+
msgstr ""
|
4022 |
+
|
4023 |
+
#: src/processors/admin_access_restriction.php:201
|
4024 |
+
msgid ""
|
4025 |
+
"Repeated failed attempts to authenticate will probably lock you out of this "
|
4026 |
+
"site."
|
4027 |
+
msgstr ""
|
4028 |
+
|
4029 |
+
#: src/processors/admin_access_restriction.php:207
|
4030 |
+
msgid "Admin Access Login"
|
4031 |
+
msgstr ""
|
4032 |
+
|
4033 |
+
#: src/processors/admin_access_restriction.php:208
|
4034 |
+
#: src/processors/admin_access_restriction.php:245
|
4035 |
+
#, php-format
|
4036 |
+
msgid "Go here to manage settings and authenticate with the %s plugin."
|
4037 |
+
msgstr ""
|
4038 |
+
|
4039 |
+
#: src/processors/admin_access_restriction.php:236
|
4040 |
+
msgid ""
|
4041 |
+
"Editing existing administrators, promoting existing users to the "
|
4042 |
+
"administrator role, or deleting administrator users is currently restricted."
|
4043 |
+
msgstr ""
|
4044 |
+
|
4045 |
+
#: src/processors/admin_access_restriction.php:237
|
4046 |
+
msgid ""
|
4047 |
+
"Please authenticate with the Security Admin system before attempting any "
|
4048 |
+
"administrator user modifications."
|
4049 |
+
msgstr ""
|
4050 |
+
|
4051 |
+
#: src/processors/admin_access_restriction.php:238
|
4052 |
+
msgid "Unlock Now"
|
4053 |
+
msgstr ""
|
4054 |
+
|
4055 |
+
#: src/processors/admin_access_restriction.php:244
|
4056 |
+
#: src/processors/admin_access_restriction.php:468
|
4057 |
+
msgid "Security Admin Login"
|
4058 |
+
msgstr ""
|
4059 |
+
|
4060 |
+
#: src/processors/admin_access_restriction.php:445
|
4061 |
+
#: src/processors/hackprotect_ptguard.php:63
|
4062 |
+
msgid "Editing this option is currently restricted."
|
4063 |
+
msgstr ""
|
4064 |
+
|
4065 |
+
#: src/processors/admin_access_restriction.php:463
|
4066 |
+
msgid "Unlock"
|
4067 |
+
msgstr ""
|
4068 |
+
|
4069 |
+
#: src/processors/audit_trail_emails.php:27
|
4070 |
+
#, php-format
|
4071 |
+
msgid "There was an attempt to send an email using the \"%s\" function."
|
4072 |
+
msgstr ""
|
4073 |
+
|
4074 |
+
#: src/processors/audit_trail_emails.php:28
|
4075 |
+
#, php-format
|
4076 |
+
msgid "It was sent to \"%s\" with the subject \"%s\"."
|
4077 |
+
msgstr ""
|
4078 |
+
|
4079 |
+
#: src/processors/audit_trail_plugins.php:28
|
4080 |
+
#, php-format
|
4081 |
+
msgid "Plugin \"%s\" was activated."
|
4082 |
+
msgstr ""
|
4083 |
+
|
4084 |
+
#: src/processors/audit_trail_plugins.php:41
|
4085 |
+
#, php-format
|
4086 |
+
msgid "Plugin \"%s\" was deactivated."
|
4087 |
+
msgstr ""
|
4088 |
+
|
4089 |
+
#: src/processors/audit_trail_plugins.php:59
|
4090 |
+
#, php-format
|
4091 |
+
msgid ""
|
4092 |
+
"An attempt was made to edit the plugin file \"%s\" directly through the "
|
4093 |
+
"WordPress editor."
|
4094 |
+
msgstr ""
|
4095 |
+
|
4096 |
+
#: src/processors/audit_trail_posts.php:26
|
4097 |
+
#, php-format
|
4098 |
+
msgid "WordPress Post entitled \"%s\" was permanently deleted from trash."
|
4099 |
+
msgstr ""
|
4100 |
+
|
4101 |
+
#: src/processors/audit_trail_posts.php:47
|
4102 |
+
msgid "moved to trash"
|
4103 |
+
msgstr ""
|
4104 |
+
|
4105 |
+
#: src/processors/audit_trail_posts.php:51
|
4106 |
+
msgid "recovered from trash"
|
4107 |
+
msgstr ""
|
4108 |
+
|
4109 |
+
#: src/processors/audit_trail_posts.php:55
|
4110 |
+
msgid "published"
|
4111 |
+
msgstr ""
|
4112 |
+
|
4113 |
+
#: src/processors/audit_trail_posts.php:59
|
4114 |
+
msgid "unpublished"
|
4115 |
+
msgstr ""
|
4116 |
+
|
4117 |
+
#: src/processors/audit_trail_posts.php:63
|
4118 |
+
msgid "updated"
|
4119 |
+
msgstr ""
|
4120 |
+
|
4121 |
+
#: src/processors/audit_trail_posts.php:67
|
4122 |
+
#, php-format
|
4123 |
+
msgid "Post entitled \"%s\" was %s."
|
4124 |
+
msgstr ""
|
4125 |
+
|
4126 |
+
#: src/processors/audit_trail_themes.php:25
|
4127 |
+
#, php-format
|
4128 |
+
msgid "Theme \"%s\" was activated."
|
4129 |
+
msgstr ""
|
4130 |
+
|
4131 |
+
#: src/processors/audit_trail_themes.php:41
|
4132 |
+
#, php-format
|
4133 |
+
msgid ""
|
4134 |
+
"An attempt was made to edit the theme file \"%s\" directly through the "
|
4135 |
+
"WordPress editor."
|
4136 |
+
msgstr ""
|
4137 |
+
|
4138 |
+
#: src/processors/audit_trail_users.php:27
|
4139 |
+
#, php-format
|
4140 |
+
msgid "Attempted user login by \"%s\" was successful."
|
4141 |
+
msgstr ""
|
4142 |
+
|
4143 |
+
#: src/processors/audit_trail_users.php:40
|
4144 |
+
#, php-format
|
4145 |
+
msgid "Attempted user login by \"%s\" failed."
|
4146 |
+
msgstr ""
|
4147 |
+
|
4148 |
+
#: src/processors/audit_trail_users.php:55
|
4149 |
+
msgid "New WordPress user registered."
|
4150 |
+
msgstr ""
|
4151 |
+
|
4152 |
+
#: src/processors/audit_trail_users.php:57
|
4153 |
+
#, php-format
|
4154 |
+
msgid "New username is \"%s\" with email address \"%s\"."
|
4155 |
+
msgstr ""
|
4156 |
+
|
4157 |
+
#: src/processors/audit_trail_users.php:80
|
4158 |
+
msgid "WordPress user deleted."
|
4159 |
+
msgstr ""
|
4160 |
+
|
4161 |
+
#: src/processors/audit_trail_users.php:82
|
4162 |
+
#, php-format
|
4163 |
+
msgid "Username was \"%s\" with email address \"%s\"."
|
4164 |
+
msgstr ""
|
4165 |
+
|
4166 |
+
#: src/processors/audit_trail_users.php:87
|
4167 |
+
msgid "Their posts were not reassigned to another user."
|
4168 |
+
msgstr ""
|
4169 |
+
|
4170 |
+
#: src/processors/audit_trail_users.php:91
|
4171 |
+
#, php-format
|
4172 |
+
msgid "Their posts were reassigned to user \"%s\"."
|
4173 |
+
msgstr ""
|
4174 |
+
|
4175 |
+
#: src/processors/audit_trail_wordpress.php:24
|
4176 |
+
#, php-format
|
4177 |
+
msgid "WordPress Core was updated from \"v%s\" to \"v%s\"."
|
4178 |
+
msgstr ""
|
4179 |
+
|
4180 |
+
#: src/processors/audit_trail_wordpress.php:34
|
4181 |
+
#, php-format
|
4182 |
+
msgid "WordPress Permalinks Structure was updated from \"%s\" to \"%s\"."
|
4183 |
+
msgstr ""
|
4184 |
+
|
4185 |
+
#: src/processors/autoupdates.php:428
|
4186 |
+
#, php-format
|
4187 |
+
msgid ""
|
4188 |
+
"This is a quick notification from the %s that WordPress Automatic Updates "
|
4189 |
+
"just completed on your site with the following results."
|
4190 |
+
msgstr ""
|
4191 |
+
|
4192 |
+
#: src/processors/autoupdates.php:436
|
4193 |
+
msgid "Plugins Updated:"
|
4194 |
+
msgstr ""
|
4195 |
+
|
4196 |
+
#: src/processors/autoupdates.php:453
|
4197 |
+
msgid "Themes Updated:"
|
4198 |
+
msgstr ""
|
4199 |
+
|
4200 |
+
#: src/processors/autoupdates.php:470
|
4201 |
+
msgid "WordPress Core Updated:"
|
4202 |
+
msgstr ""
|
4203 |
+
|
4204 |
+
#: src/processors/autoupdates.php:489
|
4205 |
+
msgid "Thank you."
|
4206 |
+
msgstr ""
|
4207 |
+
|
4208 |
+
#: src/processors/autoupdates.php:491
|
4209 |
+
#, php-format
|
4210 |
+
msgid "Notice: %s"
|
4211 |
+
msgstr ""
|
4212 |
+
|
4213 |
+
#: src/processors/autoupdates.php:491
|
4214 |
+
msgid "Automatic Updates Completed"
|
4215 |
+
msgstr ""
|
4216 |
+
|
4217 |
+
#: src/processors/autoupdates.php:513
|
4218 |
+
msgid ""
|
4219 |
+
"Automatic updates for this plugin is controlled by another plugin or setting."
|
4220 |
+
msgstr ""
|
4221 |
+
|
4222 |
+
#: src/processors/base_commentsfilter.php:113
|
4223 |
+
#: src/processors/commentsfilter_antibotspam.php:499
|
4224 |
+
#, php-format
|
4225 |
+
msgid "%s plugin marked this comment as \"%s\"."
|
4226 |
+
msgstr ""
|
4227 |
+
|
4228 |
+
#: src/processors/base_commentsfilter.php:113
|
4229 |
+
#: src/processors/commentsfilter_antibotspam.php:499
|
4230 |
+
#, php-format
|
4231 |
+
msgid "Reason: %s"
|
4232 |
+
msgstr ""
|
4233 |
+
|
4234 |
+
#: src/processors/base_plugin.php:67
|
4235 |
+
msgid "I'd rather not show this support"
|
4236 |
+
msgstr ""
|
4237 |
+
|
4238 |
+
#: src/processors/base_plugin.php:67
|
4239 |
+
msgid "I've done this already"
|
4240 |
+
msgstr ""
|
4241 |
+
|
4242 |
+
#: src/processors/base_plugin.php:91
|
4243 |
+
msgid "I don't need the setup wizard just now"
|
4244 |
+
msgstr ""
|
4245 |
+
|
4246 |
+
#: src/processors/base_plugin.php:92
|
4247 |
+
#, php-format
|
4248 |
+
msgid "Get started quickly with the %s Setup Wizard"
|
4249 |
+
msgstr ""
|
4250 |
+
|
4251 |
+
#: src/processors/base_plugin.php:93
|
4252 |
+
#, php-format
|
4253 |
+
msgid ""
|
4254 |
+
"The welcome wizard will help you get setup quickly and become familiar with "
|
4255 |
+
"some of the core %s features"
|
4256 |
+
msgstr ""
|
4257 |
+
|
4258 |
+
#: src/processors/base_plugin.php:94
|
4259 |
+
#, php-format
|
4260 |
+
msgid ""
|
4261 |
+
"%s has a helpful setup wizard to walk you through the main features. "
|
4262 |
+
"Unfortunately your PHP version is reeeaally old as it needs PHP 5.4+"
|
4263 |
+
msgstr ""
|
4264 |
+
|
4265 |
+
#: src/processors/base_plugin.php:122
|
4266 |
+
#, php-format
|
4267 |
+
msgid "Your PHP version is very old: %s"
|
4268 |
+
msgstr ""
|
4269 |
+
|
4270 |
+
#: src/processors/base_plugin.php:123
|
4271 |
+
#, php-format
|
4272 |
+
msgid "Newer features of %s do not support your PHP version."
|
4273 |
+
msgstr ""
|
4274 |
+
|
4275 |
+
#: src/processors/base_plugin.php:124
|
4276 |
+
msgid ""
|
4277 |
+
"You should ask your host to upgrade or provide a much newer PHP version."
|
4278 |
+
msgstr ""
|
4279 |
+
|
4280 |
+
#: src/processors/base_plugin.php:125
|
4281 |
+
msgid "Please read here for further information:"
|
4282 |
+
msgstr ""
|
4283 |
+
|
4284 |
+
#: src/processors/base_plugin.php:126 src/processors/base_plugin.php:167
|
4285 |
+
#: src/processors/base_plugin.php:191
|
4286 |
+
msgid "Dismiss this notice"
|
4287 |
+
msgstr ""
|
4288 |
+
|
4289 |
+
#: src/processors/base_plugin.php:127
|
4290 |
+
msgid "Dropping support for PHP 5.2 and 5.3"
|
4291 |
+
msgstr ""
|
4292 |
+
|
4293 |
+
#: src/processors/base_plugin.php:164
|
4294 |
+
#, php-format
|
4295 |
+
msgid "Update available for the %s plugin."
|
4296 |
+
msgstr ""
|
4297 |
+
|
4298 |
+
#: src/processors/base_plugin.php:166
|
4299 |
+
msgid "Please click to update immediately"
|
4300 |
+
msgstr ""
|
4301 |
+
|
4302 |
+
#: src/processors/base_plugin.php:187
|
4303 |
+
#, php-format
|
4304 |
+
msgid "Can you help translate the %s plugin?"
|
4305 |
+
msgstr ""
|
4306 |
+
|
4307 |
+
#: src/processors/base_plugin.php:189
|
4308 |
+
#, php-format
|
4309 |
+
msgid "Head over to: %s"
|
4310 |
+
msgstr ""
|
4311 |
+
|
4312 |
+
#: src/processors/base_wpsf.php:70 src/processors/base_wpsf.php:77
|
4313 |
+
#: src/processors/loginprotect_googleauthenticator.php:233
|
4314 |
+
msgid "Whoops."
|
4315 |
+
msgstr ""
|
4316 |
+
|
4317 |
+
#: src/processors/base_wpsf.php:70
|
4318 |
+
msgid "Google reCAPTCHA was not submitted."
|
4319 |
+
msgstr ""
|
4320 |
+
|
4321 |
+
#: src/processors/base_wpsf.php:77
|
4322 |
+
msgid "Google reCAPTCHA verification failed."
|
4323 |
+
msgstr ""
|
4324 |
+
|
4325 |
+
#: src/processors/comments_filter.php:64
|
4326 |
+
msgid ""
|
4327 |
+
"It appears you have Akismet Anti-SPAM running alongside the our human Anti-"
|
4328 |
+
"SPAM filter."
|
4329 |
+
msgstr ""
|
4330 |
+
|
4331 |
+
#: src/processors/comments_filter.php:65
|
4332 |
+
msgid "This is not recommended and you should disable Akismet."
|
4333 |
+
msgstr ""
|
4334 |
+
|
4335 |
+
#: src/processors/comments_filter.php:66
|
4336 |
+
msgid "Click to deactivate Akismet now."
|
4337 |
+
msgstr ""
|
4338 |
+
|
4339 |
+
#: src/processors/commentsfilter_antibotspam.php:181
|
4340 |
+
#: src/processors/commentsfilter_antibotspam.php:186
|
4341 |
+
#: src/processors/commentsfilter_antibotspam.php:191
|
4342 |
+
#, php-format
|
4343 |
+
msgid "Failed GASP Bot Filter Test (%s)"
|
4344 |
+
msgstr ""
|
4345 |
+
|
4346 |
+
#: src/processors/commentsfilter_antibotspam.php:181
|
4347 |
+
msgid "checkbox"
|
4348 |
msgstr ""
|
4349 |
|
4350 |
+
#: src/processors/commentsfilter_antibotspam.php:186
|
4351 |
+
msgid "honeypot"
|
4352 |
msgstr ""
|
4353 |
|
4354 |
+
#: src/processors/commentsfilter_antibotspam.php:191
|
4355 |
+
msgid "comment token failure"
|
4356 |
msgstr ""
|
4357 |
|
4358 |
+
#: src/processors/commentsfilter_humanspam.php:128
|
4359 |
+
#, php-format
|
4360 |
+
msgid "Human SPAM filter found \"%s\" in \"%s\""
|
|
|
4361 |
msgstr ""
|
4362 |
|
4363 |
+
#: src/processors/email.php:65
|
4364 |
+
msgid "Hi !"
|
|
|
|
|
4365 |
msgstr ""
|
4366 |
|
4367 |
+
#: src/processors/email.php:77
|
4368 |
+
#, php-format
|
4369 |
+
msgid "Email sent from the %s Plugin v%s, on %s."
|
4370 |
msgstr ""
|
4371 |
|
4372 |
+
#: src/processors/email.php:82
|
4373 |
+
msgid "Note: Email delays are caused by website hosting and email providers."
|
4374 |
msgstr ""
|
4375 |
|
4376 |
+
#: src/processors/email.php:83
|
4377 |
+
#, php-format
|
4378 |
+
msgid "Time Sent: %s"
|
4379 |
msgstr ""
|
4380 |
|
4381 |
+
#: src/processors/firewall.php:75 src/processors/firewall.php:88
|
4382 |
+
#, php-format
|
4383 |
+
msgid "Skipping firewall checking for this visit: %s."
|
4384 |
msgstr ""
|
4385 |
|
4386 |
+
#: src/processors/firewall.php:75
|
4387 |
+
msgid "Parsing the URI failed"
|
4388 |
msgstr ""
|
4389 |
|
4390 |
+
#: src/processors/firewall.php:88
|
4391 |
+
msgid "Visitor detected as Search Engine Bot"
|
4392 |
msgstr ""
|
4393 |
|
4394 |
+
#: src/processors/firewall.php:163 src/processors/firewall.php:221
|
4395 |
+
#, php-format
|
4396 |
+
msgid "Firewall Trigger: %s."
|
4397 |
msgstr ""
|
4398 |
|
4399 |
+
#: src/processors/firewall.php:163 src/processors/firewall.php:542
|
4400 |
+
msgid "EXE File Uploads"
|
|
|
|
|
4401 |
msgstr ""
|
4402 |
|
4403 |
+
#: src/processors/firewall.php:214
|
4404 |
+
msgid "Something in the URL, Form or Cookie data wasn't appropriate."
|
|
|
|
|
4405 |
msgstr ""
|
4406 |
|
4407 |
+
#: src/processors/firewall.php:215
|
4408 |
+
msgid "Page parameter failed firewall check."
|
4409 |
msgstr ""
|
4410 |
|
4411 |
+
#: src/processors/firewall.php:216
|
4412 |
+
#, php-format
|
4413 |
+
msgid "The offending parameter was \"%s\" with a value of \"%s\"."
|
4414 |
msgstr ""
|
4415 |
|
4416 |
+
#: src/processors/firewall.php:262
|
4417 |
+
msgid "Visitor connection was killed with wp_die()"
|
|
|
|
|
4418 |
msgstr ""
|
4419 |
|
4420 |
+
#: src/processors/firewall.php:265
|
4421 |
+
msgid "Visitor connection was killed with wp_die() and a message"
|
4422 |
msgstr ""
|
4423 |
|
4424 |
+
#: src/processors/firewall.php:268
|
4425 |
+
msgid "Visitor was sent HOME"
|
4426 |
msgstr ""
|
4427 |
|
4428 |
+
#: src/processors/firewall.php:271
|
4429 |
+
msgid "Visitor was sent 404"
|
|
|
|
|
4430 |
msgstr ""
|
4431 |
|
4432 |
+
#: src/processors/firewall.php:274
|
4433 |
+
msgid "Unknown"
|
4434 |
msgstr ""
|
4435 |
|
4436 |
+
#: src/processors/firewall.php:277
|
4437 |
+
#, php-format
|
4438 |
+
msgid "Firewall Block Response: %s."
|
4439 |
msgstr ""
|
4440 |
|
4441 |
+
#: src/processors/firewall.php:283
|
4442 |
+
#, php-format
|
4443 |
+
msgid "Successfully sent Firewall Block email alert to: %s"
|
4444 |
msgstr ""
|
4445 |
|
4446 |
+
#: src/processors/firewall.php:286
|
4447 |
+
#, php-format
|
4448 |
+
msgid "Failed to send Firewall Block email alert to: %s"
|
4449 |
msgstr ""
|
4450 |
|
4451 |
+
#: src/processors/firewall.php:469
|
4452 |
+
#, php-format
|
4453 |
+
msgid "%s has blocked a page visit to your site."
|
|
|
4454 |
msgstr ""
|
4455 |
|
4456 |
+
#: src/processors/firewall.php:470
|
4457 |
+
msgid "Log details for this visitor are below:"
|
4458 |
msgstr ""
|
4459 |
|
4460 |
+
#: src/processors/firewall.php:471
|
4461 |
+
#: src/processors/loginprotect_twofactorauth.php:189
|
4462 |
+
#: src/processors/user_management.php:180
|
4463 |
+
#, php-format
|
4464 |
+
msgid "IP Address: %s"
|
4465 |
msgstr ""
|
4466 |
|
4467 |
+
#: src/processors/firewall.php:475
|
4468 |
+
#, php-format
|
4469 |
+
msgid "You can look up the offending IP Address here: %s"
|
4470 |
msgstr ""
|
4471 |
|
4472 |
+
#: src/processors/firewall.php:476
|
4473 |
+
msgid "Firewall Block Alert"
|
|
|
4474 |
msgstr ""
|
4475 |
|
4476 |
+
#: src/processors/firewall.php:530
|
4477 |
+
msgid "Directory Traversal"
|
4478 |
+
msgstr ""
|
4479 |
+
|
4480 |
+
#: src/processors/firewall.php:545
|
4481 |
+
msgid "Leading Schema"
|
4482 |
+
msgstr ""
|
4483 |
+
|
4484 |
+
#: src/processors/firewall.php:551
|
4485 |
+
msgid "Aggressive Rules"
|
4486 |
+
msgstr ""
|
4487 |
+
|
4488 |
+
#: src/processors/firewall.php:554
|
4489 |
+
msgid "Unknown Rules"
|
4490 |
msgstr ""
|
4491 |
|
4492 |
+
#: src/processors/hack_protect.php:156
|
4493 |
#, php-format
|
4494 |
+
msgid "%s escaped HTML the following comment due to its size: %s"
|
4495 |
msgstr ""
|
4496 |
|
4497 |
+
#: src/processors/hackprotect_corechecksumscan.php:28
|
4498 |
+
msgid "File was successfully replaced with an original from WordPress.org"
|
4499 |
msgstr ""
|
4500 |
|
4501 |
+
#: src/processors/hackprotect_corechecksumscan.php:34
|
4502 |
+
msgid "File was not replaced"
|
4503 |
msgstr ""
|
4504 |
|
4505 |
+
#: src/processors/hackprotect_corechecksumscan.php:240
|
4506 |
+
#, php-format
|
4507 |
+
msgid "The %s Core File Scanner found files with potential problems."
|
|
|
4508 |
msgstr ""
|
4509 |
|
4510 |
+
#: src/processors/hackprotect_corechecksumscan.php:241
|
4511 |
+
#: src/processors/hackprotect_filecleanerscan.php:225
|
4512 |
+
#: src/processors/hackprotect_ptguard.php:455
|
4513 |
#, php-format
|
4514 |
+
msgid "Site URL - %s"
|
4515 |
msgstr ""
|
4516 |
|
4517 |
+
#: src/processors/hackprotect_corechecksumscan.php:248
|
4518 |
+
#: src/processors/hackprotect_filecleanerscan.php:232
|
4519 |
+
msgid "More Info On This Scanner"
|
4520 |
msgstr ""
|
4521 |
|
4522 |
+
#: src/processors/hackprotect_corechecksumscan.php:253
|
4523 |
+
msgid "Modified Core WordPress Files Discovered"
|
4524 |
msgstr ""
|
4525 |
|
4526 |
+
#: src/processors/hackprotect_corechecksumscan.php:258
|
4527 |
+
#, php-format
|
4528 |
+
msgid "Sent Checksum Scan Notification email alert to: %s"
|
4529 |
+
msgstr ""
|
4530 |
+
|
4531 |
+
#: src/processors/hackprotect_corechecksumscan.php:274
|
4532 |
+
#, php-format
|
4533 |
+
msgid "%s has already attempted to repair the files."
|
4534 |
msgstr ""
|
4535 |
|
4536 |
+
#: src/processors/hackprotect_corechecksumscan.php:278
|
4537 |
+
#: src/processors/hackprotect_corechecksumscan.php:312
|
4538 |
msgid ""
|
4539 |
+
"The contents of the core files listed below don't match official WordPress "
|
4540 |
+
"files:"
|
4541 |
msgstr ""
|
4542 |
|
4543 |
+
#: src/processors/hackprotect_corechecksumscan.php:285
|
4544 |
+
#: src/processors/hackprotect_corechecksumscan.php:318
|
4545 |
+
msgid "The WordPress Core Files listed below are missing:"
|
4546 |
msgstr ""
|
4547 |
|
4548 |
+
#: src/processors/hackprotect_corechecksumscan.php:293
|
4549 |
+
msgid "We recommend you run the scanner to review your site:"
|
4550 |
msgstr ""
|
4551 |
|
4552 |
+
#: src/processors/hackprotect_corechecksumscan.php:297
|
4553 |
+
#: src/processors/hackprotect_filecleanerscan.php:271
|
4554 |
+
msgid "Run Scanner"
|
4555 |
+
msgstr ""
|
4556 |
+
|
4557 |
+
#: src/processors/hackprotect_corechecksumscan.php:326
|
4558 |
msgid ""
|
4559 |
+
"We have already attempted to repair these files based on your current "
|
4560 |
+
"settings."
|
4561 |
msgstr ""
|
4562 |
|
4563 |
+
#: src/processors/hackprotect_corechecksumscan.php:327
|
4564 |
+
msgid ""
|
4565 |
+
"But, you should always check these files to ensure everything is as you "
|
4566 |
+
"expect."
|
4567 |
msgstr ""
|
4568 |
|
4569 |
+
#: src/processors/hackprotect_corechecksumscan.php:330
|
4570 |
msgid ""
|
4571 |
+
"You should review these files and replace them with official versions if "
|
4572 |
+
"required."
|
4573 |
msgstr ""
|
4574 |
|
4575 |
+
#: src/processors/hackprotect_corechecksumscan.php:331
|
4576 |
msgid ""
|
4577 |
+
"Alternatively you can have the plugin attempt to repair/replace these files "
|
4578 |
+
"automatically."
|
4579 |
msgstr ""
|
4580 |
|
4581 |
+
#: src/processors/hackprotect_corechecksumscan.php:351
|
4582 |
+
#: src/processors/hackprotect_filecleanerscan.php:326
|
4583 |
+
msgid "Repair file now"
|
4584 |
msgstr ""
|
4585 |
|
4586 |
+
#: src/processors/hackprotect_corechecksumscan.php:354
|
4587 |
+
#: src/processors/hackprotect_filecleanerscan.php:329
|
4588 |
+
msgid "WordPress.org source file"
|
4589 |
+
msgstr ""
|
4590 |
+
|
4591 |
+
#: src/processors/hackprotect_filecleanerscan.php:224
|
4592 |
#, php-format
|
4593 |
+
msgid "The %s Unrecognised File Scanner found files which you need to review."
|
4594 |
msgstr ""
|
4595 |
|
4596 |
+
#: src/processors/hackprotect_filecleanerscan.php:237
|
4597 |
+
msgid "Unrecognised WordPress Files Detected"
|
|
|
|
|
4598 |
msgstr ""
|
4599 |
|
4600 |
+
#: src/processors/hackprotect_filecleanerscan.php:242
|
4601 |
+
#, php-format
|
4602 |
+
msgid "Sent Unrecognised File Scan Notification email alert to: %s"
|
|
|
4603 |
msgstr ""
|
4604 |
|
4605 |
+
#: src/processors/hackprotect_filecleanerscan.php:264
|
4606 |
+
#: src/processors/hackprotect_filecleanerscan.php:296
|
4607 |
+
#, php-format
|
4608 |
+
msgid "%s has attempted to delete these files based on your current settings."
|
4609 |
msgstr ""
|
4610 |
|
4611 |
+
#: src/processors/hackprotect_pluginvulnerabilities.php:81
|
4612 |
+
#: src/processors/hackprotect_wpvulnscan.php:177
|
4613 |
+
#, php-format
|
4614 |
+
msgid "Plugin Name: %s"
|
4615 |
msgstr ""
|
4616 |
|
4617 |
+
#: src/processors/hackprotect_pluginvulnerabilities.php:82
|
4618 |
+
#: src/processors/hackprotect_wpvulnscan.php:179
|
4619 |
+
#, php-format
|
4620 |
+
msgid "Vulnerability Type: %s"
|
4621 |
msgstr ""
|
4622 |
|
4623 |
+
#: src/processors/hackprotect_pluginvulnerabilities.php:83
|
4624 |
+
#, php-format
|
4625 |
+
msgid "Vulnerable Plugin Version Range: %s"
|
4626 |
msgstr ""
|
4627 |
|
4628 |
+
#: src/processors/hackprotect_pluginvulnerabilities.php:84
|
4629 |
+
#: src/processors/hackprotect_wpvulnscan.php:181
|
4630 |
#, php-format
|
4631 |
+
msgid "Further Information: %s"
|
4632 |
msgstr ""
|
4633 |
|
4634 |
+
#: src/processors/hackprotect_pluginvulnerabilities.php:101
|
4635 |
#, php-format
|
4636 |
+
msgid ""
|
4637 |
+
"%s has detected a plugin with a known security vulnerability on your site."
|
4638 |
+
msgstr ""
|
4639 |
+
|
4640 |
+
#: src/processors/hackprotect_pluginvulnerabilities.php:102
|
4641 |
+
#: src/processors/hackprotect_wpvulnscan.php:210
|
4642 |
+
msgid "Details for the plugin(s) are below:"
|
4643 |
+
msgstr ""
|
4644 |
+
|
4645 |
+
#: src/processors/hackprotect_pluginvulnerabilities.php:107
|
4646 |
+
#: src/processors/hackprotect_wpvulnscan.php:215
|
4647 |
+
msgid "You should update or remove these plugins at your earliest convenience."
|
4648 |
+
msgstr ""
|
4649 |
+
|
4650 |
+
#: src/processors/hackprotect_pluginvulnerabilities.php:109
|
4651 |
+
#: src/processors/hackprotect_wpvulnscan.php:218
|
4652 |
+
msgid "Plugin(s) Discovered With Known Security Vulnerabilities."
|
4653 |
msgstr ""
|
4654 |
|
4655 |
+
#: src/processors/hackprotect_pluginvulnerabilities.php:115
|
4656 |
+
#: src/processors/hackprotect_wpvulnscan.php:224
|
4657 |
#, php-format
|
4658 |
+
msgid "Successfully sent Plugin Vulnerability Notification email alert to: %s"
|
4659 |
msgstr ""
|
4660 |
|
4661 |
+
#: src/processors/hackprotect_pluginvulnerabilities.php:118
|
4662 |
+
#: src/processors/hackprotect_wpvulnscan.php:227
|
4663 |
#, php-format
|
4664 |
+
msgid "Failed to send Plugin Vulnerability Notification email alert to: %s"
|
4665 |
msgstr ""
|
4666 |
|
4667 |
+
#: src/processors/hackprotect_pluginvulnerabilities.php:151
|
4668 |
#, php-format
|
4669 |
msgid ""
|
4670 |
+
"%s has discovered that the currently installed version of the \"%s\" plugin "
|
4671 |
+
"has a known security vulnerability."
|
4672 |
+
msgstr ""
|
4673 |
+
|
4674 |
+
#: src/processors/hackprotect_pluginvulnerabilities.php:152
|
4675 |
+
#: src/processors/hackprotect_wpvulnscan.php:145
|
4676 |
+
msgid "Vulnerability Type"
|
4677 |
msgstr ""
|
4678 |
|
4679 |
+
#: src/processors/hackprotect_pluginvulnerabilities.php:154
|
4680 |
+
msgid "Vulnerable Versions"
|
4681 |
+
msgstr ""
|
4682 |
+
|
4683 |
+
#: src/processors/hackprotect_ptguard.php:409
|
4684 |
+
msgid "Silenced repeated email alert from Plugin/Theme Scan Guard"
|
4685 |
+
msgstr ""
|
4686 |
+
|
4687 |
+
#: src/processors/hackprotect_ptguard.php:451
|
4688 |
#, php-format
|
4689 |
+
msgid ""
|
4690 |
+
"%s has detected at least 1 Plugins/Themes have been modified on your site."
|
4691 |
msgstr ""
|
4692 |
|
4693 |
+
#: src/processors/hackprotect_ptguard.php:453
|
4694 |
+
msgid ""
|
4695 |
+
"You will receive only 1 email notification about these changes in a 1 week "
|
4696 |
+
"period."
|
4697 |
msgstr ""
|
4698 |
|
4699 |
+
#: src/processors/hackprotect_ptguard.php:457
|
4700 |
+
msgid "Details of the problem items are below:"
|
4701 |
msgstr ""
|
4702 |
|
4703 |
+
#: src/processors/hackprotect_ptguard.php:462
|
4704 |
+
msgid "Modified Plugins:"
|
4705 |
msgstr ""
|
4706 |
|
4707 |
+
#: src/processors/hackprotect_ptguard.php:470
|
4708 |
+
msgid "Modified Themes:"
|
4709 |
msgstr ""
|
4710 |
|
4711 |
+
#: src/processors/hackprotect_ptguard.php:480
|
4712 |
+
msgid "Run the scanner"
|
4713 |
+
msgstr ""
|
4714 |
+
|
4715 |
+
#: src/processors/hackprotect_ptguard.php:486
|
4716 |
+
msgid "Plugins/Themes Have Been Altered"
|
4717 |
msgstr ""
|
4718 |
|
4719 |
+
#: src/processors/hackprotect_ptguard.php:491
|
4720 |
#, php-format
|
4721 |
+
msgid "Successfully sent Plugin/Theme Guard email alert to: %s"
|
4722 |
msgstr ""
|
4723 |
|
4724 |
+
#: src/processors/hackprotect_ptguard.php:494
|
4725 |
#, php-format
|
4726 |
+
msgid "Failed to send Plugin/Theme Guard email alert to: %s"
|
4727 |
+
msgstr ""
|
4728 |
+
|
4729 |
+
#: src/processors/hackprotect_wpvulnscan.php:112
|
4730 |
+
msgid "Vulnerable"
|
4731 |
msgstr ""
|
4732 |
|
4733 |
+
#: src/processors/hackprotect_wpvulnscan.php:142
|
4734 |
#, php-format
|
4735 |
msgid ""
|
4736 |
+
"%s has discovered that the currently installed version of the %s plugin has "
|
4737 |
+
"known security vulnerabilities."
|
4738 |
+
msgstr ""
|
4739 |
+
|
4740 |
+
#: src/processors/hackprotect_wpvulnscan.php:144
|
4741 |
+
msgid "Vulnerability Name"
|
4742 |
+
msgstr ""
|
4743 |
+
|
4744 |
+
#: src/processors/hackprotect_wpvulnscan.php:146
|
4745 |
+
msgid "Fixed Versions"
|
4746 |
msgstr ""
|
4747 |
|
4748 |
+
#: src/processors/hackprotect_wpvulnscan.php:178
|
4749 |
#, php-format
|
4750 |
+
msgid "Vulnerability Title: %s"
|
4751 |
msgstr ""
|
4752 |
|
4753 |
+
#: src/processors/hackprotect_wpvulnscan.php:180
|
4754 |
#, php-format
|
4755 |
+
msgid "Fixed Version: %s"
|
4756 |
msgstr ""
|
4757 |
|
4758 |
+
#: src/processors/hackprotect_wpvulnscan.php:209
|
4759 |
+
#, php-format
|
4760 |
+
msgid "%s has detected plugins with known security vulnerabilities."
|
4761 |
msgstr ""
|
4762 |
|
4763 |
+
#: src/processors/hackprotect_wpvulnscan.php:216
|
4764 |
#, php-format
|
4765 |
+
msgid "Go To Your Plugins: %s"
|
4766 |
msgstr ""
|
4767 |
|
4768 |
+
#: src/processors/ips.php:82
|
4769 |
+
#, php-format
|
4770 |
+
msgid "404 detected at \"%s\""
|
4771 |
msgstr ""
|
4772 |
|
4773 |
+
#: src/processors/ips.php:112
|
4774 |
#, php-format
|
4775 |
+
msgid "%s is ignoring you"
|
4776 |
+
msgstr ""
|
4777 |
+
|
4778 |
+
#: src/processors/ips.php:114
|
4779 |
+
msgid ""
|
4780 |
+
"Your IP address is whitelisted and NO features you activate apply to you."
|
4781 |
+
msgstr ""
|
4782 |
+
|
4783 |
+
#: src/processors/ips.php:115
|
4784 |
+
msgid "Including the hiding the WP Login page."
|
4785 |
+
msgstr ""
|
4786 |
+
|
4787 |
+
#: src/processors/ips.php:247
|
4788 |
+
#, php-format
|
4789 |
+
msgid ""
|
4790 |
+
"Visitor was found to be on the Black List with IP address \"%s\" and their "
|
4791 |
+
"connection was killed."
|
4792 |
+
msgstr ""
|
4793 |
+
|
4794 |
+
#: src/processors/ips.php:255
|
4795 |
+
#, php-format
|
4796 |
+
msgid "You have been black listed by the %s plugin."
|
4797 |
+
msgstr ""
|
4798 |
+
|
4799 |
+
#: src/processors/ips.php:259
|
4800 |
+
#, php-format
|
4801 |
+
msgid ""
|
4802 |
+
"You tripped the security plugin defenses a total of %s times making you a "
|
4803 |
+
"suspect."
|
4804 |
+
msgstr ""
|
4805 |
+
|
4806 |
+
#: src/processors/ips.php:260
|
4807 |
+
msgid "If you believe this to be in error, please contact the site owner."
|
4808 |
+
msgstr ""
|
4809 |
+
|
4810 |
+
#: src/processors/ips.php:261
|
4811 |
+
#, php-format
|
4812 |
+
msgid ""
|
4813 |
+
"Time remaining until you are automatically removed from the black list: %s "
|
4814 |
+
"minute(s)"
|
4815 |
msgstr ""
|
4816 |
|
4817 |
+
#: src/processors/ips.php:262
|
4818 |
+
msgid ""
|
4819 |
+
"If you attempt to access the site within this period the counter will be "
|
4820 |
+
"reset."
|
4821 |
msgstr ""
|
4822 |
|
4823 |
+
#: src/processors/ips.php:308
|
4824 |
#, php-format
|
4825 |
+
msgid "Auto Black List transgression counter was incremented from %s to %s."
|
4826 |
msgstr ""
|
4827 |
|
4828 |
+
#: src/processors/ips.php:317
|
4829 |
+
msgid "Auto Black List transgression counter was started for visitor."
|
|
|
4830 |
msgstr ""
|
4831 |
|
4832 |
+
#: src/processors/ips.php:486
|
4833 |
+
msgid "No Label"
|
|
|
4834 |
msgstr ""
|
4835 |
|
4836 |
+
#: src/processors/lockdown.php:95
|
4837 |
#, php-format
|
4838 |
+
msgid "Anonymous access to the WordPress Rest API has been restricted by %s."
|
|
|
|
|
4839 |
msgstr ""
|
4840 |
|
4841 |
+
#: src/processors/lockdown.php:201
|
4842 |
+
#, php-format
|
4843 |
+
msgid ""
|
4844 |
+
"The \"author\" query parameter has been blocked by %s to protect against "
|
4845 |
+
"user login name fishing."
|
4846 |
msgstr ""
|
4847 |
|
4848 |
+
#: src/processors/lockdown.php:204 src/processors/plugin_tracking.php:38
|
4849 |
+
msgid "Learn More."
|
4850 |
msgstr ""
|
4851 |
|
4852 |
+
#: src/processors/login_protect.php:68
|
4853 |
+
msgid "Please verify email has been received"
|
4854 |
msgstr ""
|
4855 |
|
4856 |
+
#: src/processors/login_protect.php:69
|
4857 |
+
msgid ""
|
4858 |
+
"Before we can activate email 2-factor authentication, we need you to confirm "
|
4859 |
+
"your website can send emails."
|
4860 |
msgstr ""
|
4861 |
|
4862 |
+
#: src/processors/login_protect.php:70
|
4863 |
+
msgid "Please click the link in the email you received."
|
|
|
|
|
4864 |
msgstr ""
|
4865 |
|
4866 |
+
#: src/processors/login_protect.php:72
|
|
|
4867 |
#, php-format
|
4868 |
+
msgid "The email has been sent to you at blog admin address: %s"
|
4869 |
msgstr ""
|
4870 |
|
4871 |
+
#: src/processors/login_protect.php:75
|
4872 |
+
msgid "To resend the email, re-save your Login Guard settings."
|
|
|
|
|
4873 |
msgstr ""
|
4874 |
|
4875 |
+
#: src/processors/login_protect.php:76
|
4876 |
+
msgid "To turn this notice off, disable 2-Factor Authentication."
|
4877 |
msgstr ""
|
4878 |
|
4879 |
+
#: src/processors/loginprotect_cooldown.php:51
|
4880 |
+
msgid "Login Cooldown in effect."
|
4881 |
msgstr ""
|
4882 |
|
4883 |
+
#: src/processors/loginprotect_cooldown.php:53
|
4884 |
#, php-format
|
4885 |
+
msgid "You must wait %s seconds before attempting to %s again."
|
4886 |
msgstr ""
|
4887 |
|
4888 |
+
#: src/processors/loginprotect_cooldown.php:55
|
4889 |
+
#: src/processors/loginprotect_gasp.php:77
|
4890 |
+
msgid "login"
|
4891 |
msgstr ""
|
4892 |
|
4893 |
+
#: src/processors/loginprotect_cooldown.php:55
|
4894 |
+
msgid "register"
|
|
|
4895 |
msgstr ""
|
4896 |
|
4897 |
+
#: src/processors/loginprotect_gasp.php:81
|
4898 |
+
msgid "Bot Checking Failed."
|
4899 |
msgstr ""
|
4900 |
|
4901 |
+
#: src/processors/loginprotect_gasp.php:154
|
4902 |
+
msgid "You MUST enable Javascript to be able to login"
|
|
|
4903 |
msgstr ""
|
4904 |
|
4905 |
+
#: src/processors/loginprotect_gasp.php:182
|
4906 |
#, php-format
|
4907 |
+
msgid "User \"%s\" attempted to %s but GASP checkbox was not present."
|
4908 |
msgstr ""
|
4909 |
|
4910 |
+
#: src/processors/loginprotect_gasp.php:182
|
4911 |
+
#: src/processors/loginprotect_gasp.php:194
|
4912 |
+
msgid "Probably a BOT."
|
4913 |
msgstr ""
|
4914 |
|
4915 |
+
#: src/processors/loginprotect_gasp.php:190
|
4916 |
+
msgid "You must check that box to say you're not a bot."
|
|
|
4917 |
msgstr ""
|
4918 |
|
4919 |
+
#: src/processors/loginprotect_gasp.php:194
|
4920 |
#, php-format
|
4921 |
+
msgid "User \"%s\" attempted to %s but they were caught by the GASP honeypot."
|
|
|
|
|
|
|
|
|
|
|
|
|
4922 |
msgstr ""
|
4923 |
|
4924 |
+
#: src/processors/loginprotect_gasp.php:202
|
4925 |
+
#, php-format
|
4926 |
+
msgid "You appear to be a bot - terminating %s attempt."
|
4927 |
msgstr ""
|
4928 |
|
4929 |
+
#: src/processors/loginprotect_googleauthenticator.php:36
|
4930 |
+
msgid "Provide the current code generated by your Google Authenticator app."
|
4931 |
msgstr ""
|
4932 |
|
4933 |
+
#: src/processors/loginprotect_googleauthenticator.php:37
|
4934 |
+
msgid "To reset this QR Code enter fake data here."
|
|
|
|
|
|
|
4935 |
msgstr ""
|
4936 |
|
4937 |
+
#: src/processors/loginprotect_googleauthenticator.php:38
|
4938 |
+
msgid ""
|
4939 |
+
"Use your Google Authenticator app to scan this QR code and enter the one "
|
4940 |
+
"time password below."
|
4941 |
msgstr ""
|
4942 |
|
4943 |
+
#: src/processors/loginprotect_googleauthenticator.php:39
|
4944 |
+
msgid ""
|
4945 |
+
"If you have a problem with scanning the QR code enter this code manually "
|
4946 |
+
"into the app."
|
4947 |
msgstr ""
|
4948 |
|
4949 |
+
#: src/processors/loginprotect_googleauthenticator.php:40
|
4950 |
+
msgid "Check the box to remove Google Authenticator login authentication."
|
4951 |
msgstr ""
|
4952 |
|
4953 |
+
#: src/processors/loginprotect_googleauthenticator.php:41
|
4954 |
+
#, php-format
|
4955 |
+
msgid "Remove %s"
|
4956 |
msgstr ""
|
4957 |
|
4958 |
+
#: src/processors/loginprotect_googleauthenticator.php:42
|
4959 |
+
#: src/processors/loginprotect_googleauthenticator.php:269
|
4960 |
+
msgid "Google Authenticator Code"
|
4961 |
msgstr ""
|
4962 |
|
4963 |
+
#: src/processors/loginprotect_googleauthenticator.php:43
|
4964 |
+
msgid "Manual Code"
|
|
|
4965 |
msgstr ""
|
4966 |
|
4967 |
+
#: src/processors/loginprotect_googleauthenticator.php:44
|
4968 |
+
msgid "Scan This QR Code"
|
4969 |
msgstr ""
|
4970 |
|
4971 |
+
#: src/processors/loginprotect_googleauthenticator.php:46
|
4972 |
+
#: src/processors/loginprotect_yubikey.php:44
|
4973 |
#, php-format
|
4974 |
+
msgid "Sorry, %s may not be added to another user's account."
|
4975 |
msgstr ""
|
4976 |
|
4977 |
+
#: src/processors/loginprotect_googleauthenticator.php:47
|
4978 |
+
#: src/processors/loginprotect_yubikey.php:45
|
4979 |
#, php-format
|
4980 |
+
msgid ""
|
4981 |
+
"Sorry, %s may only be removed from another user's account by a Security "
|
4982 |
+
"Administrator."
|
4983 |
msgstr ""
|
4984 |
|
4985 |
+
#: src/processors/loginprotect_googleauthenticator.php:48
|
4986 |
+
#: src/processors/loginprotect_twofactorauth.php:227
|
4987 |
+
#: src/processors/loginprotect_yubikey.php:46
|
4988 |
#, php-format
|
4989 |
+
msgid "Provided by %s"
|
4990 |
msgstr ""
|
4991 |
|
4992 |
+
#: src/processors/loginprotect_googleauthenticator.php:49
|
4993 |
+
#: src/processors/loginprotect_yubikey.php:47
|
4994 |
+
msgid "Understand how to remove Google Authenticator"
|
4995 |
msgstr ""
|
4996 |
|
4997 |
+
#: src/processors/loginprotect_googleauthenticator.php:112
|
4998 |
+
#: src/processors/loginprotect_googleauthenticator.php:163
|
4999 |
+
msgid "Google Authenticator was successfully removed from the account."
|
5000 |
msgstr ""
|
5001 |
|
5002 |
+
#: src/processors/loginprotect_googleauthenticator.php:118
|
5003 |
+
msgid ""
|
5004 |
+
"Google Authenticator could not be removed from the account - ensure your "
|
5005 |
+
"code is correct."
|
5006 |
msgstr ""
|
5007 |
|
5008 |
+
#: src/processors/loginprotect_googleauthenticator.php:154
|
5009 |
+
#: src/processors/loginprotect_yubikey.php:74
|
5010 |
+
msgid "One Time Password (OTP) was not valid."
|
5011 |
msgstr ""
|
5012 |
|
5013 |
+
#: src/processors/loginprotect_googleauthenticator.php:154
|
5014 |
+
#: src/processors/loginprotect_yubikey.php:74
|
5015 |
+
msgid "Please try again."
|
5016 |
msgstr ""
|
5017 |
|
5018 |
+
#: src/processors/loginprotect_googleauthenticator.php:170
|
5019 |
+
msgid ""
|
5020 |
+
"An email has been sent to you in order to confirm Google Authenticator "
|
5021 |
+
"removal"
|
5022 |
msgstr ""
|
5023 |
|
5024 |
+
#: src/processors/loginprotect_googleauthenticator.php:173
|
5025 |
+
msgid ""
|
5026 |
+
"We tried to send an email for you to confirm Google Authenticator removal "
|
5027 |
+
"but it failed."
|
5028 |
msgstr ""
|
5029 |
|
5030 |
+
#: src/processors/loginprotect_googleauthenticator.php:193
|
5031 |
+
#: src/processors/loginprotect_yubikey.php:92
|
5032 |
#, php-format
|
5033 |
+
msgid "%s was successfully added to your account."
|
5034 |
msgstr ""
|
5035 |
|
5036 |
+
#: src/processors/loginprotect_googleauthenticator.php:233
|
5037 |
+
msgid "Did we forget to use the Google Authenticator?"
|
5038 |
msgstr ""
|
5039 |
|
5040 |
+
#: src/processors/loginprotect_googleauthenticator.php:240
|
5041 |
+
msgid "Oh dear."
|
5042 |
msgstr ""
|
5043 |
|
5044 |
+
#: src/processors/loginprotect_googleauthenticator.php:240
|
5045 |
+
msgid "Google Authenticator Code Failed."
|
5046 |
msgstr ""
|
5047 |
|
5048 |
+
#: src/processors/loginprotect_googleauthenticator.php:268
|
5049 |
+
msgid "Please use your Google Authenticator App to retrieve your code."
|
5050 |
msgstr ""
|
5051 |
|
5052 |
+
#: src/processors/loginprotect_googleauthenticator.php:287
|
5053 |
+
msgid ""
|
5054 |
+
"You have requested the removal of Google Authenticator from your WordPress "
|
5055 |
+
"account."
|
5056 |
msgstr ""
|
5057 |
|
5058 |
+
#: src/processors/loginprotect_googleauthenticator.php:288
|
5059 |
+
msgid "Please click the link below to confirm."
|
|
|
5060 |
msgstr ""
|
5061 |
|
5062 |
+
#: src/processors/loginprotect_googleauthenticator.php:293
|
5063 |
+
msgid "Google Authenticator Removal Confirmation"
|
|
|
5064 |
msgstr ""
|
5065 |
|
5066 |
+
#: src/processors/loginprotect_googleauthenticator.php:317
|
5067 |
+
msgid "Google Authenticator was successfully removed from this account."
|
|
|
5068 |
msgstr ""
|
5069 |
|
5070 |
+
#: src/processors/loginprotect_googleauthenticator.php:351
|
5071 |
#, php-format
|
5072 |
+
msgid ""
|
5073 |
+
"User \"%s\" verified their identity using Google Authenticator Two-Factor "
|
5074 |
+
"Authentication."
|
5075 |
msgstr ""
|
5076 |
|
5077 |
+
#: src/processors/loginprotect_googleauthenticator.php:361
|
5078 |
#, php-format
|
5079 |
+
msgid ""
|
5080 |
+
"User \"%s\" failed to verify their identity using Google Authenticator Two-"
|
5081 |
+
"Factor Authentication."
|
|
|
|
|
5082 |
msgstr ""
|
5083 |
|
5084 |
+
#: src/processors/loginprotect_intent.php:111
|
5085 |
+
msgid "Success"
|
|
|
|
|
|
|
5086 |
msgstr ""
|
5087 |
|
5088 |
+
#: src/processors/loginprotect_intent.php:111
|
5089 |
+
msgid "Thank you for authenticating your login."
|
|
|
5090 |
msgstr ""
|
5091 |
|
5092 |
+
#: src/processors/loginprotect_intent.php:115
|
5093 |
+
msgid "One or more of your authentication codes failed or was missing"
|
|
|
5094 |
msgstr ""
|
5095 |
|
5096 |
+
#: src/processors/loginprotect_intent.php:244
|
5097 |
+
msgid "Please supply all authentication codes"
|
5098 |
msgstr ""
|
5099 |
|
5100 |
+
#: src/processors/loginprotect_intent.php:247
|
5101 |
+
msgid "Please supply at least 1 authentication code"
|
5102 |
msgstr ""
|
5103 |
|
5104 |
+
#: src/processors/loginprotect_intent.php:259
|
5105 |
+
msgid "Cancel Login"
|
5106 |
msgstr ""
|
5107 |
|
5108 |
+
#: src/processors/loginprotect_intent.php:260
|
5109 |
+
msgid "Time Remaining"
|
5110 |
msgstr ""
|
5111 |
|
5112 |
+
#: src/processors/loginprotect_intent.php:261
|
5113 |
+
msgid "Calculating"
|
|
|
5114 |
msgstr ""
|
5115 |
|
5116 |
+
#: src/processors/loginprotect_intent.php:262
|
5117 |
+
msgid "Seconds"
|
|
|
5118 |
msgstr ""
|
5119 |
|
5120 |
+
#: src/processors/loginprotect_intent.php:263
|
5121 |
+
msgid "Login Expired"
|
|
|
|
|
5122 |
msgstr ""
|
5123 |
|
5124 |
+
#: src/processors/loginprotect_intent.php:264
|
5125 |
+
msgid "Verify My Login"
|
|
|
5126 |
msgstr ""
|
5127 |
|
5128 |
+
#: src/processors/loginprotect_intent.php:266
|
5129 |
+
msgid "What is this?"
|
5130 |
msgstr ""
|
5131 |
|
5132 |
+
#: src/processors/loginprotect_intent.php:268
|
5133 |
+
#, php-format
|
5134 |
+
msgid "%s Login Verification"
|
|
|
5135 |
msgstr ""
|
5136 |
|
5137 |
+
#: src/processors/loginprotect_intent.php:269
|
5138 |
+
#, php-format
|
5139 |
+
msgid "Don't ask again on this browser for %s day(s)"
|
5140 |
msgstr ""
|
5141 |
|
5142 |
+
#: src/processors/loginprotect_twofactorauth.php:45
|
5143 |
+
#, php-format
|
5144 |
msgid ""
|
5145 |
+
"User \"%s\" verified their identity using Email Two-Factor Authentication."
|
|
|
5146 |
msgstr ""
|
5147 |
|
5148 |
+
#: src/processors/loginprotect_twofactorauth.php:55
|
5149 |
+
#, php-format
|
5150 |
msgid ""
|
5151 |
+
"User \"%s\" failed to verify their identity using Email Two-Factor "
|
5152 |
+
"Authentication."
|
5153 |
msgstr ""
|
5154 |
|
5155 |
+
#: src/processors/loginprotect_twofactorauth.php:87
|
5156 |
+
msgid "This code was just sent to your registered Email address."
|
|
|
|
|
5157 |
msgstr ""
|
5158 |
|
5159 |
+
#: src/processors/loginprotect_twofactorauth.php:88
|
5160 |
+
msgid "Email OTP"
|
|
|
|
|
5161 |
msgstr ""
|
5162 |
|
5163 |
+
#: src/processors/loginprotect_twofactorauth.php:181
|
5164 |
+
msgid "Someone attempted to login into this WordPress site using your account."
|
5165 |
msgstr ""
|
5166 |
|
5167 |
+
#: src/processors/loginprotect_twofactorauth.php:182
|
5168 |
+
msgid "Login requires verification with the following code."
|
|
|
5169 |
msgstr ""
|
5170 |
|
5171 |
+
#: src/processors/loginprotect_twofactorauth.php:184
|
5172 |
#, php-format
|
5173 |
+
msgid "Verification Code: %s"
|
|
|
|
|
|
|
|
|
5174 |
msgstr ""
|
5175 |
|
5176 |
+
#: src/processors/loginprotect_twofactorauth.php:186
|
5177 |
+
msgid "Login Details"
|
5178 |
msgstr ""
|
5179 |
|
5180 |
+
#: src/processors/loginprotect_twofactorauth.php:187
|
5181 |
#, php-format
|
5182 |
+
msgid "URL: %s"
|
5183 |
msgstr ""
|
5184 |
|
5185 |
+
#: src/processors/loginprotect_twofactorauth.php:188
|
5186 |
+
#: src/processors/user_management.php:178
|
5187 |
#, php-format
|
5188 |
+
msgid "Username: %s"
|
5189 |
msgstr ""
|
5190 |
|
5191 |
+
#: src/processors/loginprotect_twofactorauth.php:191
|
5192 |
+
msgid "Why no login link?"
|
|
|
5193 |
msgstr ""
|
5194 |
|
5195 |
+
#: src/processors/loginprotect_twofactorauth.php:194
|
5196 |
+
msgid "Two-Factor Login Verification"
|
|
|
5197 |
msgstr ""
|
5198 |
|
5199 |
+
#: src/processors/loginprotect_twofactorauth.php:199
|
5200 |
#, php-format
|
5201 |
msgid ""
|
5202 |
+
"User \"%s\" was sent an email to verify their Identity using Two-Factor "
|
5203 |
+
"Login Auth for IP address \"%s\"."
|
5204 |
msgstr ""
|
5205 |
|
5206 |
+
#: src/processors/loginprotect_twofactorauth.php:203
|
5207 |
+
#, php-format
|
5208 |
+
msgid ""
|
5209 |
+
"Tried to send email to User \"%s\" to verify their identity using Two-Factor "
|
5210 |
+
"Login Auth for IP address \"%s\", but email sending failed."
|
5211 |
msgstr ""
|
5212 |
|
5213 |
+
#: src/processors/loginprotect_twofactorauth.php:226
|
5214 |
+
msgid "Check the box to enable email-based login authentication."
|
5215 |
msgstr ""
|
5216 |
|
5217 |
+
#: src/processors/loginprotect_wplogin.php:52
|
5218 |
+
msgid ""
|
5219 |
+
"Your login URL is unchanged because the Rename WP Login feature is not "
|
5220 |
+
"currently supported on WPMS."
|
5221 |
msgstr ""
|
5222 |
|
5223 |
+
#: src/processors/loginprotect_wplogin.php:56
|
5224 |
+
#: src/processors/loginprotect_wplogin.php:60
|
5225 |
#, php-format
|
5226 |
+
msgid ""
|
5227 |
+
"Can not use the Rename WP Login feature because you have the \"%s\" plugin "
|
5228 |
+
"installed and it is active."
|
5229 |
msgstr ""
|
5230 |
|
5231 |
+
#: src/processors/loginprotect_wplogin.php:64
|
5232 |
#, php-format
|
5233 |
+
msgid ""
|
5234 |
+
"Can not use the Rename WP Login feature because you have not enabled %s."
|
5235 |
msgstr ""
|
5236 |
|
5237 |
+
#: src/processors/loginprotect_wplogin.php:68
|
5238 |
#, php-format
|
5239 |
msgid ""
|
5240 |
+
"Can not use the Rename WP Login feature because you have chosen a path (\"%s"
|
5241 |
+
"\") that is reserved on your WordPress site."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5242 |
msgstr ""
|
5243 |
|
5244 |
+
#: src/processors/loginprotect_wplogin.php:94
|
5245 |
msgid ""
|
5246 |
+
"Your login URL is unchanged because your current hosting/PHP configuration "
|
5247 |
+
"cannot parse the necessary information."
|
5248 |
msgstr ""
|
5249 |
|
5250 |
+
#: src/processors/loginprotect_yubikey.php:38
|
5251 |
+
msgid "This is your unique Yubikey Device ID."
|
|
|
|
|
5252 |
msgstr ""
|
5253 |
|
5254 |
+
#: src/processors/loginprotect_yubikey.php:39
|
5255 |
+
msgid "Provide a One Time Password from your Yubikey."
|
5256 |
msgstr ""
|
5257 |
|
5258 |
+
#: src/processors/loginprotect_yubikey.php:40
|
5259 |
+
msgid "This will remove Yubikey Authentication from your account."
|
|
|
|
|
|
|
5260 |
msgstr ""
|
5261 |
|
5262 |
+
#: src/processors/loginprotect_yubikey.php:40
|
5263 |
+
msgid "This will add Yubikey Authentication to your account."
|
5264 |
msgstr ""
|
5265 |
|
5266 |
+
#: src/processors/loginprotect_yubikey.php:41
|
5267 |
+
msgid "Yubikey ID"
|
|
|
|
|
|
|
5268 |
msgstr ""
|
5269 |
|
5270 |
+
#: src/processors/loginprotect_yubikey.php:42
|
5271 |
+
#: src/processors/loginprotect_yubikey.php:240
|
5272 |
+
msgid "Yubikey OTP"
|
5273 |
msgstr ""
|
5274 |
|
5275 |
+
#: src/processors/loginprotect_yubikey.php:43
|
5276 |
+
msgid "Yubikey Authentication"
|
|
|
|
|
|
|
5277 |
msgstr ""
|
5278 |
|
5279 |
+
#: src/processors/loginprotect_yubikey.php:45
|
5280 |
+
#: src/processors/loginprotect_yubikey.php:93
|
5281 |
+
#: src/processors/loginprotect_yubikey.php:102
|
5282 |
+
msgid "Yubikey"
|
5283 |
+
msgstr ""
|
5284 |
+
|
5285 |
+
#: src/processors/loginprotect_yubikey.php:101
|
5286 |
+
#, php-format
|
5287 |
+
msgid "%s was successfully removed from your account."
|
5288 |
msgstr ""
|
5289 |
|
5290 |
+
#: src/processors/loginprotect_yubikey.php:148
|
5291 |
#, php-format
|
5292 |
msgid ""
|
5293 |
+
"User \"%s\" logged in without a Yubikey One Time Password because no "
|
5294 |
+
"username-yubikey pair was found for this user."
|
5295 |
msgstr ""
|
5296 |
|
5297 |
+
#: src/processors/loginprotect_yubikey.php:155
|
5298 |
+
#, php-format
|
5299 |
msgid ""
|
5300 |
+
"User \"%s\" attempted to login but Yubikey ID \"%s\" used was not in list of "
|
5301 |
+
"authorised keys."
|
5302 |
msgstr ""
|
5303 |
|
5304 |
+
#: src/processors/loginprotect_yubikey.php:161
|
5305 |
+
#: src/processors/loginprotect_yubikey.php:179
|
5306 |
+
#, php-format
|
5307 |
+
msgid "ERROR: %s"
|
5308 |
msgstr ""
|
5309 |
|
5310 |
+
#: src/processors/loginprotect_yubikey.php:161
|
|
|
5311 |
msgid ""
|
5312 |
+
"The Yubikey provided is not on the list of permitted keys for this user."
|
|
|
5313 |
msgstr ""
|
5314 |
|
5315 |
+
#: src/processors/loginprotect_yubikey.php:168
|
5316 |
+
#: src/processors/loginprotect_yubikey.php:215
|
5317 |
#, php-format
|
5318 |
msgid ""
|
5319 |
+
"User \"%s\" successfully logged in using a validated Yubikey One Time "
|
5320 |
+
"Password."
|
|
|
|
|
|
|
|
|
5321 |
msgstr ""
|
5322 |
|
5323 |
+
#: src/processors/loginprotect_yubikey.php:174
|
5324 |
#, php-format
|
5325 |
msgid ""
|
5326 |
+
"User \"%s\" attempted to login but Yubikey One Time Password failed to "
|
5327 |
+
"validate due to invalid Yubi API response.\"."
|
5328 |
msgstr ""
|
5329 |
|
5330 |
+
#: src/processors/loginprotect_yubikey.php:179
|
5331 |
+
msgid "The Yubikey authentication was not validated successfully."
|
5332 |
msgstr ""
|
5333 |
|
5334 |
+
#: src/processors/loginprotect_yubikey.php:222
|
5335 |
+
#, php-format
|
5336 |
msgid ""
|
5337 |
+
"User \"%s\" failed to verify their identity using Yubikey One Time Password."
|
|
|
5338 |
msgstr ""
|
5339 |
|
5340 |
+
#: src/processors/loginprotect_yubikey.php:238
|
5341 |
+
msgid "Use your Yubikey to generate a new code."
|
5342 |
msgstr ""
|
5343 |
|
5344 |
+
#: src/processors/plugin.php:159
|
5345 |
#, php-format
|
5346 |
+
msgid "%s plugin is not currently processing requests"
|
|
|
|
|
|
|
|
|
5347 |
msgstr ""
|
5348 |
|
5349 |
+
#: src/processors/plugin.php:161
|
5350 |
+
#, php-format
|
5351 |
+
msgid "Please delete the \"%s\" file to reactivate the %s protection"
|
5352 |
msgstr ""
|
5353 |
|
5354 |
+
#: src/processors/plugin.php:188
|
5355 |
+
msgid "Your Name"
|
|
|
|
|
5356 |
msgstr ""
|
5357 |
|
5358 |
+
#: src/processors/plugin.php:189
|
5359 |
+
msgid "Your Email"
|
|
|
5360 |
msgstr ""
|
5361 |
|
5362 |
+
#: src/processors/plugin_badge.php:30
|
5363 |
+
#, php-format
|
5364 |
+
msgid "%s is provided by %s"
|
5365 |
msgstr ""
|
5366 |
|
5367 |
+
#: src/processors/plugin_badge.php:35
|
5368 |
#, php-format
|
5369 |
+
msgid "Days Installed: %s"
|
5370 |
msgstr ""
|
5371 |
|
5372 |
+
#: src/processors/plugin_badgewidget.php:20
|
5373 |
+
#, php-format
|
5374 |
+
msgid "%s Plugin Badge"
|
5375 |
msgstr ""
|
5376 |
|
5377 |
+
#: src/processors/plugin_badgewidget.php:22
|
5378 |
+
#, php-format
|
5379 |
+
msgid ""
|
5380 |
+
"You can now help spread the word about the %s plugin anywhere on your site"
|
5381 |
msgstr ""
|
5382 |
|
5383 |
+
#: src/processors/plugin_badgewidget.php:55
|
5384 |
+
msgid "Site Secured"
|
|
|
|
|
5385 |
msgstr ""
|
5386 |
|
5387 |
+
#: src/processors/plugin_importexport.php:92
|
5388 |
+
#, php-format
|
5389 |
+
msgid "Not currently running %s Pro."
|
5390 |
msgstr ""
|
5391 |
|
5392 |
+
#: src/processors/plugin_importexport.php:96
|
5393 |
+
msgid "Export of options is currently disabled."
|
5394 |
msgstr ""
|
5395 |
|
5396 |
+
#: src/processors/plugin_importexport.php:100
|
5397 |
+
msgid "Handshake verification failed."
|
5398 |
msgstr ""
|
5399 |
|
5400 |
+
#: src/processors/plugin_importexport.php:109
|
5401 |
+
#, php-format
|
5402 |
+
msgid "Options exported to site %s."
|
5403 |
msgstr ""
|
5404 |
|
5405 |
+
#: src/processors/plugin_importexport.php:115
|
5406 |
#, php-format
|
5407 |
+
msgid "Site added to export white list: %s."
|
5408 |
msgstr ""
|
5409 |
|
5410 |
+
#: src/processors/plugin_importexport.php:254
|
5411 |
+
#, php-format
|
5412 |
+
msgid "Options imported from %s."
|
5413 |
msgstr ""
|
5414 |
|
5415 |
+
#: src/processors/plugin_importexport.php:264
|
5416 |
+
#, php-format
|
5417 |
+
msgid "Master Site URL set to %s."
|
5418 |
msgstr ""
|
5419 |
|
5420 |
+
#: src/processors/plugin_tracking.php:32
|
5421 |
#, php-format
|
5422 |
+
msgid "Make %s even better by sharing usage info?"
|
5423 |
msgstr ""
|
5424 |
|
5425 |
+
#: src/processors/plugin_tracking.php:33
|
5426 |
#, php-format
|
5427 |
+
msgid "We're hoping to understand how %s is configured and used."
|
5428 |
msgstr ""
|
5429 |
|
5430 |
+
#: src/processors/plugin_tracking.php:34
|
5431 |
+
msgid "We'd like to understand how effective it is on a global scale."
|
5432 |
msgstr ""
|
5433 |
|
5434 |
+
#: src/processors/plugin_tracking.php:35
|
5435 |
msgid ""
|
5436 |
+
"The data sent is always completely anonymous and we can never track you or "
|
5437 |
+
"your site."
|
5438 |
msgstr ""
|
5439 |
|
5440 |
+
#: src/processors/plugin_tracking.php:36
|
5441 |
+
msgid "It can be turned-off at any time within the plugin options."
|
|
|
|
|
5442 |
msgstr ""
|
5443 |
|
5444 |
+
#: src/processors/plugin_tracking.php:37
|
5445 |
+
msgid "Click to see the RAW data that would be sent"
|
5446 |
msgstr ""
|
5447 |
|
5448 |
+
#: src/processors/plugin_tracking.php:40
|
5449 |
+
msgid "Absolutely"
|
5450 |
msgstr ""
|
5451 |
|
5452 |
+
#: src/processors/sessions.php:94
|
5453 |
+
msgid "You're already logged-in."
|
|
|
5454 |
msgstr ""
|
5455 |
|
5456 |
+
#: src/processors/sessions.php:99
|
5457 |
+
msgid "Go To Admin"
|
5458 |
msgstr ""
|
5459 |
|
5460 |
+
#: src/processors/statistics.php:131
|
5461 |
+
msgid "Comment Blocks"
|
5462 |
msgstr ""
|
5463 |
|
5464 |
+
#: src/processors/statistics.php:132
|
5465 |
+
msgid "Firewall Blocks"
|
5466 |
msgstr ""
|
5467 |
|
5468 |
+
#: src/processors/statistics.php:133
|
5469 |
+
msgid "Login Blocks"
|
|
|
|
|
5470 |
msgstr ""
|
5471 |
|
5472 |
+
#: src/processors/statistics.php:134
|
5473 |
+
msgid "Login Verified"
|
|
|
|
|
5474 |
msgstr ""
|
5475 |
|
5476 |
+
#: src/processors/statistics.php:137
|
5477 |
+
msgid "IP Auto Black-Listed"
|
|
|
|
|
5478 |
msgstr ""
|
5479 |
|
5480 |
+
#: src/processors/statistics.php:138
|
5481 |
+
msgid "Total Transgressions"
|
5482 |
msgstr ""
|
5483 |
|
5484 |
+
#: src/processors/statistics.php:142
|
5485 |
+
msgid "Shield Statistics"
|
5486 |
msgstr ""
|
5487 |
|
5488 |
+
#: src/processors/user_management.php:99
|
5489 |
+
msgid "Last Login"
|
5490 |
msgstr ""
|
5491 |
|
5492 |
+
#: src/processors/user_management.php:121
|
5493 |
+
msgid "Not Recorded"
|
5494 |
msgstr ""
|
5495 |
|
5496 |
+
#: src/processors/user_management.php:169
|
5497 |
#, php-format
|
5498 |
+
msgid ""
|
5499 |
+
"As requested, %s is notifying you of a successful %s login to a WordPress "
|
5500 |
+
"site that you manage."
|
5501 |
msgstr ""
|
5502 |
|
5503 |
+
#: src/processors/user_management.php:174
|
5504 |
+
#, php-format
|
5505 |
+
msgid "Important: %s"
|
5506 |
msgstr ""
|
5507 |
|
5508 |
+
#: src/processors/user_management.php:174
|
5509 |
msgid ""
|
5510 |
+
"This user may now be subject to additional Two-Factor Authentication before "
|
5511 |
+
"completing their login."
|
5512 |
msgstr ""
|
5513 |
|
5514 |
+
#: src/processors/user_management.php:176
|
5515 |
+
msgid "Details for this user are below:"
|
|
|
|
|
5516 |
msgstr ""
|
5517 |
|
5518 |
+
#: src/processors/user_management.php:177
|
5519 |
+
#, php-format
|
5520 |
+
msgid "Site URL: %s"
|
|
|
5521 |
msgstr ""
|
5522 |
|
5523 |
+
#: src/processors/user_management.php:179
|
5524 |
+
#, php-format
|
5525 |
+
msgid "User Email: %s"
|
5526 |
msgstr ""
|
5527 |
|
5528 |
+
#: src/processors/user_management.php:182
|
5529 |
+
msgid "Thanks."
|
5530 |
msgstr ""
|
5531 |
|
5532 |
+
#: src/processors/user_management.php:190
|
|
|
5533 |
#, php-format
|
5534 |
+
msgid "Notice - %s"
|
5535 |
msgstr ""
|
5536 |
|
5537 |
+
#: src/processors/user_management.php:190
|
5538 |
#, php-format
|
5539 |
+
msgid "%s Just Logged Into %s"
|
5540 |
msgstr ""
|
5541 |
|
5542 |
+
#: src/processors/usermanagement_passwords.php:111
|
5543 |
+
msgid ""
|
5544 |
+
"Your password doesn't currently meet requirements set by your security "
|
5545 |
+
"administrator."
|
5546 |
msgstr ""
|
5547 |
|
5548 |
+
#: src/processors/usermanagement_passwords.php:141
|
|
|
5549 |
msgid ""
|
5550 |
+
"Your security administrator has imposed requirements for password quality."
|
|
|
5551 |
msgstr ""
|
5552 |
|
5553 |
+
#: src/processors/usermanagement_passwords.php:193
|
5554 |
#, php-format
|
5555 |
+
msgid "Password length (%s) too short (min: %s characters)"
|
|
|
|
|
5556 |
msgstr ""
|
5557 |
|
5558 |
+
#: src/processors/usermanagement_passwords.php:255
|
5559 |
+
#: src/processors/usermanagement_passwords.php:318
|
5560 |
+
msgid "Please use a different password."
|
5561 |
msgstr ""
|
5562 |
|
5563 |
+
#: src/processors/usermanagement_passwords.php:256
|
5564 |
+
#: src/processors/usermanagement_passwords.php:319
|
5565 |
+
msgid "This password has already been pwned."
|
|
|
5566 |
msgstr ""
|
5567 |
|
5568 |
+
#: src/processors/usermanagement_passwords.php:260
|
5569 |
+
#: src/processors/usermanagement_passwords.php:323
|
5570 |
#, php-format
|
5571 |
+
msgid "%s times"
|
|
|
|
|
5572 |
msgstr ""
|
5573 |
|
5574 |
+
#: src/processors/usermanagement_sessions.php:200
|
5575 |
+
msgid "Your session has expired."
|
|
|
|
|
5576 |
msgstr ""
|
5577 |
|
5578 |
+
#: src/processors/usermanagement_sessions.php:204
|
5579 |
+
msgid "Your session was idle for too long."
|
|
|
|
|
|
|
5580 |
msgstr ""
|
5581 |
|
5582 |
+
#: src/processors/usermanagement_sessions.php:208
|
5583 |
+
msgid "Your session was locked to another IP Address."
|
|
|
5584 |
msgstr ""
|
5585 |
|
5586 |
+
#: src/processors/usermanagement_sessions.php:212
|
5587 |
+
#, php-format
|
5588 |
+
msgid "You do not currently have a %s user session."
|
|
|
5589 |
msgstr ""
|
5590 |
|
5591 |
+
#: src/processors/usermanagement_sessions.php:217
|
5592 |
+
msgid "An administrator has terminated this session."
|
|
|
|
|
|
|
5593 |
msgstr ""
|
5594 |
|
5595 |
+
#: src/processors/usermanagement_sessions.php:221
|
5596 |
+
msgid "Not a user."
|
|
|
|
|
|
|
5597 |
msgstr ""
|
5598 |
|
5599 |
+
#: src/processors/usermanagement_sessions.php:225
|
5600 |
+
msgid "Your session was terminated."
|
|
|
5601 |
msgstr ""
|
5602 |
|
5603 |
+
#: src/processors/usermanagement_sessions.php:229
|
5604 |
+
msgid "Please login again."
|
5605 |
+
msgstr ""
|
5606 |
+
|
5607 |
+
#: src/wizards/base.php:358
|
5608 |
#, php-format
|
5609 |
+
msgid "%s Wizard"
|
|
|
|
|
5610 |
msgstr ""
|
5611 |
|
5612 |
+
#: src/wizards/base.php:497
|
5613 |
+
msgid "No Access"
|
|
|
5614 |
msgstr ""
|
5615 |
|
5616 |
+
#: src/wizards/base_wpsf.php:113
|
5617 |
+
msgid "Security Admin Key was not correct."
|
|
|
|
|
|
|
5618 |
msgstr ""
|
5619 |
|
5620 |
+
#: src/wizards/hack_protect.php:18
|
5621 |
#, php-format
|
5622 |
+
msgid "%s Hack Protect Wizard"
|
|
|
|
|
5623 |
msgstr ""
|
5624 |
|
5625 |
+
#: src/wizards/hack_protect.php:302
|
5626 |
+
msgid "All changes detected have been ignored."
|
|
|
|
|
|
|
5627 |
msgstr ""
|
5628 |
|
5629 |
+
#: src/wizards/hack_protect.php:310
|
5630 |
+
msgid "The plugin has been deactivated."
|
5631 |
msgstr ""
|
5632 |
|
5633 |
+
#: src/wizards/login_protect.php:18
|
5634 |
#, php-format
|
5635 |
+
msgid "%s Multi-Factor Authentication Wizard"
|
5636 |
msgstr ""
|
5637 |
|
5638 |
+
#: src/wizards/login_protect.php:62
|
5639 |
+
msgid "Invalid email address"
|
|
|
5640 |
msgstr ""
|
5641 |
|
5642 |
+
#: src/wizards/login_protect.php:117
|
5643 |
+
msgid "Code was empty."
|
|
|
5644 |
msgstr ""
|
5645 |
|
5646 |
+
#: src/wizards/login_protect.php:144
|
5647 |
+
msgid "Google Authenticator was enabled for the site."
|
|
|
5648 |
msgstr ""
|
5649 |
|
5650 |
+
#: src/wizards/login_protect.php:159
|
5651 |
#, php-format
|
5652 |
+
msgid "Multi-Factor Authentication was %s for the site."
|
5653 |
msgstr ""
|
5654 |
|
5655 |
+
#: src/wizards/login_protect.php:160
|
5656 |
+
msgid "enabled"
|
5657 |
msgstr ""
|
5658 |
|
5659 |
+
#: src/wizards/login_protect.php:160
|
5660 |
+
msgid "disabled"
|
5661 |
msgstr ""
|
5662 |
|
5663 |
+
#: src/wizards/plugin.php:25
|
5664 |
#, php-format
|
5665 |
+
msgid "%s Welcome Wizard"
|
5666 |
msgstr ""
|
5667 |
|
5668 |
+
#: src/wizards/plugin.php:227
|
5669 |
+
msgid "Where to find Shield"
|
|
|
|
|
5670 |
msgstr ""
|
5671 |
|
5672 |
+
#: src/wizards/plugin.php:228
|
5673 |
+
msgid "Accessing Each Module"
|
5674 |
msgstr ""
|
5675 |
|
5676 |
+
#: src/wizards/plugin.php:229
|
5677 |
+
msgid "Accessing Options"
|
|
|
5678 |
msgstr ""
|
5679 |
|
5680 |
+
#: src/wizards/plugin.php:230
|
5681 |
+
msgid "Launching Wizards"
|
|
|
|
|
5682 |
msgstr ""
|
5683 |
|
5684 |
+
#: src/wizards/plugin.php:231
|
5685 |
+
msgid "Finding Help"
|
|
|
|
|
5686 |
msgstr ""
|
5687 |
|
5688 |
+
#: src/wizards/plugin.php:232
|
5689 |
+
msgid "Actions (not Options)"
|
|
|
|
|
5690 |
msgstr ""
|
5691 |
|
5692 |
+
#: src/wizards/plugin.php:233
|
5693 |
+
msgid "Help For Each Option"
|
|
|
|
|
5694 |
msgstr ""
|
5695 |
|
5696 |
+
#: src/wizards/plugin.php:234
|
5697 |
+
msgid "Module On/Off Switch"
|
5698 |
msgstr ""
|
5699 |
|
5700 |
+
#: src/wizards/plugin.php:237
|
5701 |
+
#, php-format
|
5702 |
+
msgid "You'll find the main %s settings in the left-hand WordPress menu."
|
5703 |
msgstr ""
|
5704 |
|
5705 |
+
#: src/wizards/plugin.php:238
|
5706 |
+
msgid ""
|
5707 |
+
"Shield is split up into independent modules for accessing the options of "
|
5708 |
+
"each feature."
|
5709 |
msgstr ""
|
5710 |
|
5711 |
+
#: src/wizards/plugin.php:239
|
5712 |
+
msgid ""
|
5713 |
+
"When you load a module, you can access the options by clicking on the "
|
5714 |
+
"Options Panel link."
|
5715 |
msgstr ""
|
5716 |
|
5717 |
+
#: src/wizards/plugin.php:240
|
5718 |
+
msgid "Launch helpful walk-through wizards for modules that have them."
|
5719 |
msgstr ""
|
5720 |
|
5721 |
+
#: src/wizards/plugin.php:241
|
5722 |
+
msgid ""
|
5723 |
+
"Each module also has a brief overview help section - there is more in-depth "
|
5724 |
+
"help available."
|
5725 |
msgstr ""
|
5726 |
|
5727 |
+
#: src/wizards/plugin.php:242
|
5728 |
+
msgid ""
|
5729 |
+
"Certain modules have extra actions and features, e.g. Audit Trail Viewer."
|
5730 |
msgstr ""
|
5731 |
|
5732 |
+
#: src/wizards/plugin.php:243
|
5733 |
+
msgid "Note: Not all modules have the actions section"
|
5734 |
msgstr ""
|
5735 |
|
5736 |
+
#: src/wizards/plugin.php:244
|
5737 |
+
msgid ""
|
5738 |
+
"Each module has an Enable/Disable checkbox to turn on/off all processing for "
|
5739 |
+
"that module"
|
5740 |
msgstr ""
|
5741 |
|
5742 |
+
#: src/wizards/plugin.php:245
|
5743 |
+
msgid ""
|
5744 |
+
"To help you understand each option, most of them have a more info link, and/"
|
5745 |
+
"or a blog link, to read more"
|
5746 |
msgstr ""
|
5747 |
|
5748 |
+
#: src/wizards/plugin.php:306
|
5749 |
+
msgid "Success!"
|
5750 |
msgstr ""
|
5751 |
|
5752 |
+
#: src/wizards/plugin.php:331
|
5753 |
+
msgid "License key was accepted and installed successfully."
|
5754 |
msgstr ""
|
5755 |
|
5756 |
+
#: src/wizards/plugin.php:334
|
5757 |
+
msgid "License key was not accepted."
|
5758 |
msgstr ""
|
5759 |
|
5760 |
+
#: src/wizards/plugin.php:365
|
5761 |
+
msgid "Options imported successfully to your site."
|
5762 |
msgstr ""
|
5763 |
|
5764 |
+
#: src/wizards/plugin.php:366
|
5765 |
+
msgid "Secret key was empty."
|
5766 |
+
msgstr ""
|
5767 |
+
|
5768 |
+
#: src/wizards/plugin.php:367
|
5769 |
+
msgid "Secret key was not 40 characters long."
|
5770 |
+
msgstr ""
|
5771 |
+
|
5772 |
+
#: src/wizards/plugin.php:368
|
5773 |
msgid ""
|
5774 |
+
"Secret key contains invalid characters - it should be letters and numbers "
|
5775 |
+
"only."
|
5776 |
msgstr ""
|
5777 |
|
5778 |
+
#: src/wizards/plugin.php:369
|
5779 |
+
msgid "Source site URL could not be parsed correctly."
|
5780 |
msgstr ""
|
5781 |
|
5782 |
+
#: src/wizards/plugin.php:370
|
5783 |
+
msgid "Could not parse the response from the site."
|
|
|
5784 |
msgstr ""
|
5785 |
|
5786 |
+
#: src/wizards/plugin.php:371
|
5787 |
+
msgid "Check the secret key is correct for the remote site."
|
|
|
5788 |
msgstr ""
|
5789 |
|
5790 |
+
#: src/wizards/plugin.php:372
|
5791 |
+
msgid "Failure response returned from the site."
|
5792 |
msgstr ""
|
5793 |
|
5794 |
+
#: src/wizards/plugin.php:373
|
5795 |
#, php-format
|
5796 |
+
msgid "Remote site responded with - %s"
|
5797 |
msgstr ""
|
5798 |
|
5799 |
+
#: src/wizards/plugin.php:374
|
5800 |
+
msgid "Data returned from the site was empty."
|
5801 |
msgstr ""
|
5802 |
|
5803 |
+
#: src/wizards/plugin.php:408
|
5804 |
+
msgid "Security Admin setup was successful."
|
5805 |
msgstr ""
|
5806 |
|
5807 |
+
#: src/wizards/plugin.php:426 src/wizards/plugin.php:459
|
5808 |
+
#: src/wizards/plugin.php:492 src/wizards/plugin.php:530
|
5809 |
+
#: src/wizards/plugin.php:566
|
5810 |
+
msgid "No changes were made as no option was selected"
|
5811 |
msgstr ""
|
5812 |
|
5813 |
+
#: src/wizards/plugin.php:439 src/wizards/plugin.php:472
|
5814 |
+
#: src/wizards/plugin.php:508 src/wizards/plugin.php:582
|
5815 |
+
msgid "Enabled"
|
5816 |
msgstr ""
|
5817 |
|
5818 |
+
#: src/wizards/plugin.php:439 src/wizards/plugin.php:472
|
5819 |
+
#: src/wizards/plugin.php:508 src/wizards/plugin.php:582
|
5820 |
+
msgid "Disabled"
|
5821 |
msgstr ""
|
5822 |
|
5823 |
+
#: src/wizards/plugin.php:443 src/wizards/plugin.php:476
|
5824 |
+
#: src/wizards/plugin.php:512 src/wizards/plugin.php:586
|
5825 |
+
#, php-format
|
5826 |
+
msgid "%s setting could not be changed at this time."
|
5827 |
msgstr ""
|
5828 |
|
5829 |
+
#: src/wizards/plugin.php:540 src/wizards/plugin.php:550
|
5830 |
+
msgid "Preferences have been saved."
|
5831 |
msgstr ""
|
5832 |
|
5833 |
+
#: templates/php/snippets/options_form.php:17
|
5834 |
+
msgid "Save Options"
|
|
|
5835 |
msgstr ""
|
languages/wp-simple-firewall-fi.mo
CHANGED
Binary file
|
languages/wp-simple-firewall-sr_RS.mo
ADDED
Binary file
|
plugin-spec.php
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
{
|
2 |
"properties": {
|
3 |
-
"version": "6.
|
4 |
-
"release_timestamp":
|
5 |
"slug_parent": "icwp",
|
6 |
"slug_plugin": "wpsf",
|
7 |
"human_name": "Shield",
|
1 |
{
|
2 |
"properties": {
|
3 |
+
"version": "6.6.0",
|
4 |
+
"release_timestamp": 1521445600,
|
5 |
"slug_parent": "icwp",
|
6 |
"slug_plugin": "wpsf",
|
7 |
"human_name": "Shield",
|
readme.txt
CHANGED
@@ -1,30 +1,46 @@
|
|
1 |
=== Shield Security for WordPress ===
|
2 |
Contributors: onedollarplugin, paultgoodchild
|
3 |
-
Donate link: http://icwp.io/
|
4 |
License: GPLv3
|
5 |
License URI: http://www.gnu.org/licenses/gpl.html
|
6 |
Tags: security, all in one, scan, spam, recaptcha, two-factor authentication, ithemes, wordfence, better wp security, cerber, hack
|
7 |
Requires at least: 3.5.0
|
|
|
|
|
8 |
Tested up to: 4.9
|
9 |
-
Stable tag: 6.
|
10 |
|
11 |
Free All-In-One Protection for your WordPress sites, data, reputation, and users. Shield: the Highest-Rated Security Plugin for WordPress
|
12 |
|
13 |
== Description ==
|
14 |
|
15 |
-
Shield
|
16 |
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
* reCAPTCHA
|
25 |
* Firewall
|
26 |
* Security Admin Users
|
27 |
-
* Core file scanners
|
28 |
* Block REST API / XML-RPC
|
29 |
* HTTP Headers
|
30 |
* Automatic Updates Control
|
@@ -36,30 +52,31 @@ Shield handles it all for you:
|
|
36 |
> Why take the risk?
|
37 |
>
|
38 |
> Download and install Shield now for FREE so that you have the most powerful WordPress security system working for you and protecting your site.
|
39 |
-
>
|
40 |
-
> <strong>Shield + iControlWP</strong><br />
|
41 |
-
> If you have multiple sites, then Shield [combined with iControlWP](http://icwp.io/shld8), takes the pain out of managing your websites, and covers your security, daily backup (and restore), and updating plugins/themes
|
42 |
|
43 |
= The New Shield Pro =
|
44 |
|
45 |
-
From November 2017, Shield Security now has a Pro version.
|
46 |
-
|
47 |
-
For just $1/month:
|
48 |
|
49 |
-
|
50 |
-
|
51 |
-
1.
|
52 |
-
1.
|
53 |
-
1.
|
54 |
-
1.
|
55 |
-
1.
|
56 |
-
1.
|
57 |
-
1.
|
58 |
-
1.
|
59 |
-
1.
|
60 |
-
1.
|
61 |
-
|
62 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
63 |
|
64 |
= Our Mission =
|
65 |
|
@@ -356,15 +373,25 @@ If you don't want to support the work, no problem! You can still continue to use
|
|
356 |
|
357 |
You can [go Pro for just $1/month](http://icwp.io/aa).
|
358 |
|
359 |
-
= 6.
|
360 |
-
*Released:
|
361 |
-
|
362 |
-
* **(v.0)**
|
363 |
-
* **(v.0)**
|
364 |
-
* **(v.0)**
|
365 |
-
* **(v.0)**
|
366 |
-
* **(v.0)**
|
367 |
-
* **(v.0)** FIXED: A few
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
368 |
|
369 |
= 6.5 Series =
|
370 |
*Released: 5th March, 2018* - [Release Notes](http://icwp.io/bu)
|
1 |
=== Shield Security for WordPress ===
|
2 |
Contributors: onedollarplugin, paultgoodchild
|
3 |
+
Donate link: http://icwp.io/bw
|
4 |
License: GPLv3
|
5 |
License URI: http://www.gnu.org/licenses/gpl.html
|
6 |
Tags: security, all in one, scan, spam, recaptcha, two-factor authentication, ithemes, wordfence, better wp security, cerber, hack
|
7 |
Requires at least: 3.5.0
|
8 |
+
Requires PHP: 5.2.4
|
9 |
+
Recommended PHP: 5.4
|
10 |
Tested up to: 4.9
|
11 |
+
Stable tag: 6.6.0
|
12 |
|
13 |
Free All-In-One Protection for your WordPress sites, data, reputation, and users. Shield: the Highest-Rated Security Plugin for WordPress
|
14 |
|
15 |
== Description ==
|
16 |
|
17 |
+
= You Can Trust Shield To Do Exactly What It Says It Will Do =
|
18 |
|
19 |
+
We know you may have been let down in the past, but Shield is the WordPress Security solution that does what it says it'll do - Protect Your Site.
|
20 |
+
|
21 |
+
= All-In-One Shield Is Easy To Use =
|
22 |
+
|
23 |
+
Your WP Security plugin must be easy to understand and easy to install/setup - Shield built for both beginners and advanced.
|
24 |
+
|
25 |
+
And importantly, it [comes highly recommended](https://wordpress.org/support/plugin/wp-simple-firewall/reviews/)
|
26 |
+
- Shield has the highest average rating for any WP Security plugin.
|
27 |
+
|
28 |
+
Its simple but powerful protection blocks attacks and suspicious activity, but won't lock you out.
|
29 |
+
|
30 |
+
Shield is the must-have, free Security Solution for all your WordPress sites.
|
31 |
+
|
32 |
+
= Shield Features You'll Absolutely Love =
|
33 |
+
|
34 |
+
* Beautiful, Easy-To-Use Guided Wizards - help you configure Shield and run scans like a Pro
|
35 |
+
* Limit Login Attempts / Block Automatic Brute-Force Bots - all automatically
|
36 |
+
* Powerful Core File Scanners - automatically detects malicious file changes and hacks you'd never see
|
37 |
+
* Automatic IP Black List - no need for you to manage IPs!
|
38 |
+
* 2-Factor Authentication - including Google Authenticator and Email
|
39 |
+
* Block 100% Automated Comments SPAM
|
40 |
+
* Audit Trail & User Activity Logging
|
41 |
* reCAPTCHA
|
42 |
* Firewall
|
43 |
* Security Admin Users
|
|
|
44 |
* Block REST API / XML-RPC
|
45 |
* HTTP Headers
|
46 |
* Automatic Updates Control
|
52 |
> Why take the risk?
|
53 |
>
|
54 |
> Download and install Shield now for FREE so that you have the most powerful WordPress security system working for you and protecting your site.
|
|
|
|
|
|
|
55 |
|
56 |
= The New Shield Pro =
|
57 |
|
58 |
+
From November 2017, Shield Security now has a Pro version for those that need to take their Security to the next level.
|
|
|
|
|
59 |
|
60 |
+
> <strong>The Pro Extras</strong>:
|
61 |
+
>
|
62 |
+
> 1. Exclusive customer email support.
|
63 |
+
> 1. Plugin Vulnerability Scanner.
|
64 |
+
> 1. Plugin / Themes Hack Detection Scanner.
|
65 |
+
> 1. More Frequent Scans - as often as every hour.
|
66 |
+
> 1. Protection for your WooCommerce customers (incl. Easy Digital Downloads & BuddyPress)
|
67 |
+
> 1. Remember-Me 2-Factor Authentication.
|
68 |
+
> 1. Powerful Password Policies.
|
69 |
+
> 1. Import/Export of options across sites.
|
70 |
+
> 1. Improved Audit Trail logging
|
71 |
+
> 1. Exclusive early access to new security features
|
72 |
+
> 1. Text customisations for your visitors.
|
73 |
+
> 1. No manual Pro plugin downloads - we handle this all for you automatically.
|
74 |
+
> 1. No license keys to manage - it's all automatic!
|
75 |
+
> 1. (coming soon) White Labelling
|
76 |
+
> 1. (coming soon) Statistics and Reporting
|
77 |
+
> 1. (coming soon) Select individual automatic plugin updates
|
78 |
+
|
79 |
+
Learn more on going Pro at [our One Dollar Plugin store](http://icwp.io/ab).
|
80 |
|
81 |
= Our Mission =
|
82 |
|
373 |
|
374 |
You can [go Pro for just $1/month](http://icwp.io/aa).
|
375 |
|
376 |
+
= 6.6.0 - Current Release =
|
377 |
+
*Released: 19th March, 2018* - [Release Notes](http://icwp.io/c3)
|
378 |
+
|
379 |
+
* **(v.0)** NEW: [**PRO**] [Keyless Activation of Pro licenses](http://icwp.io/c1).
|
380 |
+
* **(v.0)** ADDED: [WordPress Password Policies](http://icwp.io/c2).
|
381 |
+
* **(v.0)** ADDED: Pwned Passwords Detection.
|
382 |
+
* **(v.0)** IMPROVED: Major rewrite of plugin AJAX handling.
|
383 |
+
* **(v.0)** IMPROVED: Notices to indicate the time of the last scans.
|
384 |
+
* **(v.0)** FIXED: A few bugs
|
385 |
+
|
386 |
+
= 6.6 Series =
|
387 |
+
*Released: 19th March, 2018* - [Release Notes](http://icwp.io/c3)
|
388 |
+
|
389 |
+
* **(v.0)** NEW: [**PRO**] [Keyless Activation of Pro licenses](http://icwp.io/c1).
|
390 |
+
* **(v.0)** ADDED: [WordPress Password Policies](http://icwp.io/c2).
|
391 |
+
* **(v.0)** ADDED: Pwned Passwords Detection.
|
392 |
+
* **(v.0)** IMPROVED: Major rewrite of plugin AJAX handling.
|
393 |
+
* **(v.0)** IMPROVED: Notices to indicate the time of the last scans.
|
394 |
+
* **(v.0)** FIXED: A few bugs
|
395 |
|
396 |
= 6.5 Series =
|
397 |
*Released: 5th March, 2018* - [Release Notes](http://icwp.io/bu)
|
resources/js/global-plugin.js
CHANGED
@@ -137,6 +137,7 @@ var iCWP_WPSF_HackGuard_Reinstall = new function () {
|
|
137 |
};
|
138 |
}();
|
139 |
|
|
|
140 |
var iCWP_WPSF_Autoupdates = new function () {
|
141 |
|
142 |
var bRequestCurrentlyRunning = false;
|
@@ -156,13 +157,12 @@ var iCWP_WPSF_Autoupdates = new function () {
|
|
156 |
return sendTogglePluginAutoupdate( $oInput.data( 'pluginfile' ), $oInput.data( 'nonce' ) );
|
157 |
};
|
158 |
|
159 |
-
var sendTogglePluginAutoupdate = function ( sPluginFile
|
160 |
bRequestCurrentlyRunning = true;
|
161 |
|
162 |
var requestData = {
|
163 |
'action': 'icwp_wpsf_TogglePluginAutoupdate',
|
164 |
-
'pluginfile': sPluginFile
|
165 |
-
'_ajax_nonce': sAjaxNonce
|
166 |
};
|
167 |
|
168 |
jQuery.post( ajaxurl, requestData,
|
137 |
};
|
138 |
}();
|
139 |
|
140 |
+
/** TODO: THIS AJAX IS NOT COMPLETE **/
|
141 |
var iCWP_WPSF_Autoupdates = new function () {
|
142 |
|
143 |
var bRequestCurrentlyRunning = false;
|
157 |
return sendTogglePluginAutoupdate( $oInput.data( 'pluginfile' ), $oInput.data( 'nonce' ) );
|
158 |
};
|
159 |
|
160 |
+
var sendTogglePluginAutoupdate = function ( sPluginFile ) {
|
161 |
bRequestCurrentlyRunning = true;
|
162 |
|
163 |
var requestData = {
|
164 |
'action': 'icwp_wpsf_TogglePluginAutoupdate',
|
165 |
+
'pluginfile': sPluginFile
|
|
|
166 |
};
|
167 |
|
168 |
jQuery.post( ajaxurl, requestData,
|
resources/js/plugin.js
CHANGED
@@ -57,17 +57,10 @@ var iCWP_WPSF_OptionsFormSubmit = new function () {
|
|
57 |
if ( bRequestCurrentlyRunning ) {
|
58 |
return false;
|
59 |
}
|
60 |
-
|
61 |
bRequestCurrentlyRunning = true;
|
62 |
-
|
63 |
event.preventDefault();
|
64 |
|
65 |
var $oForm = jQuery( this );
|
66 |
-
jQuery( '<input />' ).attr( 'type', 'hidden' )
|
67 |
-
.attr( 'name', 'action' )
|
68 |
-
.attr( 'value', 'icwp_OptionsFormSave' )
|
69 |
-
.appendTo( $oForm );
|
70 |
-
|
71 |
jQuery.post( ajaxurl, $oForm.serialize(),
|
72 |
function ( oResponse ) {
|
73 |
var sMessage;
|
@@ -77,6 +70,7 @@ var iCWP_WPSF_OptionsFormSubmit = new function () {
|
|
77 |
else {
|
78 |
sMessage = oResponse.data.message;
|
79 |
}
|
|
|
80 |
jQuery( 'div#icwpOptionsFormContainer' ).html( oResponse.data.options_form )
|
81 |
iCWP_WPSF_Growl.showMessage( sMessage, oResponse.success );
|
82 |
}
|
57 |
if ( bRequestCurrentlyRunning ) {
|
58 |
return false;
|
59 |
}
|
|
|
60 |
bRequestCurrentlyRunning = true;
|
|
|
61 |
event.preventDefault();
|
62 |
|
63 |
var $oForm = jQuery( this );
|
|
|
|
|
|
|
|
|
|
|
64 |
jQuery.post( ajaxurl, $oForm.serialize(),
|
65 |
function ( oResponse ) {
|
66 |
var sMessage;
|
70 |
else {
|
71 |
sMessage = oResponse.data.message;
|
72 |
}
|
73 |
+
/** TODO: div#icwpOptionsFormContainer no longer exists */
|
74 |
jQuery( 'div#icwpOptionsFormContainer' ).html( oResponse.data.options_form )
|
75 |
iCWP_WPSF_Growl.showMessage( sMessage, oResponse.success );
|
76 |
}
|
resources/js/whitelabel.js
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
var iCWP_WPSF_WhiteLabel = new function () {
|
2 |
+
this.initialise = function () {
|
3 |
+
jQuery( document ).ready( function () {
|
4 |
+
jQuery( 'select#plugin option[value="%s"]' ).remove();
|
5 |
+
} );
|
6 |
+
};
|
7 |
+
}();
|
8 |
+
iCWP_WPSF_WhiteLabel.initialise();
|
src/common/easydigitaldownloads/ICWP_EDD_LicenseVO.php
CHANGED
@@ -82,6 +82,14 @@ class ICWP_EDD_LicenseVO {
|
|
82 |
return $this->getRaw()->site_count;
|
83 |
}
|
84 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
85 |
/**
|
86 |
* @return bool
|
87 |
*/
|
82 |
return $this->getRaw()->site_count;
|
83 |
}
|
84 |
|
85 |
+
/**
|
86 |
+
* @return bool
|
87 |
+
*/
|
88 |
+
public function isShieldCentral() {
|
89 |
+
$oRaw = $this->getRaw();
|
90 |
+
return isset( $oRaw->is_central ) && $oRaw->is_central;
|
91 |
+
}
|
92 |
+
|
93 |
/**
|
94 |
* @return bool
|
95 |
*/
|
src/common/icwp-data.php
CHANGED
@@ -25,7 +25,8 @@ class ICWP_WPSF_DataProcessor extends ICWP_WPSF_Foundation {
|
|
25 |
*/
|
26 |
protected $aRequestUriParts;
|
27 |
|
28 |
-
protected function __construct() {
|
|
|
29 |
|
30 |
/**
|
31 |
* @return ICWP_WPSF_DataProcessor
|
@@ -97,6 +98,24 @@ class ICWP_WPSF_DataProcessor extends ICWP_WPSF_Foundation {
|
|
97 |
return ( $bTrim && is_scalar( $mVal ) ) ? trim( $mVal ) : $mVal;
|
98 |
}
|
99 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
100 |
/**
|
101 |
* @return string URI Path in lowercase
|
102 |
*/
|
@@ -261,6 +280,13 @@ class ICWP_WPSF_DataProcessor extends ICWP_WPSF_Foundation {
|
|
261 |
return $aNewList;
|
262 |
}
|
263 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
264 |
/**
|
265 |
* Taken from http://www.phacks.net/detecting-search-engine-bot-and-web-spiders/
|
266 |
*/
|
@@ -320,13 +346,6 @@ class ICWP_WPSF_DataProcessor extends ICWP_WPSF_Foundation {
|
|
320 |
return $sAtoZ[ $nRandomInt ];
|
321 |
}
|
322 |
|
323 |
-
/**
|
324 |
-
* @return bool
|
325 |
-
*/
|
326 |
-
static public function GetIsRequestPost() {
|
327 |
-
return ( self::GetRequestMethod() == 'post' );
|
328 |
-
}
|
329 |
-
|
330 |
/**
|
331 |
* Returns the current request method as an all-lower-case string
|
332 |
* @return bool|string
|
25 |
*/
|
26 |
protected $aRequestUriParts;
|
27 |
|
28 |
+
protected function __construct() {
|
29 |
+
}
|
30 |
|
31 |
/**
|
32 |
* @return ICWP_WPSF_DataProcessor
|
98 |
return ( $bTrim && is_scalar( $mVal ) ) ? trim( $mVal ) : $mVal;
|
99 |
}
|
100 |
|
101 |
+
/**
|
102 |
+
* @param string $sKey
|
103 |
+
* @param null $mDefault
|
104 |
+
* @param bool $bIncludeCookie
|
105 |
+
* @param bool $bTrim -automatically trim whitespace
|
106 |
+
* @return mixed|null
|
107 |
+
*/
|
108 |
+
public function request( $sKey, $bIncludeCookie = false, $mDefault = null, $bTrim = true ) {
|
109 |
+
$mVal = $this->post( $sKey, null, $bTrim );
|
110 |
+
if ( is_null( $mVal ) ) {
|
111 |
+
$mVal = $this->query( $sKey, null, $bTrim );
|
112 |
+
if ( is_null( $mVal && $bIncludeCookie ) ) {
|
113 |
+
$mVal = self::FetchCookie( $sKey );
|
114 |
+
}
|
115 |
+
}
|
116 |
+
return is_null( $mVal ) ? $mDefault : ( $bTrim && is_scalar( $mVal ) ) ? trim( $mVal ) : $mVal;
|
117 |
+
}
|
118 |
+
|
119 |
/**
|
120 |
* @return string URI Path in lowercase
|
121 |
*/
|
280 |
return $aNewList;
|
281 |
}
|
282 |
|
283 |
+
/**
|
284 |
+
* @return bool
|
285 |
+
*/
|
286 |
+
public function isMethodPost() {
|
287 |
+
return ( self::GetRequestMethod() == 'post' );
|
288 |
+
}
|
289 |
+
|
290 |
/**
|
291 |
* Taken from http://www.phacks.net/detecting-search-engine-bot-and-web-spiders/
|
292 |
*/
|
346 |
return $sAtoZ[ $nRandomInt ];
|
347 |
}
|
348 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
349 |
/**
|
350 |
* Returns the current request method as an all-lower-case string
|
351 |
* @return bool|string
|
src/common/icwp-edd.php
CHANGED
@@ -10,6 +10,11 @@ class ICWP_WPSF_Edd extends ICWP_WPSF_Foundation {
|
|
10 |
*/
|
11 |
protected static $oInstance = null;
|
12 |
|
|
|
|
|
|
|
|
|
|
|
13 |
/**
|
14 |
* @return ICWP_WPSF_Edd
|
15 |
*/
|
@@ -67,6 +72,25 @@ class ICWP_WPSF_Edd extends ICWP_WPSF_Foundation {
|
|
67 |
return $this->commonLicenseAction( 'activate_license', $sStoreUrl, $sKey, $sItemId );
|
68 |
}
|
69 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
/**
|
71 |
* @param string $sStoreUrl
|
72 |
* @param string $sKey
|
@@ -88,21 +112,40 @@ class ICWP_WPSF_Edd extends ICWP_WPSF_Foundation {
|
|
88 |
$oLicense = null;
|
89 |
|
90 |
$aLicenseLookupParams = array(
|
91 |
-
'body' =>
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
|
|
|
|
|
|
97 |
)
|
98 |
);
|
99 |
|
100 |
$aContent = $this->loadFS()
|
101 |
-
->
|
102 |
if ( !empty( $aContent ) ) {
|
103 |
require_once( dirname( __FILE__ ).'/easydigitaldownloads/ICWP_EDD_LicenseVO.php' );
|
104 |
$oLicense = new ICWP_EDD_LicenseVO( json_decode( $aContent[ 'body' ] ) );
|
105 |
}
|
106 |
return $oLicense;
|
107 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
108 |
}
|
10 |
*/
|
11 |
protected static $oInstance = null;
|
12 |
|
13 |
+
/**
|
14 |
+
* @var array
|
15 |
+
*/
|
16 |
+
private $aAdditionalRequestParams;
|
17 |
+
|
18 |
/**
|
19 |
* @return ICWP_WPSF_Edd
|
20 |
*/
|
72 |
return $this->commonLicenseAction( 'activate_license', $sStoreUrl, $sKey, $sItemId );
|
73 |
}
|
74 |
|
75 |
+
/**
|
76 |
+
* @param string $sStoreUrl
|
77 |
+
* @param string $sItemId
|
78 |
+
* @return ICWP_EDD_LicenseVO|null
|
79 |
+
*/
|
80 |
+
public function activateLicenseKeyless( $sStoreUrl, $sItemId ) {
|
81 |
+
return $this->activateLicense( $sStoreUrl, '', $sItemId );
|
82 |
+
}
|
83 |
+
|
84 |
+
/**
|
85 |
+
* @param string $sStoreUrl
|
86 |
+
* @param string $sKey
|
87 |
+
* @param string $sItemId
|
88 |
+
* @return ICWP_EDD_LicenseVO|null
|
89 |
+
*/
|
90 |
+
public function checkLicense( $sStoreUrl, $sKey, $sItemId ) {
|
91 |
+
return $this->commonLicenseAction( 'check_license', $sStoreUrl, $sKey, $sItemId );
|
92 |
+
}
|
93 |
+
|
94 |
/**
|
95 |
* @param string $sStoreUrl
|
96 |
* @param string $sKey
|
112 |
$oLicense = null;
|
113 |
|
114 |
$aLicenseLookupParams = array(
|
115 |
+
'body' => array_merge(
|
116 |
+
array(
|
117 |
+
'edd_action' => $sAction,
|
118 |
+
'license' => $sKey,
|
119 |
+
'item_id' => $sItemId,
|
120 |
+
'url' => $this->loadWp()->getHomeUrl(),
|
121 |
+
'alt_url' => $this->loadWp()->getWpUrl()
|
122 |
+
),
|
123 |
+
$this->getRequestParams()
|
124 |
)
|
125 |
);
|
126 |
|
127 |
$aContent = $this->loadFS()
|
128 |
+
->getUrl( $sStoreUrl, $aLicenseLookupParams );
|
129 |
if ( !empty( $aContent ) ) {
|
130 |
require_once( dirname( __FILE__ ).'/easydigitaldownloads/ICWP_EDD_LicenseVO.php' );
|
131 |
$oLicense = new ICWP_EDD_LicenseVO( json_decode( $aContent[ 'body' ] ) );
|
132 |
}
|
133 |
return $oLicense;
|
134 |
}
|
135 |
+
|
136 |
+
/**
|
137 |
+
* @return array
|
138 |
+
*/
|
139 |
+
public function getRequestParams() {
|
140 |
+
return is_array( $this->aAdditionalRequestParams ) ? $this->aAdditionalRequestParams : array();
|
141 |
+
}
|
142 |
+
|
143 |
+
/**
|
144 |
+
* @param array $aParams
|
145 |
+
* @return $this
|
146 |
+
*/
|
147 |
+
public function setRequestParams( $aParams = array() ) {
|
148 |
+
$this->aAdditionalRequestParams = is_array( $aParams ) ? $aParams : array();
|
149 |
+
return $this;
|
150 |
+
}
|
151 |
}
|
src/common/icwp-optionsvo.php
CHANGED
@@ -242,12 +242,13 @@ class ICWP_WPSF_OptionsVO extends ICWP_WPSF_Foundation {
|
|
242 |
}
|
243 |
|
244 |
/**
|
|
|
245 |
* @return array[]
|
246 |
*/
|
247 |
-
public function getSections() {
|
248 |
$aSections = array();
|
249 |
foreach ( $this->getRawData_OptionsSections() as $aRawSection ) {
|
250 |
-
if ( !isset( $aRawSection[ 'hidden' ] ) || !$aRawSection[ 'hidden' ] ) {
|
251 |
$aSections[ $aRawSection[ 'slug' ] ] = $aRawSection;
|
252 |
}
|
253 |
}
|
@@ -262,9 +263,7 @@ class ICWP_WPSF_OptionsVO extends ICWP_WPSF_Foundation {
|
|
262 |
$aSection = $this->getSection( $sSlug );
|
263 |
$aReqs = ( is_array( $aSection ) && isset( $aSection[ 'reqs' ] ) ) ? $aSection[ 'reqs' ] : array();
|
264 |
return array_merge(
|
265 |
-
array(
|
266 |
-
'php_min' => '5.2.4'
|
267 |
-
),
|
268 |
$aReqs
|
269 |
);
|
270 |
}
|
242 |
}
|
243 |
|
244 |
/**
|
245 |
+
* @param bool $bIncludeHidden
|
246 |
* @return array[]
|
247 |
*/
|
248 |
+
public function getSections( $bIncludeHidden = false ) {
|
249 |
$aSections = array();
|
250 |
foreach ( $this->getRawData_OptionsSections() as $aRawSection ) {
|
251 |
+
if ( $bIncludeHidden || !isset( $aRawSection[ 'hidden' ] ) || !$aRawSection[ 'hidden' ] ) {
|
252 |
$aSections[ $aRawSection[ 'slug' ] ] = $aRawSection;
|
253 |
}
|
254 |
}
|
263 |
$aSection = $this->getSection( $sSlug );
|
264 |
$aReqs = ( is_array( $aSection ) && isset( $aSection[ 'reqs' ] ) ) ? $aSection[ 'reqs' ] : array();
|
265 |
return array_merge(
|
266 |
+
array( 'php_min' => '5.2.4' ),
|
|
|
|
|
267 |
$aReqs
|
268 |
);
|
269 |
}
|
src/common/icwp-usermeta.php
CHANGED
@@ -9,6 +9,9 @@ if ( class_exists( 'ICWP_UserMeta', false ) ) {
|
|
9 |
* @property string $ga_secret
|
10 |
* @property bool $ga_validated
|
11 |
* @property array $hash_loginmfa
|
|
|
|
|
|
|
12 |
* @property string $yubi_secret
|
13 |
* @property bool $yubi_validated
|
14 |
* @property string $code_tfaemail
|
9 |
* @property string $ga_secret
|
10 |
* @property bool $ga_validated
|
11 |
* @property array $hash_loginmfa
|
12 |
+
* @property string $pass_hash
|
13 |
+
* @property int $pass_started_at
|
14 |
+
* @property int $pass_check_failed_at
|
15 |
* @property string $yubi_secret
|
16 |
* @property bool $yubi_validated
|
17 |
* @property string $code_tfaemail
|
src/common/icwp-wpfunctions.php
CHANGED
@@ -9,6 +9,7 @@ class ICWP_WPSF_WpFunctions extends ICWP_WPSF_Foundation {
|
|
9 |
* @var WP_Automatic_Updater
|
10 |
*/
|
11 |
protected $oWpAutomaticUpdater;
|
|
|
12 |
/**
|
13 |
* @var ICWP_WPSF_WpFunctions
|
14 |
*/
|
@@ -475,7 +476,7 @@ class ICWP_WPSF_WpFunctions extends ICWP_WPSF_Foundation {
|
|
475 |
}
|
476 |
|
477 |
/**
|
478 |
-
* @param bool
|
479 |
* @return string
|
480 |
*/
|
481 |
public function getAdminUrl_Plugins( $bWpmsOnly = false ) {
|
@@ -492,7 +493,7 @@ class ICWP_WPSF_WpFunctions extends ICWP_WPSF_Foundation {
|
|
492 |
|
493 |
//special case for plugin admin pages.
|
494 |
if ( $sPage == 'admin.php' ) {
|
495 |
-
$sSubPage = $this->
|
496 |
if ( !empty( $sSubPage ) ) {
|
497 |
$aQueryArgs = array(
|
498 |
'page' => $sSubPage,
|
@@ -532,7 +533,7 @@ class ICWP_WPSF_WpFunctions extends ICWP_WPSF_Foundation {
|
|
532 |
* @return bool
|
533 |
*/
|
534 |
public function isRequestLoginUrl() {
|
535 |
-
return $this->isLoginUrl( $this->
|
536 |
}
|
537 |
|
538 |
/**
|
@@ -540,29 +541,25 @@ class ICWP_WPSF_WpFunctions extends ICWP_WPSF_Foundation {
|
|
540 |
*/
|
541 |
public function isRequestUserLogin() {
|
542 |
$oDp = $this->loadDP();
|
543 |
-
return $this->isRequestLoginUrl() && $oDp->
|
544 |
-
&& !is_null( $oDp->
|
545 |
}
|
546 |
|
547 |
/**
|
548 |
* @return bool
|
549 |
*/
|
550 |
public function isRequestUserRegister() {
|
551 |
-
$oDp = $this->
|
552 |
-
return
|
553 |
-
|
554 |
-
&& !is_null( $oDp->FetchPost( 'user_login' ) )
|
555 |
-
&& !is_null( $oDp->FetchPost( 'user_email' ) )
|
556 |
-
&& $this->isRequestLoginUrl();
|
557 |
}
|
558 |
|
559 |
/**
|
560 |
* @return bool
|
561 |
*/
|
562 |
public function isRequestUserResetPasswordStart() {
|
563 |
-
$oDp = $this->
|
564 |
-
return $this->isRequestLoginUrl() &&
|
565 |
-
$oDp->GetIsRequestPost() && !is_null( $oDp->FetchPost( 'user_login' ) );
|
566 |
}
|
567 |
|
568 |
/**
|
9 |
* @var WP_Automatic_Updater
|
10 |
*/
|
11 |
protected $oWpAutomaticUpdater;
|
12 |
+
|
13 |
/**
|
14 |
* @var ICWP_WPSF_WpFunctions
|
15 |
*/
|
476 |
}
|
477 |
|
478 |
/**
|
479 |
+
* @param bool $bWpmsOnly
|
480 |
* @return string
|
481 |
*/
|
482 |
public function getAdminUrl_Plugins( $bWpmsOnly = false ) {
|
493 |
|
494 |
//special case for plugin admin pages.
|
495 |
if ( $sPage == 'admin.php' ) {
|
496 |
+
$sSubPage = $this->loadDP()->query( 'page' );
|
497 |
if ( !empty( $sSubPage ) ) {
|
498 |
$aQueryArgs = array(
|
499 |
'page' => $sSubPage,
|
533 |
* @return bool
|
534 |
*/
|
535 |
public function isRequestLoginUrl() {
|
536 |
+
return $this->isLoginUrl( $this->loadDP()->getRequestPath() );
|
537 |
}
|
538 |
|
539 |
/**
|
541 |
*/
|
542 |
public function isRequestUserLogin() {
|
543 |
$oDp = $this->loadDP();
|
544 |
+
return $this->isRequestLoginUrl() && $oDp->isMethodPost()
|
545 |
+
&& !is_null( $oDp->post( 'log' ) ) && !is_null( $oDp->post( 'pwd' ) );
|
546 |
}
|
547 |
|
548 |
/**
|
549 |
* @return bool
|
550 |
*/
|
551 |
public function isRequestUserRegister() {
|
552 |
+
$oDp = $this->loadDP();
|
553 |
+
return $oDp->isMethodPost() && !is_null( $oDp->post( 'user_login' ) )
|
554 |
+
&& !is_null( $oDp->post( 'user_email' ) ) && $this->isRequestLoginUrl();
|
|
|
|
|
|
|
555 |
}
|
556 |
|
557 |
/**
|
558 |
* @return bool
|
559 |
*/
|
560 |
public function isRequestUserResetPasswordStart() {
|
561 |
+
$oDp = $this->loadDP();
|
562 |
+
return $this->isRequestLoginUrl() && $oDp->isMethodPost() && !is_null( $oDp->post( 'user_login' ) );
|
|
|
563 |
}
|
564 |
|
565 |
/**
|
src/common/lib/composer.json
CHANGED
@@ -2,27 +2,32 @@
|
|
2 |
"name": "shield requirement",
|
3 |
"description": "shield requirement",
|
4 |
"authors": [
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
],
|
11 |
"license": "MIT",
|
12 |
"keywords": [
|
13 |
],
|
14 |
"repositories": [
|
15 |
],
|
|
|
|
|
|
|
|
|
|
|
16 |
"require": {
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
},
|
22 |
"require-dev": {
|
23 |
},
|
24 |
"autoload": {
|
25 |
-
|
26 |
-
|
27 |
}
|
28 |
}
|
2 |
"name": "shield requirement",
|
3 |
"description": "shield requirement",
|
4 |
"authors": [
|
5 |
+
{
|
6 |
+
"name": "Paul Goodchild",
|
7 |
+
"email": "paul@paulgoodchild.me",
|
8 |
+
"homepage": "https://paulgoodchild.me"
|
9 |
+
}
|
10 |
],
|
11 |
"license": "MIT",
|
12 |
"keywords": [
|
13 |
],
|
14 |
"repositories": [
|
15 |
],
|
16 |
+
"config": {
|
17 |
+
"platform": {
|
18 |
+
"php": "5.4"
|
19 |
+
}
|
20 |
+
},
|
21 |
"require": {
|
22 |
+
"fernleafsystems/utilities": "^1.0",
|
23 |
+
"nesbot/carbon": "^1.22.0",
|
24 |
+
"twig/twig": "^1.0",
|
25 |
+
"bjeavons/zxcvbn-php": "^0.3"
|
26 |
},
|
27 |
"require-dev": {
|
28 |
},
|
29 |
"autoload": {
|
30 |
+
"psr-4": {
|
31 |
+
}
|
32 |
}
|
33 |
}
|
src/common/lib/composer.lock
CHANGED
@@ -4,8 +4,53 @@
|
|
4 |
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
|
5 |
"This file is @generated automatically"
|
6 |
],
|
7 |
-
"content-hash": "
|
8 |
"packages": [
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
{
|
10 |
"name": "fernleafsystems/utilities",
|
11 |
"version": "1.1.0",
|
@@ -42,25 +87,25 @@
|
|
42 |
},
|
43 |
{
|
44 |
"name": "nesbot/carbon",
|
45 |
-
"version": "1.
|
46 |
"source": {
|
47 |
"type": "git",
|
48 |
"url": "https://github.com/briannesbitt/Carbon.git",
|
49 |
-
"reference": "
|
50 |
},
|
51 |
"dist": {
|
52 |
"type": "zip",
|
53 |
-
"url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/
|
54 |
-
"reference": "
|
55 |
"shasum": ""
|
56 |
},
|
57 |
"require": {
|
58 |
-
"php": ">=5.3.
|
59 |
-
"symfony/translation": "~2.6 || ~3.0"
|
60 |
},
|
61 |
"require-dev": {
|
62 |
"friendsofphp/php-cs-fixer": "~2",
|
63 |
-
"phpunit/phpunit": "
|
64 |
},
|
65 |
"type": "library",
|
66 |
"extra": {
|
@@ -91,7 +136,7 @@
|
|
91 |
"datetime",
|
92 |
"time"
|
93 |
],
|
94 |
-
"time": "
|
95 |
},
|
96 |
{
|
97 |
"name": "symfony/polyfill-mbstring",
|
@@ -154,34 +199,30 @@
|
|
154 |
},
|
155 |
{
|
156 |
"name": "symfony/translation",
|
157 |
-
"version": "
|
158 |
"source": {
|
159 |
"type": "git",
|
160 |
"url": "https://github.com/symfony/translation.git",
|
161 |
-
"reference": "
|
162 |
},
|
163 |
"dist": {
|
164 |
"type": "zip",
|
165 |
-
"url": "https://api.github.com/repos/symfony/translation/zipball/
|
166 |
-
"reference": "
|
167 |
"shasum": ""
|
168 |
},
|
169 |
"require": {
|
170 |
-
"php": "
|
171 |
"symfony/polyfill-mbstring": "~1.0"
|
172 |
},
|
173 |
"conflict": {
|
174 |
-
"symfony/config": "<2.
|
175 |
-
"symfony/dependency-injection": "<3.4",
|
176 |
-
"symfony/yaml": "<3.4"
|
177 |
},
|
178 |
"require-dev": {
|
179 |
"psr/log": "~1.0",
|
180 |
-
"symfony/config": "~2.8
|
181 |
-
"symfony/
|
182 |
-
"symfony/
|
183 |
-
"symfony/intl": "^2.8.18|^3.2.5|~4.0",
|
184 |
-
"symfony/yaml": "~3.4|~4.0"
|
185 |
},
|
186 |
"suggest": {
|
187 |
"psr/log": "To use logging capability in translator",
|
@@ -191,7 +232,7 @@
|
|
191 |
"type": "library",
|
192 |
"extra": {
|
193 |
"branch-alias": {
|
194 |
-
"dev-master": "
|
195 |
}
|
196 |
},
|
197 |
"autoload": {
|
@@ -218,20 +259,20 @@
|
|
218 |
],
|
219 |
"description": "Symfony Translation Component",
|
220 |
"homepage": "https://symfony.com",
|
221 |
-
"time": "2018-01-
|
222 |
},
|
223 |
{
|
224 |
"name": "twig/twig",
|
225 |
-
"version": "v1.35.
|
226 |
"source": {
|
227 |
"type": "git",
|
228 |
"url": "https://github.com/twigphp/Twig.git",
|
229 |
-
"reference": "
|
230 |
},
|
231 |
"dist": {
|
232 |
"type": "zip",
|
233 |
-
"url": "https://api.github.com/repos/twigphp/Twig/zipball/
|
234 |
-
"reference": "
|
235 |
"shasum": ""
|
236 |
},
|
237 |
"require": {
|
@@ -283,7 +324,7 @@
|
|
283 |
"keywords": [
|
284 |
"templating"
|
285 |
],
|
286 |
-
"time": "
|
287 |
}
|
288 |
],
|
289 |
"packages-dev": [],
|
@@ -292,8 +333,9 @@
|
|
292 |
"stability-flags": [],
|
293 |
"prefer-stable": false,
|
294 |
"prefer-lowest": false,
|
295 |
-
"platform":
|
296 |
-
|
297 |
-
|
298 |
-
|
|
|
299 |
}
|
4 |
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
|
5 |
"This file is @generated automatically"
|
6 |
],
|
7 |
+
"content-hash": "eb4c37064b99387951a2c9ac771571af",
|
8 |
"packages": [
|
9 |
+
{
|
10 |
+
"name": "bjeavons/zxcvbn-php",
|
11 |
+
"version": "0.3.0",
|
12 |
+
"source": {
|
13 |
+
"type": "git",
|
14 |
+
"url": "https://github.com/bjeavons/zxcvbn-php.git",
|
15 |
+
"reference": "331a88932d1a399c989967d3399a4a40eb182fd5"
|
16 |
+
},
|
17 |
+
"dist": {
|
18 |
+
"type": "zip",
|
19 |
+
"url": "https://api.github.com/repos/bjeavons/zxcvbn-php/zipball/331a88932d1a399c989967d3399a4a40eb182fd5",
|
20 |
+
"reference": "331a88932d1a399c989967d3399a4a40eb182fd5",
|
21 |
+
"shasum": ""
|
22 |
+
},
|
23 |
+
"require": {
|
24 |
+
"php": "^5.3 || ^7.0"
|
25 |
+
},
|
26 |
+
"require-dev": {
|
27 |
+
"phpunit/phpunit": "*",
|
28 |
+
"satooshi/php-coveralls": "*"
|
29 |
+
},
|
30 |
+
"type": "library",
|
31 |
+
"autoload": {
|
32 |
+
"psr-4": {
|
33 |
+
"ZxcvbnPhp\\": "src/"
|
34 |
+
}
|
35 |
+
},
|
36 |
+
"notification-url": "https://packagist.org/downloads/",
|
37 |
+
"license": [
|
38 |
+
"MIT"
|
39 |
+
],
|
40 |
+
"authors": [
|
41 |
+
{
|
42 |
+
"name": "See contributors",
|
43 |
+
"homepage": "https://github.com/bjeavons/zxcvbn-php"
|
44 |
+
}
|
45 |
+
],
|
46 |
+
"description": "Realistic password strength estimation PHP library based on Zxcvbn JS",
|
47 |
+
"homepage": "https://github.com/bjeavons/zxcvbn-php",
|
48 |
+
"keywords": [
|
49 |
+
"password",
|
50 |
+
"zxcvbn"
|
51 |
+
],
|
52 |
+
"time": "2017-01-06T15:43:33+00:00"
|
53 |
+
},
|
54 |
{
|
55 |
"name": "fernleafsystems/utilities",
|
56 |
"version": "1.1.0",
|
87 |
},
|
88 |
{
|
89 |
"name": "nesbot/carbon",
|
90 |
+
"version": "1.24.2",
|
91 |
"source": {
|
92 |
"type": "git",
|
93 |
"url": "https://github.com/briannesbitt/Carbon.git",
|
94 |
+
"reference": "bba6c6e410c6b4317e37a9474aeaa753808c3875"
|
95 |
},
|
96 |
"dist": {
|
97 |
"type": "zip",
|
98 |
+
"url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/bba6c6e410c6b4317e37a9474aeaa753808c3875",
|
99 |
+
"reference": "bba6c6e410c6b4317e37a9474aeaa753808c3875",
|
100 |
"shasum": ""
|
101 |
},
|
102 |
"require": {
|
103 |
+
"php": ">=5.3.9",
|
104 |
+
"symfony/translation": "~2.6 || ~3.0 || ~4.0"
|
105 |
},
|
106 |
"require-dev": {
|
107 |
"friendsofphp/php-cs-fixer": "~2",
|
108 |
+
"phpunit/phpunit": "^4.8.35 || ^5.7"
|
109 |
},
|
110 |
"type": "library",
|
111 |
"extra": {
|
136 |
"datetime",
|
137 |
"time"
|
138 |
],
|
139 |
+
"time": "2018-03-10T10:10:14+00:00"
|
140 |
},
|
141 |
{
|
142 |
"name": "symfony/polyfill-mbstring",
|
199 |
},
|
200 |
{
|
201 |
"name": "symfony/translation",
|
202 |
+
"version": "v2.8.36",
|
203 |
"source": {
|
204 |
"type": "git",
|
205 |
"url": "https://github.com/symfony/translation.git",
|
206 |
+
"reference": "72235c1121ae282254e897e342c001f3d4bb7e8d"
|
207 |
},
|
208 |
"dist": {
|
209 |
"type": "zip",
|
210 |
+
"url": "https://api.github.com/repos/symfony/translation/zipball/72235c1121ae282254e897e342c001f3d4bb7e8d",
|
211 |
+
"reference": "72235c1121ae282254e897e342c001f3d4bb7e8d",
|
212 |
"shasum": ""
|
213 |
},
|
214 |
"require": {
|
215 |
+
"php": ">=5.3.9",
|
216 |
"symfony/polyfill-mbstring": "~1.0"
|
217 |
},
|
218 |
"conflict": {
|
219 |
+
"symfony/config": "<2.7"
|
|
|
|
|
220 |
},
|
221 |
"require-dev": {
|
222 |
"psr/log": "~1.0",
|
223 |
+
"symfony/config": "~2.8",
|
224 |
+
"symfony/intl": "~2.7.25|^2.8.18|~3.2.5",
|
225 |
+
"symfony/yaml": "~2.2|~3.0.0"
|
|
|
|
|
226 |
},
|
227 |
"suggest": {
|
228 |
"psr/log": "To use logging capability in translator",
|
232 |
"type": "library",
|
233 |
"extra": {
|
234 |
"branch-alias": {
|
235 |
+
"dev-master": "2.8-dev"
|
236 |
}
|
237 |
},
|
238 |
"autoload": {
|
259 |
],
|
260 |
"description": "Symfony Translation Component",
|
261 |
"homepage": "https://symfony.com",
|
262 |
+
"time": "2018-01-18T13:56:23+00:00"
|
263 |
},
|
264 |
{
|
265 |
"name": "twig/twig",
|
266 |
+
"version": "v1.35.2",
|
267 |
"source": {
|
268 |
"type": "git",
|
269 |
"url": "https://github.com/twigphp/Twig.git",
|
270 |
+
"reference": "9c24f2cd39dc1906b76879e099970b7e53724601"
|
271 |
},
|
272 |
"dist": {
|
273 |
"type": "zip",
|
274 |
+
"url": "https://api.github.com/repos/twigphp/Twig/zipball/9c24f2cd39dc1906b76879e099970b7e53724601",
|
275 |
+
"reference": "9c24f2cd39dc1906b76879e099970b7e53724601",
|
276 |
"shasum": ""
|
277 |
},
|
278 |
"require": {
|
324 |
"keywords": [
|
325 |
"templating"
|
326 |
],
|
327 |
+
"time": "2018-03-03T16:21:29+00:00"
|
328 |
}
|
329 |
],
|
330 |
"packages-dev": [],
|
333 |
"stability-flags": [],
|
334 |
"prefer-stable": false,
|
335 |
"prefer-lowest": false,
|
336 |
+
"platform": [],
|
337 |
+
"platform-dev": [],
|
338 |
+
"platform-overrides": {
|
339 |
+
"php": "5.4"
|
340 |
+
}
|
341 |
}
|
src/common/lib/vendor/autoload.php
CHANGED
@@ -1,6 +1,7 @@
|
|
1 |
<?php
|
2 |
|
3 |
// autoload.php @generated by Composer
|
|
|
4 |
require_once __DIR__ . '/composer/autoload_real.php';
|
5 |
|
6 |
return ComposerAutoloaderInit18a31866e67f0a0bfffdc031786ecae1::getLoader();
|
1 |
<?php
|
2 |
|
3 |
// autoload.php @generated by Composer
|
4 |
+
|
5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
6 |
|
7 |
return ComposerAutoloaderInit18a31866e67f0a0bfffdc031786ecae1::getLoader();
|
src/common/lib/vendor/composer/autoload_classmap.php
CHANGED
@@ -6,461 +6,4 @@ $vendorDir = dirname(dirname(__FILE__));
|
|
6 |
$baseDir = dirname($vendorDir);
|
7 |
|
8 |
return array(
|
9 |
-
'Carbon\\Carbon' => $vendorDir . '/nesbot/carbon/src/Carbon/Carbon.php',
|
10 |
-
'Carbon\\CarbonInterval' => $vendorDir . '/nesbot/carbon/src/Carbon/CarbonInterval.php',
|
11 |
-
'Carbon\\Exceptions\\InvalidDateException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/InvalidDateException.php',
|
12 |
-
'FernleafSystems\\Utilities\\Data\\Adapter\\StdClassAdapter' => $vendorDir . '/fernleafsystems/utilities/src/Data/Adapter/StdClassAdapter.php',
|
13 |
-
'FernleafSystems\\Utilities\\Response' => $vendorDir . '/fernleafsystems/utilities/src/Response.php',
|
14 |
-
'Symfony\\Component\\Translation\\Catalogue\\AbstractOperation' => $vendorDir . '/symfony/translation/Catalogue/AbstractOperation.php',
|
15 |
-
'Symfony\\Component\\Translation\\Catalogue\\MergeOperation' => $vendorDir . '/symfony/translation/Catalogue/MergeOperation.php',
|
16 |
-
'Symfony\\Component\\Translation\\Catalogue\\OperationInterface' => $vendorDir . '/symfony/translation/Catalogue/OperationInterface.php',
|
17 |
-
'Symfony\\Component\\Translation\\Catalogue\\TargetOperation' => $vendorDir . '/symfony/translation/Catalogue/TargetOperation.php',
|
18 |
-
'Symfony\\Component\\Translation\\Command\\XliffLintCommand' => $vendorDir . '/symfony/translation/Command/XliffLintCommand.php',
|
19 |
-
'Symfony\\Component\\Translation\\DataCollectorTranslator' => $vendorDir . '/symfony/translation/DataCollectorTranslator.php',
|
20 |
-
'Symfony\\Component\\Translation\\DataCollector\\TranslationDataCollector' => $vendorDir . '/symfony/translation/DataCollector/TranslationDataCollector.php',
|
21 |
-
'Symfony\\Component\\Translation\\DependencyInjection\\TranslationDumperPass' => $vendorDir . '/symfony/translation/DependencyInjection/TranslationDumperPass.php',
|
22 |
-
'Symfony\\Component\\Translation\\DependencyInjection\\TranslationExtractorPass' => $vendorDir . '/symfony/translation/DependencyInjection/TranslationExtractorPass.php',
|
23 |
-
'Symfony\\Component\\Translation\\DependencyInjection\\TranslatorPass' => $vendorDir . '/symfony/translation/DependencyInjection/TranslatorPass.php',
|
24 |
-
'Symfony\\Component\\Translation\\Dumper\\CsvFileDumper' => $vendorDir . '/symfony/translation/Dumper/CsvFileDumper.php',
|
25 |
-
'Symfony\\Component\\Translation\\Dumper\\DumperInterface' => $vendorDir . '/symfony/translation/Dumper/DumperInterface.php',
|
26 |
-
'Symfony\\Component\\Translation\\Dumper\\FileDumper' => $vendorDir . '/symfony/translation/Dumper/FileDumper.php',
|
27 |
-
'Symfony\\Component\\Translation\\Dumper\\IcuResFileDumper' => $vendorDir . '/symfony/translation/Dumper/IcuResFileDumper.php',
|
28 |
-
'Symfony\\Component\\Translation\\Dumper\\IniFileDumper' => $vendorDir . '/symfony/translation/Dumper/IniFileDumper.php',
|
29 |
-
'Symfony\\Component\\Translation\\Dumper\\JsonFileDumper' => $vendorDir . '/symfony/translation/Dumper/JsonFileDumper.php',
|
30 |
-
'Symfony\\Component\\Translation\\Dumper\\MoFileDumper' => $vendorDir . '/symfony/translation/Dumper/MoFileDumper.php',
|
31 |
-
'Symfony\\Component\\Translation\\Dumper\\PhpFileDumper' => $vendorDir . '/symfony/translation/Dumper/PhpFileDumper.php',
|
32 |
-
'Symfony\\Component\\Translation\\Dumper\\PoFileDumper' => $vendorDir . '/symfony/translation/Dumper/PoFileDumper.php',
|
33 |
-
'Symfony\\Component\\Translation\\Dumper\\QtFileDumper' => $vendorDir . '/symfony/translation/Dumper/QtFileDumper.php',
|
34 |
-
'Symfony\\Component\\Translation\\Dumper\\XliffFileDumper' => $vendorDir . '/symfony/translation/Dumper/XliffFileDumper.php',
|
35 |
-
'Symfony\\Component\\Translation\\Dumper\\YamlFileDumper' => $vendorDir . '/symfony/translation/Dumper/YamlFileDumper.php',
|
36 |
-
'Symfony\\Component\\Translation\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/translation/Exception/ExceptionInterface.php',
|
37 |
-
'Symfony\\Component\\Translation\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/translation/Exception/InvalidArgumentException.php',
|
38 |
-
'Symfony\\Component\\Translation\\Exception\\InvalidResourceException' => $vendorDir . '/symfony/translation/Exception/InvalidResourceException.php',
|
39 |
-
'Symfony\\Component\\Translation\\Exception\\LogicException' => $vendorDir . '/symfony/translation/Exception/LogicException.php',
|
40 |
-
'Symfony\\Component\\Translation\\Exception\\NotFoundResourceException' => $vendorDir . '/symfony/translation/Exception/NotFoundResourceException.php',
|
41 |
-
'Symfony\\Component\\Translation\\Exception\\RuntimeException' => $vendorDir . '/symfony/translation/Exception/RuntimeException.php',
|
42 |
-
'Symfony\\Component\\Translation\\Extractor\\AbstractFileExtractor' => $vendorDir . '/symfony/translation/Extractor/AbstractFileExtractor.php',
|
43 |
-
'Symfony\\Component\\Translation\\Extractor\\ChainExtractor' => $vendorDir . '/symfony/translation/Extractor/ChainExtractor.php',
|
44 |
-
'Symfony\\Component\\Translation\\Extractor\\ExtractorInterface' => $vendorDir . '/symfony/translation/Extractor/ExtractorInterface.php',
|
45 |
-
'Symfony\\Component\\Translation\\Extractor\\PhpExtractor' => $vendorDir . '/symfony/translation/Extractor/PhpExtractor.php',
|
46 |
-
'Symfony\\Component\\Translation\\Extractor\\PhpStringTokenParser' => $vendorDir . '/symfony/translation/Extractor/PhpStringTokenParser.php',
|
47 |
-
'Symfony\\Component\\Translation\\Formatter\\ChoiceMessageFormatterInterface' => $vendorDir . '/symfony/translation/Formatter/ChoiceMessageFormatterInterface.php',
|
48 |
-
'Symfony\\Component\\Translation\\Formatter\\MessageFormatter' => $vendorDir . '/symfony/translation/Formatter/MessageFormatter.php',
|
49 |
-
'Symfony\\Component\\Translation\\Formatter\\MessageFormatterInterface' => $vendorDir . '/symfony/translation/Formatter/MessageFormatterInterface.php',
|
50 |
-
'Symfony\\Component\\Translation\\IdentityTranslator' => $vendorDir . '/symfony/translation/IdentityTranslator.php',
|
51 |
-
'Symfony\\Component\\Translation\\Interval' => $vendorDir . '/symfony/translation/Interval.php',
|
52 |
-
'Symfony\\Component\\Translation\\Loader\\ArrayLoader' => $vendorDir . '/symfony/translation/Loader/ArrayLoader.php',
|
53 |
-
'Symfony\\Component\\Translation\\Loader\\CsvFileLoader' => $vendorDir . '/symfony/translation/Loader/CsvFileLoader.php',
|
54 |
-
'Symfony\\Component\\Translation\\Loader\\FileLoader' => $vendorDir . '/symfony/translation/Loader/FileLoader.php',
|
55 |
-
'Symfony\\Component\\Translation\\Loader\\IcuDatFileLoader' => $vendorDir . '/symfony/translation/Loader/IcuDatFileLoader.php',
|
56 |
-
'Symfony\\Component\\Translation\\Loader\\IcuResFileLoader' => $vendorDir . '/symfony/translation/Loader/IcuResFileLoader.php',
|
57 |
-
'Symfony\\Component\\Translation\\Loader\\IniFileLoader' => $vendorDir . '/symfony/translation/Loader/IniFileLoader.php',
|
58 |
-
'Symfony\\Component\\Translation\\Loader\\JsonFileLoader' => $vendorDir . '/symfony/translation/Loader/JsonFileLoader.php',
|
59 |
-
'Symfony\\Component\\Translation\\Loader\\LoaderInterface' => $vendorDir . '/symfony/translation/Loader/LoaderInterface.php',
|
60 |
-
'Symfony\\Component\\Translation\\Loader\\MoFileLoader' => $vendorDir . '/symfony/translation/Loader/MoFileLoader.php',
|
61 |
-
'Symfony\\Component\\Translation\\Loader\\PhpFileLoader' => $vendorDir . '/symfony/translation/Loader/PhpFileLoader.php',
|
62 |
-
'Symfony\\Component\\Translation\\Loader\\PoFileLoader' => $vendorDir . '/symfony/translation/Loader/PoFileLoader.php',
|
63 |
-
'Symfony\\Component\\Translation\\Loader\\QtFileLoader' => $vendorDir . '/symfony/translation/Loader/QtFileLoader.php',
|
64 |
-
'Symfony\\Component\\Translation\\Loader\\XliffFileLoader' => $vendorDir . '/symfony/translation/Loader/XliffFileLoader.php',
|
65 |
-
'Symfony\\Component\\Translation\\Loader\\YamlFileLoader' => $vendorDir . '/symfony/translation/Loader/YamlFileLoader.php',
|
66 |
-
'Symfony\\Component\\Translation\\LoggingTranslator' => $vendorDir . '/symfony/translation/LoggingTranslator.php',
|
67 |
-
'Symfony\\Component\\Translation\\MessageCatalogue' => $vendorDir . '/symfony/translation/MessageCatalogue.php',
|
68 |
-
'Symfony\\Component\\Translation\\MessageCatalogueInterface' => $vendorDir . '/symfony/translation/MessageCatalogueInterface.php',
|
69 |
-
'Symfony\\Component\\Translation\\MessageSelector' => $vendorDir . '/symfony/translation/MessageSelector.php',
|
70 |
-
'Symfony\\Component\\Translation\\MetadataAwareInterface' => $vendorDir . '/symfony/translation/MetadataAwareInterface.php',
|
71 |
-
'Symfony\\Component\\Translation\\PluralizationRules' => $vendorDir . '/symfony/translation/PluralizationRules.php',
|
72 |
-
'Symfony\\Component\\Translation\\Reader\\TranslationReader' => $vendorDir . '/symfony/translation/Reader/TranslationReader.php',
|
73 |
-
'Symfony\\Component\\Translation\\Reader\\TranslationReaderInterface' => $vendorDir . '/symfony/translation/Reader/TranslationReaderInterface.php',
|
74 |
-
'Symfony\\Component\\Translation\\Translator' => $vendorDir . '/symfony/translation/Translator.php',
|
75 |
-
'Symfony\\Component\\Translation\\TranslatorBagInterface' => $vendorDir . '/symfony/translation/TranslatorBagInterface.php',
|
76 |
-
'Symfony\\Component\\Translation\\TranslatorInterface' => $vendorDir . '/symfony/translation/TranslatorInterface.php',
|
77 |
-
'Symfony\\Component\\Translation\\Util\\ArrayConverter' => $vendorDir . '/symfony/translation/Util/ArrayConverter.php',
|
78 |
-
'Symfony\\Component\\Translation\\Writer\\TranslationWriter' => $vendorDir . '/symfony/translation/Writer/TranslationWriter.php',
|
79 |
-
'Symfony\\Component\\Translation\\Writer\\TranslationWriterInterface' => $vendorDir . '/symfony/translation/Writer/TranslationWriterInterface.php',
|
80 |
-
'Symfony\\Polyfill\\Mbstring\\Mbstring' => $vendorDir . '/symfony/polyfill-mbstring/Mbstring.php',
|
81 |
-
'Twig\\Cache\\CacheInterface' => $vendorDir . '/twig/twig/src/Cache/CacheInterface.php',
|
82 |
-
'Twig\\Cache\\FilesystemCache' => $vendorDir . '/twig/twig/src/Cache/FilesystemCache.php',
|
83 |
-
'Twig\\Cache\\NullCache' => $vendorDir . '/twig/twig/src/Cache/NullCache.php',
|
84 |
-
'Twig\\Compiler' => $vendorDir . '/twig/twig/src/Compiler.php',
|
85 |
-
'Twig\\Environment' => $vendorDir . '/twig/twig/src/Environment.php',
|
86 |
-
'Twig\\Error\\Error' => $vendorDir . '/twig/twig/src/Error/Error.php',
|
87 |
-
'Twig\\Error\\LoaderError' => $vendorDir . '/twig/twig/src/Error/LoaderError.php',
|
88 |
-
'Twig\\Error\\RuntimeError' => $vendorDir . '/twig/twig/src/Error/RuntimeError.php',
|
89 |
-
'Twig\\Error\\SyntaxError' => $vendorDir . '/twig/twig/src/Error/SyntaxError.php',
|
90 |
-
'Twig\\ExpressionParser' => $vendorDir . '/twig/twig/src/ExpressionParser.php',
|
91 |
-
'Twig\\Extension\\AbstractExtension' => $vendorDir . '/twig/twig/src/Extension/AbstractExtension.php',
|
92 |
-
'Twig\\Extension\\CoreExtension' => $vendorDir . '/twig/twig/src/Extension/CoreExtension.php',
|
93 |
-
'Twig\\Extension\\DebugExtension' => $vendorDir . '/twig/twig/src/Extension/DebugExtension.php',
|
94 |
-
'Twig\\Extension\\EscaperExtension' => $vendorDir . '/twig/twig/src/Extension/EscaperExtension.php',
|
95 |
-
'Twig\\Extension\\ExtensionInterface' => $vendorDir . '/twig/twig/src/Extension/ExtensionInterface.php',
|
96 |
-
'Twig\\Extension\\GlobalsInterface' => $vendorDir . '/twig/twig/src/Extension/GlobalsInterface.php',
|
97 |
-
'Twig\\Extension\\InitRuntimeInterface' => $vendorDir . '/twig/twig/src/Extension/InitRuntimeInterface.php',
|
98 |
-
'Twig\\Extension\\OptimizerExtension' => $vendorDir . '/twig/twig/src/Extension/OptimizerExtension.php',
|
99 |
-
'Twig\\Extension\\ProfilerExtension' => $vendorDir . '/twig/twig/src/Extension/ProfilerExtension.php',
|
100 |
-
'Twig\\Extension\\RuntimeExtensionInterface' => $vendorDir . '/twig/twig/src/Extension/RuntimeExtensionInterface.php',
|
101 |
-
'Twig\\Extension\\SandboxExtension' => $vendorDir . '/twig/twig/src/Extension/SandboxExtension.php',
|
102 |
-
'Twig\\Extension\\StagingExtension' => $vendorDir . '/twig/twig/src/Extension/StagingExtension.php',
|
103 |
-
'Twig\\Extension\\StringLoaderExtension' => $vendorDir . '/twig/twig/src/Extension/StringLoaderExtension.php',
|
104 |
-
'Twig\\FileExtensionEscapingStrategy' => $vendorDir . '/twig/twig/src/FileExtensionEscapingStrategy.php',
|
105 |
-
'Twig\\Lexer' => $vendorDir . '/twig/twig/src/Lexer.php',
|
106 |
-
'Twig\\Loader\\ArrayLoader' => $vendorDir . '/twig/twig/src/Loader/ArrayLoader.php',
|
107 |
-
'Twig\\Loader\\ChainLoader' => $vendorDir . '/twig/twig/src/Loader/ChainLoader.php',
|
108 |
-
'Twig\\Loader\\ExistsLoaderInterface' => $vendorDir . '/twig/twig/src/Loader/ExistsLoaderInterface.php',
|
109 |
-
'Twig\\Loader\\FilesystemLoader' => $vendorDir . '/twig/twig/src/Loader/FilesystemLoader.php',
|
110 |
-
'Twig\\Loader\\LoaderInterface' => $vendorDir . '/twig/twig/src/Loader/LoaderInterface.php',
|
111 |
-
'Twig\\Loader\\SourceContextLoaderInterface' => $vendorDir . '/twig/twig/src/Loader/SourceContextLoaderInterface.php',
|
112 |
-
'Twig\\Markup' => $vendorDir . '/twig/twig/src/Markup.php',
|
113 |
-
'Twig\\NodeTraverser' => $vendorDir . '/twig/twig/src/NodeTraverser.php',
|
114 |
-
'Twig\\NodeVisitor\\AbstractNodeVisitor' => $vendorDir . '/twig/twig/src/NodeVisitor/AbstractNodeVisitor.php',
|
115 |
-
'Twig\\NodeVisitor\\EscaperNodeVisitor' => $vendorDir . '/twig/twig/src/NodeVisitor/EscaperNodeVisitor.php',
|
116 |
-
'Twig\\NodeVisitor\\NodeVisitorInterface' => $vendorDir . '/twig/twig/src/NodeVisitor/NodeVisitorInterface.php',
|
117 |
-
'Twig\\NodeVisitor\\OptimizerNodeVisitor' => $vendorDir . '/twig/twig/src/NodeVisitor/OptimizerNodeVisitor.php',
|
118 |
-
'Twig\\NodeVisitor\\SafeAnalysisNodeVisitor' => $vendorDir . '/twig/twig/src/NodeVisitor/SafeAnalysisNodeVisitor.php',
|
119 |
-
'Twig\\NodeVisitor\\SandboxNodeVisitor' => $vendorDir . '/twig/twig/src/NodeVisitor/SandboxNodeVisitor.php',
|
120 |
-
'Twig\\Node\\AutoEscapeNode' => $vendorDir . '/twig/twig/src/Node/AutoEscapeNode.php',
|
121 |
-
'Twig\\Node\\BlockNode' => $vendorDir . '/twig/twig/src/Node/BlockNode.php',
|
122 |
-
'Twig\\Node\\BlockReferenceNode' => $vendorDir . '/twig/twig/src/Node/BlockReferenceNode.php',
|
123 |
-
'Twig\\Node\\BodyNode' => $vendorDir . '/twig/twig/src/Node/BodyNode.php',
|
124 |
-
'Twig\\Node\\CheckSecurityNode' => $vendorDir . '/twig/twig/src/Node/CheckSecurityNode.php',
|
125 |
-
'Twig\\Node\\DoNode' => $vendorDir . '/twig/twig/src/Node/DoNode.php',
|
126 |
-
'Twig\\Node\\EmbedNode' => $vendorDir . '/twig/twig/src/Node/EmbedNode.php',
|
127 |
-
'Twig\\Node\\Expression\\AbstractExpression' => $vendorDir . '/twig/twig/src/Node/Expression/AbstractExpression.php',
|
128 |
-
'Twig\\Node\\Expression\\ArrayExpression' => $vendorDir . '/twig/twig/src/Node/Expression/ArrayExpression.php',
|
129 |
-
'Twig\\Node\\Expression\\AssignNameExpression' => $vendorDir . '/twig/twig/src/Node/Expression/AssignNameExpression.php',
|
130 |
-
'Twig\\Node\\Expression\\Binary\\AbstractBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/AbstractBinary.php',
|
131 |
-
'Twig\\Node\\Expression\\Binary\\AddBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/AddBinary.php',
|
132 |
-
'Twig\\Node\\Expression\\Binary\\AndBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/AndBinary.php',
|
133 |
-
'Twig\\Node\\Expression\\Binary\\BitwiseAndBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/BitwiseAndBinary.php',
|
134 |
-
'Twig\\Node\\Expression\\Binary\\BitwiseOrBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/BitwiseOrBinary.php',
|
135 |
-
'Twig\\Node\\Expression\\Binary\\BitwiseXorBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/BitwiseXorBinary.php',
|
136 |
-
'Twig\\Node\\Expression\\Binary\\ConcatBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/ConcatBinary.php',
|
137 |
-
'Twig\\Node\\Expression\\Binary\\DivBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/DivBinary.php',
|
138 |
-
'Twig\\Node\\Expression\\Binary\\EndsWithBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/EndsWithBinary.php',
|
139 |
-
'Twig\\Node\\Expression\\Binary\\EqualBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/EqualBinary.php',
|
140 |
-
'Twig\\Node\\Expression\\Binary\\FloorDivBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/FloorDivBinary.php',
|
141 |
-
'Twig\\Node\\Expression\\Binary\\GreaterBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/GreaterBinary.php',
|
142 |
-
'Twig\\Node\\Expression\\Binary\\GreaterEqualBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/GreaterEqualBinary.php',
|
143 |
-
'Twig\\Node\\Expression\\Binary\\InBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/InBinary.php',
|
144 |
-
'Twig\\Node\\Expression\\Binary\\LessBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/LessBinary.php',
|
145 |
-
'Twig\\Node\\Expression\\Binary\\LessEqualBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/LessEqualBinary.php',
|
146 |
-
'Twig\\Node\\Expression\\Binary\\MatchesBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/MatchesBinary.php',
|
147 |
-
'Twig\\Node\\Expression\\Binary\\ModBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/ModBinary.php',
|
148 |
-
'Twig\\Node\\Expression\\Binary\\MulBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/MulBinary.php',
|
149 |
-
'Twig\\Node\\Expression\\Binary\\NotEqualBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/NotEqualBinary.php',
|
150 |
-
'Twig\\Node\\Expression\\Binary\\NotInBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/NotInBinary.php',
|
151 |
-
'Twig\\Node\\Expression\\Binary\\OrBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/OrBinary.php',
|
152 |
-
'Twig\\Node\\Expression\\Binary\\PowerBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/PowerBinary.php',
|
153 |
-
'Twig\\Node\\Expression\\Binary\\RangeBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/RangeBinary.php',
|
154 |
-
'Twig\\Node\\Expression\\Binary\\StartsWithBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/StartsWithBinary.php',
|
155 |
-
'Twig\\Node\\Expression\\Binary\\SubBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/SubBinary.php',
|
156 |
-
'Twig\\Node\\Expression\\BlockReferenceExpression' => $vendorDir . '/twig/twig/src/Node/Expression/BlockReferenceExpression.php',
|
157 |
-
'Twig\\Node\\Expression\\CallExpression' => $vendorDir . '/twig/twig/src/Node/Expression/CallExpression.php',
|
158 |
-
'Twig\\Node\\Expression\\ConditionalExpression' => $vendorDir . '/twig/twig/src/Node/Expression/ConditionalExpression.php',
|
159 |
-
'Twig\\Node\\Expression\\ConstantExpression' => $vendorDir . '/twig/twig/src/Node/Expression/ConstantExpression.php',
|
160 |
-
'Twig\\Node\\Expression\\FilterExpression' => $vendorDir . '/twig/twig/src/Node/Expression/FilterExpression.php',
|
161 |
-
'Twig\\Node\\Expression\\Filter\\DefaultFilter' => $vendorDir . '/twig/twig/src/Node/Expression/Filter/DefaultFilter.php',
|
162 |
-
'Twig\\Node\\Expression\\FunctionExpression' => $vendorDir . '/twig/twig/src/Node/Expression/FunctionExpression.php',
|
163 |
-
'Twig\\Node\\Expression\\GetAttrExpression' => $vendorDir . '/twig/twig/src/Node/Expression/GetAttrExpression.php',
|
164 |
-
'Twig\\Node\\Expression\\MethodCallExpression' => $vendorDir . '/twig/twig/src/Node/Expression/MethodCallExpression.php',
|
165 |
-
'Twig\\Node\\Expression\\NameExpression' => $vendorDir . '/twig/twig/src/Node/Expression/NameExpression.php',
|
166 |
-
'Twig\\Node\\Expression\\NullCoalesceExpression' => $vendorDir . '/twig/twig/src/Node/Expression/NullCoalesceExpression.php',
|
167 |
-
'Twig\\Node\\Expression\\ParentExpression' => $vendorDir . '/twig/twig/src/Node/Expression/ParentExpression.php',
|
168 |
-
'Twig\\Node\\Expression\\TempNameExpression' => $vendorDir . '/twig/twig/src/Node/Expression/TempNameExpression.php',
|
169 |
-
'Twig\\Node\\Expression\\TestExpression' => $vendorDir . '/twig/twig/src/Node/Expression/TestExpression.php',
|
170 |
-
'Twig\\Node\\Expression\\Test\\ConstantTest' => $vendorDir . '/twig/twig/src/Node/Expression/Test/ConstantTest.php',
|
171 |
-
'Twig\\Node\\Expression\\Test\\DefinedTest' => $vendorDir . '/twig/twig/src/Node/Expression/Test/DefinedTest.php',
|
172 |
-
'Twig\\Node\\Expression\\Test\\DivisiblebyTest' => $vendorDir . '/twig/twig/src/Node/Expression/Test/DivisiblebyTest.php',
|
173 |
-
'Twig\\Node\\Expression\\Test\\EvenTest' => $vendorDir . '/twig/twig/src/Node/Expression/Test/EvenTest.php',
|
174 |
-
'Twig\\Node\\Expression\\Test\\NullTest' => $vendorDir . '/twig/twig/src/Node/Expression/Test/NullTest.php',
|
175 |
-
'Twig\\Node\\Expression\\Test\\OddTest' => $vendorDir . '/twig/twig/src/Node/Expression/Test/OddTest.php',
|
176 |
-
'Twig\\Node\\Expression\\Test\\SameasTest' => $vendorDir . '/twig/twig/src/Node/Expression/Test/SameasTest.php',
|
177 |
-
'Twig\\Node\\Expression\\Unary\\AbstractUnary' => $vendorDir . '/twig/twig/src/Node/Expression/Unary/AbstractUnary.php',
|
178 |
-
'Twig\\Node\\Expression\\Unary\\NegUnary' => $vendorDir . '/twig/twig/src/Node/Expression/Unary/NegUnary.php',
|
179 |
-
'Twig\\Node\\Expression\\Unary\\NotUnary' => $vendorDir . '/twig/twig/src/Node/Expression/Unary/NotUnary.php',
|
180 |
-
'Twig\\Node\\Expression\\Unary\\PosUnary' => $vendorDir . '/twig/twig/src/Node/Expression/Unary/PosUnary.php',
|
181 |
-
'Twig\\Node\\FlushNode' => $vendorDir . '/twig/twig/src/Node/FlushNode.php',
|
182 |
-
'Twig\\Node\\ForLoopNode' => $vendorDir . '/twig/twig/src/Node/ForLoopNode.php',
|
183 |
-
'Twig\\Node\\ForNode' => $vendorDir . '/twig/twig/src/Node/ForNode.php',
|
184 |
-
'Twig\\Node\\IfNode' => $vendorDir . '/twig/twig/src/Node/IfNode.php',
|
185 |
-
'Twig\\Node\\ImportNode' => $vendorDir . '/twig/twig/src/Node/ImportNode.php',
|
186 |
-
'Twig\\Node\\IncludeNode' => $vendorDir . '/twig/twig/src/Node/IncludeNode.php',
|
187 |
-
'Twig\\Node\\MacroNode' => $vendorDir . '/twig/twig/src/Node/MacroNode.php',
|
188 |
-
'Twig\\Node\\ModuleNode' => $vendorDir . '/twig/twig/src/Node/ModuleNode.php',
|
189 |
-
'Twig\\Node\\Node' => $vendorDir . '/twig/twig/src/Node/Node.php',
|
190 |
-
'Twig\\Node\\NodeCaptureInterface' => $vendorDir . '/twig/twig/src/Node/NodeCaptureInterface.php',
|
191 |
-
'Twig\\Node\\NodeOutputInterface' => $vendorDir . '/twig/twig/src/Node/NodeOutputInterface.php',
|
192 |
-
'Twig\\Node\\PrintNode' => $vendorDir . '/twig/twig/src/Node/PrintNode.php',
|
193 |
-
'Twig\\Node\\SandboxNode' => $vendorDir . '/twig/twig/src/Node/SandboxNode.php',
|
194 |
-
'Twig\\Node\\SandboxedPrintNode' => $vendorDir . '/twig/twig/src/Node/SandboxedPrintNode.php',
|
195 |
-
'Twig\\Node\\SetNode' => $vendorDir . '/twig/twig/src/Node/SetNode.php',
|
196 |
-
'Twig\\Node\\SetTempNode' => $vendorDir . '/twig/twig/src/Node/SetTempNode.php',
|
197 |
-
'Twig\\Node\\SpacelessNode' => $vendorDir . '/twig/twig/src/Node/SpacelessNode.php',
|
198 |
-
'Twig\\Node\\TextNode' => $vendorDir . '/twig/twig/src/Node/TextNode.php',
|
199 |
-
'Twig\\Node\\WithNode' => $vendorDir . '/twig/twig/src/Node/WithNode.php',
|
200 |
-
'Twig\\Parser' => $vendorDir . '/twig/twig/src/Parser.php',
|
201 |
-
'Twig\\Profiler\\Dumper\\BaseDumper' => $vendorDir . '/twig/twig/src/Profiler/Dumper/BaseDumper.php',
|
202 |
-
'Twig\\Profiler\\Dumper\\BlackfireDumper' => $vendorDir . '/twig/twig/src/Profiler/Dumper/BlackfireDumper.php',
|
203 |
-
'Twig\\Profiler\\Dumper\\HtmlDumper' => $vendorDir . '/twig/twig/src/Profiler/Dumper/HtmlDumper.php',
|
204 |
-
'Twig\\Profiler\\Dumper\\TextDumper' => $vendorDir . '/twig/twig/src/Profiler/Dumper/TextDumper.php',
|
205 |
-
'Twig\\Profiler\\NodeVisitor\\ProfilerNodeVisitor' => $vendorDir . '/twig/twig/src/Profiler/NodeVisitor/ProfilerNodeVisitor.php',
|
206 |
-
'Twig\\Profiler\\Node\\EnterProfileNode' => $vendorDir . '/twig/twig/src/Profiler/Node/EnterProfileNode.php',
|
207 |
-
'Twig\\Profiler\\Node\\LeaveProfileNode' => $vendorDir . '/twig/twig/src/Profiler/Node/LeaveProfileNode.php',
|
208 |
-
'Twig\\Profiler\\Profile' => $vendorDir . '/twig/twig/src/Profiler/Profile.php',
|
209 |
-
'Twig\\RuntimeLoader\\ContainerRuntimeLoader' => $vendorDir . '/twig/twig/src/RuntimeLoader/ContainerRuntimeLoader.php',
|
210 |
-
'Twig\\RuntimeLoader\\FactoryRuntimeLoader' => $vendorDir . '/twig/twig/src/RuntimeLoader/FactoryRuntimeLoader.php',
|
211 |
-
'Twig\\RuntimeLoader\\RuntimeLoaderInterface' => $vendorDir . '/twig/twig/src/RuntimeLoader/RuntimeLoaderInterface.php',
|
212 |
-
'Twig\\Sandbox\\SecurityError' => $vendorDir . '/twig/twig/src/Sandbox/SecurityError.php',
|
213 |
-
'Twig\\Sandbox\\SecurityNotAllowedFilterError' => $vendorDir . '/twig/twig/src/Sandbox/SecurityNotAllowedFilterError.php',
|
214 |
-
'Twig\\Sandbox\\SecurityNotAllowedFunctionError' => $vendorDir . '/twig/twig/src/Sandbox/SecurityNotAllowedFunctionError.php',
|
215 |
-
'Twig\\Sandbox\\SecurityNotAllowedMethodError' => $vendorDir . '/twig/twig/src/Sandbox/SecurityNotAllowedMethodError.php',
|
216 |
-
'Twig\\Sandbox\\SecurityNotAllowedPropertyError' => $vendorDir . '/twig/twig/src/Sandbox/SecurityNotAllowedPropertyError.php',
|
217 |
-
'Twig\\Sandbox\\SecurityNotAllowedTagError' => $vendorDir . '/twig/twig/src/Sandbox/SecurityNotAllowedTagError.php',
|
218 |
-
'Twig\\Sandbox\\SecurityPolicy' => $vendorDir . '/twig/twig/src/Sandbox/SecurityPolicy.php',
|
219 |
-
'Twig\\Sandbox\\SecurityPolicyInterface' => $vendorDir . '/twig/twig/src/Sandbox/SecurityPolicyInterface.php',
|
220 |
-
'Twig\\Source' => $vendorDir . '/twig/twig/src/Source.php',
|
221 |
-
'Twig\\Template' => $vendorDir . '/twig/twig/src/Template.php',
|
222 |
-
'Twig\\TemplateWrapper' => $vendorDir . '/twig/twig/src/TemplateWrapper.php',
|
223 |
-
'Twig\\Test\\IntegrationTestCase' => $vendorDir . '/twig/twig/src/Test/IntegrationTestCase.php',
|
224 |
-
'Twig\\Test\\NodeTestCase' => $vendorDir . '/twig/twig/src/Test/NodeTestCase.php',
|
225 |
-
'Twig\\Token' => $vendorDir . '/twig/twig/src/Token.php',
|
226 |
-
'Twig\\TokenParser\\AbstractTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/AbstractTokenParser.php',
|
227 |
-
'Twig\\TokenParser\\AutoEscapeTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/AutoEscapeTokenParser.php',
|
228 |
-
'Twig\\TokenParser\\BlockTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/BlockTokenParser.php',
|
229 |
-
'Twig\\TokenParser\\DoTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/DoTokenParser.php',
|
230 |
-
'Twig\\TokenParser\\EmbedTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/EmbedTokenParser.php',
|
231 |
-
'Twig\\TokenParser\\ExtendsTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/ExtendsTokenParser.php',
|
232 |
-
'Twig\\TokenParser\\FilterTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/FilterTokenParser.php',
|
233 |
-
'Twig\\TokenParser\\FlushTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/FlushTokenParser.php',
|
234 |
-
'Twig\\TokenParser\\ForTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/ForTokenParser.php',
|
235 |
-
'Twig\\TokenParser\\FromTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/FromTokenParser.php',
|
236 |
-
'Twig\\TokenParser\\IfTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/IfTokenParser.php',
|
237 |
-
'Twig\\TokenParser\\ImportTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/ImportTokenParser.php',
|
238 |
-
'Twig\\TokenParser\\IncludeTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/IncludeTokenParser.php',
|
239 |
-
'Twig\\TokenParser\\MacroTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/MacroTokenParser.php',
|
240 |
-
'Twig\\TokenParser\\SandboxTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/SandboxTokenParser.php',
|
241 |
-
'Twig\\TokenParser\\SetTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/SetTokenParser.php',
|
242 |
-
'Twig\\TokenParser\\SpacelessTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/SpacelessTokenParser.php',
|
243 |
-
'Twig\\TokenParser\\TokenParserInterface' => $vendorDir . '/twig/twig/src/TokenParser/TokenParserInterface.php',
|
244 |
-
'Twig\\TokenParser\\UseTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/UseTokenParser.php',
|
245 |
-
'Twig\\TokenParser\\WithTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/WithTokenParser.php',
|
246 |
-
'Twig\\TokenStream' => $vendorDir . '/twig/twig/src/TokenStream.php',
|
247 |
-
'Twig\\TwigFilter' => $vendorDir . '/twig/twig/src/TwigFilter.php',
|
248 |
-
'Twig\\TwigFunction' => $vendorDir . '/twig/twig/src/TwigFunction.php',
|
249 |
-
'Twig\\TwigTest' => $vendorDir . '/twig/twig/src/TwigTest.php',
|
250 |
-
'Twig\\Util\\DeprecationCollector' => $vendorDir . '/twig/twig/src/Util/DeprecationCollector.php',
|
251 |
-
'Twig\\Util\\TemplateDirIterator' => $vendorDir . '/twig/twig/src/Util/TemplateDirIterator.php',
|
252 |
-
'Twig_Autoloader' => $vendorDir . '/twig/twig/lib/Twig/Autoloader.php',
|
253 |
-
'Twig_BaseNodeVisitor' => $vendorDir . '/twig/twig/lib/Twig/BaseNodeVisitor.php',
|
254 |
-
'Twig_CacheInterface' => $vendorDir . '/twig/twig/lib/Twig/CacheInterface.php',
|
255 |
-
'Twig_Cache_Filesystem' => $vendorDir . '/twig/twig/lib/Twig/Cache/Filesystem.php',
|
256 |
-
'Twig_Cache_Null' => $vendorDir . '/twig/twig/lib/Twig/Cache/Null.php',
|
257 |
-
'Twig_Compiler' => $vendorDir . '/twig/twig/lib/Twig/Compiler.php',
|
258 |
-
'Twig_CompilerInterface' => $vendorDir . '/twig/twig/lib/Twig/CompilerInterface.php',
|
259 |
-
'Twig_ContainerRuntimeLoader' => $vendorDir . '/twig/twig/lib/Twig/ContainerRuntimeLoader.php',
|
260 |
-
'Twig_Environment' => $vendorDir . '/twig/twig/lib/Twig/Environment.php',
|
261 |
-
'Twig_Error' => $vendorDir . '/twig/twig/lib/Twig/Error.php',
|
262 |
-
'Twig_Error_Loader' => $vendorDir . '/twig/twig/lib/Twig/Error/Loader.php',
|
263 |
-
'Twig_Error_Runtime' => $vendorDir . '/twig/twig/lib/Twig/Error/Runtime.php',
|
264 |
-
'Twig_Error_Syntax' => $vendorDir . '/twig/twig/lib/Twig/Error/Syntax.php',
|
265 |
-
'Twig_ExistsLoaderInterface' => $vendorDir . '/twig/twig/lib/Twig/ExistsLoaderInterface.php',
|
266 |
-
'Twig_ExpressionParser' => $vendorDir . '/twig/twig/lib/Twig/ExpressionParser.php',
|
267 |
-
'Twig_Extension' => $vendorDir . '/twig/twig/lib/Twig/Extension.php',
|
268 |
-
'Twig_ExtensionInterface' => $vendorDir . '/twig/twig/lib/Twig/ExtensionInterface.php',
|
269 |
-
'Twig_Extension_Core' => $vendorDir . '/twig/twig/lib/Twig/Extension/Core.php',
|
270 |
-
'Twig_Extension_Debug' => $vendorDir . '/twig/twig/lib/Twig/Extension/Debug.php',
|
271 |
-
'Twig_Extension_Escaper' => $vendorDir . '/twig/twig/lib/Twig/Extension/Escaper.php',
|
272 |
-
'Twig_Extension_GlobalsInterface' => $vendorDir . '/twig/twig/lib/Twig/Extension/GlobalsInterface.php',
|
273 |
-
'Twig_Extension_InitRuntimeInterface' => $vendorDir . '/twig/twig/lib/Twig/Extension/InitRuntimeInterface.php',
|
274 |
-
'Twig_Extension_Optimizer' => $vendorDir . '/twig/twig/lib/Twig/Extension/Optimizer.php',
|
275 |
-
'Twig_Extension_Profiler' => $vendorDir . '/twig/twig/lib/Twig/Extension/Profiler.php',
|
276 |
-
'Twig_Extension_Sandbox' => $vendorDir . '/twig/twig/lib/Twig/Extension/Sandbox.php',
|
277 |
-
'Twig_Extension_Staging' => $vendorDir . '/twig/twig/lib/Twig/Extension/Staging.php',
|
278 |
-
'Twig_Extension_StringLoader' => $vendorDir . '/twig/twig/lib/Twig/Extension/StringLoader.php',
|
279 |
-
'Twig_FactoryRuntimeLoader' => $vendorDir . '/twig/twig/lib/Twig/FactoryRuntimeLoader.php',
|
280 |
-
'Twig_FileExtensionEscapingStrategy' => $vendorDir . '/twig/twig/lib/Twig/FileExtensionEscapingStrategy.php',
|
281 |
-
'Twig_Filter' => $vendorDir . '/twig/twig/lib/Twig/Filter.php',
|
282 |
-
'Twig_FilterCallableInterface' => $vendorDir . '/twig/twig/lib/Twig/FilterCallableInterface.php',
|
283 |
-
'Twig_FilterInterface' => $vendorDir . '/twig/twig/lib/Twig/FilterInterface.php',
|
284 |
-
'Twig_Filter_Function' => $vendorDir . '/twig/twig/lib/Twig/Filter/Function.php',
|
285 |
-
'Twig_Filter_Method' => $vendorDir . '/twig/twig/lib/Twig/Filter/Method.php',
|
286 |
-
'Twig_Filter_Node' => $vendorDir . '/twig/twig/lib/Twig/Filter/Node.php',
|
287 |
-
'Twig_Function' => $vendorDir . '/twig/twig/lib/Twig/Function.php',
|
288 |
-
'Twig_FunctionCallableInterface' => $vendorDir . '/twig/twig/lib/Twig/FunctionCallableInterface.php',
|
289 |
-
'Twig_FunctionInterface' => $vendorDir . '/twig/twig/lib/Twig/FunctionInterface.php',
|
290 |
-
'Twig_Function_Function' => $vendorDir . '/twig/twig/lib/Twig/Function/Function.php',
|
291 |
-
'Twig_Function_Method' => $vendorDir . '/twig/twig/lib/Twig/Function/Method.php',
|
292 |
-
'Twig_Function_Node' => $vendorDir . '/twig/twig/lib/Twig/Function/Node.php',
|
293 |
-
'Twig_Lexer' => $vendorDir . '/twig/twig/lib/Twig/Lexer.php',
|
294 |
-
'Twig_LexerInterface' => $vendorDir . '/twig/twig/lib/Twig/LexerInterface.php',
|
295 |
-
'Twig_LoaderInterface' => $vendorDir . '/twig/twig/lib/Twig/LoaderInterface.php',
|
296 |
-
'Twig_Loader_Array' => $vendorDir . '/twig/twig/lib/Twig/Loader/Array.php',
|
297 |
-
'Twig_Loader_Chain' => $vendorDir . '/twig/twig/lib/Twig/Loader/Chain.php',
|
298 |
-
'Twig_Loader_Filesystem' => $vendorDir . '/twig/twig/lib/Twig/Loader/Filesystem.php',
|
299 |
-
'Twig_Loader_String' => $vendorDir . '/twig/twig/lib/Twig/Loader/String.php',
|
300 |
-
'Twig_Markup' => $vendorDir . '/twig/twig/lib/Twig/Markup.php',
|
301 |
-
'Twig_Node' => $vendorDir . '/twig/twig/lib/Twig/Node.php',
|
302 |
-
'Twig_NodeCaptureInterface' => $vendorDir . '/twig/twig/lib/Twig/NodeCaptureInterface.php',
|
303 |
-
'Twig_NodeInterface' => $vendorDir . '/twig/twig/lib/Twig/NodeInterface.php',
|
304 |
-
'Twig_NodeOutputInterface' => $vendorDir . '/twig/twig/lib/Twig/NodeOutputInterface.php',
|
305 |
-
'Twig_NodeTraverser' => $vendorDir . '/twig/twig/lib/Twig/NodeTraverser.php',
|
306 |
-
'Twig_NodeVisitorInterface' => $vendorDir . '/twig/twig/lib/Twig/NodeVisitorInterface.php',
|
307 |
-
'Twig_NodeVisitor_Escaper' => $vendorDir . '/twig/twig/lib/Twig/NodeVisitor/Escaper.php',
|
308 |
-
'Twig_NodeVisitor_Optimizer' => $vendorDir . '/twig/twig/lib/Twig/NodeVisitor/Optimizer.php',
|
309 |
-
'Twig_NodeVisitor_SafeAnalysis' => $vendorDir . '/twig/twig/lib/Twig/NodeVisitor/SafeAnalysis.php',
|
310 |
-
'Twig_NodeVisitor_Sandbox' => $vendorDir . '/twig/twig/lib/Twig/NodeVisitor/Sandbox.php',
|
311 |
-
'Twig_Node_AutoEscape' => $vendorDir . '/twig/twig/lib/Twig/Node/AutoEscape.php',
|
312 |
-
'Twig_Node_Block' => $vendorDir . '/twig/twig/lib/Twig/Node/Block.php',
|
313 |
-
'Twig_Node_BlockReference' => $vendorDir . '/twig/twig/lib/Twig/Node/BlockReference.php',
|
314 |
-
'Twig_Node_Body' => $vendorDir . '/twig/twig/lib/Twig/Node/Body.php',
|
315 |
-
'Twig_Node_CheckSecurity' => $vendorDir . '/twig/twig/lib/Twig/Node/CheckSecurity.php',
|
316 |
-
'Twig_Node_Do' => $vendorDir . '/twig/twig/lib/Twig/Node/Do.php',
|
317 |
-
'Twig_Node_Embed' => $vendorDir . '/twig/twig/lib/Twig/Node/Embed.php',
|
318 |
-
'Twig_Node_Expression' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression.php',
|
319 |
-
'Twig_Node_Expression_Array' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Array.php',
|
320 |
-
'Twig_Node_Expression_AssignName' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/AssignName.php',
|
321 |
-
'Twig_Node_Expression_Binary' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary.php',
|
322 |
-
'Twig_Node_Expression_Binary_Add' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/Add.php',
|
323 |
-
'Twig_Node_Expression_Binary_And' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/And.php',
|
324 |
-
'Twig_Node_Expression_Binary_BitwiseAnd' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseAnd.php',
|
325 |
-
'Twig_Node_Expression_Binary_BitwiseOr' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseOr.php',
|
326 |
-
'Twig_Node_Expression_Binary_BitwiseXor' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseXor.php',
|
327 |
-
'Twig_Node_Expression_Binary_Concat' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/Concat.php',
|
328 |
-
'Twig_Node_Expression_Binary_Div' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/Div.php',
|
329 |
-
'Twig_Node_Expression_Binary_EndsWith' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/EndsWith.php',
|
330 |
-
'Twig_Node_Expression_Binary_Equal' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/Equal.php',
|
331 |
-
'Twig_Node_Expression_Binary_FloorDiv' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/FloorDiv.php',
|
332 |
-
'Twig_Node_Expression_Binary_Greater' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/Greater.php',
|
333 |
-
'Twig_Node_Expression_Binary_GreaterEqual' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/GreaterEqual.php',
|
334 |
-
'Twig_Node_Expression_Binary_In' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/In.php',
|
335 |
-
'Twig_Node_Expression_Binary_Less' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/Less.php',
|
336 |
-
'Twig_Node_Expression_Binary_LessEqual' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/LessEqual.php',
|
337 |
-
'Twig_Node_Expression_Binary_Matches' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/Matches.php',
|
338 |
-
'Twig_Node_Expression_Binary_Mod' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/Mod.php',
|
339 |
-
'Twig_Node_Expression_Binary_Mul' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/Mul.php',
|
340 |
-
'Twig_Node_Expression_Binary_NotEqual' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/NotEqual.php',
|
341 |
-
'Twig_Node_Expression_Binary_NotIn' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/NotIn.php',
|
342 |
-
'Twig_Node_Expression_Binary_Or' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/Or.php',
|
343 |
-
'Twig_Node_Expression_Binary_Power' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/Power.php',
|
344 |
-
'Twig_Node_Expression_Binary_Range' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/Range.php',
|
345 |
-
'Twig_Node_Expression_Binary_StartsWith' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/StartsWith.php',
|
346 |
-
'Twig_Node_Expression_Binary_Sub' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Binary/Sub.php',
|
347 |
-
'Twig_Node_Expression_BlockReference' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/BlockReference.php',
|
348 |
-
'Twig_Node_Expression_Call' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Call.php',
|
349 |
-
'Twig_Node_Expression_Conditional' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Conditional.php',
|
350 |
-
'Twig_Node_Expression_Constant' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Constant.php',
|
351 |
-
'Twig_Node_Expression_ExtensionReference' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/ExtensionReference.php',
|
352 |
-
'Twig_Node_Expression_Filter' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Filter.php',
|
353 |
-
'Twig_Node_Expression_Filter_Default' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Filter/Default.php',
|
354 |
-
'Twig_Node_Expression_Function' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Function.php',
|
355 |
-
'Twig_Node_Expression_GetAttr' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/GetAttr.php',
|
356 |
-
'Twig_Node_Expression_MethodCall' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/MethodCall.php',
|
357 |
-
'Twig_Node_Expression_Name' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Name.php',
|
358 |
-
'Twig_Node_Expression_NullCoalesce' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/NullCoalesce.php',
|
359 |
-
'Twig_Node_Expression_Parent' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Parent.php',
|
360 |
-
'Twig_Node_Expression_TempName' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/TempName.php',
|
361 |
-
'Twig_Node_Expression_Test' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Test.php',
|
362 |
-
'Twig_Node_Expression_Test_Constant' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Test/Constant.php',
|
363 |
-
'Twig_Node_Expression_Test_Defined' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Test/Defined.php',
|
364 |
-
'Twig_Node_Expression_Test_Divisibleby' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Test/Divisibleby.php',
|
365 |
-
'Twig_Node_Expression_Test_Even' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Test/Even.php',
|
366 |
-
'Twig_Node_Expression_Test_Null' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Test/Null.php',
|
367 |
-
'Twig_Node_Expression_Test_Odd' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Test/Odd.php',
|
368 |
-
'Twig_Node_Expression_Test_Sameas' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Test/Sameas.php',
|
369 |
-
'Twig_Node_Expression_Unary' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Unary.php',
|
370 |
-
'Twig_Node_Expression_Unary_Neg' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Unary/Neg.php',
|
371 |
-
'Twig_Node_Expression_Unary_Not' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Unary/Not.php',
|
372 |
-
'Twig_Node_Expression_Unary_Pos' => $vendorDir . '/twig/twig/lib/Twig/Node/Expression/Unary/Pos.php',
|
373 |
-
'Twig_Node_Flush' => $vendorDir . '/twig/twig/lib/Twig/Node/Flush.php',
|
374 |
-
'Twig_Node_For' => $vendorDir . '/twig/twig/lib/Twig/Node/For.php',
|
375 |
-
'Twig_Node_ForLoop' => $vendorDir . '/twig/twig/lib/Twig/Node/ForLoop.php',
|
376 |
-
'Twig_Node_If' => $vendorDir . '/twig/twig/lib/Twig/Node/If.php',
|
377 |
-
'Twig_Node_Import' => $vendorDir . '/twig/twig/lib/Twig/Node/Import.php',
|
378 |
-
'Twig_Node_Include' => $vendorDir . '/twig/twig/lib/Twig/Node/Include.php',
|
379 |
-
'Twig_Node_Macro' => $vendorDir . '/twig/twig/lib/Twig/Node/Macro.php',
|
380 |
-
'Twig_Node_Module' => $vendorDir . '/twig/twig/lib/Twig/Node/Module.php',
|
381 |
-
'Twig_Node_Print' => $vendorDir . '/twig/twig/lib/Twig/Node/Print.php',
|
382 |
-
'Twig_Node_Sandbox' => $vendorDir . '/twig/twig/lib/Twig/Node/Sandbox.php',
|
383 |
-
'Twig_Node_SandboxedPrint' => $vendorDir . '/twig/twig/lib/Twig/Node/SandboxedPrint.php',
|
384 |
-
'Twig_Node_Set' => $vendorDir . '/twig/twig/lib/Twig/Node/Set.php',
|
385 |
-
'Twig_Node_SetTemp' => $vendorDir . '/twig/twig/lib/Twig/Node/SetTemp.php',
|
386 |
-
'Twig_Node_Spaceless' => $vendorDir . '/twig/twig/lib/Twig/Node/Spaceless.php',
|
387 |
-
'Twig_Node_Text' => $vendorDir . '/twig/twig/lib/Twig/Node/Text.php',
|
388 |
-
'Twig_Node_With' => $vendorDir . '/twig/twig/lib/Twig/Node/With.php',
|
389 |
-
'Twig_Parser' => $vendorDir . '/twig/twig/lib/Twig/Parser.php',
|
390 |
-
'Twig_ParserInterface' => $vendorDir . '/twig/twig/lib/Twig/ParserInterface.php',
|
391 |
-
'Twig_Profiler_Dumper_Base' => $vendorDir . '/twig/twig/lib/Twig/Profiler/Dumper/Base.php',
|
392 |
-
'Twig_Profiler_Dumper_Blackfire' => $vendorDir . '/twig/twig/lib/Twig/Profiler/Dumper/Blackfire.php',
|
393 |
-
'Twig_Profiler_Dumper_Html' => $vendorDir . '/twig/twig/lib/Twig/Profiler/Dumper/Html.php',
|
394 |
-
'Twig_Profiler_Dumper_Text' => $vendorDir . '/twig/twig/lib/Twig/Profiler/Dumper/Text.php',
|
395 |
-
'Twig_Profiler_NodeVisitor_Profiler' => $vendorDir . '/twig/twig/lib/Twig/Profiler/NodeVisitor/Profiler.php',
|
396 |
-
'Twig_Profiler_Node_EnterProfile' => $vendorDir . '/twig/twig/lib/Twig/Profiler/Node/EnterProfile.php',
|
397 |
-
'Twig_Profiler_Node_LeaveProfile' => $vendorDir . '/twig/twig/lib/Twig/Profiler/Node/LeaveProfile.php',
|
398 |
-
'Twig_Profiler_Profile' => $vendorDir . '/twig/twig/lib/Twig/Profiler/Profile.php',
|
399 |
-
'Twig_RuntimeLoaderInterface' => $vendorDir . '/twig/twig/lib/Twig/RuntimeLoaderInterface.php',
|
400 |
-
'Twig_Sandbox_SecurityError' => $vendorDir . '/twig/twig/lib/Twig/Sandbox/SecurityError.php',
|
401 |
-
'Twig_Sandbox_SecurityNotAllowedFilterError' => $vendorDir . '/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedFilterError.php',
|
402 |
-
'Twig_Sandbox_SecurityNotAllowedFunctionError' => $vendorDir . '/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedFunctionError.php',
|
403 |
-
'Twig_Sandbox_SecurityNotAllowedMethodError' => $vendorDir . '/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedMethodError.php',
|
404 |
-
'Twig_Sandbox_SecurityNotAllowedPropertyError' => $vendorDir . '/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedPropertyError.php',
|
405 |
-
'Twig_Sandbox_SecurityNotAllowedTagError' => $vendorDir . '/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedTagError.php',
|
406 |
-
'Twig_Sandbox_SecurityPolicy' => $vendorDir . '/twig/twig/lib/Twig/Sandbox/SecurityPolicy.php',
|
407 |
-
'Twig_Sandbox_SecurityPolicyInterface' => $vendorDir . '/twig/twig/lib/Twig/Sandbox/SecurityPolicyInterface.php',
|
408 |
-
'Twig_SimpleFilter' => $vendorDir . '/twig/twig/lib/Twig/SimpleFilter.php',
|
409 |
-
'Twig_SimpleFunction' => $vendorDir . '/twig/twig/lib/Twig/SimpleFunction.php',
|
410 |
-
'Twig_SimpleTest' => $vendorDir . '/twig/twig/lib/Twig/SimpleTest.php',
|
411 |
-
'Twig_Source' => $vendorDir . '/twig/twig/lib/Twig/Source.php',
|
412 |
-
'Twig_SourceContextLoaderInterface' => $vendorDir . '/twig/twig/lib/Twig/SourceContextLoaderInterface.php',
|
413 |
-
'Twig_Template' => $vendorDir . '/twig/twig/lib/Twig/Template.php',
|
414 |
-
'Twig_TemplateInterface' => $vendorDir . '/twig/twig/lib/Twig/TemplateInterface.php',
|
415 |
-
'Twig_TemplateWrapper' => $vendorDir . '/twig/twig/lib/Twig/TemplateWrapper.php',
|
416 |
-
'Twig_Test' => $vendorDir . '/twig/twig/lib/Twig/Test.php',
|
417 |
-
'Twig_TestCallableInterface' => $vendorDir . '/twig/twig/lib/Twig/TestCallableInterface.php',
|
418 |
-
'Twig_TestInterface' => $vendorDir . '/twig/twig/lib/Twig/TestInterface.php',
|
419 |
-
'Twig_Test_Function' => $vendorDir . '/twig/twig/lib/Twig/Test/Function.php',
|
420 |
-
'Twig_Test_IntegrationTestCase' => $vendorDir . '/twig/twig/lib/Twig/Test/IntegrationTestCase.php',
|
421 |
-
'Twig_Test_Method' => $vendorDir . '/twig/twig/lib/Twig/Test/Method.php',
|
422 |
-
'Twig_Test_Node' => $vendorDir . '/twig/twig/lib/Twig/Test/Node.php',
|
423 |
-
'Twig_Test_NodeTestCase' => $vendorDir . '/twig/twig/lib/Twig/Test/NodeTestCase.php',
|
424 |
-
'Twig_Token' => $vendorDir . '/twig/twig/lib/Twig/Token.php',
|
425 |
-
'Twig_TokenParser' => $vendorDir . '/twig/twig/lib/Twig/TokenParser.php',
|
426 |
-
'Twig_TokenParserBroker' => $vendorDir . '/twig/twig/lib/Twig/TokenParserBroker.php',
|
427 |
-
'Twig_TokenParserBrokerInterface' => $vendorDir . '/twig/twig/lib/Twig/TokenParserBrokerInterface.php',
|
428 |
-
'Twig_TokenParserInterface' => $vendorDir . '/twig/twig/lib/Twig/TokenParserInterface.php',
|
429 |
-
'Twig_TokenParser_AutoEscape' => $vendorDir . '/twig/twig/lib/Twig/TokenParser/AutoEscape.php',
|
430 |
-
'Twig_TokenParser_Block' => $vendorDir . '/twig/twig/lib/Twig/TokenParser/Block.php',
|
431 |
-
'Twig_TokenParser_Do' => $vendorDir . '/twig/twig/lib/Twig/TokenParser/Do.php',
|
432 |
-
'Twig_TokenParser_Embed' => $vendorDir . '/twig/twig/lib/Twig/TokenParser/Embed.php',
|
433 |
-
'Twig_TokenParser_Extends' => $vendorDir . '/twig/twig/lib/Twig/TokenParser/Extends.php',
|
434 |
-
'Twig_TokenParser_Filter' => $vendorDir . '/twig/twig/lib/Twig/TokenParser/Filter.php',
|
435 |
-
'Twig_TokenParser_Flush' => $vendorDir . '/twig/twig/lib/Twig/TokenParser/Flush.php',
|
436 |
-
'Twig_TokenParser_For' => $vendorDir . '/twig/twig/lib/Twig/TokenParser/For.php',
|
437 |
-
'Twig_TokenParser_From' => $vendorDir . '/twig/twig/lib/Twig/TokenParser/From.php',
|
438 |
-
'Twig_TokenParser_If' => $vendorDir . '/twig/twig/lib/Twig/TokenParser/If.php',
|
439 |
-
'Twig_TokenParser_Import' => $vendorDir . '/twig/twig/lib/Twig/TokenParser/Import.php',
|
440 |
-
'Twig_TokenParser_Include' => $vendorDir . '/twig/twig/lib/Twig/TokenParser/Include.php',
|
441 |
-
'Twig_TokenParser_Macro' => $vendorDir . '/twig/twig/lib/Twig/TokenParser/Macro.php',
|
442 |
-
'Twig_TokenParser_Sandbox' => $vendorDir . '/twig/twig/lib/Twig/TokenParser/Sandbox.php',
|
443 |
-
'Twig_TokenParser_Set' => $vendorDir . '/twig/twig/lib/Twig/TokenParser/Set.php',
|
444 |
-
'Twig_TokenParser_Spaceless' => $vendorDir . '/twig/twig/lib/Twig/TokenParser/Spaceless.php',
|
445 |
-
'Twig_TokenParser_Use' => $vendorDir . '/twig/twig/lib/Twig/TokenParser/Use.php',
|
446 |
-
'Twig_TokenParser_With' => $vendorDir . '/twig/twig/lib/Twig/TokenParser/With.php',
|
447 |
-
'Twig_TokenStream' => $vendorDir . '/twig/twig/lib/Twig/TokenStream.php',
|
448 |
-
'Twig_Util_DeprecationCollector' => $vendorDir . '/twig/twig/lib/Twig/Util/DeprecationCollector.php',
|
449 |
-
'Twig_Util_TemplateDirIterator' => $vendorDir . '/twig/twig/lib/Twig/Util/TemplateDirIterator.php',
|
450 |
-
'ZxcvbnPhp\\Matcher' => $vendorDir . '/bjeavons/zxcvbn-php/src/Matcher.php',
|
451 |
-
'ZxcvbnPhp\\Matchers\\Bruteforce' => $vendorDir . '/bjeavons/zxcvbn-php/src/Matchers/Bruteforce.php',
|
452 |
-
'ZxcvbnPhp\\Matchers\\DateMatch' => $vendorDir . '/bjeavons/zxcvbn-php/src/Matchers/DateMatch.php',
|
453 |
-
'ZxcvbnPhp\\Matchers\\DictionaryMatch' => $vendorDir . '/bjeavons/zxcvbn-php/src/Matchers/DictionaryMatch.php',
|
454 |
-
'ZxcvbnPhp\\Matchers\\DigitMatch' => $vendorDir . '/bjeavons/zxcvbn-php/src/Matchers/DigitMatch.php',
|
455 |
-
'ZxcvbnPhp\\Matchers\\L33tMatch' => $vendorDir . '/bjeavons/zxcvbn-php/src/Matchers/L33tMatch.php',
|
456 |
-
'ZxcvbnPhp\\Matchers\\Match' => $vendorDir . '/bjeavons/zxcvbn-php/src/Matchers/Match.php',
|
457 |
-
'ZxcvbnPhp\\Matchers\\MatchInterface' => $vendorDir . '/bjeavons/zxcvbn-php/src/Matchers/MatchInterface.php',
|
458 |
-
'ZxcvbnPhp\\Matchers\\RepeatMatch' => $vendorDir . '/bjeavons/zxcvbn-php/src/Matchers/RepeatMatch.php',
|
459 |
-
'ZxcvbnPhp\\Matchers\\SequenceMatch' => $vendorDir . '/bjeavons/zxcvbn-php/src/Matchers/SequenceMatch.php',
|
460 |
-
'ZxcvbnPhp\\Matchers\\SpatialMatch' => $vendorDir . '/bjeavons/zxcvbn-php/src/Matchers/SpatialMatch.php',
|
461 |
-
'ZxcvbnPhp\\Matchers\\YearMatch' => $vendorDir . '/bjeavons/zxcvbn-php/src/Matchers/YearMatch.php',
|
462 |
-
'ZxcvbnPhp\\Scorer' => $vendorDir . '/bjeavons/zxcvbn-php/src/Scorer.php',
|
463 |
-
'ZxcvbnPhp\\ScorerInterface' => $vendorDir . '/bjeavons/zxcvbn-php/src/ScorerInterface.php',
|
464 |
-
'ZxcvbnPhp\\Searcher' => $vendorDir . '/bjeavons/zxcvbn-php/src/Searcher.php',
|
465 |
-
'ZxcvbnPhp\\Zxcvbn' => $vendorDir . '/bjeavons/zxcvbn-php/src/Zxcvbn.php',
|
466 |
);
|
6 |
$baseDir = dirname($vendorDir);
|
7 |
|
8 |
return array(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
);
|
src/common/lib/vendor/composer/autoload_static.php
CHANGED
@@ -71,473 +71,12 @@ class ComposerStaticInit18a31866e67f0a0bfffdc031786ecae1
|
|
71 |
),
|
72 |
);
|
73 |
|
74 |
-
public static $classMap = array (
|
75 |
-
'Carbon\\Carbon' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Carbon.php',
|
76 |
-
'Carbon\\CarbonInterval' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/CarbonInterval.php',
|
77 |
-
'Carbon\\Exceptions\\InvalidDateException' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Exceptions/InvalidDateException.php',
|
78 |
-
'FernleafSystems\\Utilities\\Data\\Adapter\\StdClassAdapter' => __DIR__ . '/..' . '/fernleafsystems/utilities/src/Data/Adapter/StdClassAdapter.php',
|
79 |
-
'FernleafSystems\\Utilities\\Response' => __DIR__ . '/..' . '/fernleafsystems/utilities/src/Response.php',
|
80 |
-
'Symfony\\Component\\Translation\\Catalogue\\AbstractOperation' => __DIR__ . '/..' . '/symfony/translation/Catalogue/AbstractOperation.php',
|
81 |
-
'Symfony\\Component\\Translation\\Catalogue\\MergeOperation' => __DIR__ . '/..' . '/symfony/translation/Catalogue/MergeOperation.php',
|
82 |
-
'Symfony\\Component\\Translation\\Catalogue\\OperationInterface' => __DIR__ . '/..' . '/symfony/translation/Catalogue/OperationInterface.php',
|
83 |
-
'Symfony\\Component\\Translation\\Catalogue\\TargetOperation' => __DIR__ . '/..' . '/symfony/translation/Catalogue/TargetOperation.php',
|
84 |
-
'Symfony\\Component\\Translation\\Command\\XliffLintCommand' => __DIR__ . '/..' . '/symfony/translation/Command/XliffLintCommand.php',
|
85 |
-
'Symfony\\Component\\Translation\\DataCollectorTranslator' => __DIR__ . '/..' . '/symfony/translation/DataCollectorTranslator.php',
|
86 |
-
'Symfony\\Component\\Translation\\DataCollector\\TranslationDataCollector' => __DIR__ . '/..' . '/symfony/translation/DataCollector/TranslationDataCollector.php',
|
87 |
-
'Symfony\\Component\\Translation\\DependencyInjection\\TranslationDumperPass' => __DIR__ . '/..' . '/symfony/translation/DependencyInjection/TranslationDumperPass.php',
|
88 |
-
'Symfony\\Component\\Translation\\DependencyInjection\\TranslationExtractorPass' => __DIR__ . '/..' . '/symfony/translation/DependencyInjection/TranslationExtractorPass.php',
|
89 |
-
'Symfony\\Component\\Translation\\DependencyInjection\\TranslatorPass' => __DIR__ . '/..' . '/symfony/translation/DependencyInjection/TranslatorPass.php',
|
90 |
-
'Symfony\\Component\\Translation\\Dumper\\CsvFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/CsvFileDumper.php',
|
91 |
-
'Symfony\\Component\\Translation\\Dumper\\DumperInterface' => __DIR__ . '/..' . '/symfony/translation/Dumper/DumperInterface.php',
|
92 |
-
'Symfony\\Component\\Translation\\Dumper\\FileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/FileDumper.php',
|
93 |
-
'Symfony\\Component\\Translation\\Dumper\\IcuResFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/IcuResFileDumper.php',
|
94 |
-
'Symfony\\Component\\Translation\\Dumper\\IniFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/IniFileDumper.php',
|
95 |
-
'Symfony\\Component\\Translation\\Dumper\\JsonFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/JsonFileDumper.php',
|
96 |
-
'Symfony\\Component\\Translation\\Dumper\\MoFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/MoFileDumper.php',
|
97 |
-
'Symfony\\Component\\Translation\\Dumper\\PhpFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/PhpFileDumper.php',
|
98 |
-
'Symfony\\Component\\Translation\\Dumper\\PoFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/PoFileDumper.php',
|
99 |
-
'Symfony\\Component\\Translation\\Dumper\\QtFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/QtFileDumper.php',
|
100 |
-
'Symfony\\Component\\Translation\\Dumper\\XliffFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/XliffFileDumper.php',
|
101 |
-
'Symfony\\Component\\Translation\\Dumper\\YamlFileDumper' => __DIR__ . '/..' . '/symfony/translation/Dumper/YamlFileDumper.php',
|
102 |
-
'Symfony\\Component\\Translation\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/translation/Exception/ExceptionInterface.php',
|
103 |
-
'Symfony\\Component\\Translation\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/translation/Exception/InvalidArgumentException.php',
|
104 |
-
'Symfony\\Component\\Translation\\Exception\\InvalidResourceException' => __DIR__ . '/..' . '/symfony/translation/Exception/InvalidResourceException.php',
|
105 |
-
'Symfony\\Component\\Translation\\Exception\\LogicException' => __DIR__ . '/..' . '/symfony/translation/Exception/LogicException.php',
|
106 |
-
'Symfony\\Component\\Translation\\Exception\\NotFoundResourceException' => __DIR__ . '/..' . '/symfony/translation/Exception/NotFoundResourceException.php',
|
107 |
-
'Symfony\\Component\\Translation\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/translation/Exception/RuntimeException.php',
|
108 |
-
'Symfony\\Component\\Translation\\Extractor\\AbstractFileExtractor' => __DIR__ . '/..' . '/symfony/translation/Extractor/AbstractFileExtractor.php',
|
109 |
-
'Symfony\\Component\\Translation\\Extractor\\ChainExtractor' => __DIR__ . '/..' . '/symfony/translation/Extractor/ChainExtractor.php',
|
110 |
-
'Symfony\\Component\\Translation\\Extractor\\ExtractorInterface' => __DIR__ . '/..' . '/symfony/translation/Extractor/ExtractorInterface.php',
|
111 |
-
'Symfony\\Component\\Translation\\Extractor\\PhpExtractor' => __DIR__ . '/..' . '/symfony/translation/Extractor/PhpExtractor.php',
|
112 |
-
'Symfony\\Component\\Translation\\Extractor\\PhpStringTokenParser' => __DIR__ . '/..' . '/symfony/translation/Extractor/PhpStringTokenParser.php',
|
113 |
-
'Symfony\\Component\\Translation\\Formatter\\ChoiceMessageFormatterInterface' => __DIR__ . '/..' . '/symfony/translation/Formatter/ChoiceMessageFormatterInterface.php',
|
114 |
-
'Symfony\\Component\\Translation\\Formatter\\MessageFormatter' => __DIR__ . '/..' . '/symfony/translation/Formatter/MessageFormatter.php',
|
115 |
-
'Symfony\\Component\\Translation\\Formatter\\MessageFormatterInterface' => __DIR__ . '/..' . '/symfony/translation/Formatter/MessageFormatterInterface.php',
|
116 |
-
'Symfony\\Component\\Translation\\IdentityTranslator' => __DIR__ . '/..' . '/symfony/translation/IdentityTranslator.php',
|
117 |
-
'Symfony\\Component\\Translation\\Interval' => __DIR__ . '/..' . '/symfony/translation/Interval.php',
|
118 |
-
'Symfony\\Component\\Translation\\Loader\\ArrayLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/ArrayLoader.php',
|
119 |
-
'Symfony\\Component\\Translation\\Loader\\CsvFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/CsvFileLoader.php',
|
120 |
-
'Symfony\\Component\\Translation\\Loader\\FileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/FileLoader.php',
|
121 |
-
'Symfony\\Component\\Translation\\Loader\\IcuDatFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/IcuDatFileLoader.php',
|
122 |
-
'Symfony\\Component\\Translation\\Loader\\IcuResFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/IcuResFileLoader.php',
|
123 |
-
'Symfony\\Component\\Translation\\Loader\\IniFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/IniFileLoader.php',
|
124 |
-
'Symfony\\Component\\Translation\\Loader\\JsonFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/JsonFileLoader.php',
|
125 |
-
'Symfony\\Component\\Translation\\Loader\\LoaderInterface' => __DIR__ . '/..' . '/symfony/translation/Loader/LoaderInterface.php',
|
126 |
-
'Symfony\\Component\\Translation\\Loader\\MoFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/MoFileLoader.php',
|
127 |
-
'Symfony\\Component\\Translation\\Loader\\PhpFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/PhpFileLoader.php',
|
128 |
-
'Symfony\\Component\\Translation\\Loader\\PoFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/PoFileLoader.php',
|
129 |
-
'Symfony\\Component\\Translation\\Loader\\QtFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/QtFileLoader.php',
|
130 |
-
'Symfony\\Component\\Translation\\Loader\\XliffFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/XliffFileLoader.php',
|
131 |
-
'Symfony\\Component\\Translation\\Loader\\YamlFileLoader' => __DIR__ . '/..' . '/symfony/translation/Loader/YamlFileLoader.php',
|
132 |
-
'Symfony\\Component\\Translation\\LoggingTranslator' => __DIR__ . '/..' . '/symfony/translation/LoggingTranslator.php',
|
133 |
-
'Symfony\\Component\\Translation\\MessageCatalogue' => __DIR__ . '/..' . '/symfony/translation/MessageCatalogue.php',
|
134 |
-
'Symfony\\Component\\Translation\\MessageCatalogueInterface' => __DIR__ . '/..' . '/symfony/translation/MessageCatalogueInterface.php',
|
135 |
-
'Symfony\\Component\\Translation\\MessageSelector' => __DIR__ . '/..' . '/symfony/translation/MessageSelector.php',
|
136 |
-
'Symfony\\Component\\Translation\\MetadataAwareInterface' => __DIR__ . '/..' . '/symfony/translation/MetadataAwareInterface.php',
|
137 |
-
'Symfony\\Component\\Translation\\PluralizationRules' => __DIR__ . '/..' . '/symfony/translation/PluralizationRules.php',
|
138 |
-
'Symfony\\Component\\Translation\\Reader\\TranslationReader' => __DIR__ . '/..' . '/symfony/translation/Reader/TranslationReader.php',
|
139 |
-
'Symfony\\Component\\Translation\\Reader\\TranslationReaderInterface' => __DIR__ . '/..' . '/symfony/translation/Reader/TranslationReaderInterface.php',
|
140 |
-
'Symfony\\Component\\Translation\\Translator' => __DIR__ . '/..' . '/symfony/translation/Translator.php',
|
141 |
-
'Symfony\\Component\\Translation\\TranslatorBagInterface' => __DIR__ . '/..' . '/symfony/translation/TranslatorBagInterface.php',
|
142 |
-
'Symfony\\Component\\Translation\\TranslatorInterface' => __DIR__ . '/..' . '/symfony/translation/TranslatorInterface.php',
|
143 |
-
'Symfony\\Component\\Translation\\Util\\ArrayConverter' => __DIR__ . '/..' . '/symfony/translation/Util/ArrayConverter.php',
|
144 |
-
'Symfony\\Component\\Translation\\Writer\\TranslationWriter' => __DIR__ . '/..' . '/symfony/translation/Writer/TranslationWriter.php',
|
145 |
-
'Symfony\\Component\\Translation\\Writer\\TranslationWriterInterface' => __DIR__ . '/..' . '/symfony/translation/Writer/TranslationWriterInterface.php',
|
146 |
-
'Symfony\\Polyfill\\Mbstring\\Mbstring' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/Mbstring.php',
|
147 |
-
'Twig\\Cache\\CacheInterface' => __DIR__ . '/..' . '/twig/twig/src/Cache/CacheInterface.php',
|
148 |
-
'Twig\\Cache\\FilesystemCache' => __DIR__ . '/..' . '/twig/twig/src/Cache/FilesystemCache.php',
|
149 |
-
'Twig\\Cache\\NullCache' => __DIR__ . '/..' . '/twig/twig/src/Cache/NullCache.php',
|
150 |
-
'Twig\\Compiler' => __DIR__ . '/..' . '/twig/twig/src/Compiler.php',
|
151 |
-
'Twig\\Environment' => __DIR__ . '/..' . '/twig/twig/src/Environment.php',
|
152 |
-
'Twig\\Error\\Error' => __DIR__ . '/..' . '/twig/twig/src/Error/Error.php',
|
153 |
-
'Twig\\Error\\LoaderError' => __DIR__ . '/..' . '/twig/twig/src/Error/LoaderError.php',
|
154 |
-
'Twig\\Error\\RuntimeError' => __DIR__ . '/..' . '/twig/twig/src/Error/RuntimeError.php',
|
155 |
-
'Twig\\Error\\SyntaxError' => __DIR__ . '/..' . '/twig/twig/src/Error/SyntaxError.php',
|
156 |
-
'Twig\\ExpressionParser' => __DIR__ . '/..' . '/twig/twig/src/ExpressionParser.php',
|
157 |
-
'Twig\\Extension\\AbstractExtension' => __DIR__ . '/..' . '/twig/twig/src/Extension/AbstractExtension.php',
|
158 |
-
'Twig\\Extension\\CoreExtension' => __DIR__ . '/..' . '/twig/twig/src/Extension/CoreExtension.php',
|
159 |
-
'Twig\\Extension\\DebugExtension' => __DIR__ . '/..' . '/twig/twig/src/Extension/DebugExtension.php',
|
160 |
-
'Twig\\Extension\\EscaperExtension' => __DIR__ . '/..' . '/twig/twig/src/Extension/EscaperExtension.php',
|
161 |
-
'Twig\\Extension\\ExtensionInterface' => __DIR__ . '/..' . '/twig/twig/src/Extension/ExtensionInterface.php',
|
162 |
-
'Twig\\Extension\\GlobalsInterface' => __DIR__ . '/..' . '/twig/twig/src/Extension/GlobalsInterface.php',
|
163 |
-
'Twig\\Extension\\InitRuntimeInterface' => __DIR__ . '/..' . '/twig/twig/src/Extension/InitRuntimeInterface.php',
|
164 |
-
'Twig\\Extension\\OptimizerExtension' => __DIR__ . '/..' . '/twig/twig/src/Extension/OptimizerExtension.php',
|
165 |
-
'Twig\\Extension\\ProfilerExtension' => __DIR__ . '/..' . '/twig/twig/src/Extension/ProfilerExtension.php',
|
166 |
-
'Twig\\Extension\\RuntimeExtensionInterface' => __DIR__ . '/..' . '/twig/twig/src/Extension/RuntimeExtensionInterface.php',
|
167 |
-
'Twig\\Extension\\SandboxExtension' => __DIR__ . '/..' . '/twig/twig/src/Extension/SandboxExtension.php',
|
168 |
-
'Twig\\Extension\\StagingExtension' => __DIR__ . '/..' . '/twig/twig/src/Extension/StagingExtension.php',
|
169 |
-
'Twig\\Extension\\StringLoaderExtension' => __DIR__ . '/..' . '/twig/twig/src/Extension/StringLoaderExtension.php',
|
170 |
-
'Twig\\FileExtensionEscapingStrategy' => __DIR__ . '/..' . '/twig/twig/src/FileExtensionEscapingStrategy.php',
|
171 |
-
'Twig\\Lexer' => __DIR__ . '/..' . '/twig/twig/src/Lexer.php',
|
172 |
-
'Twig\\Loader\\ArrayLoader' => __DIR__ . '/..' . '/twig/twig/src/Loader/ArrayLoader.php',
|
173 |
-
'Twig\\Loader\\ChainLoader' => __DIR__ . '/..' . '/twig/twig/src/Loader/ChainLoader.php',
|
174 |
-
'Twig\\Loader\\ExistsLoaderInterface' => __DIR__ . '/..' . '/twig/twig/src/Loader/ExistsLoaderInterface.php',
|
175 |
-
'Twig\\Loader\\FilesystemLoader' => __DIR__ . '/..' . '/twig/twig/src/Loader/FilesystemLoader.php',
|
176 |
-
'Twig\\Loader\\LoaderInterface' => __DIR__ . '/..' . '/twig/twig/src/Loader/LoaderInterface.php',
|
177 |
-
'Twig\\Loader\\SourceContextLoaderInterface' => __DIR__ . '/..' . '/twig/twig/src/Loader/SourceContextLoaderInterface.php',
|
178 |
-
'Twig\\Markup' => __DIR__ . '/..' . '/twig/twig/src/Markup.php',
|
179 |
-
'Twig\\NodeTraverser' => __DIR__ . '/..' . '/twig/twig/src/NodeTraverser.php',
|
180 |
-
'Twig\\NodeVisitor\\AbstractNodeVisitor' => __DIR__ . '/..' . '/twig/twig/src/NodeVisitor/AbstractNodeVisitor.php',
|
181 |
-
'Twig\\NodeVisitor\\EscaperNodeVisitor' => __DIR__ . '/..' . '/twig/twig/src/NodeVisitor/EscaperNodeVisitor.php',
|
182 |
-
'Twig\\NodeVisitor\\NodeVisitorInterface' => __DIR__ . '/..' . '/twig/twig/src/NodeVisitor/NodeVisitorInterface.php',
|
183 |
-
'Twig\\NodeVisitor\\OptimizerNodeVisitor' => __DIR__ . '/..' . '/twig/twig/src/NodeVisitor/OptimizerNodeVisitor.php',
|
184 |
-
'Twig\\NodeVisitor\\SafeAnalysisNodeVisitor' => __DIR__ . '/..' . '/twig/twig/src/NodeVisitor/SafeAnalysisNodeVisitor.php',
|
185 |
-
'Twig\\NodeVisitor\\SandboxNodeVisitor' => __DIR__ . '/..' . '/twig/twig/src/NodeVisitor/SandboxNodeVisitor.php',
|
186 |
-
'Twig\\Node\\AutoEscapeNode' => __DIR__ . '/..' . '/twig/twig/src/Node/AutoEscapeNode.php',
|
187 |
-
'Twig\\Node\\BlockNode' => __DIR__ . '/..' . '/twig/twig/src/Node/BlockNode.php',
|
188 |
-
'Twig\\Node\\BlockReferenceNode' => __DIR__ . '/..' . '/twig/twig/src/Node/BlockReferenceNode.php',
|
189 |
-
'Twig\\Node\\BodyNode' => __DIR__ . '/..' . '/twig/twig/src/Node/BodyNode.php',
|
190 |
-
'Twig\\Node\\CheckSecurityNode' => __DIR__ . '/..' . '/twig/twig/src/Node/CheckSecurityNode.php',
|
191 |
-
'Twig\\Node\\DoNode' => __DIR__ . '/..' . '/twig/twig/src/Node/DoNode.php',
|
192 |
-
'Twig\\Node\\EmbedNode' => __DIR__ . '/..' . '/twig/twig/src/Node/EmbedNode.php',
|
193 |
-
'Twig\\Node\\Expression\\AbstractExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/AbstractExpression.php',
|
194 |
-
'Twig\\Node\\Expression\\ArrayExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/ArrayExpression.php',
|
195 |
-
'Twig\\Node\\Expression\\AssignNameExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/AssignNameExpression.php',
|
196 |
-
'Twig\\Node\\Expression\\Binary\\AbstractBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/AbstractBinary.php',
|
197 |
-
'Twig\\Node\\Expression\\Binary\\AddBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/AddBinary.php',
|
198 |
-
'Twig\\Node\\Expression\\Binary\\AndBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/AndBinary.php',
|
199 |
-
'Twig\\Node\\Expression\\Binary\\BitwiseAndBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/BitwiseAndBinary.php',
|
200 |
-
'Twig\\Node\\Expression\\Binary\\BitwiseOrBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/BitwiseOrBinary.php',
|
201 |
-
'Twig\\Node\\Expression\\Binary\\BitwiseXorBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/BitwiseXorBinary.php',
|
202 |
-
'Twig\\Node\\Expression\\Binary\\ConcatBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/ConcatBinary.php',
|
203 |
-
'Twig\\Node\\Expression\\Binary\\DivBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/DivBinary.php',
|
204 |
-
'Twig\\Node\\Expression\\Binary\\EndsWithBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/EndsWithBinary.php',
|
205 |
-
'Twig\\Node\\Expression\\Binary\\EqualBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/EqualBinary.php',
|
206 |
-
'Twig\\Node\\Expression\\Binary\\FloorDivBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/FloorDivBinary.php',
|
207 |
-
'Twig\\Node\\Expression\\Binary\\GreaterBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/GreaterBinary.php',
|
208 |
-
'Twig\\Node\\Expression\\Binary\\GreaterEqualBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/GreaterEqualBinary.php',
|
209 |
-
'Twig\\Node\\Expression\\Binary\\InBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/InBinary.php',
|
210 |
-
'Twig\\Node\\Expression\\Binary\\LessBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/LessBinary.php',
|
211 |
-
'Twig\\Node\\Expression\\Binary\\LessEqualBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/LessEqualBinary.php',
|
212 |
-
'Twig\\Node\\Expression\\Binary\\MatchesBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/MatchesBinary.php',
|
213 |
-
'Twig\\Node\\Expression\\Binary\\ModBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/ModBinary.php',
|
214 |
-
'Twig\\Node\\Expression\\Binary\\MulBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/MulBinary.php',
|
215 |
-
'Twig\\Node\\Expression\\Binary\\NotEqualBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/NotEqualBinary.php',
|
216 |
-
'Twig\\Node\\Expression\\Binary\\NotInBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/NotInBinary.php',
|
217 |
-
'Twig\\Node\\Expression\\Binary\\OrBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/OrBinary.php',
|
218 |
-
'Twig\\Node\\Expression\\Binary\\PowerBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/PowerBinary.php',
|
219 |
-
'Twig\\Node\\Expression\\Binary\\RangeBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/RangeBinary.php',
|
220 |
-
'Twig\\Node\\Expression\\Binary\\StartsWithBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/StartsWithBinary.php',
|
221 |
-
'Twig\\Node\\Expression\\Binary\\SubBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/SubBinary.php',
|
222 |
-
'Twig\\Node\\Expression\\BlockReferenceExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/BlockReferenceExpression.php',
|
223 |
-
'Twig\\Node\\Expression\\CallExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/CallExpression.php',
|
224 |
-
'Twig\\Node\\Expression\\ConditionalExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/ConditionalExpression.php',
|
225 |
-
'Twig\\Node\\Expression\\ConstantExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/ConstantExpression.php',
|
226 |
-
'Twig\\Node\\Expression\\FilterExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/FilterExpression.php',
|
227 |
-
'Twig\\Node\\Expression\\Filter\\DefaultFilter' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Filter/DefaultFilter.php',
|
228 |
-
'Twig\\Node\\Expression\\FunctionExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/FunctionExpression.php',
|
229 |
-
'Twig\\Node\\Expression\\GetAttrExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/GetAttrExpression.php',
|
230 |
-
'Twig\\Node\\Expression\\MethodCallExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/MethodCallExpression.php',
|
231 |
-
'Twig\\Node\\Expression\\NameExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/NameExpression.php',
|
232 |
-
'Twig\\Node\\Expression\\NullCoalesceExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/NullCoalesceExpression.php',
|
233 |
-
'Twig\\Node\\Expression\\ParentExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/ParentExpression.php',
|
234 |
-
'Twig\\Node\\Expression\\TempNameExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/TempNameExpression.php',
|
235 |
-
'Twig\\Node\\Expression\\TestExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/TestExpression.php',
|
236 |
-
'Twig\\Node\\Expression\\Test\\ConstantTest' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Test/ConstantTest.php',
|
237 |
-
'Twig\\Node\\Expression\\Test\\DefinedTest' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Test/DefinedTest.php',
|
238 |
-
'Twig\\Node\\Expression\\Test\\DivisiblebyTest' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Test/DivisiblebyTest.php',
|
239 |
-
'Twig\\Node\\Expression\\Test\\EvenTest' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Test/EvenTest.php',
|
240 |
-
'Twig\\Node\\Expression\\Test\\NullTest' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Test/NullTest.php',
|
241 |
-
'Twig\\Node\\Expression\\Test\\OddTest' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Test/OddTest.php',
|
242 |
-
'Twig\\Node\\Expression\\Test\\SameasTest' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Test/SameasTest.php',
|
243 |
-
'Twig\\Node\\Expression\\Unary\\AbstractUnary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Unary/AbstractUnary.php',
|
244 |
-
'Twig\\Node\\Expression\\Unary\\NegUnary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Unary/NegUnary.php',
|
245 |
-
'Twig\\Node\\Expression\\Unary\\NotUnary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Unary/NotUnary.php',
|
246 |
-
'Twig\\Node\\Expression\\Unary\\PosUnary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Unary/PosUnary.php',
|
247 |
-
'Twig\\Node\\FlushNode' => __DIR__ . '/..' . '/twig/twig/src/Node/FlushNode.php',
|
248 |
-
'Twig\\Node\\ForLoopNode' => __DIR__ . '/..' . '/twig/twig/src/Node/ForLoopNode.php',
|
249 |
-
'Twig\\Node\\ForNode' => __DIR__ . '/..' . '/twig/twig/src/Node/ForNode.php',
|
250 |
-
'Twig\\Node\\IfNode' => __DIR__ . '/..' . '/twig/twig/src/Node/IfNode.php',
|
251 |
-
'Twig\\Node\\ImportNode' => __DIR__ . '/..' . '/twig/twig/src/Node/ImportNode.php',
|
252 |
-
'Twig\\Node\\IncludeNode' => __DIR__ . '/..' . '/twig/twig/src/Node/IncludeNode.php',
|
253 |
-
'Twig\\Node\\MacroNode' => __DIR__ . '/..' . '/twig/twig/src/Node/MacroNode.php',
|
254 |
-
'Twig\\Node\\ModuleNode' => __DIR__ . '/..' . '/twig/twig/src/Node/ModuleNode.php',
|
255 |
-
'Twig\\Node\\Node' => __DIR__ . '/..' . '/twig/twig/src/Node/Node.php',
|
256 |
-
'Twig\\Node\\NodeCaptureInterface' => __DIR__ . '/..' . '/twig/twig/src/Node/NodeCaptureInterface.php',
|
257 |
-
'Twig\\Node\\NodeOutputInterface' => __DIR__ . '/..' . '/twig/twig/src/Node/NodeOutputInterface.php',
|
258 |
-
'Twig\\Node\\PrintNode' => __DIR__ . '/..' . '/twig/twig/src/Node/PrintNode.php',
|
259 |
-
'Twig\\Node\\SandboxNode' => __DIR__ . '/..' . '/twig/twig/src/Node/SandboxNode.php',
|
260 |
-
'Twig\\Node\\SandboxedPrintNode' => __DIR__ . '/..' . '/twig/twig/src/Node/SandboxedPrintNode.php',
|
261 |
-
'Twig\\Node\\SetNode' => __DIR__ . '/..' . '/twig/twig/src/Node/SetNode.php',
|
262 |
-
'Twig\\Node\\SetTempNode' => __DIR__ . '/..' . '/twig/twig/src/Node/SetTempNode.php',
|
263 |
-
'Twig\\Node\\SpacelessNode' => __DIR__ . '/..' . '/twig/twig/src/Node/SpacelessNode.php',
|
264 |
-
'Twig\\Node\\TextNode' => __DIR__ . '/..' . '/twig/twig/src/Node/TextNode.php',
|
265 |
-
'Twig\\Node\\WithNode' => __DIR__ . '/..' . '/twig/twig/src/Node/WithNode.php',
|
266 |
-
'Twig\\Parser' => __DIR__ . '/..' . '/twig/twig/src/Parser.php',
|
267 |
-
'Twig\\Profiler\\Dumper\\BaseDumper' => __DIR__ . '/..' . '/twig/twig/src/Profiler/Dumper/BaseDumper.php',
|
268 |
-
'Twig\\Profiler\\Dumper\\BlackfireDumper' => __DIR__ . '/..' . '/twig/twig/src/Profiler/Dumper/BlackfireDumper.php',
|
269 |
-
'Twig\\Profiler\\Dumper\\HtmlDumper' => __DIR__ . '/..' . '/twig/twig/src/Profiler/Dumper/HtmlDumper.php',
|
270 |
-
'Twig\\Profiler\\Dumper\\TextDumper' => __DIR__ . '/..' . '/twig/twig/src/Profiler/Dumper/TextDumper.php',
|
271 |
-
'Twig\\Profiler\\NodeVisitor\\ProfilerNodeVisitor' => __DIR__ . '/..' . '/twig/twig/src/Profiler/NodeVisitor/ProfilerNodeVisitor.php',
|
272 |
-
'Twig\\Profiler\\Node\\EnterProfileNode' => __DIR__ . '/..' . '/twig/twig/src/Profiler/Node/EnterProfileNode.php',
|
273 |
-
'Twig\\Profiler\\Node\\LeaveProfileNode' => __DIR__ . '/..' . '/twig/twig/src/Profiler/Node/LeaveProfileNode.php',
|
274 |
-
'Twig\\Profiler\\Profile' => __DIR__ . '/..' . '/twig/twig/src/Profiler/Profile.php',
|
275 |
-
'Twig\\RuntimeLoader\\ContainerRuntimeLoader' => __DIR__ . '/..' . '/twig/twig/src/RuntimeLoader/ContainerRuntimeLoader.php',
|
276 |
-
'Twig\\RuntimeLoader\\FactoryRuntimeLoader' => __DIR__ . '/..' . '/twig/twig/src/RuntimeLoader/FactoryRuntimeLoader.php',
|
277 |
-
'Twig\\RuntimeLoader\\RuntimeLoaderInterface' => __DIR__ . '/..' . '/twig/twig/src/RuntimeLoader/RuntimeLoaderInterface.php',
|
278 |
-
'Twig\\Sandbox\\SecurityError' => __DIR__ . '/..' . '/twig/twig/src/Sandbox/SecurityError.php',
|
279 |
-
'Twig\\Sandbox\\SecurityNotAllowedFilterError' => __DIR__ . '/..' . '/twig/twig/src/Sandbox/SecurityNotAllowedFilterError.php',
|
280 |
-
'Twig\\Sandbox\\SecurityNotAllowedFunctionError' => __DIR__ . '/..' . '/twig/twig/src/Sandbox/SecurityNotAllowedFunctionError.php',
|
281 |
-
'Twig\\Sandbox\\SecurityNotAllowedMethodError' => __DIR__ . '/..' . '/twig/twig/src/Sandbox/SecurityNotAllowedMethodError.php',
|
282 |
-
'Twig\\Sandbox\\SecurityNotAllowedPropertyError' => __DIR__ . '/..' . '/twig/twig/src/Sandbox/SecurityNotAllowedPropertyError.php',
|
283 |
-
'Twig\\Sandbox\\SecurityNotAllowedTagError' => __DIR__ . '/..' . '/twig/twig/src/Sandbox/SecurityNotAllowedTagError.php',
|
284 |
-
'Twig\\Sandbox\\SecurityPolicy' => __DIR__ . '/..' . '/twig/twig/src/Sandbox/SecurityPolicy.php',
|
285 |
-
'Twig\\Sandbox\\SecurityPolicyInterface' => __DIR__ . '/..' . '/twig/twig/src/Sandbox/SecurityPolicyInterface.php',
|
286 |
-
'Twig\\Source' => __DIR__ . '/..' . '/twig/twig/src/Source.php',
|
287 |
-
'Twig\\Template' => __DIR__ . '/..' . '/twig/twig/src/Template.php',
|
288 |
-
'Twig\\TemplateWrapper' => __DIR__ . '/..' . '/twig/twig/src/TemplateWrapper.php',
|
289 |
-
'Twig\\Test\\IntegrationTestCase' => __DIR__ . '/..' . '/twig/twig/src/Test/IntegrationTestCase.php',
|
290 |
-
'Twig\\Test\\NodeTestCase' => __DIR__ . '/..' . '/twig/twig/src/Test/NodeTestCase.php',
|
291 |
-
'Twig\\Token' => __DIR__ . '/..' . '/twig/twig/src/Token.php',
|
292 |
-
'Twig\\TokenParser\\AbstractTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/AbstractTokenParser.php',
|
293 |
-
'Twig\\TokenParser\\AutoEscapeTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/AutoEscapeTokenParser.php',
|
294 |
-
'Twig\\TokenParser\\BlockTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/BlockTokenParser.php',
|
295 |
-
'Twig\\TokenParser\\DoTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/DoTokenParser.php',
|
296 |
-
'Twig\\TokenParser\\EmbedTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/EmbedTokenParser.php',
|
297 |
-
'Twig\\TokenParser\\ExtendsTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/ExtendsTokenParser.php',
|
298 |
-
'Twig\\TokenParser\\FilterTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/FilterTokenParser.php',
|
299 |
-
'Twig\\TokenParser\\FlushTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/FlushTokenParser.php',
|
300 |
-
'Twig\\TokenParser\\ForTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/ForTokenParser.php',
|
301 |
-
'Twig\\TokenParser\\FromTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/FromTokenParser.php',
|
302 |
-
'Twig\\TokenParser\\IfTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/IfTokenParser.php',
|
303 |
-
'Twig\\TokenParser\\ImportTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/ImportTokenParser.php',
|
304 |
-
'Twig\\TokenParser\\IncludeTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/IncludeTokenParser.php',
|
305 |
-
'Twig\\TokenParser\\MacroTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/MacroTokenParser.php',
|
306 |
-
'Twig\\TokenParser\\SandboxTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/SandboxTokenParser.php',
|
307 |
-
'Twig\\TokenParser\\SetTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/SetTokenParser.php',
|
308 |
-
'Twig\\TokenParser\\SpacelessTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/SpacelessTokenParser.php',
|
309 |
-
'Twig\\TokenParser\\TokenParserInterface' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/TokenParserInterface.php',
|
310 |
-
'Twig\\TokenParser\\UseTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/UseTokenParser.php',
|
311 |
-
'Twig\\TokenParser\\WithTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/WithTokenParser.php',
|
312 |
-
'Twig\\TokenStream' => __DIR__ . '/..' . '/twig/twig/src/TokenStream.php',
|
313 |
-
'Twig\\TwigFilter' => __DIR__ . '/..' . '/twig/twig/src/TwigFilter.php',
|
314 |
-
'Twig\\TwigFunction' => __DIR__ . '/..' . '/twig/twig/src/TwigFunction.php',
|
315 |
-
'Twig\\TwigTest' => __DIR__ . '/..' . '/twig/twig/src/TwigTest.php',
|
316 |
-
'Twig\\Util\\DeprecationCollector' => __DIR__ . '/..' . '/twig/twig/src/Util/DeprecationCollector.php',
|
317 |
-
'Twig\\Util\\TemplateDirIterator' => __DIR__ . '/..' . '/twig/twig/src/Util/TemplateDirIterator.php',
|
318 |
-
'Twig_Autoloader' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Autoloader.php',
|
319 |
-
'Twig_BaseNodeVisitor' => __DIR__ . '/..' . '/twig/twig/lib/Twig/BaseNodeVisitor.php',
|
320 |
-
'Twig_CacheInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/CacheInterface.php',
|
321 |
-
'Twig_Cache_Filesystem' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Cache/Filesystem.php',
|
322 |
-
'Twig_Cache_Null' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Cache/Null.php',
|
323 |
-
'Twig_Compiler' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Compiler.php',
|
324 |
-
'Twig_CompilerInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/CompilerInterface.php',
|
325 |
-
'Twig_ContainerRuntimeLoader' => __DIR__ . '/..' . '/twig/twig/lib/Twig/ContainerRuntimeLoader.php',
|
326 |
-
'Twig_Environment' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Environment.php',
|
327 |
-
'Twig_Error' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Error.php',
|
328 |
-
'Twig_Error_Loader' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Error/Loader.php',
|
329 |
-
'Twig_Error_Runtime' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Error/Runtime.php',
|
330 |
-
'Twig_Error_Syntax' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Error/Syntax.php',
|
331 |
-
'Twig_ExistsLoaderInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/ExistsLoaderInterface.php',
|
332 |
-
'Twig_ExpressionParser' => __DIR__ . '/..' . '/twig/twig/lib/Twig/ExpressionParser.php',
|
333 |
-
'Twig_Extension' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Extension.php',
|
334 |
-
'Twig_ExtensionInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/ExtensionInterface.php',
|
335 |
-
'Twig_Extension_Core' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Extension/Core.php',
|
336 |
-
'Twig_Extension_Debug' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Extension/Debug.php',
|
337 |
-
'Twig_Extension_Escaper' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Extension/Escaper.php',
|
338 |
-
'Twig_Extension_GlobalsInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Extension/GlobalsInterface.php',
|
339 |
-
'Twig_Extension_InitRuntimeInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Extension/InitRuntimeInterface.php',
|
340 |
-
'Twig_Extension_Optimizer' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Extension/Optimizer.php',
|
341 |
-
'Twig_Extension_Profiler' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Extension/Profiler.php',
|
342 |
-
'Twig_Extension_Sandbox' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Extension/Sandbox.php',
|
343 |
-
'Twig_Extension_Staging' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Extension/Staging.php',
|
344 |
-
'Twig_Extension_StringLoader' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Extension/StringLoader.php',
|
345 |
-
'Twig_FactoryRuntimeLoader' => __DIR__ . '/..' . '/twig/twig/lib/Twig/FactoryRuntimeLoader.php',
|
346 |
-
'Twig_FileExtensionEscapingStrategy' => __DIR__ . '/..' . '/twig/twig/lib/Twig/FileExtensionEscapingStrategy.php',
|
347 |
-
'Twig_Filter' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Filter.php',
|
348 |
-
'Twig_FilterCallableInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/FilterCallableInterface.php',
|
349 |
-
'Twig_FilterInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/FilterInterface.php',
|
350 |
-
'Twig_Filter_Function' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Filter/Function.php',
|
351 |
-
'Twig_Filter_Method' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Filter/Method.php',
|
352 |
-
'Twig_Filter_Node' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Filter/Node.php',
|
353 |
-
'Twig_Function' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Function.php',
|
354 |
-
'Twig_FunctionCallableInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/FunctionCallableInterface.php',
|
355 |
-
'Twig_FunctionInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/FunctionInterface.php',
|
356 |
-
'Twig_Function_Function' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Function/Function.php',
|
357 |
-
'Twig_Function_Method' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Function/Method.php',
|
358 |
-
'Twig_Function_Node' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Function/Node.php',
|
359 |
-
'Twig_Lexer' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Lexer.php',
|
360 |
-
'Twig_LexerInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/LexerInterface.php',
|
361 |
-
'Twig_LoaderInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/LoaderInterface.php',
|
362 |
-
'Twig_Loader_Array' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Loader/Array.php',
|
363 |
-
'Twig_Loader_Chain' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Loader/Chain.php',
|
364 |
-
'Twig_Loader_Filesystem' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Loader/Filesystem.php',
|
365 |
-
'Twig_Loader_String' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Loader/String.php',
|
366 |
-
'Twig_Markup' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Markup.php',
|
367 |
-
'Twig_Node' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node.php',
|
368 |
-
'Twig_NodeCaptureInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/NodeCaptureInterface.php',
|
369 |
-
'Twig_NodeInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/NodeInterface.php',
|
370 |
-
'Twig_NodeOutputInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/NodeOutputInterface.php',
|
371 |
-
'Twig_NodeTraverser' => __DIR__ . '/..' . '/twig/twig/lib/Twig/NodeTraverser.php',
|
372 |
-
'Twig_NodeVisitorInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/NodeVisitorInterface.php',
|
373 |
-
'Twig_NodeVisitor_Escaper' => __DIR__ . '/..' . '/twig/twig/lib/Twig/NodeVisitor/Escaper.php',
|
374 |
-
'Twig_NodeVisitor_Optimizer' => __DIR__ . '/..' . '/twig/twig/lib/Twig/NodeVisitor/Optimizer.php',
|
375 |
-
'Twig_NodeVisitor_SafeAnalysis' => __DIR__ . '/..' . '/twig/twig/lib/Twig/NodeVisitor/SafeAnalysis.php',
|
376 |
-
'Twig_NodeVisitor_Sandbox' => __DIR__ . '/..' . '/twig/twig/lib/Twig/NodeVisitor/Sandbox.php',
|
377 |
-
'Twig_Node_AutoEscape' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/AutoEscape.php',
|
378 |
-
'Twig_Node_Block' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Block.php',
|
379 |
-
'Twig_Node_BlockReference' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/BlockReference.php',
|
380 |
-
'Twig_Node_Body' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Body.php',
|
381 |
-
'Twig_Node_CheckSecurity' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/CheckSecurity.php',
|
382 |
-
'Twig_Node_Do' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Do.php',
|
383 |
-
'Twig_Node_Embed' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Embed.php',
|
384 |
-
'Twig_Node_Expression' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression.php',
|
385 |
-
'Twig_Node_Expression_Array' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Array.php',
|
386 |
-
'Twig_Node_Expression_AssignName' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/AssignName.php',
|
387 |
-
'Twig_Node_Expression_Binary' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary.php',
|
388 |
-
'Twig_Node_Expression_Binary_Add' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/Add.php',
|
389 |
-
'Twig_Node_Expression_Binary_And' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/And.php',
|
390 |
-
'Twig_Node_Expression_Binary_BitwiseAnd' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseAnd.php',
|
391 |
-
'Twig_Node_Expression_Binary_BitwiseOr' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseOr.php',
|
392 |
-
'Twig_Node_Expression_Binary_BitwiseXor' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseXor.php',
|
393 |
-
'Twig_Node_Expression_Binary_Concat' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/Concat.php',
|
394 |
-
'Twig_Node_Expression_Binary_Div' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/Div.php',
|
395 |
-
'Twig_Node_Expression_Binary_EndsWith' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/EndsWith.php',
|
396 |
-
'Twig_Node_Expression_Binary_Equal' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/Equal.php',
|
397 |
-
'Twig_Node_Expression_Binary_FloorDiv' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/FloorDiv.php',
|
398 |
-
'Twig_Node_Expression_Binary_Greater' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/Greater.php',
|
399 |
-
'Twig_Node_Expression_Binary_GreaterEqual' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/GreaterEqual.php',
|
400 |
-
'Twig_Node_Expression_Binary_In' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/In.php',
|
401 |
-
'Twig_Node_Expression_Binary_Less' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/Less.php',
|
402 |
-
'Twig_Node_Expression_Binary_LessEqual' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/LessEqual.php',
|
403 |
-
'Twig_Node_Expression_Binary_Matches' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/Matches.php',
|
404 |
-
'Twig_Node_Expression_Binary_Mod' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/Mod.php',
|
405 |
-
'Twig_Node_Expression_Binary_Mul' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/Mul.php',
|
406 |
-
'Twig_Node_Expression_Binary_NotEqual' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/NotEqual.php',
|
407 |
-
'Twig_Node_Expression_Binary_NotIn' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/NotIn.php',
|
408 |
-
'Twig_Node_Expression_Binary_Or' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/Or.php',
|
409 |
-
'Twig_Node_Expression_Binary_Power' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/Power.php',
|
410 |
-
'Twig_Node_Expression_Binary_Range' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/Range.php',
|
411 |
-
'Twig_Node_Expression_Binary_StartsWith' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/StartsWith.php',
|
412 |
-
'Twig_Node_Expression_Binary_Sub' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Binary/Sub.php',
|
413 |
-
'Twig_Node_Expression_BlockReference' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/BlockReference.php',
|
414 |
-
'Twig_Node_Expression_Call' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Call.php',
|
415 |
-
'Twig_Node_Expression_Conditional' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Conditional.php',
|
416 |
-
'Twig_Node_Expression_Constant' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Constant.php',
|
417 |
-
'Twig_Node_Expression_ExtensionReference' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/ExtensionReference.php',
|
418 |
-
'Twig_Node_Expression_Filter' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Filter.php',
|
419 |
-
'Twig_Node_Expression_Filter_Default' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Filter/Default.php',
|
420 |
-
'Twig_Node_Expression_Function' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Function.php',
|
421 |
-
'Twig_Node_Expression_GetAttr' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/GetAttr.php',
|
422 |
-
'Twig_Node_Expression_MethodCall' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/MethodCall.php',
|
423 |
-
'Twig_Node_Expression_Name' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Name.php',
|
424 |
-
'Twig_Node_Expression_NullCoalesce' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/NullCoalesce.php',
|
425 |
-
'Twig_Node_Expression_Parent' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Parent.php',
|
426 |
-
'Twig_Node_Expression_TempName' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/TempName.php',
|
427 |
-
'Twig_Node_Expression_Test' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Test.php',
|
428 |
-
'Twig_Node_Expression_Test_Constant' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Test/Constant.php',
|
429 |
-
'Twig_Node_Expression_Test_Defined' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Test/Defined.php',
|
430 |
-
'Twig_Node_Expression_Test_Divisibleby' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Test/Divisibleby.php',
|
431 |
-
'Twig_Node_Expression_Test_Even' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Test/Even.php',
|
432 |
-
'Twig_Node_Expression_Test_Null' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Test/Null.php',
|
433 |
-
'Twig_Node_Expression_Test_Odd' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Test/Odd.php',
|
434 |
-
'Twig_Node_Expression_Test_Sameas' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Test/Sameas.php',
|
435 |
-
'Twig_Node_Expression_Unary' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Unary.php',
|
436 |
-
'Twig_Node_Expression_Unary_Neg' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Unary/Neg.php',
|
437 |
-
'Twig_Node_Expression_Unary_Not' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Unary/Not.php',
|
438 |
-
'Twig_Node_Expression_Unary_Pos' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Expression/Unary/Pos.php',
|
439 |
-
'Twig_Node_Flush' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Flush.php',
|
440 |
-
'Twig_Node_For' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/For.php',
|
441 |
-
'Twig_Node_ForLoop' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/ForLoop.php',
|
442 |
-
'Twig_Node_If' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/If.php',
|
443 |
-
'Twig_Node_Import' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Import.php',
|
444 |
-
'Twig_Node_Include' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Include.php',
|
445 |
-
'Twig_Node_Macro' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Macro.php',
|
446 |
-
'Twig_Node_Module' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Module.php',
|
447 |
-
'Twig_Node_Print' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Print.php',
|
448 |
-
'Twig_Node_Sandbox' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Sandbox.php',
|
449 |
-
'Twig_Node_SandboxedPrint' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/SandboxedPrint.php',
|
450 |
-
'Twig_Node_Set' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Set.php',
|
451 |
-
'Twig_Node_SetTemp' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/SetTemp.php',
|
452 |
-
'Twig_Node_Spaceless' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Spaceless.php',
|
453 |
-
'Twig_Node_Text' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/Text.php',
|
454 |
-
'Twig_Node_With' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Node/With.php',
|
455 |
-
'Twig_Parser' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Parser.php',
|
456 |
-
'Twig_ParserInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/ParserInterface.php',
|
457 |
-
'Twig_Profiler_Dumper_Base' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Profiler/Dumper/Base.php',
|
458 |
-
'Twig_Profiler_Dumper_Blackfire' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Profiler/Dumper/Blackfire.php',
|
459 |
-
'Twig_Profiler_Dumper_Html' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Profiler/Dumper/Html.php',
|
460 |
-
'Twig_Profiler_Dumper_Text' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Profiler/Dumper/Text.php',
|
461 |
-
'Twig_Profiler_NodeVisitor_Profiler' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Profiler/NodeVisitor/Profiler.php',
|
462 |
-
'Twig_Profiler_Node_EnterProfile' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Profiler/Node/EnterProfile.php',
|
463 |
-
'Twig_Profiler_Node_LeaveProfile' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Profiler/Node/LeaveProfile.php',
|
464 |
-
'Twig_Profiler_Profile' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Profiler/Profile.php',
|
465 |
-
'Twig_RuntimeLoaderInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/RuntimeLoaderInterface.php',
|
466 |
-
'Twig_Sandbox_SecurityError' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Sandbox/SecurityError.php',
|
467 |
-
'Twig_Sandbox_SecurityNotAllowedFilterError' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedFilterError.php',
|
468 |
-
'Twig_Sandbox_SecurityNotAllowedFunctionError' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedFunctionError.php',
|
469 |
-
'Twig_Sandbox_SecurityNotAllowedMethodError' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedMethodError.php',
|
470 |
-
'Twig_Sandbox_SecurityNotAllowedPropertyError' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedPropertyError.php',
|
471 |
-
'Twig_Sandbox_SecurityNotAllowedTagError' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedTagError.php',
|
472 |
-
'Twig_Sandbox_SecurityPolicy' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Sandbox/SecurityPolicy.php',
|
473 |
-
'Twig_Sandbox_SecurityPolicyInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Sandbox/SecurityPolicyInterface.php',
|
474 |
-
'Twig_SimpleFilter' => __DIR__ . '/..' . '/twig/twig/lib/Twig/SimpleFilter.php',
|
475 |
-
'Twig_SimpleFunction' => __DIR__ . '/..' . '/twig/twig/lib/Twig/SimpleFunction.php',
|
476 |
-
'Twig_SimpleTest' => __DIR__ . '/..' . '/twig/twig/lib/Twig/SimpleTest.php',
|
477 |
-
'Twig_Source' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Source.php',
|
478 |
-
'Twig_SourceContextLoaderInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/SourceContextLoaderInterface.php',
|
479 |
-
'Twig_Template' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Template.php',
|
480 |
-
'Twig_TemplateInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TemplateInterface.php',
|
481 |
-
'Twig_TemplateWrapper' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TemplateWrapper.php',
|
482 |
-
'Twig_Test' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Test.php',
|
483 |
-
'Twig_TestCallableInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TestCallableInterface.php',
|
484 |
-
'Twig_TestInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TestInterface.php',
|
485 |
-
'Twig_Test_Function' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Test/Function.php',
|
486 |
-
'Twig_Test_IntegrationTestCase' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Test/IntegrationTestCase.php',
|
487 |
-
'Twig_Test_Method' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Test/Method.php',
|
488 |
-
'Twig_Test_Node' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Test/Node.php',
|
489 |
-
'Twig_Test_NodeTestCase' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Test/NodeTestCase.php',
|
490 |
-
'Twig_Token' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Token.php',
|
491 |
-
'Twig_TokenParser' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser.php',
|
492 |
-
'Twig_TokenParserBroker' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParserBroker.php',
|
493 |
-
'Twig_TokenParserBrokerInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParserBrokerInterface.php',
|
494 |
-
'Twig_TokenParserInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParserInterface.php',
|
495 |
-
'Twig_TokenParser_AutoEscape' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser/AutoEscape.php',
|
496 |
-
'Twig_TokenParser_Block' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser/Block.php',
|
497 |
-
'Twig_TokenParser_Do' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser/Do.php',
|
498 |
-
'Twig_TokenParser_Embed' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser/Embed.php',
|
499 |
-
'Twig_TokenParser_Extends' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser/Extends.php',
|
500 |
-
'Twig_TokenParser_Filter' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser/Filter.php',
|
501 |
-
'Twig_TokenParser_Flush' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser/Flush.php',
|
502 |
-
'Twig_TokenParser_For' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser/For.php',
|
503 |
-
'Twig_TokenParser_From' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser/From.php',
|
504 |
-
'Twig_TokenParser_If' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser/If.php',
|
505 |
-
'Twig_TokenParser_Import' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser/Import.php',
|
506 |
-
'Twig_TokenParser_Include' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser/Include.php',
|
507 |
-
'Twig_TokenParser_Macro' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser/Macro.php',
|
508 |
-
'Twig_TokenParser_Sandbox' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser/Sandbox.php',
|
509 |
-
'Twig_TokenParser_Set' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser/Set.php',
|
510 |
-
'Twig_TokenParser_Spaceless' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser/Spaceless.php',
|
511 |
-
'Twig_TokenParser_Use' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser/Use.php',
|
512 |
-
'Twig_TokenParser_With' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenParser/With.php',
|
513 |
-
'Twig_TokenStream' => __DIR__ . '/..' . '/twig/twig/lib/Twig/TokenStream.php',
|
514 |
-
'Twig_Util_DeprecationCollector' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Util/DeprecationCollector.php',
|
515 |
-
'Twig_Util_TemplateDirIterator' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Util/TemplateDirIterator.php',
|
516 |
-
'ZxcvbnPhp\\Matcher' => __DIR__ . '/..' . '/bjeavons/zxcvbn-php/src/Matcher.php',
|
517 |
-
'ZxcvbnPhp\\Matchers\\Bruteforce' => __DIR__ . '/..' . '/bjeavons/zxcvbn-php/src/Matchers/Bruteforce.php',
|
518 |
-
'ZxcvbnPhp\\Matchers\\DateMatch' => __DIR__ . '/..' . '/bjeavons/zxcvbn-php/src/Matchers/DateMatch.php',
|
519 |
-
'ZxcvbnPhp\\Matchers\\DictionaryMatch' => __DIR__ . '/..' . '/bjeavons/zxcvbn-php/src/Matchers/DictionaryMatch.php',
|
520 |
-
'ZxcvbnPhp\\Matchers\\DigitMatch' => __DIR__ . '/..' . '/bjeavons/zxcvbn-php/src/Matchers/DigitMatch.php',
|
521 |
-
'ZxcvbnPhp\\Matchers\\L33tMatch' => __DIR__ . '/..' . '/bjeavons/zxcvbn-php/src/Matchers/L33tMatch.php',
|
522 |
-
'ZxcvbnPhp\\Matchers\\Match' => __DIR__ . '/..' . '/bjeavons/zxcvbn-php/src/Matchers/Match.php',
|
523 |
-
'ZxcvbnPhp\\Matchers\\MatchInterface' => __DIR__ . '/..' . '/bjeavons/zxcvbn-php/src/Matchers/MatchInterface.php',
|
524 |
-
'ZxcvbnPhp\\Matchers\\RepeatMatch' => __DIR__ . '/..' . '/bjeavons/zxcvbn-php/src/Matchers/RepeatMatch.php',
|
525 |
-
'ZxcvbnPhp\\Matchers\\SequenceMatch' => __DIR__ . '/..' . '/bjeavons/zxcvbn-php/src/Matchers/SequenceMatch.php',
|
526 |
-
'ZxcvbnPhp\\Matchers\\SpatialMatch' => __DIR__ . '/..' . '/bjeavons/zxcvbn-php/src/Matchers/SpatialMatch.php',
|
527 |
-
'ZxcvbnPhp\\Matchers\\YearMatch' => __DIR__ . '/..' . '/bjeavons/zxcvbn-php/src/Matchers/YearMatch.php',
|
528 |
-
'ZxcvbnPhp\\Scorer' => __DIR__ . '/..' . '/bjeavons/zxcvbn-php/src/Scorer.php',
|
529 |
-
'ZxcvbnPhp\\ScorerInterface' => __DIR__ . '/..' . '/bjeavons/zxcvbn-php/src/ScorerInterface.php',
|
530 |
-
'ZxcvbnPhp\\Searcher' => __DIR__ . '/..' . '/bjeavons/zxcvbn-php/src/Searcher.php',
|
531 |
-
'ZxcvbnPhp\\Zxcvbn' => __DIR__ . '/..' . '/bjeavons/zxcvbn-php/src/Zxcvbn.php',
|
532 |
-
);
|
533 |
-
|
534 |
public static function getInitializer(ClassLoader $loader)
|
535 |
{
|
536 |
return \Closure::bind(function () use ($loader) {
|
537 |
$loader->prefixLengthsPsr4 = ComposerStaticInit18a31866e67f0a0bfffdc031786ecae1::$prefixLengthsPsr4;
|
538 |
$loader->prefixDirsPsr4 = ComposerStaticInit18a31866e67f0a0bfffdc031786ecae1::$prefixDirsPsr4;
|
539 |
$loader->prefixesPsr0 = ComposerStaticInit18a31866e67f0a0bfffdc031786ecae1::$prefixesPsr0;
|
540 |
-
$loader->classMap = ComposerStaticInit18a31866e67f0a0bfffdc031786ecae1::$classMap;
|
541 |
|
542 |
}, null, ClassLoader::class);
|
543 |
}
|
71 |
),
|
72 |
);
|
73 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
74 |
public static function getInitializer(ClassLoader $loader)
|
75 |
{
|
76 |
return \Closure::bind(function () use ($loader) {
|
77 |
$loader->prefixLengthsPsr4 = ComposerStaticInit18a31866e67f0a0bfffdc031786ecae1::$prefixLengthsPsr4;
|
78 |
$loader->prefixDirsPsr4 = ComposerStaticInit18a31866e67f0a0bfffdc031786ecae1::$prefixDirsPsr4;
|
79 |
$loader->prefixesPsr0 = ComposerStaticInit18a31866e67f0a0bfffdc031786ecae1::$prefixesPsr0;
|
|
|
80 |
|
81 |
}, null, ClassLoader::class);
|
82 |
}
|
src/common/lib/vendor/composer/installed.json
CHANGED
@@ -143,100 +143,30 @@
|
|
143 |
"shim"
|
144 |
]
|
145 |
},
|
146 |
-
{
|
147 |
-
"name": "symfony/translation",
|
148 |
-
"version": "v3.4.4",
|
149 |
-
"version_normalized": "3.4.4.0",
|
150 |
-
"source": {
|
151 |
-
"type": "git",
|
152 |
-
"url": "https://github.com/symfony/translation.git",
|
153 |
-
"reference": "10b32cf0eae28b9b39fe26c456c42b19854c4b84"
|
154 |
-
},
|
155 |
-
"dist": {
|
156 |
-
"type": "zip",
|
157 |
-
"url": "https://api.github.com/repos/symfony/translation/zipball/10b32cf0eae28b9b39fe26c456c42b19854c4b84",
|
158 |
-
"reference": "10b32cf0eae28b9b39fe26c456c42b19854c4b84",
|
159 |
-
"shasum": ""
|
160 |
-
},
|
161 |
-
"require": {
|
162 |
-
"php": "^5.5.9|>=7.0.8",
|
163 |
-
"symfony/polyfill-mbstring": "~1.0"
|
164 |
-
},
|
165 |
-
"conflict": {
|
166 |
-
"symfony/config": "<2.8",
|
167 |
-
"symfony/dependency-injection": "<3.4",
|
168 |
-
"symfony/yaml": "<3.4"
|
169 |
-
},
|
170 |
-
"require-dev": {
|
171 |
-
"psr/log": "~1.0",
|
172 |
-
"symfony/config": "~2.8|~3.0|~4.0",
|
173 |
-
"symfony/dependency-injection": "~3.4|~4.0",
|
174 |
-
"symfony/finder": "~2.8|~3.0|~4.0",
|
175 |
-
"symfony/intl": "^2.8.18|^3.2.5|~4.0",
|
176 |
-
"symfony/yaml": "~3.4|~4.0"
|
177 |
-
},
|
178 |
-
"suggest": {
|
179 |
-
"psr/log": "To use logging capability in translator",
|
180 |
-
"symfony/config": "",
|
181 |
-
"symfony/yaml": ""
|
182 |
-
},
|
183 |
-
"time": "2018-01-18T22:16:57+00:00",
|
184 |
-
"type": "library",
|
185 |
-
"extra": {
|
186 |
-
"branch-alias": {
|
187 |
-
"dev-master": "3.4-dev"
|
188 |
-
}
|
189 |
-
},
|
190 |
-
"installation-source": "dist",
|
191 |
-
"autoload": {
|
192 |
-
"psr-4": {
|
193 |
-
"Symfony\\Component\\Translation\\": ""
|
194 |
-
},
|
195 |
-
"exclude-from-classmap": [
|
196 |
-
"/Tests/"
|
197 |
-
]
|
198 |
-
},
|
199 |
-
"notification-url": "https://packagist.org/downloads/",
|
200 |
-
"license": [
|
201 |
-
"MIT"
|
202 |
-
],
|
203 |
-
"authors": [
|
204 |
-
{
|
205 |
-
"name": "Fabien Potencier",
|
206 |
-
"email": "fabien@symfony.com"
|
207 |
-
},
|
208 |
-
{
|
209 |
-
"name": "Symfony Community",
|
210 |
-
"homepage": "https://symfony.com/contributors"
|
211 |
-
}
|
212 |
-
],
|
213 |
-
"description": "Symfony Translation Component",
|
214 |
-
"homepage": "https://symfony.com"
|
215 |
-
},
|
216 |
{
|
217 |
"name": "nesbot/carbon",
|
218 |
-
"version": "1.
|
219 |
-
"version_normalized": "1.
|
220 |
"source": {
|
221 |
"type": "git",
|
222 |
"url": "https://github.com/briannesbitt/Carbon.git",
|
223 |
-
"reference": "
|
224 |
},
|
225 |
"dist": {
|
226 |
"type": "zip",
|
227 |
-
"url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/
|
228 |
-
"reference": "
|
229 |
"shasum": ""
|
230 |
},
|
231 |
"require": {
|
232 |
-
"php": ">=5.3.
|
233 |
-
"symfony/translation": "~2.6 || ~3.0"
|
234 |
},
|
235 |
"require-dev": {
|
236 |
"friendsofphp/php-cs-fixer": "~2",
|
237 |
-
"phpunit/phpunit": "
|
238 |
},
|
239 |
-
"time": "
|
240 |
"type": "library",
|
241 |
"extra": {
|
242 |
"branch-alias": {
|
@@ -270,17 +200,17 @@
|
|
270 |
},
|
271 |
{
|
272 |
"name": "twig/twig",
|
273 |
-
"version": "v1.35.
|
274 |
-
"version_normalized": "1.35.
|
275 |
"source": {
|
276 |
"type": "git",
|
277 |
"url": "https://github.com/twigphp/Twig.git",
|
278 |
-
"reference": "
|
279 |
},
|
280 |
"dist": {
|
281 |
"type": "zip",
|
282 |
-
"url": "https://api.github.com/repos/twigphp/Twig/zipball/
|
283 |
-
"reference": "
|
284 |
"shasum": ""
|
285 |
},
|
286 |
"require": {
|
@@ -291,7 +221,7 @@
|
|
291 |
"symfony/debug": "~2.7",
|
292 |
"symfony/phpunit-bridge": "~3.3@dev"
|
293 |
},
|
294 |
-
"time": "
|
295 |
"type": "library",
|
296 |
"extra": {
|
297 |
"branch-alias": {
|
@@ -334,5 +264,71 @@
|
|
334 |
"keywords": [
|
335 |
"templating"
|
336 |
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
337 |
}
|
338 |
]
|
143 |
"shim"
|
144 |
]
|
145 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
146 |
{
|
147 |
"name": "nesbot/carbon",
|
148 |
+
"version": "1.24.2",
|
149 |
+
"version_normalized": "1.24.2.0",
|
150 |
"source": {
|
151 |
"type": "git",
|
152 |
"url": "https://github.com/briannesbitt/Carbon.git",
|
153 |
+
"reference": "bba6c6e410c6b4317e37a9474aeaa753808c3875"
|
154 |
},
|
155 |
"dist": {
|
156 |
"type": "zip",
|
157 |
+
"url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/bba6c6e410c6b4317e37a9474aeaa753808c3875",
|
158 |
+
"reference": "bba6c6e410c6b4317e37a9474aeaa753808c3875",
|
159 |
"shasum": ""
|
160 |
},
|
161 |
"require": {
|
162 |
+
"php": ">=5.3.9",
|
163 |
+
"symfony/translation": "~2.6 || ~3.0 || ~4.0"
|
164 |
},
|
165 |
"require-dev": {
|
166 |
"friendsofphp/php-cs-fixer": "~2",
|
167 |
+
"phpunit/phpunit": "^4.8.35 || ^5.7"
|
168 |
},
|
169 |
+
"time": "2018-03-10T10:10:14+00:00",
|
170 |
"type": "library",
|
171 |
"extra": {
|
172 |
"branch-alias": {
|
200 |
},
|
201 |
{
|
202 |
"name": "twig/twig",
|
203 |
+
"version": "v1.35.2",
|
204 |
+
"version_normalized": "1.35.2.0",
|
205 |
"source": {
|
206 |
"type": "git",
|
207 |
"url": "https://github.com/twigphp/Twig.git",
|
208 |
+
"reference": "9c24f2cd39dc1906b76879e099970b7e53724601"
|
209 |
},
|
210 |
"dist": {
|
211 |
"type": "zip",
|
212 |
+
"url": "https://api.github.com/repos/twigphp/Twig/zipball/9c24f2cd39dc1906b76879e099970b7e53724601",
|
213 |
+
"reference": "9c24f2cd39dc1906b76879e099970b7e53724601",
|
214 |
"shasum": ""
|
215 |
},
|
216 |
"require": {
|
221 |
"symfony/debug": "~2.7",
|
222 |
"symfony/phpunit-bridge": "~3.3@dev"
|
223 |
},
|
224 |
+
"time": "2018-03-03T16:21:29+00:00",
|
225 |
"type": "library",
|
226 |
"extra": {
|
227 |
"branch-alias": {
|
264 |
"keywords": [
|
265 |
"templating"
|
266 |
]
|
267 |
+
},
|
268 |
+
{
|
269 |
+
"name": "symfony/translation",
|
270 |
+
"version": "v2.8.36",
|
271 |
+
"version_normalized": "2.8.36.0",
|
272 |
+
"source": {
|
273 |
+
"type": "git",
|
274 |
+
"url": "https://github.com/symfony/translation.git",
|
275 |
+
"reference": "72235c1121ae282254e897e342c001f3d4bb7e8d"
|
276 |
+
},
|
277 |
+
"dist": {
|
278 |
+
"type": "zip",
|
279 |
+
"url": "https://api.github.com/repos/symfony/translation/zipball/72235c1121ae282254e897e342c001f3d4bb7e8d",
|
280 |
+
"reference": "72235c1121ae282254e897e342c001f3d4bb7e8d",
|
281 |
+
"shasum": ""
|
282 |
+
},
|
283 |
+
"require": {
|
284 |
+
"php": ">=5.3.9",
|
285 |
+
"symfony/polyfill-mbstring": "~1.0"
|
286 |
+
},
|
287 |
+
"conflict": {
|
288 |
+
"symfony/config": "<2.7"
|
289 |
+
},
|
290 |
+
"require-dev": {
|
291 |
+
"psr/log": "~1.0",
|
292 |
+
"symfony/config": "~2.8",
|
293 |
+
"symfony/intl": "~2.7.25|^2.8.18|~3.2.5",
|
294 |
+
"symfony/yaml": "~2.2|~3.0.0"
|
295 |
+
},
|
296 |
+
"suggest": {
|
297 |
+
"psr/log": "To use logging capability in translator",
|
298 |
+
"symfony/config": "",
|
299 |
+
"symfony/yaml": ""
|
300 |
+
},
|
301 |
+
"time": "2018-01-18T13:56:23+00:00",
|
302 |
+
"type": "library",
|
303 |
+
"extra": {
|
304 |
+
"branch-alias": {
|
305 |
+
"dev-master": "2.8-dev"
|
306 |
+
}
|
307 |
+
},
|
308 |
+
"installation-source": "dist",
|
309 |
+
"autoload": {
|
310 |
+
"psr-4": {
|
311 |
+
"Symfony\\Component\\Translation\\": ""
|
312 |
+
},
|
313 |
+
"exclude-from-classmap": [
|
314 |
+
"/Tests/"
|
315 |
+
]
|
316 |
+
},
|
317 |
+
"notification-url": "https://packagist.org/downloads/",
|
318 |
+
"license": [
|
319 |
+
"MIT"
|
320 |
+
],
|
321 |
+
"authors": [
|
322 |
+
{
|
323 |
+
"name": "Fabien Potencier",
|
324 |
+
"email": "fabien@symfony.com"
|
325 |
+
},
|
326 |
+
{
|
327 |
+
"name": "Symfony Community",
|
328 |
+
"homepage": "https://symfony.com/contributors"
|
329 |
+
}
|
330 |
+
],
|
331 |
+
"description": "Symfony Translation Component",
|
332 |
+
"homepage": "https://symfony.com"
|
333 |
}
|
334 |
]
|
src/common/lib/vendor/nesbot/carbon/src/Carbon/Carbon.php
CHANGED
@@ -15,6 +15,7 @@ use Carbon\Exceptions\InvalidDateException;
|
|
15 |
use Closure;
|
16 |
use DatePeriod;
|
17 |
use DateTime;
|
|
|
18 |
use DateTimeZone;
|
19 |
use InvalidArgumentException;
|
20 |
use Symfony\Component\Translation\Loader\ArrayLoader;
|
@@ -38,6 +39,7 @@ use Symfony\Component\Translation\TranslatorInterface;
|
|
38 |
* @property-read int $dayOfWeek 0 (for Sunday) through 6 (for Saturday)
|
39 |
* @property-read int $dayOfYear 0 through 365
|
40 |
* @property-read int $weekOfMonth 1 through 5
|
|
|
41 |
* @property-read int $weekOfYear ISO-8601 week number of year, weeks starting on Monday
|
42 |
* @property-read int $daysInMonth number of days in the given month
|
43 |
* @property-read int $age does a diffInYears() with default parameters
|
@@ -78,26 +80,6 @@ class Carbon extends DateTime
|
|
78 |
self::SATURDAY => 'Saturday',
|
79 |
);
|
80 |
|
81 |
-
/**
|
82 |
-
* Terms used to detect if a time passed is a relative date.
|
83 |
-
*
|
84 |
-
* This is here for testing purposes.
|
85 |
-
*
|
86 |
-
* @var array
|
87 |
-
*/
|
88 |
-
protected static $relativeKeywords = array(
|
89 |
-
'+',
|
90 |
-
'-',
|
91 |
-
'ago',
|
92 |
-
'first',
|
93 |
-
'last',
|
94 |
-
'next',
|
95 |
-
'this',
|
96 |
-
'today',
|
97 |
-
'tomorrow',
|
98 |
-
'yesterday',
|
99 |
-
);
|
100 |
-
|
101 |
/**
|
102 |
* Number of X in Y.
|
103 |
*/
|
@@ -111,6 +93,13 @@ class Carbon extends DateTime
|
|
111 |
const MINUTES_PER_HOUR = 60;
|
112 |
const SECONDS_PER_MINUTE = 60;
|
113 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
114 |
/**
|
115 |
* Default format to use for __toString method when type juggling occurs.
|
116 |
*
|
@@ -118,6 +107,20 @@ class Carbon extends DateTime
|
|
118 |
*/
|
119 |
const DEFAULT_TO_STRING_FORMAT = 'Y-m-d H:i:s';
|
120 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
121 |
/**
|
122 |
* Format to use for __toString method when type juggling occurs.
|
123 |
*
|
@@ -149,6 +152,61 @@ class Carbon extends DateTime
|
|
149 |
self::SUNDAY,
|
150 |
);
|
151 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
152 |
/**
|
153 |
* A test Carbon instance to be returned when now instances are created.
|
154 |
*
|
@@ -177,13 +235,20 @@ class Carbon extends DateTime
|
|
177 |
*/
|
178 |
protected static $utf8 = false;
|
179 |
|
180 |
-
|
181 |
* Indicates if months should be calculated with overflow.
|
182 |
*
|
183 |
* @var bool
|
184 |
*/
|
185 |
protected static $monthsOverflow = true;
|
186 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
187 |
/**
|
188 |
* Indicates if months should be calculated with overflow.
|
189 |
*
|
@@ -216,6 +281,38 @@ class Carbon extends DateTime
|
|
216 |
return static::$monthsOverflow;
|
217 |
}
|
218 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
219 |
/**
|
220 |
* Creates a DateTimeZone from a string, DateTimeZone or integer offset.
|
221 |
*
|
@@ -272,7 +369,8 @@ class Carbon extends DateTime
|
|
272 |
{
|
273 |
// If the class has a test now set and we are trying to create a now()
|
274 |
// instance then override as required
|
275 |
-
|
|
|
276 |
$testInstance = clone static::getTestNow();
|
277 |
if (static::hasRelativeKeywords($time)) {
|
278 |
$testInstance->modify($time);
|
@@ -285,26 +383,53 @@ class Carbon extends DateTime
|
|
285 |
$tz = $testInstance->getTimezone();
|
286 |
}
|
287 |
|
288 |
-
$time = $testInstance->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
289 |
}
|
|
|
290 |
|
291 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
292 |
}
|
293 |
|
294 |
/**
|
295 |
* Create a Carbon instance from a DateTime one.
|
296 |
*
|
297 |
-
* @param \DateTime $
|
298 |
*
|
299 |
* @return static
|
300 |
*/
|
301 |
-
public static function instance(DateTime $
|
302 |
{
|
303 |
-
if ($
|
304 |
-
return clone $
|
305 |
}
|
306 |
|
307 |
-
return new static($
|
308 |
}
|
309 |
|
310 |
/**
|
@@ -379,9 +504,9 @@ class Carbon extends DateTime
|
|
379 |
*/
|
380 |
public static function maxValue()
|
381 |
{
|
382 |
-
if (
|
383 |
-
// 32 bit
|
384 |
-
return static::createFromTimestamp(PHP_INT_MAX);
|
385 |
}
|
386 |
|
387 |
// 64 bit
|
@@ -395,9 +520,9 @@ class Carbon extends DateTime
|
|
395 |
*/
|
396 |
public static function minValue()
|
397 |
{
|
398 |
-
if (
|
399 |
-
// 32 bit
|
400 |
-
return static::createFromTimestamp(~PHP_INT_MAX);
|
401 |
}
|
402 |
|
403 |
// 64 bit
|
@@ -424,11 +549,13 @@ class Carbon extends DateTime
|
|
424 |
* @param int|null $second
|
425 |
* @param \DateTimeZone|string|null $tz
|
426 |
*
|
|
|
|
|
427 |
* @return static
|
428 |
*/
|
429 |
public static function create($year = null, $month = null, $day = null, $hour = null, $minute = null, $second = null, $tz = null)
|
430 |
{
|
431 |
-
$now = static::hasTestNow() ? static::getTestNow()
|
432 |
|
433 |
$defaults = array_combine(array(
|
434 |
'year',
|
@@ -437,7 +564,7 @@ class Carbon extends DateTime
|
|
437 |
'hour',
|
438 |
'minute',
|
439 |
'second',
|
440 |
-
), explode('-',
|
441 |
|
442 |
$year = $year === null ? $defaults['year'] : $year;
|
443 |
$month = $month === null ? $defaults['month'] : $month;
|
@@ -494,7 +621,7 @@ class Carbon extends DateTime
|
|
494 |
* @param int|null $second
|
495 |
* @param \DateTimeZone|string|null $tz
|
496 |
*
|
497 |
-
* @throws \Carbon\Exceptions\InvalidDateException
|
498 |
*
|
499 |
* @return static
|
500 |
*/
|
@@ -515,13 +642,15 @@ class Carbon extends DateTime
|
|
515 |
}
|
516 |
}
|
517 |
|
518 |
-
$instance = static::create($year, $month,
|
519 |
|
520 |
-
|
521 |
-
|
|
|
|
|
522 |
}
|
523 |
|
524 |
-
return $instance
|
525 |
}
|
526 |
|
527 |
/**
|
@@ -532,6 +661,8 @@ class Carbon extends DateTime
|
|
532 |
* @param int|null $day
|
533 |
* @param \DateTimeZone|string|null $tz
|
534 |
*
|
|
|
|
|
535 |
* @return static
|
536 |
*/
|
537 |
public static function createFromDate($year = null, $month = null, $day = null, $tz = null)
|
@@ -539,6 +670,21 @@ class Carbon extends DateTime
|
|
539 |
return static::create($year, $month, $day, null, null, null, $tz);
|
540 |
}
|
541 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
542 |
/**
|
543 |
* Create a Carbon instance from just a time. The date portion is set to today.
|
544 |
*
|
@@ -547,6 +693,8 @@ class Carbon extends DateTime
|
|
547 |
* @param int|null $second
|
548 |
* @param \DateTimeZone|string|null $tz
|
549 |
*
|
|
|
|
|
550 |
* @return static
|
551 |
*/
|
552 |
public static function createFromTime($hour = null, $minute = null, $second = null, $tz = null)
|
@@ -557,26 +705,29 @@ class Carbon extends DateTime
|
|
557 |
/**
|
558 |
* Create a Carbon instance from a specific format.
|
559 |
*
|
560 |
-
* @param string $format
|
561 |
* @param string $time
|
562 |
* @param \DateTimeZone|string|null $tz
|
563 |
*
|
564 |
-
* @throws
|
565 |
*
|
566 |
* @return static
|
567 |
*/
|
568 |
public static function createFromFormat($format, $time, $tz = null)
|
569 |
{
|
570 |
if ($tz !== null) {
|
571 |
-
$
|
572 |
} else {
|
573 |
-
$
|
574 |
}
|
575 |
|
576 |
-
|
|
|
|
|
|
|
|
|
577 |
|
578 |
-
|
579 |
-
return static::instance($dt);
|
580 |
}
|
581 |
|
582 |
throw new InvalidArgumentException(implode(PHP_EOL, $lastErrors['errors']));
|
@@ -615,6 +766,20 @@ class Carbon extends DateTime
|
|
615 |
return static::now($tz)->setTimestamp($timestamp);
|
616 |
}
|
617 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
618 |
/**
|
619 |
* Create a Carbon instance from an UTC timestamp.
|
620 |
*
|
@@ -637,6 +802,28 @@ class Carbon extends DateTime
|
|
637 |
return clone $this;
|
638 |
}
|
639 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
640 |
///////////////////////////////////////////////////////////////////
|
641 |
///////////////////////// GETTERS AND SETTERS /////////////////////
|
642 |
///////////////////////////////////////////////////////////////////
|
@@ -652,27 +839,32 @@ class Carbon extends DateTime
|
|
652 |
*/
|
653 |
public function __get($name)
|
654 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
655 |
switch (true) {
|
656 |
-
case
|
657 |
-
'year' => 'Y',
|
658 |
-
'yearIso' => 'o',
|
659 |
-
'month' => 'n',
|
660 |
-
'day' => 'j',
|
661 |
-
'hour' => 'G',
|
662 |
-
'minute' => 'i',
|
663 |
-
'second' => 's',
|
664 |
-
'micro' => 'u',
|
665 |
-
'dayOfWeek' => 'w',
|
666 |
-
'dayOfYear' => 'z',
|
667 |
-
'weekOfYear' => 'W',
|
668 |
-
'daysInMonth' => 't',
|
669 |
-
'timestamp' => 'U',
|
670 |
-
)):
|
671 |
return (int) $this->format($formats[$name]);
|
672 |
|
673 |
case $name === 'weekOfMonth':
|
674 |
return (int) ceil($this->day / static::DAYS_PER_WEEK);
|
675 |
|
|
|
|
|
|
|
676 |
case $name === 'age':
|
677 |
return $this->diffInYears();
|
678 |
|
@@ -730,6 +922,8 @@ class Carbon extends DateTime
|
|
730 |
* @param string|int|\DateTimeZone $value
|
731 |
*
|
732 |
* @throws \InvalidArgumentException
|
|
|
|
|
733 |
*/
|
734 |
public function __set($name, $value)
|
735 |
{
|
@@ -943,7 +1137,22 @@ class Carbon extends DateTime
|
|
943 |
*/
|
944 |
public function setTimezone($value)
|
945 |
{
|
946 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
947 |
}
|
948 |
|
949 |
///////////////////////////////////////////////////////////////////
|
@@ -963,7 +1172,9 @@ class Carbon extends DateTime
|
|
963 |
/**
|
964 |
* Set the first day of week
|
965 |
*
|
966 |
-
* @param int
|
|
|
|
|
967 |
*/
|
968 |
public static function setWeekStartsAt($day)
|
969 |
{
|
@@ -983,7 +1194,9 @@ class Carbon extends DateTime
|
|
983 |
/**
|
984 |
* Set the last day of week
|
985 |
*
|
986 |
-
* @param int
|
|
|
|
|
987 |
*/
|
988 |
public static function setWeekEndsAt($day)
|
989 |
{
|
@@ -1003,13 +1216,37 @@ class Carbon extends DateTime
|
|
1003 |
/**
|
1004 |
* Set weekend days
|
1005 |
*
|
1006 |
-
* @param array
|
|
|
|
|
1007 |
*/
|
1008 |
public static function setWeekendDays($days)
|
1009 |
{
|
1010 |
static::$weekendDays = $days;
|
1011 |
}
|
1012 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1013 |
///////////////////////////////////////////////////////////////////
|
1014 |
///////////////////////// TESTING AIDS ////////////////////////////
|
1015 |
///////////////////////////////////////////////////////////////////
|
@@ -1029,6 +1266,7 @@ class Carbon extends DateTime
|
|
1029 |
* To clear the test instance call this method using the default
|
1030 |
* parameter of null.
|
1031 |
*
|
|
|
1032 |
* @param \Carbon\Carbon|string|null $testNow
|
1033 |
*/
|
1034 |
public static function setTestNow($testNow = null)
|
@@ -1059,25 +1297,24 @@ class Carbon extends DateTime
|
|
1059 |
}
|
1060 |
|
1061 |
/**
|
1062 |
-
* Determine if
|
1063 |
-
* create dates relative to now for test instances. e.g.: next tuesday
|
1064 |
*
|
1065 |
* @param string $time
|
1066 |
*
|
1067 |
-
* @return bool true if
|
1068 |
*/
|
1069 |
public static function hasRelativeKeywords($time)
|
1070 |
{
|
1071 |
-
|
1072 |
-
|
1073 |
-
foreach (static::$relativeKeywords as $keyword) {
|
1074 |
-
if (stripos($time, $keyword) !== false) {
|
1075 |
-
return true;
|
1076 |
-
}
|
1077 |
-
}
|
1078 |
}
|
1079 |
|
1080 |
-
|
|
|
|
|
|
|
|
|
|
|
1081 |
}
|
1082 |
|
1083 |
///////////////////////////////////////////////////////////////////
|
@@ -1092,8 +1329,9 @@ class Carbon extends DateTime
|
|
1092 |
protected static function translator()
|
1093 |
{
|
1094 |
if (static::$translator === null) {
|
1095 |
-
|
1096 |
-
|
|
|
1097 |
static::setLocale('en');
|
1098 |
}
|
1099 |
|
@@ -1114,6 +1352,8 @@ class Carbon extends DateTime
|
|
1114 |
* Set the translator instance to use
|
1115 |
*
|
1116 |
* @param \Symfony\Component\Translation\TranslatorInterface $translator
|
|
|
|
|
1117 |
*/
|
1118 |
public static function setTranslator(TranslatorInterface $translator)
|
1119 |
{
|
@@ -1133,20 +1373,25 @@ class Carbon extends DateTime
|
|
1133 |
/**
|
1134 |
* Set the current translator locale and indicate if the source locale file exists
|
1135 |
*
|
1136 |
-
* @param string $locale
|
1137 |
*
|
1138 |
* @return bool
|
1139 |
*/
|
1140 |
public static function setLocale($locale)
|
1141 |
{
|
1142 |
-
$locale = preg_replace_callback('
|
1143 |
-
|
|
|
1144 |
}, strtolower($locale));
|
1145 |
|
1146 |
if (file_exists($filename = __DIR__.'/Lang/'.$locale.'.php')) {
|
1147 |
-
static::translator()
|
1148 |
-
|
1149 |
-
|
|
|
|
|
|
|
|
|
1150 |
|
1151 |
return true;
|
1152 |
}
|
@@ -1178,19 +1423,20 @@ class Carbon extends DateTime
|
|
1178 |
*/
|
1179 |
public function formatLocalized($format)
|
1180 |
{
|
1181 |
-
// Check for Windows to find and replace the %e
|
1182 |
-
// modifier correctly
|
1183 |
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
|
1184 |
-
$format = preg_replace('#(?<!%)((?:%%)*)%e#', '\1%#d', $format);
|
1185 |
}
|
1186 |
|
1187 |
-
$formatted = strftime($format, strtotime($this));
|
1188 |
|
1189 |
return static::$utf8 ? utf8_encode($formatted) : $formatted;
|
1190 |
}
|
1191 |
|
1192 |
/**
|
1193 |
* Reset the format used to the default when type juggling a Carbon instance to a string
|
|
|
|
|
1194 |
*/
|
1195 |
public static function resetToStringFormat()
|
1196 |
{
|
@@ -1201,6 +1447,8 @@ class Carbon extends DateTime
|
|
1201 |
* Set the default format used when type juggling a Carbon instance to a string
|
1202 |
*
|
1203 |
* @param string $format
|
|
|
|
|
1204 |
*/
|
1205 |
public static function setToStringFormat($format)
|
1206 |
{
|
@@ -1307,6 +1555,16 @@ class Carbon extends DateTime
|
|
1307 |
return $this->format(static::RFC822);
|
1308 |
}
|
1309 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1310 |
/**
|
1311 |
* Format the instance as RFC850
|
1312 |
*
|
@@ -1377,6 +1635,41 @@ class Carbon extends DateTime
|
|
1377 |
return $this->format(static::W3C);
|
1378 |
}
|
1379 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1380 |
///////////////////////////////////////////////////////////////////
|
1381 |
////////////////////////// COMPARISONS ////////////////////////////
|
1382 |
///////////////////////////////////////////////////////////////////
|
@@ -1384,263 +1677,263 @@ class Carbon extends DateTime
|
|
1384 |
/**
|
1385 |
* Determines if the instance is equal to another
|
1386 |
*
|
1387 |
-
* @param Carbon $
|
1388 |
*
|
1389 |
* @return bool
|
1390 |
*/
|
1391 |
-
public function eq(
|
1392 |
{
|
1393 |
-
return $this == $
|
1394 |
}
|
1395 |
|
1396 |
/**
|
1397 |
* Determines if the instance is equal to another
|
1398 |
*
|
1399 |
-
* @param Carbon $
|
1400 |
*
|
1401 |
* @see eq()
|
1402 |
*
|
1403 |
* @return bool
|
1404 |
*/
|
1405 |
-
public function equalTo(
|
1406 |
{
|
1407 |
-
return $this->eq($
|
1408 |
}
|
1409 |
|
1410 |
/**
|
1411 |
* Determines if the instance is not equal to another
|
1412 |
*
|
1413 |
-
* @param Carbon $
|
1414 |
*
|
1415 |
* @return bool
|
1416 |
*/
|
1417 |
-
public function ne(
|
1418 |
{
|
1419 |
-
return !$this->eq($
|
1420 |
}
|
1421 |
|
1422 |
/**
|
1423 |
* Determines if the instance is not equal to another
|
1424 |
*
|
1425 |
-
* @param Carbon $
|
1426 |
*
|
1427 |
* @see ne()
|
1428 |
*
|
1429 |
* @return bool
|
1430 |
*/
|
1431 |
-
public function notEqualTo(
|
1432 |
{
|
1433 |
-
return $this->ne($
|
1434 |
}
|
1435 |
|
1436 |
/**
|
1437 |
* Determines if the instance is greater (after) than another
|
1438 |
*
|
1439 |
-
* @param Carbon $
|
1440 |
*
|
1441 |
* @return bool
|
1442 |
*/
|
1443 |
-
public function gt(
|
1444 |
{
|
1445 |
-
return $this > $
|
1446 |
}
|
1447 |
|
1448 |
/**
|
1449 |
* Determines if the instance is greater (after) than another
|
1450 |
*
|
1451 |
-
* @param Carbon $
|
1452 |
*
|
1453 |
* @see gt()
|
1454 |
*
|
1455 |
* @return bool
|
1456 |
*/
|
1457 |
-
public function greaterThan(
|
1458 |
{
|
1459 |
-
return $this->gt($
|
1460 |
}
|
1461 |
|
1462 |
/**
|
1463 |
* Determines if the instance is greater (after) than or equal to another
|
1464 |
*
|
1465 |
-
* @param Carbon $
|
1466 |
*
|
1467 |
* @return bool
|
1468 |
*/
|
1469 |
-
public function gte(
|
1470 |
{
|
1471 |
-
return $this >= $
|
1472 |
}
|
1473 |
|
1474 |
/**
|
1475 |
* Determines if the instance is greater (after) than or equal to another
|
1476 |
*
|
1477 |
-
* @param Carbon $
|
1478 |
*
|
1479 |
* @see gte()
|
1480 |
*
|
1481 |
* @return bool
|
1482 |
*/
|
1483 |
-
public function greaterThanOrEqualTo(
|
1484 |
{
|
1485 |
-
return $this->gte($
|
1486 |
}
|
1487 |
|
1488 |
/**
|
1489 |
* Determines if the instance is less (before) than another
|
1490 |
*
|
1491 |
-
* @param Carbon $
|
1492 |
*
|
1493 |
* @return bool
|
1494 |
*/
|
1495 |
-
public function lt(
|
1496 |
{
|
1497 |
-
return $this < $
|
1498 |
}
|
1499 |
|
1500 |
/**
|
1501 |
* Determines if the instance is less (before) than another
|
1502 |
*
|
1503 |
-
* @param Carbon $
|
1504 |
*
|
1505 |
* @see lt()
|
1506 |
*
|
1507 |
* @return bool
|
1508 |
*/
|
1509 |
-
public function lessThan(
|
1510 |
{
|
1511 |
-
return $this->lt($
|
1512 |
}
|
1513 |
|
1514 |
/**
|
1515 |
* Determines if the instance is less (before) or equal to another
|
1516 |
*
|
1517 |
-
* @param Carbon $
|
1518 |
*
|
1519 |
* @return bool
|
1520 |
*/
|
1521 |
-
public function lte(
|
1522 |
{
|
1523 |
-
return $this <= $
|
1524 |
}
|
1525 |
|
1526 |
/**
|
1527 |
* Determines if the instance is less (before) or equal to another
|
1528 |
*
|
1529 |
-
* @param Carbon $
|
1530 |
*
|
1531 |
* @see lte()
|
1532 |
*
|
1533 |
* @return bool
|
1534 |
*/
|
1535 |
-
public function lessThanOrEqualTo(
|
1536 |
{
|
1537 |
-
return $this->lte($
|
1538 |
}
|
1539 |
|
1540 |
/**
|
1541 |
* Determines if the instance is between two others
|
1542 |
*
|
1543 |
-
* @param Carbon $
|
1544 |
-
* @param Carbon $
|
1545 |
-
* @param bool
|
1546 |
*
|
1547 |
* @return bool
|
1548 |
*/
|
1549 |
-
public function between(
|
1550 |
{
|
1551 |
-
if ($
|
1552 |
-
$temp = $
|
1553 |
-
$
|
1554 |
-
$
|
1555 |
}
|
1556 |
|
1557 |
if ($equal) {
|
1558 |
-
return $this->gte($
|
1559 |
}
|
1560 |
|
1561 |
-
return $this->gt($
|
1562 |
}
|
1563 |
|
1564 |
/**
|
1565 |
* Get the closest date from the instance.
|
1566 |
*
|
1567 |
-
* @param Carbon $
|
1568 |
-
* @param Carbon $
|
1569 |
*
|
1570 |
* @return static
|
1571 |
*/
|
1572 |
-
public function closest(
|
1573 |
{
|
1574 |
-
return $this->diffInSeconds($
|
1575 |
}
|
1576 |
|
1577 |
/**
|
1578 |
* Get the farthest date from the instance.
|
1579 |
*
|
1580 |
-
* @param Carbon $
|
1581 |
-
* @param Carbon $
|
1582 |
*
|
1583 |
* @return static
|
1584 |
*/
|
1585 |
-
public function farthest(
|
1586 |
{
|
1587 |
-
return $this->diffInSeconds($
|
1588 |
}
|
1589 |
|
1590 |
/**
|
1591 |
* Get the minimum instance between a given instance (default now) and the current instance.
|
1592 |
*
|
1593 |
-
* @param \Carbon\Carbon|
|
1594 |
*
|
1595 |
* @return static
|
1596 |
*/
|
1597 |
-
public function min(
|
1598 |
{
|
1599 |
-
$
|
1600 |
|
1601 |
-
return $this->lt($
|
1602 |
}
|
1603 |
|
1604 |
/**
|
1605 |
* Get the minimum instance between a given instance (default now) and the current instance.
|
1606 |
*
|
1607 |
-
* @param \Carbon\Carbon|
|
1608 |
*
|
1609 |
* @see min()
|
1610 |
*
|
1611 |
* @return static
|
1612 |
*/
|
1613 |
-
public function minimum(
|
1614 |
{
|
1615 |
-
return $this->min($
|
1616 |
}
|
1617 |
|
1618 |
/**
|
1619 |
* Get the maximum instance between a given instance (default now) and the current instance.
|
1620 |
*
|
1621 |
-
* @param \Carbon\Carbon|
|
1622 |
*
|
1623 |
* @return static
|
1624 |
*/
|
1625 |
-
public function max(
|
1626 |
{
|
1627 |
-
$
|
1628 |
|
1629 |
-
return $this->gt($
|
1630 |
}
|
1631 |
|
1632 |
/**
|
1633 |
* Get the maximum instance between a given instance (default now) and the current instance.
|
1634 |
*
|
1635 |
-
* @param \Carbon\Carbon|
|
1636 |
*
|
1637 |
* @see max()
|
1638 |
*
|
1639 |
* @return static
|
1640 |
*/
|
1641 |
-
public function maximum(
|
1642 |
{
|
1643 |
-
return $this->max($
|
1644 |
}
|
1645 |
|
1646 |
/**
|
@@ -1680,7 +1973,7 @@ class Carbon extends DateTime
|
|
1680 |
*/
|
1681 |
public function isToday()
|
1682 |
{
|
1683 |
-
return $this->toDateString() ===
|
1684 |
}
|
1685 |
|
1686 |
/**
|
@@ -1700,7 +1993,7 @@ class Carbon extends DateTime
|
|
1700 |
*/
|
1701 |
public function isNextWeek()
|
1702 |
{
|
1703 |
-
return $this->weekOfYear ===
|
1704 |
}
|
1705 |
|
1706 |
/**
|
@@ -1710,7 +2003,7 @@ class Carbon extends DateTime
|
|
1710 |
*/
|
1711 |
public function isLastWeek()
|
1712 |
{
|
1713 |
-
return $this->weekOfYear ===
|
1714 |
}
|
1715 |
|
1716 |
/**
|
@@ -1720,7 +2013,7 @@ class Carbon extends DateTime
|
|
1720 |
*/
|
1721 |
public function isNextMonth()
|
1722 |
{
|
1723 |
-
return $this->month ===
|
1724 |
}
|
1725 |
|
1726 |
/**
|
@@ -1730,7 +2023,7 @@ class Carbon extends DateTime
|
|
1730 |
*/
|
1731 |
public function isLastMonth()
|
1732 |
{
|
1733 |
-
return $this->month ===
|
1734 |
}
|
1735 |
|
1736 |
/**
|
@@ -1740,7 +2033,7 @@ class Carbon extends DateTime
|
|
1740 |
*/
|
1741 |
public function isNextYear()
|
1742 |
{
|
1743 |
-
return $this->year ===
|
1744 |
}
|
1745 |
|
1746 |
/**
|
@@ -1750,7 +2043,7 @@ class Carbon extends DateTime
|
|
1750 |
*/
|
1751 |
public function isLastYear()
|
1752 |
{
|
1753 |
-
return $this->year ===
|
1754 |
}
|
1755 |
|
1756 |
/**
|
@@ -1760,7 +2053,7 @@ class Carbon extends DateTime
|
|
1760 |
*/
|
1761 |
public function isFuture()
|
1762 |
{
|
1763 |
-
return $this->gt(
|
1764 |
}
|
1765 |
|
1766 |
/**
|
@@ -1770,7 +2063,7 @@ class Carbon extends DateTime
|
|
1770 |
*/
|
1771 |
public function isPast()
|
1772 |
{
|
1773 |
-
return $this->lt(
|
1774 |
}
|
1775 |
|
1776 |
/**
|
@@ -1795,19 +2088,25 @@ class Carbon extends DateTime
|
|
1795 |
return static::create($this->year, 12, 28, 0, 0, 0, $this->tz)->weekOfYear === 53;
|
1796 |
}
|
1797 |
|
1798 |
-
|
1799 |
* Compares the formatted values of the two dates.
|
1800 |
*
|
1801 |
-
* @param string
|
1802 |
-
* @param \Carbon\Carbon|null $
|
|
|
|
|
1803 |
*
|
1804 |
* @return bool
|
1805 |
*/
|
1806 |
-
public function isSameAs($format,
|
1807 |
{
|
1808 |
-
$
|
|
|
|
|
|
|
|
|
1809 |
|
1810 |
-
return $this->format($format) === $
|
1811 |
}
|
1812 |
|
1813 |
/**
|
@@ -1823,13 +2122,13 @@ class Carbon extends DateTime
|
|
1823 |
/**
|
1824 |
* Checks if the passed in date is in the same year as the instance year.
|
1825 |
*
|
1826 |
-
* @param \Carbon\Carbon|null $
|
1827 |
*
|
1828 |
* @return bool
|
1829 |
*/
|
1830 |
-
public function isSameYear(
|
1831 |
{
|
1832 |
-
return $this->isSameAs('Y', $
|
1833 |
}
|
1834 |
|
1835 |
/**
|
@@ -1845,28 +2144,38 @@ class Carbon extends DateTime
|
|
1845 |
/**
|
1846 |
* Checks if the passed in date is in the same month as the instance month (and year if needed).
|
1847 |
*
|
1848 |
-
* @param \Carbon\Carbon|null $
|
1849 |
-
* @param bool
|
1850 |
*
|
1851 |
* @return bool
|
1852 |
*/
|
1853 |
-
public function isSameMonth(
|
1854 |
{
|
1855 |
-
|
1856 |
-
|
1857 |
-
return $this->isSameAs($format, $dt);
|
1858 |
}
|
1859 |
|
1860 |
/**
|
1861 |
* Checks if the passed in date is the same day as the instance current day.
|
1862 |
*
|
1863 |
-
* @param \Carbon\Carbon $
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1864 |
*
|
1865 |
* @return bool
|
1866 |
*/
|
1867 |
-
public function
|
1868 |
{
|
1869 |
-
return $this->
|
1870 |
}
|
1871 |
|
1872 |
/**
|
@@ -1939,6 +2248,36 @@ class Carbon extends DateTime
|
|
1939 |
return $this->dayOfWeek === static::SATURDAY;
|
1940 |
}
|
1941 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1942 |
///////////////////////////////////////////////////////////////////
|
1943 |
/////////////////// ADDITIONS AND SUBTRACTIONS ////////////////////
|
1944 |
///////////////////////////////////////////////////////////////////
|
@@ -1953,7 +2292,11 @@ class Carbon extends DateTime
|
|
1953 |
*/
|
1954 |
public function addYears($value)
|
1955 |
{
|
1956 |
-
|
|
|
|
|
|
|
|
|
1957 |
}
|
1958 |
|
1959 |
/**
|
@@ -1968,6 +2311,58 @@ class Carbon extends DateTime
|
|
1968 |
return $this->addYears($value);
|
1969 |
}
|
1970 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1971 |
/**
|
1972 |
* Remove a year from the instance
|
1973 |
*
|
@@ -1992,6 +2387,54 @@ class Carbon extends DateTime
|
|
1992 |
return $this->addYears(-1 * $value);
|
1993 |
}
|
1994 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1995 |
/**
|
1996 |
* Add quarters to the instance. Positive $value travels forward while
|
1997 |
* negative $value travels into the past.
|
@@ -2308,7 +2751,7 @@ class Carbon extends DateTime
|
|
2308 |
*/
|
2309 |
public function addWeekdays($value)
|
2310 |
{
|
2311 |
-
//
|
2312 |
$t = $this->toTimeString();
|
2313 |
$this->modify((int) $value.' weekday');
|
2314 |
|
@@ -2524,27 +2967,27 @@ class Carbon extends DateTime
|
|
2524 |
}
|
2525 |
|
2526 |
/**
|
2527 |
-
* Remove
|
2528 |
*
|
2529 |
* @param int $value
|
2530 |
*
|
2531 |
* @return static
|
2532 |
*/
|
2533 |
-
public function
|
2534 |
{
|
2535 |
-
return $this->
|
2536 |
}
|
2537 |
|
2538 |
/**
|
2539 |
-
* Remove
|
2540 |
*
|
2541 |
* @param int $value
|
2542 |
*
|
2543 |
* @return static
|
2544 |
*/
|
2545 |
-
public function
|
2546 |
{
|
2547 |
-
return $this->
|
2548 |
}
|
2549 |
|
2550 |
///////////////////////////////////////////////////////////////////
|
@@ -2554,87 +2997,83 @@ class Carbon extends DateTime
|
|
2554 |
/**
|
2555 |
* Get the difference in years
|
2556 |
*
|
2557 |
-
* @param \Carbon\Carbon|null $
|
2558 |
-
* @param bool
|
2559 |
*
|
2560 |
* @return int
|
2561 |
*/
|
2562 |
-
public function diffInYears(
|
2563 |
{
|
2564 |
-
|
2565 |
-
|
2566 |
-
return (int) $this->diff($dt, $abs)->format('%r%y');
|
2567 |
}
|
2568 |
|
2569 |
/**
|
2570 |
* Get the difference in months
|
2571 |
*
|
2572 |
-
* @param \Carbon\Carbon|null $
|
2573 |
-
* @param bool
|
2574 |
*
|
2575 |
* @return int
|
2576 |
*/
|
2577 |
-
public function diffInMonths(
|
2578 |
{
|
2579 |
-
$
|
2580 |
|
2581 |
-
return $this->diffInYears($
|
2582 |
}
|
2583 |
|
2584 |
/**
|
2585 |
* Get the difference in weeks
|
2586 |
*
|
2587 |
-
* @param \Carbon\Carbon|null $
|
2588 |
-
* @param bool
|
2589 |
*
|
2590 |
* @return int
|
2591 |
*/
|
2592 |
-
public function diffInWeeks(
|
2593 |
{
|
2594 |
-
return (int) ($this->diffInDays($
|
2595 |
}
|
2596 |
|
2597 |
/**
|
2598 |
* Get the difference in days
|
2599 |
*
|
2600 |
-
* @param \Carbon\Carbon|null $
|
2601 |
-
* @param bool
|
2602 |
*
|
2603 |
* @return int
|
2604 |
*/
|
2605 |
-
public function diffInDays(
|
2606 |
{
|
2607 |
-
|
2608 |
-
|
2609 |
-
return (int) $this->diff($dt, $abs)->format('%r%a');
|
2610 |
}
|
2611 |
|
2612 |
/**
|
2613 |
* Get the difference in days using a filter closure
|
2614 |
*
|
2615 |
* @param Closure $callback
|
2616 |
-
* @param \Carbon\Carbon|null $
|
2617 |
-
* @param bool $
|
2618 |
*
|
2619 |
* @return int
|
2620 |
*/
|
2621 |
-
public function diffInDaysFiltered(Closure $callback,
|
2622 |
{
|
2623 |
-
return $this->diffFiltered(CarbonInterval::day(), $callback, $
|
2624 |
}
|
2625 |
|
2626 |
/**
|
2627 |
* Get the difference in hours using a filter closure
|
2628 |
*
|
2629 |
* @param Closure $callback
|
2630 |
-
* @param \Carbon\Carbon|null $
|
2631 |
-
* @param bool $
|
2632 |
*
|
2633 |
* @return int
|
2634 |
*/
|
2635 |
-
public function diffInHoursFiltered(Closure $callback,
|
2636 |
{
|
2637 |
-
return $this->diffFiltered(CarbonInterval::hour(), $callback, $
|
2638 |
}
|
2639 |
|
2640 |
/**
|
@@ -2642,15 +3081,15 @@ class Carbon extends DateTime
|
|
2642 |
*
|
2643 |
* @param CarbonInterval $ci An interval to traverse by
|
2644 |
* @param Closure $callback
|
2645 |
-
* @param Carbon|null $
|
2646 |
-
* @param bool $
|
2647 |
*
|
2648 |
* @return int
|
2649 |
*/
|
2650 |
-
public function diffFiltered(CarbonInterval $ci, Closure $callback,
|
2651 |
{
|
2652 |
$start = $this;
|
2653 |
-
$end = $
|
2654 |
$inverse = false;
|
2655 |
|
2656 |
if ($end < $start) {
|
@@ -2660,85 +3099,88 @@ class Carbon extends DateTime
|
|
2660 |
}
|
2661 |
|
2662 |
$period = new DatePeriod($start, $ci, $end);
|
2663 |
-
$
|
2664 |
return call_user_func($callback, Carbon::instance($date));
|
2665 |
});
|
2666 |
|
2667 |
-
$diff = count($
|
2668 |
|
2669 |
-
return $inverse && !$
|
2670 |
}
|
2671 |
|
2672 |
/**
|
2673 |
* Get the difference in weekdays
|
2674 |
*
|
2675 |
-
* @param \Carbon\Carbon|null $
|
2676 |
-
* @param bool $
|
2677 |
*
|
2678 |
* @return int
|
2679 |
*/
|
2680 |
-
public function diffInWeekdays(
|
2681 |
{
|
2682 |
return $this->diffInDaysFiltered(function (Carbon $date) {
|
2683 |
return $date->isWeekday();
|
2684 |
-
}, $
|
2685 |
}
|
2686 |
|
2687 |
/**
|
2688 |
* Get the difference in weekend days using a filter
|
2689 |
*
|
2690 |
-
* @param \Carbon\Carbon|null $
|
2691 |
-
* @param bool $
|
2692 |
*
|
2693 |
* @return int
|
2694 |
*/
|
2695 |
-
public function diffInWeekendDays(
|
2696 |
{
|
2697 |
return $this->diffInDaysFiltered(function (Carbon $date) {
|
2698 |
return $date->isWeekend();
|
2699 |
-
}, $
|
2700 |
}
|
2701 |
|
2702 |
/**
|
2703 |
* Get the difference in hours
|
2704 |
*
|
2705 |
-
* @param \Carbon\Carbon|null $
|
2706 |
-
* @param bool $
|
2707 |
*
|
2708 |
* @return int
|
2709 |
*/
|
2710 |
-
public function diffInHours(
|
2711 |
{
|
2712 |
-
return (int) ($this->diffInSeconds($
|
2713 |
}
|
2714 |
|
2715 |
/**
|
2716 |
* Get the difference in minutes
|
2717 |
*
|
2718 |
-
* @param \Carbon\Carbon|null $
|
2719 |
-
* @param bool $
|
2720 |
*
|
2721 |
* @return int
|
2722 |
*/
|
2723 |
-
public function diffInMinutes(
|
2724 |
{
|
2725 |
-
return (int) ($this->diffInSeconds($
|
2726 |
}
|
2727 |
|
2728 |
/**
|
2729 |
* Get the difference in seconds
|
2730 |
*
|
2731 |
-
* @param \Carbon\Carbon|null $
|
2732 |
-
* @param bool $
|
2733 |
*
|
2734 |
* @return int
|
2735 |
*/
|
2736 |
-
public function diffInSeconds(
|
2737 |
{
|
2738 |
-
$
|
2739 |
-
$value = $
|
|
|
|
|
|
|
2740 |
|
2741 |
-
return $
|
2742 |
}
|
2743 |
|
2744 |
/**
|
@@ -2752,7 +3194,7 @@ class Carbon extends DateTime
|
|
2752 |
}
|
2753 |
|
2754 |
/**
|
2755 |
-
* The number of seconds until 23:
|
2756 |
*
|
2757 |
* @return int
|
2758 |
*/
|
@@ -2783,61 +3225,74 @@ class Carbon extends DateTime
|
|
2783 |
* @param Carbon|null $other
|
2784 |
* @param bool $absolute removes time difference modifiers ago, after, etc
|
2785 |
* @param bool $short displays short format of time units
|
|
|
2786 |
*
|
2787 |
* @return string
|
2788 |
*/
|
2789 |
-
public function diffForHumans(
|
2790 |
{
|
2791 |
$isNow = $other === null;
|
|
|
|
|
|
|
|
|
|
|
2792 |
|
2793 |
if ($isNow) {
|
2794 |
-
$other =
|
2795 |
}
|
2796 |
|
2797 |
$diffInterval = $this->diff($other);
|
2798 |
|
2799 |
-
|
2800 |
-
|
2801 |
-
|
2802 |
-
|
2803 |
-
|
2804 |
-
|
2805 |
-
|
2806 |
-
|
2807 |
-
$count = $diffInterval->m;
|
2808 |
-
break;
|
2809 |
|
2810 |
-
|
2811 |
-
|
2812 |
-
$
|
|
|
2813 |
|
2814 |
-
if ($count >= static::DAYS_PER_WEEK) {
|
2815 |
$unit = $short ? 'w' : 'week';
|
2816 |
$count = (int) ($count / static::DAYS_PER_WEEK);
|
2817 |
-
}
|
2818 |
-
break;
|
2819 |
|
2820 |
-
|
2821 |
-
$unit = $short ? 'h' : 'hour';
|
2822 |
-
$count = $diffInterval->h;
|
2823 |
-
break;
|
2824 |
|
2825 |
-
|
2826 |
-
|
2827 |
-
$count = $diffInterval->i;
|
2828 |
-
break;
|
2829 |
|
2830 |
-
|
2831 |
-
|
2832 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2833 |
break;
|
|
|
2834 |
}
|
2835 |
|
2836 |
-
if ($
|
2837 |
$count = 1;
|
|
|
|
|
2838 |
}
|
2839 |
|
2840 |
-
|
|
|
|
|
|
|
2841 |
|
2842 |
if ($absolute) {
|
2843 |
return $time;
|
@@ -2847,10 +3302,13 @@ class Carbon extends DateTime
|
|
2847 |
|
2848 |
$transId = $isNow ? ($isFuture ? 'from_now' : 'ago') : ($isFuture ? 'after' : 'before');
|
2849 |
|
2850 |
-
|
2851 |
-
|
2852 |
-
|
2853 |
-
$
|
|
|
|
|
|
|
2854 |
}
|
2855 |
|
2856 |
return static::translator()->trans($transId, array(':time' => $time));
|
@@ -2861,7 +3319,7 @@ class Carbon extends DateTime
|
|
2861 |
///////////////////////////////////////////////////////////////////
|
2862 |
|
2863 |
/**
|
2864 |
-
* Resets the time to 00:00:00
|
2865 |
*
|
2866 |
* @return static
|
2867 |
*/
|
@@ -2871,7 +3329,7 @@ class Carbon extends DateTime
|
|
2871 |
}
|
2872 |
|
2873 |
/**
|
2874 |
-
* Resets the time to 23:59:59
|
2875 |
*
|
2876 |
* @return static
|
2877 |
*/
|
@@ -3018,6 +3476,56 @@ class Carbon extends DateTime
|
|
3018 |
return $this->endOfDay();
|
3019 |
}
|
3020 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3021 |
/**
|
3022 |
* Modify to the next occurrence of a given day of the week.
|
3023 |
* If no dayOfWeek is provided, modify to the next occurrence
|
@@ -3043,7 +3551,7 @@ class Carbon extends DateTime
|
|
3043 |
* @param bool $weekday
|
3044 |
* @param bool $forward
|
3045 |
*
|
3046 |
-
* @return
|
3047 |
*/
|
3048 |
private function nextOrPreviousDay($weekday = true, $forward = true)
|
3049 |
{
|
@@ -3069,7 +3577,7 @@ class Carbon extends DateTime
|
|
3069 |
/**
|
3070 |
* Go backward to the previous weekday.
|
3071 |
*
|
3072 |
-
* @return
|
3073 |
*/
|
3074 |
public function previousWeekday()
|
3075 |
{
|
@@ -3079,7 +3587,7 @@ class Carbon extends DateTime
|
|
3079 |
/**
|
3080 |
* Go forward to the next weekend day.
|
3081 |
*
|
3082 |
-
* @return
|
3083 |
*/
|
3084 |
public function nextWeekendDay()
|
3085 |
{
|
@@ -3089,7 +3597,7 @@ class Carbon extends DateTime
|
|
3089 |
/**
|
3090 |
* Go backward to the previous weekend day.
|
3091 |
*
|
3092 |
-
* @return
|
3093 |
*/
|
3094 |
public function previousWeekendDay()
|
3095 |
{
|
@@ -3170,11 +3678,11 @@ class Carbon extends DateTime
|
|
3170 |
*/
|
3171 |
public function nthOfMonth($nth, $dayOfWeek)
|
3172 |
{
|
3173 |
-
$
|
3174 |
-
$check = $
|
3175 |
-
$
|
3176 |
|
3177 |
-
return $
|
3178 |
}
|
3179 |
|
3180 |
/**
|
@@ -3183,7 +3691,7 @@ class Carbon extends DateTime
|
|
3183 |
* first day of the current quarter. Use the supplied constants
|
3184 |
* to indicate the desired dayOfWeek, ex. static::MONDAY.
|
3185 |
*
|
3186 |
-
* @param int|null $dayOfWeek
|
3187 |
*
|
3188 |
* @return static
|
3189 |
*/
|
@@ -3198,7 +3706,7 @@ class Carbon extends DateTime
|
|
3198 |
* last day of the current quarter. Use the supplied constants
|
3199 |
* to indicate the desired dayOfWeek, ex. static::MONDAY.
|
3200 |
*
|
3201 |
-
* @param int|null $dayOfWeek
|
3202 |
*
|
3203 |
* @return static
|
3204 |
*/
|
@@ -3220,12 +3728,12 @@ class Carbon extends DateTime
|
|
3220 |
*/
|
3221 |
public function nthOfQuarter($nth, $dayOfWeek)
|
3222 |
{
|
3223 |
-
$
|
3224 |
-
$lastMonth = $
|
3225 |
-
$year = $
|
3226 |
-
$
|
3227 |
|
3228 |
-
return ($lastMonth < $
|
3229 |
}
|
3230 |
|
3231 |
/**
|
@@ -3234,7 +3742,7 @@ class Carbon extends DateTime
|
|
3234 |
* first day of the current year. Use the supplied constants
|
3235 |
* to indicate the desired dayOfWeek, ex. static::MONDAY.
|
3236 |
*
|
3237 |
-
* @param int|null $dayOfWeek
|
3238 |
*
|
3239 |
* @return static
|
3240 |
*/
|
@@ -3249,7 +3757,7 @@ class Carbon extends DateTime
|
|
3249 |
* last day of the current year. Use the supplied constants
|
3250 |
* to indicate the desired dayOfWeek, ex. static::MONDAY.
|
3251 |
*
|
3252 |
-
* @param int|null $dayOfWeek
|
3253 |
*
|
3254 |
* @return static
|
3255 |
*/
|
@@ -3271,56 +3779,43 @@ class Carbon extends DateTime
|
|
3271 |
*/
|
3272 |
public function nthOfYear($nth, $dayOfWeek)
|
3273 |
{
|
3274 |
-
$
|
3275 |
|
3276 |
-
return $this->year === $
|
3277 |
}
|
3278 |
|
3279 |
/**
|
3280 |
* Modify the current instance to the average of a given instance (default now) and the current instance.
|
3281 |
*
|
3282 |
-
* @param \Carbon\Carbon|null $
|
3283 |
*
|
3284 |
* @return static
|
3285 |
*/
|
3286 |
-
public function average(
|
3287 |
{
|
3288 |
-
|
3289 |
-
|
3290 |
-
return $this->addSeconds((int) ($this->diffInSeconds($dt, false) / 2));
|
3291 |
}
|
3292 |
|
3293 |
/**
|
3294 |
* Check if its the birthday. Compares the date/month values of the two dates.
|
3295 |
*
|
3296 |
-
* @param \Carbon\Carbon|null $
|
3297 |
*
|
3298 |
* @return bool
|
3299 |
*/
|
3300 |
-
public function isBirthday(
|
3301 |
{
|
3302 |
-
return $this->isSameAs('md', $
|
3303 |
}
|
3304 |
|
3305 |
/**
|
3306 |
-
*
|
3307 |
*
|
3308 |
-
* @
|
3309 |
-
*
|
3310 |
-
* @return static
|
3311 |
*/
|
3312 |
-
public function
|
3313 |
{
|
3314 |
-
|
3315 |
-
return parent::modify($modify);
|
3316 |
-
}
|
3317 |
-
|
3318 |
-
$timezone = $this->getTimezone();
|
3319 |
-
$this->setTimezone('UTC');
|
3320 |
-
$instance = parent::modify($modify);
|
3321 |
-
$this->setTimezone($timezone);
|
3322 |
-
|
3323 |
-
return $instance;
|
3324 |
}
|
3325 |
|
3326 |
/**
|
@@ -3334,7 +3829,7 @@ class Carbon extends DateTime
|
|
3334 |
}
|
3335 |
|
3336 |
/**
|
3337 |
-
* Create an instance
|
3338 |
*
|
3339 |
* @param string $value
|
3340 |
*
|
@@ -3352,4 +3847,16 @@ class Carbon extends DateTime
|
|
3352 |
|
3353 |
return $instance;
|
3354 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3355 |
}
|
15 |
use Closure;
|
16 |
use DatePeriod;
|
17 |
use DateTime;
|
18 |
+
use DateTimeInterface;
|
19 |
use DateTimeZone;
|
20 |
use InvalidArgumentException;
|
21 |
use Symfony\Component\Translation\Loader\ArrayLoader;
|
39 |
* @property-read int $dayOfWeek 0 (for Sunday) through 6 (for Saturday)
|
40 |
* @property-read int $dayOfYear 0 through 365
|
41 |
* @property-read int $weekOfMonth 1 through 5
|
42 |
+
* @property-read int $weekNumberInMonth 1 through 5
|
43 |
* @property-read int $weekOfYear ISO-8601 week number of year, weeks starting on Monday
|
44 |
* @property-read int $daysInMonth number of days in the given month
|
45 |
* @property-read int $age does a diffInYears() with default parameters
|
80 |
self::SATURDAY => 'Saturday',
|
81 |
);
|
82 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
83 |
/**
|
84 |
* Number of X in Y.
|
85 |
*/
|
93 |
const MINUTES_PER_HOUR = 60;
|
94 |
const SECONDS_PER_MINUTE = 60;
|
95 |
|
96 |
+
/**
|
97 |
+
* RFC7231 DateTime format.
|
98 |
+
*
|
99 |
+
* @var string
|
100 |
+
*/
|
101 |
+
const RFC7231_FORMAT = 'D, d M Y H:i:s \G\M\T';
|
102 |
+
|
103 |
/**
|
104 |
* Default format to use for __toString method when type juggling occurs.
|
105 |
*
|
107 |
*/
|
108 |
const DEFAULT_TO_STRING_FORMAT = 'Y-m-d H:i:s';
|
109 |
|
110 |
+
/**
|
111 |
+
* Format for converting mocked time, includes microseconds.
|
112 |
+
*
|
113 |
+
* @var string
|
114 |
+
*/
|
115 |
+
const MOCK_DATETIME_FORMAT = 'Y-m-d H:i:s.u';
|
116 |
+
|
117 |
+
/**
|
118 |
+
* Customizable PHP_INT_SIZE override.
|
119 |
+
*
|
120 |
+
* @var int
|
121 |
+
*/
|
122 |
+
public static $PHPIntSize = PHP_INT_SIZE;
|
123 |
+
|
124 |
/**
|
125 |
* Format to use for __toString method when type juggling occurs.
|
126 |
*
|
152 |
self::SUNDAY,
|
153 |
);
|
154 |
|
155 |
+
/**
|
156 |
+
* Midday/noon hour.
|
157 |
+
*
|
158 |
+
* @var int
|
159 |
+
*/
|
160 |
+
protected static $midDayAt = 12;
|
161 |
+
|
162 |
+
/**
|
163 |
+
* Format regex patterns.
|
164 |
+
*
|
165 |
+
* @var array
|
166 |
+
*/
|
167 |
+
protected static $regexFormats = array(
|
168 |
+
'd' => '(3[01]|[12][0-9]|0[1-9])',
|
169 |
+
'D' => '([a-zA-Z]{3})',
|
170 |
+
'j' => '([123][0-9]|[1-9])',
|
171 |
+
'l' => '([a-zA-Z]{2,})',
|
172 |
+
'N' => '([1-7])',
|
173 |
+
'S' => '([a-zA-Z]{2})',
|
174 |
+
'w' => '([0-6])',
|
175 |
+
'z' => '(36[0-5]|3[0-5][0-9]|[12][0-9]{2}|[1-9]?[0-9])',
|
176 |
+
'W' => '(5[012]|[1-4][0-9]|[1-9])',
|
177 |
+
'F' => '([a-zA-Z]{2,})',
|
178 |
+
'm' => '(1[012]|0[1-9])',
|
179 |
+
'M' => '([a-zA-Z]{3})',
|
180 |
+
'n' => '(1[012]|[1-9])',
|
181 |
+
't' => '(2[89]|3[01])',
|
182 |
+
'L' => '(0|1)',
|
183 |
+
'o' => '([1-9][0-9]{0,4})',
|
184 |
+
'Y' => '([1-9][0-9]{0,4})',
|
185 |
+
'y' => '([0-9]{2})',
|
186 |
+
'a' => '(am|pm)',
|
187 |
+
'A' => '(AM|PM)',
|
188 |
+
'B' => '([0-9]{3})',
|
189 |
+
'g' => '(1[012]|[1-9])',
|
190 |
+
'G' => '(2[0-3]|1?[0-9])',
|
191 |
+
'h' => '(1[012]|0[1-9])',
|
192 |
+
'H' => '(2[0-3]|[01][0-9])',
|
193 |
+
'i' => '([0-5][0-9])',
|
194 |
+
's' => '([0-5][0-9])',
|
195 |
+
'u' => '([0-9]{1,6})',
|
196 |
+
'v' => '([0-9]{1,3})',
|
197 |
+
'e' => '([a-zA-Z]{1,5})|([a-zA-Z]*\/[a-zA-Z]*)',
|
198 |
+
'I' => '(0|1)',
|
199 |
+
'O' => '([\+\-](1[012]|0[0-9])[0134][05])',
|
200 |
+
'P' => '([\+\-](1[012]|0[0-9]):[0134][05])',
|
201 |
+
'T' => '([a-zA-Z]{1,5})',
|
202 |
+
'Z' => '(-?[1-5]?[0-9]{1,4})',
|
203 |
+
'U' => '([0-9]*)',
|
204 |
+
|
205 |
+
// The formats below are combinations of the above formats.
|
206 |
+
'c' => '(([1-9][0-9]{0,4})\-(1[012]|0[1-9])\-(3[01]|[12][0-9]|0[1-9])T(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[\+\-](1[012]|0[0-9]):([0134][05]))', // Y-m-dTH:i:sP
|
207 |
+
'r' => '(([a-zA-Z]{3}), ([123][0-9]|[1-9]) ([a-zA-Z]{3}) ([1-9][0-9]{0,4}) (2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9]) [\+\-](1[012]|0[0-9])([0134][05]))', // D, j M Y H:i:s O
|
208 |
+
);
|
209 |
+
|
210 |
/**
|
211 |
* A test Carbon instance to be returned when now instances are created.
|
212 |
*
|
235 |
*/
|
236 |
protected static $utf8 = false;
|
237 |
|
238 |
+
/**
|
239 |
* Indicates if months should be calculated with overflow.
|
240 |
*
|
241 |
* @var bool
|
242 |
*/
|
243 |
protected static $monthsOverflow = true;
|
244 |
|
245 |
+
/**
|
246 |
+
* Indicates if years should be calculated with overflow.
|
247 |
+
*
|
248 |
+
* @var bool
|
249 |
+
*/
|
250 |
+
protected static $yearsOverflow = true;
|
251 |
+
|
252 |
/**
|
253 |
* Indicates if months should be calculated with overflow.
|
254 |
*
|
281 |
return static::$monthsOverflow;
|
282 |
}
|
283 |
|
284 |
+
/**
|
285 |
+
* Indicates if years should be calculated with overflow.
|
286 |
+
*
|
287 |
+
* @param bool $yearsOverflow
|
288 |
+
*
|
289 |
+
* @return void
|
290 |
+
*/
|
291 |
+
public static function useYearsOverflow($yearsOverflow = true)
|
292 |
+
{
|
293 |
+
static::$yearsOverflow = $yearsOverflow;
|
294 |
+
}
|
295 |
+
|
296 |
+
/**
|
297 |
+
* Reset the month overflow behavior.
|
298 |
+
*
|
299 |
+
* @return void
|
300 |
+
*/
|
301 |
+
public static function resetYearsOverflow()
|
302 |
+
{
|
303 |
+
static::$yearsOverflow = true;
|
304 |
+
}
|
305 |
+
|
306 |
+
/**
|
307 |
+
* Get the month overflow behavior.
|
308 |
+
*
|
309 |
+
* @return bool
|
310 |
+
*/
|
311 |
+
public static function shouldOverflowYears()
|
312 |
+
{
|
313 |
+
return static::$yearsOverflow;
|
314 |
+
}
|
315 |
+
|
316 |
/**
|
317 |
* Creates a DateTimeZone from a string, DateTimeZone or integer offset.
|
318 |
*
|
369 |
{
|
370 |
// If the class has a test now set and we are trying to create a now()
|
371 |
// instance then override as required
|
372 |
+
$isNow = empty($time) || $time === 'now';
|
373 |
+
if (static::hasTestNow() && ($isNow || static::hasRelativeKeywords($time))) {
|
374 |
$testInstance = clone static::getTestNow();
|
375 |
if (static::hasRelativeKeywords($time)) {
|
376 |
$testInstance->modify($time);
|
383 |
$tz = $testInstance->getTimezone();
|
384 |
}
|
385 |
|
386 |
+
$time = $testInstance->format(static::MOCK_DATETIME_FORMAT);
|
387 |
+
}
|
388 |
+
|
389 |
+
// Get microseconds from microtime() if "now" asked and PHP < 7.1
|
390 |
+
$timezone = static::safeCreateDateTimeZone($tz);
|
391 |
+
// @codeCoverageIgnoreStart
|
392 |
+
if ($isNow && !isset($testInstance) && (
|
393 |
+
version_compare(PHP_VERSION, '7.1.0-dev', '<')
|
394 |
+
||
|
395 |
+
version_compare(PHP_VERSION, '7.1.3-dev', '>=') && version_compare(PHP_VERSION, '7.1.4-dev', '<')
|
396 |
+
)
|
397 |
+
) {
|
398 |
+
$dateTime = new DateTime('now', $timezone);
|
399 |
+
$microTime = microtime(true) * 1000000 % 1000000;
|
400 |
+
if ($microTime > 0) {
|
401 |
+
$microTime = str_pad(strval($microTime), 6, '0', STR_PAD_LEFT);
|
402 |
+
$time = $dateTime->format(static::DEFAULT_TO_STRING_FORMAT).'.'.$microTime;
|
403 |
+
}
|
404 |
}
|
405 |
+
// @codeCoverageIgnoreEnd
|
406 |
|
407 |
+
// Work-around for PHP bug https://bugs.php.net/bug.php?id=67127
|
408 |
+
if (strpos((string) .1, '.') === false) {
|
409 |
+
$locale = setlocale(LC_NUMERIC, '0');
|
410 |
+
setlocale(LC_NUMERIC, 'C');
|
411 |
+
}
|
412 |
+
parent::__construct($time, $timezone);
|
413 |
+
if (isset($locale)) {
|
414 |
+
setlocale(LC_NUMERIC, $locale);
|
415 |
+
}
|
416 |
+
static::setLastErrors(parent::getLastErrors());
|
417 |
}
|
418 |
|
419 |
/**
|
420 |
* Create a Carbon instance from a DateTime one.
|
421 |
*
|
422 |
+
* @param \DateTime $date
|
423 |
*
|
424 |
* @return static
|
425 |
*/
|
426 |
+
public static function instance(DateTime $date)
|
427 |
{
|
428 |
+
if ($date instanceof static) {
|
429 |
+
return clone $date;
|
430 |
}
|
431 |
|
432 |
+
return new static($date->format('Y-m-d H:i:s.u'), $date->getTimezone());
|
433 |
}
|
434 |
|
435 |
/**
|
504 |
*/
|
505 |
public static function maxValue()
|
506 |
{
|
507 |
+
if (self::$PHPIntSize === 4) {
|
508 |
+
// 32 bit
|
509 |
+
return static::createFromTimestamp(PHP_INT_MAX); // @codeCoverageIgnore
|
510 |
}
|
511 |
|
512 |
// 64 bit
|
520 |
*/
|
521 |
public static function minValue()
|
522 |
{
|
523 |
+
if (self::$PHPIntSize === 4) {
|
524 |
+
// 32 bit
|
525 |
+
return static::createFromTimestamp(~PHP_INT_MAX); // @codeCoverageIgnore
|
526 |
}
|
527 |
|
528 |
// 64 bit
|
549 |
* @param int|null $second
|
550 |
* @param \DateTimeZone|string|null $tz
|
551 |
*
|
552 |
+
* @throws \InvalidArgumentException
|
553 |
+
*
|
554 |
* @return static
|
555 |
*/
|
556 |
public static function create($year = null, $month = null, $day = null, $hour = null, $minute = null, $second = null, $tz = null)
|
557 |
{
|
558 |
+
$now = static::hasTestNow() ? static::getTestNow() : static::now($tz);
|
559 |
|
560 |
$defaults = array_combine(array(
|
561 |
'year',
|
564 |
'hour',
|
565 |
'minute',
|
566 |
'second',
|
567 |
+
), explode('-', $now->format('Y-n-j-G-i-s')));
|
568 |
|
569 |
$year = $year === null ? $defaults['year'] : $year;
|
570 |
$month = $month === null ? $defaults['month'] : $month;
|
621 |
* @param int|null $second
|
622 |
* @param \DateTimeZone|string|null $tz
|
623 |
*
|
624 |
+
* @throws \Carbon\Exceptions\InvalidDateException|\InvalidArgumentException
|
625 |
*
|
626 |
* @return static
|
627 |
*/
|
642 |
}
|
643 |
}
|
644 |
|
645 |
+
$instance = static::create($year, $month, $day, $hour, $minute, $second, $tz);
|
646 |
|
647 |
+
foreach (array_reverse($fields) as $field => $range) {
|
648 |
+
if ($$field !== null && (!is_int($$field) || $$field !== $instance->$field)) {
|
649 |
+
throw new InvalidDateException($field, $$field);
|
650 |
+
}
|
651 |
}
|
652 |
|
653 |
+
return $instance;
|
654 |
}
|
655 |
|
656 |
/**
|
661 |
* @param int|null $day
|
662 |
* @param \DateTimeZone|string|null $tz
|
663 |
*
|
664 |
+
* @throws \InvalidArgumentException
|
665 |
+
*
|
666 |
* @return static
|
667 |
*/
|
668 |
public static function createFromDate($year = null, $month = null, $day = null, $tz = null)
|
670 |
return static::create($year, $month, $day, null, null, null, $tz);
|
671 |
}
|
672 |
|
673 |
+
/**
|
674 |
+
* Create a Carbon instance from just a date. The time portion is set to midnight.
|
675 |
+
*
|
676 |
+
* @param int|null $year
|
677 |
+
* @param int|null $month
|
678 |
+
* @param int|null $day
|
679 |
+
* @param \DateTimeZone|string|null $tz
|
680 |
+
*
|
681 |
+
* @return static
|
682 |
+
*/
|
683 |
+
public static function createMidnightDate($year = null, $month = null, $day = null, $tz = null)
|
684 |
+
{
|
685 |
+
return static::create($year, $month, $day, 0, 0, 0, $tz);
|
686 |
+
}
|
687 |
+
|
688 |
/**
|
689 |
* Create a Carbon instance from just a time. The date portion is set to today.
|
690 |
*
|
693 |
* @param int|null $second
|
694 |
* @param \DateTimeZone|string|null $tz
|
695 |
*
|
696 |
+
* @throws \InvalidArgumentException
|
697 |
+
*
|
698 |
* @return static
|
699 |
*/
|
700 |
public static function createFromTime($hour = null, $minute = null, $second = null, $tz = null)
|
705 |
/**
|
706 |
* Create a Carbon instance from a specific format.
|
707 |
*
|
708 |
+
* @param string $format Datetime format
|
709 |
* @param string $time
|
710 |
* @param \DateTimeZone|string|null $tz
|
711 |
*
|
712 |
+
* @throws InvalidArgumentException
|
713 |
*
|
714 |
* @return static
|
715 |
*/
|
716 |
public static function createFromFormat($format, $time, $tz = null)
|
717 |
{
|
718 |
if ($tz !== null) {
|
719 |
+
$date = parent::createFromFormat($format, $time, static::safeCreateDateTimeZone($tz));
|
720 |
} else {
|
721 |
+
$date = parent::createFromFormat($format, $time);
|
722 |
}
|
723 |
|
724 |
+
$lastErrors = parent::getLastErrors();
|
725 |
+
|
726 |
+
if ($date instanceof DateTime) {
|
727 |
+
$instance = static::instance($date);
|
728 |
+
$instance::setLastErrors($lastErrors);
|
729 |
|
730 |
+
return $instance;
|
|
|
731 |
}
|
732 |
|
733 |
throw new InvalidArgumentException(implode(PHP_EOL, $lastErrors['errors']));
|
766 |
return static::now($tz)->setTimestamp($timestamp);
|
767 |
}
|
768 |
|
769 |
+
/**
|
770 |
+
* Create a Carbon instance from a timestamp in milliseconds.
|
771 |
+
*
|
772 |
+
* @param int $timestamp
|
773 |
+
* @param \DateTimeZone|string|null $tz
|
774 |
+
*
|
775 |
+
* @return static
|
776 |
+
*/
|
777 |
+
public static function createFromTimestampMs($timestamp, $tz = null)
|
778 |
+
{
|
779 |
+
return static::createFromFormat('U.u', sprintf('%F', $timestamp / 1000))
|
780 |
+
->setTimezone($tz);
|
781 |
+
}
|
782 |
+
|
783 |
/**
|
784 |
* Create a Carbon instance from an UTC timestamp.
|
785 |
*
|
802 |
return clone $this;
|
803 |
}
|
804 |
|
805 |
+
/**
|
806 |
+
* Returns a present instance in the same timezone.
|
807 |
+
*
|
808 |
+
* @return static
|
809 |
+
*/
|
810 |
+
public function nowWithSameTz()
|
811 |
+
{
|
812 |
+
return static::now($this->getTimezone());
|
813 |
+
}
|
814 |
+
|
815 |
+
/**
|
816 |
+
* Return the Carbon instance passed through or a copy in the same timezone.
|
817 |
+
*
|
818 |
+
* @param \Carbon\Carbon|null $date
|
819 |
+
*
|
820 |
+
* @return static
|
821 |
+
*/
|
822 |
+
protected function resolveCarbon(self $date = null)
|
823 |
+
{
|
824 |
+
return $date ?: $this->nowWithSameTz();
|
825 |
+
}
|
826 |
+
|
827 |
///////////////////////////////////////////////////////////////////
|
828 |
///////////////////////// GETTERS AND SETTERS /////////////////////
|
829 |
///////////////////////////////////////////////////////////////////
|
839 |
*/
|
840 |
public function __get($name)
|
841 |
{
|
842 |
+
static $formats = array(
|
843 |
+
'year' => 'Y',
|
844 |
+
'yearIso' => 'o',
|
845 |
+
'month' => 'n',
|
846 |
+
'day' => 'j',
|
847 |
+
'hour' => 'G',
|
848 |
+
'minute' => 'i',
|
849 |
+
'second' => 's',
|
850 |
+
'micro' => 'u',
|
851 |
+
'dayOfWeek' => 'w',
|
852 |
+
'dayOfYear' => 'z',
|
853 |
+
'weekOfYear' => 'W',
|
854 |
+
'daysInMonth' => 't',
|
855 |
+
'timestamp' => 'U',
|
856 |
+
);
|
857 |
+
|
858 |
switch (true) {
|
859 |
+
case isset($formats[$name]):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
860 |
return (int) $this->format($formats[$name]);
|
861 |
|
862 |
case $name === 'weekOfMonth':
|
863 |
return (int) ceil($this->day / static::DAYS_PER_WEEK);
|
864 |
|
865 |
+
case $name === 'weekNumberInMonth':
|
866 |
+
return (int) ceil(($this->day + $this->copy()->startOfMonth()->dayOfWeek - 1) / static::DAYS_PER_WEEK);
|
867 |
+
|
868 |
case $name === 'age':
|
869 |
return $this->diffInYears();
|
870 |
|
922 |
* @param string|int|\DateTimeZone $value
|
923 |
*
|
924 |
* @throws \InvalidArgumentException
|
925 |
+
*
|
926 |
+
* @return void
|
927 |
*/
|
928 |
public function __set($name, $value)
|
929 |
{
|
1137 |
*/
|
1138 |
public function setTimezone($value)
|
1139 |
{
|
1140 |
+
parent::setTimezone(static::safeCreateDateTimeZone($value));
|
1141 |
+
// https://bugs.php.net/bug.php?id=72338
|
1142 |
+
// just workaround on this bug
|
1143 |
+
$this->getTimestamp();
|
1144 |
+
|
1145 |
+
return $this;
|
1146 |
+
}
|
1147 |
+
|
1148 |
+
/**
|
1149 |
+
* Get the days of the week
|
1150 |
+
*
|
1151 |
+
* @return array
|
1152 |
+
*/
|
1153 |
+
public static function getDays()
|
1154 |
+
{
|
1155 |
+
return static::$days;
|
1156 |
}
|
1157 |
|
1158 |
///////////////////////////////////////////////////////////////////
|
1172 |
/**
|
1173 |
* Set the first day of week
|
1174 |
*
|
1175 |
+
* @param int $day week start day
|
1176 |
+
*
|
1177 |
+
* @return void
|
1178 |
*/
|
1179 |
public static function setWeekStartsAt($day)
|
1180 |
{
|
1194 |
/**
|
1195 |
* Set the last day of week
|
1196 |
*
|
1197 |
+
* @param int $day
|
1198 |
+
*
|
1199 |
+
* @return void
|
1200 |
*/
|
1201 |
public static function setWeekEndsAt($day)
|
1202 |
{
|
1216 |
/**
|
1217 |
* Set weekend days
|
1218 |
*
|
1219 |
+
* @param array $days
|
1220 |
+
*
|
1221 |
+
* @return void
|
1222 |
*/
|
1223 |
public static function setWeekendDays($days)
|
1224 |
{
|
1225 |
static::$weekendDays = $days;
|
1226 |
}
|
1227 |
|
1228 |
+
/**
|
1229 |
+
* get midday/noon hour
|
1230 |
+
*
|
1231 |
+
* @return int
|
1232 |
+
*/
|
1233 |
+
public static function getMidDayAt()
|
1234 |
+
{
|
1235 |
+
return static::$midDayAt;
|
1236 |
+
}
|
1237 |
+
|
1238 |
+
/**
|
1239 |
+
* Set midday/noon hour
|
1240 |
+
*
|
1241 |
+
* @param int $hour midday hour
|
1242 |
+
*
|
1243 |
+
* @return void
|
1244 |
+
*/
|
1245 |
+
public static function setMidDayAt($hour)
|
1246 |
+
{
|
1247 |
+
static::$midDayAt = $hour;
|
1248 |
+
}
|
1249 |
+
|
1250 |
///////////////////////////////////////////////////////////////////
|
1251 |
///////////////////////// TESTING AIDS ////////////////////////////
|
1252 |
///////////////////////////////////////////////////////////////////
|
1266 |
* To clear the test instance call this method using the default
|
1267 |
* parameter of null.
|
1268 |
*
|
1269 |
+
* @param \Carbon\Carbon|null $testNow real or mock Carbon instance
|
1270 |
* @param \Carbon\Carbon|string|null $testNow
|
1271 |
*/
|
1272 |
public static function setTestNow($testNow = null)
|
1297 |
}
|
1298 |
|
1299 |
/**
|
1300 |
+
* Determine if a time string will produce a relative date.
|
|
|
1301 |
*
|
1302 |
* @param string $time
|
1303 |
*
|
1304 |
+
* @return bool true if time match a relative date, false if absolute or invalid time string
|
1305 |
*/
|
1306 |
public static function hasRelativeKeywords($time)
|
1307 |
{
|
1308 |
+
if (strtotime($time) === false) {
|
1309 |
+
return false;
|
|
|
|
|
|
|
|
|
|
|
1310 |
}
|
1311 |
|
1312 |
+
$date1 = new DateTime('2000-01-01T00:00:00Z');
|
1313 |
+
$date1->modify($time);
|
1314 |
+
$date2 = new DateTime('2001-12-25T00:00:00Z');
|
1315 |
+
$date2->modify($time);
|
1316 |
+
|
1317 |
+
return $date1 != $date2;
|
1318 |
}
|
1319 |
|
1320 |
///////////////////////////////////////////////////////////////////
|
1329 |
protected static function translator()
|
1330 |
{
|
1331 |
if (static::$translator === null) {
|
1332 |
+
$translator = new Translator('en');
|
1333 |
+
$translator->addLoader('array', new ArrayLoader());
|
1334 |
+
static::$translator = $translator;
|
1335 |
static::setLocale('en');
|
1336 |
}
|
1337 |
|
1352 |
* Set the translator instance to use
|
1353 |
*
|
1354 |
* @param \Symfony\Component\Translation\TranslatorInterface $translator
|
1355 |
+
*
|
1356 |
+
* @return void
|
1357 |
*/
|
1358 |
public static function setTranslator(TranslatorInterface $translator)
|
1359 |
{
|
1373 |
/**
|
1374 |
* Set the current translator locale and indicate if the source locale file exists
|
1375 |
*
|
1376 |
+
* @param string $locale locale ex. en
|
1377 |
*
|
1378 |
* @return bool
|
1379 |
*/
|
1380 |
public static function setLocale($locale)
|
1381 |
{
|
1382 |
+
$locale = preg_replace_callback('/[-_]([a-z]{2,})/', function ($matches) {
|
1383 |
+
// _2-letters is a region, _3+-letters is a variant
|
1384 |
+
return '_'.call_user_func(strlen($matches[1]) > 2 ? 'ucfirst' : 'strtoupper', $matches[1]);
|
1385 |
}, strtolower($locale));
|
1386 |
|
1387 |
if (file_exists($filename = __DIR__.'/Lang/'.$locale.'.php')) {
|
1388 |
+
$translator = static::translator();
|
1389 |
+
$translator->setLocale($locale);
|
1390 |
+
|
1391 |
+
if ($translator instanceof Translator) {
|
1392 |
+
// Ensure the locale has been loaded.
|
1393 |
+
$translator->addResource('array', require $filename, $locale);
|
1394 |
+
}
|
1395 |
|
1396 |
return true;
|
1397 |
}
|
1423 |
*/
|
1424 |
public function formatLocalized($format)
|
1425 |
{
|
1426 |
+
// Check for Windows to find and replace the %e modifier correctly.
|
|
|
1427 |
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
|
1428 |
+
$format = preg_replace('#(?<!%)((?:%%)*)%e#', '\1%#d', $format); // @codeCoverageIgnore
|
1429 |
}
|
1430 |
|
1431 |
+
$formatted = strftime($format, strtotime($this->toDateTimeString()));
|
1432 |
|
1433 |
return static::$utf8 ? utf8_encode($formatted) : $formatted;
|
1434 |
}
|
1435 |
|
1436 |
/**
|
1437 |
* Reset the format used to the default when type juggling a Carbon instance to a string
|
1438 |
+
*
|
1439 |
+
* @return void
|
1440 |
*/
|
1441 |
public static function resetToStringFormat()
|
1442 |
{
|
1447 |
* Set the default format used when type juggling a Carbon instance to a string
|
1448 |
*
|
1449 |
* @param string $format
|
1450 |
+
*
|
1451 |
+
* @return void
|
1452 |
*/
|
1453 |
public static function setToStringFormat($format)
|
1454 |
{
|
1555 |
return $this->format(static::RFC822);
|
1556 |
}
|
1557 |
|
1558 |
+
/**
|
1559 |
+
* Convert the instance to UTC and return as Zulu ISO8601
|
1560 |
+
*
|
1561 |
+
* @return string
|
1562 |
+
*/
|
1563 |
+
public function toIso8601ZuluString()
|
1564 |
+
{
|
1565 |
+
return $this->copy()->setTimezone('UTC')->format('Y-m-d\TH:i:s\Z');
|
1566 |
+
}
|
1567 |
+
|
1568 |
/**
|
1569 |
* Format the instance as RFC850
|
1570 |
*
|
1635 |
return $this->format(static::W3C);
|
1636 |
}
|
1637 |
|
1638 |
+
/**
|
1639 |
+
* Format the instance as RFC7231
|
1640 |
+
*
|
1641 |
+
* @return string
|
1642 |
+
*/
|
1643 |
+
public function toRfc7231String()
|
1644 |
+
{
|
1645 |
+
return $this->copy()
|
1646 |
+
->setTimezone('GMT')
|
1647 |
+
->format(static::RFC7231_FORMAT);
|
1648 |
+
}
|
1649 |
+
|
1650 |
+
/**
|
1651 |
+
* Get default array representation
|
1652 |
+
*
|
1653 |
+
* @return array
|
1654 |
+
*/
|
1655 |
+
public function toArray()
|
1656 |
+
{
|
1657 |
+
return array(
|
1658 |
+
'year' => $this->year,
|
1659 |
+
'month' => $this->month,
|
1660 |
+
'day' => $this->day,
|
1661 |
+
'dayOfWeek' => $this->dayOfWeek,
|
1662 |
+
'dayOfYear' => $this->dayOfYear,
|
1663 |
+
'hour' => $this->hour,
|
1664 |
+
'minute' => $this->minute,
|
1665 |
+
'second' => $this->second,
|
1666 |
+
'micro' => $this->micro,
|
1667 |
+
'timestamp' => $this->timestamp,
|
1668 |
+
'formatted' => $this->format(self::DEFAULT_TO_STRING_FORMAT),
|
1669 |
+
'timezone' => $this->timezone,
|
1670 |
+
);
|
1671 |
+
}
|
1672 |
+
|
1673 |
///////////////////////////////////////////////////////////////////
|
1674 |
////////////////////////// COMPARISONS ////////////////////////////
|
1675 |
///////////////////////////////////////////////////////////////////
|
1677 |
/**
|
1678 |
* Determines if the instance is equal to another
|
1679 |
*
|
1680 |
+
* @param \Carbon\Carbon|\DateTimeInterface|mixed $date
|
1681 |
*
|
1682 |
* @return bool
|
1683 |
*/
|
1684 |
+
public function eq($date)
|
1685 |
{
|
1686 |
+
return $this == $date;
|
1687 |
}
|
1688 |
|
1689 |
/**
|
1690 |
* Determines if the instance is equal to another
|
1691 |
*
|
1692 |
+
* @param \Carbon\Carbon|\DateTimeInterface|mixed $date
|
1693 |
*
|
1694 |
* @see eq()
|
1695 |
*
|
1696 |
* @return bool
|
1697 |
*/
|
1698 |
+
public function equalTo($date)
|
1699 |
{
|
1700 |
+
return $this->eq($date);
|
1701 |
}
|
1702 |
|
1703 |
/**
|
1704 |
* Determines if the instance is not equal to another
|
1705 |
*
|
1706 |
+
* @param \Carbon\Carbon|\DateTimeInterface|mixed $date
|
1707 |
*
|
1708 |
* @return bool
|
1709 |
*/
|
1710 |
+
public function ne($date)
|
1711 |
{
|
1712 |
+
return !$this->eq($date);
|
1713 |
}
|
1714 |
|
1715 |
/**
|
1716 |
* Determines if the instance is not equal to another
|
1717 |
*
|
1718 |
+
* @param \Carbon\Carbon|\DateTimeInterface|mixed $date
|
1719 |
*
|
1720 |
* @see ne()
|
1721 |
*
|
1722 |
* @return bool
|
1723 |
*/
|
1724 |
+
public function notEqualTo($date)
|
1725 |
{
|
1726 |
+
return $this->ne($date);
|
1727 |
}
|
1728 |
|
1729 |
/**
|
1730 |
* Determines if the instance is greater (after) than another
|
1731 |
*
|
1732 |
+
* @param \Carbon\Carbon|\DateTimeInterface|mixed $date
|
1733 |
*
|
1734 |
* @return bool
|
1735 |
*/
|
1736 |
+
public function gt($date)
|
1737 |
{
|
1738 |
+
return $this > $date;
|
1739 |
}
|
1740 |
|
1741 |
/**
|
1742 |
* Determines if the instance is greater (after) than another
|
1743 |
*
|
1744 |
+
* @param \Carbon\Carbon|\DateTimeInterface|mixed $date
|
1745 |
*
|
1746 |
* @see gt()
|
1747 |
*
|
1748 |
* @return bool
|
1749 |
*/
|
1750 |
+
public function greaterThan($date)
|
1751 |
{
|
1752 |
+
return $this->gt($date);
|
1753 |
}
|
1754 |
|
1755 |
/**
|
1756 |
* Determines if the instance is greater (after) than or equal to another
|
1757 |
*
|
1758 |
+
* @param \Carbon\Carbon|\DateTimeInterface|mixed $date
|
1759 |
*
|
1760 |
* @return bool
|
1761 |
*/
|
1762 |
+
public function gte($date)
|
1763 |
{
|
1764 |
+
return $this >= $date;
|
1765 |
}
|
1766 |
|
1767 |
/**
|
1768 |
* Determines if the instance is greater (after) than or equal to another
|
1769 |
*
|
1770 |
+
* @param \Carbon\Carbon|\DateTimeInterface|mixed $date
|
1771 |
*
|
1772 |
* @see gte()
|
1773 |
*
|
1774 |
* @return bool
|
1775 |
*/
|
1776 |
+
public function greaterThanOrEqualTo($date)
|
1777 |
{
|
1778 |
+
return $this->gte($date);
|
1779 |
}
|
1780 |
|
1781 |
/**
|
1782 |
* Determines if the instance is less (before) than another
|
1783 |
*
|
1784 |
+
* @param \Carbon\Carbon|\DateTimeInterface|mixed $date
|
1785 |
*
|
1786 |
* @return bool
|
1787 |
*/
|
1788 |
+
public function lt($date)
|
1789 |
{
|
1790 |
+
return $this < $date;
|
1791 |
}
|
1792 |
|
1793 |
/**
|
1794 |
* Determines if the instance is less (before) than another
|
1795 |
*
|
1796 |
+
* @param \Carbon\Carbon|\DateTimeInterface|mixed $date
|
1797 |
*
|
1798 |
* @see lt()
|
1799 |
*
|
1800 |
* @return bool
|
1801 |
*/
|
1802 |
+
public function lessThan($date)
|
1803 |
{
|
1804 |
+
return $this->lt($date);
|
1805 |
}
|
1806 |
|
1807 |
/**
|
1808 |
* Determines if the instance is less (before) or equal to another
|
1809 |
*
|
1810 |
+
* @param \Carbon\Carbon|\DateTimeInterface|mixed $date
|
1811 |
*
|
1812 |
* @return bool
|
1813 |
*/
|
1814 |
+
public function lte($date)
|
1815 |
{
|
1816 |
+
return $this <= $date;
|
1817 |
}
|
1818 |
|
1819 |
/**
|
1820 |
* Determines if the instance is less (before) or equal to another
|
1821 |
*
|
1822 |
+
* @param \Carbon\Carbon|\DateTimeInterface|mixed $date
|
1823 |
*
|
1824 |
* @see lte()
|
1825 |
*
|
1826 |
* @return bool
|
1827 |
*/
|
1828 |
+
public function lessThanOrEqualTo($date)
|
1829 |
{
|
1830 |
+
return $this->lte($date);
|
1831 |
}
|
1832 |
|
1833 |
/**
|
1834 |
* Determines if the instance is between two others
|
1835 |
*
|
1836 |
+
* @param \Carbon\Carbon|\DateTimeInterface|mixed $date1
|
1837 |
+
* @param \Carbon\Carbon|\DateTimeInterface|mixed $date2
|
1838 |
+
* @param bool $equal Indicates if a > and < comparison should be used or <= or >=
|
1839 |
*
|
1840 |
* @return bool
|
1841 |
*/
|
1842 |
+
public function between($date1, $date2, $equal = true)
|
1843 |
{
|
1844 |
+
if ($date1->gt($date2)) {
|
1845 |
+
$temp = $date1;
|
1846 |
+
$date1 = $date2;
|
1847 |
+
$date2 = $temp;
|
1848 |
}
|
1849 |
|
1850 |
if ($equal) {
|
1851 |
+
return $this->gte($date1) && $this->lte($date2);
|
1852 |
}
|
1853 |
|
1854 |
+
return $this->gt($date1) && $this->lt($date2);
|
1855 |
}
|
1856 |
|
1857 |
/**
|
1858 |
* Get the closest date from the instance.
|
1859 |
*
|
1860 |
+
* @param \Carbon\Carbon|\DateTimeInterface|mixed $date1
|
1861 |
+
* @param \Carbon\Carbon|\DateTimeInterface|mixed $date2
|
1862 |
*
|
1863 |
* @return static
|
1864 |
*/
|
1865 |
+
public function closest($date1, $date2)
|
1866 |
{
|
1867 |
+
return $this->diffInSeconds($date1) < $this->diffInSeconds($date2) ? $date1 : $date2;
|
1868 |
}
|
1869 |
|
1870 |
/**
|
1871 |
* Get the farthest date from the instance.
|
1872 |
*
|
1873 |
+
* @param \Carbon\Carbon|\DateTimeInterface|mixed $date1
|
1874 |
+
* @param \Carbon\Carbon|\DateTimeInterface|mixed $date2
|
1875 |
*
|
1876 |
* @return static
|
1877 |
*/
|
1878 |
+
public function farthest($date1, $date2)
|
1879 |
{
|
1880 |
+
return $this->diffInSeconds($date1) > $this->diffInSeconds($date2) ? $date1 : $date2;
|
1881 |
}
|
1882 |
|
1883 |
/**
|
1884 |
* Get the minimum instance between a given instance (default now) and the current instance.
|
1885 |
*
|
1886 |
+
* @param \Carbon\Carbon|\DateTimeInterface|mixed $date
|
1887 |
*
|
1888 |
* @return static
|
1889 |
*/
|
1890 |
+
public function min($date = null)
|
1891 |
{
|
1892 |
+
$date = $this->resolveCarbon($date);
|
1893 |
|
1894 |
+
return $this->lt($date) ? $this : $date;
|
1895 |
}
|
1896 |
|
1897 |
/**
|
1898 |
* Get the minimum instance between a given instance (default now) and the current instance.
|
1899 |
*
|
1900 |
+
* @param \Carbon\Carbon|\DateTimeInterface|mixed $date
|
1901 |
*
|
1902 |
* @see min()
|
1903 |
*
|
1904 |
* @return static
|
1905 |
*/
|
1906 |
+
public function minimum($date = null)
|
1907 |
{
|
1908 |
+
return $this->min($date);
|
1909 |
}
|
1910 |
|
1911 |
/**
|
1912 |
* Get the maximum instance between a given instance (default now) and the current instance.
|
1913 |
*
|
1914 |
+
* @param \Carbon\Carbon|\DateTimeInterface|mixed $date
|
1915 |
*
|
1916 |
* @return static
|
1917 |
*/
|
1918 |
+
public function max($date = null)
|
1919 |
{
|
1920 |
+
$date = $this->resolveCarbon($date);
|
1921 |
|
1922 |
+
return $this->gt($date) ? $this : $date;
|
1923 |
}
|
1924 |
|
1925 |
/**
|
1926 |
* Get the maximum instance between a given instance (default now) and the current instance.
|
1927 |
*
|
1928 |
+
* @param \Carbon\Carbon|\DateTimeInterface|mixed $date
|
1929 |
*
|
1930 |
* @see max()
|
1931 |
*
|
1932 |
* @return static
|
1933 |
*/
|
1934 |
+
public function maximum($date = null)
|
1935 |
{
|
1936 |
+
return $this->max($date);
|
1937 |
}
|
1938 |
|
1939 |
/**
|
1973 |
*/
|
1974 |
public function isToday()
|
1975 |
{
|
1976 |
+
return $this->toDateString() === $this->nowWithSameTz()->toDateString();
|
1977 |
}
|
1978 |
|
1979 |
/**
|
1993 |
*/
|
1994 |
public function isNextWeek()
|
1995 |
{
|
1996 |
+
return $this->weekOfYear === $this->nowWithSameTz()->addWeek()->weekOfYear;
|
1997 |
}
|
1998 |
|
1999 |
/**
|
2003 |
*/
|
2004 |
public function isLastWeek()
|
2005 |
{
|
2006 |
+
return $this->weekOfYear === $this->nowWithSameTz()->subWeek()->weekOfYear;
|
2007 |
}
|
2008 |
|
2009 |
/**
|
2013 |
*/
|
2014 |
public function isNextMonth()
|
2015 |
{
|
2016 |
+
return $this->month === $this->nowWithSameTz()->addMonthNoOverflow()->month;
|
2017 |
}
|
2018 |
|
2019 |
/**
|
2023 |
*/
|
2024 |
public function isLastMonth()
|
2025 |
{
|
2026 |
+
return $this->month === $this->nowWithSameTz()->subMonthNoOverflow()->month;
|
2027 |
}
|
2028 |
|
2029 |
/**
|
2033 |
*/
|
2034 |
public function isNextYear()
|
2035 |
{
|
2036 |
+
return $this->year === $this->nowWithSameTz()->addYear()->year;
|
2037 |
}
|
2038 |
|
2039 |
/**
|
2043 |
*/
|
2044 |
public function isLastYear()
|
2045 |
{
|
2046 |
+
return $this->year === $this->nowWithSameTz()->subYear()->year;
|
2047 |
}
|
2048 |
|
2049 |
/**
|
2053 |
*/
|
2054 |
public function isFuture()
|
2055 |
{
|
2056 |
+
return $this->gt($this->nowWithSameTz());
|
2057 |
}
|
2058 |
|
2059 |
/**
|
2063 |
*/
|
2064 |
public function isPast()
|
2065 |
{
|
2066 |
+
return $this->lt($this->nowWithSameTz());
|
2067 |
}
|
2068 |
|
2069 |
/**
|
2088 |
return static::create($this->year, 12, 28, 0, 0, 0, $this->tz)->weekOfYear === 53;
|
2089 |
}
|
2090 |
|
2091 |
+
/**
|
2092 |
* Compares the formatted values of the two dates.
|
2093 |
*
|
2094 |
+
* @param string $format The date formats to compare.
|
2095 |
+
* @param \Carbon\Carbon|\DateTimeInterface|null $date The instance to compare with or null to use current day.
|
2096 |
+
*
|
2097 |
+
* @throws \InvalidArgumentException
|
2098 |
*
|
2099 |
* @return bool
|
2100 |
*/
|
2101 |
+
public function isSameAs($format, $date = null)
|
2102 |
{
|
2103 |
+
$date = $date ?: static::now($this->tz);
|
2104 |
+
|
2105 |
+
if (!($date instanceof DateTime) && !($date instanceof DateTimeInterface)) {
|
2106 |
+
throw new InvalidArgumentException('Expected DateTime (or instanceof) object as argument.');
|
2107 |
+
}
|
2108 |
|
2109 |
+
return $this->format($format) === $date->format($format);
|
2110 |
}
|
2111 |
|
2112 |
/**
|
2122 |
/**
|
2123 |
* Checks if the passed in date is in the same year as the instance year.
|
2124 |
*
|
2125 |
+
* @param \Carbon\Carbon|\DateTimeInterface|null $date The instance to compare with or null to use current day.
|
2126 |
*
|
2127 |
* @return bool
|
2128 |
*/
|
2129 |
+
public function isSameYear($date = null)
|
2130 |
{
|
2131 |
+
return $this->isSameAs('Y', $date);
|
2132 |
}
|
2133 |
|
2134 |
/**
|
2144 |
/**
|
2145 |
* Checks if the passed in date is in the same month as the instance month (and year if needed).
|
2146 |
*
|
2147 |
+
* @param \Carbon\Carbon|\DateTimeInterface|null $date The instance to compare with or null to use current day.
|
2148 |
+
* @param bool $ofSameYear Check if it is the same month in the same year.
|
2149 |
*
|
2150 |
* @return bool
|
2151 |
*/
|
2152 |
+
public function isSameMonth($date = null, $ofSameYear = false)
|
2153 |
{
|
2154 |
+
return $this->isSameAs($ofSameYear ? 'Y-m' : 'm', $date);
|
|
|
|
|
2155 |
}
|
2156 |
|
2157 |
/**
|
2158 |
* Checks if the passed in date is the same day as the instance current day.
|
2159 |
*
|
2160 |
+
* @param \Carbon\Carbon|\DateTimeInterface $date
|
2161 |
+
*
|
2162 |
+
* @return bool
|
2163 |
+
*/
|
2164 |
+
public function isSameDay($date)
|
2165 |
+
{
|
2166 |
+
return $this->isSameAs('Y-m-d', $date);
|
2167 |
+
}
|
2168 |
+
|
2169 |
+
/**
|
2170 |
+
* Checks if this day is a specific day of the week.
|
2171 |
+
*
|
2172 |
+
* @param int $dayOfWeek
|
2173 |
*
|
2174 |
* @return bool
|
2175 |
*/
|
2176 |
+
public function isDayOfWeek($dayOfWeek)
|
2177 |
{
|
2178 |
+
return $this->dayOfWeek === $dayOfWeek;
|
2179 |
}
|
2180 |
|
2181 |
/**
|
2248 |
return $this->dayOfWeek === static::SATURDAY;
|
2249 |
}
|
2250 |
|
2251 |
+
/**
|
2252 |
+
* Checks if the (date)time string is in a given format.
|
2253 |
+
*
|
2254 |
+
* @param string $date
|
2255 |
+
* @param string $format
|
2256 |
+
*
|
2257 |
+
* @return bool
|
2258 |
+
*/
|
2259 |
+
public static function hasFormat($date, $format)
|
2260 |
+
{
|
2261 |
+
try {
|
2262 |
+
// Try to create a DateTime object. Throws an InvalidArgumentException if the provided time string
|
2263 |
+
// doesn't match the format in any way.
|
2264 |
+
static::createFromFormat($format, $date);
|
2265 |
+
|
2266 |
+
// createFromFormat() is known to handle edge cases silently.
|
2267 |
+
// E.g. "1975-5-1" (Y-n-j) will still be parsed correctly when "Y-m-d" is supplied as the format.
|
2268 |
+
// To ensure we're really testing against our desired format, perform an additional regex validation.
|
2269 |
+
$regex = strtr(
|
2270 |
+
preg_quote($format, '/'),
|
2271 |
+
static::$regexFormats
|
2272 |
+
);
|
2273 |
+
|
2274 |
+
return (bool) preg_match('/^'.$regex.'$/', $date);
|
2275 |
+
} catch (InvalidArgumentException $e) {
|
2276 |
+
}
|
2277 |
+
|
2278 |
+
return false;
|
2279 |
+
}
|
2280 |
+
|
2281 |
///////////////////////////////////////////////////////////////////
|
2282 |
/////////////////// ADDITIONS AND SUBTRACTIONS ////////////////////
|
2283 |
///////////////////////////////////////////////////////////////////
|
2292 |
*/
|
2293 |
public function addYears($value)
|
2294 |
{
|
2295 |
+
if ($this->shouldOverflowYears()) {
|
2296 |
+
return $this->addYearsWithOverflow($value);
|
2297 |
+
}
|
2298 |
+
|
2299 |
+
return $this->addYearsNoOverflow($value);
|
2300 |
}
|
2301 |
|
2302 |
/**
|
2311 |
return $this->addYears($value);
|
2312 |
}
|
2313 |
|
2314 |
+
/**
|
2315 |
+
* Add years to the instance with no overflow of months
|
2316 |
+
* Positive $value travel forward while
|
2317 |
+
* negative $value travel into the past.
|
2318 |
+
*
|
2319 |
+
* @param int $value
|
2320 |
+
*
|
2321 |
+
* @return static
|
2322 |
+
*/
|
2323 |
+
public function addYearsNoOverflow($value)
|
2324 |
+
{
|
2325 |
+
return $this->addMonthsNoOverflow($value * static::MONTHS_PER_YEAR);
|
2326 |
+
}
|
2327 |
+
|
2328 |
+
/**
|
2329 |
+
* Add year with overflow months set to false
|
2330 |
+
*
|
2331 |
+
* @param int $value
|
2332 |
+
*
|
2333 |
+
* @return static
|
2334 |
+
*/
|
2335 |
+
public function addYearNoOverflow($value = 1)
|
2336 |
+
{
|
2337 |
+
return $this->addYearsNoOverflow($value);
|
2338 |
+
}
|
2339 |
+
|
2340 |
+
/**
|
2341 |
+
* Add years to the instance.
|
2342 |
+
* Positive $value travel forward while
|
2343 |
+
* negative $value travel into the past.
|
2344 |
+
*
|
2345 |
+
* @param int $value
|
2346 |
+
*
|
2347 |
+
* @return static
|
2348 |
+
*/
|
2349 |
+
public function addYearsWithOverflow($value)
|
2350 |
+
{
|
2351 |
+
return $this->modify((int) $value.' year');
|
2352 |
+
}
|
2353 |
+
|
2354 |
+
/**
|
2355 |
+
* Add year with overflow.
|
2356 |
+
*
|
2357 |
+
* @param int $value
|
2358 |
+
*
|
2359 |
+
* @return static
|
2360 |
+
*/
|
2361 |
+
public function addYearWithOverflow($value = 1)
|
2362 |
+
{
|
2363 |
+
return $this->addYearsWithOverflow($value);
|
2364 |
+
}
|
2365 |
+
|
2366 |
/**
|
2367 |
* Remove a year from the instance
|
2368 |
*
|
2387 |
return $this->addYears(-1 * $value);
|
2388 |
}
|
2389 |
|
2390 |
+
/**
|
2391 |
+
* Remove year from the instance with no month overflow
|
2392 |
+
*
|
2393 |
+
* @param int $value
|
2394 |
+
*
|
2395 |
+
* @return static
|
2396 |
+
*/
|
2397 |
+
public function subYearNoOverflow($value = 1)
|
2398 |
+
{
|
2399 |
+
return $this->subYearsNoOverflow($value);
|
2400 |
+
}
|
2401 |
+
|
2402 |
+
/**
|
2403 |
+
* Remove years from the instance with no month overflow.
|
2404 |
+
*
|
2405 |
+
* @param int $value
|
2406 |
+
*
|
2407 |
+
* @return static
|
2408 |
+
*/
|
2409 |
+
public function subYearsNoOverflow($value)
|
2410 |
+
{
|
2411 |
+
return $this->subMonthsNoOverflow($value * static::MONTHS_PER_YEAR);
|
2412 |
+
}
|
2413 |
+
|
2414 |
+
/**
|
2415 |
+
* Remove year from the instance.
|
2416 |
+
*
|
2417 |
+
* @param int $value
|
2418 |
+
*
|
2419 |
+
* @return static
|
2420 |
+
*/
|
2421 |
+
public function subYearWithOverflow($value = 1)
|
2422 |
+
{
|
2423 |
+
return $this->subYearsWithOverflow($value);
|
2424 |
+
}
|
2425 |
+
|
2426 |
+
/**
|
2427 |
+
* Remove years from the instance.
|
2428 |
+
*
|
2429 |
+
* @param int $value
|
2430 |
+
*
|
2431 |
+
* @return static
|
2432 |
+
*/
|
2433 |
+
public function subYearsWithOverflow($value)
|
2434 |
+
{
|
2435 |
+
return $this->subMonthsWithOverflow($value * static::MONTHS_PER_YEAR);
|
2436 |
+
}
|
2437 |
+
|
2438 |
/**
|
2439 |
* Add quarters to the instance. Positive $value travels forward while
|
2440 |
* negative $value travels into the past.
|
2751 |
*/
|
2752 |
public function addWeekdays($value)
|
2753 |
{
|
2754 |
+
// Fix for weekday bug https://bugs.php.net/bug.php?id=54909
|
2755 |
$t = $this->toTimeString();
|
2756 |
$this->modify((int) $value.' weekday');
|
2757 |
|
2967 |
}
|
2968 |
|
2969 |
/**
|
2970 |
+
* Remove seconds from the instance
|
2971 |
*
|
2972 |
* @param int $value
|
2973 |
*
|
2974 |
* @return static
|
2975 |
*/
|
2976 |
+
public function subSeconds($value)
|
2977 |
{
|
2978 |
+
return $this->addSeconds(-1 * $value);
|
2979 |
}
|
2980 |
|
2981 |
/**
|
2982 |
+
* Remove a second from the instance
|
2983 |
*
|
2984 |
* @param int $value
|
2985 |
*
|
2986 |
* @return static
|
2987 |
*/
|
2988 |
+
public function subSecond($value = 1)
|
2989 |
{
|
2990 |
+
return $this->subSeconds($value);
|
2991 |
}
|
2992 |
|
2993 |
///////////////////////////////////////////////////////////////////
|
2997 |
/**
|
2998 |
* Get the difference in years
|
2999 |
*
|
3000 |
+
* @param \Carbon\Carbon|\DateTimeInterface|null $date
|
3001 |
+
* @param bool $absolute Get the absolute of the difference
|
3002 |
*
|
3003 |
* @return int
|
3004 |
*/
|
3005 |
+
public function diffInYears($date = null, $absolute = true)
|
3006 |
{
|
3007 |
+
return (int) $this->diff($this->resolveCarbon($date), $absolute)->format('%r%y');
|
|
|
|
|
3008 |
}
|
3009 |
|
3010 |
/**
|
3011 |
* Get the difference in months
|
3012 |
*
|
3013 |
+
* @param \Carbon\Carbon|\DateTimeInterface|null $date
|
3014 |
+
* @param bool $absolute Get the absolute of the difference
|
3015 |
*
|
3016 |
* @return int
|
3017 |
*/
|
3018 |
+
public function diffInMonths($date = null, $absolute = true)
|
3019 |
{
|
3020 |
+
$date = $this->resolveCarbon($date);
|
3021 |
|
3022 |
+
return $this->diffInYears($date, $absolute) * static::MONTHS_PER_YEAR + (int) $this->diff($date, $absolute)->format('%r%m');
|
3023 |
}
|
3024 |
|
3025 |
/**
|
3026 |
* Get the difference in weeks
|
3027 |
*
|
3028 |
+
* @param \Carbon\Carbon|\DateTimeInterface|null $date
|
3029 |
+
* @param bool $absolute Get the absolute of the difference
|
3030 |
*
|
3031 |
* @return int
|
3032 |
*/
|
3033 |
+
public function diffInWeeks($date = null, $absolute = true)
|
3034 |
{
|
3035 |
+
return (int) ($this->diffInDays($date, $absolute) / static::DAYS_PER_WEEK);
|
3036 |
}
|
3037 |
|
3038 |
/**
|
3039 |
* Get the difference in days
|
3040 |
*
|
3041 |
+
* @param \Carbon\Carbon|\DateTimeInterface|null $date
|
3042 |
+
* @param bool $absolute Get the absolute of the difference
|
3043 |
*
|
3044 |
* @return int
|
3045 |
*/
|
3046 |
+
public function diffInDays($date = null, $absolute = true)
|
3047 |
{
|
3048 |
+
return (int) $this->diff($this->resolveCarbon($date), $absolute)->format('%r%a');
|
|
|
|
|
3049 |
}
|
3050 |
|
3051 |
/**
|
3052 |
* Get the difference in days using a filter closure
|
3053 |
*
|
3054 |
* @param Closure $callback
|
3055 |
+
* @param \Carbon\Carbon|null $date
|
3056 |
+
* @param bool $absolute Get the absolute of the difference
|
3057 |
*
|
3058 |
* @return int
|
3059 |
*/
|
3060 |
+
public function diffInDaysFiltered(Closure $callback, $date = null, $absolute = true)
|
3061 |
{
|
3062 |
+
return $this->diffFiltered(CarbonInterval::day(), $callback, $date, $absolute);
|
3063 |
}
|
3064 |
|
3065 |
/**
|
3066 |
* Get the difference in hours using a filter closure
|
3067 |
*
|
3068 |
* @param Closure $callback
|
3069 |
+
* @param \Carbon\Carbon|null $date
|
3070 |
+
* @param bool $absolute Get the absolute of the difference
|
3071 |
*
|
3072 |
* @return int
|
3073 |
*/
|
3074 |
+
public function diffInHoursFiltered(Closure $callback, $date = null, $absolute = true)
|
3075 |
{
|
3076 |
+
return $this->diffFiltered(CarbonInterval::hour(), $callback, $date, $absolute);
|
3077 |
}
|
3078 |
|
3079 |
/**
|
3081 |
*
|
3082 |
* @param CarbonInterval $ci An interval to traverse by
|
3083 |
* @param Closure $callback
|
3084 |
+
* @param Carbon|null $date
|
3085 |
+
* @param bool $absolute Get the absolute of the difference
|
3086 |
*
|
3087 |
* @return int
|
3088 |
*/
|
3089 |
+
public function diffFiltered(CarbonInterval $ci, Closure $callback, $date = null, $absolute = true)
|
3090 |
{
|
3091 |
$start = $this;
|
3092 |
+
$end = $this->resolveCarbon($date);
|
3093 |
$inverse = false;
|
3094 |
|
3095 |
if ($end < $start) {
|
3099 |
}
|
3100 |
|
3101 |
$period = new DatePeriod($start, $ci, $end);
|
3102 |
+
$values = array_filter(iterator_to_array($period), function (DateTime $date) use ($callback) {
|
3103 |
return call_user_func($callback, Carbon::instance($date));
|
3104 |
});
|
3105 |
|
3106 |
+
$diff = count($values);
|
3107 |
|
3108 |
+
return $inverse && !$absolute ? -$diff : $diff;
|
3109 |
}
|
3110 |
|
3111 |
/**
|
3112 |
* Get the difference in weekdays
|
3113 |
*
|
3114 |
+
* @param \Carbon\Carbon|null $date
|
3115 |
+
* @param bool $absolute Get the absolute of the difference
|
3116 |
*
|
3117 |
* @return int
|
3118 |
*/
|
3119 |
+
public function diffInWeekdays($date = null, $absolute = true)
|
3120 |
{
|
3121 |
return $this->diffInDaysFiltered(function (Carbon $date) {
|
3122 |
return $date->isWeekday();
|
3123 |
+
}, $date, $absolute);
|
3124 |
}
|
3125 |
|
3126 |
/**
|
3127 |
* Get the difference in weekend days using a filter
|
3128 |
*
|
3129 |
+
* @param \Carbon\Carbon|null $date
|
3130 |
+
* @param bool $absolute Get the absolute of the difference
|
3131 |
*
|
3132 |
* @return int
|
3133 |
*/
|
3134 |
+
public function diffInWeekendDays($date = null, $absolute = true)
|
3135 |
{
|
3136 |
return $this->diffInDaysFiltered(function (Carbon $date) {
|
3137 |
return $date->isWeekend();
|
3138 |
+
}, $date, $absolute);
|
3139 |
}
|
3140 |
|
3141 |
/**
|
3142 |
* Get the difference in hours
|
3143 |
*
|
3144 |
+
* @param \Carbon\Carbon|null $date
|
3145 |
+
* @param bool $absolute Get the absolute of the difference
|
3146 |
*
|
3147 |
* @return int
|
3148 |
*/
|
3149 |
+
public function diffInHours($date = null, $absolute = true)
|
3150 |
{
|
3151 |
+
return (int) ($this->diffInSeconds($date, $absolute) / static::SECONDS_PER_MINUTE / static::MINUTES_PER_HOUR);
|
3152 |
}
|
3153 |
|
3154 |
/**
|
3155 |
* Get the difference in minutes
|
3156 |
*
|
3157 |
+
* @param \Carbon\Carbon|null $date
|
3158 |
+
* @param bool $absolute Get the absolute of the difference
|
3159 |
*
|
3160 |
* @return int
|
3161 |
*/
|
3162 |
+
public function diffInMinutes($date = null, $absolute = true)
|
3163 |
{
|
3164 |
+
return (int) ($this->diffInSeconds($date, $absolute) / static::SECONDS_PER_MINUTE);
|
3165 |
}
|
3166 |
|
3167 |
/**
|
3168 |
* Get the difference in seconds
|
3169 |
*
|
3170 |
+
* @param \Carbon\Carbon|null $date
|
3171 |
+
* @param bool $absolute Get the absolute of the difference
|
3172 |
*
|
3173 |
* @return int
|
3174 |
*/
|
3175 |
+
public function diffInSeconds($date = null, $absolute = true)
|
3176 |
{
|
3177 |
+
$diff = $this->diff($this->resolveCarbon($date));
|
3178 |
+
$value = $diff->days * static::HOURS_PER_DAY * static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE +
|
3179 |
+
$diff->h * static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE +
|
3180 |
+
$diff->i * static::SECONDS_PER_MINUTE +
|
3181 |
+
$diff->s;
|
3182 |
|
3183 |
+
return $absolute || !$diff->invert ? $value : -$value;
|
3184 |
}
|
3185 |
|
3186 |
/**
|
3194 |
}
|
3195 |
|
3196 |
/**
|
3197 |
+
* The number of seconds until 23:59:59.
|
3198 |
*
|
3199 |
* @return int
|
3200 |
*/
|
3225 |
* @param Carbon|null $other
|
3226 |
* @param bool $absolute removes time difference modifiers ago, after, etc
|
3227 |
* @param bool $short displays short format of time units
|
3228 |
+
* @param int $parts displays number of parts in the interval
|
3229 |
*
|
3230 |
* @return string
|
3231 |
*/
|
3232 |
+
public function diffForHumans(self $other = null, $absolute = false, $short = false, $parts = 1)
|
3233 |
{
|
3234 |
$isNow = $other === null;
|
3235 |
+
$interval = array();
|
3236 |
+
|
3237 |
+
$parts = min(6, max(1, (int) $parts));
|
3238 |
+
$count = 1;
|
3239 |
+
$unit = $short ? 's' : 'second';
|
3240 |
|
3241 |
if ($isNow) {
|
3242 |
+
$other = $this->nowWithSameTz();
|
3243 |
}
|
3244 |
|
3245 |
$diffInterval = $this->diff($other);
|
3246 |
|
3247 |
+
$diffIntervalArray = array(
|
3248 |
+
array('value' => $diffInterval->y, 'unit' => 'year', 'unitShort' => 'y'),
|
3249 |
+
array('value' => $diffInterval->m, 'unit' => 'month', 'unitShort' => 'm'),
|
3250 |
+
array('value' => $diffInterval->d, 'unit' => 'day', 'unitShort' => 'd'),
|
3251 |
+
array('value' => $diffInterval->h, 'unit' => 'hour', 'unitShort' => 'h'),
|
3252 |
+
array('value' => $diffInterval->i, 'unit' => 'minute', 'unitShort' => 'min'),
|
3253 |
+
array('value' => $diffInterval->s, 'unit' => 'second', 'unitShort' => 's'),
|
3254 |
+
);
|
|
|
|
|
3255 |
|
3256 |
+
foreach ($diffIntervalArray as $diffIntervalData) {
|
3257 |
+
if ($diffIntervalData['value'] > 0) {
|
3258 |
+
$unit = $short ? $diffIntervalData['unitShort'] : $diffIntervalData['unit'];
|
3259 |
+
$count = $diffIntervalData['value'];
|
3260 |
|
3261 |
+
if ($diffIntervalData['unit'] === 'day' && $count >= static::DAYS_PER_WEEK) {
|
3262 |
$unit = $short ? 'w' : 'week';
|
3263 |
$count = (int) ($count / static::DAYS_PER_WEEK);
|
|
|
|
|
3264 |
|
3265 |
+
$interval[] = static::translator()->transChoice($unit, $count, array(':count' => $count));
|
|
|
|
|
|
|
3266 |
|
3267 |
+
// get the count days excluding weeks (might be zero)
|
3268 |
+
$numOfDaysCount = (int) ($diffIntervalData['value'] - ($count * static::DAYS_PER_WEEK));
|
|
|
|
|
3269 |
|
3270 |
+
if ($numOfDaysCount > 0 && count($interval) < $parts) {
|
3271 |
+
$unit = $short ? 'd' : 'day';
|
3272 |
+
$count = $numOfDaysCount;
|
3273 |
+
$interval[] = static::translator()->transChoice($unit, $count, array(':count' => $count));
|
3274 |
+
}
|
3275 |
+
} else {
|
3276 |
+
$interval[] = static::translator()->transChoice($unit, $count, array(':count' => $count));
|
3277 |
+
}
|
3278 |
+
}
|
3279 |
+
|
3280 |
+
// break the loop after we get the required number of parts in array
|
3281 |
+
if (count($interval) >= $parts) {
|
3282 |
break;
|
3283 |
+
}
|
3284 |
}
|
3285 |
|
3286 |
+
if (count($interval) === 0) {
|
3287 |
$count = 1;
|
3288 |
+
$unit = $short ? 's' : 'second';
|
3289 |
+
$interval[] = static::translator()->transChoice($unit, $count, array(':count' => $count));
|
3290 |
}
|
3291 |
|
3292 |
+
// join the interval parts by a space
|
3293 |
+
$time = implode(' ', $interval);
|
3294 |
+
|
3295 |
+
unset($diffIntervalArray, $interval);
|
3296 |
|
3297 |
if ($absolute) {
|
3298 |
return $time;
|
3302 |
|
3303 |
$transId = $isNow ? ($isFuture ? 'from_now' : 'ago') : ($isFuture ? 'after' : 'before');
|
3304 |
|
3305 |
+
if ($parts === 1) {
|
3306 |
+
// Some langs have special pluralization for past and future tense.
|
3307 |
+
$key = $unit.'_'.$transId;
|
3308 |
+
$count = isset($count) ? $count : 1;
|
3309 |
+
if ($key !== static::translator()->transChoice($key, $count)) {
|
3310 |
+
$time = static::translator()->transChoice($key, $count, array(':count' => $count));
|
3311 |
+
}
|
3312 |
}
|
3313 |
|
3314 |
return static::translator()->trans($transId, array(':time' => $time));
|
3319 |
///////////////////////////////////////////////////////////////////
|
3320 |
|
3321 |
/**
|
3322 |
+
* Resets the time to 00:00:00 start of day
|
3323 |
*
|
3324 |
* @return static
|
3325 |
*/
|
3329 |
}
|
3330 |
|
3331 |
/**
|
3332 |
+
* Resets the time to 23:59:59 end of day
|
3333 |
*
|
3334 |
* @return static
|
3335 |
*/
|
3476 |
return $this->endOfDay();
|
3477 |
}
|
3478 |
|
3479 |
+
/**
|
3480 |
+
* Modify to start of current hour, minutes and seconds become 0
|
3481 |
+
*
|
3482 |
+
* @return static
|
3483 |
+
*/
|
3484 |
+
public function startOfHour()
|
3485 |
+
{
|
3486 |
+
return $this->setTime($this->hour, 0, 0);
|
3487 |
+
}
|
3488 |
+
|
3489 |
+
/**
|
3490 |
+
* Modify to end of current hour, minutes and seconds become 59
|
3491 |
+
*
|
3492 |
+
* @return static
|
3493 |
+
*/
|
3494 |
+
public function endOfHour()
|
3495 |
+
{
|
3496 |
+
return $this->setTime($this->hour, 59, 59);
|
3497 |
+
}
|
3498 |
+
|
3499 |
+
/**
|
3500 |
+
* Modify to start of current minute, seconds become 0
|
3501 |
+
*
|
3502 |
+
* @return static
|
3503 |
+
*/
|
3504 |
+
public function startOfMinute()
|
3505 |
+
{
|
3506 |
+
return $this->setTime($this->hour, $this->minute, 0);
|
3507 |
+
}
|
3508 |
+
|
3509 |
+
/**
|
3510 |
+
* Modify to end of current minute, seconds become 59
|
3511 |
+
*
|
3512 |
+
* @return static
|
3513 |
+
*/
|
3514 |
+
public function endOfMinute()
|
3515 |
+
{
|
3516 |
+
return $this->setTime($this->hour, $this->minute, 59);
|
3517 |
+
}
|
3518 |
+
|
3519 |
+
/**
|
3520 |
+
* Modify to midday, default to self::$midDayAt
|
3521 |
+
*
|
3522 |
+
* @return static
|
3523 |
+
*/
|
3524 |
+
public function midDay()
|
3525 |
+
{
|
3526 |
+
return $this->setTime(self::$midDayAt, 0, 0);
|
3527 |
+
}
|
3528 |
+
|
3529 |
/**
|
3530 |
* Modify to the next occurrence of a given day of the week.
|
3531 |
* If no dayOfWeek is provided, modify to the next occurrence
|
3551 |
* @param bool $weekday
|
3552 |
* @param bool $forward
|
3553 |
*
|
3554 |
+
* @return $this
|
3555 |
*/
|
3556 |
private function nextOrPreviousDay($weekday = true, $forward = true)
|
3557 |
{
|
3577 |
/**
|
3578 |
* Go backward to the previous weekday.
|
3579 |
*
|
3580 |
+
* @return $this
|
3581 |
*/
|
3582 |
public function previousWeekday()
|
3583 |
{
|
3587 |
/**
|
3588 |
* Go forward to the next weekend day.
|
3589 |
*
|
3590 |
+
* @return $this
|
3591 |
*/
|
3592 |
public function nextWeekendDay()
|
3593 |
{
|
3597 |
/**
|
3598 |
* Go backward to the previous weekend day.
|
3599 |
*
|
3600 |
+
* @return $this
|
3601 |
*/
|
3602 |
public function previousWeekendDay()
|
3603 |
{
|
3678 |
*/
|
3679 |
public function nthOfMonth($nth, $dayOfWeek)
|
3680 |
{
|
3681 |
+
$date = $this->copy()->firstOfMonth();
|
3682 |
+
$check = $date->format('Y-m');
|
3683 |
+
$date->modify('+'.$nth.' '.static::$days[$dayOfWeek]);
|
3684 |
|
3685 |
+
return $date->format('Y-m') === $check ? $this->modify($date) : false;
|
3686 |
}
|
3687 |
|
3688 |
/**
|
3691 |
* first day of the current quarter. Use the supplied constants
|
3692 |
* to indicate the desired dayOfWeek, ex. static::MONDAY.
|
3693 |
*
|
3694 |
+
* @param int|null $dayOfWeek day of the week default null
|
3695 |
*
|
3696 |
* @return static
|
3697 |
*/
|
3706 |
* last day of the current quarter. Use the supplied constants
|
3707 |
* to indicate the desired dayOfWeek, ex. static::MONDAY.
|
3708 |
*
|
3709 |
+
* @param int|null $dayOfWeek day of the week default null
|
3710 |
*
|
3711 |
* @return static
|
3712 |
*/
|
3728 |
*/
|
3729 |
public function nthOfQuarter($nth, $dayOfWeek)
|
3730 |
{
|
3731 |
+
$date = $this->copy()->day(1)->month($this->quarter * static::MONTHS_PER_QUARTER);
|
3732 |
+
$lastMonth = $date->month;
|
3733 |
+
$year = $date->year;
|
3734 |
+
$date->firstOfQuarter()->modify('+'.$nth.' '.static::$days[$dayOfWeek]);
|
3735 |
|
3736 |
+
return ($lastMonth < $date->month || $year !== $date->year) ? false : $this->modify($date);
|
3737 |
}
|
3738 |
|
3739 |
/**
|
3742 |
* first day of the current year. Use the supplied constants
|
3743 |
* to indicate the desired dayOfWeek, ex. static::MONDAY.
|
3744 |
*
|
3745 |
+
* @param int|null $dayOfWeek day of the week default null
|
3746 |
*
|
3747 |
* @return static
|
3748 |
*/
|
3757 |
* last day of the current year. Use the supplied constants
|
3758 |
* to indicate the desired dayOfWeek, ex. static::MONDAY.
|
3759 |
*
|
3760 |
+
* @param int|null $dayOfWeek day of the week default null
|
3761 |
*
|
3762 |
* @return static
|
3763 |
*/
|
3779 |
*/
|
3780 |
public function nthOfYear($nth, $dayOfWeek)
|
3781 |
{
|
3782 |
+
$date = $this->copy()->firstOfYear()->modify('+'.$nth.' '.static::$days[$dayOfWeek]);
|
3783 |
|
3784 |
+
return $this->year === $date->year ? $this->modify($date) : false;
|
3785 |
}
|
3786 |
|
3787 |
/**
|
3788 |
* Modify the current instance to the average of a given instance (default now) and the current instance.
|
3789 |
*
|
3790 |
+
* @param \Carbon\Carbon|\DateTimeInterface|null $date
|
3791 |
*
|
3792 |
* @return static
|
3793 |
*/
|
3794 |
+
public function average($date = null)
|
3795 |
{
|
3796 |
+
return $this->addSeconds((int) ($this->diffInSeconds($this->resolveCarbon($date), false) / 2));
|
|
|
|
|
3797 |
}
|
3798 |
|
3799 |
/**
|
3800 |
* Check if its the birthday. Compares the date/month values of the two dates.
|
3801 |
*
|
3802 |
+
* @param \Carbon\Carbon|\DateTimeInterface|null $date The instance to compare with or null to use current day.
|
3803 |
*
|
3804 |
* @return bool
|
3805 |
*/
|
3806 |
+
public function isBirthday($date = null)
|
3807 |
{
|
3808 |
+
return $this->isSameAs('md', $date);
|
3809 |
}
|
3810 |
|
3811 |
/**
|
3812 |
+
* Check if today is the last day of the Month
|
3813 |
*
|
3814 |
+
* @return bool
|
|
|
|
|
3815 |
*/
|
3816 |
+
public function isLastOfMonth()
|
3817 |
{
|
3818 |
+
return $this->day === $this->daysInMonth;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3819 |
}
|
3820 |
|
3821 |
/**
|
3829 |
}
|
3830 |
|
3831 |
/**
|
3832 |
+
* Create an instance from a serialized string.
|
3833 |
*
|
3834 |
* @param string $value
|
3835 |
*
|
3847 |
|
3848 |
return $instance;
|
3849 |
}
|
3850 |
+
|
3851 |
+
/**
|
3852 |
+
* The __set_state handler.
|
3853 |
+
*
|
3854 |
+
* @param array $array
|
3855 |
+
*
|
3856 |
+
* @return static
|
3857 |
+
*/
|
3858 |
+
public static function __set_state($array)
|
3859 |
+
{
|
3860 |
+
return static::instance(parent::__set_state($array));
|
3861 |
+
}
|
3862 |
}
|
src/common/lib/vendor/nesbot/carbon/src/Carbon/CarbonInterval.php
CHANGED
@@ -47,21 +47,21 @@ use Symfony\Component\Translation\TranslatorInterface;
|
|
47 |
* @method static CarbonInterval minute($minutes = 1) Alias for minutes()
|
48 |
* @method static CarbonInterval seconds($seconds = 1) Create instance specifying a number of seconds.
|
49 |
* @method static CarbonInterval second($seconds = 1) Alias for seconds()
|
50 |
-
* @method CarbonInterval years(
|
51 |
-
* @method CarbonInterval year(
|
52 |
-
* @method CarbonInterval months(
|
53 |
-
* @method CarbonInterval month(
|
54 |
-
* @method CarbonInterval weeks(
|
55 |
-
* @method CarbonInterval week(
|
56 |
-
* @method CarbonInterval days(
|
57 |
-
* @method CarbonInterval dayz(
|
58 |
-
* @method CarbonInterval day(
|
59 |
-
* @method CarbonInterval hours(
|
60 |
-
* @method CarbonInterval hour(
|
61 |
-
* @method CarbonInterval minutes(
|
62 |
-
* @method CarbonInterval minute(
|
63 |
-
* @method CarbonInterval seconds(
|
64 |
-
* @method CarbonInterval second(
|
65 |
*/
|
66 |
class CarbonInterval extends DateInterval
|
67 |
{
|
@@ -249,8 +249,9 @@ class CarbonInterval extends DateInterval
|
|
249 |
protected static function translator()
|
250 |
{
|
251 |
if (static::$translator === null) {
|
252 |
-
|
253 |
-
|
|
|
254 |
static::setLocale('en');
|
255 |
}
|
256 |
|
@@ -294,10 +295,13 @@ class CarbonInterval extends DateInterval
|
|
294 |
*/
|
295 |
public static function setLocale($locale)
|
296 |
{
|
297 |
-
static::translator()
|
|
|
298 |
|
299 |
-
|
300 |
-
|
|
|
|
|
301 |
}
|
302 |
|
303 |
///////////////////////////////////////////////////////////////////
|
@@ -478,7 +482,7 @@ class CarbonInterval extends DateInterval
|
|
478 |
$parts = array();
|
479 |
foreach ($periods as $unit => $count) {
|
480 |
if ($count > 0) {
|
481 |
-
|
482 |
}
|
483 |
}
|
484 |
|
@@ -554,4 +558,26 @@ class CarbonInterval extends DateInterval
|
|
554 |
|
555 |
return $specString === static::PERIOD_PREFIX ? 'PT0S' : $specString;
|
556 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
557 |
}
|
47 |
* @method static CarbonInterval minute($minutes = 1) Alias for minutes()
|
48 |
* @method static CarbonInterval seconds($seconds = 1) Create instance specifying a number of seconds.
|
49 |
* @method static CarbonInterval second($seconds = 1) Alias for seconds()
|
50 |
+
* @method CarbonInterval years($years = 1) Set the years portion of the current interval.
|
51 |
+
* @method CarbonInterval year($years = 1) Alias for years().
|
52 |
+
* @method CarbonInterval months($months = 1) Set the months portion of the current interval.
|
53 |
+
* @method CarbonInterval month($months = 1) Alias for months().
|
54 |
+
* @method CarbonInterval weeks($weeks = 1) Set the weeks portion of the current interval. Will overwrite dayz value.
|
55 |
+
* @method CarbonInterval week($weeks = 1) Alias for weeks().
|
56 |
+
* @method CarbonInterval days($days = 1) Set the days portion of the current interval.
|
57 |
+
* @method CarbonInterval dayz($days = 1) Alias for days().
|
58 |
+
* @method CarbonInterval day($days = 1) Alias for days().
|
59 |
+
* @method CarbonInterval hours($hours = 1) Set the hours portion of the current interval.
|
60 |
+
* @method CarbonInterval hour($hours = 1) Alias for hours().
|
61 |
+
* @method CarbonInterval minutes($minutes = 1) Set the minutes portion of the current interval.
|
62 |
+
* @method CarbonInterval minute($minutes = 1) Alias for minutes().
|
63 |
+
* @method CarbonInterval seconds($seconds = 1) Set the seconds portion of the current interval.
|
64 |
+
* @method CarbonInterval second($seconds = 1) Alias for seconds().
|
65 |
*/
|
66 |
class CarbonInterval extends DateInterval
|
67 |
{
|
249 |
protected static function translator()
|
250 |
{
|
251 |
if (static::$translator === null) {
|
252 |
+
$translator = new Translator('en');
|
253 |
+
$translator->addLoader('array', new ArrayLoader());
|
254 |
+
static::$translator = $translator;
|
255 |
static::setLocale('en');
|
256 |
}
|
257 |
|
295 |
*/
|
296 |
public static function setLocale($locale)
|
297 |
{
|
298 |
+
$translator = static::translator();
|
299 |
+
$translator->setLocale($locale);
|
300 |
|
301 |
+
if ($translator instanceof Translator) {
|
302 |
+
// Ensure the locale has been loaded.
|
303 |
+
$translator->addResource('array', require __DIR__.'/Lang/'.$locale.'.php', $locale);
|
304 |
+
}
|
305 |
}
|
306 |
|
307 |
///////////////////////////////////////////////////////////////////
|
482 |
$parts = array();
|
483 |
foreach ($periods as $unit => $count) {
|
484 |
if ($count > 0) {
|
485 |
+
$parts[] = static::translator()->transChoice($unit, $count, array(':count' => $count));
|
486 |
}
|
487 |
}
|
488 |
|
558 |
|
559 |
return $specString === static::PERIOD_PREFIX ? 'PT0S' : $specString;
|
560 |
}
|
561 |
+
|
562 |
+
/**
|
563 |
+
* Comparing with passed interval
|
564 |
+
*
|
565 |
+
* @param DateInterval $interval
|
566 |
+
*
|
567 |
+
* @return int
|
568 |
+
*/
|
569 |
+
public function compare(DateInterval $interval)
|
570 |
+
{
|
571 |
+
$current = Carbon::now();
|
572 |
+
$passed = $current->copy()->add($interval);
|
573 |
+
$current->add($this);
|
574 |
+
|
575 |
+
if ($current < $passed) {
|
576 |
+
return -1;
|
577 |
+
} elseif ($current > $passed) {
|
578 |
+
return 1;
|
579 |
+
}
|
580 |
+
|
581 |
+
return 0;
|
582 |
+
}
|
583 |
}
|
src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/ar.php
CHANGED
@@ -14,8 +14,8 @@ return array(
|
|
14 |
'y' => '{0}سنة|{1}سنة|{2}سنتين|[3,10]:count سنوات|[11,Inf]:count سنة',
|
15 |
'month' => '{0}شهر|{1} شهر|{2}شهرين|[3,10]:count أشهر|[11,Inf]:count شهر',
|
16 |
'm' => '{0}شهر|{1} شهر|{2}شهرين|[3,10]:count أشهر|[11,Inf]:count شهر',
|
17 |
-
'week' => '{0}
|
18 |
-
'w' => '{0}
|
19 |
'day' => '{0}يوم|{1}يوم|{2}يومين|[3,10]:count أيام|[11,Inf] يوم',
|
20 |
'd' => '{0}يوم|{1}يوم|{2}يومين|[3,10]:count أيام|[11,Inf] يوم',
|
21 |
'hour' => '{0}ساعة|{1}ساعة|{2}ساعتين|[3,10]:count ساعات|[11,Inf]:count ساعة',
|
@@ -25,7 +25,7 @@ return array(
|
|
25 |
'second' => '{0}ثانية|{1}ثانية|{2}ثانيتين|[3,10]:count ثوان|[11,Inf]:count ثانية',
|
26 |
's' => '{0}ثانية|{1}ثانية|{2}ثانيتين|[3,10]:count ثوان|[11,Inf]:count ثانية',
|
27 |
'ago' => 'منذ :time',
|
28 |
-
'from_now' => 'من الآن
|
29 |
'after' => 'بعد :time',
|
30 |
'before' => 'قبل :time',
|
31 |
);
|
14 |
'y' => '{0}سنة|{1}سنة|{2}سنتين|[3,10]:count سنوات|[11,Inf]:count سنة',
|
15 |
'month' => '{0}شهر|{1} شهر|{2}شهرين|[3,10]:count أشهر|[11,Inf]:count شهر',
|
16 |
'm' => '{0}شهر|{1} شهر|{2}شهرين|[3,10]:count أشهر|[11,Inf]:count شهر',
|
17 |
+
'week' => '{0}أسبوع|{1}أسبوع|{2}أسبوعين|[3,10]:count أسابيع|[11,Inf]:count أسبوع',
|
18 |
+
'w' => '{0}أسبوع|{1}أسبوع|{2}أسبوعين|[3,10]:count أسابيع|[11,Inf]:count أسبوع',
|
19 |
'day' => '{0}يوم|{1}يوم|{2}يومين|[3,10]:count أيام|[11,Inf] يوم',
|
20 |
'd' => '{0}يوم|{1}يوم|{2}يومين|[3,10]:count أيام|[11,Inf] يوم',
|
21 |
'hour' => '{0}ساعة|{1}ساعة|{2}ساعتين|[3,10]:count ساعات|[11,Inf]:count ساعة',
|
25 |
'second' => '{0}ثانية|{1}ثانية|{2}ثانيتين|[3,10]:count ثوان|[11,Inf]:count ثانية',
|
26 |
's' => '{0}ثانية|{1}ثانية|{2}ثانيتين|[3,10]:count ثوان|[11,Inf]:count ثانية',
|
27 |
'ago' => 'منذ :time',
|
28 |
+
'from_now' => ':time من الآن',
|
29 |
'after' => 'بعد :time',
|
30 |
'before' => 'قبل :time',
|
31 |
);
|
src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/ar_Shakl.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* This file is part of the Carbon package.
|
5 |
+
*
|
6 |
+
* (c) Brian Nesbitt <brian@nesbot.com>
|
7 |
+
*
|
8 |
+
* For the full copyright and license information, please view the LICENSE
|
9 |
+
* file that was distributed with this source code.
|
10 |
+
*/
|
11 |
+
|
12 |
+
return array(
|
13 |
+
'year' => '[0,1] سَنَة|{2} سَنَتَيْن|[3,10]:count سَنَوَات|[11,Inf]:count سَنَة',
|
14 |
+
'y' => '[0,1] سَنَة|{2} سَنَتَيْن|[3,10]:count سَنَوَات|[11,Inf]:count سَنَة',
|
15 |
+
'month' => '[0,1] شَهْرَ|{2} شَهْرَيْن|[3,10]:count أَشْهُر|[11,Inf]:count شَهْرَ',
|
16 |
+
'm' => '[0,1] شَهْرَ|{2} شَهْرَيْن|[3,10]:count أَشْهُر|[11,Inf]:count شَهْرَ',
|
17 |
+
'week' => '[0,1] أُسْبُوع|{2} أُسْبُوعَيْن|[3,10]:count أَسَابِيع|[11,Inf]:count أُسْبُوع',
|
18 |
+
'w' => '[0,1] أُسْبُوع|{2} أُسْبُوعَيْن|[3,10]:count أَسَابِيع|[11,Inf]:count أُسْبُوع',
|
19 |
+
'day' => '[0,1] يَوْم|{2} يَوْمَيْن|[3,10]:count أَيَّام|[11,Inf] يَوْم',
|
20 |
+
'd' => '[0,1] يَوْم|{2} يَوْمَيْن|[3,10]:count أَيَّام|[11,Inf] يَوْم',
|
21 |
+
'hour' => '[0,1] سَاعَة|{2} سَاعَتَيْن|[3,10]:count سَاعَات|[11,Inf]:count سَاعَة',
|
22 |
+
'h' => '[0,1] سَاعَة|{2} سَاعَتَيْن|[3,10]:count سَاعَات|[11,Inf]:count سَاعَة',
|
23 |
+
'minute' => '[0,1] دَقِيقَة|{2} دَقِيقَتَيْن|[3,10]:count دَقَائِق|[11,Inf]:count دَقِيقَة',
|
24 |
+
'min' => '[0,1] دَقِيقَة|{2} دَقِيقَتَيْن|[3,10]:count دَقَائِق|[11,Inf]:count دَقِيقَة',
|
25 |
+
'second' => '[0,1] ثَانِيَة|{2} ثَانِيَتَيْن|[3,10]:count ثَوَان|[11,Inf]:count ثَانِيَة',
|
26 |
+
's' => '[0,1] ثَانِيَة|{2} ثَانِيَتَيْن|[3,10]:count ثَوَان|[11,Inf]:count ثَانِيَة',
|
27 |
+
'ago' => 'مُنْذُ :time',
|
28 |
+
'from_now' => 'مِنَ الْآن :time',
|
29 |
+
'after' => 'بَعْدَ :time',
|
30 |
+
'before' => 'قَبْلَ :time',
|
31 |
+
);
|
src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/az.php
CHANGED
@@ -24,8 +24,8 @@ return array(
|
|
24 |
'min' => ':count dəqiqə',
|
25 |
'second' => ':count saniyə',
|
26 |
's' => ':count saniyə',
|
27 |
-
'ago' => ':time
|
28 |
'from_now' => ':time sonra',
|
29 |
'after' => ':time sonra',
|
30 |
-
'before' => ':time
|
31 |
);
|
24 |
'min' => ':count dəqiqə',
|
25 |
'second' => ':count saniyə',
|
26 |
's' => ':count saniyə',
|
27 |
+
'ago' => ':time əvvəl',
|
28 |
'from_now' => ':time sonra',
|
29 |
'after' => ':time sonra',
|
30 |
+
'before' => ':time əvvəl',
|
31 |
);
|
src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/bg.php
CHANGED
@@ -21,7 +21,7 @@ return array(
|
|
21 |
'hour' => '1 час|:count часа',
|
22 |
'h' => '1 час|:count часа',
|
23 |
'minute' => '1 минута|:count минути',
|
24 |
-
'
|
25 |
'second' => '1 секунда|:count секунди',
|
26 |
's' => '1 секунда|:count секунди',
|
27 |
'ago' => 'преди :time',
|
21 |
'hour' => '1 час|:count часа',
|
22 |
'h' => '1 час|:count часа',
|
23 |
'minute' => '1 минута|:count минути',
|
24 |
+
'min' => '1 минута|:count минути',
|
25 |
'second' => '1 секунда|:count секунди',
|
26 |
's' => '1 секунда|:count секунди',
|
27 |
'ago' => 'преди :time',
|
src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/dv_MV.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
* This file is part of the Carbon package.
|
5 |
+
*
|
6 |
+
* (c) Ahmed Ali <ajaaibu@gmail.com>
|
7 |
+
*
|
8 |
+
* For the full copyright and license information, please view the LICENSE
|
9 |
+
* file that was distributed with this source code.
|
10 |
+
*/
|
11 |
+
|
12 |
+
return array(
|
13 |
+
'year' => '{0}އަހަރެއް|[1,Inf]:count އަހަރު',
|
14 |
+
'y' => '{0}އަހަރެއް|[1,Inf]:count އަހަރު',
|
15 |
+
'month' => '{0}މައްސަރެއް|[1,Inf]:count މަސް',
|
16 |
+
'm' => '{0}މައްސަރެއް|[1,Inf]:count މަސް',
|
17 |
+
'week' => '{0}ހަފްތާއެއް|[1,Inf]:count ހަފްތާ',
|
18 |
+
'w' => '{0}ހަފްތާއެއް|[1,Inf]:count ހަފްތާ',
|
19 |
+
'day' => '{0}ދުވަސް|[1,Inf]:count ދުވަސް',
|
20 |
+
'd' => '{0}ދުވަސް|[1,Inf]:count ދުވަސް',
|
21 |
+
'hour' => '{0}ގަޑިއިރެއް|[1,Inf]:count ގަޑި',
|
22 |
+
'h' => '{0}ގަޑިއިރެއް|[1,Inf]:count ގަޑި',
|
23 |
+
'minute' => '{0}މިނެޓެއް|[1,Inf]:count މިނެޓް',
|
24 |
+
'min' => '{0}މިނެޓެއް|[1,Inf]:count މިނެޓް',
|
25 |
+
'second' => '{0}ސިކުންތެއް|[1,Inf]:count ސިކުންތު',
|
26 |
+
's' => '{0}ސިކުންތެއް|[1,Inf]:count ސިކުންތު',
|
27 |
+
'ago' => ':time ކުރިން',
|
28 |
+
'from_now' => ':time ފަހުން',
|
29 |
+
'after' => ':time ފަހުން',
|
30 |
+
'before' => ':time ކުރި',
|
31 |
+
);
|
src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/el.php
CHANGED
@@ -24,8 +24,8 @@ return array(
|
|
24 |
'min' => '1 λεπτό|:count λεπτά',
|
25 |
'second' => '1 δευτερόλεπτο|:count δευτερόλεπτα',
|
26 |
's' => '1 δευτερόλεπτο|:count δευτερόλεπτα',
|
27 |
-
'ago' => '
|
28 |
-
'from_now' => 'σε :time
|
29 |
'after' => ':time μετά',
|
30 |
-
'before' => ':time
|
31 |
);
|
24 |
'min' => '1 λεπτό|:count λεπτά',
|
25 |
'second' => '1 δευτερόλεπτο|:count δευτερόλεπτα',
|
26 |
's' => '1 δευτερόλεπτο|:count δευτερόλεπτα',
|
27 |
+
'ago' => 'πριν από :time',
|
28 |
+
'from_now' => 'σε :time από τώρα',
|
29 |
'after' => ':time μετά',
|
30 |
+
'before' => ':time πριν',
|
31 |
);
|
src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/fr.php
CHANGED
@@ -15,15 +15,15 @@ return array(
|
|
15 |
'month' => ':count mois',
|
16 |
'm' => ':count mois',
|
17 |
'week' => '1 semaine|:count semaines',
|
18 |
-
'w' => '1
|
19 |
'day' => '1 jour|:count jours',
|
20 |
-
'd' => '1
|
21 |
'hour' => '1 heure|:count heures',
|
22 |
-
'h' => '1
|
23 |
'minute' => '1 minute|:count minutes',
|
24 |
-
'min' => '1
|
25 |
'second' => '1 seconde|:count secondes',
|
26 |
-
's' => '1
|
27 |
'ago' => 'il y a :time',
|
28 |
'from_now' => 'dans :time',
|
29 |
'after' => ':time après',
|
15 |
'month' => ':count mois',
|
16 |
'm' => ':count mois',
|
17 |
'week' => '1 semaine|:count semaines',
|
18 |
+
'w' => '1 sem.|:count sem.',
|
19 |
'day' => '1 jour|:count jours',
|
20 |
+
'd' => '1 j.|:count j.',
|
21 |
'hour' => '1 heure|:count heures',
|
22 |
+
'h' => '1 h|:count h.',
|
23 |
'minute' => '1 minute|:count minutes',
|
24 |
+
'min' => '1 min.|:count min.',
|
25 |
'second' => '1 seconde|:count secondes',
|
26 |
+
's' => '1 sec.|:count sec.',
|
27 |
'ago' => 'il y a :time',
|
28 |
'from_now' => 'dans :time',
|
29 |
'after' => ':time après',
|
src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/hy.php
CHANGED
@@ -11,21 +11,21 @@
|
|
11 |
|
12 |
return array(
|
13 |
'year' => ':count տարի',
|
14 |
-
'y' => ':count
|
15 |
'month' => ':count ամիս',
|
16 |
-
'm' => ':count
|
17 |
'week' => ':count շաբաթ',
|
18 |
-
'w' => ':count
|
19 |
'day' => ':count օր',
|
20 |
-
'd' => ':count
|
21 |
'hour' => ':count ժամ',
|
22 |
-
'h' => ':count
|
23 |
'minute' => ':count րոպե',
|
24 |
-
'min' => ':count
|
25 |
-
'second' => ':count
|
26 |
-
's' => ':count
|
27 |
'ago' => ':time առաջ',
|
28 |
-
'from_now' => ':time
|
29 |
'after' => ':time հետո',
|
30 |
'before' => ':time առաջ',
|
31 |
);
|
11 |
|
12 |
return array(
|
13 |
'year' => ':count տարի',
|
14 |
+
'y' => ':countտ',
|
15 |
'month' => ':count ամիս',
|
16 |
+
'm' => ':countամ',
|
17 |
'week' => ':count շաբաթ',
|
18 |
+
'w' => ':countշ',
|
19 |
'day' => ':count օր',
|
20 |
+
'd' => ':countօր',
|
21 |
'hour' => ':count ժամ',
|
22 |
+
'h' => ':countժ',
|
23 |
'minute' => ':count րոպե',
|
24 |
+
'min' => ':countր',
|
25 |
+
'second' => ':count վարկյան',
|
26 |
+
's' => ':countվրկ',
|
27 |
'ago' => ':time առաջ',
|
28 |
+
'from_now' => ':time ներկա պահից',
|
29 |
'after' => ':time հետո',
|
30 |
'before' => ':time առաջ',
|
31 |
);
|
src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/ja.php
CHANGED
@@ -10,22 +10,22 @@
|
|
10 |
*/
|
11 |
|
12 |
return array(
|
13 |
-
'year' => ':count
|
14 |
-
'y' => ':count
|
15 |
-
'month' => ':count
|
16 |
-
'm' => ':count
|
17 |
-
'week' => ':count
|
18 |
-
'w' => ':count
|
19 |
-
'day' => ':count
|
20 |
-
'd' => ':count
|
21 |
-
'hour' => ':count
|
22 |
-
'h' => ':count
|
23 |
-
'minute' => ':count
|
24 |
-
'min' => ':count
|
25 |
-
'second' => ':count
|
26 |
-
's' => ':count
|
27 |
-
'ago' => ':time
|
28 |
-
'from_now' => '
|
29 |
-
'after' => ':time
|
30 |
-
'before' => ':time
|
31 |
);
|
10 |
*/
|
11 |
|
12 |
return array(
|
13 |
+
'year' => ':count年',
|
14 |
+
'y' => ':count年',
|
15 |
+
'month' => ':countヶ月',
|
16 |
+
'm' => ':countヶ月',
|
17 |
+
'week' => ':count週間',
|
18 |
+
'w' => ':count週間',
|
19 |
+
'day' => ':count日',
|
20 |
+
'd' => ':count日',
|
21 |
+
'hour' => ':count時間',
|
22 |
+
'h' => ':count時間',
|
23 |
+
'minute' => ':count分',
|
24 |
+
'min' => ':count分',
|
25 |
+
'second' => ':count秒',
|
26 |
+
's' => ':count秒',
|
27 |
+
'ago' => ':time前',
|
28 |
+
'from_now' => '今から:time',
|
29 |
+
'after' => ':time後',
|
30 |
+
'before' => ':time前',
|
31 |
);
|
src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/kk.php
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* This file is part of the Carbon package.
|
4 |
+
*
|
5 |
+
* (c) Brian Nesbitt <brian@nesbot.com>
|
6 |
+
*
|
7 |
+
* For the full copyright and license information, please view the LICENSE
|
8 |
+
* file that was distributed with this source code.
|
9 |
+
*/
|
10 |
+
return array(
|
11 |
+
'year' => ':count жыл',
|
12 |
+
'y' => ':count жыл',
|
13 |
+
'month' => ':count ай',
|
14 |
+
'm' => ':count ай',
|
15 |
+
'week' => ':count апта',
|
16 |
+
'w' => ':count апта',
|
17 |
+
'day' => ':count күн',
|
18 |
+
'd' => ':count күн',
|
19 |
+
'hour' => ':count сағат',
|
20 |
+
'h' => ':count сағат',
|
21 |
+
'minute' => ':count минут',
|
22 |
+
'min' => ':count минут',
|
23 |
+
'second' => ':count секунд',
|
24 |
+
's' => ':count секунд',
|
25 |
+
'ago' => ':time бұрын',
|
26 |
+
'from_now' => ':time кейін',
|
27 |
+
'after' => ':time кейін',
|
28 |
+
'before' => ':time бұрын',
|
29 |
+
);
|
src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/mn.php
ADDED
@@ -0,0 +1,62 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
* This file is part of the Carbon package.
|
5 |
+
*
|
6 |
+
* (c) Brian Nesbitt <brian@nesbot.com>
|
7 |
+
*
|
8 |
+
*
|
9 |
+
* For the full copyright and license information, please view the LICENSE
|
10 |
+
* file that was distributed with this source code.
|
11 |
+
*
|
12 |
+
* @translator Batmandakh Erdenebileg <batmandakh.e@icloud.com>
|
13 |
+
*/
|
14 |
+
|
15 |
+
return array(
|
16 |
+
'year' => ':count жил',
|
17 |
+
'y' => ':count жил',
|
18 |
+
'month' => ':count сар',
|
19 |
+
'm' => ':count сар',
|
20 |
+
'week' => ':count долоо хоног',
|
21 |
+
'w' => ':count долоо хоног',
|
22 |
+
'day' => ':count өдөр',
|
23 |
+
'd' => ':count өдөр',
|
24 |
+
'hour' => ':count цаг',
|
25 |
+
'h' => ':countц',
|
26 |
+
'minute' => ':count минут',
|
27 |
+
'min' => ':countм',
|
28 |
+
'second' => ':count секунд',
|
29 |
+
's' => ':countс',
|
30 |
+
|
31 |
+
'ago' => ':timeн өмнө',
|
32 |
+
'year_ago' => ':count жилий',
|
33 |
+
'month_ago' => ':count сары',
|
34 |
+
'day_ago' => ':count хоногий',
|
35 |
+
'hour_ago' => ':count цагий',
|
36 |
+
'minute_ago' => ':count минуты',
|
37 |
+
'second_ago' => ':count секунды',
|
38 |
+
|
39 |
+
'from_now' => 'одоогоос :time',
|
40 |
+
'year_from_now' => ':count жилийн дараа',
|
41 |
+
'month_from_now' => ':count сарын дараа',
|
42 |
+
'day_from_now' => ':count хоногийн дараа',
|
43 |
+
'hour_from_now' => ':count цагийн дараа',
|
44 |
+
'minute_from_now' => ':count минутын дараа',
|
45 |
+
'second_from_now' => ':count секундын дараа',
|
46 |
+
|
47 |
+
// Does it required to make translation for before, after as follows? hmm, I think we've made it with ago and from now keywords already. Anyway, I've included it just in case of undesired action...
|
48 |
+
'after' => ':timeн дараа',
|
49 |
+
'year_after' => ':count жилий',
|
50 |
+
'month_after' => ':count сары',
|
51 |
+
'day_after' => ':count хоногий',
|
52 |
+
'hour_after' => ':count цагий',
|
53 |
+
'minute_after' => ':count минуты',
|
54 |
+
'second_after' => ':count секунды',
|
55 |
+
'before' => ':timeн өмнө',
|
56 |
+
'year_before' => ':count жилий',
|
57 |
+
'month_before' => ':count сары',
|
58 |
+
'day_before' => ':count хоногий',
|
59 |
+
'hour_before' => ':count цагий',
|
60 |
+
'minute_before' => ':count минуты',
|
61 |
+
'second_before' => ':count секунды',
|
62 |
+
);
|
src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/pl.php
CHANGED
@@ -26,6 +26,6 @@ return array(
|
|
26 |
's' => '1 sekunda|:count sekundy|:count sekund',
|
27 |
'ago' => ':time temu',
|
28 |
'from_now' => ':time od teraz',
|
29 |
-
'after' => ':time
|
30 |
-
'before' => ':time
|
31 |
);
|
26 |
's' => '1 sekunda|:count sekundy|:count sekund',
|
27 |
'ago' => ':time temu',
|
28 |
'from_now' => ':time od teraz',
|
29 |
+
'after' => ':time po',
|
30 |
+
'before' => ':time przed',
|
31 |
);
|
src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/ps.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
* This file is part of the Carbon package.
|
5 |
+
*
|
6 |
+
* (c) Brian Nesbitt <brian@nesbot.com>
|
7 |
+
*
|
8 |
+
* For the full copyright and license information, please view the LICENSE
|
9 |
+
* file that was distributed with this source code.
|
10 |
+
*/
|
11 |
+
|
12 |
+
return array(
|
13 |
+
'year' => '1 کال|:count کاله',
|
14 |
+
'y' => '1کال|:countکاله',
|
15 |
+
'month' => '1 مياشت|:count مياشتي',
|
16 |
+
'm' => '1مياشت|:countمياشتي',
|
17 |
+
'week' => '1 اونۍ|:count اونۍ',
|
18 |
+
'w' => '1اونۍ|:countاونۍ',
|
19 |
+
'day' => '1 ورځ|:count ورځي',
|
20 |
+
'd' => '1ورځ|:countورځي',
|
21 |
+
'hour' => '1 ساعت|:count ساعته',
|
22 |
+
'h' => '1ساعت|:countساعته',
|
23 |
+
'minute' => '1 دقيقه|:count دقيقې',
|
24 |
+
'min' => '1دقيقه|:countدقيقې',
|
25 |
+
'second' => '1 ثانيه|:count ثانيې',
|
26 |
+
's' => '1ثانيه|:countثانيې',
|
27 |
+
'ago' => ':time دمخه',
|
28 |
+
'from_now' => ':time له اوس څخه',
|
29 |
+
'after' => ':time وروسته',
|
30 |
+
'before' => ':time دمخه',
|
31 |
+
);
|
src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/sk.php
CHANGED
@@ -26,6 +26,13 @@ return array(
|
|
26 |
's' => 'sekundu|:count sekundy|:count sekúnd',
|
27 |
'ago' => 'pred :time',
|
28 |
'from_now' => 'za :time',
|
29 |
-
'after' => ':time neskôr',
|
30 |
'before' => ':time predtým',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
);
|
26 |
's' => 'sekundu|:count sekundy|:count sekúnd',
|
27 |
'ago' => 'pred :time',
|
28 |
'from_now' => 'za :time',
|
29 |
+
'after' => 'o :time neskôr',
|
30 |
'before' => ':time predtým',
|
31 |
+
'year_ago' => 'rokom|:count rokmi|:count rokmi',
|
32 |
+
'month_ago' => 'mesiacom|:count mesiacmi|:count mesiacmi',
|
33 |
+
'week_ago' => 'týždňom|:count týždňami|:count týždňami',
|
34 |
+
'day_ago' => 'dňom|:count dňami|:count dňami',
|
35 |
+
'hour_ago' => 'hodinou|:count hodinami|:count hodinami',
|
36 |
+
'minute_ago' => 'minútou|:count minútami|:count minútami',
|
37 |
+
'second_ago' => 'sekundou|:count sekundami|:count sekundami',
|
38 |
);
|
src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/sr.php
CHANGED
@@ -28,4 +28,10 @@ return array(
|
|
28 |
'from_now' => ':time od sada',
|
29 |
'after' => 'nakon :time',
|
30 |
'before' => 'pre :time',
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
);
|
28 |
'from_now' => ':time od sada',
|
29 |
'after' => 'nakon :time',
|
30 |
'before' => 'pre :time',
|
31 |
+
|
32 |
+
'year_from_now' => '{1,21,31,41,51} :count godinu|{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54} :count godine|[5,Inf[ :count godina',
|
33 |
+
'year_ago' => '{1,21,31,41,51} :count godinu|{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54} :count godine|[5,Inf[ :count godina',
|
34 |
+
|
35 |
+
'week_from_now' => '{1} :count nedelju|{2,3,4} :count nedelje|[5,Inf[ :count nedelja',
|
36 |
+
'week_ago' => '{1} :count nedelju|{2,3,4} :count nedelje|[5,Inf[ :count nedelja',
|
37 |
);
|
src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl.php
ADDED
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
* This file is part of the Carbon package.
|
5 |
+
*
|
6 |
+
* (c) Nikola Zeravcic <office@bytenet.rs>
|
7 |
+
*
|
8 |
+
* For the full copyright and license information, please view the LICENSE
|
9 |
+
* file that was distributed with this source code.
|
10 |
+
*/
|
11 |
+
|
12 |
+
return array(
|
13 |
+
'year' => '{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54}:count године|[0,Inf[ :count година',
|
14 |
+
'y' => ':count г.',
|
15 |
+
'month' => '{1} :count месец|{2,3,4}:count месеца|[5,Inf[ :count месеци',
|
16 |
+
'm' => ':count м.',
|
17 |
+
'week' => '{1} :count недеља|{2,3,4}:count недеље|[5,Inf[ :count недеља',
|
18 |
+
'w' => ':count нед.',
|
19 |
+
'day' => '{1,21,31} :count дан|[2,Inf[ :count дана',
|
20 |
+
'd' => ':count д.',
|
21 |
+
'hour' => '{1,21} :count сат|{2,3,4,22,23,24}:count сата|[5,Inf[ :count сати',
|
22 |
+
'h' => ':count ч.',
|
23 |
+
'minute' => '{1,21,31,41,51} :count минут|[2,Inf[ :count минута',
|
24 |
+
'min' => ':count мин.',
|
25 |
+
'second' => '{1,21,31,41,51} :count секунд|{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54}:count секунде|[5,Inf[:count секунди',
|
26 |
+
's' => ':count сек.',
|
27 |
+
'ago' => 'пре :time',
|
28 |
+
'from_now' => 'за :time',
|
29 |
+
'after' => ':time након',
|
30 |
+
'before' => ':time пре',
|
31 |
+
|
32 |
+
'year_from_now' => '{1,21,31,41,51} :count годину|{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54} :count године|[5,Inf[ :count година',
|
33 |
+
'year_ago' => '{1,21,31,41,51} :count годину|{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54} :count године|[5,Inf[ :count година',
|
34 |
+
|
35 |
+
'week_from_now' => '{1} :count недељу|{2,3,4} :count недеље|[5,Inf[ :count недеља',
|
36 |
+
'week_ago' => '{1} :count недељу|{2,3,4} :count недеље|[5,Inf[ :count недеља',
|
37 |
+
|
38 |
+
);
|
src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/sr_ME.php
CHANGED
@@ -9,30 +9,4 @@
|
|
9 |
* file that was distributed with this source code.
|
10 |
*/
|
11 |
|
12 |
-
return
|
13 |
-
'year' => '{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54}:count godine|[0,Inf[ :count godina',
|
14 |
-
'y' => ':count g.',
|
15 |
-
'month' => '{1} :count mjesec|{2,3,4}:count mjeseca|[5,Inf[ :count mjeseci',
|
16 |
-
'm' => ':count mj.',
|
17 |
-
'week' => '{1} :count nedjelja|{2,3,4}:count nedjelje|[5,Inf[ :count nedjelja',
|
18 |
-
'w' => ':count ned.',
|
19 |
-
'day' => '{1,21,31} :count dan|[2,Inf[ :count dana',
|
20 |
-
'd' => ':count d.',
|
21 |
-
'hour' => '{1,21} :count sat|{2,3,4,22,23,24}:count sata|[5,Inf[ :count sati',
|
22 |
-
'h' => ':count č.',
|
23 |
-
'minute' => '{1,21,31,41,51} :count minut|[2,Inf[ :count minuta',
|
24 |
-
'min' => ':count min.',
|
25 |
-
'second' => '{1,21,31,41,51} :count sekund|{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54}:count sekunde|[5,Inf[:count sekundi',
|
26 |
-
's' => ':count sek.',
|
27 |
-
'ago' => 'prije :time',
|
28 |
-
'from_now' => 'za :time',
|
29 |
-
'after' => ':time nakon',
|
30 |
-
'before' => ':time prije',
|
31 |
-
|
32 |
-
'year_from_now' => '{1,21,31,41,51} :count godinu|{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54} :count godine|[5,Inf[ :count godina',
|
33 |
-
'year_ago' => '{1,21,31,41,51} :count godinu|{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54} :count godine|[5,Inf[ :count godina',
|
34 |
-
|
35 |
-
'week_from_now' => '{1} :count nedjelju|{2,3,4} :count nedjelje|[5,Inf[ :count nedjelja',
|
36 |
-
'week_ago' => '{1} :count nedjelju|{2,3,4} :count nedjelje|[5,Inf[ :count nedjelja',
|
37 |
-
|
38 |
-
);
|
9 |
* file that was distributed with this source code.
|
10 |
*/
|
11 |
|
12 |
+
return require __DIR__.'/sr_Latn_ME.php';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/th.php
CHANGED
@@ -10,22 +10,22 @@
|
|
10 |
*/
|
11 |
|
12 |
return array(
|
13 |
-
'year' => '
|
14 |
-
'y' => '
|
15 |
-
'month' => '
|
16 |
-
'm' => '
|
17 |
-
'week' => '
|
18 |
-
'w' => '
|
19 |
-
'day' => '
|
20 |
-
'd' => '
|
21 |
-
'hour' => '
|
22 |
-
'h' => '
|
23 |
-
'minute' => '
|
24 |
-
'min' => '
|
25 |
-
'second' => '
|
26 |
-
's' => '
|
27 |
-
'ago' => ':time
|
28 |
-
'from_now' => ':time
|
29 |
-
'after' => '
|
30 |
-
'before' => '
|
31 |
);
|
10 |
*/
|
11 |
|
12 |
return array(
|
13 |
+
'year' => ':count ปี',
|
14 |
+
'y' => ':count ปี',
|
15 |
+
'month' => ':count เดือน',
|
16 |
+
'm' => ':count เดือน',
|
17 |
+
'week' => ':count สัปดาห์',
|
18 |
+
'w' => ':count สัปดาห์',
|
19 |
+
'day' => ':count วัน',
|
20 |
+
'd' => ':count วัน',
|
21 |
+
'hour' => ':count ชั่วโมง',
|
22 |
+
'h' => ':count ชั่วโมง',
|
23 |
+
'minute' => ':count นาที',
|
24 |
+
'min' => ':count นาที',
|
25 |
+
'second' => ':count วินาที',
|
26 |
+
's' => ':count วินาที',
|
27 |
+
'ago' => ':timeที่แล้ว',
|
28 |
+
'from_now' => ':timeต่อจากนี้',
|
29 |
+
'after' => ':timeหลังจากนี้',
|
30 |
+
'before' => ':timeก่อน',
|
31 |
);
|
src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/uk.php
CHANGED
@@ -24,7 +24,7 @@ return array(
|
|
24 |
'min' => ':count хвилину|:count хвилини|:count хвилин',
|
25 |
'second' => ':count секунду|:count секунди|:count секунд',
|
26 |
's' => ':count секунду|:count секунди|:count секунд',
|
27 |
-
'ago' => ':time
|
28 |
'from_now' => 'через :time',
|
29 |
'after' => ':time після',
|
30 |
'before' => ':time до',
|
24 |
'min' => ':count хвилину|:count хвилини|:count хвилин',
|
25 |
'second' => ':count секунду|:count секунди|:count секунд',
|
26 |
's' => ':count секунду|:count секунди|:count секунд',
|
27 |
+
'ago' => ':time тому',
|
28 |
'from_now' => 'через :time',
|
29 |
'after' => ':time після',
|
30 |
'before' => ':time до',
|
src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/uz.php
CHANGED
@@ -10,22 +10,22 @@
|
|
10 |
*/
|
11 |
|
12 |
return array(
|
13 |
-
'year' => ':count yil
|
14 |
-
'y' => ':count yil
|
15 |
-
'month' => ':count oy
|
16 |
-
'm' => ':count oy
|
17 |
-
'week' => ':count hafta
|
18 |
-
'w' => ':count hafta
|
19 |
-
'day' => ':count kun
|
20 |
-
'd' => ':count kun
|
21 |
-
'hour' => ':count soat
|
22 |
-
'h' => ':count soat
|
23 |
-
'minute' => ':count
|
24 |
-
'min' => ':count
|
25 |
-
'second' => ':count
|
26 |
-
's' => ':count
|
27 |
'ago' => ':time avval',
|
28 |
-
'from_now' => ':time keyin',
|
29 |
'after' => ':time keyin',
|
30 |
'before' => ':time oldin',
|
31 |
);
|
10 |
*/
|
11 |
|
12 |
return array(
|
13 |
+
'year' => ':count yil',
|
14 |
+
'y' => ':count yil',
|
15 |
+
'month' => ':count oy',
|
16 |
+
'm' => ':count oy',
|
17 |
+
'week' => ':count hafta',
|
18 |
+
'w' => ':count hafta',
|
19 |
+
'day' => ':count kun',
|
20 |
+
'd' => ':count kun',
|
21 |
+
'hour' => ':count soat',
|
22 |
+
'h' => ':count soat',
|
23 |
+
'minute' => ':count daqiqa',
|
24 |
+
'min' => ':count daq',
|
25 |
+
'second' => ':count soniya',
|
26 |
+
's' => ':count s',
|
27 |
'ago' => ':time avval',
|
28 |
+
'from_now' => ':time dan keyin',
|
29 |
'after' => ':time keyin',
|
30 |
'before' => ':time oldin',
|
31 |
);
|
src/common/lib/vendor/nesbot/carbon/src/Carbon/Lang/zh_TW.php
CHANGED
@@ -10,22 +10,22 @@
|
|
10 |
*/
|
11 |
|
12 |
return array(
|
13 |
-
'year' => ':count
|
14 |
-
'y' => ':count
|
15 |
-
'month' => ':count
|
16 |
-
'm' => ':count
|
17 |
-
'week' => ':count
|
18 |
-
'w' => ':count
|
19 |
-
'day' => ':count
|
20 |
-
'd' => ':count
|
21 |
-
'hour' => ':count
|
22 |
-
'h' => ':count
|
23 |
-
'minute' => ':count
|
24 |
-
'min' => ':count
|
25 |
-
'second' => ':count
|
26 |
-
's' => ':count
|
27 |
'ago' => ':time前',
|
28 |
-
'from_now' => '
|
29 |
'after' => ':time後',
|
30 |
'before' => ':time前',
|
31 |
);
|
10 |
*/
|
11 |
|
12 |
return array(
|
13 |
+
'year' => ':count年',
|
14 |
+
'y' => ':count年',
|
15 |
+
'month' => ':count月',
|
16 |
+
'm' => ':count月',
|
17 |
+
'week' => ':count週',
|
18 |
+
'w' => ':count週',
|
19 |
+
'day' => ':count天',
|
20 |
+
'd' => ':count天',
|
21 |
+
'hour' => ':count小時',
|
22 |
+
'h' => ':count小時',
|
23 |
+
'minute' => ':count分鐘',
|
24 |
+
'min' => ':count分鐘',
|
25 |
+
'second' => ':count秒',
|
26 |
+
's' => ':count秒',
|
27 |
'ago' => ':time前',
|
28 |
+
'from_now' => '距現在:time',
|
29 |
'after' => ':time後',
|
30 |
'before' => ':time前',
|
31 |
);
|
src/common/lib/vendor/symfony/translation/CHANGELOG.md
CHANGED
@@ -1,37 +1,6 @@
|
|
1 |
CHANGELOG
|
2 |
=========
|
3 |
|
4 |
-
3.4.0
|
5 |
-
-----
|
6 |
-
|
7 |
-
* Added `TranslationDumperPass`
|
8 |
-
* Added `TranslationExtractorPass`
|
9 |
-
* Added `TranslatorPass`
|
10 |
-
* Added `TranslationReader` and `TranslationReaderInterface`
|
11 |
-
* Added `<notes>` section to the Xliff 2.0 dumper.
|
12 |
-
* Improved Xliff 2.0 loader to load `<notes>` section.
|
13 |
-
* Added `TranslationWriterInterface`
|
14 |
-
* Deprecated `TranslationWriter::writeTranslations` in favor of `TranslationWriter::write`
|
15 |
-
* added support for adding custom message formatter and decoupling the default one.
|
16 |
-
* Added `PhpExtractor`
|
17 |
-
* Added `PhpStringTokenParser`
|
18 |
-
|
19 |
-
3.2.0
|
20 |
-
-----
|
21 |
-
|
22 |
-
* Added support for escaping `|` in plural translations with double pipe.
|
23 |
-
|
24 |
-
3.1.0
|
25 |
-
-----
|
26 |
-
|
27 |
-
* Deprecated the backup feature of the file dumper classes.
|
28 |
-
|
29 |
-
3.0.0
|
30 |
-
-----
|
31 |
-
|
32 |
-
* removed `FileDumper::format()` method.
|
33 |
-
* Changed the visibility of the locale property in `Translator` from protected to private.
|
34 |
-
|
35 |
2.8.0
|
36 |
-----
|
37 |
|
1 |
CHANGELOG
|
2 |
=========
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
2.8.0
|
5 |
-----
|
6 |
|
src/common/lib/vendor/symfony/translation/Catalogue/AbstractOperation.php
CHANGED
@@ -13,8 +13,6 @@ namespace Symfony\Component\Translation\Catalogue;
|
|
13 |
|
14 |
use Symfony\Component\Translation\MessageCatalogue;
|
15 |
use Symfony\Component\Translation\MessageCatalogueInterface;
|
16 |
-
use Symfony\Component\Translation\Exception\InvalidArgumentException;
|
17 |
-
use Symfony\Component\Translation\Exception\LogicException;
|
18 |
|
19 |
/**
|
20 |
* Base catalogues binary operation class.
|
@@ -60,12 +58,12 @@ abstract class AbstractOperation implements OperationInterface
|
|
60 |
protected $messages;
|
61 |
|
62 |
/**
|
63 |
-
* @throws LogicException
|
64 |
*/
|
65 |
public function __construct(MessageCatalogueInterface $source, MessageCatalogueInterface $target)
|
66 |
{
|
67 |
if ($source->getLocale() !== $target->getLocale()) {
|
68 |
-
throw new LogicException('Operated catalogues must belong to the same locale.');
|
69 |
}
|
70 |
|
71 |
$this->source = $source;
|
@@ -92,7 +90,7 @@ abstract class AbstractOperation implements OperationInterface
|
|
92 |
public function getMessages($domain)
|
93 |
{
|
94 |
if (!in_array($domain, $this->getDomains())) {
|
95 |
-
throw new InvalidArgumentException(sprintf('Invalid domain: %s.', $domain));
|
96 |
}
|
97 |
|
98 |
if (!isset($this->messages[$domain]['all'])) {
|
@@ -108,7 +106,7 @@ abstract class AbstractOperation implements OperationInterface
|
|
108 |
public function getNewMessages($domain)
|
109 |
{
|
110 |
if (!in_array($domain, $this->getDomains())) {
|
111 |
-
throw new InvalidArgumentException(sprintf('Invalid domain: %s.', $domain));
|
112 |
}
|
113 |
|
114 |
if (!isset($this->messages[$domain]['new'])) {
|
@@ -124,7 +122,7 @@ abstract class AbstractOperation implements OperationInterface
|
|
124 |
public function getObsoleteMessages($domain)
|
125 |
{
|
126 |
if (!in_array($domain, $this->getDomains())) {
|
127 |
-
throw new InvalidArgumentException(sprintf('Invalid domain: %s.', $domain));
|
128 |
}
|
129 |
|
130 |
if (!isset($this->messages[$domain]['obsolete'])) {
|
13 |
|
14 |
use Symfony\Component\Translation\MessageCatalogue;
|
15 |
use Symfony\Component\Translation\MessageCatalogueInterface;
|
|
|
|
|
16 |
|
17 |
/**
|
18 |
* Base catalogues binary operation class.
|
58 |
protected $messages;
|
59 |
|
60 |
/**
|
61 |
+
* @throws \LogicException
|
62 |
*/
|
63 |
public function __construct(MessageCatalogueInterface $source, MessageCatalogueInterface $target)
|
64 |
{
|
65 |
if ($source->getLocale() !== $target->getLocale()) {
|
66 |
+
throw new \LogicException('Operated catalogues must belong to the same locale.');
|
67 |
}
|
68 |
|
69 |
$this->source = $source;
|
90 |
public function getMessages($domain)
|
91 |
{
|
92 |
if (!in_array($domain, $this->getDomains())) {
|
93 |
+
throw new \InvalidArgumentException(sprintf('Invalid domain: %s.', $domain));
|
94 |
}
|
95 |
|
96 |
if (!isset($this->messages[$domain]['all'])) {
|
106 |
public function getNewMessages($domain)
|
107 |
{
|
108 |
if (!in_array($domain, $this->getDomains())) {
|
109 |
+
throw new \InvalidArgumentException(sprintf('Invalid domain: %s.', $domain));
|
110 |
}
|
111 |
|
112 |
if (!isset($this->messages[$domain]['new'])) {
|
122 |
public function getObsoleteMessages($domain)
|
123 |
{
|
124 |
if (!in_array($domain, $this->getDomains())) {
|
125 |
+
throw new \InvalidArgumentException(sprintf('Invalid domain: %s.', $domain));
|
126 |
}
|
127 |
|
128 |
if (!isset($this->messages[$domain]['obsolete'])) {
|
src/common/lib/vendor/symfony/translation/Catalogue/DiffOperation.php
ADDED
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
* This file is part of the Symfony package.
|
5 |
+
*
|
6 |
+
* (c) Fabien Potencier <fabien@symfony.com>
|
7 |
+
*
|
8 |
+
* For the full copyright and license information, please view the LICENSE
|
9 |
+
* file that was distributed with this source code.
|
10 |
+
*/
|
11 |
+
|
12 |
+
namespace Symfony\Component\Translation\Catalogue;
|
13 |
+
|
14 |
+
@trigger_error('The '.__NAMESPACE__.'\DiffOperation class is deprecated since Symfony 2.8 and will be removed in 3.0. Use the TargetOperation class in the same namespace instead.', E_USER_DEPRECATED);
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Diff operation between two catalogues.
|
18 |
+
*
|
19 |
+
* The name of 'Diff' is misleading because the operation
|
20 |
+
* has nothing to do with diff:
|
21 |
+
*
|
22 |
+
* intersection = source ∩ target = {x: x ∈ source ∧ x ∈ target}
|
23 |
+
* all = intersection ∪ (target ∖ intersection) = target
|
24 |
+
* new = all ∖ source = {x: x ∈ target ∧ x ∉ source}
|
25 |
+
* obsolete = source ∖ all = source ∖ target = {x: x ∈ source ∧ x ∉ target}
|
26 |
+
*
|
27 |
+
* @author Jean-François Simon <contact@jfsimon.fr>
|
28 |
+
*
|
29 |
+
* @deprecated since version 2.8, to be removed in 3.0. Use TargetOperation instead.
|
30 |
+
*/
|
31 |
+
class DiffOperation extends TargetOperation
|
32 |
+
{
|
33 |
+
}
|
src/common/lib/vendor/symfony/translation/Command/XliffLintCommand.php
DELETED
@@ -1,245 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/*
|
4 |
-
* This file is part of the Symfony package.
|
5 |
-
*
|
6 |
-
* (c) Fabien Potencier <fabien@symfony.com>
|
7 |
-
*
|
8 |
-
* For the full copyright and license information, please view the LICENSE
|
9 |
-
* file that was distributed with this source code.
|
10 |
-
*/
|
11 |
-
|
12 |
-
namespace Symfony\Component\Translation\Command;
|
13 |
-
|
14 |
-
use Symfony\Component\Console\Command\Command;
|
15 |
-
use Symfony\Component\Console\Input\InputInterface;
|
16 |
-
use Symfony\Component\Console\Input\InputOption;
|
17 |
-
use Symfony\Component\Console\Output\OutputInterface;
|
18 |
-
use Symfony\Component\Console\Style\SymfonyStyle;
|
19 |
-
|
20 |
-
/**
|
21 |
-
* Validates XLIFF files syntax and outputs encountered errors.
|
22 |
-
*
|
23 |
-
* @author Grégoire Pineau <lyrixx@lyrixx.info>
|
24 |
-
* @author Robin Chalas <robin.chalas@gmail.com>
|
25 |
-
* @author Javier Eguiluz <javier.eguiluz@gmail.com>
|
26 |
-
*/
|
27 |
-
class XliffLintCommand extends Command
|
28 |
-
{
|
29 |
-
protected static $defaultName = 'lint:xliff';
|
30 |
-
|
31 |
-
private $format;
|
32 |
-
private $displayCorrectFiles;
|
33 |
-
private $directoryIteratorProvider;
|
34 |
-
private $isReadableProvider;
|
35 |
-
|
36 |
-
public function __construct($name = null, $directoryIteratorProvider = null, $isReadableProvider = null)
|
37 |
-
{
|
38 |
-
parent::__construct($name);
|
39 |
-
|
40 |
-
$this->directoryIteratorProvider = $directoryIteratorProvider;
|
41 |
-
$this->isReadableProvider = $isReadableProvider;
|
42 |
-
}
|
43 |
-
|
44 |
-
/**
|
45 |
-
* {@inheritdoc}
|
46 |
-
*/
|
47 |
-
protected function configure()
|
48 |
-
{
|
49 |
-
$this
|
50 |
-
->setDescription('Lints a XLIFF file and outputs encountered errors')
|
51 |
-
->addArgument('filename', null, 'A file or a directory or STDIN')
|
52 |
-
->addOption('format', null, InputOption::VALUE_REQUIRED, 'The output format', 'txt')
|
53 |
-
->setHelp(<<<EOF
|
54 |
-
The <info>%command.name%</info> command lints a XLIFF file and outputs to STDOUT
|
55 |
-
the first encountered syntax error.
|
56 |
-
|
57 |
-
You can validates XLIFF contents passed from STDIN:
|
58 |
-
|
59 |
-
<info>cat filename | php %command.full_name%</info>
|
60 |
-
|
61 |
-
You can also validate the syntax of a file:
|
62 |
-
|
63 |
-
<info>php %command.full_name% filename</info>
|
64 |
-
|
65 |
-
Or of a whole directory:
|
66 |
-
|
67 |
-
<info>php %command.full_name% dirname</info>
|
68 |
-
<info>php %command.full_name% dirname --format=json</info>
|
69 |
-
|
70 |
-
EOF
|
71 |
-
)
|
72 |
-
;
|
73 |
-
}
|
74 |
-
|
75 |
-
protected function execute(InputInterface $input, OutputInterface $output)
|
76 |
-
{
|
77 |
-
$io = new SymfonyStyle($input, $output);
|
78 |
-
$filename = $input->getArgument('filename');
|
79 |
-
$this->format = $input->getOption('format');
|
80 |
-
$this->displayCorrectFiles = $output->isVerbose();
|
81 |
-
|
82 |
-
if (!$filename) {
|
83 |
-
if (!$stdin = $this->getStdin()) {
|
84 |
-
throw new \RuntimeException('Please provide a filename or pipe file content to STDIN.');
|
85 |
-
}
|
86 |
-
|
87 |
-
return $this->display($io, array($this->validate($stdin)));
|
88 |
-
}
|
89 |
-
|
90 |
-
if (!$this->isReadable($filename)) {
|
91 |
-
throw new \RuntimeException(sprintf('File or directory "%s" is not readable.', $filename));
|
92 |
-
}
|
93 |
-
|
94 |
-
$filesInfo = array();
|
95 |
-
foreach ($this->getFiles($filename) as $file) {
|
96 |
-
$filesInfo[] = $this->validate(file_get_contents($file), $file);
|
97 |
-
}
|
98 |
-
|
99 |
-
return $this->display($io, $filesInfo);
|
100 |
-
}
|
101 |
-
|
102 |
-
private function validate($content, $file = null)
|
103 |
-
{
|
104 |
-
// Avoid: Warning DOMDocument::loadXML(): Empty string supplied as input
|
105 |
-
if ('' === trim($content)) {
|
106 |
-
return array('file' => $file, 'valid' => true);
|
107 |
-
}
|
108 |
-
|
109 |
-
libxml_use_internal_errors(true);
|
110 |
-
|
111 |
-
$document = new \DOMDocument();
|
112 |
-
$document->loadXML($content);
|
113 |
-
if ($document->schemaValidate(__DIR__.'/../Resources/schemas/xliff-core-1.2-strict.xsd')) {
|
114 |
-
return array('file' => $file, 'valid' => true);
|
115 |
-
}
|
116 |
-
|
117 |
-
$errorMessages = array_map(function ($error) {
|
118 |
-
return array(
|
119 |
-
'line' => $error->line,
|
120 |
-
'column' => $error->column,
|
121 |
-
'message' => trim($error->message),
|
122 |
-
);
|
123 |
-
}, libxml_get_errors());
|
124 |
-
|
125 |
-
libxml_clear_errors();
|
126 |
-
libxml_use_internal_errors(false);
|
127 |
-
|
128 |
-
return array('file' => $file, 'valid' => false, 'messages' => $errorMessages);
|
129 |
-
}
|
130 |
-
|
131 |
-
private function display(SymfonyStyle $io, array $files)
|
132 |
-
{
|
133 |
-
switch ($this->format) {
|
134 |
-
case 'txt':
|
135 |
-
return $this->displayTxt($io, $files);
|
136 |
-
case 'json':
|
137 |
-
return $this->displayJson($io, $files);
|
138 |
-
default:
|
139 |
-
throw new \InvalidArgumentException(sprintf('The format "%s" is not supported.', $this->format));
|
140 |
-
}
|
141 |
-
}
|
142 |
-
|
143 |
-
private function displayTxt(SymfonyStyle $io, array $filesInfo)
|
144 |
-
{
|
145 |
-
$countFiles = count($filesInfo);
|
146 |
-
$erroredFiles = 0;
|
147 |
-
|
148 |
-
foreach ($filesInfo as $info) {
|
149 |
-
if ($info['valid'] && $this->displayCorrectFiles) {
|
150 |
-
$io->comment('<info>OK</info>'.($info['file'] ? sprintf(' in %s', $info['file']) : ''));
|
151 |
-
} elseif (!$info['valid']) {
|
152 |
-
++$erroredFiles;
|
153 |
-
$io->text('<error> ERROR </error>'.($info['file'] ? sprintf(' in %s', $info['file']) : ''));
|
154 |
-
$io->listing(array_map(function ($error) {
|
155 |
-
// general document errors have a '-1' line number
|
156 |
-
return -1 === $error['line'] ? $error['message'] : sprintf('Line %d, Column %d: %s', $error['line'], $error['column'], $error['message']);
|
157 |
-
}, $info['messages']));
|
158 |
-
}
|
159 |
-
}
|
160 |
-
|
161 |
-
if (0 === $erroredFiles) {
|
162 |
-
$io->success(sprintf('All %d XLIFF files contain valid syntax.', $countFiles));
|
163 |
-
} else {
|
164 |
-
$io->warning(sprintf('%d XLIFF files have valid syntax and %d contain errors.', $countFiles - $erroredFiles, $erroredFiles));
|
165 |
-
}
|
166 |
-
|
167 |
-
return min($erroredFiles, 1);
|
168 |
-
}
|
169 |
-
|
170 |
-
private function displayJson(SymfonyStyle $io, array $filesInfo)
|
171 |
-
{
|
172 |
-
$errors = 0;
|
173 |
-
|
174 |
-
array_walk($filesInfo, function (&$v) use (&$errors) {
|
175 |
-
$v['file'] = (string) $v['file'];
|
176 |
-
if (!$v['valid']) {
|
177 |
-
++$errors;
|
178 |
-
}
|
179 |
-
});
|
180 |
-
|
181 |
-
$io->writeln(json_encode($filesInfo, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES));
|
182 |
-
|
183 |
-
return min($errors, 1);
|
184 |
-
}
|
185 |
-
|
186 |
-
private function getFiles($fileOrDirectory)
|
187 |
-
{
|
188 |
-
if (is_file($fileOrDirectory)) {
|
189 |
-
yield new \SplFileInfo($fileOrDirectory);
|
190 |
-
|
191 |
-
return;
|
192 |
-
}
|
193 |
-
|
194 |
-
foreach ($this->getDirectoryIterator($fileOrDirectory) as $file) {
|
195 |
-
if (!in_array($file->getExtension(), array('xlf', 'xliff'))) {
|
196 |
-
continue;
|
197 |
-
}
|
198 |
-
|
199 |
-
yield $file;
|
200 |
-
}
|
201 |
-
}
|
202 |
-
|
203 |
-
private function getStdin()
|
204 |
-
{
|
205 |
-
if (0 !== ftell(STDIN)) {
|
206 |
-
return;
|
207 |
-
}
|
208 |
-
|
209 |
-
$inputs = '';
|
210 |
-
while (!feof(STDIN)) {
|
211 |
-
$inputs .= fread(STDIN, 1024);
|
212 |
-
}
|
213 |
-
|
214 |
-
return $inputs;
|
215 |
-
}
|
216 |
-
|
217 |
-
private function getDirectoryIterator($directory)
|
218 |
-
{
|
219 |
-
$default = function ($directory) {
|
220 |
-
return new \RecursiveIteratorIterator(
|
221 |
-
new \RecursiveDirectoryIterator($directory, \FilesystemIterator::SKIP_DOTS | \FilesystemIterator::FOLLOW_SYMLINKS),
|
222 |
-
\RecursiveIteratorIterator::LEAVES_ONLY
|
223 |
-
);
|
224 |
-
};
|
225 |
-
|
226 |
-
if (null !== $this->directoryIteratorProvider) {
|
227 |
-
return call_user_func($this->directoryIteratorProvider, $directory, $default);
|
228 |
-
}
|
229 |
-
|
230 |
-
return $default($directory);
|
231 |
-
}
|
232 |
-
|
233 |
-
private function isReadable($fileOrDirectory)
|
234 |
-
{
|
235 |
-
$default = function ($fileOrDirectory) {
|
236 |
-
return is_readable($fileOrDirectory);
|
237 |
-
};
|
238 |
-
|
239 |
-
if (null !== $this->isReadableProvider) {
|
240 |
-
return call_user_func($this->isReadableProvider, $fileOrDirectory, $default);
|
241 |
-
}
|
242 |
-
|
243 |
-
return $default($fileOrDirectory);
|
244 |
-
}
|
245 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/common/lib/vendor/symfony/translation/DataCollector/TranslationDataCollector.php
CHANGED
@@ -38,11 +38,6 @@ class TranslationDataCollector extends DataCollector implements LateDataCollecto
|
|
38 |
|
39 |
$this->data = $this->computeCount($messages);
|
40 |
$this->data['messages'] = $messages;
|
41 |
-
|
42 |
-
$this->data['locale'] = $this->translator->getLocale();
|
43 |
-
$this->data['fallback_locales'] = $this->translator->getFallbackLocales();
|
44 |
-
|
45 |
-
$this->data = $this->cloneVar($this->data);
|
46 |
}
|
47 |
|
48 |
/**
|
@@ -52,14 +47,6 @@ class TranslationDataCollector extends DataCollector implements LateDataCollecto
|
|
52 |
{
|
53 |
}
|
54 |
|
55 |
-
/**
|
56 |
-
* {@inheritdoc}
|
57 |
-
*/
|
58 |
-
public function reset()
|
59 |
-
{
|
60 |
-
$this->data = array();
|
61 |
-
}
|
62 |
-
|
63 |
/**
|
64 |
* @return array
|
65 |
*/
|
@@ -92,16 +79,6 @@ class TranslationDataCollector extends DataCollector implements LateDataCollecto
|
|
92 |
return isset($this->data[DataCollectorTranslator::MESSAGE_DEFINED]) ? $this->data[DataCollectorTranslator::MESSAGE_DEFINED] : 0;
|
93 |
}
|
94 |
|
95 |
-
public function getLocale()
|
96 |
-
{
|
97 |
-
return !empty($this->data['locale']) ? $this->data['locale'] : null;
|
98 |
-
}
|
99 |
-
|
100 |
-
public function getFallbackLocales()
|
101 |
-
{
|
102 |
-
return (isset($this->data['fallback_locales']) && count($this->data['fallback_locales']) > 0) ? $this->data['fallback_locales'] : array();
|
103 |
-
}
|
104 |
-
|
105 |
/**
|
106 |
* {@inheritdoc}
|
107 |
*/
|
38 |
|
39 |
$this->data = $this->computeCount($messages);
|
40 |
$this->data['messages'] = $messages;
|
|
|
|
|
|
|
|
|
|
|
41 |
}
|
42 |
|
43 |
/**
|
47 |
{
|
48 |
}
|
49 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
50 |
/**
|
51 |
* @return array
|
52 |
*/
|
79 |
return isset($this->data[DataCollectorTranslator::MESSAGE_DEFINED]) ? $this->data[DataCollectorTranslator::MESSAGE_DEFINED] : 0;
|
80 |
}
|
81 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
82 |
/**
|
83 |
* {@inheritdoc}
|
84 |
*/
|
src/common/lib/vendor/symfony/translation/DataCollectorTranslator.php
CHANGED
@@ -11,8 +11,6 @@
|
|
11 |
|
12 |
namespace Symfony\Component\Translation;
|
13 |
|
14 |
-
use Symfony\Component\Translation\Exception\InvalidArgumentException;
|
15 |
-
|
16 |
/**
|
17 |
* @author Abdellatif Ait boudad <a.aitboudad@gmail.com>
|
18 |
*/
|
@@ -35,7 +33,7 @@ class DataCollectorTranslator implements TranslatorInterface, TranslatorBagInter
|
|
35 |
public function __construct(TranslatorInterface $translator)
|
36 |
{
|
37 |
if (!$translator instanceof TranslatorBagInterface) {
|
38 |
-
throw new InvalidArgumentException(sprintf('The Translator "%s" must implement TranslatorInterface and TranslatorBagInterface.', get_class($translator)));
|
39 |
}
|
40 |
|
41 |
$this->translator = $translator;
|
11 |
|
12 |
namespace Symfony\Component\Translation;
|
13 |
|
|
|
|
|
14 |
/**
|
15 |
* @author Abdellatif Ait boudad <a.aitboudad@gmail.com>
|
16 |
*/
|
33 |
public function __construct(TranslatorInterface $translator)
|
34 |
{
|
35 |
if (!$translator instanceof TranslatorBagInterface) {
|
36 |
+
throw new \InvalidArgumentException(sprintf('The Translator "%s" must implement TranslatorInterface and TranslatorBagInterface.', get_class($translator)));
|
37 |
}
|
38 |
|
39 |
$this->translator = $translator;
|
src/common/lib/vendor/symfony/translation/DependencyInjection/TranslationDumperPass.php
DELETED
@@ -1,44 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/*
|
4 |
-
* This file is part of the Symfony package.
|
5 |
-
*
|
6 |
-
* (c) Fabien Potencier <fabien@symfony.com>
|
7 |
-
*
|
8 |
-
* For the full copyright and license information, please view the LICENSE
|
9 |
-
* file that was distributed with this source code.
|
10 |
-
*/
|
11 |
-
|
12 |
-
namespace Symfony\Component\Translation\DependencyInjection;
|
13 |
-
|
14 |
-
use Symfony\Component\DependencyInjection\Reference;
|
15 |
-
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
16 |
-
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
|
17 |
-
|
18 |
-
/**
|
19 |
-
* Adds tagged translation.formatter services to translation writer.
|
20 |
-
*/
|
21 |
-
class TranslationDumperPass implements CompilerPassInterface
|
22 |
-
{
|
23 |
-
private $writerServiceId;
|
24 |
-
private $dumperTag;
|
25 |
-
|
26 |
-
public function __construct($writerServiceId = 'translation.writer', $dumperTag = 'translation.dumper')
|
27 |
-
{
|
28 |
-
$this->writerServiceId = $writerServiceId;
|
29 |
-
$this->dumperTag = $dumperTag;
|
30 |
-
}
|
31 |
-
|
32 |
-
public function process(ContainerBuilder $container)
|
33 |
-
{
|
34 |
-
if (!$container->hasDefinition($this->writerServiceId)) {
|
35 |
-
return;
|
36 |
-
}
|
37 |
-
|
38 |
-
$definition = $container->getDefinition($this->writerServiceId);
|
39 |
-
|
40 |
-
foreach ($container->findTaggedServiceIds($this->dumperTag, true) as $id => $attributes) {
|
41 |
-
$definition->addMethodCall('addDumper', array($attributes[0]['alias'], new Reference($id)));
|
42 |
-
}
|
43 |
-
}
|
44 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/common/lib/vendor/symfony/translation/DependencyInjection/TranslationExtractorPass.php
DELETED
@@ -1,49 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/*
|
4 |
-
* This file is part of the Symfony package.
|
5 |
-
*
|
6 |
-
* (c) Fabien Potencier <fabien@symfony.com>
|
7 |
-
*
|
8 |
-
* For the full copyright and license information, please view the LICENSE
|
9 |
-
* file that was distributed with this source code.
|
10 |
-
*/
|
11 |
-
|
12 |
-
namespace Symfony\Component\Translation\DependencyInjection;
|
13 |
-
|
14 |
-
use Symfony\Component\DependencyInjection\Reference;
|
15 |
-
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
16 |
-
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
|
17 |
-
use Symfony\Component\DependencyInjection\Exception\RuntimeException;
|
18 |
-
|
19 |
-
/**
|
20 |
-
* Adds tagged translation.extractor services to translation extractor.
|
21 |
-
*/
|
22 |
-
class TranslationExtractorPass implements CompilerPassInterface
|
23 |
-
{
|
24 |
-
private $extractorServiceId;
|
25 |
-
private $extractorTag;
|
26 |
-
|
27 |
-
public function __construct($extractorServiceId = 'translation.extractor', $extractorTag = 'translation.extractor')
|
28 |
-
{
|
29 |
-
$this->extractorServiceId = $extractorServiceId;
|
30 |
-
$this->extractorTag = $extractorTag;
|
31 |
-
}
|
32 |
-
|
33 |
-
public function process(ContainerBuilder $container)
|
34 |
-
{
|
35 |
-
if (!$container->hasDefinition($this->extractorServiceId)) {
|
36 |
-
return;
|
37 |
-
}
|
38 |
-
|
39 |
-
$definition = $container->getDefinition($this->extractorServiceId);
|
40 |
-
|
41 |
-
foreach ($container->findTaggedServiceIds($this->extractorTag, true) as $id => $attributes) {
|
42 |
-
if (!isset($attributes[0]['alias'])) {
|
43 |
-
throw new RuntimeException(sprintf('The alias for the tag "translation.extractor" of service "%s" must be set.', $id));
|
44 |
-
}
|
45 |
-
|
46 |
-
$definition->addMethodCall('addExtractor', array($attributes[0]['alias'], new Reference($id)));
|
47 |
-
}
|
48 |
-
}
|
49 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/common/lib/vendor/symfony/translation/DependencyInjection/TranslatorPass.php
DELETED
@@ -1,95 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/*
|
4 |
-
* This file is part of the Symfony package.
|
5 |
-
*
|
6 |
-
* (c) Fabien Potencier <fabien@symfony.com>
|
7 |
-
*
|
8 |
-
* For the full copyright and license information, please view the LICENSE
|
9 |
-
* file that was distributed with this source code.
|
10 |
-
*/
|
11 |
-
|
12 |
-
namespace Symfony\Component\Translation\DependencyInjection;
|
13 |
-
|
14 |
-
use Symfony\Component\DependencyInjection\Reference;
|
15 |
-
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
16 |
-
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
|
17 |
-
use Symfony\Component\DependencyInjection\Compiler\ServiceLocatorTagPass;
|
18 |
-
|
19 |
-
class TranslatorPass implements CompilerPassInterface
|
20 |
-
{
|
21 |
-
private $translatorServiceId;
|
22 |
-
private $readerServiceId;
|
23 |
-
private $loaderTag;
|
24 |
-
private $debugCommandServiceId;
|
25 |
-
private $updateCommandServiceId;
|
26 |
-
|
27 |
-
public function __construct($translatorServiceId = 'translator.default', $readerServiceId = 'translation.loader', $loaderTag = 'translation.loader', $debugCommandServiceId = 'console.command.translation_debug', $updateCommandServiceId = 'console.command.translation_update')
|
28 |
-
{
|
29 |
-
if ('translation.loader' === $readerServiceId && 2 > func_num_args()) {
|
30 |
-
@trigger_error('The default value for $readerServiceId will change in 4.0 to "translation.reader".', E_USER_DEPRECATED);
|
31 |
-
}
|
32 |
-
|
33 |
-
$this->translatorServiceId = $translatorServiceId;
|
34 |
-
$this->readerServiceId = $readerServiceId;
|
35 |
-
$this->loaderTag = $loaderTag;
|
36 |
-
$this->debugCommandServiceId = $debugCommandServiceId;
|
37 |
-
$this->updateCommandServiceId = $updateCommandServiceId;
|
38 |
-
}
|
39 |
-
|
40 |
-
public function process(ContainerBuilder $container)
|
41 |
-
{
|
42 |
-
if (!$container->hasDefinition($this->translatorServiceId)) {
|
43 |
-
return;
|
44 |
-
}
|
45 |
-
|
46 |
-
$loaders = array();
|
47 |
-
$loaderRefs = array();
|
48 |
-
foreach ($container->findTaggedServiceIds($this->loaderTag, true) as $id => $attributes) {
|
49 |
-
$loaderRefs[$id] = new Reference($id);
|
50 |
-
$loaders[$id][] = $attributes[0]['alias'];
|
51 |
-
if (isset($attributes[0]['legacy-alias'])) {
|
52 |
-
$loaders[$id][] = $attributes[0]['legacy-alias'];
|
53 |
-
}
|
54 |
-
}
|
55 |
-
|
56 |
-
if ($container->hasDefinition($this->readerServiceId)) {
|
57 |
-
$definition = $container->getDefinition($this->readerServiceId);
|
58 |
-
foreach ($loaders as $id => $formats) {
|
59 |
-
foreach ($formats as $format) {
|
60 |
-
$definition->addMethodCall('addLoader', array($format, $loaderRefs[$id]));
|
61 |
-
}
|
62 |
-
}
|
63 |
-
}
|
64 |
-
|
65 |
-
// Duplicated code to support "translation.reader", to be removed in 4.0
|
66 |
-
if ('translation.reader' !== $this->readerServiceId) {
|
67 |
-
if ($container->hasDefinition('translation.reader')) {
|
68 |
-
$definition = $container->getDefinition('translation.reader');
|
69 |
-
foreach ($loaders as $id => $formats) {
|
70 |
-
foreach ($formats as $format) {
|
71 |
-
$definition->addMethodCall('addLoader', array($format, $loaderRefs[$id]));
|
72 |
-
}
|
73 |
-
}
|
74 |
-
}
|
75 |
-
}
|
76 |
-
|
77 |
-
$container
|
78 |
-
->findDefinition($this->translatorServiceId)
|
79 |
-
->replaceArgument(0, ServiceLocatorTagPass::register($container, $loaderRefs))
|
80 |
-
->replaceArgument(3, $loaders)
|
81 |
-
;
|
82 |
-
|
83 |
-
if (!$container->hasParameter('twig.default_path')) {
|
84 |
-
return;
|
85 |
-
}
|
86 |
-
|
87 |
-
if ($container->hasDefinition($this->debugCommandServiceId)) {
|
88 |
-
$container->getDefinition($this->debugCommandServiceId)->replaceArgument(4, $container->getParameter('twig.default_path'));
|
89 |
-
}
|
90 |
-
|
91 |
-
if ($container->hasDefinition($this->updateCommandServiceId)) {
|
92 |
-
$container->getDefinition($this->updateCommandServiceId)->replaceArgument(5, $container->getParameter('twig.default_path'));
|
93 |
-
}
|
94 |
-
}
|
95 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/common/lib/vendor/symfony/translation/Dumper/CsvFileDumper.php
CHANGED
@@ -23,6 +23,16 @@ class CsvFileDumper extends FileDumper
|
|
23 |
private $delimiter = ';';
|
24 |
private $enclosure = '"';
|
25 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
/**
|
27 |
* {@inheritdoc}
|
28 |
*/
|
23 |
private $delimiter = ';';
|
24 |
private $enclosure = '"';
|
25 |
|
26 |
+
/**
|
27 |
+
* {@inheritdoc}
|
28 |
+
*/
|
29 |
+
public function format(MessageCatalogue $messages, $domain = 'messages')
|
30 |
+
{
|
31 |
+
@trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.8 and will be removed in 3.0. Use the formatCatalogue() method instead.', E_USER_DEPRECATED);
|
32 |
+
|
33 |
+
return $this->formatCatalogue($messages, $domain);
|
34 |
+
}
|
35 |
+
|
36 |
/**
|
37 |
* {@inheritdoc}
|
38 |
*/
|
src/common/lib/vendor/symfony/translation/Dumper/FileDumper.php
CHANGED
@@ -12,8 +12,6 @@
|
|
12 |
namespace Symfony\Component\Translation\Dumper;
|
13 |
|
14 |
use Symfony\Component\Translation\MessageCatalogue;
|
15 |
-
use Symfony\Component\Translation\Exception\InvalidArgumentException;
|
16 |
-
use Symfony\Component\Translation\Exception\RuntimeException;
|
17 |
|
18 |
/**
|
19 |
* FileDumper is an implementation of DumperInterface that dump a message catalogue to file(s).
|
@@ -66,7 +64,7 @@ abstract class FileDumper implements DumperInterface
|
|
66 |
public function dump(MessageCatalogue $messages, $options = array())
|
67 |
{
|
68 |
if (!array_key_exists('path', $options)) {
|
69 |
-
throw new InvalidArgumentException('The file dumper needs a path option.');
|
70 |
}
|
71 |
|
72 |
// save a file for each domain
|
@@ -75,13 +73,12 @@ abstract class FileDumper implements DumperInterface
|
|
75 |
$fullpath = $options['path'].'/'.$this->getRelativePath($domain, $messages->getLocale());
|
76 |
if (file_exists($fullpath)) {
|
77 |
if ($this->backup) {
|
78 |
-
@trigger_error('Creating a backup while dumping a message catalogue is deprecated since Symfony 3.1 and will be removed in 4.0. Use TranslationWriter::disableBackup() to disable the backup.', E_USER_DEPRECATED);
|
79 |
copy($fullpath, $fullpath.'~');
|
80 |
}
|
81 |
} else {
|
82 |
$directory = dirname($fullpath);
|
83 |
if (!file_exists($directory) && !@mkdir($directory, 0777, true)) {
|
84 |
-
throw new RuntimeException(sprintf('Unable to create directory "%s".', $directory));
|
85 |
}
|
86 |
}
|
87 |
// save file
|
@@ -92,13 +89,35 @@ abstract class FileDumper implements DumperInterface
|
|
92 |
/**
|
93 |
* Transforms a domain of a message catalogue to its string representation.
|
94 |
*
|
|
|
|
|
95 |
* @param MessageCatalogue $messages
|
96 |
* @param string $domain
|
97 |
* @param array $options
|
98 |
*
|
99 |
* @return string representation
|
100 |
*/
|
101 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
102 |
|
103 |
/**
|
104 |
* Gets the file extension of the dumper.
|
12 |
namespace Symfony\Component\Translation\Dumper;
|
13 |
|
14 |
use Symfony\Component\Translation\MessageCatalogue;
|
|
|
|
|
15 |
|
16 |
/**
|
17 |
* FileDumper is an implementation of DumperInterface that dump a message catalogue to file(s).
|
64 |
public function dump(MessageCatalogue $messages, $options = array())
|
65 |
{
|
66 |
if (!array_key_exists('path', $options)) {
|
67 |
+
throw new \InvalidArgumentException('The file dumper needs a path option.');
|
68 |
}
|
69 |
|
70 |
// save a file for each domain
|
73 |
$fullpath = $options['path'].'/'.$this->getRelativePath($domain, $messages->getLocale());
|
74 |
if (file_exists($fullpath)) {
|
75 |
if ($this->backup) {
|
|
|
76 |
copy($fullpath, $fullpath.'~');
|
77 |
}
|
78 |
} else {
|
79 |
$directory = dirname($fullpath);
|
80 |
if (!file_exists($directory) && !@mkdir($directory, 0777, true)) {
|
81 |
+
throw new \RuntimeException(sprintf('Unable to create directory "%s".', $directory));
|
82 |
}
|
83 |
}
|
84 |
// save file
|
89 |
/**
|
90 |
* Transforms a domain of a message catalogue to its string representation.
|
91 |
*
|
92 |
+
* Override this function in child class if $options is used for message formatting.
|
93 |
+
*
|
94 |
* @param MessageCatalogue $messages
|
95 |
* @param string $domain
|
96 |
* @param array $options
|
97 |
*
|
98 |
* @return string representation
|
99 |
*/
|
100 |
+
public function formatCatalogue(MessageCatalogue $messages, $domain, array $options = array())
|
101 |
+
{
|
102 |
+
@trigger_error('The '.__METHOD__.' method will replace the format method in 3.0. You should overwrite it instead of overwriting format instead.', E_USER_DEPRECATED);
|
103 |
+
|
104 |
+
return $this->format($messages, $domain);
|
105 |
+
}
|
106 |
+
|
107 |
+
/**
|
108 |
+
* Transforms a domain of a message catalogue to its string representation.
|
109 |
+
*
|
110 |
+
* @param MessageCatalogue $messages
|
111 |
+
* @param string $domain
|
112 |
+
*
|
113 |
+
* @return string representation
|
114 |
+
*
|
115 |
+
* @deprecated since version 2.8, to be removed in 3.0. Overwrite formatCatalogue() instead.
|
116 |
+
*/
|
117 |
+
protected function format(MessageCatalogue $messages, $domain)
|
118 |
+
{
|
119 |
+
throw new \LogicException('The "FileDumper::format" method needs to be overwritten, you should implement either "format" or "formatCatalogue".');
|
120 |
+
}
|
121 |
|
122 |
/**
|
123 |
* Gets the file extension of the dumper.
|
src/common/lib/vendor/symfony/translation/Dumper/IcuResFileDumper.php
CHANGED
@@ -25,6 +25,16 @@ class IcuResFileDumper extends FileDumper
|
|
25 |
*/
|
26 |
protected $relativePathTemplate = '%domain%/%locale%.%extension%';
|
27 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
/**
|
29 |
* {@inheritdoc}
|
30 |
*/
|
25 |
*/
|
26 |
protected $relativePathTemplate = '%domain%/%locale%.%extension%';
|
27 |
|
28 |
+
/**
|
29 |
+
* {@inheritdoc}
|
30 |
+
*/
|
31 |
+
public function format(MessageCatalogue $messages, $domain = 'messages')
|
32 |
+
{
|
33 |
+
@trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.8 and will be removed in 3.0. Use the formatCatalogue() method instead.', E_USER_DEPRECATED);
|
34 |
+
|
35 |
+
return $this->formatCatalogue($messages, $domain);
|
36 |
+
}
|
37 |
+
|
38 |
/**
|
39 |
* {@inheritdoc}
|
40 |
*/
|
src/common/lib/vendor/symfony/translation/Dumper/IniFileDumper.php
CHANGED
@@ -20,6 +20,16 @@ use Symfony\Component\Translation\MessageCatalogue;
|
|
20 |
*/
|
21 |
class IniFileDumper extends FileDumper
|
22 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
/**
|
24 |
* {@inheritdoc}
|
25 |
*/
|
20 |
*/
|
21 |
class IniFileDumper extends FileDumper
|
22 |
{
|
23 |
+
/**
|
24 |
+
* {@inheritdoc}
|
25 |
+
*/
|
26 |
+
public function format(MessageCatalogue $messages, $domain = 'messages')
|
27 |
+
{
|
28 |
+
@trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.8 and will be removed in 3.0. Use the formatCatalogue() method instead.', E_USER_DEPRECATED);
|
29 |
+
|
30 |
+
return $this->formatCatalogue($messages, $domain);
|
31 |
+
}
|
32 |
+
|
33 |
/**
|
34 |
* {@inheritdoc}
|
35 |
*/
|
src/common/lib/vendor/symfony/translation/Dumper/JsonFileDumper.php
CHANGED
@@ -20,6 +20,16 @@ use Symfony\Component\Translation\MessageCatalogue;
|
|
20 |
*/
|
21 |
class JsonFileDumper extends FileDumper
|
22 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
/**
|
24 |
* {@inheritdoc}
|
25 |
*/
|
20 |
*/
|
21 |
class JsonFileDumper extends FileDumper
|
22 |
{
|
23 |
+
/**
|
24 |
+
* {@inheritdoc}
|
25 |
+
*/
|
26 |
+
public function format(MessageCatalogue $messages, $domain = 'messages')
|
27 |
+
{
|
28 |
+
@trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.8 and will be removed in 3.0. Use the formatCatalogue() method instead.', E_USER_DEPRECATED);
|
29 |
+
|
30 |
+
return $this->formatCatalogue($messages, $domain);
|
31 |
+
}
|
32 |
+
|
33 |
/**
|
34 |
* {@inheritdoc}
|
35 |
*/
|
src/common/lib/vendor/symfony/translation/Dumper/MoFileDumper.php
CHANGED
@@ -21,6 +21,16 @@ use Symfony\Component\Translation\Loader\MoFileLoader;
|
|
21 |
*/
|
22 |
class MoFileDumper extends FileDumper
|
23 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
/**
|
25 |
* {@inheritdoc}
|
26 |
*/
|
21 |
*/
|
22 |
class MoFileDumper extends FileDumper
|
23 |
{
|
24 |
+
/**
|
25 |
+
* {@inheritdoc}
|
26 |
+
*/
|
27 |
+
public function format(MessageCatalogue $messages, $domain = 'messages')
|
28 |
+
{
|
29 |
+
@trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.8 and will be removed in 3.0. Use the formatCatalogue() method instead.', E_USER_DEPRECATED);
|
30 |
+
|
31 |
+
return $this->formatCatalogue($messages, $domain);
|
32 |
+
}
|
33 |
+
|
34 |
/**
|
35 |
* {@inheritdoc}
|
36 |
*/
|
src/common/lib/vendor/symfony/translation/Dumper/PhpFileDumper.php
CHANGED
@@ -20,6 +20,16 @@ use Symfony\Component\Translation\MessageCatalogue;
|
|
20 |
*/
|
21 |
class PhpFileDumper extends FileDumper
|
22 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
/**
|
24 |
* {@inheritdoc}
|
25 |
*/
|
20 |
*/
|
21 |
class PhpFileDumper extends FileDumper
|
22 |
{
|
23 |
+
/**
|
24 |
+
* {@inheritdoc}
|
25 |
+
*/
|
26 |
+
protected function format(MessageCatalogue $messages, $domain)
|
27 |
+
{
|
28 |
+
@trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.8 and will be removed in 3.0. Use the formatCatalogue() method instead.', E_USER_DEPRECATED);
|
29 |
+
|
30 |
+
return $this->formatCatalogue($messages, $domain);
|
31 |
+
}
|
32 |
+
|
33 |
/**
|
34 |
* {@inheritdoc}
|
35 |
*/
|
src/common/lib/vendor/symfony/translation/Dumper/PoFileDumper.php
CHANGED
@@ -20,6 +20,16 @@ use Symfony\Component\Translation\MessageCatalogue;
|
|
20 |
*/
|
21 |
class PoFileDumper extends FileDumper
|
22 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
/**
|
24 |
* {@inheritdoc}
|
25 |
*/
|
20 |
*/
|
21 |
class PoFileDumper extends FileDumper
|
22 |
{
|
23 |
+
/**
|
24 |
+
* {@inheritdoc}
|
25 |
+
*/
|
26 |
+
public function format(MessageCatalogue $messages, $domain = 'messages')
|
27 |
+
{
|
28 |
+
@trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.8 and will be removed in 3.0. Use the formatCatalogue() method instead.', E_USER_DEPRECATED);
|
29 |
+
|
30 |
+
return $this->formatCatalogue($messages, $domain);
|
31 |
+
}
|
32 |
+
|
33 |
/**
|
34 |
* {@inheritdoc}
|
35 |
*/
|
src/common/lib/vendor/symfony/translation/Dumper/QtFileDumper.php
CHANGED
@@ -20,6 +20,16 @@ use Symfony\Component\Translation\MessageCatalogue;
|
|
20 |
*/
|
21 |
class QtFileDumper extends FileDumper
|
22 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
/**
|
24 |
* {@inheritdoc}
|
25 |
*/
|
20 |
*/
|
21 |
class QtFileDumper extends FileDumper
|
22 |
{
|
23 |
+
/**
|
24 |
+
* {@inheritdoc}
|
25 |
+
*/
|
26 |
+
public function format(MessageCatalogue $messages, $domain)
|
27 |
+
{
|
28 |
+
@trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.8 and will be removed in 3.0. Use the formatCatalogue() method instead.', E_USER_DEPRECATED);
|
29 |
+
|
30 |
+
return $this->formatCatalogue($messages, $domain);
|
31 |
+
}
|
32 |
+
|
33 |
/**
|
34 |
* {@inheritdoc}
|
35 |
*/
|
src/common/lib/vendor/symfony/translation/Dumper/XliffFileDumper.php
CHANGED
@@ -12,7 +12,6 @@
|
|
12 |
namespace Symfony\Component\Translation\Dumper;
|
13 |
|
14 |
use Symfony\Component\Translation\MessageCatalogue;
|
15 |
-
use Symfony\Component\Translation\Exception\InvalidArgumentException;
|
16 |
|
17 |
/**
|
18 |
* XliffFileDumper generates xliff files from a message catalogue.
|
@@ -44,7 +43,17 @@ class XliffFileDumper extends FileDumper
|
|
44 |
return $this->dumpXliff2($defaultLocale, $messages, $domain, $options);
|
45 |
}
|
46 |
|
47 |
-
throw new InvalidArgumentException(sprintf('No support implemented for dumping XLIFF version "%s".', $xliffVersion));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
}
|
49 |
|
50 |
/**
|
@@ -85,7 +94,7 @@ class XliffFileDumper extends FileDumper
|
|
85 |
foreach ($messages->all($domain) as $source => $target) {
|
86 |
$translation = $dom->createElement('trans-unit');
|
87 |
|
88 |
-
$translation->setAttribute('id',
|
89 |
$translation->setAttribute('resname', $source);
|
90 |
|
91 |
$s = $translation->appendChild($dom->createElement('source'));
|
@@ -145,24 +154,7 @@ class XliffFileDumper extends FileDumper
|
|
145 |
|
146 |
foreach ($messages->all($domain) as $source => $target) {
|
147 |
$translation = $dom->createElement('unit');
|
148 |
-
$translation->setAttribute('id',
|
149 |
-
$metadata = $messages->getMetadata($source, $domain);
|
150 |
-
|
151 |
-
// Add notes section
|
152 |
-
if ($this->hasMetadataArrayInfo('notes', $metadata)) {
|
153 |
-
$notesElement = $dom->createElement('notes');
|
154 |
-
foreach ($metadata['notes'] as $note) {
|
155 |
-
$n = $dom->createElement('note');
|
156 |
-
$n->appendChild($dom->createTextNode(isset($note['content']) ? $note['content'] : ''));
|
157 |
-
unset($note['content']);
|
158 |
-
|
159 |
-
foreach ($note as $name => $value) {
|
160 |
-
$n->setAttribute($name, $value);
|
161 |
-
}
|
162 |
-
$notesElement->appendChild($n);
|
163 |
-
}
|
164 |
-
$translation->appendChild($notesElement);
|
165 |
-
}
|
166 |
|
167 |
$segment = $translation->appendChild($dom->createElement('segment'));
|
168 |
|
@@ -173,6 +165,7 @@ class XliffFileDumper extends FileDumper
|
|
173 |
$text = 1 === preg_match('/[&<>]/', $target) ? $dom->createCDATASection($target) : $dom->createTextNode($target);
|
174 |
|
175 |
$targetElement = $dom->createElement('target');
|
|
|
176 |
if ($this->hasMetadataArrayInfo('target-attributes', $metadata)) {
|
177 |
foreach ($metadata['target-attributes'] as $name => $value) {
|
178 |
$targetElement->setAttribute($name, $value);
|
12 |
namespace Symfony\Component\Translation\Dumper;
|
13 |
|
14 |
use Symfony\Component\Translation\MessageCatalogue;
|
|
|
15 |
|
16 |
/**
|
17 |
* XliffFileDumper generates xliff files from a message catalogue.
|
43 |
return $this->dumpXliff2($defaultLocale, $messages, $domain, $options);
|
44 |
}
|
45 |
|
46 |
+
throw new \InvalidArgumentException(sprintf('No support implemented for dumping XLIFF version "%s".', $xliffVersion));
|
47 |
+
}
|
48 |
+
|
49 |
+
/**
|
50 |
+
* {@inheritdoc}
|
51 |
+
*/
|
52 |
+
protected function format(MessageCatalogue $messages, $domain)
|
53 |
+
{
|
54 |
+
@trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.8 and will be removed in 3.0. Use the formatCatalogue() method instead.', E_USER_DEPRECATED);
|
55 |
+
|
56 |
+
return $this->formatCatalogue($messages, $domain);
|
57 |
}
|
58 |
|
59 |
/**
|
94 |
foreach ($messages->all($domain) as $source => $target) {
|
95 |
$translation = $dom->createElement('trans-unit');
|
96 |
|
97 |
+
$translation->setAttribute('id', md5($source));
|
98 |
$translation->setAttribute('resname', $source);
|
99 |
|
100 |
$s = $translation->appendChild($dom->createElement('source'));
|
154 |
|
155 |
foreach ($messages->all($domain) as $source => $target) {
|
156 |
$translation = $dom->createElement('unit');
|
157 |
+
$translation->setAttribute('id', md5($source));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
158 |
|
159 |
$segment = $translation->appendChild($dom->createElement('segment'));
|
160 |
|
165 |
$text = 1 === preg_match('/[&<>]/', $target) ? $dom->createCDATASection($target) : $dom->createTextNode($target);
|
166 |
|
167 |
$targetElement = $dom->createElement('target');
|
168 |
+
$metadata = $messages->getMetadata($source, $domain);
|
169 |
if ($this->hasMetadataArrayInfo('target-attributes', $metadata)) {
|
170 |
foreach ($metadata['target-attributes'] as $name => $value) {
|
171 |
$targetElement->setAttribute($name, $value);
|
src/common/lib/vendor/symfony/translation/Dumper/YamlFileDumper.php
CHANGED
@@ -14,7 +14,6 @@ namespace Symfony\Component\Translation\Dumper;
|
|
14 |
use Symfony\Component\Translation\MessageCatalogue;
|
15 |
use Symfony\Component\Translation\Util\ArrayConverter;
|
16 |
use Symfony\Component\Yaml\Yaml;
|
17 |
-
use Symfony\Component\Translation\Exception\LogicException;
|
18 |
|
19 |
/**
|
20 |
* YamlFileDumper generates yaml files from a message catalogue.
|
@@ -23,20 +22,13 @@ use Symfony\Component\Translation\Exception\LogicException;
|
|
23 |
*/
|
24 |
class YamlFileDumper extends FileDumper
|
25 |
{
|
26 |
-
private $extension;
|
27 |
-
|
28 |
-
public function __construct(/**string */$extension = 'yml')
|
29 |
-
{
|
30 |
-
$this->extension = $extension;
|
31 |
-
}
|
32 |
-
|
33 |
/**
|
34 |
* {@inheritdoc}
|
35 |
*/
|
36 |
public function formatCatalogue(MessageCatalogue $messages, $domain, array $options = array())
|
37 |
{
|
38 |
if (!class_exists('Symfony\Component\Yaml\Yaml')) {
|
39 |
-
throw new LogicException('Dumping translations in the YAML format requires the Symfony Yaml component.');
|
40 |
}
|
41 |
|
42 |
$data = $messages->all($domain);
|
@@ -52,11 +44,21 @@ class YamlFileDumper extends FileDumper
|
|
52 |
return Yaml::dump($data);
|
53 |
}
|
54 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55 |
/**
|
56 |
* {@inheritdoc}
|
57 |
*/
|
58 |
protected function getExtension()
|
59 |
{
|
60 |
-
return
|
61 |
}
|
62 |
}
|
14 |
use Symfony\Component\Translation\MessageCatalogue;
|
15 |
use Symfony\Component\Translation\Util\ArrayConverter;
|
16 |
use Symfony\Component\Yaml\Yaml;
|
|
|
17 |
|
18 |
/**
|
19 |
* YamlFileDumper generates yaml files from a message catalogue.
|
22 |
*/
|
23 |
class YamlFileDumper extends FileDumper
|
24 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
/**
|
26 |
* {@inheritdoc}
|
27 |
*/
|
28 |
public function formatCatalogue(MessageCatalogue $messages, $domain, array $options = array())
|
29 |
{
|
30 |
if (!class_exists('Symfony\Component\Yaml\Yaml')) {
|
31 |
+
throw new \LogicException('Dumping translations in the YAML format requires the Symfony Yaml component.');
|
32 |
}
|
33 |
|
34 |
$data = $messages->all($domain);
|
44 |
return Yaml::dump($data);
|
45 |
}
|
46 |
|
47 |
+
/**
|
48 |
+
* {@inheritdoc}
|
49 |
+
*/
|
50 |
+
protected function format(MessageCatalogue $messages, $domain)
|
51 |
+
{
|
52 |
+
@trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.8 and will be removed in 3.0. Use the formatCatalogue() method instead.', E_USER_DEPRECATED);
|
53 |
+
|
54 |
+
return $this->formatCatalogue($messages, $domain);
|
55 |
+
}
|
56 |
+
|
57 |
/**
|
58 |
* {@inheritdoc}
|
59 |
*/
|
60 |
protected function getExtension()
|
61 |
{
|
62 |
+
return 'yml';
|
63 |
}
|
64 |
}
|
src/common/lib/vendor/symfony/translation/Exception/InvalidArgumentException.php
DELETED
@@ -1,21 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/*
|
4 |
-
* This file is part of the Symfony package.
|
5 |
-
*
|
6 |
-
* (c) Fabien Potencier <fabien@symfony.com>
|
7 |
-
*
|
8 |
-
* For the full copyright and license information, please view the LICENSE
|
9 |
-
* file that was distributed with this source code.
|
10 |
-
*/
|
11 |
-
|
12 |
-
namespace Symfony\Component\Translation\Exception;
|
13 |
-
|
14 |
-
/**
|
15 |
-
* Base InvalidArgumentException for the Translation component.
|
16 |
-
*
|
17 |
-
* @author Abdellatif Ait boudad <a.aitboudad@gmail.com>
|
18 |
-
*/
|
19 |
-
class InvalidArgumentException extends \InvalidArgumentException implements ExceptionInterface
|
20 |
-
{
|
21 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/common/lib/vendor/symfony/translation/Exception/LogicException.php
DELETED
@@ -1,21 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/*
|
4 |
-
* This file is part of the Symfony package.
|
5 |
-
*
|
6 |
-
* (c) Fabien Potencier <fabien@symfony.com>
|
7 |
-
*
|
8 |
-
* For the full copyright and license information, please view the LICENSE
|
9 |
-
* file that was distributed with this source code.
|
10 |
-
*/
|
11 |
-
|
12 |
-
namespace Symfony\Component\Translation\Exception;
|
13 |
-
|
14 |
-
/**
|
15 |
-
* Base LogicException for Translation component.
|
16 |
-
*
|
17 |
-
* @author Abdellatif Ait boudad <a.aitboudad@gmail.com>
|
18 |
-
*/
|
19 |
-
class LogicException extends \LogicException implements ExceptionInterface
|
20 |
-
{
|
21 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/common/lib/vendor/symfony/translation/Exception/RuntimeException.php
DELETED
@@ -1,21 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/*
|
4 |
-
* This file is part of the Symfony package.
|
5 |
-
*
|
6 |
-
* (c) Fabien Potencier <fabien@symfony.com>
|
7 |
-
*
|
8 |
-
* For the full copyright and license information, please view the LICENSE
|
9 |
-
* file that was distributed with this source code.
|
10 |
-
*/
|
11 |
-
|
12 |
-
namespace Symfony\Component\Translation\Exception;
|
13 |
-
|
14 |
-
/**
|
15 |
-
* Base RuntimeException for the Translation component.
|
16 |
-
*
|
17 |
-
* @author Abdellatif Ait boudad <a.aitboudad@gmail.com>
|
18 |
-
*/
|
19 |
-
class RuntimeException extends \RuntimeException implements ExceptionInterface
|
20 |
-
{
|
21 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/common/lib/vendor/symfony/translation/Extractor/AbstractFileExtractor.php
CHANGED
@@ -11,8 +11,6 @@
|
|
11 |
|
12 |
namespace Symfony\Component\Translation\Extractor;
|
13 |
|
14 |
-
use Symfony\Component\Translation\Exception\InvalidArgumentException;
|
15 |
-
|
16 |
/**
|
17 |
* Base class used by classes that extract translation messages from files.
|
18 |
*
|
@@ -58,12 +56,12 @@ abstract class AbstractFileExtractor
|
|
58 |
*
|
59 |
* @return bool
|
60 |
*
|
61 |
-
* @throws InvalidArgumentException
|
62 |
*/
|
63 |
protected function isFile($file)
|
64 |
{
|
65 |
if (!is_file($file)) {
|
66 |
-
throw new InvalidArgumentException(sprintf('The "%s" file does not exist.', $file));
|
67 |
}
|
68 |
|
69 |
return true;
|
11 |
|
12 |
namespace Symfony\Component\Translation\Extractor;
|
13 |
|
|
|
|
|
14 |
/**
|
15 |
* Base class used by classes that extract translation messages from files.
|
16 |
*
|
56 |
*
|
57 |
* @return bool
|
58 |
*
|
59 |
+
* @throws \InvalidArgumentException
|
60 |
*/
|
61 |
protected function isFile($file)
|
62 |
{
|
63 |
if (!is_file($file)) {
|
64 |
+
throw new \InvalidArgumentException(sprintf('The "%s" file does not exist.', $file));
|
65 |
}
|
66 |
|
67 |
return true;
|
src/common/lib/vendor/symfony/translation/Extractor/PhpExtractor.php
DELETED
@@ -1,258 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/*
|
4 |
-
* This file is part of the Symfony package.
|
5 |
-
*
|
6 |
-
* (c) Fabien Potencier <fabien@symfony.com>
|
7 |
-
*
|
8 |
-
* For the full copyright and license information, please view the LICENSE
|
9 |
-
* file that was distributed with this source code.
|
10 |
-
*/
|
11 |
-
|
12 |
-
namespace Symfony\Component\Translation\Extractor;
|
13 |
-
|
14 |
-
use Symfony\Component\Finder\Finder;
|
15 |
-
use Symfony\Component\Translation\MessageCatalogue;
|
16 |
-
|
17 |
-
/**
|
18 |
-
* PhpExtractor extracts translation messages from a PHP template.
|
19 |
-
*
|
20 |
-
* @author Michel Salib <michelsalib@hotmail.com>
|
21 |
-
*/
|
22 |
-
class PhpExtractor extends AbstractFileExtractor implements ExtractorInterface
|
23 |
-
{
|
24 |
-
const MESSAGE_TOKEN = 300;
|
25 |
-
const METHOD_ARGUMENTS_TOKEN = 1000;
|
26 |
-
const DOMAIN_TOKEN = 1001;
|
27 |
-
|
28 |
-
/**
|
29 |
-
* Prefix for new found message.
|
30 |
-
*
|
31 |
-
* @var string
|
32 |
-
*/
|
33 |
-
private $prefix = '';
|
34 |
-
|
35 |
-
/**
|
36 |
-
* The sequence that captures translation messages.
|
37 |
-
*
|
38 |
-
* @var array
|
39 |
-
*/
|
40 |
-
protected $sequences = array(
|
41 |
-
array(
|
42 |
-
'->',
|
43 |
-
'trans',
|
44 |
-
'(',
|
45 |
-
self::MESSAGE_TOKEN,
|
46 |
-
',',
|
47 |
-
self::METHOD_ARGUMENTS_TOKEN,
|
48 |
-
',',
|
49 |
-
self::DOMAIN_TOKEN,
|
50 |
-
),
|
51 |
-
array(
|
52 |
-
'->',
|
53 |
-
'transChoice',
|
54 |
-
'(',
|
55 |
-
self::MESSAGE_TOKEN,
|
56 |
-
',',
|
57 |
-
self::METHOD_ARGUMENTS_TOKEN,
|
58 |
-
',',
|
59 |
-
self::METHOD_ARGUMENTS_TOKEN,
|
60 |
-
',',
|
61 |
-
self::DOMAIN_TOKEN,
|
62 |
-
),
|
63 |
-
array(
|
64 |
-
'->',
|
65 |
-
'trans',
|
66 |
-
'(',
|
67 |
-
self::MESSAGE_TOKEN,
|
68 |
-
),
|
69 |
-
array(
|
70 |
-
'->',
|
71 |
-
'transChoice',
|
72 |
-
'(',
|
73 |
-
self::MESSAGE_TOKEN,
|
74 |
-
),
|
75 |
-
);
|
76 |
-
|
77 |
-
/**
|
78 |
-
* {@inheritdoc}
|
79 |
-
*/
|
80 |
-
public function extract($resource, MessageCatalogue $catalog)
|
81 |
-
{
|
82 |
-
$files = $this->extractFiles($resource);
|
83 |
-
foreach ($files as $file) {
|
84 |
-
$this->parseTokens(token_get_all(file_get_contents($file)), $catalog);
|
85 |
-
|
86 |
-
if (\PHP_VERSION_ID >= 70000) {
|
87 |
-
// PHP 7 memory manager will not release after token_get_all(), see https://bugs.php.net/70098
|
88 |
-
gc_mem_caches();
|
89 |
-
}
|
90 |
-
}
|
91 |
-
}
|
92 |
-
|
93 |
-
/**
|
94 |
-
* {@inheritdoc}
|
95 |
-
*/
|
96 |
-
public function setPrefix($prefix)
|
97 |
-
{
|
98 |
-
$this->prefix = $prefix;
|
99 |
-
}
|
100 |
-
|
101 |
-
/**
|
102 |
-
* Normalizes a token.
|
103 |
-
*
|
104 |
-
* @param mixed $token
|
105 |
-
*
|
106 |
-
* @return string
|
107 |
-
*/
|
108 |
-
protected function normalizeToken($token)
|
109 |
-
{
|
110 |
-
if (isset($token[1]) && 'b"' !== $token) {
|
111 |
-
return $token[1];
|
112 |
-
}
|
113 |
-
|
114 |
-
return $token;
|
115 |
-
}
|
116 |
-
|
117 |
-
/**
|
118 |
-
* Seeks to a non-whitespace token.
|
119 |
-
*/
|
120 |
-
private function seekToNextRelevantToken(\Iterator $tokenIterator)
|
121 |
-
{
|
122 |
-
for (; $tokenIterator->valid(); $tokenIterator->next()) {
|
123 |
-
$t = $tokenIterator->current();
|
124 |
-
if (T_WHITESPACE !== $t[0]) {
|
125 |
-
break;
|
126 |
-
}
|
127 |
-
}
|
128 |
-
}
|
129 |
-
|
130 |
-
private function skipMethodArgument(\Iterator $tokenIterator)
|
131 |
-
{
|
132 |
-
$openBraces = 0;
|
133 |
-
|
134 |
-
for (; $tokenIterator->valid(); $tokenIterator->next()) {
|
135 |
-
$t = $tokenIterator->current();
|
136 |
-
|
137 |
-
if ('[' === $t[0] || '(' === $t[0]) {
|
138 |
-
++$openBraces;
|
139 |
-
}
|
140 |
-
|
141 |
-
if (']' === $t[0] || ')' === $t[0]) {
|
142 |
-
--$openBraces;
|
143 |
-
}
|
144 |
-
|
145 |
-
if ((0 === $openBraces && ',' === $t[0]) || (-1 === $openBraces && ')' === $t[0])) {
|
146 |
-
break;
|
147 |
-
}
|
148 |
-
}
|
149 |
-
}
|
150 |
-
|
151 |
-
/**
|
152 |
-
* Extracts the message from the iterator while the tokens
|
153 |
-
* match allowed message tokens.
|
154 |
-
*/
|
155 |
-
private function getValue(\Iterator $tokenIterator)
|
156 |
-
{
|
157 |
-
$message = '';
|
158 |
-
$docToken = '';
|
159 |
-
|
160 |
-
for (; $tokenIterator->valid(); $tokenIterator->next()) {
|
161 |
-
$t = $tokenIterator->current();
|
162 |
-
if (!isset($t[1])) {
|
163 |
-
break;
|
164 |
-
}
|
165 |
-
|
166 |
-
switch ($t[0]) {
|
167 |
-
case T_START_HEREDOC:
|
168 |
-
$docToken = $t[1];
|
169 |
-
break;
|
170 |
-
case T_ENCAPSED_AND_WHITESPACE:
|
171 |
-
case T_CONSTANT_ENCAPSED_STRING:
|
172 |
-
$message .= $t[1];
|
173 |
-
break;
|
174 |
-
case T_END_HEREDOC:
|
175 |
-
return PhpStringTokenParser::parseDocString($docToken, $message);
|
176 |
-
default:
|
177 |
-
break 2;
|
178 |
-
}
|
179 |
-
}
|
180 |
-
|
181 |
-
if ($message) {
|
182 |
-
$message = PhpStringTokenParser::parse($message);
|
183 |
-
}
|
184 |
-
|
185 |
-
return $message;
|
186 |
-
}
|
187 |
-
|
188 |
-
/**
|
189 |
-
* Extracts trans message from PHP tokens.
|
190 |
-
*
|
191 |
-
* @param array $tokens
|
192 |
-
* @param MessageCatalogue $catalog
|
193 |
-
*/
|
194 |
-
protected function parseTokens($tokens, MessageCatalogue $catalog)
|
195 |
-
{
|
196 |
-
$tokenIterator = new \ArrayIterator($tokens);
|
197 |
-
|
198 |
-
for ($key = 0; $key < $tokenIterator->count(); ++$key) {
|
199 |
-
foreach ($this->sequences as $sequence) {
|
200 |
-
$message = '';
|
201 |
-
$domain = 'messages';
|
202 |
-
$tokenIterator->seek($key);
|
203 |
-
|
204 |
-
foreach ($sequence as $sequenceKey => $item) {
|
205 |
-
$this->seekToNextRelevantToken($tokenIterator);
|
206 |
-
|
207 |
-
if ($this->normalizeToken($tokenIterator->current()) === $item) {
|
208 |
-
$tokenIterator->next();
|
209 |
-
continue;
|
210 |
-
} elseif (self::MESSAGE_TOKEN === $item) {
|
211 |
-
$message = $this->getValue($tokenIterator);
|
212 |
-
|
213 |
-
if (count($sequence) === ($sequenceKey + 1)) {
|
214 |
-
break;
|
215 |
-
}
|
216 |
-
} elseif (self::METHOD_ARGUMENTS_TOKEN === $item) {
|
217 |
-
$this->skipMethodArgument($tokenIterator);
|
218 |
-
} elseif (self::DOMAIN_TOKEN === $item) {
|
219 |
-
$domain = $this->getValue($tokenIterator);
|
220 |
-
|
221 |
-
break;
|
222 |
-
} else {
|
223 |
-
break;
|
224 |
-
}
|
225 |
-
}
|
226 |
-
|
227 |
-
if ($message) {
|
228 |
-
$catalog->set($message, $this->prefix.$message, $domain);
|
229 |
-
break;
|
230 |
-
}
|
231 |
-
}
|
232 |
-
}
|
233 |
-
}
|
234 |
-
|
235 |
-
/**
|
236 |
-
* @param string $file
|
237 |
-
*
|
238 |
-
* @return bool
|
239 |
-
*
|
240 |
-
* @throws \InvalidArgumentException
|
241 |
-
*/
|
242 |
-
protected function canBeExtracted($file)
|
243 |
-
{
|
244 |
-
return $this->isFile($file) && 'php' === pathinfo($file, PATHINFO_EXTENSION);
|
245 |
-
}
|
246 |
-
|
247 |
-
/**
|
248 |
-
* @param string|array $directory
|
249 |
-
*
|
250 |
-
* @return array
|
251 |
-
*/
|
252 |
-
protected function extractFromDirectory($directory)
|
253 |
-
{
|
254 |
-
$finder = new Finder();
|
255 |
-
|
256 |
-
return $finder->files()->name('*.php')->in($directory);
|
257 |
-
}
|
258 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/common/lib/vendor/symfony/translation/Extractor/PhpStringTokenParser.php
DELETED
@@ -1,142 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/*
|
4 |
-
* This file is part of the Symfony package.
|
5 |
-
*
|
6 |
-
* (c) Fabien Potencier <fabien@symfony.com>
|
7 |
-
*
|
8 |
-
* For the full copyright and license information, please view the LICENSE
|
9 |
-
* file that was distributed with this source code.
|
10 |
-
*/
|
11 |
-
|
12 |
-
namespace Symfony\Component\Translation\Extractor;
|
13 |
-
|
14 |
-
/*
|
15 |
-
* The following is derived from code at http://github.com/nikic/PHP-Parser
|
16 |
-
*
|
17 |
-
* Copyright (c) 2011 by Nikita Popov
|
18 |
-
*
|
19 |
-
* Some rights reserved.
|
20 |
-
*
|
21 |
-
* Redistribution and use in source and binary forms, with or without
|
22 |
-
* modification, are permitted provided that the following conditions are
|
23 |
-
* met:
|
24 |
-
*
|
25 |
-
* * Redistributions of source code must retain the above copyright
|
26 |
-
* notice, this list of conditions and the following disclaimer.
|
27 |
-
*
|
28 |
-
* * Redistributions in binary form must reproduce the above
|
29 |
-
* copyright notice, this list of conditions and the following
|
30 |
-
* disclaimer in the documentation and/or other materials provided
|
31 |
-
* with the distribution.
|
32 |
-
*
|
33 |
-
* * The names of the contributors may not be used to endorse or
|
34 |
-
* promote products derived from this software without specific
|
35 |
-
* prior written permission.
|
36 |
-
*
|
37 |
-
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
38 |
-
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
39 |
-
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
40 |
-
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
41 |
-
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
42 |
-
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
43 |
-
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
44 |
-
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
45 |
-
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
46 |
-
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
47 |
-
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
48 |
-
*/
|
49 |
-
|
50 |
-
class PhpStringTokenParser
|
51 |
-
{
|
52 |
-
protected static $replacements = array(
|
53 |
-
'\\' => '\\',
|
54 |
-
'$' => '$',
|
55 |
-
'n' => "\n",
|
56 |
-
'r' => "\r",
|
57 |
-
't' => "\t",
|
58 |
-
'f' => "\f",
|
59 |
-
'v' => "\v",
|
60 |
-
'e' => "\x1B",
|
61 |
-
);
|
62 |
-
|
63 |
-
/**
|
64 |
-
* Parses a string token.
|
65 |
-
*
|
66 |
-
* @param string $str String token content
|
67 |
-
*
|
68 |
-
* @return string The parsed string
|
69 |
-
*/
|
70 |
-
public static function parse($str)
|
71 |
-
{
|
72 |
-
$bLength = 0;
|
73 |
-
if ('b' === $str[0]) {
|
74 |
-
$bLength = 1;
|
75 |
-
}
|
76 |
-
|
77 |
-
if ('\'' === $str[$bLength]) {
|
78 |
-
return str_replace(
|
79 |
-
array('\\\\', '\\\''),
|
80 |
-
array('\\', '\''),
|
81 |
-
substr($str, $bLength + 1, -1)
|
82 |
-
);
|
83 |
-
} else {
|
84 |
-
return self::parseEscapeSequences(substr($str, $bLength + 1, -1), '"');
|
85 |
-
}
|
86 |
-
}
|
87 |
-
|
88 |
-
/**
|
89 |
-
* Parses escape sequences in strings (all string types apart from single quoted).
|
90 |
-
*
|
91 |
-
* @param string $str String without quotes
|
92 |
-
* @param null|string $quote Quote type
|
93 |
-
*
|
94 |
-
* @return string String with escape sequences parsed
|
95 |
-
*/
|
96 |
-
public static function parseEscapeSequences($str, $quote)
|
97 |
-
{
|
98 |
-
if (null !== $quote) {
|
99 |
-
$str = str_replace('\\'.$quote, $quote, $str);
|
100 |
-
}
|
101 |
-
|
102 |
-
return preg_replace_callback(
|
103 |
-
'~\\\\([\\\\$nrtfve]|[xX][0-9a-fA-F]{1,2}|[0-7]{1,3})~',
|
104 |
-
array(__CLASS__, 'parseCallback'),
|
105 |
-
$str
|
106 |
-
);
|
107 |
-
}
|
108 |
-
|
109 |
-
private static function parseCallback($matches)
|
110 |
-
{
|
111 |
-
$str = $matches[1];
|
112 |
-
|
113 |
-
if (isset(self::$replacements[$str])) {
|
114 |
-
return self::$replacements[$str];
|
115 |
-
} elseif ('x' === $str[0] || 'X' === $str[0]) {
|
116 |
-
return chr(hexdec($str));
|
117 |
-
} else {
|
118 |
-
return chr(octdec($str));
|
119 |
-
}
|
120 |
-
}
|
121 |
-
|
122 |
-
/**
|
123 |
-
* Parses a constant doc string.
|
124 |
-
*
|
125 |
-
* @param string $startToken Doc string start token content (<<<SMTHG)
|
126 |
-
* @param string $str String token content
|
127 |
-
*
|
128 |
-
* @return string Parsed string
|
129 |
-
*/
|
130 |
-
public static function parseDocString($startToken, $str)
|
131 |
-
{
|
132 |
-
// strip last newline (thanks tokenizer for sticking it into the string!)
|
133 |
-
$str = preg_replace('~(\r\n|\n|\r)$~', '', $str);
|
134 |
-
|
135 |
-
// nowdoc string
|
136 |
-
if (false !== strpos($startToken, '\'')) {
|
137 |
-
return $str;
|
138 |
-
}
|
139 |
-
|
140 |
-
return self::parseEscapeSequences($str, null);
|
141 |
-
}
|
142 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/common/lib/vendor/symfony/translation/Formatter/ChoiceMessageFormatterInterface.php
DELETED
@@ -1,30 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/*
|
4 |
-
* This file is part of the Symfony package.
|
5 |
-
*
|
6 |
-
* (c) Fabien Potencier <fabien@symfony.com>
|
7 |
-
*
|
8 |
-
* For the full copyright and license information, please view the LICENSE
|
9 |
-
* file that was distributed with this source code.
|
10 |
-
*/
|
11 |
-
|
12 |
-
namespace Symfony\Component\Translation\Formatter;
|
13 |
-
|
14 |
-
/**
|
15 |
-
* @author Abdellatif Ait boudad <a.aitboudad@gmail.com>
|
16 |
-
*/
|
17 |
-
interface ChoiceMessageFormatterInterface
|
18 |
-
{
|
19 |
-
/**
|
20 |
-
* Formats a localized message pattern with given arguments.
|
21 |
-
*
|
22 |
-
* @param string $message The message (may also be an object that can be cast to string)
|
23 |
-
* @param int $number The number to use to find the indice of the message
|
24 |
-
* @param string $locale The message locale
|
25 |
-
* @param array $parameters An array of parameters for the message
|
26 |
-
*
|
27 |
-
* @return string
|
28 |
-
*/
|
29 |
-
public function choiceFormat($message, $number, $locale, array $parameters = array());
|
30 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/common/lib/vendor/symfony/translation/Formatter/MessageFormatter.php
DELETED
@@ -1,48 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/*
|
4 |
-
* This file is part of the Symfony package.
|
5 |
-
*
|
6 |
-
* (c) Fabien Potencier <fabien@symfony.com>
|
7 |
-
*
|
8 |
-
* For the full copyright and license information, please view the LICENSE
|
9 |
-
* file that was distributed with this source code.
|
10 |
-
*/
|
11 |
-
|
12 |
-
namespace Symfony\Component\Translation\Formatter;
|
13 |
-
|
14 |
-
use Symfony\Component\Translation\MessageSelector;
|
15 |
-
|
16 |
-
/**
|
17 |
-
* @author Abdellatif Ait boudad <a.aitboudad@gmail.com>
|
18 |
-
*/
|
19 |
-
class MessageFormatter implements MessageFormatterInterface, ChoiceMessageFormatterInterface
|
20 |
-
{
|
21 |
-
private $selector;
|
22 |
-
|
23 |
-
/**
|
24 |
-
* @param MessageSelector|null $selector The message selector for pluralization
|
25 |
-
*/
|
26 |
-
public function __construct(MessageSelector $selector = null)
|
27 |
-
{
|
28 |
-
$this->selector = $selector ?: new MessageSelector();
|
29 |
-
}
|
30 |
-
|
31 |
-
/**
|
32 |
-
* {@inheritdoc}
|
33 |
-
*/
|
34 |
-
public function format($message, $locale, array $parameters = array())
|
35 |
-
{
|
36 |
-
return strtr($message, $parameters);
|
37 |
-
}
|
38 |
-
|
39 |
-
/**
|
40 |
-
* {@inheritdoc}
|
41 |
-
*/
|
42 |
-
public function choiceFormat($message, $number, $locale, array $parameters = array())
|
43 |
-
{
|
44 |
-
$parameters = array_merge(array('%count%' => $number), $parameters);
|
45 |
-
|
46 |
-
return $this->format($this->selector->choose($message, (int) $number, $locale), $locale, $parameters);
|
47 |
-
}
|
48 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/common/lib/vendor/symfony/translation/Formatter/MessageFormatterInterface.php
DELETED
@@ -1,30 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/*
|
4 |
-
* This file is part of the Symfony package.
|
5 |
-
*
|
6 |
-
* (c) Fabien Potencier <fabien@symfony.com>
|
7 |
-
*
|
8 |
-
* For the full copyright and license information, please view the LICENSE
|
9 |
-
* file that was distributed with this source code.
|
10 |
-
*/
|
11 |
-
|
12 |
-
namespace Symfony\Component\Translation\Formatter;
|
13 |
-
|
14 |
-
/**
|
15 |
-
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
|
16 |
-
* @author Abdellatif Ait boudad <a.aitboudad@gmail.com>
|
17 |
-
*/
|
18 |
-
interface MessageFormatterInterface
|
19 |
-
{
|
20 |
-
/**
|
21 |
-
* Formats a localized message pattern with given arguments.
|
22 |
-
*
|
23 |
-
* @param string $message The message (may also be an object that can be cast to string)
|
24 |
-
* @param string $locale The message locale
|
25 |
-
* @param array $parameters An array of parameters for the message
|
26 |
-
*
|
27 |
-
* @return string
|
28 |
-
*/
|
29 |
-
public function format($message, $locale, array $parameters = array());
|
30 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/common/lib/vendor/symfony/translation/Interval.php
CHANGED
@@ -11,8 +11,6 @@
|
|
11 |
|
12 |
namespace Symfony\Component\Translation;
|
13 |
|
14 |
-
use Symfony\Component\Translation\Exception\InvalidArgumentException;
|
15 |
-
|
16 |
/**
|
17 |
* Tests if a given number belongs to a given math interval.
|
18 |
*
|
@@ -43,14 +41,14 @@ class Interval
|
|
43 |
*
|
44 |
* @return bool
|
45 |
*
|
46 |
-
* @throws InvalidArgumentException
|
47 |
*/
|
48 |
public static function test($number, $interval)
|
49 |
{
|
50 |
$interval = trim($interval);
|
51 |
|
52 |
if (!preg_match('/^'.self::getIntervalRegexp().'$/x', $interval, $matches)) {
|
53 |
-
throw new InvalidArgumentException(sprintf('"%s" is not a valid interval.', $interval));
|
54 |
}
|
55 |
|
56 |
if ($matches[1]) {
|
11 |
|
12 |
namespace Symfony\Component\Translation;
|
13 |
|
|
|
|
|
14 |
/**
|
15 |
* Tests if a given number belongs to a given math interval.
|
16 |
*
|
41 |
*
|
42 |
* @return bool
|
43 |
*
|
44 |
+
* @throws \InvalidArgumentException
|
45 |
*/
|
46 |
public static function test($number, $interval)
|
47 |
{
|
48 |
$interval = trim($interval);
|
49 |
|
50 |
if (!preg_match('/^'.self::getIntervalRegexp().'$/x', $interval, $matches)) {
|
51 |
+
throw new \InvalidArgumentException(sprintf('"%s" is not a valid interval.', $interval));
|
52 |
}
|
53 |
|
54 |
if ($matches[1]) {
|
src/common/lib/vendor/symfony/translation/Loader/XliffFileLoader.php
CHANGED
@@ -15,7 +15,6 @@ use Symfony\Component\Config\Util\XmlUtils;
|
|
15 |
use Symfony\Component\Translation\MessageCatalogue;
|
16 |
use Symfony\Component\Translation\Exception\InvalidResourceException;
|
17 |
use Symfony\Component\Translation\Exception\NotFoundResourceException;
|
18 |
-
use Symfony\Component\Translation\Exception\InvalidArgumentException;
|
19 |
use Symfony\Component\Config\Resource\FileResource;
|
20 |
|
21 |
/**
|
@@ -99,7 +98,6 @@ class XliffFileLoader implements LoaderInterface
|
|
99 |
if ($notes = $this->parseNotesMetadata($translation->note, $encoding)) {
|
100 |
$metadata['notes'] = $notes;
|
101 |
}
|
102 |
-
|
103 |
if (isset($translation->target) && $translation->target->attributes()) {
|
104 |
$metadata['target-attributes'] = array();
|
105 |
foreach ($translation->target->attributes() as $key => $value) {
|
@@ -107,10 +105,6 @@ class XliffFileLoader implements LoaderInterface
|
|
107 |
}
|
108 |
}
|
109 |
|
110 |
-
if (isset($attributes['id'])) {
|
111 |
-
$metadata['id'] = (string) $attributes['id'];
|
112 |
-
}
|
113 |
-
|
114 |
$catalogue->setMetadata((string) $source, $metadata, $domain);
|
115 |
}
|
116 |
}
|
@@ -127,8 +121,7 @@ class XliffFileLoader implements LoaderInterface
|
|
127 |
|
128 |
$xml->registerXPathNamespace('xliff', 'urn:oasis:names:tc:xliff:document:2.0');
|
129 |
|
130 |
-
foreach ($xml->xpath('//xliff:unit') as $
|
131 |
-
$segment = $unit->segment;
|
132 |
$source = $segment->source;
|
133 |
|
134 |
// If the xlf file has another encoding specified, try to convert it because
|
@@ -145,18 +138,6 @@ class XliffFileLoader implements LoaderInterface
|
|
145 |
}
|
146 |
}
|
147 |
|
148 |
-
if (isset($unit->notes)) {
|
149 |
-
$metadata['notes'] = array();
|
150 |
-
foreach ($unit->notes->note as $noteNode) {
|
151 |
-
$note = array();
|
152 |
-
foreach ($noteNode->attributes() as $key => $value) {
|
153 |
-
$note[$key] = (string) $value;
|
154 |
-
}
|
155 |
-
$note['content'] = (string) $noteNode;
|
156 |
-
$metadata['notes'][] = $note;
|
157 |
-
}
|
158 |
-
}
|
159 |
-
|
160 |
$catalogue->setMetadata((string) $source, $metadata, $domain);
|
161 |
}
|
162 |
}
|
@@ -185,6 +166,7 @@ class XliffFileLoader implements LoaderInterface
|
|
185 |
* @param \DOMDocument $dom
|
186 |
* @param string $schema source of the schema
|
187 |
*
|
|
|
188 |
* @throws InvalidResourceException
|
189 |
*/
|
190 |
private function validateSchema($file, \DOMDocument $dom, $schema)
|
@@ -216,7 +198,7 @@ class XliffFileLoader implements LoaderInterface
|
|
216 |
$schemaSource = file_get_contents(__DIR__.'/schema/dic/xliff-core/xliff-core-2.0.xsd');
|
217 |
$xmlUri = 'informativeCopiesOf3rdPartySchemas/w3c/xml.xsd';
|
218 |
} else {
|
219 |
-
throw new InvalidArgumentException(sprintf('No support implemented for loading XLIFF version "%s".', $xliffVersion));
|
220 |
}
|
221 |
|
222 |
return $this->fixXmlLocation($schemaSource, $xmlUri);
|
@@ -236,7 +218,7 @@ class XliffFileLoader implements LoaderInterface
|
|
236 |
$parts = explode('/', $newPath);
|
237 |
$locationstart = 'file:///';
|
238 |
if (0 === stripos($newPath, 'phar://')) {
|
239 |
-
$tmpfile = tempnam(sys_get_temp_dir(), '
|
240 |
if ($tmpfile) {
|
241 |
copy($newPath, $tmpfile);
|
242 |
$parts = explode('/', str_replace('\\', '/', $tmpfile));
|
@@ -245,7 +227,6 @@ class XliffFileLoader implements LoaderInterface
|
|
245 |
$locationstart = 'phar:///';
|
246 |
}
|
247 |
}
|
248 |
-
|
249 |
$drive = '\\' === DIRECTORY_SEPARATOR ? array_shift($parts).'/' : '';
|
250 |
$newPath = $locationstart.$drive.implode('/', array_map('rawurlencode', $parts));
|
251 |
|
@@ -285,7 +266,7 @@ class XliffFileLoader implements LoaderInterface
|
|
285 |
*
|
286 |
* @param \DOMDocument $dom
|
287 |
*
|
288 |
-
* @throws InvalidArgumentException
|
289 |
*
|
290 |
* @return string
|
291 |
*/
|
@@ -301,7 +282,7 @@ class XliffFileLoader implements LoaderInterface
|
|
301 |
$namespace = $xliff->attributes->getNamedItem('xmlns');
|
302 |
if ($namespace) {
|
303 |
if (0 !== substr_compare('urn:oasis:names:tc:xliff:document:', $namespace->nodeValue, 0, 34)) {
|
304 |
-
throw new InvalidArgumentException(sprintf('Not a valid XLIFF namespace "%s"', $namespace));
|
305 |
}
|
306 |
|
307 |
return substr($namespace, 34);
|
@@ -312,7 +293,7 @@ class XliffFileLoader implements LoaderInterface
|
|
312 |
return '1.2';
|
313 |
}
|
314 |
|
315 |
-
|
316 |
* @param \SimpleXMLElement|null $noteElement
|
317 |
* @param string|null $encoding
|
318 |
*
|
@@ -326,7 +307,6 @@ class XliffFileLoader implements LoaderInterface
|
|
326 |
return $notes;
|
327 |
}
|
328 |
|
329 |
-
/** @var \SimpleXMLElement $xmlNote */
|
330 |
foreach ($noteElement as $xmlNote) {
|
331 |
$noteAttributes = $xmlNote->attributes();
|
332 |
$note = array('content' => $this->utf8ToCharset((string) $xmlNote, $encoding));
|
15 |
use Symfony\Component\Translation\MessageCatalogue;
|
16 |
use Symfony\Component\Translation\Exception\InvalidResourceException;
|
17 |
use Symfony\Component\Translation\Exception\NotFoundResourceException;
|
|
|
18 |
use Symfony\Component\Config\Resource\FileResource;
|
19 |
|
20 |
/**
|
98 |
if ($notes = $this->parseNotesMetadata($translation->note, $encoding)) {
|
99 |
$metadata['notes'] = $notes;
|
100 |
}
|
|
|
101 |
if (isset($translation->target) && $translation->target->attributes()) {
|
102 |
$metadata['target-attributes'] = array();
|
103 |
foreach ($translation->target->attributes() as $key => $value) {
|
105 |
}
|
106 |
}
|
107 |
|
|
|
|
|
|
|
|
|
108 |
$catalogue->setMetadata((string) $source, $metadata, $domain);
|
109 |
}
|
110 |
}
|
121 |
|
122 |
$xml->registerXPathNamespace('xliff', 'urn:oasis:names:tc:xliff:document:2.0');
|
123 |
|
124 |
+
foreach ($xml->xpath('//xliff:unit/xliff:segment') as $segment) {
|
|
|
125 |
$source = $segment->source;
|
126 |
|
127 |
// If the xlf file has another encoding specified, try to convert it because
|
138 |
}
|
139 |
}
|
140 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
141 |
$catalogue->setMetadata((string) $source, $metadata, $domain);
|
142 |
}
|
143 |
}
|
166 |
* @param \DOMDocument $dom
|
167 |
* @param string $schema source of the schema
|
168 |
*
|
169 |
+
* @throws \RuntimeException
|
170 |
* @throws InvalidResourceException
|
171 |
*/
|
172 |
private function validateSchema($file, \DOMDocument $dom, $schema)
|
198 |
$schemaSource = file_get_contents(__DIR__.'/schema/dic/xliff-core/xliff-core-2.0.xsd');
|
199 |
$xmlUri = 'informativeCopiesOf3rdPartySchemas/w3c/xml.xsd';
|
200 |
} else {
|
201 |
+
throw new \InvalidArgumentException(sprintf('No support implemented for loading XLIFF version "%s".', $xliffVersion));
|
202 |
}
|
203 |
|
204 |
return $this->fixXmlLocation($schemaSource, $xmlUri);
|
218 |
$parts = explode('/', $newPath);
|
219 |
$locationstart = 'file:///';
|
220 |
if (0 === stripos($newPath, 'phar://')) {
|
221 |
+
$tmpfile = tempnam(sys_get_temp_dir(), 'sf2');
|
222 |
if ($tmpfile) {
|
223 |
copy($newPath, $tmpfile);
|
224 |
$parts = explode('/', str_replace('\\', '/', $tmpfile));
|
227 |
$locationstart = 'phar:///';
|
228 |
}
|
229 |
}
|
|
|
230 |
$drive = '\\' === DIRECTORY_SEPARATOR ? array_shift($parts).'/' : '';
|
231 |
$newPath = $locationstart.$drive.implode('/', array_map('rawurlencode', $parts));
|
232 |
|
266 |
*
|
267 |
* @param \DOMDocument $dom
|
268 |
*
|
269 |
+
* @throws \InvalidArgumentException
|
270 |
*
|
271 |
* @return string
|
272 |
*/
|
282 |
$namespace = $xliff->attributes->getNamedItem('xmlns');
|
283 |
if ($namespace) {
|
284 |
if (0 !== substr_compare('urn:oasis:names:tc:xliff:document:', $namespace->nodeValue, 0, 34)) {
|
285 |
+
throw new \InvalidArgumentException(sprintf('Not a valid XLIFF namespace "%s"', $namespace));
|
286 |
}
|
287 |
|
288 |
return substr($namespace, 34);
|
293 |
return '1.2';
|
294 |
}
|
295 |
|
296 |
+
/*
|
297 |
* @param \SimpleXMLElement|null $noteElement
|
298 |
* @param string|null $encoding
|
299 |
*
|
307 |
return $notes;
|
308 |
}
|
309 |
|
|
|
310 |
foreach ($noteElement as $xmlNote) {
|
311 |
$noteAttributes = $xmlNote->attributes();
|
312 |
$note = array('content' => $this->utf8ToCharset((string) $xmlNote, $encoding));
|
src/common/lib/vendor/symfony/translation/Loader/YamlFileLoader.php
CHANGED
@@ -12,7 +12,6 @@
|
|
12 |
namespace Symfony\Component\Translation\Loader;
|
13 |
|
14 |
use Symfony\Component\Translation\Exception\InvalidResourceException;
|
15 |
-
use Symfony\Component\Translation\Exception\LogicException;
|
16 |
use Symfony\Component\Yaml\Parser as YamlParser;
|
17 |
use Symfony\Component\Yaml\Exception\ParseException;
|
18 |
|
@@ -32,24 +31,16 @@ class YamlFileLoader extends FileLoader
|
|
32 |
{
|
33 |
if (null === $this->yamlParser) {
|
34 |
if (!class_exists('Symfony\Component\Yaml\Parser')) {
|
35 |
-
throw new LogicException('Loading translations from the YAML format requires the Symfony Yaml component.');
|
36 |
}
|
37 |
|
38 |
$this->yamlParser = new YamlParser();
|
39 |
}
|
40 |
|
41 |
-
$prevErrorHandler = set_error_handler(function ($level, $message, $script, $line) use ($resource, &$prevErrorHandler) {
|
42 |
-
$message = E_USER_DEPRECATED === $level ? preg_replace('/ on line \d+/', ' in "'.$resource.'"$0', $message) : $message;
|
43 |
-
|
44 |
-
return $prevErrorHandler ? $prevErrorHandler($level, $message, $script, $line) : false;
|
45 |
-
});
|
46 |
-
|
47 |
try {
|
48 |
-
$messages = $this->yamlParser->
|
49 |
} catch (ParseException $e) {
|
50 |
throw new InvalidResourceException(sprintf('Error parsing YAML, invalid file "%s"', $resource), 0, $e);
|
51 |
-
} finally {
|
52 |
-
restore_error_handler();
|
53 |
}
|
54 |
|
55 |
return $messages;
|
12 |
namespace Symfony\Component\Translation\Loader;
|
13 |
|
14 |
use Symfony\Component\Translation\Exception\InvalidResourceException;
|
|
|
15 |
use Symfony\Component\Yaml\Parser as YamlParser;
|
16 |
use Symfony\Component\Yaml\Exception\ParseException;
|
17 |
|
31 |
{
|
32 |
if (null === $this->yamlParser) {
|
33 |
if (!class_exists('Symfony\Component\Yaml\Parser')) {
|
34 |
+
throw new \LogicException('Loading translations from the YAML format requires the Symfony Yaml component.');
|
35 |
}
|
36 |
|
37 |
$this->yamlParser = new YamlParser();
|
38 |
}
|
39 |
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
try {
|
41 |
+
$messages = $this->yamlParser->parse(file_get_contents($resource));
|
42 |
} catch (ParseException $e) {
|
43 |
throw new InvalidResourceException(sprintf('Error parsing YAML, invalid file "%s"', $resource), 0, $e);
|
|
|
|
|
44 |
}
|
45 |
|
46 |
return $messages;
|
src/common/lib/vendor/symfony/translation/LoggingTranslator.php
CHANGED
@@ -12,7 +12,6 @@
|
|
12 |
namespace Symfony\Component\Translation;
|
13 |
|
14 |
use Psr\Log\LoggerInterface;
|
15 |
-
use Symfony\Component\Translation\Exception\InvalidArgumentException;
|
16 |
|
17 |
/**
|
18 |
* @author Abdellatif Ait boudad <a.aitboudad@gmail.com>
|
@@ -33,7 +32,7 @@ class LoggingTranslator implements TranslatorInterface, TranslatorBagInterface
|
|
33 |
public function __construct(TranslatorInterface $translator, LoggerInterface $logger)
|
34 |
{
|
35 |
if (!$translator instanceof TranslatorBagInterface) {
|
36 |
-
throw new InvalidArgumentException(sprintf('The Translator "%s" must implement TranslatorInterface and TranslatorBagInterface.', get_class($translator)));
|
37 |
}
|
38 |
|
39 |
$this->translator = $translator;
|
12 |
namespace Symfony\Component\Translation;
|
13 |
|
14 |
use Psr\Log\LoggerInterface;
|
|
|
15 |
|
16 |
/**
|
17 |
* @author Abdellatif Ait boudad <a.aitboudad@gmail.com>
|
32 |
public function __construct(TranslatorInterface $translator, LoggerInterface $logger)
|
33 |
{
|
34 |
if (!$translator instanceof TranslatorBagInterface) {
|
35 |
+
throw new \InvalidArgumentException(sprintf('The Translator "%s" must implement TranslatorInterface and TranslatorBagInterface.', get_class($translator)));
|
36 |
}
|
37 |
|
38 |
$this->translator = $translator;
|
src/common/lib/vendor/symfony/translation/MessageCatalogue.php
CHANGED
@@ -12,7 +12,6 @@
|
|
12 |
namespace Symfony\Component\Translation;
|
13 |
|
14 |
use Symfony\Component\Config\Resource\ResourceInterface;
|
15 |
-
use Symfony\Component\Translation\Exception\LogicException;
|
16 |
|
17 |
/**
|
18 |
* @author Fabien Potencier <fabien@symfony.com>
|
@@ -140,7 +139,7 @@ class MessageCatalogue implements MessageCatalogueInterface, MetadataAwareInterf
|
|
140 |
public function addCatalogue(MessageCatalogueInterface $catalogue)
|
141 |
{
|
142 |
if ($catalogue->getLocale() !== $this->locale) {
|
143 |
-
throw new LogicException(sprintf('Cannot add a catalogue for locale "%s" as the current locale for this catalogue is "%s"', $catalogue->getLocale(), $this->locale));
|
144 |
}
|
145 |
|
146 |
foreach ($catalogue->all() as $domain => $messages) {
|
@@ -166,14 +165,14 @@ class MessageCatalogue implements MessageCatalogueInterface, MetadataAwareInterf
|
|
166 |
$c = $catalogue;
|
167 |
while ($c = $c->getFallbackCatalogue()) {
|
168 |
if ($c->getLocale() === $this->getLocale()) {
|
169 |
-
throw new LogicException(sprintf('Circular reference detected when adding a fallback catalogue for locale "%s".', $catalogue->getLocale()));
|
170 |
}
|
171 |
}
|
172 |
|
173 |
$c = $this;
|
174 |
do {
|
175 |
if ($c->getLocale() === $catalogue->getLocale()) {
|
176 |
-
throw new LogicException(sprintf('Circular reference detected when adding a fallback catalogue for locale "%s".', $catalogue->getLocale()));
|
177 |
}
|
178 |
|
179 |
foreach ($catalogue->getResources() as $resource) {
|
12 |
namespace Symfony\Component\Translation;
|
13 |
|
14 |
use Symfony\Component\Config\Resource\ResourceInterface;
|
|
|
15 |
|
16 |
/**
|
17 |
* @author Fabien Potencier <fabien@symfony.com>
|
139 |
public function addCatalogue(MessageCatalogueInterface $catalogue)
|
140 |
{
|
141 |
if ($catalogue->getLocale() !== $this->locale) {
|
142 |
+
throw new \LogicException(sprintf('Cannot add a catalogue for locale "%s" as the current locale for this catalogue is "%s"', $catalogue->getLocale(), $this->locale));
|
143 |
}
|
144 |
|
145 |
foreach ($catalogue->all() as $domain => $messages) {
|
165 |
$c = $catalogue;
|
166 |
while ($c = $c->getFallbackCatalogue()) {
|
167 |
if ($c->getLocale() === $this->getLocale()) {
|
168 |
+
throw new \LogicException(sprintf('Circular reference detected when adding a fallback catalogue for locale "%s".', $catalogue->getLocale()));
|
169 |
}
|
170 |
}
|
171 |
|
172 |
$c = $this;
|
173 |
do {
|
174 |
if ($c->getLocale() === $catalogue->getLocale()) {
|
175 |
+
throw new \LogicException(sprintf('Circular reference detected when adding a fallback catalogue for locale "%s".', $catalogue->getLocale()));
|
176 |
}
|
177 |
|
178 |
foreach ($catalogue->getResources() as $resource) {
|
src/common/lib/vendor/symfony/translation/MessageSelector.php
CHANGED
@@ -11,8 +11,6 @@
|
|
11 |
|
12 |
namespace Symfony\Component\Translation;
|
13 |
|
14 |
-
use Symfony\Component\Translation\Exception\InvalidArgumentException;
|
15 |
-
|
16 |
/**
|
17 |
* MessageSelector.
|
18 |
*
|
@@ -45,21 +43,15 @@ class MessageSelector
|
|
45 |
*
|
46 |
* @return string
|
47 |
*
|
48 |
-
* @throws InvalidArgumentException
|
49 |
*/
|
50 |
public function choose($message, $number, $locale)
|
51 |
{
|
52 |
-
$parts =
|
53 |
-
if (preg_match('/^\|++$/', $message)) {
|
54 |
-
$parts = explode('|', $message);
|
55 |
-
} elseif (preg_match_all('/(?:\|\||[^\|])++/', $message, $matches)) {
|
56 |
-
$parts = $matches[0];
|
57 |
-
}
|
58 |
-
|
59 |
$explicitRules = array();
|
60 |
$standardRules = array();
|
61 |
foreach ($parts as $part) {
|
62 |
-
$part = trim(
|
63 |
|
64 |
if (preg_match('/^(?P<interval>'.Interval::getIntervalRegexp().')\s*(?P<message>.*?)$/xs', $part, $matches)) {
|
65 |
$explicitRules[$matches['interval']] = $matches['message'];
|
@@ -86,7 +78,7 @@ class MessageSelector
|
|
86 |
return $standardRules[0];
|
87 |
}
|
88 |
|
89 |
-
throw new InvalidArgumentException(sprintf('Unable to choose a translation for "%s" with locale "%s" for value "%d". Double check that this translation has the correct plural options (e.g. "There is one apple|There are %%count%% apples").', $message, $locale, $number));
|
90 |
}
|
91 |
|
92 |
return $standardRules[$position];
|
11 |
|
12 |
namespace Symfony\Component\Translation;
|
13 |
|
|
|
|
|
14 |
/**
|
15 |
* MessageSelector.
|
16 |
*
|
43 |
*
|
44 |
* @return string
|
45 |
*
|
46 |
+
* @throws \InvalidArgumentException
|
47 |
*/
|
48 |
public function choose($message, $number, $locale)
|
49 |
{
|
50 |
+
$parts = explode('|', $message);
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
$explicitRules = array();
|
52 |
$standardRules = array();
|
53 |
foreach ($parts as $part) {
|
54 |
+
$part = trim($part);
|
55 |
|
56 |
if (preg_match('/^(?P<interval>'.Interval::getIntervalRegexp().')\s*(?P<message>.*?)$/xs', $part, $matches)) {
|
57 |
$explicitRules[$matches['interval']] = $matches['message'];
|
78 |
return $standardRules[0];
|
79 |
}
|
80 |
|
81 |
+
throw new \InvalidArgumentException(sprintf('Unable to choose a translation for "%s" with locale "%s" for value "%d". Double check that this translation has the correct plural options (e.g. "There is one apple|There are %%count%% apples").', $message, $locale, $number));
|
82 |
}
|
83 |
|
84 |
return $standardRules[$position];
|
src/common/lib/vendor/symfony/translation/PluralizationRules.php
CHANGED
@@ -191,8 +191,10 @@ class PluralizationRules
|
|
191 |
*
|
192 |
* @param callable $rule A PHP callable
|
193 |
* @param string $locale The locale
|
|
|
|
|
194 |
*/
|
195 |
-
public static function set(
|
196 |
{
|
197 |
if ('pt_BR' === $locale) {
|
198 |
// temporary set a locale for brazilian
|
@@ -203,6 +205,10 @@ class PluralizationRules
|
|
203 |
$locale = substr($locale, 0, -strlen(strrchr($locale, '_')));
|
204 |
}
|
205 |
|
|
|
|
|
|
|
|
|
206 |
self::$rules[$locale] = $rule;
|
207 |
}
|
208 |
}
|
191 |
*
|
192 |
* @param callable $rule A PHP callable
|
193 |
* @param string $locale The locale
|
194 |
+
*
|
195 |
+
* @throws \LogicException
|
196 |
*/
|
197 |
+
public static function set($rule, $locale)
|
198 |
{
|
199 |
if ('pt_BR' === $locale) {
|
200 |
// temporary set a locale for brazilian
|
205 |
$locale = substr($locale, 0, -strlen(strrchr($locale, '_')));
|
206 |
}
|
207 |
|
208 |
+
if (!is_callable($rule)) {
|
209 |
+
throw new \LogicException('The given rule can not be called');
|
210 |
+
}
|
211 |
+
|
212 |
self::$rules[$locale] = $rule;
|
213 |
}
|
214 |
}
|
src/common/lib/vendor/symfony/translation/Reader/TranslationReader.php
DELETED
@@ -1,63 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/*
|
4 |
-
* This file is part of the Symfony package.
|
5 |
-
*
|
6 |
-
* (c) Fabien Potencier <fabien@symfony.com>
|
7 |
-
*
|
8 |
-
* For the full copyright and license information, please view the LICENSE
|
9 |
-
* file that was distributed with this source code.
|
10 |
-
*/
|
11 |
-
|
12 |
-
namespace Symfony\Component\Translation\Reader;
|
13 |
-
|
14 |
-
use Symfony\Component\Finder\Finder;
|
15 |
-
use Symfony\Component\Translation\Loader\LoaderInterface;
|
16 |
-
use Symfony\Component\Translation\MessageCatalogue;
|
17 |
-
|
18 |
-
/**
|
19 |
-
* TranslationReader reads translation messages from translation files.
|
20 |
-
*
|
21 |
-
* @author Michel Salib <michelsalib@hotmail.com>
|
22 |
-
*/
|
23 |
-
class TranslationReader implements TranslationReaderInterface
|
24 |
-
{
|
25 |
-
/**
|
26 |
-
* Loaders used for import.
|
27 |
-
*
|
28 |
-
* @var array
|
29 |
-
*/
|
30 |
-
private $loaders = array();
|
31 |
-
|
32 |
-
/**
|
33 |
-
* Adds a loader to the translation extractor.
|
34 |
-
*
|
35 |
-
* @param string $format The format of the loader
|
36 |
-
* @param LoaderInterface $loader
|
37 |
-
*/
|
38 |
-
public function addLoader($format, LoaderInterface $loader)
|
39 |
-
{
|
40 |
-
$this->loaders[$format] = $loader;
|
41 |
-
}
|
42 |
-
|
43 |
-
/**
|
44 |
-
* {@inheritdoc}
|
45 |
-
*/
|
46 |
-
public function read($directory, MessageCatalogue $catalogue)
|
47 |
-
{
|
48 |
-
if (!is_dir($directory)) {
|
49 |
-
return;
|
50 |
-
}
|
51 |
-
|
52 |
-
foreach ($this->loaders as $format => $loader) {
|
53 |
-
// load any existing translation files
|
54 |
-
$finder = new Finder();
|
55 |
-
$extension = $catalogue->getLocale().'.'.$format;
|
56 |
-
$files = $finder->files()->name('*.'.$extension)->in($directory);
|
57 |
-
foreach ($files as $file) {
|
58 |
-
$domain = substr($file->getFilename(), 0, -1 * strlen($extension) - 1);
|
59 |
-
$catalogue->addCatalogue($loader->load($file->getPathname(), $catalogue->getLocale(), $domain));
|
60 |
-
}
|
61 |
-
}
|
62 |
-
}
|
63 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/common/lib/vendor/symfony/translation/Reader/TranslationReaderInterface.php
DELETED
@@ -1,30 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/*
|
4 |
-
* This file is part of the Symfony package.
|
5 |
-
*
|
6 |
-
* (c) Fabien Potencier <fabien@symfony.com>
|
7 |
-
*
|
8 |
-
* For the full copyright and license information, please view the LICENSE
|
9 |
-
* file that was distributed with this source code.
|
10 |
-
*/
|
11 |
-
|
12 |
-
namespace Symfony\Component\Translation\Reader;
|
13 |
-
|
14 |
-
use Symfony\Component\Translation\MessageCatalogue;
|
15 |
-
|
16 |
-
/**
|
17 |
-
* TranslationReader reads translation messages from translation files.
|
18 |
-
*
|
19 |
-
* @author Tobias Nyholm <tobias.nyholm@gmail.com>
|
20 |
-
*/
|
21 |
-
interface TranslationReaderInterface
|
22 |
-
{
|
23 |
-
/**
|
24 |
-
* Reads translation messages from a directory to the catalogue.
|
25 |
-
*
|
26 |
-
* @param string $directory
|
27 |
-
* @param MessageCatalogue $catalogue
|
28 |
-
*/
|
29 |
-
public function read($directory, MessageCatalogue $catalogue);
|
30 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/common/lib/vendor/symfony/translation/Resources/schemas/xliff-core-1.2-strict.xsd
DELETED
@@ -1,2223 +0,0 @@
|
|
1 |
-
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
-
|
3 |
-
<!--
|
4 |
-
|
5 |
-
May-19-2004:
|
6 |
-
- Changed the <choice> for ElemType_header, moving minOccurs="0" maxOccurs="unbounded" from its elements
|
7 |
-
to <choice> itself.
|
8 |
-
- Added <choice> for ElemType_trans-unit to allow "any order" for <context-group>, <count-group>, <prop-group>, <note>, and
|
9 |
-
<alt-trans>.
|
10 |
-
|
11 |
-
Oct-2005
|
12 |
-
- updated version info to 1.2
|
13 |
-
- equiv-trans attribute to <trans-unit> element
|
14 |
-
- merged-trans attribute for <group> element
|
15 |
-
- Add the <seg-source> element as optional in the <trans-unit> and <alt-trans> content models, at the same level as <source>
|
16 |
-
- Create a new value "seg" for the mtype attribute of the <mrk> element
|
17 |
-
- Add mid as an optional attribute for the <alt-trans> element
|
18 |
-
|
19 |
-
Nov-14-2005
|
20 |
-
- Changed name attribute for <context-group> from required to optional
|
21 |
-
- Added extension point at <xliff>
|
22 |
-
|
23 |
-
Jan-9-2006
|
24 |
-
- Added alttranstype type attribute to <alt-trans>, and values
|
25 |
-
|
26 |
-
Jan-10-2006
|
27 |
-
- Corrected error with overwritten purposeValueList
|
28 |
-
- Corrected name="AttrType_Version", attribute should have been "name"
|
29 |
-
|
30 |
-
-->
|
31 |
-
<xsd:schema xmlns:xlf="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="urn:oasis:names:tc:xliff:document:1.2" xml:lang="en">
|
32 |
-
<!-- Import for xml:lang and xml:space -->
|
33 |
-
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/>
|
34 |
-
<!-- Attributes Lists -->
|
35 |
-
<xsd:simpleType name="XTend">
|
36 |
-
<xsd:restriction base="xsd:string">
|
37 |
-
<xsd:pattern value="x-[^\s]+"/>
|
38 |
-
</xsd:restriction>
|
39 |
-
</xsd:simpleType>
|
40 |
-
<xsd:simpleType name="context-typeValueList">
|
41 |
-
<xsd:annotation>
|
42 |
-
<xsd:documentation>Values for the attribute 'context-type'.</xsd:documentation>
|
43 |
-
</xsd:annotation>
|
44 |
-
<xsd:restriction base="xsd:string">
|
45 |
-
<xsd:enumeration value="database">
|
46 |
-
<xsd:annotation>
|
47 |
-
<xsd:documentation>Indicates a database content.</xsd:documentation>
|
48 |
-
</xsd:annotation>
|
49 |
-
</xsd:enumeration>
|
50 |
-
<xsd:enumeration value="element">
|
51 |
-
<xsd:annotation>
|
52 |
-
<xsd:documentation>Indicates the content of an element within an XML document.</xsd:documentation>
|
53 |
-
</xsd:annotation>
|
54 |
-
</xsd:enumeration>
|
55 |
-
<xsd:enumeration value="elementtitle">
|
56 |
-
<xsd:annotation>
|
57 |
-
<xsd:documentation>Indicates the name of an element within an XML document.</xsd:documentation>
|
58 |
-
</xsd:annotation>
|
59 |
-
</xsd:enumeration>
|
60 |
-
<xsd:enumeration value="linenumber">
|
61 |
-
<xsd:annotation>
|
62 |
-
<xsd:documentation>Indicates the line number from the sourcefile (see context-type="sourcefile") where the <source> is found.</xsd:documentation>
|
63 |
-
</xsd:annotation>
|
64 |
-
</xsd:enumeration>
|
65 |
-
<xsd:enumeration value="numparams">
|
66 |
-
<xsd:annotation>
|
67 |
-
<xsd:documentation>Indicates a the number of parameters contained within the <source>.</xsd:documentation>
|
68 |
-
</xsd:annotation>
|
69 |
-
</xsd:enumeration>
|
70 |
-
<xsd:enumeration value="paramnotes">
|
71 |
-
<xsd:annotation>
|
72 |
-
<xsd:documentation>Indicates notes pertaining to the parameters in the <source>.</xsd:documentation>
|
73 |
-
</xsd:annotation>
|
74 |
-
</xsd:enumeration>
|
75 |
-
<xsd:enumeration value="record">
|
76 |
-
<xsd:annotation>
|
77 |
-
<xsd:documentation>Indicates the content of a record within a database.</xsd:documentation>
|
78 |
-
</xsd:annotation>
|
79 |
-
</xsd:enumeration>
|
80 |
-
<xsd:enumeration value="recordtitle">
|
81 |
-
<xsd:annotation>
|
82 |
-
<xsd:documentation>Indicates the name of a record within a database.</xsd:documentation>
|
83 |
-
</xsd:annotation>
|
84 |
-
</xsd:enumeration>
|
85 |
-
<xsd:enumeration value="sourcefile">
|
86 |
-
<xsd:annotation>
|
87 |
-
<xsd:documentation>Indicates the original source file in the case that multiple files are merged to form the original file from which the XLIFF file is created. This differs from the original <file> attribute in that this sourcefile is one of many that make up that file.</xsd:documentation>
|
88 |
-
</xsd:annotation>
|
89 |
-
</xsd:enumeration>
|
90 |
-
</xsd:restriction>
|
91 |
-
</xsd:simpleType>
|
92 |
-
<xsd:simpleType name="count-typeValueList">
|
93 |
-
<xsd:annotation>
|
94 |
-
<xsd:documentation>Values for the attribute 'count-type'.</xsd:documentation>
|
95 |
-
</xsd:annotation>
|
96 |
-
<xsd:restriction base="xsd:NMTOKEN">
|
97 |
-
<xsd:enumeration value="num-usages">
|
98 |
-
<xsd:annotation>
|
99 |
-
<xsd:documentation>Indicates the count units are items that are used X times in a certain context; example: this is a reusable text unit which is used 42 times in other texts.</xsd:documentation>
|
100 |
-
</xsd:annotation>
|
101 |
-
</xsd:enumeration>
|
102 |
-
<xsd:enumeration value="repetition">
|
103 |
-
<xsd:annotation>
|
104 |
-
<xsd:documentation>Indicates the count units are translation units existing already in the same document.</xsd:documentation>
|
105 |
-
</xsd:annotation>
|
106 |
-
</xsd:enumeration>
|
107 |
-
<xsd:enumeration value="total">
|
108 |
-
<xsd:annotation>
|
109 |
-
<xsd:documentation>Indicates a total count.</xsd:documentation>
|
110 |
-
</xsd:annotation>
|
111 |
-
</xsd:enumeration>
|
112 |
-
</xsd:restriction>
|
113 |
-
</xsd:simpleType>
|
114 |
-
<xsd:simpleType name="InlineDelimitersValueList">
|
115 |
-
<xsd:annotation>
|
116 |
-
<xsd:documentation>Values for the attribute 'ctype' when used other elements than <ph> or <x>.</xsd:documentation>
|
117 |
-
</xsd:annotation>
|
118 |
-
<xsd:restriction base="xsd:NMTOKEN">
|
119 |
-
<xsd:enumeration value="bold">
|
120 |
-
<xsd:annotation>
|
121 |
-
<xsd:documentation>Indicates a run of bolded text.</xsd:documentation>
|
122 |
-
</xsd:annotation>
|
123 |
-
</xsd:enumeration>
|
124 |
-
<xsd:enumeration value="italic">
|
125 |
-
<xsd:annotation>
|
126 |
-
<xsd:documentation>Indicates a run of text in italics.</xsd:documentation>
|
127 |
-
</xsd:annotation>
|
128 |
-
</xsd:enumeration>
|
129 |
-
<xsd:enumeration value="underlined">
|
130 |
-
<xsd:annotation>
|
131 |
-
<xsd:documentation>Indicates a run of underlined text.</xsd:documentation>
|
132 |
-
</xsd:annotation>
|
133 |
-
</xsd:enumeration>
|
134 |
-
<xsd:enumeration value="link">
|
135 |
-
<xsd:annotation>
|
136 |
-
<xsd:documentation>Indicates a run of hyper-text.</xsd:documentation>
|
137 |
-
</xsd:annotation>
|
138 |
-
</xsd:enumeration>
|
139 |
-
</xsd:restriction>
|
140 |
-
</xsd:simpleType>
|
141 |
-
<xsd:simpleType name="InlinePlaceholdersValueList">
|
142 |
-
<xsd:annotation>
|
143 |
-
<xsd:documentation>Values for the attribute 'ctype' when used with <ph> or <x>.</xsd:documentation>
|
144 |
-
</xsd:annotation>
|
145 |
-
<xsd:restriction base="xsd:NMTOKEN">
|
146 |
-
<xsd:enumeration value="image">
|
147 |
-
<xsd:annotation>
|
148 |
-
<xsd:documentation>Indicates a inline image.</xsd:documentation>
|
149 |
-
</xsd:annotation>
|
150 |
-
</xsd:enumeration>
|
151 |
-
<xsd:enumeration value="pb">
|
152 |
-
<xsd:annotation>
|
153 |
-
<xsd:documentation>Indicates a page break.</xsd:documentation>
|
154 |
-
</xsd:annotation>
|
155 |
-
</xsd:enumeration>
|
156 |
-
<xsd:enumeration value="lb">
|
157 |
-
<xsd:annotation>
|
158 |
-
<xsd:documentation>Indicates a line break.</xsd:documentation>
|
159 |
-
</xsd:annotation>
|
160 |
-
</xsd:enumeration>
|
161 |
-
</xsd:restriction>
|
162 |
-
</xsd:simpleType>
|
163 |
-
<xsd:simpleType name="mime-typeValueList">
|
164 |
-
<xsd:restriction base="xsd:string">
|
165 |
-
<xsd:pattern value="(text|multipart|message|application|image|audio|video|model)(/.+)*"/>
|
166 |
-
</xsd:restriction>
|
167 |
-
</xsd:simpleType>
|
168 |
-
<xsd:simpleType name="datatypeValueList">
|
169 |
-
<xsd:annotation>
|
170 |
-
<xsd:documentation>Values for the attribute 'datatype'.</xsd:documentation>
|
171 |
-
</xsd:annotation>
|
172 |
-
<xsd:restriction base="xsd:NMTOKEN">
|
173 |
-
<xsd:enumeration value="asp">
|
174 |
-
<xsd:annotation>
|
175 |
-
<xsd:documentation>Indicates Active Server Page data.</xsd:documentation>
|
176 |
-
</xsd:annotation>
|
177 |
-
</xsd:enumeration>
|
178 |
-
<xsd:enumeration value="c">
|
179 |
-
<xsd:annotation>
|
180 |
-
<xsd:documentation>Indicates C source file data.</xsd:documentation>
|
181 |
-
</xsd:annotation>
|
182 |
-
</xsd:enumeration>
|
183 |
-
<xsd:enumeration value="cdf">
|
184 |
-
<xsd:annotation>
|
185 |
-
<xsd:documentation>Indicates Channel Definition Format (CDF) data.</xsd:documentation>
|
186 |
-
</xsd:annotation>
|
187 |
-
</xsd:enumeration>
|
188 |
-
<xsd:enumeration value="cfm">
|
189 |
-
<xsd:annotation>
|
190 |
-
<xsd:documentation>Indicates ColdFusion data.</xsd:documentation>
|
191 |
-
</xsd:annotation>
|
192 |
-
</xsd:enumeration>
|
193 |
-
<xsd:enumeration value="cpp">
|
194 |
-
<xsd:annotation>
|
195 |
-
<xsd:documentation>Indicates C++ source file data.</xsd:documentation>
|
196 |
-
</xsd:annotation>
|
197 |
-
</xsd:enumeration>
|
198 |
-
<xsd:enumeration value="csharp">
|
199 |
-
<xsd:annotation>
|
200 |
-
<xsd:documentation>Indicates C-Sharp data.</xsd:documentation>
|
201 |
-
</xsd:annotation>
|
202 |
-
</xsd:enumeration>
|
203 |
-
<xsd:enumeration value="cstring">
|
204 |
-
<xsd:annotation>
|
205 |
-
<xsd:documentation>Indicates strings from C, ASM, and driver files data.</xsd:documentation>
|
206 |
-
</xsd:annotation>
|
207 |
-
</xsd:enumeration>
|
208 |
-
<xsd:enumeration value="csv">
|
209 |
-
<xsd:annotation>
|
210 |
-
<xsd:documentation>Indicates comma-separated values data.</xsd:documentation>
|
211 |
-
</xsd:annotation>
|
212 |
-
</xsd:enumeration>
|
213 |
-
<xsd:enumeration value="database">
|
214 |
-
<xsd:annotation>
|
215 |
-
<xsd:documentation>Indicates database data.</xsd:documentation>
|
216 |
-
</xsd:annotation>
|
217 |
-
</xsd:enumeration>
|
218 |
-
<xsd:enumeration value="documentfooter">
|
219 |
-
<xsd:annotation>
|
220 |
-
<xsd:documentation>Indicates portions of document that follows data and contains metadata.</xsd:documentation>
|
221 |
-
</xsd:annotation>
|
222 |
-
</xsd:enumeration>
|
223 |
-
<xsd:enumeration value="documentheader">
|
224 |
-
<xsd:annotation>
|
225 |
-
<xsd:documentation>Indicates portions of document that precedes data and contains metadata.</xsd:documentation>
|
226 |
-
</xsd:annotation>
|
227 |
-
</xsd:enumeration>
|
228 |
-
<xsd:enumeration value="filedialog">
|
229 |
-
<xsd:annotation>
|
230 |
-
<xsd:documentation>Indicates data from standard UI file operations dialogs (e.g., Open, Save, Save As, Export, Import).</xsd:documentation>
|
231 |
-
</xsd:annotation>
|
232 |
-
</xsd:enumeration>
|
233 |
-
<xsd:enumeration value="form">
|
234 |
-
<xsd:annotation>
|
235 |
-
<xsd:documentation>Indicates standard user input screen data.</xsd:documentation>
|
236 |
-
</xsd:annotation>
|
237 |
-
</xsd:enumeration>
|
238 |
-
<xsd:enumeration value="html">
|
239 |
-
<xsd:annotation>
|
240 |
-
<xsd:documentation>Indicates HyperText Markup Language (HTML) data - document instance.</xsd:documentation>
|
241 |
-
</xsd:annotation>
|
242 |
-
</xsd:enumeration>
|
243 |
-
<xsd:enumeration value="htmlbody">
|
244 |
-
<xsd:annotation>
|
245 |
-
<xsd:documentation>Indicates content within an HTML document’s <body> element.</xsd:documentation>
|
246 |
-
</xsd:annotation>
|
247 |
-
</xsd:enumeration>
|
248 |
-
<xsd:enumeration value="ini">
|
249 |
-
<xsd:annotation>
|
250 |
-
<xsd:documentation>Indicates Windows INI file data.</xsd:documentation>
|
251 |
-
</xsd:annotation>
|
252 |
-
</xsd:enumeration>
|
253 |
-
<xsd:enumeration value="interleaf">
|
254 |
-
<xsd:annotation>
|
255 |
-
<xsd:documentation>Indicates Interleaf data.</xsd:documentation>
|
256 |
-
</xsd:annotation>
|
257 |
-
</xsd:enumeration>
|
258 |
-
<xsd:enumeration value="javaclass">
|
259 |
-
<xsd:annotation>
|
260 |
-
<xsd:documentation>Indicates Java source file data (extension '.java').</xsd:documentation>
|
261 |
-
</xsd:annotation>
|
262 |
-
</xsd:enumeration>
|
263 |
-
<xsd:enumeration value="javapropertyresourcebundle">
|
264 |
-
<xsd:annotation>
|
265 |
-
<xsd:documentation>Indicates Java property resource bundle data.</xsd:documentation>
|
266 |
-
</xsd:annotation>
|
267 |
-
</xsd:enumeration>
|
268 |
-
<xsd:enumeration value="javalistresourcebundle">
|
269 |
-
<xsd:annotation>
|
270 |
-
<xsd:documentation>Indicates Java list resource bundle data.</xsd:documentation>
|
271 |
-
</xsd:annotation>
|
272 |
-
</xsd:enumeration>
|
273 |
-
<xsd:enumeration value="javascript">
|
274 |
-
<xsd:annotation>
|
275 |
-
<xsd:documentation>Indicates JavaScript source file data.</xsd:documentation>
|
276 |
-
</xsd:annotation>
|
277 |
-
</xsd:enumeration>
|
278 |
-
<xsd:enumeration value="jscript">
|
279 |
-
<xsd:annotation>
|
280 |
-
<xsd:documentation>Indicates JScript source file data.</xsd:documentation>
|
281 |
-
</xsd:annotation>
|
282 |
-
</xsd:enumeration>
|
283 |
-
<xsd:enumeration value="layout">
|
284 |
-
<xsd:annotation>
|
285 |
-
<xsd:documentation>Indicates information relating to formatting.</xsd:documentation>
|
286 |
-
</xsd:annotation>
|
287 |
-
</xsd:enumeration>
|
288 |
-
<xsd:enumeration value="lisp">
|
289 |
-
<xsd:annotation>
|
290 |
-
<xsd:documentation>Indicates LISP source file data.</xsd:documentation>
|
291 |
-
</xsd:annotation>
|
292 |
-
</xsd:enumeration>
|
293 |
-
<xsd:enumeration value="margin">
|
294 |
-
<xsd:annotation>
|
295 |
-
<xsd:documentation>Indicates information relating to margin formats.</xsd:documentation>
|
296 |
-
</xsd:annotation>
|
297 |
-
</xsd:enumeration>
|
298 |
-
<xsd:enumeration value="menufile">
|
299 |
-
<xsd:annotation>
|
300 |
-
<xsd:documentation>Indicates a file containing menu.</xsd:documentation>
|
301 |
-
</xsd:annotation>
|
302 |
-
</xsd:enumeration>
|
303 |
-
<xsd:enumeration value="messagefile">
|
304 |
-
<xsd:annotation>
|
305 |
-
<xsd:documentation>Indicates numerically identified string table.</xsd:documentation>
|
306 |
-
</xsd:annotation>
|
307 |
-
</xsd:enumeration>
|
308 |
-
<xsd:enumeration value="mif">
|
309 |
-
<xsd:annotation>
|
310 |
-
<xsd:documentation>Indicates Maker Interchange Format (MIF) data.</xsd:documentation>
|
311 |
-
</xsd:annotation>
|
312 |
-
</xsd:enumeration>
|
313 |
-
<xsd:enumeration value="mimetype">
|
314 |
-
<xsd:annotation>
|
315 |
-
<xsd:documentation>Indicates that the datatype attribute value is a MIME Type value and is defined in the mime-type attribute.</xsd:documentation>
|
316 |
-
</xsd:annotation>
|
317 |
-
</xsd:enumeration>
|
318 |
-
<xsd:enumeration value="mo">
|
319 |
-
<xsd:annotation>
|
320 |
-
<xsd:documentation>Indicates GNU Machine Object data.</xsd:documentation>
|
321 |
-
</xsd:annotation>
|
322 |
-
</xsd:enumeration>
|
323 |
-
<xsd:enumeration value="msglib">
|
324 |
-
<xsd:annotation>
|
325 |
-
<xsd:documentation>Indicates Message Librarian strings created by Novell's Message Librarian Tool.</xsd:documentation>
|
326 |
-
</xsd:annotation>
|
327 |
-
</xsd:enumeration>
|
328 |
-
<xsd:enumeration value="pagefooter">
|
329 |
-
<xsd:annotation>
|
330 |
-
<xsd:documentation>Indicates information to be displayed at the bottom of each page of a document.</xsd:documentation>
|
331 |
-
</xsd:annotation>
|
332 |
-
</xsd:enumeration>
|
333 |
-
<xsd:enumeration value="pageheader">
|
334 |
-
<xsd:annotation>
|
335 |
-
<xsd:documentation>Indicates information to be displayed at the top of each page of a document.</xsd:documentation>
|
336 |
-
</xsd:annotation>
|
337 |
-
</xsd:enumeration>
|
338 |
-
<xsd:enumeration value="parameters">
|
339 |
-
<xsd:annotation>
|
340 |
-
<xsd:documentation>Indicates a list of property values (e.g., settings within INI files or preferences dialog).</xsd:documentation>
|
341 |
-
</xsd:annotation>
|
342 |
-
</xsd:enumeration>
|
343 |
-
<xsd:enumeration value="pascal">
|
344 |
-
<xsd:annotation>
|
345 |
-
<xsd:documentation>Indicates Pascal source file data.</xsd:documentation>
|
346 |
-
</xsd:annotation>
|
347 |
-
</xsd:enumeration>
|
348 |
-
<xsd:enumeration value="php">
|
349 |
-
<xsd:annotation>
|
350 |
-
<xsd:documentation>Indicates Hypertext Preprocessor data.</xsd:documentation>
|
351 |
-
</xsd:annotation>
|
352 |
-
</xsd:enumeration>
|
353 |
-
<xsd:enumeration value="plaintext">
|
354 |
-
<xsd:annotation>
|
355 |
-
<xsd:documentation>Indicates plain text file (no formatting other than, possibly, wrapping).</xsd:documentation>
|
356 |
-
</xsd:annotation>
|
357 |
-
</xsd:enumeration>
|
358 |
-
<xsd:enumeration value="po">
|
359 |
-
<xsd:annotation>
|
360 |
-
<xsd:documentation>Indicates GNU Portable Object file.</xsd:documentation>
|
361 |
-
</xsd:annotation>
|
362 |
-
</xsd:enumeration>
|
363 |
-
<xsd:enumeration value="report">
|
364 |
-
<xsd:annotation>
|
365 |
-
<xsd:documentation>Indicates dynamically generated user defined document. e.g. Oracle Report, Crystal Report, etc.</xsd:documentation>
|
366 |
-
</xsd:annotation>
|
367 |
-
</xsd:enumeration>
|
368 |
-
<xsd:enumeration value="resources">
|
369 |
-
<xsd:annotation>
|
370 |
-
<xsd:documentation>Indicates Windows .NET binary resources.</xsd:documentation>
|
371 |
-
</xsd:annotation>
|
372 |
-
</xsd:enumeration>
|
373 |
-
<xsd:enumeration value="resx">
|
374 |
-
<xsd:annotation>
|
375 |
-
<xsd:documentation>Indicates Windows .NET Resources.</xsd:documentation>
|
376 |
-
</xsd:annotation>
|
377 |
-
</xsd:enumeration>
|
378 |
-
<xsd:enumeration value="rtf">
|
379 |
-
<xsd:annotation>
|
380 |
-
<xsd:documentation>Indicates Rich Text Format (RTF) data.</xsd:documentation>
|
381 |
-
</xsd:annotation>
|
382 |
-
</xsd:enumeration>
|
383 |
-
<xsd:enumeration value="sgml">
|
384 |
-
<xsd:annotation>
|
385 |
-
<xsd:documentation>Indicates Standard Generalized Markup Language (SGML) data - document instance.</xsd:documentation>
|
386 |
-
</xsd:annotation>
|
387 |
-
</xsd:enumeration>
|
388 |
-
<xsd:enumeration value="sgmldtd">
|
389 |
-
<xsd:annotation>
|
390 |
-
<xsd:documentation>Indicates Standard Generalized Markup Language (SGML) data - Document Type Definition (DTD).</xsd:documentation>
|
391 |
-
</xsd:annotation>
|
392 |
-
</xsd:enumeration>
|
393 |
-
<xsd:enumeration value="svg">
|
394 |
-
<xsd:annotation>
|
395 |
-
<xsd:documentation>Indicates Scalable Vector Graphic (SVG) data.</xsd:documentation>
|
396 |
-
</xsd:annotation>
|
397 |
-
</xsd:enumeration>
|
398 |
-
<xsd:enumeration value="vbscript">
|
399 |
-
<xsd:annotation>
|
400 |
-
<xsd:documentation>Indicates VisualBasic Script source file.</xsd:documentation>
|
401 |
-
</xsd:annotation>
|
402 |
-
</xsd:enumeration>
|
403 |
-
<xsd:enumeration value="warning">
|
404 |
-
<xsd:annotation>
|
405 |
-
<xsd:documentation>Indicates warning message.</xsd:documentation>
|
406 |
-
</xsd:annotation>
|
407 |
-
</xsd:enumeration>
|
408 |
-
<xsd:enumeration value="winres">
|
409 |
-
<xsd:annotation>
|
410 |
-
<xsd:documentation>Indicates Windows (Win32) resources (i.e. resources extracted from an RC script, a message file, or a compiled file).</xsd:documentation>
|
411 |
-
</xsd:annotation>
|
412 |
-
</xsd:enumeration>
|
413 |
-
<xsd:enumeration value="xhtml">
|
414 |
-
<xsd:annotation>
|
415 |
-
<xsd:documentation>Indicates Extensible HyperText Markup Language (XHTML) data - document instance.</xsd:documentation>
|
416 |
-
</xsd:annotation>
|
417 |
-
</xsd:enumeration>
|
418 |
-
<xsd:enumeration value="xml">
|
419 |
-
<xsd:annotation>
|
420 |
-
<xsd:documentation>Indicates Extensible Markup Language (XML) data - document instance.</xsd:documentation>
|
421 |
-
</xsd:annotation>
|
422 |
-
</xsd:enumeration>
|
423 |
-
<xsd:enumeration value="xmldtd">
|
424 |
-
<xsd:annotation>
|
425 |
-
<xsd:documentation>Indicates Extensible Markup Language (XML) data - Document Type Definition (DTD).</xsd:documentation>
|
426 |
-
</xsd:annotation>
|
427 |
-
</xsd:enumeration>
|
428 |
-
<xsd:enumeration value="xsl">
|
429 |
-
<xsd:annotation>
|
430 |
-
<xsd:documentation>Indicates Extensible Stylesheet Language (XSL) data.</xsd:documentation>
|
431 |
-
</xsd:annotation>
|
432 |
-
</xsd:enumeration>
|
433 |
-
<xsd:enumeration value="xul">
|
434 |
-
<xsd:annotation>
|
435 |
-
<xsd:documentation>Indicates XUL elements.</xsd:documentation>
|
436 |
-
</xsd:annotation>
|
437 |
-
</xsd:enumeration>
|
438 |
-
</xsd:restriction>
|
439 |
-
</xsd:simpleType>
|
440 |
-
<xsd:simpleType name="mtypeValueList">
|
441 |
-
<xsd:annotation>
|
442 |
-
<xsd:documentation>Values for the attribute 'mtype'.</xsd:documentation>
|
443 |
-
</xsd:annotation>
|
444 |
-
<xsd:restriction base="xsd:NMTOKEN">
|
445 |
-
<xsd:enumeration value="abbrev">
|
446 |
-
<xsd:annotation>
|
447 |
-
<xsd:documentation>Indicates the marked text is an abbreviation.</xsd:documentation>
|
448 |
-
</xsd:annotation>
|
449 |
-
</xsd:enumeration>
|
450 |
-
<xsd:enumeration value="abbreviated-form">
|
451 |
-
<xsd:annotation>
|
452 |
-
<xsd:documentation>ISO-12620 2.1.8: A term resulting from the omission of any part of the full term while designating the same concept.</xsd:documentation>
|
453 |
-
</xsd:annotation>
|
454 |
-
</xsd:enumeration>
|
455 |
-
<xsd:enumeration value="abbreviation">
|
456 |
-
<xsd:annotation>
|
457 |
-
<xsd:documentation>ISO-12620 2.1.8.1: An abbreviated form of a simple term resulting from the omission of some of its letters (e.g. 'adj.' for 'adjective').</xsd:documentation>
|
458 |
-
</xsd:annotation>
|
459 |
-
</xsd:enumeration>
|
460 |
-
<xsd:enumeration value="acronym">
|
461 |
-
<xsd:annotation>
|
462 |
-
<xsd:documentation>ISO-12620 2.1.8.4: An abbreviated form of a term made up of letters from the full form of a multiword term strung together into a sequence pronounced only syllabically (e.g. 'radar' for 'radio detecting and ranging').</xsd:documentation>
|
463 |
-
</xsd:annotation>
|
464 |
-
</xsd:enumeration>
|
465 |
-
<xsd:enumeration value="appellation">
|
466 |
-
<xsd:annotation>
|
467 |
-
<xsd:documentation>ISO-12620: A proper-name term, such as the name of an agency or other proper entity.</xsd:documentation>
|
468 |
-
</xsd:annotation>
|
469 |
-
</xsd:enumeration>
|
470 |
-
<xsd:enumeration value="collocation">
|
471 |
-
<xsd:annotation>
|
472 |
-
<xsd:documentation>ISO-12620 2.1.18.1: A recurrent word combination characterized by cohesion in that the components of the collocation must co-occur within an utterance or series of utterances, even though they do not necessarily have to maintain immediate proximity to one another.</xsd:documentation>
|
473 |
-
</xsd:annotation>
|
474 |
-
</xsd:enumeration>
|
475 |
-
<xsd:enumeration value="common-name">
|
476 |
-
<xsd:annotation>
|
477 |
-
<xsd:documentation>ISO-12620 2.1.5: A synonym for an international scientific term that is used in general discourse in a given language.</xsd:documentation>
|
478 |
-
</xsd:annotation>
|
479 |
-
</xsd:enumeration>
|
480 |
-
<xsd:enumeration value="datetime">
|
481 |
-
<xsd:annotation>
|
482 |
-
<xsd:documentation>Indicates the marked text is a date and/or time.</xsd:documentation>
|
483 |
-
</xsd:annotation>
|
484 |
-
</xsd:enumeration>
|
485 |
-
<xsd:enumeration value="equation">
|
486 |
-
<xsd:annotation>
|
487 |
-
<xsd:documentation>ISO-12620 2.1.15: An expression used to represent a concept based on a statement that two mathematical expressions are, for instance, equal as identified by the equal sign (=), or assigned to one another by a similar sign.</xsd:documentation>
|
488 |
-
</xsd:annotation>
|
489 |
-
</xsd:enumeration>
|
490 |
-
<xsd:enumeration value="expanded-form">
|
491 |
-
<xsd:annotation>
|
492 |
-
<xsd:documentation>ISO-12620 2.1.7: The complete representation of a term for which there is an abbreviated form.</xsd:documentation>
|
493 |
-
</xsd:annotation>
|
494 |
-
</xsd:enumeration>
|
495 |
-
<xsd:enumeration value="formula">
|
496 |
-
<xsd:annotation>
|
497 |
-
<xsd:documentation>ISO-12620 2.1.14: Figures, symbols or the like used to express a concept briefly, such as a mathematical or chemical formula.</xsd:documentation>
|
498 |
-
</xsd:annotation>
|
499 |
-
</xsd:enumeration>
|
500 |
-
<xsd:enumeration value="head-term">
|
501 |
-
<xsd:annotation>
|
502 |
-
<xsd:documentation>ISO-12620 2.1.1: The concept designation that has been chosen to head a terminological record.</xsd:documentation>
|
503 |
-
</xsd:annotation>
|
504 |
-
</xsd:enumeration>
|
505 |
-
<xsd:enumeration value="initialism">
|
506 |
-
<xsd:annotation>
|
507 |
-
<xsd:documentation>ISO-12620 2.1.8.3: An abbreviated form of a term consisting of some of the initial letters of the words making up a multiword term or the term elements making up a compound term when these letters are pronounced individually (e.g. 'BSE' for 'bovine spongiform encephalopathy').</xsd:documentation>
|
508 |
-
</xsd:annotation>
|
509 |
-
</xsd:enumeration>
|
510 |
-
<xsd:enumeration value="international-scientific-term">
|
511 |
-
<xsd:annotation>
|
512 |
-
<xsd:documentation>ISO-12620 2.1.4: A term that is part of an international scientific nomenclature as adopted by an appropriate scientific body.</xsd:documentation>
|
513 |
-
</xsd:annotation>
|
514 |
-
</xsd:enumeration>
|
515 |
-
<xsd:enumeration value="internationalism">
|
516 |
-
<xsd:annotation>
|
517 |
-
<xsd:documentation>ISO-12620 2.1.6: A term that has the same or nearly identical orthographic or phonemic form in many languages.</xsd:documentation>
|
518 |
-
</xsd:annotation>
|
519 |
-
</xsd:enumeration>
|
520 |
-
<xsd:enumeration value="logical-expression">
|
521 |
-
<xsd:annotation>
|
522 |
-
<xsd:documentation>ISO-12620 2.1.16: An expression used to represent a concept based on mathematical or logical relations, such as statements of inequality, set relationships, Boolean operations, and the like.</xsd:documentation>
|
523 |
-
</xsd:annotation>
|
524 |
-
</xsd:enumeration>
|
525 |
-
<xsd:enumeration value="materials-management-unit">
|
526 |
-
<xsd:annotation>
|
527 |
-
<xsd:documentation>ISO-12620 2.1.17: A unit to track object.</xsd:documentation>
|
528 |
-
</xsd:annotation>
|
529 |
-
</xsd:enumeration>
|
530 |
-
<xsd:enumeration value="name">
|
531 |
-
<xsd:annotation>
|
532 |
-
<xsd:documentation>Indicates the marked text is a name.</xsd:documentation>
|
533 |
-
</xsd:annotation>
|
534 |
-
</xsd:enumeration>
|
535 |
-
<xsd:enumeration value="near-synonym">
|
536 |
-
<xsd:annotation>
|
537 |
-
<xsd:documentation>ISO-12620 2.1.3: A term that represents the same or a very similar concept as another term in the same language, but for which interchangeability is limited to some contexts and inapplicable in others.</xsd:documentation>
|
538 |
-
</xsd:annotation>
|
539 |
-
</xsd:enumeration>
|
540 |
-
<xsd:enumeration value="part-number">
|
541 |
-
<xsd:annotation>
|
542 |
-
<xsd:documentation>ISO-12620 2.1.17.2: A unique alphanumeric designation assigned to an object in a manufacturing system.</xsd:documentation>
|
543 |
-
</xsd:annotation>
|
544 |
-
</xsd:enumeration>
|
545 |
-
<xsd:enumeration value="phrase">
|
546 |
-
<xsd:annotation>
|
547 |
-
<xsd:documentation>Indicates the marked text is a phrase.</xsd:documentation>
|
548 |
-
</xsd:annotation>
|
549 |
-
</xsd:enumeration>
|
550 |
-
<xsd:enumeration value="phraseological-unit">
|
551 |
-
<xsd:annotation>
|
552 |
-
<xsd:documentation>ISO-12620 2.1.18: Any group of two or more words that form a unit, the meaning of which frequently cannot be deduced based on the combined sense of the words making up the phrase.</xsd:documentation>
|
553 |
-
</xsd:annotation>
|
554 |
-
</xsd:enumeration>
|
555 |
-
<xsd:enumeration value="protected">
|
556 |
-
<xsd:annotation>
|
557 |
-
<xsd:documentation>Indicates the marked text should not be translated.</xsd:documentation>
|
558 |
-
</xsd:annotation>
|
559 |
-
</xsd:enumeration>
|
560 |
-
<xsd:enumeration value="romanized-form">
|
561 |
-
<xsd:annotation>
|
562 |
-
<xsd:documentation>ISO-12620 2.1.12: A form of a term resulting from an operation whereby non-Latin writing systems are converted to the Latin alphabet.</xsd:documentation>
|
563 |
-
</xsd:annotation>
|
564 |
-
</xsd:enumeration>
|
565 |
-
<xsd:enumeration value="seg">
|
566 |
-
<xsd:annotation>
|
567 |
-
<xsd:documentation>Indicates that the marked text represents a segment.</xsd:documentation>
|
568 |
-
</xsd:annotation>
|
569 |
-
</xsd:enumeration>
|
570 |
-
<xsd:enumeration value="set-phrase">
|
571 |
-
<xsd:annotation>
|
572 |
-
<xsd:documentation>ISO-12620 2.1.18.2: A fixed, lexicalized phrase.</xsd:documentation>
|
573 |
-
</xsd:annotation>
|
574 |
-
</xsd:enumeration>
|
575 |
-
<xsd:enumeration value="short-form">
|
576 |
-
<xsd:annotation>
|
577 |
-
<xsd:documentation>ISO-12620 2.1.8.2: A variant of a multiword term that includes fewer words than the full form of the term (e.g. 'Group of Twenty-four' for 'Intergovernmental Group of Twenty-four on International Monetary Affairs').</xsd:documentation>
|
578 |
-
</xsd:annotation>
|
579 |
-
</xsd:enumeration>
|
580 |
-
<xsd:enumeration value="sku">
|
581 |
-
<xsd:annotation>
|
582 |
-
<xsd:documentation>ISO-12620 2.1.17.1: Stock keeping unit, an inventory item identified by a unique alphanumeric designation assigned to an object in an inventory control system.</xsd:documentation>
|
583 |
-
</xsd:annotation>
|
584 |
-
</xsd:enumeration>
|
585 |
-
<xsd:enumeration value="standard-text">
|
586 |
-
<xsd:annotation>
|
587 |
-
<xsd:documentation>ISO-12620 2.1.19: A fixed chunk of recurring text.</xsd:documentation>
|
588 |
-
</xsd:annotation>
|
589 |
-
</xsd:enumeration>
|
590 |
-
<xsd:enumeration value="symbol">
|
591 |
-
<xsd:annotation>
|
592 |
-
<xsd:documentation>ISO-12620 2.1.13: A designation of a concept by letters, numerals, pictograms or any combination thereof.</xsd:documentation>
|
593 |
-
</xsd:annotation>
|
594 |
-
</xsd:enumeration>
|
595 |
-
<xsd:enumeration value="synonym">
|
596 |
-
<xsd:annotation>
|
597 |
-
<xsd:documentation>ISO-12620 2.1.2: Any term that represents the same or a very similar concept as the main entry term in a term entry.</xsd:documentation>
|
598 |
-
</xsd:annotation>
|
599 |
-
</xsd:enumeration>
|
600 |
-
<xsd:enumeration value="synonymous-phrase">
|
601 |
-
<xsd:annotation>
|
602 |
-
<xsd:documentation>ISO-12620 2.1.18.3: Phraseological unit in a language that expresses the same semantic content as another phrase in that same language.</xsd:documentation>
|
603 |
-
</xsd:annotation>
|
604 |
-
</xsd:enumeration>
|
605 |
-
<xsd:enumeration value="term">
|
606 |
-
<xsd:annotation>
|
607 |
-
<xsd:documentation>Indicates the marked text is a term.</xsd:documentation>
|
608 |
-
</xsd:annotation>
|
609 |
-
</xsd:enumeration>
|
610 |
-
<xsd:enumeration value="transcribed-form">
|
611 |
-
<xsd:annotation>
|
612 |
-
<xsd:documentation>ISO-12620 2.1.11: A form of a term resulting from an operation whereby the characters of one writing system are represented by characters from another writing system, taking into account the pronunciation of the characters converted.</xsd:documentation>
|
613 |
-
</xsd:annotation>
|
614 |
-
</xsd:enumeration>
|
615 |
-
<xsd:enumeration value="transliterated-form">
|
616 |
-
<xsd:annotation>
|
617 |
-
<xsd:documentation>ISO-12620 2.1.10: A form of a term resulting from an operation whereby the characters of an alphabetic writing system are represented by characters from another alphabetic writing system.</xsd:documentation>
|
618 |
-
</xsd:annotation>
|
619 |
-
</xsd:enumeration>
|
620 |
-
<xsd:enumeration value="truncated-term">
|
621 |
-
<xsd:annotation>
|
622 |
-
<xsd:documentation>ISO-12620 2.1.8.5: An abbreviated form of a term resulting from the omission of one or more term elements or syllables (e.g. 'flu' for 'influenza').</xsd:documentation>
|
623 |
-
</xsd:annotation>
|
624 |
-
</xsd:enumeration>
|
625 |
-
<xsd:enumeration value="variant">
|
626 |
-
<xsd:annotation>
|
627 |
-
<xsd:documentation>ISO-12620 2.1.9: One of the alternate forms of a term.</xsd:documentation>
|
628 |
-
</xsd:annotation>
|
629 |
-
</xsd:enumeration>
|
630 |
-
</xsd:restriction>
|
631 |
-
</xsd:simpleType>
|
632 |
-
<xsd:simpleType name="restypeValueList">
|
633 |
-
<xsd:annotation>
|
634 |
-
<xsd:documentation>Values for the attribute 'restype'.</xsd:documentation>
|
635 |
-
</xsd:annotation>
|
636 |
-
<xsd:restriction base="xsd:NMTOKEN">
|
637 |
-
<xsd:enumeration value="auto3state">
|
638 |
-
<xsd:annotation>
|
639 |
-
<xsd:documentation>Indicates a Windows RC AUTO3STATE control.</xsd:documentation>
|
640 |
-
</xsd:annotation>
|
641 |
-
</xsd:enumeration>
|
642 |
-
<xsd:enumeration value="autocheckbox">
|
643 |
-
<xsd:annotation>
|
644 |
-
<xsd:documentation>Indicates a Windows RC AUTOCHECKBOX control.</xsd:documentation>
|
645 |
-
</xsd:annotation>
|
646 |
-
</xsd:enumeration>
|
647 |
-
<xsd:enumeration value="autoradiobutton">
|
648 |
-
<xsd:annotation>
|
649 |
-
<xsd:documentation>Indicates a Windows RC AUTORADIOBUTTON control.</xsd:documentation>
|
650 |
-
</xsd:annotation>
|
651 |
-
</xsd:enumeration>
|
652 |
-
<xsd:enumeration value="bedit">
|
653 |
-
<xsd:annotation>
|
654 |
-
<xsd:documentation>Indicates a Windows RC BEDIT control.</xsd:documentation>
|
655 |
-
</xsd:annotation>
|
656 |
-
</xsd:enumeration>
|
657 |
-
<xsd:enumeration value="bitmap">
|
658 |
-
<xsd:annotation>
|
659 |
-
<xsd:documentation>Indicates a bitmap, for example a BITMAP resource in Windows.</xsd:documentation>
|
660 |
-
</xsd:annotation>
|
661 |
-
</xsd:enumeration>
|
662 |
-
<xsd:enumeration value="button">
|
663 |
-
<xsd:annotation>
|
664 |
-
<xsd:documentation>Indicates a button object, for example a BUTTON control Windows.</xsd:documentation>
|
665 |
-
</xsd:annotation>
|
666 |
-
</xsd:enumeration>
|
667 |
-
<xsd:enumeration value="caption">
|
668 |
-
<xsd:annotation>
|
669 |
-
<xsd:documentation>Indicates a caption, such as the caption of a dialog box.</xsd:documentation>
|
670 |
-
</xsd:annotation>
|
671 |
-
</xsd:enumeration>
|
672 |
-
<xsd:enumeration value="cell">
|
673 |
-
<xsd:annotation>
|
674 |
-
<xsd:documentation>Indicates the cell in a table, for example the content of the <td> element in HTML.</xsd:documentation>
|
675 |
-
</xsd:annotation>
|
676 |
-
</xsd:enumeration>
|
677 |
-
<xsd:enumeration value="checkbox">
|
678 |
-
<xsd:annotation>
|
679 |
-
<xsd:documentation>Indicates check box object, for example a CHECKBOX control in Windows.</xsd:documentation>
|
680 |
-
</xsd:annotation>
|
681 |
-
</xsd:enumeration>
|
682 |
-
<xsd:enumeration value="checkboxmenuitem">
|
683 |
-
<xsd:annotation>
|
684 |
-
<xsd:documentation>Indicates a menu item with an associated checkbox.</xsd:documentation>
|
685 |
-
</xsd:annotation>
|
686 |
-
</xsd:enumeration>
|
687 |
-
<xsd:enumeration value="checkedlistbox">
|
688 |
-
<xsd:annotation>
|
689 |
-
<xsd:documentation>Indicates a list box, but with a check-box for each item.</xsd:documentation>
|
690 |
-
</xsd:annotation>
|
691 |
-
</xsd:enumeration>
|
692 |
-
<xsd:enumeration value="colorchooser">
|
693 |
-
<xsd:annotation>
|
694 |
-
<xsd:documentation>Indicates a color selection dialog.</xsd:documentation>
|
695 |
-
</xsd:annotation>
|
696 |
-
</xsd:enumeration>
|
697 |
-
<xsd:enumeration value="combobox">
|
698 |
-
<xsd:annotation>
|
699 |
-
<xsd:documentation>Indicates a combination of edit box and listbox object, for example a COMBOBOX control in Windows.</xsd:documentation>
|
700 |
-
</xsd:annotation>
|
701 |
-
</xsd:enumeration>
|
702 |
-
<xsd:enumeration value="comboboxexitem">
|
703 |
-
<xsd:annotation>
|
704 |
-
<xsd:documentation>Indicates an initialization entry of an extended combobox DLGINIT resource block. (code 0x1234).</xsd:documentation>
|
705 |
-
</xsd:annotation>
|
706 |
-
</xsd:enumeration>
|
707 |
-
<xsd:enumeration value="comboboxitem">
|
708 |
-
<xsd:annotation>
|
709 |
-
<xsd:documentation>Indicates an initialization entry of a combobox DLGINIT resource block (code 0x0403).</xsd:documentation>
|
710 |
-
</xsd:annotation>
|
711 |
-
</xsd:enumeration>
|
712 |
-
<xsd:enumeration value="component">
|
713 |
-
<xsd:annotation>
|
714 |
-
<xsd:documentation>Indicates a UI base class element that cannot be represented by any other element.</xsd:documentation>
|
715 |
-
</xsd:annotation>
|
716 |
-
</xsd:enumeration>
|
717 |
-
<xsd:enumeration value="contextmenu">
|
718 |
-
<xsd:annotation>
|
719 |
-
<xsd:documentation>Indicates a context menu.</xsd:documentation>
|
720 |
-
</xsd:annotation>
|
721 |
-
</xsd:enumeration>
|
722 |
-
<xsd:enumeration value="ctext">
|
723 |
-
<xsd:annotation>
|
724 |
-
<xsd:documentation>Indicates a Windows RC CTEXT control.</xsd:documentation>
|
725 |
-
</xsd:annotation>
|
726 |
-
</xsd:enumeration>
|
727 |
-
<xsd:enumeration value="cursor">
|
728 |
-
<xsd:annotation>
|
729 |
-
<xsd:documentation>Indicates a cursor, for example a CURSOR resource in Windows.</xsd:documentation>
|
730 |
-
</xsd:annotation>
|
731 |
-
</xsd:enumeration>
|
732 |
-
<xsd:enumeration value="datetimepicker">
|
733 |
-
<xsd:annotation>
|
734 |
-
<xsd:documentation>Indicates a date/time picker.</xsd:documentation>
|
735 |
-
</xsd:annotation>
|
736 |
-
</xsd:enumeration>
|
737 |
-
<xsd:enumeration value="defpushbutton">
|
738 |
-
<xsd:annotation>
|
739 |
-
<xsd:documentation>Indicates a Windows RC DEFPUSHBUTTON control.</xsd:documentation>
|
740 |
-
</xsd:annotation>
|
741 |
-
</xsd:enumeration>
|
742 |
-
<xsd:enumeration value="dialog">
|
743 |
-
<xsd:annotation>
|
744 |
-
<xsd:documentation>Indicates a dialog box.</xsd:documentation>
|
745 |
-
</xsd:annotation>
|
746 |
-
</xsd:enumeration>
|
747 |
-
<xsd:enumeration value="dlginit">
|
748 |
-
<xsd:annotation>
|
749 |
-
<xsd:documentation>Indicates a Windows RC DLGINIT resource block.</xsd:documentation>
|
750 |
-
</xsd:annotation>
|
751 |
-
</xsd:enumeration>
|
752 |
-
<xsd:enumeration value="edit">
|
753 |
-
<xsd:annotation>
|
754 |
-
<xsd:documentation>Indicates an edit box object, for example an EDIT control in Windows.</xsd:documentation>
|
755 |
-
</xsd:annotation>
|
756 |
-
</xsd:enumeration>
|
757 |
-
<xsd:enumeration value="file">
|
758 |
-
<xsd:annotation>
|
759 |
-
<xsd:documentation>Indicates a filename.</xsd:documentation>
|
760 |
-
</xsd:annotation>
|
761 |
-
</xsd:enumeration>
|
762 |
-
<xsd:enumeration value="filechooser">
|
763 |
-
<xsd:annotation>
|
764 |
-
<xsd:documentation>Indicates a file dialog.</xsd:documentation>
|
765 |
-
</xsd:annotation>
|
766 |
-
</xsd:enumeration>
|
767 |
-
<xsd:enumeration value="fn">
|
768 |
-
<xsd:annotation>
|
769 |
-
<xsd:documentation>Indicates a footnote.</xsd:documentation>
|
770 |
-
</xsd:annotation>
|
771 |
-
</xsd:enumeration>
|
772 |
-
<xsd:enumeration value="font">
|
773 |
-
<xsd:annotation>
|
774 |
-
<xsd:documentation>Indicates a font name.</xsd:documentation>
|
775 |
-
</xsd:annotation>
|
776 |
-
</xsd:enumeration>
|
777 |
-
<xsd:enumeration value="footer">
|
778 |
-
<xsd:annotation>
|
779 |
-
<xsd:documentation>Indicates a footer.</xsd:documentation>
|
780 |
-
</xsd:annotation>
|
781 |
-
</xsd:enumeration>
|
782 |
-
<xsd:enumeration value="frame">
|
783 |
-
<xsd:annotation>
|
784 |
-
<xsd:documentation>Indicates a frame object.</xsd:documentation>
|
785 |
-
</xsd:annotation>
|
786 |
-
</xsd:enumeration>
|
787 |
-
<xsd:enumeration value="grid">
|
788 |
-
<xsd:annotation>
|
789 |
-
<xsd:documentation>Indicates a XUL grid element.</xsd:documentation>
|
790 |
-
</xsd:annotation>
|
791 |
-
</xsd:enumeration>
|
792 |
-
<xsd:enumeration value="groupbox">
|
793 |
-
<xsd:annotation>
|
794 |
-
<xsd:documentation>Indicates a groupbox object, for example a GROUPBOX control in Windows.</xsd:documentation>
|
795 |
-
</xsd:annotation>
|
796 |
-
</xsd:enumeration>
|
797 |
-
<xsd:enumeration value="header">
|
798 |
-
<xsd:annotation>
|
799 |
-
<xsd:documentation>Indicates a header item.</xsd:documentation>
|
800 |
-
</xsd:annotation>
|
801 |
-
</xsd:enumeration>
|
802 |
-
<xsd:enumeration value="heading">
|
803 |
-
<xsd:annotation>
|
804 |
-
<xsd:documentation>Indicates a heading, such has the content of <h1>, <h2>, etc. in HTML.</xsd:documentation>
|
805 |
-
</xsd:annotation>
|
806 |
-
</xsd:enumeration>
|
807 |
-
<xsd:enumeration value="hedit">
|
808 |
-
<xsd:annotation>
|
809 |
-
<xsd:documentation>Indicates a Windows RC HEDIT control.</xsd:documentation>
|
810 |
-
</xsd:annotation>
|
811 |
-
</xsd:enumeration>
|
812 |
-
<xsd:enumeration value="hscrollbar">
|
813 |
-
<xsd:annotation>
|
814 |
-
<xsd:documentation>Indicates a horizontal scrollbar.</xsd:documentation>
|
815 |
-
</xsd:annotation>
|
816 |
-
</xsd:enumeration>
|
817 |
-
<xsd:enumeration value="icon">
|
818 |
-
<xsd:annotation>
|
819 |
-
<xsd:documentation>Indicates an icon, for example an ICON resource in Windows.</xsd:documentation>
|
820 |
-
</xsd:annotation>
|
821 |
-
</xsd:enumeration>
|
822 |
-
<xsd:enumeration value="iedit">
|
823 |
-
<xsd:annotation>
|
824 |
-
<xsd:documentation>Indicates a Windows RC IEDIT control.</xsd:documentation>
|
825 |
-
</xsd:annotation>
|
826 |
-
</xsd:enumeration>
|
827 |
-
<xsd:enumeration value="keywords">
|
828 |
-
<xsd:annotation>
|
829 |
-
<xsd:documentation>Indicates keyword list, such as the content of the Keywords meta-data in HTML, or a K footnote in WinHelp RTF.</xsd:documentation>
|
830 |
-
</xsd:annotation>
|
831 |
-
</xsd:enumeration>
|
832 |
-
<xsd:enumeration value="label">
|
833 |
-
<xsd:annotation>
|
834 |
-
<xsd:documentation>Indicates a label object.</xsd:documentation>
|
835 |
-
</xsd:annotation>
|
836 |
-
</xsd:enumeration>
|
837 |
-
<xsd:enumeration value="linklabel">
|
838 |
-
<xsd:annotation>
|
839 |
-
<xsd:documentation>Indicates a label that is also a HTML link (not necessarily a URL).</xsd:documentation>
|
840 |
-
</xsd:annotation>
|
841 |
-
</xsd:enumeration>
|
842 |
-
<xsd:enumeration value="list">
|
843 |
-
<xsd:annotation>
|
844 |
-
<xsd:documentation>Indicates a list (a group of list-items, for example an <ol> or <ul> element in HTML).</xsd:documentation>
|
845 |
-
</xsd:annotation>
|
846 |
-
</xsd:enumeration>
|
847 |
-
<xsd:enumeration value="listbox">
|
848 |
-
<xsd:annotation>
|
849 |
-
<xsd:documentation>Indicates a listbox object, for example an LISTBOX control in Windows.</xsd:documentation>
|
850 |
-
</xsd:annotation>
|
851 |
-
</xsd:enumeration>
|
852 |
-
<xsd:enumeration value="listitem">
|
853 |
-
<xsd:annotation>
|
854 |
-
<xsd:documentation>Indicates an list item (an entry in a list).</xsd:documentation>
|
855 |
-
</xsd:annotation>
|
856 |
-
</xsd:enumeration>
|
857 |
-
<xsd:enumeration value="ltext">
|
858 |
-
<xsd:annotation>
|
859 |
-
<xsd:documentation>Indicates a Windows RC LTEXT control.</xsd:documentation>
|
860 |
-
</xsd:annotation>
|
861 |
-
</xsd:enumeration>
|
862 |
-
<xsd:enumeration value="menu">
|
863 |
-
<xsd:annotation>
|
864 |
-
<xsd:documentation>Indicates a menu (a group of menu-items).</xsd:documentation>
|
865 |
-
</xsd:annotation>
|
866 |
-
</xsd:enumeration>
|
867 |
-
<xsd:enumeration value="menubar">
|
868 |
-
<xsd:annotation>
|
869 |
-
<xsd:documentation>Indicates a toolbar containing one or more tope level menus.</xsd:documentation>
|
870 |
-
</xsd:annotation>
|
871 |
-
</xsd:enumeration>
|
872 |
-
<xsd:enumeration value="menuitem">
|
873 |
-
<xsd:annotation>
|
874 |
-
<xsd:documentation>Indicates a menu item (an entry in a menu).</xsd:documentation>
|
875 |
-
</xsd:annotation>
|
876 |
-
</xsd:enumeration>
|
877 |
-
<xsd:enumeration value="menuseparator">
|
878 |
-
<xsd:annotation>
|
879 |
-
<xsd:documentation>Indicates a XUL menuseparator element.</xsd:documentation>
|
880 |
-
</xsd:annotation>
|
881 |
-
</xsd:enumeration>
|
882 |
-
<xsd:enumeration value="message">
|
883 |
-
<xsd:annotation>
|
884 |
-
<xsd:documentation>Indicates a message, for example an entry in a MESSAGETABLE resource in Windows.</xsd:documentation>
|
885 |
-
</xsd:annotation>
|
886 |
-
</xsd:enumeration>
|
887 |
-
<xsd:enumeration value="monthcalendar">
|
888 |
-
<xsd:annotation>
|
889 |
-
<xsd:documentation>Indicates a calendar control.</xsd:documentation>
|
890 |
-
</xsd:annotation>
|
891 |
-
</xsd:enumeration>
|
892 |
-
<xsd:enumeration value="numericupdown">
|
893 |
-
<xsd:annotation>
|
894 |
-
<xsd:documentation>Indicates an edit box beside a spin control.</xsd:documentation>
|
895 |
-
</xsd:annotation>
|
896 |
-
</xsd:enumeration>
|
897 |
-
<xsd:enumeration value="panel">
|
898 |
-
<xsd:annotation>
|
899 |
-
<xsd:documentation>Indicates a catch all for rectangular areas.</xsd:documentation>
|
900 |
-
</xsd:annotation>
|
901 |
-
</xsd:enumeration>
|
902 |
-
<xsd:enumeration value="popupmenu">
|
903 |
-
<xsd:annotation>
|
904 |
-
<xsd:documentation>Indicates a standalone menu not necessarily associated with a menubar.</xsd:documentation>
|
905 |
-
</xsd:annotation>
|
906 |
-
</xsd:enumeration>
|
907 |
-
<xsd:enumeration value="pushbox">
|
908 |
-
<xsd:annotation>
|
909 |
-
<xsd:documentation>Indicates a pushbox object, for example a PUSHBOX control in Windows.</xsd:documentation>
|
910 |
-
</xsd:annotation>
|
911 |
-
</xsd:enumeration>
|
912 |
-
<xsd:enumeration value="pushbutton">
|
913 |
-
<xsd:annotation>
|
914 |
-
<xsd:documentation>Indicates a Windows RC PUSHBUTTON control.</xsd:documentation>
|
915 |
-
</xsd:annotation>
|
916 |
-
</xsd:enumeration>
|
917 |
-
<xsd:enumeration value="radio">
|
918 |
-
<xsd:annotation>
|
919 |
-
<xsd:documentation>Indicates a radio button object.</xsd:documentation>
|
920 |
-
</xsd:annotation>
|
921 |
-
</xsd:enumeration>
|
922 |
-
<xsd:enumeration value="radiobuttonmenuitem">
|
923 |
-
<xsd:annotation>
|
924 |
-
<xsd:documentation>Indicates a menuitem with associated radio button.</xsd:documentation>
|
925 |
-
</xsd:annotation>
|
926 |
-
</xsd:enumeration>
|
927 |
-
<xsd:enumeration value="rcdata">
|
928 |
-
<xsd:annotation>
|
929 |
-
<xsd:documentation>Indicates raw data resources for an application.</xsd:documentation>
|
930 |
-
</xsd:annotation>
|
931 |
-
</xsd:enumeration>
|
932 |
-
<xsd:enumeration value="row">
|
933 |
-
<xsd:annotation>
|
934 |
-
<xsd:documentation>Indicates a row in a table.</xsd:documentation>
|
935 |
-
</xsd:annotation>
|
936 |
-
</xsd:enumeration>
|
937 |
-
<xsd:enumeration value="rtext">
|
938 |
-
<xsd:annotation>
|
939 |
-
<xsd:documentation>Indicates a Windows RC RTEXT control.</xsd:documentation>
|
940 |
-
</xsd:annotation>
|
941 |
-
</xsd:enumeration>
|
942 |
-
<xsd:enumeration value="scrollpane">
|
943 |
-
<xsd:annotation>
|
944 |
-
<xsd:documentation>Indicates a user navigable container used to show a portion of a document.</xsd:documentation>
|
945 |
-
</xsd:annotation>
|
946 |
-
</xsd:enumeration>
|
947 |
-
<xsd:enumeration value="separator">
|
948 |
-
<xsd:annotation>
|
949 |
-
<xsd:documentation>Indicates a generic divider object (e.g. menu group separator).</xsd:documentation>
|
950 |
-
</xsd:annotation>
|
951 |
-
</xsd:enumeration>
|
952 |
-
<xsd:enumeration value="shortcut">
|
953 |
-
<xsd:annotation>
|
954 |
-
<xsd:documentation>Windows accelerators, shortcuts in resource or property files.</xsd:documentation>
|
955 |
-
</xsd:annotation>
|
956 |
-
</xsd:enumeration>
|
957 |
-
<xsd:enumeration value="spinner">
|
958 |
-
<xsd:annotation>
|
959 |
-
<xsd:documentation>Indicates a UI control to indicate process activity but not progress.</xsd:documentation>
|
960 |
-
</xsd:annotation>
|
961 |
-
</xsd:enumeration>
|
962 |
-
<xsd:enumeration value="splitter">
|
963 |
-
<xsd:annotation>
|
964 |
-
<xsd:documentation>Indicates a splitter bar.</xsd:documentation>
|
965 |
-
</xsd:annotation>
|
966 |
-
</xsd:enumeration>
|
967 |
-
<xsd:enumeration value="state3">
|
968 |
-
<xsd:annotation>
|
969 |
-
<xsd:documentation>Indicates a Windows RC STATE3 control.</xsd:documentation>
|
970 |
-
</xsd:annotation>
|
971 |
-
</xsd:enumeration>
|
972 |
-
<xsd:enumeration value="statusbar">
|
973 |
-
<xsd:annotation>
|
974 |
-
<xsd:documentation>Indicates a window for providing feedback to the users, like 'read-only', etc.</xsd:documentation>
|
975 |
-
</xsd:annotation>
|
976 |
-
</xsd:enumeration>
|
977 |
-
<xsd:enumeration value="string">
|
978 |
-
<xsd:annotation>
|
979 |
-
<xsd:documentation>Indicates a string, for example an entry in a STRINGTABLE resource in Windows.</xsd:documentation>
|
980 |
-
</xsd:annotation>
|
981 |
-
</xsd:enumeration>
|
982 |
-
<xsd:enumeration value="tabcontrol">
|
983 |
-
<xsd:annotation>
|
984 |
-
<xsd:documentation>Indicates a layers of controls with a tab to select layers.</xsd:documentation>
|
985 |
-
</xsd:annotation>
|
986 |
-
</xsd:enumeration>
|
987 |
-
<xsd:enumeration value="table">
|
988 |
-
<xsd:annotation>
|
989 |
-
<xsd:documentation>Indicates a display and edits regular two-dimensional tables of cells.</xsd:documentation>
|
990 |
-
</xsd:annotation>
|
991 |
-
</xsd:enumeration>
|
992 |
-
<xsd:enumeration value="textbox">
|
993 |
-
<xsd:annotation>
|
994 |
-
<xsd:documentation>Indicates a XUL textbox element.</xsd:documentation>
|
995 |
-
</xsd:annotation>
|
996 |
-
</xsd:enumeration>
|
997 |
-
<xsd:enumeration value="togglebutton">
|
998 |
-
<xsd:annotation>
|
999 |
-
<xsd:documentation>Indicates a UI button that can be toggled to on or off state.</xsd:documentation>
|
1000 |
-
</xsd:annotation>
|
1001 |
-
</xsd:enumeration>
|
1002 |
-
<xsd:enumeration value="toolbar">
|
1003 |
-
<xsd:annotation>
|
1004 |
-
<xsd:documentation>Indicates an array of controls, usually buttons.</xsd:documentation>
|
1005 |
-
</xsd:annotation>
|
1006 |
-
</xsd:enumeration>
|
1007 |
-
<xsd:enumeration value="tooltip">
|
1008 |
-
<xsd:annotation>
|
1009 |
-
<xsd:documentation>Indicates a pop up tool tip text.</xsd:documentation>
|
1010 |
-
</xsd:annotation>
|
1011 |
-
</xsd:enumeration>
|
1012 |
-
<xsd:enumeration value="trackbar">
|
1013 |
-
<xsd:annotation>
|
1014 |
-
<xsd:documentation>Indicates a bar with a pointer indicating a position within a certain range.</xsd:documentation>
|
1015 |
-
</xsd:annotation>
|
1016 |
-
</xsd:enumeration>
|
1017 |
-
<xsd:enumeration value="tree">
|
1018 |
-
<xsd:annotation>
|
1019 |
-
<xsd:documentation>Indicates a control that displays a set of hierarchical data.</xsd:documentation>
|
1020 |
-
</xsd:annotation>
|
1021 |
-
</xsd:enumeration>
|
1022 |
-
<xsd:enumeration value="uri">
|
1023 |
-
<xsd:annotation>
|
1024 |
-
<xsd:documentation>Indicates a URI (URN or URL).</xsd:documentation>
|
1025 |
-
</xsd:annotation>
|
1026 |
-
</xsd:enumeration>
|
1027 |
-
<xsd:enumeration value="userbutton">
|
1028 |
-
<xsd:annotation>
|
1029 |
-
<xsd:documentation>Indicates a Windows RC USERBUTTON control.</xsd:documentation>
|
1030 |
-
</xsd:annotation>
|
1031 |
-
</xsd:enumeration>
|
1032 |
-
<xsd:enumeration value="usercontrol">
|
1033 |
-
<xsd:annotation>
|
1034 |
-
<xsd:documentation>Indicates a user-defined control like CONTROL control in Windows.</xsd:documentation>
|
1035 |
-
</xsd:annotation>
|
1036 |
-
</xsd:enumeration>
|
1037 |
-
<xsd:enumeration value="var">
|
1038 |
-
<xsd:annotation>
|
1039 |
-
<xsd:documentation>Indicates the text of a variable.</xsd:documentation>
|
1040 |
-
</xsd:annotation>
|
1041 |
-
</xsd:enumeration>
|
1042 |
-
<xsd:enumeration value="versioninfo">
|
1043 |
-
<xsd:annotation>
|
1044 |
-
<xsd:documentation>Indicates version information about a resource like VERSIONINFO in Windows.</xsd:documentation>
|
1045 |
-
</xsd:annotation>
|
1046 |
-
</xsd:enumeration>
|
1047 |
-
<xsd:enumeration value="vscrollbar">
|
1048 |
-
<xsd:annotation>
|
1049 |
-
<xsd:documentation>Indicates a vertical scrollbar.</xsd:documentation>
|
1050 |
-
</xsd:annotation>
|
1051 |
-
</xsd:enumeration>
|
1052 |
-
<xsd:enumeration value="window">
|
1053 |
-
<xsd:annotation>
|
1054 |
-
<xsd:documentation>Indicates a graphical window.</xsd:documentation>
|
1055 |
-
</xsd:annotation>
|
1056 |
-
</xsd:enumeration>
|
1057 |
-
</xsd:restriction>
|
1058 |
-
</xsd:simpleType>
|
1059 |
-
<xsd:simpleType name="size-unitValueList">
|
1060 |
-
<xsd:annotation>
|
1061 |
-
<xsd:documentation>Values for the attribute 'size-unit'.</xsd:documentation>
|
1062 |
-
</xsd:annotation>
|
1063 |
-
<xsd:restriction base="xsd:NMTOKEN">
|
1064 |
-
<xsd:enumeration value="byte">
|
1065 |
-
<xsd:annotation>
|
1066 |
-
<xsd:documentation>Indicates a size in 8-bit bytes.</xsd:documentation>
|
1067 |
-
</xsd:annotation>
|
1068 |
-
</xsd:enumeration>
|
1069 |
-
<xsd:enumeration value="char">
|
1070 |
-
<xsd:annotation>
|
1071 |
-
<xsd:documentation>Indicates a size in Unicode characters.</xsd:documentation>
|
1072 |
-
</xsd:annotation>
|
1073 |
-
</xsd:enumeration>
|
1074 |
-
<xsd:enumeration value="col">
|
1075 |
-
<xsd:annotation>
|
1076 |
-
<xsd:documentation>Indicates a size in columns. Used for HTML text area.</xsd:documentation>
|
1077 |
-
</xsd:annotation>
|
1078 |
-
</xsd:enumeration>
|
1079 |
-
<xsd:enumeration value="cm">
|
1080 |
-
<xsd:annotation>
|
1081 |
-
<xsd:documentation>Indicates a size in centimeters.</xsd:documentation>
|
1082 |
-
</xsd:annotation>
|
1083 |
-
</xsd:enumeration>
|
1084 |
-
<xsd:enumeration value="dlgunit">
|
1085 |
-
<xsd:annotation>
|
1086 |
-
<xsd:documentation>Indicates a size in dialog units, as defined in Windows resources.</xsd:documentation>
|
1087 |
-
</xsd:annotation>
|
1088 |
-
</xsd:enumeration>
|
1089 |
-
<xsd:enumeration value="em">
|
1090 |
-
<xsd:annotation>
|
1091 |
-
<xsd:documentation>Indicates a size in 'font-size' units (as defined in CSS).</xsd:documentation>
|
1092 |
-
</xsd:annotation>
|
1093 |
-
</xsd:enumeration>
|
1094 |
-
<xsd:enumeration value="ex">
|
1095 |
-
<xsd:annotation>
|
1096 |
-
<xsd:documentation>Indicates a size in 'x-height' units (as defined in CSS).</xsd:documentation>
|
1097 |
-
</xsd:annotation>
|
1098 |
-
</xsd:enumeration>
|
1099 |
-
<xsd:enumeration value="glyph">
|
1100 |
-
<xsd:annotation>
|
1101 |
-
<xsd:documentation>Indicates a size in glyphs. A glyph is considered to be one or more combined Unicode characters that represent a single displayable text character. Sometimes referred to as a 'grapheme cluster'</xsd:documentation>
|
1102 |
-
</xsd:annotation>
|
1103 |
-
</xsd:enumeration>
|
1104 |
-
<xsd:enumeration value="in">
|
1105 |
-
<xsd:annotation>
|
1106 |
-
<xsd:documentation>Indicates a size in inches.</xsd:documentation>
|
1107 |
-
</xsd:annotation>
|
1108 |
-
</xsd:enumeration>
|
1109 |
-
<xsd:enumeration value="mm">
|
1110 |
-
<xsd:annotation>
|
1111 |
-
<xsd:documentation>Indicates a size in millimeters.</xsd:documentation>
|
1112 |
-
</xsd:annotation>
|
1113 |
-
</xsd:enumeration>
|
1114 |
-
<xsd:enumeration value="percent">
|
1115 |
-
<xsd:annotation>
|
1116 |
-
<xsd:documentation>Indicates a size in percentage.</xsd:documentation>
|
1117 |
-
</xsd:annotation>
|
1118 |
-
</xsd:enumeration>
|
1119 |
-
<xsd:enumeration value="pixel">
|
1120 |
-
<xsd:annotation>
|
1121 |
-
<xsd:documentation>Indicates a size in pixels.</xsd:documentation>
|
1122 |
-
</xsd:annotation>
|
1123 |
-
</xsd:enumeration>
|
1124 |
-
<xsd:enumeration value="point">
|
1125 |
-
<xsd:annotation>
|
1126 |
-
<xsd:documentation>Indicates a size in point.</xsd:documentation>
|
1127 |
-
</xsd:annotation>
|
1128 |
-
</xsd:enumeration>
|
1129 |
-
<xsd:enumeration value="row">
|
1130 |
-
<xsd:annotation>
|
1131 |
-
<xsd:documentation>Indicates a size in rows. Used for HTML text area.</xsd:documentation>
|
1132 |
-
</xsd:annotation>
|
1133 |
-
</xsd:enumeration>
|
1134 |
-
</xsd:restriction>
|
1135 |
-
</xsd:simpleType>
|
1136 |
-
<xsd:simpleType name="stateValueList">
|
1137 |
-
<xsd:annotation>
|
1138 |
-
<xsd:documentation>Values for the attribute 'state'.</xsd:documentation>
|
1139 |
-
</xsd:annotation>
|
1140 |
-
<xsd:restriction base="xsd:NMTOKEN">
|
1141 |
-
<xsd:enumeration value="final">
|
1142 |
-
<xsd:annotation>
|
1143 |
-
<xsd:documentation>Indicates the terminating state.</xsd:documentation>
|
1144 |
-
</xsd:annotation>
|
1145 |
-
</xsd:enumeration>
|
1146 |
-
<xsd:enumeration value="needs-adaptation">
|
1147 |
-
<xsd:annotation>
|
1148 |
-
<xsd:documentation>Indicates only non-textual information needs adaptation.</xsd:documentation>
|
1149 |
-
</xsd:annotation>
|
1150 |
-
</xsd:enumeration>
|
1151 |
-
<xsd:enumeration value="needs-l10n">
|
1152 |
-
<xsd:annotation>
|
1153 |
-
<xsd:documentation>Indicates both text and non-textual information needs adaptation.</xsd:documentation>
|
1154 |
-
</xsd:annotation>
|
1155 |
-
</xsd:enumeration>
|
1156 |
-
<xsd:enumeration value="needs-review-adaptation">
|
1157 |
-
<xsd:annotation>
|
1158 |
-
<xsd:documentation>Indicates only non-textual information needs review.</xsd:documentation>
|
1159 |
-
</xsd:annotation>
|
1160 |
-
</xsd:enumeration>
|
1161 |
-
<xsd:enumeration value="needs-review-l10n">
|
1162 |
-
<xsd:annotation>
|
1163 |
-
<xsd:documentation>Indicates both text and non-textual information needs review.</xsd:documentation>
|
1164 |
-
</xsd:annotation>
|
1165 |
-
</xsd:enumeration>
|
1166 |
-
<xsd:enumeration value="needs-review-translation">
|
1167 |
-
<xsd:annotation>
|
1168 |
-
<xsd:documentation>Indicates that only the text of the item needs to be reviewed.</xsd:documentation>
|
1169 |
-
</xsd:annotation>
|
1170 |
-
</xsd:enumeration>
|
1171 |
-
<xsd:enumeration value="needs-translation">
|
1172 |
-
<xsd:annotation>
|
1173 |
-
<xsd:documentation>Indicates that the item needs to be translated.</xsd:documentation>
|
1174 |
-
</xsd:annotation>
|
1175 |
-
</xsd:enumeration>
|
1176 |
-
<xsd:enumeration value="new">
|
1177 |
-
<xsd:annotation>
|
1178 |
-
<xsd:documentation>Indicates that the item is new. For example, translation units that were not in a previous version of the document.</xsd:documentation>
|
1179 |
-
</xsd:annotation>
|
1180 |
-
</xsd:enumeration>
|
1181 |
-
<xsd:enumeration value="signed-off">
|
1182 |
-
<xsd:annotation>
|
1183 |
-
<xsd:documentation>Indicates that changes are reviewed and approved.</xsd:documentation>
|
1184 |
-
</xsd:annotation>
|
1185 |
-
</xsd:enumeration>
|
1186 |
-
<xsd:enumeration value="translated">
|
1187 |
-
<xsd:annotation>
|
1188 |
-
<xsd:documentation>Indicates that the item has been translated.</xsd:documentation>
|
1189 |
-
</xsd:annotation>
|
1190 |
-
</xsd:enumeration>
|
1191 |
-
</xsd:restriction>
|
1192 |
-
</xsd:simpleType>
|
1193 |
-
<xsd:simpleType name="state-qualifierValueList">
|
1194 |
-
<xsd:annotation>
|
1195 |
-
<xsd:documentation>Values for the attribute 'state-qualifier'.</xsd:documentation>
|
1196 |
-
</xsd:annotation>
|
1197 |
-
<xsd:restriction base="xsd:NMTOKEN">
|
1198 |
-
<xsd:enumeration value="exact-match">
|
1199 |
-
<xsd:annotation>
|
1200 |
-
<xsd:documentation>Indicates an exact match. An exact match occurs when a source text of a segment is exactly the same as the source text of a segment that was translated previously.</xsd:documentation>
|
1201 |
-
</xsd:annotation>
|
1202 |
-
</xsd:enumeration>
|
1203 |
-
<xsd:enumeration value="fuzzy-match">
|
1204 |
-
<xsd:annotation>
|
1205 |
-
<xsd:documentation>Indicates a fuzzy match. A fuzzy match occurs when a source text of a segment is very similar to the source text of a segment that was translated previously (e.g. when the difference is casing, a few changed words, white-space discripancy, etc.).</xsd:documentation>
|
1206 |
-
</xsd:annotation>
|
1207 |
-
</xsd:enumeration>
|
1208 |
-
<xsd:enumeration value="id-match">
|
1209 |
-
<xsd:annotation>
|
1210 |
-
<xsd:documentation>Indicates a match based on matching IDs (in addition to matching text).</xsd:documentation>
|
1211 |
-
</xsd:annotation>
|
1212 |
-
</xsd:enumeration>
|
1213 |
-
<xsd:enumeration value="leveraged-glossary">
|
1214 |
-
<xsd:annotation>
|
1215 |
-
<xsd:documentation>Indicates a translation derived from a glossary.</xsd:documentation>
|
1216 |
-
</xsd:annotation>
|
1217 |
-
</xsd:enumeration>
|
1218 |
-
<xsd:enumeration value="leveraged-inherited">
|
1219 |
-
<xsd:annotation>
|
1220 |
-
<xsd:documentation>Indicates a translation derived from existing translation.</xsd:documentation>
|
1221 |
-
</xsd:annotation>
|
1222 |
-
</xsd:enumeration>
|
1223 |
-
<xsd:enumeration value="leveraged-mt">
|
1224 |
-
<xsd:annotation>
|
1225 |
-
<xsd:documentation>Indicates a translation derived from machine translation.</xsd:documentation>
|
1226 |
-
</xsd:annotation>
|
1227 |
-
</xsd:enumeration>
|
1228 |
-
<xsd:enumeration value="leveraged-repository">
|
1229 |
-
<xsd:annotation>
|
1230 |
-
<xsd:documentation>Indicates a translation derived from a translation repository.</xsd:documentation>
|
1231 |
-
</xsd:annotation>
|
1232 |
-
</xsd:enumeration>
|
1233 |
-
<xsd:enumeration value="leveraged-tm">
|
1234 |
-
<xsd:annotation>
|
1235 |
-
<xsd:documentation>Indicates a translation derived from a translation memory.</xsd:documentation>
|
1236 |
-
</xsd:annotation>
|
1237 |
-
</xsd:enumeration>
|
1238 |
-
<xsd:enumeration value="mt-suggestion">
|
1239 |
-
<xsd:annotation>
|
1240 |
-
<xsd:documentation>Indicates the translation is suggested by machine translation.</xsd:documentation>
|
1241 |
-
</xsd:annotation>
|
1242 |
-
</xsd:enumeration>
|
1243 |
-
<xsd:enumeration value="rejected-grammar">
|
1244 |
-
<xsd:annotation>
|
1245 |
-
<xsd:documentation>Indicates that the item has been rejected because of incorrect grammar.</xsd:documentation>
|
1246 |
-
</xsd:annotation>
|
1247 |
-
</xsd:enumeration>
|
1248 |
-
<xsd:enumeration value="rejected-inaccurate">
|
1249 |
-
<xsd:annotation>
|
1250 |
-
<xsd:documentation>Indicates that the item has been rejected because it is incorrect.</xsd:documentation>
|
1251 |
-
</xsd:annotation>
|
1252 |
-
</xsd:enumeration>
|
1253 |
-
<xsd:enumeration value="rejected-length">
|
1254 |
-
<xsd:annotation>
|
1255 |
-
<xsd:documentation>Indicates that the item has been rejected because it is too long or too short.</xsd:documentation>
|
1256 |
-
</xsd:annotation>
|
1257 |
-
</xsd:enumeration>
|
1258 |
-
<xsd:enumeration value="rejected-spelling">
|
1259 |
-
<xsd:annotation>
|
1260 |
-
<xsd:documentation>Indicates that the item has been rejected because of incorrect spelling.</xsd:documentation>
|
1261 |
-
</xsd:annotation>
|
1262 |
-
</xsd:enumeration>
|
1263 |
-
<xsd:enumeration value="tm-suggestion">
|
1264 |
-
<xsd:annotation>
|
1265 |
-
<xsd:documentation>Indicates the translation is suggested by translation memory.</xsd:documentation>
|
1266 |
-
</xsd:annotation>
|
1267 |
-
</xsd:enumeration>
|
1268 |
-
</xsd:restriction>
|
1269 |
-
</xsd:simpleType>
|
1270 |
-
<xsd:simpleType name="unitValueList">
|
1271 |
-
<xsd:annotation>
|
1272 |
-
<xsd:documentation>Values for the attribute 'unit'.</xsd:documentation>
|
1273 |
-
</xsd:annotation>
|
1274 |
-
<xsd:restriction base="xsd:NMTOKEN">
|
1275 |
-
<xsd:enumeration value="word">
|
1276 |
-
<xsd:annotation>
|
1277 |
-
<xsd:documentation>Refers to words.</xsd:documentation>
|
1278 |
-
</xsd:annotation>
|
1279 |
-
</xsd:enumeration>
|
1280 |
-
<xsd:enumeration value="page">
|
1281 |
-
<xsd:annotation>
|
1282 |
-
<xsd:documentation>Refers to pages.</xsd:documentation>
|
1283 |
-
</xsd:annotation>
|
1284 |
-
</xsd:enumeration>
|
1285 |
-
<xsd:enumeration value="trans-unit">
|
1286 |
-
<xsd:annotation>
|
1287 |
-
<xsd:documentation>Refers to <trans-unit> elements.</xsd:documentation>
|
1288 |
-
</xsd:annotation>
|
1289 |
-
</xsd:enumeration>
|
1290 |
-
<xsd:enumeration value="bin-unit">
|
1291 |
-
<xsd:annotation>
|
1292 |
-
<xsd:documentation>Refers to <bin-unit> elements.</xsd:documentation>
|
1293 |
-
</xsd:annotation>
|
1294 |
-
</xsd:enumeration>
|
1295 |
-
<xsd:enumeration value="glyph">
|
1296 |
-
<xsd:annotation>
|
1297 |
-
<xsd:documentation>Refers to glyphs.</xsd:documentation>
|
1298 |
-
</xsd:annotation>
|
1299 |
-
</xsd:enumeration>
|
1300 |
-
<xsd:enumeration value="item">
|
1301 |
-
<xsd:annotation>
|
1302 |
-
<xsd:documentation>Refers to <trans-unit> and/or <bin-unit> elements.</xsd:documentation>
|
1303 |
-
</xsd:annotation>
|
1304 |
-
</xsd:enumeration>
|
1305 |
-
<xsd:enumeration value="instance">
|
1306 |
-
<xsd:annotation>
|
1307 |
-
<xsd:documentation>Refers to the occurrences of instances defined by the count-type value.</xsd:documentation>
|
1308 |
-
</xsd:annotation>
|
1309 |
-
</xsd:enumeration>
|
1310 |
-
<xsd:enumeration value="character">
|
1311 |
-
<xsd:annotation>
|
1312 |
-
<xsd:documentation>Refers to characters.</xsd:documentation>
|
1313 |
-
</xsd:annotation>
|
1314 |
-
</xsd:enumeration>
|
1315 |
-
<xsd:enumeration value="line">
|
1316 |
-
<xsd:annotation>
|
1317 |
-
<xsd:documentation>Refers to lines.</xsd:documentation>
|
1318 |
-
</xsd:annotation>
|
1319 |
-
</xsd:enumeration>
|
1320 |
-
<xsd:enumeration value="sentence">
|
1321 |
-
<xsd:annotation>
|
1322 |
-
<xsd:documentation>Refers to sentences.</xsd:documentation>
|
1323 |
-
</xsd:annotation>
|
1324 |
-
</xsd:enumeration>
|
1325 |
-
<xsd:enumeration value="paragraph">
|
1326 |
-
<xsd:annotation>
|
1327 |
-
<xsd:documentation>Refers to paragraphs.</xsd:documentation>
|
1328 |
-
</xsd:annotation>
|
1329 |
-
</xsd:enumeration>
|
1330 |
-
<xsd:enumeration value="segment">
|
1331 |
-
<xsd:annotation>
|
1332 |
-
<xsd:documentation>Refers to segments.</xsd:documentation>
|
1333 |
-
</xsd:annotation>
|
1334 |
-
</xsd:enumeration>
|
1335 |
-
<xsd:enumeration value="placeable">
|
1336 |
-
<xsd:annotation>
|
1337 |
-
<xsd:documentation>Refers to placeables (inline elements).</xsd:documentation>
|
1338 |
-
</xsd:annotation>
|
1339 |
-
</xsd:enumeration>
|
1340 |
-
</xsd:restriction>
|
1341 |
-
</xsd:simpleType>
|
1342 |
-
<xsd:simpleType name="priorityValueList">
|
1343 |
-
<xsd:annotation>
|
1344 |
-
<xsd:documentation>Values for the attribute 'priority'.</xsd:documentation>
|
1345 |
-
</xsd:annotation>
|
1346 |
-
<xsd:restriction base="xsd:positiveInteger">
|
1347 |
-
<xsd:enumeration value="1">
|
1348 |
-
<xsd:annotation>
|
1349 |
-
<xsd:documentation>Highest priority.</xsd:documentation>
|
1350 |
-
</xsd:annotation>
|
1351 |
-
</xsd:enumeration>
|
1352 |
-
<xsd:enumeration value="2">
|
1353 |
-
<xsd:annotation>
|
1354 |
-
<xsd:documentation>High priority.</xsd:documentation>
|
1355 |
-
</xsd:annotation>
|
1356 |
-
</xsd:enumeration>
|
1357 |
-
<xsd:enumeration value="3">
|
1358 |
-
<xsd:annotation>
|
1359 |
-
<xsd:documentation>High priority, but not as important as 2.</xsd:documentation>
|
1360 |
-
</xsd:annotation>
|
1361 |
-
</xsd:enumeration>
|
1362 |
-
<xsd:enumeration value="4">
|
1363 |
-
<xsd:annotation>
|
1364 |
-
<xsd:documentation>High priority, but not as important as 3.</xsd:documentation>
|
1365 |
-
</xsd:annotation>
|
1366 |
-
</xsd:enumeration>
|
1367 |
-
<xsd:enumeration value="5">
|
1368 |
-
<xsd:annotation>
|
1369 |
-
<xsd:documentation>Medium priority, but more important than 6.</xsd:documentation>
|
1370 |
-
</xsd:annotation>
|
1371 |
-
</xsd:enumeration>
|
1372 |
-
<xsd:enumeration value="6">
|
1373 |
-
<xsd:annotation>
|
1374 |
-
<xsd:documentation>Medium priority, but less important than 5.</xsd:documentation>
|
1375 |
-
</xsd:annotation>
|
1376 |
-
</xsd:enumeration>
|
1377 |
-
<xsd:enumeration value="7">
|
1378 |
-
<xsd:annotation>
|
1379 |
-
<xsd:documentation>Low priority, but more important than 8.</xsd:documentation>
|
1380 |
-
</xsd:annotation>
|
1381 |
-
</xsd:enumeration>
|
1382 |
-
<xsd:enumeration value="8">
|
1383 |
-
<xsd:annotation>
|
1384 |
-
<xsd:documentation>Low priority, but more important than 9.</xsd:documentation>
|
1385 |
-
</xsd:annotation>
|
1386 |
-
</xsd:enumeration>
|
1387 |
-
<xsd:enumeration value="9">
|
1388 |
-
<xsd:annotation>
|
1389 |
-
<xsd:documentation>Low priority.</xsd:documentation>
|
1390 |
-
</xsd:annotation>
|
1391 |
-
</xsd:enumeration>
|
1392 |
-
<xsd:enumeration value="10">
|
1393 |
-
<xsd:annotation>
|
1394 |
-
<xsd:documentation>Lowest priority.</xsd:documentation>
|
1395 |
-
</xsd:annotation>
|
1396 |
-
</xsd:enumeration>
|
1397 |
-
</xsd:restriction>
|
1398 |
-
</xsd:simpleType>
|
1399 |
-
<xsd:simpleType name="reformatValueYesNo">
|
1400 |
-
<xsd:restriction base="xsd:string">
|
1401 |
-
<xsd:enumeration value="yes">
|
1402 |
-
<xsd:annotation>
|
1403 |
-
<xsd:documentation>This value indicates that all properties can be reformatted. This value must be used alone.</xsd:documentation>
|
1404 |
-
</xsd:annotation>
|
1405 |
-
</xsd:enumeration>
|
1406 |
-
<xsd:enumeration value="no">
|
1407 |
-
<xsd:annotation>
|
1408 |
-
<xsd:documentation>This value indicates that no properties should be reformatted. This value must be used alone.</xsd:documentation>
|
1409 |
-
</xsd:annotation>
|
1410 |
-
</xsd:enumeration>
|
1411 |
-
</xsd:restriction>
|
1412 |
-
</xsd:simpleType>
|
1413 |
-
<xsd:simpleType name="reformatValueList">
|
1414 |
-
<xsd:list>
|
1415 |
-
<xsd:simpleType>
|
1416 |
-
<xsd:union memberTypes="xlf:XTend">
|
1417 |
-
<xsd:simpleType>
|
1418 |
-
<xsd:restriction base="xsd:string">
|
1419 |
-
<xsd:enumeration value="coord">
|
1420 |
-
<xsd:annotation>
|
1421 |
-
<xsd:documentation>This value indicates that all information in the coord attribute can be modified.</xsd:documentation>
|
1422 |
-
</xsd:annotation>
|
1423 |
-
</xsd:enumeration>
|
1424 |
-
<xsd:enumeration value="coord-x">
|
1425 |
-
<xsd:annotation>
|
1426 |
-
<xsd:documentation>This value indicates that the x information in the coord attribute can be modified.</xsd:documentation>
|
1427 |
-
</xsd:annotation>
|
1428 |
-
</xsd:enumeration>
|
1429 |
-
<xsd:enumeration value="coord-y">
|
1430 |
-
<xsd:annotation>
|
1431 |
-
<xsd:documentation>This value indicates that the y information in the coord attribute can be modified.</xsd:documentation>
|
1432 |
-
</xsd:annotation>
|
1433 |
-
</xsd:enumeration>
|
1434 |
-
<xsd:enumeration value="coord-cx">
|
1435 |
-
<xsd:annotation>
|
1436 |
-
<xsd:documentation>This value indicates that the cx information in the coord attribute can be modified.</xsd:documentation>
|
1437 |
-
</xsd:annotation>
|
1438 |
-
</xsd:enumeration>
|
1439 |
-
<xsd:enumeration value="coord-cy">
|
1440 |
-
<xsd:annotation>
|
1441 |
-
<xsd:documentation>This value indicates that the cy information in the coord attribute can be modified.</xsd:documentation>
|
1442 |
-
</xsd:annotation>
|
1443 |
-
</xsd:enumeration>
|
1444 |
-
<xsd:enumeration value="font">
|
1445 |
-
<xsd:annotation>
|
1446 |
-
<xsd:documentation>This value indicates that all the information in the font attribute can be modified.</xsd:documentation>
|
1447 |
-
</xsd:annotation>
|
1448 |
-
</xsd:enumeration>
|
1449 |
-
<xsd:enumeration value="font-name">
|
1450 |
-
<xsd:annotation>
|
1451 |
-
<xsd:documentation>This value indicates that the name information in the font attribute can be modified.</xsd:documentation>
|
1452 |
-
</xsd:annotation>
|
1453 |
-
</xsd:enumeration>
|
1454 |
-
<xsd:enumeration value="font-size">
|
1455 |
-
<xsd:annotation>
|
1456 |
-
<xsd:documentation>This value indicates that the size information in the font attribute can be modified.</xsd:documentation>
|
1457 |
-
</xsd:annotation>
|
1458 |
-
</xsd:enumeration>
|
1459 |
-
<xsd:enumeration value="font-weight">
|
1460 |
-
<xsd:annotation>
|
1461 |
-
<xsd:documentation>This value indicates that the weight information in the font attribute can be modified.</xsd:documentation>
|
1462 |
-
</xsd:annotation>
|
1463 |
-
</xsd:enumeration>
|
1464 |
-
<xsd:enumeration value="css-style">
|
1465 |
-
<xsd:annotation>
|
1466 |
-
<xsd:documentation>This value indicates that the information in the css-style attribute can be modified.</xsd:documentation>
|
1467 |
-
</xsd:annotation>
|
1468 |
-
</xsd:enumeration>
|
1469 |
-
<xsd:enumeration value="style">
|
1470 |
-
<xsd:annotation>
|
1471 |
-
<xsd:documentation>This value indicates that the information in the style attribute can be modified.</xsd:documentation>
|
1472 |
-
</xsd:annotation>
|
1473 |
-
</xsd:enumeration>
|
1474 |
-
<xsd:enumeration value="ex-style">
|
1475 |
-
<xsd:annotation>
|
1476 |
-
<xsd:documentation>This value indicates that the information in the exstyle attribute can be modified.</xsd:documentation>
|
1477 |
-
</xsd:annotation>
|
1478 |
-
</xsd:enumeration>
|
1479 |
-
</xsd:restriction>
|
1480 |
-
</xsd:simpleType>
|
1481 |
-
</xsd:union>
|
1482 |
-
</xsd:simpleType>
|
1483 |
-
</xsd:list>
|
1484 |
-
</xsd:simpleType>
|
1485 |
-
<xsd:simpleType name="purposeValueList">
|
1486 |
-
<xsd:restriction base="xsd:string">
|
1487 |
-
<xsd:enumeration value="information">
|
1488 |
-
<xsd:annotation>
|
1489 |
-
<xsd:documentation>Indicates that the context is informational in nature, specifying for example, how a term should be translated. Thus, should be displayed to anyone editing the XLIFF document.</xsd:documentation>
|
1490 |
-
</xsd:annotation>
|
1491 |
-
</xsd:enumeration>
|
1492 |
-
<xsd:enumeration value="location">
|
1493 |
-
<xsd:annotation>
|
1494 |
-
<xsd:documentation>Indicates that the context-group is used to specify where the term was found in the translatable source. Thus, it is not displayed.</xsd:documentation>
|
1495 |
-
</xsd:annotation>
|
1496 |
-
</xsd:enumeration>
|
1497 |
-
<xsd:enumeration value="match">
|
1498 |
-
<xsd:annotation>
|
1499 |
-
<xsd:documentation>Indicates that the context information should be used during translation memory lookups. Thus, it is not displayed.</xsd:documentation>
|
1500 |
-
</xsd:annotation>
|
1501 |
-
</xsd:enumeration>
|
1502 |
-
</xsd:restriction>
|
1503 |
-
</xsd:simpleType>
|
1504 |
-
<xsd:simpleType name="alttranstypeValueList">
|
1505 |
-
<xsd:restriction base="xsd:string">
|
1506 |
-
<xsd:enumeration value="proposal">
|
1507 |
-
<xsd:annotation>
|
1508 |
-
<xsd:documentation>Represents a translation proposal from a translation memory or other resource.</xsd:documentation>
|
1509 |
-
</xsd:annotation>
|
1510 |
-
</xsd:enumeration>
|
1511 |
-
<xsd:enumeration value="previous-version">
|
1512 |
-
<xsd:annotation>
|
1513 |
-
<xsd:documentation>Represents a previous version of the target element.</xsd:documentation>
|
1514 |
-
</xsd:annotation>
|
1515 |
-
</xsd:enumeration>
|
1516 |
-
<xsd:enumeration value="rejected">
|
1517 |
-
<xsd:annotation>
|
1518 |
-
<xsd:documentation>Represents a rejected version of the target element.</xsd:documentation>
|
1519 |
-
</xsd:annotation>
|
1520 |
-
</xsd:enumeration>
|
1521 |
-
<xsd:enumeration value="reference">
|
1522 |
-
<xsd:annotation>
|
1523 |
-
<xsd:documentation>Represents a translation to be used for reference purposes only, for example from a related product or a different language.</xsd:documentation>
|
1524 |
-
</xsd:annotation>
|
1525 |
-
</xsd:enumeration>
|
1526 |
-
<xsd:enumeration value="accepted">
|
1527 |
-
<xsd:annotation>
|
1528 |
-
<xsd:documentation>Represents a proposed translation that was used for the translation of the trans-unit, possibly modified.</xsd:documentation>
|
1529 |
-
</xsd:annotation>
|
1530 |
-
</xsd:enumeration>
|
1531 |
-
</xsd:restriction>
|
1532 |
-
</xsd:simpleType>
|
1533 |
-
<!-- Other Types -->
|
1534 |
-
<xsd:complexType name="ElemType_ExternalReference">
|
1535 |
-
<xsd:choice>
|
1536 |
-
<xsd:element ref="xlf:internal-file"/>
|
1537 |
-
<xsd:element ref="xlf:external-file"/>
|
1538 |
-
</xsd:choice>
|
1539 |
-
</xsd:complexType>
|
1540 |
-
<xsd:simpleType name="AttrType_purpose">
|
1541 |
-
<xsd:list>
|
1542 |
-
<xsd:simpleType>
|
1543 |
-
<xsd:union memberTypes="xlf:purposeValueList xlf:XTend"/>
|
1544 |
-
</xsd:simpleType>
|
1545 |
-
</xsd:list>
|
1546 |
-
</xsd:simpleType>
|
1547 |
-
<xsd:simpleType name="AttrType_datatype">
|
1548 |
-
<xsd:union memberTypes="xlf:datatypeValueList xlf:XTend"/>
|
1549 |
-
</xsd:simpleType>
|
1550 |
-
<xsd:simpleType name="AttrType_restype">
|
1551 |
-
<xsd:union memberTypes="xlf:restypeValueList xlf:XTend"/>
|
1552 |
-
</xsd:simpleType>
|
1553 |
-
<xsd:simpleType name="AttrType_alttranstype">
|
1554 |
-
<xsd:union memberTypes="xlf:alttranstypeValueList xlf:XTend"/>
|
1555 |
-
</xsd:simpleType>
|
1556 |
-
<xsd:simpleType name="AttrType_context-type">
|
1557 |
-
<xsd:union memberTypes="xlf:context-typeValueList xlf:XTend"/>
|
1558 |
-
</xsd:simpleType>
|
1559 |
-
<xsd:simpleType name="AttrType_state">
|
1560 |
-
<xsd:union memberTypes="xlf:stateValueList xlf:XTend"/>
|
1561 |
-
</xsd:simpleType>
|
1562 |
-
<xsd:simpleType name="AttrType_state-qualifier">
|
1563 |
-
<xsd:union memberTypes="xlf:state-qualifierValueList xlf:XTend"/>
|
1564 |
-
</xsd:simpleType>
|
1565 |
-
<xsd:simpleType name="AttrType_count-type">
|
1566 |
-
<xsd:union memberTypes="xlf:restypeValueList xlf:count-typeValueList xlf:datatypeValueList xlf:stateValueList xlf:state-qualifierValueList xlf:XTend"/>
|
1567 |
-
</xsd:simpleType>
|
1568 |
-
<xsd:simpleType name="AttrType_InlineDelimiters">
|
1569 |
-
<xsd:union memberTypes="xlf:InlineDelimitersValueList xlf:XTend"/>
|
1570 |
-
</xsd:simpleType>
|
1571 |
-
<xsd:simpleType name="AttrType_InlinePlaceholders">
|
1572 |
-
<xsd:union memberTypes="xlf:InlinePlaceholdersValueList xlf:XTend"/>
|
1573 |
-
</xsd:simpleType>
|
1574 |
-
<xsd:simpleType name="AttrType_size-unit">
|
1575 |
-
<xsd:union memberTypes="xlf:size-unitValueList xlf:XTend"/>
|
1576 |
-
</xsd:simpleType>
|
1577 |
-
<xsd:simpleType name="AttrType_mtype">
|
1578 |
-
<xsd:union memberTypes="xlf:mtypeValueList xlf:XTend"/>
|
1579 |
-
</xsd:simpleType>
|
1580 |
-
<xsd:simpleType name="AttrType_unit">
|
1581 |
-
<xsd:union memberTypes="xlf:unitValueList xlf:XTend"/>
|
1582 |
-
</xsd:simpleType>
|
1583 |
-
<xsd:simpleType name="AttrType_priority">
|
1584 |
-
<xsd:union memberTypes="xlf:priorityValueList"/>
|
1585 |
-
</xsd:simpleType>
|
1586 |
-
<xsd:simpleType name="AttrType_reformat">
|
1587 |
-
<xsd:union memberTypes="xlf:reformatValueYesNo xlf:reformatValueList"/>
|
1588 |
-
</xsd:simpleType>
|
1589 |
-
<xsd:simpleType name="AttrType_YesNo">
|
1590 |
-
<xsd:restriction base="xsd:NMTOKEN">
|
1591 |
-
<xsd:enumeration value="yes"/>
|
1592 |
-
<xsd:enumeration value="no"/>
|
1593 |
-
</xsd:restriction>
|
1594 |
-
</xsd:simpleType>
|
1595 |
-
<xsd:simpleType name="AttrType_Position">
|
1596 |
-
<xsd:restriction base="xsd:NMTOKEN">
|
1597 |
-
<xsd:enumeration value="open"/>
|
1598 |
-
<xsd:enumeration value="close"/>
|
1599 |
-
</xsd:restriction>
|
1600 |
-
</xsd:simpleType>
|
1601 |
-
<xsd:simpleType name="AttrType_assoc">
|
1602 |
-
<xsd:restriction base="xsd:NMTOKEN">
|
1603 |
-
<xsd:enumeration value="preceding"/>
|
1604 |
-
<xsd:enumeration value="following"/>
|
1605 |
-
<xsd:enumeration value="both"/>
|
1606 |
-
</xsd:restriction>
|
1607 |
-
</xsd:simpleType>
|
1608 |
-
<xsd:simpleType name="AttrType_annotates">
|
1609 |
-
<xsd:restriction base="xsd:NMTOKEN">
|
1610 |
-
<xsd:enumeration value="source"/>
|
1611 |
-
<xsd:enumeration value="target"/>
|
1612 |
-
<xsd:enumeration value="general"/>
|
1613 |
-
</xsd:restriction>
|
1614 |
-
</xsd:simpleType>
|
1615 |
-
<xsd:simpleType name="AttrType_Coordinates">
|
1616 |
-
<xsd:annotation>
|
1617 |
-
<xsd:documentation>Values for the attribute 'coord'.</xsd:documentation>
|
1618 |
-
</xsd:annotation>
|
1619 |
-
<xsd:restriction base="xsd:string">
|
1620 |
-
<xsd:pattern value="(-?\d+|#);(-?\d+|#);(-?\d+|#);(-?\d+|#)"/>
|
1621 |
-
</xsd:restriction>
|
1622 |
-
</xsd:simpleType>
|
1623 |
-
<xsd:simpleType name="AttrType_Version">
|
1624 |
-
<xsd:annotation>
|
1625 |
-
<xsd:documentation>Version values: 1.0 and 1.1 are allowed for backward compatibility.</xsd:documentation>
|
1626 |
-
</xsd:annotation>
|
1627 |
-
<xsd:restriction base="xsd:string">
|
1628 |
-
<xsd:enumeration value="1.2"/>
|
1629 |
-
<xsd:enumeration value="1.1"/>
|
1630 |
-
<xsd:enumeration value="1.0"/>
|
1631 |
-
</xsd:restriction>
|
1632 |
-
</xsd:simpleType>
|
1633 |
-
<!-- Groups -->
|
1634 |
-
<xsd:group name="ElemGroup_TextContent">
|
1635 |
-
<xsd:choice>
|
1636 |
-
<xsd:element ref="xlf:g"/>
|
1637 |
-
<xsd:element ref="xlf:bpt"/>
|
1638 |
-
<xsd:element ref="xlf:ept"/>
|
1639 |
-
<xsd:element ref="xlf:ph"/>
|
1640 |
-
<xsd:element ref="xlf:it"/>
|
1641 |
-
<xsd:element ref="xlf:mrk"/>
|
1642 |
-
<xsd:element ref="xlf:x"/>
|
1643 |
-
<xsd:element ref="xlf:bx"/>
|
1644 |
-
<xsd:element ref="xlf:ex"/>
|
1645 |
-
</xsd:choice>
|
1646 |
-
</xsd:group>
|
1647 |
-
<xsd:attributeGroup name="AttrGroup_TextContent">
|
1648 |
-
<xsd:attribute name="id" type="xsd:string" use="required"/>
|
1649 |
-
<xsd:attribute name="xid" type="xsd:string" use="optional"/>
|
1650 |
-
<xsd:attribute name="equiv-text" type="xsd:string" use="optional"/>
|
1651 |
-
<xsd:anyAttribute namespace="##other" processContents="strict"/>
|
1652 |
-
</xsd:attributeGroup>
|
1653 |
-
<!-- XLIFF Structure -->
|
1654 |
-
<xsd:element name="xliff">
|
1655 |
-
<xsd:complexType>
|
1656 |
-
<xsd:sequence maxOccurs="unbounded">
|
1657 |
-
<xsd:any maxOccurs="unbounded" minOccurs="0" namespace="##other" processContents="strict"/>
|
1658 |
-
<xsd:element ref="xlf:file"/>
|
1659 |
-
</xsd:sequence>
|
1660 |
-
<xsd:attribute name="version" type="xlf:AttrType_Version" use="required"/>
|
1661 |
-
<xsd:attribute ref="xml:lang" use="optional"/>
|
1662 |
-
<xsd:anyAttribute namespace="##other" processContents="strict"/>
|
1663 |
-
</xsd:complexType>
|
1664 |
-
</xsd:element>
|
1665 |
-
<xsd:element name="file">
|
1666 |
-
<xsd:complexType>
|
1667 |
-
<xsd:sequence>
|
1668 |
-
<xsd:element minOccurs="0" ref="xlf:header"/>
|
1669 |
-
<xsd:element ref="xlf:body"/>
|
1670 |
-
</xsd:sequence>
|
1671 |
-
<xsd:attribute name="original" type="xsd:string" use="required"/>
|
1672 |
-
<xsd:attribute name="source-language" type="xsd:language" use="required"/>
|
1673 |
-
<xsd:attribute name="datatype" type="xlf:AttrType_datatype" use="required"/>
|
1674 |
-
<xsd:attribute name="tool-id" type="xsd:string" use="optional"/>
|
1675 |
-
<xsd:attribute name="date" type="xsd:dateTime" use="optional"/>
|
1676 |
-
<xsd:attribute ref="xml:space" use="optional"/>
|
1677 |
-
<xsd:attribute name="category" type="xsd:string" use="optional"/>
|
1678 |
-
<xsd:attribute name="target-language" type="xsd:language" use="optional"/>
|
1679 |
-
<xsd:attribute name="product-name" type="xsd:string" use="optional"/>
|
1680 |
-
<xsd:attribute name="product-version" type="xsd:string" use="optional"/>
|
1681 |
-
<xsd:attribute name="build-num" type="xsd:string" use="optional"/>
|
1682 |
-
<xsd:anyAttribute namespace="##other" processContents="strict"/>
|
1683 |
-
</xsd:complexType>
|
1684 |
-
<xsd:unique name="U_group_id">
|
1685 |
-
<xsd:selector xpath=".//xlf:group"/>
|
1686 |
-
<xsd:field xpath="@id"/>
|
1687 |
-
</xsd:unique>
|
1688 |
-
<xsd:key name="K_unit_id">
|
1689 |
-
<xsd:selector xpath=".//xlf:trans-unit|.//xlf:bin-unit"/>
|
1690 |
-
<xsd:field xpath="@id"/>
|
1691 |
-
</xsd:key>
|
1692 |
-
<xsd:keyref name="KR_unit_id" refer="xlf:K_unit_id">
|
1693 |
-
<xsd:selector xpath=".//bpt|.//ept|.//it|.//ph|.//g|.//x|.//bx|.//ex|.//sub"/>
|
1694 |
-
<xsd:field xpath="@xid"/>
|
1695 |
-
</xsd:keyref>
|
1696 |
-
<xsd:key name="K_tool-id">
|
1697 |
-
<xsd:selector xpath="xlf:header/xlf:tool"/>
|
1698 |
-
<xsd:field xpath="@tool-id"/>
|
1699 |
-
</xsd:key>
|
1700 |
-
<xsd:keyref name="KR_file_tool-id" refer="xlf:K_tool-id">
|
1701 |
-
<xsd:selector xpath="."/>
|
1702 |
-
<xsd:field xpath="@tool-id"/>
|
1703 |
-
</xsd:keyref>
|
1704 |
-
<xsd:keyref name="KR_phase_tool-id" refer="xlf:K_tool-id">
|
1705 |
-
<xsd:selector xpath="xlf:header/xlf:phase-group/xlf:phase"/>
|
1706 |
-
<xsd:field xpath="@tool-id"/>
|
1707 |
-
</xsd:keyref>
|
1708 |
-
<xsd:keyref name="KR_alt-trans_tool-id" refer="xlf:K_tool-id">
|
1709 |
-
<xsd:selector xpath=".//xlf:trans-unit/xlf:alt-trans"/>
|
1710 |
-
<xsd:field xpath="@tool-id"/>
|
1711 |
-
</xsd:keyref>
|
1712 |
-
<xsd:key name="K_count-group_name">
|
1713 |
-
<xsd:selector xpath=".//xlf:count-group"/>
|
1714 |
-
<xsd:field xpath="@name"/>
|
1715 |
-
</xsd:key>
|
1716 |
-
<xsd:unique name="U_context-group_name">
|
1717 |
-
<xsd:selector xpath=".//xlf:context-group"/>
|
1718 |
-
<xsd:field xpath="@name"/>
|
1719 |
-
</xsd:unique>
|
1720 |
-
<xsd:key name="K_phase-name">
|
1721 |
-
<xsd:selector xpath="xlf:header/xlf:phase-group/xlf:phase"/>
|
1722 |
-
<xsd:field xpath="@phase-name"/>
|
1723 |
-
</xsd:key>
|
1724 |
-
<xsd:keyref name="KR_phase-name" refer="xlf:K_phase-name">
|
1725 |
-
<xsd:selector xpath=".//xlf:count|.//xlf:trans-unit|.//xlf:target|.//bin-unit|.//bin-target"/>
|
1726 |
-
<xsd:field xpath="@phase-name"/>
|
1727 |
-
</xsd:keyref>
|
1728 |
-
<xsd:unique name="U_uid">
|
1729 |
-
<xsd:selector xpath=".//xlf:external-file"/>
|
1730 |
-
<xsd:field xpath="@uid"/>
|
1731 |
-
</xsd:unique>
|
1732 |
-
</xsd:element>
|
1733 |
-
<xsd:element name="header">
|
1734 |
-
<xsd:complexType>
|
1735 |
-
<xsd:sequence>
|
1736 |
-
<xsd:element minOccurs="0" name="skl" type="xlf:ElemType_ExternalReference"/>
|
1737 |
-
<xsd:element minOccurs="0" ref="xlf:phase-group"/>
|
1738 |
-
<xsd:choice maxOccurs="unbounded" minOccurs="0">
|
1739 |
-
<xsd:element name="glossary" type="xlf:ElemType_ExternalReference"/>
|
1740 |
-
<xsd:element name="reference" type="xlf:ElemType_ExternalReference"/>
|
1741 |
-
<xsd:element ref="xlf:count-group"/>
|
1742 |
-
<xsd:element ref="xlf:note"/>
|
1743 |
-
<xsd:element ref="xlf:tool"/>
|
1744 |
-
</xsd:choice>
|
1745 |
-
<xsd:any maxOccurs="unbounded" minOccurs="0" namespace="##other" processContents="strict"/>
|
1746 |
-
</xsd:sequence>
|
1747 |
-
</xsd:complexType>
|
1748 |
-
</xsd:element>
|
1749 |
-
<xsd:element name="internal-file">
|
1750 |
-
<xsd:complexType>
|
1751 |
-
<xsd:simpleContent>
|
1752 |
-
<xsd:extension base="xsd:string">
|
1753 |
-
<xsd:attribute name="form" type="xsd:string"/>
|
1754 |
-
<xsd:attribute name="crc" type="xsd:NMTOKEN"/>
|
1755 |
-
</xsd:extension>
|
1756 |
-
</xsd:simpleContent>
|
1757 |
-
</xsd:complexType>
|
1758 |
-
</xsd:element>
|
1759 |
-
<xsd:element name="external-file">
|
1760 |
-
<xsd:complexType>
|
1761 |
-
<xsd:attribute name="href" type="xsd:string" use="required"/>
|
1762 |
-
<xsd:attribute name="crc" type="xsd:NMTOKEN"/>
|
1763 |
-
<xsd:attribute name="uid" type="xsd:NMTOKEN"/>
|
1764 |
-
</xsd:complexType>
|
1765 |
-
</xsd:element>
|
1766 |
-
<xsd:element name="note">
|
1767 |
-
<xsd:complexType>
|
1768 |
-
<xsd:simpleContent>
|
1769 |
-
<xsd:extension base="xsd:string">
|
1770 |
-
<xsd:attribute ref="xml:lang" use="optional"/>
|
1771 |
-
<xsd:attribute default="1" name="priority" type="xlf:AttrType_priority" use="optional"/>
|
1772 |
-
<xsd:attribute name="from" type="xsd:string" use="optional"/>
|
1773 |
-
<xsd:attribute default="general" name="annotates" type="xlf:AttrType_annotates" use="optional"/>
|
1774 |
-
</xsd:extension>
|
1775 |
-
</xsd:simpleContent>
|
1776 |
-
</xsd:complexType>
|
1777 |
-
</xsd:element>
|
1778 |
-
<xsd:element name="phase-group">
|
1779 |
-
<xsd:complexType>
|
1780 |
-
<xsd:sequence maxOccurs="unbounded">
|
1781 |
-
<xsd:element ref="xlf:phase"/>
|
1782 |
-
</xsd:sequence>
|
1783 |
-
</xsd:complexType>
|
1784 |
-
</xsd:element>
|
1785 |
-
<xsd:element name="phase">
|
1786 |
-
<xsd:complexType>
|
1787 |
-
<xsd:sequence maxOccurs="unbounded" minOccurs="0">
|
1788 |
-
<xsd:element ref="xlf:note"/>
|
1789 |
-
</xsd:sequence>
|
1790 |
-
<xsd:attribute name="phase-name" type="xsd:string" use="required"/>
|
1791 |
-
<xsd:attribute name="process-name" type="xsd:string" use="required"/>
|
1792 |
-
<xsd:attribute name="company-name" type="xsd:string" use="optional"/>
|
1793 |
-
<xsd:attribute name="tool-id" type="xsd:string" use="optional"/>
|
1794 |
-
<xsd:attribute name="date" type="xsd:dateTime" use="optional"/>
|
1795 |
-
<xsd:attribute name="job-id" type="xsd:string" use="optional"/>
|
1796 |
-
<xsd:attribute name="contact-name" type="xsd:string" use="optional"/>
|
1797 |
-
<xsd:attribute name="contact-email" type="xsd:string" use="optional"/>
|
1798 |
-
<xsd:attribute name="contact-phone" type="xsd:string" use="optional"/>
|
1799 |
-
</xsd:complexType>
|
1800 |
-
</xsd:element>
|
1801 |
-
<xsd:element name="count-group">
|
1802 |
-
<xsd:complexType>
|
1803 |
-
<xsd:sequence maxOccurs="unbounded" minOccurs="0">
|
1804 |
-
<xsd:element ref="xlf:count"/>
|
1805 |
-
</xsd:sequence>
|
1806 |
-
<xsd:attribute name="name" type="xsd:string" use="required"/>
|
1807 |
-
</xsd:complexType>
|
1808 |
-
</xsd:element>
|
1809 |
-
<xsd:element name="count">
|
1810 |
-
<xsd:complexType>
|
1811 |
-
<xsd:simpleContent>
|
1812 |
-
<xsd:extension base="xsd:string">
|
1813 |
-
<xsd:attribute name="count-type" type="xlf:AttrType_count-type" use="optional"/>
|
1814 |
-
<xsd:attribute name="phase-name" type="xsd:string" use="optional"/>
|
1815 |
-
<xsd:attribute default="word" name="unit" type="xlf:AttrType_unit" use="optional"/>
|
1816 |
-
</xsd:extension>
|
1817 |
-
</xsd:simpleContent>
|
1818 |
-
</xsd:complexType>
|
1819 |
-
</xsd:element>
|
1820 |
-
<xsd:element name="context-group">
|
1821 |
-
<xsd:complexType>
|
1822 |
-
<xsd:sequence maxOccurs="unbounded">
|
1823 |
-
<xsd:element ref="xlf:context"/>
|
1824 |
-
</xsd:sequence>
|
1825 |
-
<xsd:attribute name="name" type="xsd:string" use="optional"/>
|
1826 |
-
<xsd:attribute name="crc" type="xsd:NMTOKEN" use="optional"/>
|
1827 |
-
<xsd:attribute name="purpose" type="xlf:AttrType_purpose" use="optional"/>
|
1828 |
-
</xsd:complexType>
|
1829 |
-
</xsd:element>
|
1830 |
-
<xsd:element name="context">
|
1831 |
-
<xsd:complexType>
|
1832 |
-
<xsd:simpleContent>
|
1833 |
-
<xsd:extension base="xsd:string">
|
1834 |
-
<xsd:attribute name="context-type" type="xlf:AttrType_context-type" use="required"/>
|
1835 |
-
<xsd:attribute default="no" name="match-mandatory" type="xlf:AttrType_YesNo" use="optional"/>
|
1836 |
-
<xsd:attribute name="crc" type="xsd:NMTOKEN" use="optional"/>
|
1837 |
-
</xsd:extension>
|
1838 |
-
</xsd:simpleContent>
|
1839 |
-
</xsd:complexType>
|
1840 |
-
</xsd:element>
|
1841 |
-
<xsd:element name="tool">
|
1842 |
-
<xsd:complexType mixed="true">
|
1843 |
-
<xsd:sequence>
|
1844 |
-
<xsd:any namespace="##any" processContents="strict" minOccurs="0" maxOccurs="unbounded"/>
|
1845 |
-
</xsd:sequence>
|
1846 |
-
<xsd:attribute name="tool-id" type="xsd:string" use="required"/>
|
1847 |
-
<xsd:attribute name="tool-name" type="xsd:string" use="required"/>
|
1848 |
-
<xsd:attribute name="tool-version" type="xsd:string" use="optional"/>
|
1849 |
-
<xsd:attribute name="tool-company" type="xsd:string" use="optional"/>
|
1850 |
-
<xsd:anyAttribute namespace="##other" processContents="strict"/>
|
1851 |
-
</xsd:complexType>
|
1852 |
-
</xsd:element>
|
1853 |
-
<xsd:element name="body">
|
1854 |
-
<xsd:complexType>
|
1855 |
-
<xsd:choice maxOccurs="unbounded" minOccurs="0">
|
1856 |
-
<xsd:element maxOccurs="unbounded" minOccurs="0" ref="xlf:group"/>
|
1857 |
-
<xsd:element maxOccurs="unbounded" minOccurs="0" ref="xlf:trans-unit"/>
|
1858 |
-
<xsd:element maxOccurs="unbounded" minOccurs="0" ref="xlf:bin-unit"/>
|
1859 |
-
</xsd:choice>
|
1860 |
-
</xsd:complexType>
|
1861 |
-
</xsd:element>
|
1862 |
-
<xsd:element name="group">
|
1863 |
-
<xsd:complexType>
|
1864 |
-
<xsd:sequence>
|
1865 |
-
<xsd:sequence>
|
1866 |
-
<xsd:element maxOccurs="unbounded" minOccurs="0" ref="xlf:context-group"/>
|
1867 |
-
<xsd:element maxOccurs="unbounded" minOccurs="0" ref="xlf:count-group"/>
|
1868 |
-
<xsd:element maxOccurs="unbounded" minOccurs="0" ref="xlf:note"/>
|
1869 |
-
<xsd:any maxOccurs="unbounded" minOccurs="0" namespace="##other" processContents="strict"/>
|
1870 |
-
</xsd:sequence>
|
1871 |
-
<xsd:choice maxOccurs="unbounded">
|
1872 |
-
<xsd:element maxOccurs="unbounded" minOccurs="0" ref="xlf:group"/>
|
1873 |
-
<xsd:element maxOccurs="unbounded" minOccurs="0" ref="xlf:trans-unit"/>
|
1874 |
-
<xsd:element maxOccurs="unbounded" minOccurs="0" ref="xlf:bin-unit"/>
|
1875 |
-
</xsd:choice>
|
1876 |
-
</xsd:sequence>
|
1877 |
-
<xsd:attribute name="id" type="xsd:string" use="optional"/>
|
1878 |
-
<xsd:attribute name="datatype" type="xlf:AttrType_datatype" use="optional"/>
|
1879 |
-
<xsd:attribute default="default" ref="xml:space" use="optional"/>
|
1880 |
-
<xsd:attribute name="restype" type="xlf:AttrType_restype" use="optional"/>
|
1881 |
-
<xsd:attribute name="resname" type="xsd:string" use="optional"/>
|
1882 |
-
<xsd:attribute name="extradata" type="xsd:string" use="optional"/>
|
1883 |
-
<xsd:attribute name="extype" type="xsd:string" use="optional"/>
|
1884 |
-
<xsd:attribute name="help-id" type="xsd:NMTOKEN" use="optional"/>
|
1885 |
-
<xsd:attribute name="menu" type="xsd:string" use="optional"/>
|
1886 |
-
<xsd:attribute name="menu-option" type="xsd:string" use="optional"/>
|
1887 |
-
<xsd:attribute name="menu-name" type="xsd:string" use="optional"/>
|
1888 |
-
<xsd:attribute name="coord" type="xlf:AttrType_Coordinates" use="optional"/>
|
1889 |
-
<xsd:attribute name="font" type="xsd:string" use="optional"/>
|
1890 |
-
<xsd:attribute name="css-style" type="xsd:string" use="optional"/>
|
1891 |
-
<xsd:attribute name="style" type="xsd:NMTOKEN" use="optional"/>
|
1892 |
-
<xsd:attribute name="exstyle" type="xsd:NMTOKEN" use="optional"/>
|
1893 |
-
<xsd:attribute default="yes" name="translate" type="xlf:AttrType_YesNo" use="optional"/>
|
1894 |
-
<xsd:attribute default="yes" name="reformat" type="xlf:AttrType_reformat" use="optional"/>
|
1895 |
-
<xsd:attribute default="pixel" name="size-unit" type="xlf:AttrType_size-unit" use="optional"/>
|
1896 |
-
<xsd:attribute name="maxwidth" type="xsd:NMTOKEN" use="optional"/>
|
1897 |
-
<xsd:attribute name="minwidth" type="xsd:NMTOKEN" use="optional"/>
|
1898 |
-
<xsd:attribute name="maxheight" type="xsd:NMTOKEN" use="optional"/>
|
1899 |
-
<xsd:attribute name="minheight" type="xsd:NMTOKEN" use="optional"/>
|
1900 |
-
<xsd:attribute name="maxbytes" type="xsd:NMTOKEN" use="optional"/>
|
1901 |
-
<xsd:attribute name="minbytes" type="xsd:NMTOKEN" use="optional"/>
|
1902 |
-
<xsd:attribute name="charclass" type="xsd:string" use="optional"/>
|
1903 |
-
<xsd:attribute default="no" name="merged-trans" type="xlf:AttrType_YesNo" use="optional"/>
|
1904 |
-
<xsd:anyAttribute namespace="##other" processContents="strict"/>
|
1905 |
-
</xsd:complexType>
|
1906 |
-
</xsd:element>
|
1907 |
-
<xsd:element name="trans-unit">
|
1908 |
-
<xsd:complexType>
|
1909 |
-
<xsd:sequence>
|
1910 |
-
<xsd:element ref="xlf:source"/>
|
1911 |
-
<xsd:element minOccurs="0" ref="xlf:seg-source"/>
|
1912 |
-
<xsd:element minOccurs="0" ref="xlf:target"/>
|
1913 |
-
<xsd:choice maxOccurs="unbounded" minOccurs="0">
|
1914 |
-
<xsd:element ref="xlf:context-group"/>
|
1915 |
-
<xsd:element ref="xlf:count-group"/>
|
1916 |
-
<xsd:element ref="xlf:note"/>
|
1917 |
-
<xsd:element ref="xlf:alt-trans"/>
|
1918 |
-
</xsd:choice>
|
1919 |
-
<xsd:any maxOccurs="unbounded" minOccurs="0" namespace="##other" processContents="strict"/>
|
1920 |
-
</xsd:sequence>
|
1921 |
-
<xsd:attribute name="id" type="xsd:string" use="required"/>
|
1922 |
-
<xsd:attribute name="approved" type="xlf:AttrType_YesNo" use="optional"/>
|
1923 |
-
<xsd:attribute default="yes" name="translate" type="xlf:AttrType_YesNo" use="optional"/>
|
1924 |
-
<xsd:attribute default="yes" name="reformat" type="xlf:AttrType_reformat" use="optional"/>
|
1925 |
-
<xsd:attribute default="default" ref="xml:space" use="optional"/>
|
1926 |
-
<xsd:attribute name="datatype" type="xlf:AttrType_datatype" use="optional"/>
|
1927 |
-
<xsd:attribute name="phase-name" type="xsd:string" use="optional"/>
|
1928 |
-
<xsd:attribute name="restype" type="xlf:AttrType_restype" use="optional"/>
|
1929 |
-
<xsd:attribute name="resname" type="xsd:string" use="optional"/>
|
1930 |
-
<xsd:attribute name="extradata" type="xsd:string" use="optional"/>
|
1931 |
-
<xsd:attribute name="extype" type="xsd:string" use="optional"/>
|
1932 |
-
<xsd:attribute name="help-id" type="xsd:NMTOKEN" use="optional"/>
|
1933 |
-
<xsd:attribute name="menu" type="xsd:string" use="optional"/>
|
1934 |
-
<xsd:attribute name="menu-option" type="xsd:string" use="optional"/>
|
1935 |
-
<xsd:attribute name="menu-name" type="xsd:string" use="optional"/>
|
1936 |
-
<xsd:attribute name="coord" type="xlf:AttrType_Coordinates" use="optional"/>
|
1937 |
-
<xsd:attribute name="font" type="xsd:string" use="optional"/>
|
1938 |
-
<xsd:attribute name="css-style" type="xsd:string" use="optional"/>
|
1939 |
-
<xsd:attribute name="style" type="xsd:NMTOKEN" use="optional"/>
|
1940 |
-
<xsd:attribute name="exstyle" type="xsd:NMTOKEN" use="optional"/>
|
1941 |
-
<xsd:attribute default="pixel" name="size-unit" type="xlf:AttrType_size-unit" use="optional"/>
|
1942 |
-
<xsd:attribute name="maxwidth" type="xsd:NMTOKEN" use="optional"/>
|
1943 |
-
<xsd:attribute name="minwidth" type="xsd:NMTOKEN" use="optional"/>
|
1944 |
-
<xsd:attribute name="maxheight" type="xsd:NMTOKEN" use="optional"/>
|
1945 |
-
<xsd:attribute name="minheight" type="xsd:NMTOKEN" use="optional"/>
|
1946 |
-
<xsd:attribute name="maxbytes" type="xsd:NMTOKEN" use="optional"/>
|
1947 |
-
<xsd:attribute name="minbytes" type="xsd:NMTOKEN" use="optional"/>
|
1948 |
-
<xsd:attribute name="charclass" type="xsd:string" use="optional"/>
|
1949 |
-
<xsd:attribute default="yes" name="merged-trans" type="xlf:AttrType_YesNo" use="optional"/>
|
1950 |
-
<xsd:anyAttribute namespace="##other" processContents="strict"/>
|
1951 |
-
</xsd:complexType>
|
1952 |
-
<xsd:unique name="U_tu_segsrc_mid">
|
1953 |
-
<xsd:selector xpath="./xlf:seg-source/xlf:mrk"/>
|
1954 |
-
<xsd:field xpath="@mid"/>
|
1955 |
-
</xsd:unique>
|
1956 |
-
<xsd:keyref name="KR_tu_segsrc_mid" refer="xlf:U_tu_segsrc_mid">
|
1957 |
-
<xsd:selector xpath="./xlf:target/xlf:mrk|./xlf:alt-trans"/>
|
1958 |
-
<xsd:field xpath="@mid"/>
|
1959 |
-
</xsd:keyref>
|
1960 |
-
</xsd:element>
|
1961 |
-
<xsd:element name="source">
|
1962 |
-
<xsd:complexType mixed="true">
|
1963 |
-
<xsd:group maxOccurs="unbounded" minOccurs="0" ref="xlf:ElemGroup_TextContent"/>
|
1964 |
-
<xsd:attribute ref="xml:lang" use="optional"/>
|
1965 |
-
<xsd:anyAttribute namespace="##other" processContents="strict"/>
|
1966 |
-
</xsd:complexType>
|
1967 |
-
<xsd:unique name="U_source_bpt_rid">
|
1968 |
-
<xsd:selector xpath=".//xlf:bpt"/>
|
1969 |
-
<xsd:field xpath="@rid"/>
|
1970 |
-
</xsd:unique>
|
1971 |
-
<xsd:keyref name="KR_source_ept_rid" refer="xlf:U_source_bpt_rid">
|
1972 |
-
<xsd:selector xpath=".//xlf:ept"/>
|
1973 |
-
<xsd:field xpath="@rid"/>
|
1974 |
-
</xsd:keyref>
|
1975 |
-
<xsd:unique name="U_source_bx_rid">
|
1976 |
-
<xsd:selector xpath=".//xlf:bx"/>
|
1977 |
-
<xsd:field xpath="@rid"/>
|
1978 |
-
</xsd:unique>
|
1979 |
-
<xsd:keyref name="KR_source_ex_rid" refer="xlf:U_source_bx_rid">
|
1980 |
-
<xsd:selector xpath=".//xlf:ex"/>
|
1981 |
-
<xsd:field xpath="@rid"/>
|
1982 |
-
</xsd:keyref>
|
1983 |
-
</xsd:element>
|
1984 |
-
<xsd:element name="seg-source">
|
1985 |
-
<xsd:complexType mixed="true">
|
1986 |
-
<xsd:group maxOccurs="unbounded" minOccurs="0" ref="xlf:ElemGroup_TextContent"/>
|
1987 |
-
<xsd:attribute ref="xml:lang" use="optional"/>
|
1988 |
-
<xsd:anyAttribute namespace="##other" processContents="strict"/>
|
1989 |
-
</xsd:complexType>
|
1990 |
-
<xsd:unique name="U_segsrc_bpt_rid">
|
1991 |
-
<xsd:selector xpath=".//xlf:bpt"/>
|
1992 |
-
<xsd:field xpath="@rid"/>
|
1993 |
-
</xsd:unique>
|
1994 |
-
<xsd:keyref name="KR_segsrc_ept_rid" refer="xlf:U_segsrc_bpt_rid">
|
1995 |
-
<xsd:selector xpath=".//xlf:ept"/>
|
1996 |
-
<xsd:field xpath="@rid"/>
|
1997 |
-
</xsd:keyref>
|
1998 |
-
<xsd:unique name="U_segsrc_bx_rid">
|
1999 |
-
<xsd:selector xpath=".//xlf:bx"/>
|
2000 |
-
<xsd:field xpath="@rid"/>
|
2001 |
-
</xsd:unique>
|
2002 |
-
<xsd:keyref name="KR_segsrc_ex_rid" refer="xlf:U_segsrc_bx_rid">
|
2003 |
-
<xsd:selector xpath=".//xlf:ex"/>
|
2004 |
-
<xsd:field xpath="@rid"/>
|
2005 |
-
</xsd:keyref>
|
2006 |
-
</xsd:element>
|
2007 |
-
<xsd:element name="target">
|
2008 |
-
<xsd:complexType mixed="true">
|
2009 |
-
<xsd:group maxOccurs="unbounded" minOccurs="0" ref="xlf:ElemGroup_TextContent"/>
|
2010 |
-
<xsd:attribute name="state" type="xlf:AttrType_state" use="optional"/>
|
2011 |
-
<xsd:attribute name="state-qualifier" type="xlf:AttrType_state-qualifier" use="optional"/>
|
2012 |
-
<xsd:attribute name="phase-name" type="xsd:NMTOKEN" use="optional"/>
|
2013 |
-
<xsd:attribute ref="xml:lang" use="optional"/>
|
2014 |
-
<xsd:attribute name="resname" type="xsd:string" use="optional"/>
|
2015 |
-
<xsd:attribute name="coord" type="xlf:AttrType_Coordinates" use="optional"/>
|
2016 |
-
<xsd:attribute name="font" type="xsd:string" use="optional"/>
|
2017 |
-
<xsd:attribute name="css-style" type="xsd:string" use="optional"/>
|
2018 |
-
<xsd:attribute name="style" type="xsd:NMTOKEN" use="optional"/>
|
2019 |
-
<xsd:attribute name="exstyle" type="xsd:NMTOKEN" use="optional"/>
|
2020 |
-
<xsd:attribute default="yes" name="equiv-trans" type="xlf:AttrType_YesNo" use="optional"/>
|
2021 |
-
<xsd:anyAttribute namespace="##other" processContents="strict"/>
|
2022 |
-
</xsd:complexType>
|
2023 |
-
<xsd:unique name="U_target_bpt_rid">
|
2024 |
-
<xsd:selector xpath=".//xlf:bpt"/>
|
2025 |
-
<xsd:field xpath="@rid"/>
|
2026 |
-
</xsd:unique>
|
2027 |
-
<xsd:keyref name="KR_target_ept_rid" refer="xlf:U_target_bpt_rid">
|
2028 |
-
<xsd:selector xpath=".//xlf:ept"/>
|
2029 |
-
<xsd:field xpath="@rid"/>
|
2030 |
-
</xsd:keyref>
|
2031 |
-
<xsd:unique name="U_target_bx_rid">
|
2032 |
-
<xsd:selector xpath=".//xlf:bx"/>
|
2033 |
-
<xsd:field xpath="@rid"/>
|
2034 |
-
</xsd:unique>
|
2035 |
-
<xsd:keyref name="KR_target_ex_rid" refer="xlf:U_target_bx_rid">
|
2036 |
-
<xsd:selector xpath=".//xlf:ex"/>
|
2037 |
-
<xsd:field xpath="@rid"/>
|
2038 |
-
</xsd:keyref>
|
2039 |
-
</xsd:element>
|
2040 |
-
<xsd:element name="alt-trans">
|
2041 |
-
<xsd:complexType>
|
2042 |
-
<xsd:sequence>
|
2043 |
-
<xsd:element minOccurs="0" ref="xlf:source"/>
|
2044 |
-
<xsd:element minOccurs="0" ref="xlf:seg-source"/>
|
2045 |
-
<xsd:element maxOccurs="1" ref="xlf:target"/>
|
2046 |
-
<xsd:element maxOccurs="unbounded" minOccurs="0" ref="xlf:context-group"/>
|
2047 |
-
<xsd:element maxOccurs="unbounded" minOccurs="0" ref="xlf:note"/>
|
2048 |
-
<xsd:any maxOccurs="unbounded" minOccurs="0" namespace="##other" processContents="strict"/>
|
2049 |
-
</xsd:sequence>
|
2050 |
-
<xsd:attribute name="match-quality" type="xsd:string" use="optional"/>
|
2051 |
-
<xsd:attribute name="tool-id" type="xsd:string" use="optional"/>
|
2052 |
-
<xsd:attribute name="crc" type="xsd:NMTOKEN" use="optional"/>
|
2053 |
-
<xsd:attribute ref="xml:lang" use="optional"/>
|
2054 |
-
<xsd:attribute name="origin" type="xsd:string" use="optional"/>
|
2055 |
-
<xsd:attribute name="datatype" type="xlf:AttrType_datatype" use="optional"/>
|
2056 |
-
<xsd:attribute default="default" ref="xml:space" use="optional"/>
|
2057 |
-
<xsd:attribute name="restype" type="xlf:AttrType_restype" use="optional"/>
|
2058 |
-
<xsd:attribute name="resname" type="xsd:string" use="optional"/>
|
2059 |
-
<xsd:attribute name="extradata" type="xsd:string" use="optional"/>
|
2060 |
-
<xsd:attribute name="extype" type="xsd:string" use="optional"/>
|
2061 |
-
<xsd:attribute name="help-id" type="xsd:NMTOKEN" use="optional"/>
|
2062 |
-
<xsd:attribute name="menu" type="xsd:string" use="optional"/>
|
2063 |
-
<xsd:attribute name="menu-option" type="xsd:string" use="optional"/>
|
2064 |
-
<xsd:attribute name="menu-name" type="xsd:string" use="optional"/>
|
2065 |
-
<xsd:attribute name="mid" type="xsd:NMTOKEN" use="optional"/>
|
2066 |
-
<xsd:attribute name="coord" type="xlf:AttrType_Coordinates" use="optional"/>
|
2067 |
-
<xsd:attribute name="font" type="xsd:string" use="optional"/>
|
2068 |
-
<xsd:attribute name="css-style" type="xsd:string" use="optional"/>
|
2069 |
-
<xsd:attribute name="style" type="xsd:NMTOKEN" use="optional"/>
|
2070 |
-
<xsd:attribute name="exstyle" type="xsd:NMTOKEN" use="optional"/>
|
2071 |
-
<xsd:attribute name="phase-name" type="xsd:NMTOKEN" use="optional"/>
|
2072 |
-
<xsd:attribute default="proposal" name="alttranstype" type="xlf:AttrType_alttranstype" use="optional"/>
|
2073 |
-
<xsd:anyAttribute namespace="##other" processContents="strict"/>
|
2074 |
-
</xsd:complexType>
|
2075 |
-
<xsd:unique name="U_at_segsrc_mid">
|
2076 |
-
<xsd:selector xpath="./xlf:seg-source/xlf:mrk"/>
|
2077 |
-
<xsd:field xpath="@mid"/>
|
2078 |
-
</xsd:unique>
|
2079 |
-
<xsd:keyref name="KR_at_segsrc_mid" refer="xlf:U_at_segsrc_mid">
|
2080 |
-
<xsd:selector xpath="./xlf:target/xlf:mrk"/>
|
2081 |
-
<xsd:field xpath="@mid"/>
|
2082 |
-
</xsd:keyref>
|
2083 |
-
</xsd:element>
|
2084 |
-
<xsd:element name="bin-unit">
|
2085 |
-
<xsd:complexType>
|
2086 |
-
<xsd:sequence>
|
2087 |
-
<xsd:element ref="xlf:bin-source"/>
|
2088 |
-
<xsd:element minOccurs="0" ref="xlf:bin-target"/>
|
2089 |
-
<xsd:choice maxOccurs="unbounded" minOccurs="0">
|
2090 |
-
<xsd:element ref="xlf:context-group"/>
|
2091 |
-
<xsd:element ref="xlf:count-group"/>
|
2092 |
-
<xsd:element ref="xlf:note"/>
|
2093 |
-
<xsd:element ref="xlf:trans-unit"/>
|
2094 |
-
</xsd:choice>
|
2095 |
-
<xsd:any maxOccurs="unbounded" minOccurs="0" namespace="##other" processContents="strict"/>
|
2096 |
-
</xsd:sequence>
|
2097 |
-
<xsd:attribute name="id" type="xsd:string" use="required"/>
|
2098 |
-
<xsd:attribute name="mime-type" type="xlf:mime-typeValueList" use="required"/>
|
2099 |
-
<xsd:attribute name="approved" type="xlf:AttrType_YesNo" use="optional"/>
|
2100 |
-
<xsd:attribute default="yes" name="translate" type="xlf:AttrType_YesNo" use="optional"/>
|
2101 |
-
<xsd:attribute default="yes" name="reformat" type="xlf:AttrType_reformat" use="optional"/>
|
2102 |
-
<xsd:attribute name="restype" type="xlf:AttrType_restype" use="optional"/>
|
2103 |
-
<xsd:attribute name="resname" type="xsd:string" use="optional"/>
|
2104 |
-
<xsd:attribute name="phase-name" type="xsd:string" use="optional"/>
|
2105 |
-
<xsd:anyAttribute namespace="##other" processContents="strict"/>
|
2106 |
-
</xsd:complexType>
|
2107 |
-
</xsd:element>
|
2108 |
-
<xsd:element name="bin-source">
|
2109 |
-
<xsd:complexType>
|
2110 |
-
<xsd:choice>
|
2111 |
-
<xsd:element ref="xlf:internal-file"/>
|
2112 |
-
<xsd:element ref="xlf:external-file"/>
|
2113 |
-
</xsd:choice>
|
2114 |
-
<xsd:anyAttribute namespace="##other" processContents="strict"/>
|
2115 |
-
</xsd:complexType>
|
2116 |
-
</xsd:element>
|
2117 |
-
<xsd:element name="bin-target">
|
2118 |
-
<xsd:complexType>
|
2119 |
-
<xsd:choice>
|
2120 |
-
<xsd:element ref="xlf:internal-file"/>
|
2121 |
-
<xsd:element ref="xlf:external-file"/>
|
2122 |
-
</xsd:choice>
|
2123 |
-
<xsd:attribute name="mime-type" type="xlf:mime-typeValueList" use="optional"/>
|
2124 |
-
<xsd:attribute name="state" type="xlf:AttrType_state" use="optional"/>
|
2125 |
-
<xsd:attribute name="state-qualifier" type="xlf:AttrType_state-qualifier" use="optional"/>
|
2126 |
-
<xsd:attribute name="phase-name" type="xsd:NMTOKEN" use="optional"/>
|
2127 |
-
<xsd:attribute name="restype" type="xlf:AttrType_restype" use="optional"/>
|
2128 |
-
<xsd:attribute name="resname" type="xsd:string" use="optional"/>
|
2129 |
-
<xsd:anyAttribute namespace="##other" processContents="strict"/>
|
2130 |
-
</xsd:complexType>
|
2131 |
-
</xsd:element>
|
2132 |
-
<!-- Element for inline codes -->
|
2133 |
-
<xsd:element name="g">
|
2134 |
-
<xsd:complexType mixed="true">
|
2135 |
-
<xsd:group maxOccurs="unbounded" minOccurs="0" ref="xlf:ElemGroup_TextContent"/>
|
2136 |
-
<xsd:attribute name="ctype" type="xlf:AttrType_InlineDelimiters" use="optional"/>
|
2137 |
-
<xsd:attribute default="yes" name="clone" type="xlf:AttrType_YesNo" use="optional"/>
|
2138 |
-
<xsd:attributeGroup ref="xlf:AttrGroup_TextContent"/>
|
2139 |
-
</xsd:complexType>
|
2140 |
-
</xsd:element>
|
2141 |
-
<xsd:element name="x">
|
2142 |
-
<xsd:complexType>
|
2143 |
-
<xsd:attribute name="ctype" type="xlf:AttrType_InlinePlaceholders" use="optional"/>
|
2144 |
-
<xsd:attribute default="yes" name="clone" type="xlf:AttrType_YesNo" use="optional"/>
|
2145 |
-
<xsd:attributeGroup ref="xlf:AttrGroup_TextContent"/>
|
2146 |
-
</xsd:complexType>
|
2147 |
-
</xsd:element>
|
2148 |
-
<xsd:element name="bx">
|
2149 |
-
<xsd:complexType>
|
2150 |
-
<xsd:attribute name="rid" type="xsd:NMTOKEN" use="optional"/>
|
2151 |
-
<xsd:attribute name="ctype" type="xlf:AttrType_InlineDelimiters" use="optional"/>
|
2152 |
-
<xsd:attribute default="yes" name="clone" type="xlf:AttrType_YesNo" use="optional"/>
|
2153 |
-
<xsd:attributeGroup ref="xlf:AttrGroup_TextContent"/>
|
2154 |
-
</xsd:complexType>
|
2155 |
-
</xsd:element>
|
2156 |
-
<xsd:element name="ex">
|
2157 |
-
<xsd:complexType>
|
2158 |
-
<xsd:attribute name="rid" type="xsd:NMTOKEN" use="optional"/>
|
2159 |
-
<xsd:attributeGroup ref="xlf:AttrGroup_TextContent"/>
|
2160 |
-
</xsd:complexType>
|
2161 |
-
</xsd:element>
|
2162 |
-
<xsd:element name="ph">
|
2163 |
-
<xsd:complexType mixed="true">
|
2164 |
-
<xsd:sequence maxOccurs="unbounded" minOccurs="0">
|
2165 |
-
<xsd:element ref="xlf:sub"/>
|
2166 |
-
</xsd:sequence>
|
2167 |
-
<xsd:attribute name="ctype" type="xlf:AttrType_InlinePlaceholders" use="optional"/>
|
2168 |
-
<xsd:attribute name="crc" type="xsd:string" use="optional"/>
|
2169 |
-
<xsd:attribute name="assoc" type="xlf:AttrType_assoc" use="optional"/>
|
2170 |
-
<xsd:attributeGroup ref="xlf:AttrGroup_TextContent"/>
|
2171 |
-
</xsd:complexType>
|
2172 |
-
</xsd:element>
|
2173 |
-
<xsd:element name="bpt">
|
2174 |
-
<xsd:complexType mixed="true">
|
2175 |
-
<xsd:sequence maxOccurs="unbounded" minOccurs="0">
|
2176 |
-
<xsd:element ref="xlf:sub"/>
|
2177 |
-
</xsd:sequence>
|
2178 |
-
<xsd:attribute name="rid" type="xsd:NMTOKEN" use="optional"/>
|
2179 |
-
<xsd:attribute name="ctype" type="xlf:AttrType_InlineDelimiters" use="optional"/>
|
2180 |
-
<xsd:attribute name="crc" type="xsd:string" use="optional"/>
|
2181 |
-
<xsd:attributeGroup ref="xlf:AttrGroup_TextContent"/>
|
2182 |
-
</xsd:complexType>
|
2183 |
-
</xsd:element>
|
2184 |
-
<xsd:element name="ept">
|
2185 |
-
<xsd:complexType mixed="true">
|
2186 |
-
<xsd:sequence maxOccurs="unbounded" minOccurs="0">
|
2187 |
-
<xsd:element ref="xlf:sub"/>
|
2188 |
-
</xsd:sequence>
|
2189 |
-
<xsd:attribute name="rid" type="xsd:NMTOKEN" use="optional"/>
|
2190 |
-
<xsd:attribute name="crc" type="xsd:string" use="optional"/>
|
2191 |
-
<xsd:attributeGroup ref="xlf:AttrGroup_TextContent"/>
|
2192 |
-
</xsd:complexType>
|
2193 |
-
</xsd:element>
|
2194 |
-
<xsd:element name="it">
|
2195 |
-
<xsd:complexType mixed="true">
|
2196 |
-
<xsd:sequence maxOccurs="unbounded" minOccurs="0">
|
2197 |
-
<xsd:element ref="xlf:sub"/>
|
2198 |
-
</xsd:sequence>
|
2199 |
-
<xsd:attribute name="pos" type="xlf:AttrType_Position" use="required"/>
|
2200 |
-
<xsd:attribute name="rid" type="xsd:NMTOKEN" use="optional"/>
|
2201 |
-
<xsd:attribute name="ctype" type="xlf:AttrType_InlineDelimiters" use="optional"/>
|
2202 |
-
<xsd:attribute name="crc" type="xsd:string" use="optional"/>
|
2203 |
-
<xsd:attributeGroup ref="xlf:AttrGroup_TextContent"/>
|
2204 |
-
</xsd:complexType>
|
2205 |
-
</xsd:element>
|
2206 |
-
<xsd:element name="sub">
|
2207 |
-
<xsd:complexType mixed="true">
|
2208 |
-
<xsd:group maxOccurs="unbounded" minOccurs="0" ref="xlf:ElemGroup_TextContent"/>
|
2209 |
-
<xsd:attribute name="datatype" type="xlf:AttrType_datatype" use="optional"/>
|
2210 |
-
<xsd:attribute name="ctype" type="xlf:AttrType_InlineDelimiters" use="optional"/>
|
2211 |
-
<xsd:attribute name="xid" type="xsd:string" use="optional"/>
|
2212 |
-
</xsd:complexType>
|
2213 |
-
</xsd:element>
|
2214 |
-
<xsd:element name="mrk">
|
2215 |
-
<xsd:complexType mixed="true">
|
2216 |
-
<xsd:group maxOccurs="unbounded" minOccurs="0" ref="xlf:ElemGroup_TextContent"/>
|
2217 |
-
<xsd:attribute name="mtype" type="xlf:AttrType_mtype" use="required"/>
|
2218 |
-
<xsd:attribute name="mid" type="xsd:NMTOKEN" use="optional"/>
|
2219 |
-
<xsd:attribute name="comment" type="xsd:string" use="optional"/>
|
2220 |
-
<xsd:anyAttribute namespace="##other" processContents="strict"/>
|
2221 |
-
</xsd:complexType>
|
2222 |
-
</xsd:element>
|
2223 |
-
</xsd:schema>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/common/lib/vendor/symfony/translation/Translator.php
CHANGED
@@ -13,15 +13,9 @@ namespace Symfony\Component\Translation;
|
|
13 |
|
14 |
use Symfony\Component\Translation\Loader\LoaderInterface;
|
15 |
use Symfony\Component\Translation\Exception\NotFoundResourceException;
|
16 |
-
use Symfony\Component\Translation\Exception\InvalidArgumentException;
|
17 |
-
use Symfony\Component\Translation\Exception\LogicException;
|
18 |
-
use Symfony\Component\Translation\Exception\RuntimeException;
|
19 |
use Symfony\Component\Config\ConfigCacheInterface;
|
20 |
use Symfony\Component\Config\ConfigCacheFactoryInterface;
|
21 |
use Symfony\Component\Config\ConfigCacheFactory;
|
22 |
-
use Symfony\Component\Translation\Formatter\MessageFormatterInterface;
|
23 |
-
use Symfony\Component\Translation\Formatter\ChoiceMessageFormatterInterface;
|
24 |
-
use Symfony\Component\Translation\Formatter\MessageFormatter;
|
25 |
|
26 |
/**
|
27 |
* @author Fabien Potencier <fabien@symfony.com>
|
@@ -36,7 +30,7 @@ class Translator implements TranslatorInterface, TranslatorBagInterface
|
|
36 |
/**
|
37 |
* @var string
|
38 |
*/
|
39 |
-
|
40 |
|
41 |
/**
|
42 |
* @var array
|
@@ -54,9 +48,9 @@ class Translator implements TranslatorInterface, TranslatorBagInterface
|
|
54 |
private $resources = array();
|
55 |
|
56 |
/**
|
57 |
-
* @var
|
58 |
*/
|
59 |
-
private $
|
60 |
|
61 |
/**
|
62 |
* @var string
|
@@ -74,25 +68,17 @@ class Translator implements TranslatorInterface, TranslatorBagInterface
|
|
74 |
private $configCacheFactory;
|
75 |
|
76 |
/**
|
77 |
-
* @param string
|
78 |
-
* @param
|
79 |
-
* @param string|null
|
80 |
-
* @param bool
|
81 |
*
|
82 |
-
* @throws InvalidArgumentException If a locale contains invalid characters
|
83 |
*/
|
84 |
-
public function __construct($locale, $
|
85 |
{
|
86 |
$this->setLocale($locale);
|
87 |
-
|
88 |
-
if ($formatter instanceof MessageSelector) {
|
89 |
-
$formatter = new MessageFormatter($formatter);
|
90 |
-
@trigger_error(sprintf('Passing a "%s" instance into the "%s" as a second argument is deprecated since Symfony 3.4 and will be removed in 4.0. Inject a "%s" implementation instead.', MessageSelector::class, __METHOD__, MessageFormatterInterface::class), E_USER_DEPRECATED);
|
91 |
-
} elseif (null === $formatter) {
|
92 |
-
$formatter = new MessageFormatter();
|
93 |
-
}
|
94 |
-
|
95 |
-
$this->formatter = $formatter;
|
96 |
$this->cacheDir = $cacheDir;
|
97 |
$this->debug = $debug;
|
98 |
}
|
@@ -121,7 +107,7 @@ class Translator implements TranslatorInterface, TranslatorBagInterface
|
|
121 |
* @param string $locale The locale
|
122 |
* @param string $domain The domain
|
123 |
*
|
124 |
-
* @throws InvalidArgumentException If the locale contains invalid characters
|
125 |
*/
|
126 |
public function addResource($format, $resource, $locale, $domain = null)
|
127 |
{
|
@@ -157,12 +143,28 @@ class Translator implements TranslatorInterface, TranslatorBagInterface
|
|
157 |
return $this->locale;
|
158 |
}
|
159 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
160 |
/**
|
161 |
* Sets the fallback locales.
|
162 |
*
|
163 |
* @param array $locales The fallback locales
|
164 |
*
|
165 |
-
* @throws InvalidArgumentException If a locale contains invalid characters
|
166 |
*/
|
167 |
public function setFallbackLocales(array $locales)
|
168 |
{
|
@@ -195,7 +197,7 @@ class Translator implements TranslatorInterface, TranslatorBagInterface
|
|
195 |
$domain = 'messages';
|
196 |
}
|
197 |
|
198 |
-
return
|
199 |
}
|
200 |
|
201 |
/**
|
@@ -203,10 +205,6 @@ class Translator implements TranslatorInterface, TranslatorBagInterface
|
|
203 |
*/
|
204 |
public function transChoice($id, $number, array $parameters = array(), $domain = null, $locale = null)
|
205 |
{
|
206 |
-
if (!$this->formatter instanceof ChoiceMessageFormatterInterface) {
|
207 |
-
throw new LogicException(sprintf('The formatter "%s" does not support plural translations.', get_class($this->formatter)));
|
208 |
-
}
|
209 |
-
|
210 |
if (null === $domain) {
|
211 |
$domain = 'messages';
|
212 |
}
|
@@ -223,7 +221,7 @@ class Translator implements TranslatorInterface, TranslatorBagInterface
|
|
223 |
}
|
224 |
}
|
225 |
|
226 |
-
return $this->
|
227 |
}
|
228 |
|
229 |
/**
|
@@ -254,6 +252,28 @@ class Translator implements TranslatorInterface, TranslatorBagInterface
|
|
254 |
return $this->loaders;
|
255 |
}
|
256 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
257 |
/**
|
258 |
* @param string $locale
|
259 |
*/
|
@@ -294,9 +314,10 @@ class Translator implements TranslatorInterface, TranslatorBagInterface
|
|
294 |
}
|
295 |
|
296 |
$this->assertValidLocale($locale);
|
|
|
297 |
$cache = $this->getConfigCacheFactory()->cache($this->getCatalogueCachePath($locale),
|
298 |
-
function (ConfigCacheInterface $cache) use ($locale) {
|
299 |
-
$
|
300 |
}
|
301 |
);
|
302 |
|
@@ -309,7 +330,12 @@ class Translator implements TranslatorInterface, TranslatorBagInterface
|
|
309 |
$this->catalogues[$locale] = include $cache->getPath();
|
310 |
}
|
311 |
|
312 |
-
|
|
|
|
|
|
|
|
|
|
|
313 |
{
|
314 |
$this->initializeCatalogue($locale);
|
315 |
$fallbackContent = $this->getFallbackContent($this->catalogues[$locale]);
|
@@ -366,7 +392,7 @@ EOF
|
|
366 |
|
367 |
private function getCatalogueCachePath($locale)
|
368 |
{
|
369 |
-
return $this->cacheDir.'/catalogue.'.$locale.'.'.
|
370 |
}
|
371 |
|
372 |
private function doLoadCatalogue($locale)
|
@@ -376,7 +402,7 @@ EOF
|
|
376 |
if (isset($this->resources[$locale])) {
|
377 |
foreach ($this->resources[$locale] as $resource) {
|
378 |
if (!isset($this->loaders[$resource[0]])) {
|
379 |
-
throw new RuntimeException(sprintf('The "%s" translation loader is not registered.', $resource[0]));
|
380 |
}
|
381 |
$this->catalogues[$locale]->addCatalogue($this->loaders[$resource[0]]->load($resource[1], $locale, $resource[2]));
|
382 |
}
|
@@ -424,12 +450,12 @@ EOF
|
|
424 |
*
|
425 |
* @param string $locale Locale to tests
|
426 |
*
|
427 |
-
* @throws InvalidArgumentException If the locale contains invalid characters
|
428 |
*/
|
429 |
protected function assertValidLocale($locale)
|
430 |
{
|
431 |
if (1 !== preg_match('/^[a-z0-9@_\\.\\-]*$/i', $locale)) {
|
432 |
-
throw new InvalidArgumentException(sprintf('Invalid "%s" locale.', $locale));
|
433 |
}
|
434 |
}
|
435 |
|
13 |
|
14 |
use Symfony\Component\Translation\Loader\LoaderInterface;
|
15 |
use Symfony\Component\Translation\Exception\NotFoundResourceException;
|
|
|
|
|
|
|
16 |
use Symfony\Component\Config\ConfigCacheInterface;
|
17 |
use Symfony\Component\Config\ConfigCacheFactoryInterface;
|
18 |
use Symfony\Component\Config\ConfigCacheFactory;
|
|
|
|
|
|
|
19 |
|
20 |
/**
|
21 |
* @author Fabien Potencier <fabien@symfony.com>
|
30 |
/**
|
31 |
* @var string
|
32 |
*/
|
33 |
+
protected $locale;
|
34 |
|
35 |
/**
|
36 |
* @var array
|
48 |
private $resources = array();
|
49 |
|
50 |
/**
|
51 |
+
* @var MessageSelector
|
52 |
*/
|
53 |
+
private $selector;
|
54 |
|
55 |
/**
|
56 |
* @var string
|
68 |
private $configCacheFactory;
|
69 |
|
70 |
/**
|
71 |
+
* @param string $locale The locale
|
72 |
+
* @param MessageSelector|null $selector The message selector for pluralization
|
73 |
+
* @param string|null $cacheDir The directory to use for the cache
|
74 |
+
* @param bool $debug Use cache in debug mode ?
|
75 |
*
|
76 |
+
* @throws \InvalidArgumentException If a locale contains invalid characters
|
77 |
*/
|
78 |
+
public function __construct($locale, MessageSelector $selector = null, $cacheDir = null, $debug = false)
|
79 |
{
|
80 |
$this->setLocale($locale);
|
81 |
+
$this->selector = $selector ?: new MessageSelector();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
82 |
$this->cacheDir = $cacheDir;
|
83 |
$this->debug = $debug;
|
84 |
}
|
107 |
* @param string $locale The locale
|
108 |
* @param string $domain The domain
|
109 |
*
|
110 |
+
* @throws \InvalidArgumentException If the locale contains invalid characters
|
111 |
*/
|
112 |
public function addResource($format, $resource, $locale, $domain = null)
|
113 |
{
|
143 |
return $this->locale;
|
144 |
}
|
145 |
|
146 |
+
/**
|
147 |
+
* Sets the fallback locale(s).
|
148 |
+
*
|
149 |
+
* @param string|array $locales The fallback locale(s)
|
150 |
+
*
|
151 |
+
* @throws \InvalidArgumentException If a locale contains invalid characters
|
152 |
+
*
|
153 |
+
* @deprecated since version 2.3, to be removed in 3.0. Use setFallbackLocales() instead
|
154 |
+
*/
|
155 |
+
public function setFallbackLocale($locales)
|
156 |
+
{
|
157 |
+
@trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.3 and will be removed in 3.0. Use the setFallbackLocales() method instead.', E_USER_DEPRECATED);
|
158 |
+
|
159 |
+
$this->setFallbackLocales(is_array($locales) ? $locales : array($locales));
|
160 |
+
}
|
161 |
+
|
162 |
/**
|
163 |
* Sets the fallback locales.
|
164 |
*
|
165 |
* @param array $locales The fallback locales
|
166 |
*
|
167 |
+
* @throws \InvalidArgumentException If a locale contains invalid characters
|
168 |
*/
|
169 |
public function setFallbackLocales(array $locales)
|
170 |
{
|
197 |
$domain = 'messages';
|
198 |
}
|
199 |
|
200 |
+
return strtr($this->getCatalogue($locale)->get((string) $id, $domain), $parameters);
|
201 |
}
|
202 |
|
203 |
/**
|
205 |
*/
|
206 |
public function transChoice($id, $number, array $parameters = array(), $domain = null, $locale = null)
|
207 |
{
|
|
|
|
|
|
|
|
|
208 |
if (null === $domain) {
|
209 |
$domain = 'messages';
|
210 |
}
|
221 |
}
|
222 |
}
|
223 |
|
224 |
+
return strtr($this->selector->choose($catalogue->get($id, $domain), (int) $number, $locale), $parameters);
|
225 |
}
|
226 |
|
227 |
/**
|
252 |
return $this->loaders;
|
253 |
}
|
254 |
|
255 |
+
/**
|
256 |
+
* Collects all messages for the given locale.
|
257 |
+
*
|
258 |
+
* @param string|null $locale Locale of translations, by default is current locale
|
259 |
+
*
|
260 |
+
* @return array[array] indexed by catalog
|
261 |
+
*
|
262 |
+
* @deprecated since version 2.8, to be removed in 3.0. Use TranslatorBagInterface::getCatalogue() method instead.
|
263 |
+
*/
|
264 |
+
public function getMessages($locale = null)
|
265 |
+
{
|
266 |
+
@trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.8 and will be removed in 3.0. Use TranslatorBagInterface::getCatalogue() method instead.', E_USER_DEPRECATED);
|
267 |
+
|
268 |
+
$catalogue = $this->getCatalogue($locale);
|
269 |
+
$messages = $catalogue->all();
|
270 |
+
while ($catalogue = $catalogue->getFallbackCatalogue()) {
|
271 |
+
$messages = array_replace_recursive($catalogue->all(), $messages);
|
272 |
+
}
|
273 |
+
|
274 |
+
return $messages;
|
275 |
+
}
|
276 |
+
|
277 |
/**
|
278 |
* @param string $locale
|
279 |
*/
|
314 |
}
|
315 |
|
316 |
$this->assertValidLocale($locale);
|
317 |
+
$self = $this; // required for PHP 5.3 where "$this" cannot be use()d in anonymous functions. Change in Symfony 3.0.
|
318 |
$cache = $this->getConfigCacheFactory()->cache($this->getCatalogueCachePath($locale),
|
319 |
+
function (ConfigCacheInterface $cache) use ($self, $locale) {
|
320 |
+
$self->dumpCatalogue($locale, $cache);
|
321 |
}
|
322 |
);
|
323 |
|
330 |
$this->catalogues[$locale] = include $cache->getPath();
|
331 |
}
|
332 |
|
333 |
+
/**
|
334 |
+
* This method is public because it needs to be callable from a closure in PHP 5.3. It should be made protected (or even private, if possible) in 3.0.
|
335 |
+
*
|
336 |
+
* @internal
|
337 |
+
*/
|
338 |
+
public function dumpCatalogue($locale, ConfigCacheInterface $cache)
|
339 |
{
|
340 |
$this->initializeCatalogue($locale);
|
341 |
$fallbackContent = $this->getFallbackContent($this->catalogues[$locale]);
|
392 |
|
393 |
private function getCatalogueCachePath($locale)
|
394 |
{
|
395 |
+
return $this->cacheDir.'/catalogue.'.$locale.'.'.sha1(serialize($this->fallbackLocales)).'.php';
|
396 |
}
|
397 |
|
398 |
private function doLoadCatalogue($locale)
|
402 |
if (isset($this->resources[$locale])) {
|
403 |
foreach ($this->resources[$locale] as $resource) {
|
404 |
if (!isset($this->loaders[$resource[0]])) {
|
405 |
+
throw new \RuntimeException(sprintf('The "%s" translation loader is not registered.', $resource[0]));
|
406 |
}
|
407 |
$this->catalogues[$locale]->addCatalogue($this->loaders[$resource[0]]->load($resource[1], $locale, $resource[2]));
|
408 |
}
|
450 |
*
|
451 |
* @param string $locale Locale to tests
|
452 |
*
|
453 |
+
* @throws \InvalidArgumentException If the locale contains invalid characters
|
454 |
*/
|
455 |
protected function assertValidLocale($locale)
|
456 |
{
|
457 |
if (1 !== preg_match('/^[a-z0-9@_\\.\\-]*$/i', $locale)) {
|
458 |
+
throw new \InvalidArgumentException(sprintf('Invalid "%s" locale.', $locale));
|
459 |
}
|
460 |
}
|
461 |
|
src/common/lib/vendor/symfony/translation/TranslatorBagInterface.php
CHANGED
@@ -11,8 +11,6 @@
|
|
11 |
|
12 |
namespace Symfony\Component\Translation;
|
13 |
|
14 |
-
use Symfony\Component\Translation\Exception\InvalidArgumentException;
|
15 |
-
|
16 |
/**
|
17 |
* TranslatorBagInterface.
|
18 |
*
|
@@ -27,7 +25,7 @@ interface TranslatorBagInterface
|
|
27 |
*
|
28 |
* @return MessageCatalogueInterface
|
29 |
*
|
30 |
-
* @throws InvalidArgumentException If the locale contains invalid characters
|
31 |
*/
|
32 |
public function getCatalogue($locale = null);
|
33 |
}
|
11 |
|
12 |
namespace Symfony\Component\Translation;
|
13 |
|
|
|
|
|
14 |
/**
|
15 |
* TranslatorBagInterface.
|
16 |
*
|
25 |
*
|
26 |
* @return MessageCatalogueInterface
|
27 |
*
|
28 |
+
* @throws \InvalidArgumentException If the locale contains invalid characters
|
29 |
*/
|
30 |
public function getCatalogue($locale = null);
|
31 |
}
|
src/common/lib/vendor/symfony/translation/TranslatorInterface.php
CHANGED
@@ -11,8 +11,6 @@
|
|
11 |
|
12 |
namespace Symfony\Component\Translation;
|
13 |
|
14 |
-
use Symfony\Component\Translation\Exception\InvalidArgumentException;
|
15 |
-
|
16 |
/**
|
17 |
* TranslatorInterface.
|
18 |
*
|
@@ -30,7 +28,7 @@ interface TranslatorInterface
|
|
30 |
*
|
31 |
* @return string The translated string
|
32 |
*
|
33 |
-
* @throws InvalidArgumentException If the locale contains invalid characters
|
34 |
*/
|
35 |
public function trans($id, array $parameters = array(), $domain = null, $locale = null);
|
36 |
|
@@ -45,7 +43,7 @@ interface TranslatorInterface
|
|
45 |
*
|
46 |
* @return string The translated string
|
47 |
*
|
48 |
-
* @throws InvalidArgumentException If the locale contains invalid characters
|
49 |
*/
|
50 |
public function transChoice($id, $number, array $parameters = array(), $domain = null, $locale = null);
|
51 |
|
@@ -54,7 +52,7 @@ interface TranslatorInterface
|
|
54 |
*
|
55 |
* @param string $locale The locale
|
56 |
*
|
57 |
-
* @throws InvalidArgumentException If the locale contains invalid characters
|
58 |
*/
|
59 |
public function setLocale($locale);
|
60 |
|
11 |
|
12 |
namespace Symfony\Component\Translation;
|
13 |
|
|
|
|
|
14 |
/**
|
15 |
* TranslatorInterface.
|
16 |
*
|
28 |
*
|
29 |
* @return string The translated string
|
30 |
*
|
31 |
+
* @throws \InvalidArgumentException If the locale contains invalid characters
|
32 |
*/
|
33 |
public function trans($id, array $parameters = array(), $domain = null, $locale = null);
|
34 |
|
43 |
*
|
44 |
* @return string The translated string
|
45 |
*
|
46 |
+
* @throws \InvalidArgumentException If the locale contains invalid characters
|
47 |
*/
|
48 |
public function transChoice($id, $number, array $parameters = array(), $domain = null, $locale = null);
|
49 |
|
52 |
*
|
53 |
* @param string $locale The locale
|
54 |
*
|
55 |
+
* @throws \InvalidArgumentException If the locale contains invalid characters
|
56 |
*/
|
57 |
public function setLocale($locale);
|
58 |
|
src/common/lib/vendor/symfony/translation/Writer/TranslationWriter.php
CHANGED
@@ -13,15 +13,13 @@ namespace Symfony\Component\Translation\Writer;
|
|
13 |
|
14 |
use Symfony\Component\Translation\MessageCatalogue;
|
15 |
use Symfony\Component\Translation\Dumper\DumperInterface;
|
16 |
-
use Symfony\Component\Translation\Exception\InvalidArgumentException;
|
17 |
-
use Symfony\Component\Translation\Exception\RuntimeException;
|
18 |
|
19 |
/**
|
20 |
* TranslationWriter writes translation messages.
|
21 |
*
|
22 |
* @author Michel Salib <michelsalib@hotmail.com>
|
23 |
*/
|
24 |
-
class TranslationWriter
|
25 |
{
|
26 |
private $dumpers = array();
|
27 |
|
@@ -61,43 +59,26 @@ class TranslationWriter implements TranslationWriterInterface
|
|
61 |
/**
|
62 |
* Writes translation from the catalogue according to the selected format.
|
63 |
*
|
64 |
-
* @param MessageCatalogue $catalogue The message catalogue to
|
65 |
* @param string $format The format to use to dump the messages
|
66 |
* @param array $options Options that are passed to the dumper
|
67 |
*
|
68 |
-
* @throws InvalidArgumentException
|
69 |
*/
|
70 |
-
public function
|
71 |
{
|
72 |
if (!isset($this->dumpers[$format])) {
|
73 |
-
throw new InvalidArgumentException(sprintf('There is no dumper associated with format "%s".', $format));
|
74 |
}
|
75 |
|
76 |
// get the right dumper
|
77 |
$dumper = $this->dumpers[$format];
|
78 |
|
79 |
if (isset($options['path']) && !is_dir($options['path']) && !@mkdir($options['path'], 0777, true) && !is_dir($options['path'])) {
|
80 |
-
throw new RuntimeException(sprintf('Translation Writer was not able to create directory "%s"', $options['path']));
|
81 |
}
|
82 |
|
83 |
// save
|
84 |
$dumper->dump($catalogue, $options);
|
85 |
}
|
86 |
-
|
87 |
-
/**
|
88 |
-
* Writes translation from the catalogue according to the selected format.
|
89 |
-
*
|
90 |
-
* @param MessageCatalogue $catalogue The message catalogue to write
|
91 |
-
* @param string $format The format to use to dump the messages
|
92 |
-
* @param array $options Options that are passed to the dumper
|
93 |
-
*
|
94 |
-
* @throws InvalidArgumentException
|
95 |
-
*
|
96 |
-
* @deprecated since 3.4 will be removed in 4.0. Use write instead.
|
97 |
-
*/
|
98 |
-
public function writeTranslations(MessageCatalogue $catalogue, $format, $options = array())
|
99 |
-
{
|
100 |
-
@trigger_error(sprintf('Method %s() is deprecated since Symfony 3.4 and will be removed in 4.0. Use write() instead.', __METHOD__), E_USER_DEPRECATED);
|
101 |
-
$this->write($catalogue, $format, $options);
|
102 |
-
}
|
103 |
}
|
13 |
|
14 |
use Symfony\Component\Translation\MessageCatalogue;
|
15 |
use Symfony\Component\Translation\Dumper\DumperInterface;
|
|
|
|
|
16 |
|
17 |
/**
|
18 |
* TranslationWriter writes translation messages.
|
19 |
*
|
20 |
* @author Michel Salib <michelsalib@hotmail.com>
|
21 |
*/
|
22 |
+
class TranslationWriter
|
23 |
{
|
24 |
private $dumpers = array();
|
25 |
|
59 |
/**
|
60 |
* Writes translation from the catalogue according to the selected format.
|
61 |
*
|
62 |
+
* @param MessageCatalogue $catalogue The message catalogue to dump
|
63 |
* @param string $format The format to use to dump the messages
|
64 |
* @param array $options Options that are passed to the dumper
|
65 |
*
|
66 |
+
* @throws \InvalidArgumentException
|
67 |
*/
|
68 |
+
public function writeTranslations(MessageCatalogue $catalogue, $format, $options = array())
|
69 |
{
|
70 |
if (!isset($this->dumpers[$format])) {
|
71 |
+
throw new \InvalidArgumentException(sprintf('There is no dumper associated with format "%s".', $format));
|
72 |
}
|
73 |
|
74 |
// get the right dumper
|
75 |
$dumper = $this->dumpers[$format];
|
76 |
|
77 |
if (isset($options['path']) && !is_dir($options['path']) && !@mkdir($options['path'], 0777, true) && !is_dir($options['path'])) {
|
78 |
+
throw new \RuntimeException(sprintf('Translation Writer was not able to create directory "%s"', $options['path']));
|
79 |
}
|
80 |
|
81 |
// save
|
82 |
$dumper->dump($catalogue, $options);
|
83 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
84 |
}
|
src/common/lib/vendor/symfony/translation/Writer/TranslationWriterInterface.php
DELETED
@@ -1,34 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/*
|
4 |
-
* This file is part of the Symfony package.
|
5 |
-
*
|
6 |
-
* (c) Fabien Potencier <fabien@symfony.com>
|
7 |
-
*
|
8 |
-
* For the full copyright and license information, please view the LICENSE
|
9 |
-
* file that was distributed with this source code.
|
10 |
-
*/
|
11 |
-
|
12 |
-
namespace Symfony\Component\Translation\Writer;
|
13 |
-
|
14 |
-
use Symfony\Component\Translation\Exception\InvalidArgumentException;
|
15 |
-
use Symfony\Component\Translation\MessageCatalogue;
|
16 |
-
|
17 |
-
/**
|
18 |
-
* TranslationWriter writes translation messages.
|
19 |
-
*
|
20 |
-
* @author Michel Salib <michelsalib@hotmail.com>
|
21 |
-
*/
|
22 |
-
interface TranslationWriterInterface
|
23 |
-
{
|
24 |
-
/**
|
25 |
-
* Writes translation from the catalogue according to the selected format.
|
26 |
-
*
|
27 |
-
* @param MessageCatalogue $catalogue The message catalogue to write
|
28 |
-
* @param string $format The format to use to dump the messages
|
29 |
-
* @param array $options Options that are passed to the dumper
|
30 |
-
*
|
31 |
-
* @throws InvalidArgumentException
|
32 |
-
*/
|
33 |
-
public function write(MessageCatalogue $catalogue, $format, $options = array());
|
34 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/common/lib/vendor/symfony/translation/composer.json
CHANGED
@@ -16,21 +16,17 @@
|
|
16 |
}
|
17 |
],
|
18 |
"require": {
|
19 |
-
"php": "
|
20 |
"symfony/polyfill-mbstring": "~1.0"
|
21 |
},
|
22 |
"require-dev": {
|
23 |
-
"symfony/config": "~2.8
|
24 |
-
"symfony/
|
25 |
-
"symfony/
|
26 |
-
"symfony/yaml": "~3.4|~4.0",
|
27 |
-
"symfony/finder": "~2.8|~3.0|~4.0",
|
28 |
"psr/log": "~1.0"
|
29 |
},
|
30 |
"conflict": {
|
31 |
-
"symfony/config": "<2.
|
32 |
-
"symfony/dependency-injection": "<3.4",
|
33 |
-
"symfony/yaml": "<3.4"
|
34 |
},
|
35 |
"suggest": {
|
36 |
"symfony/config": "",
|
@@ -46,7 +42,7 @@
|
|
46 |
"minimum-stability": "dev",
|
47 |
"extra": {
|
48 |
"branch-alias": {
|
49 |
-
"dev-master": "
|
50 |
}
|
51 |
}
|
52 |
}
|
16 |
}
|
17 |
],
|
18 |
"require": {
|
19 |
+
"php": ">=5.3.9",
|
20 |
"symfony/polyfill-mbstring": "~1.0"
|
21 |
},
|
22 |
"require-dev": {
|
23 |
+
"symfony/config": "~2.8",
|
24 |
+
"symfony/intl": "~2.7.25|^2.8.18|~3.2.5",
|
25 |
+
"symfony/yaml": "~2.2|~3.0.0",
|
|
|
|
|
26 |
"psr/log": "~1.0"
|
27 |
},
|
28 |
"conflict": {
|
29 |
+
"symfony/config": "<2.7"
|
|
|
|
|
30 |
},
|
31 |
"suggest": {
|
32 |
"symfony/config": "",
|
42 |
"minimum-stability": "dev",
|
43 |
"extra": {
|
44 |
"branch-alias": {
|
45 |
+
"dev-master": "2.8-dev"
|
46 |
}
|
47 |
}
|
48 |
}
|
src/common/lib/vendor/twig/twig/lib/Twig/Compiler.php
CHANGED
@@ -25,6 +25,7 @@ class Twig_Compiler implements Twig_CompilerInterface
|
|
25 |
protected $sourceOffset;
|
26 |
protected $sourceLine;
|
27 |
protected $filename;
|
|
|
28 |
|
29 |
public function __construct(Twig_Environment $env)
|
30 |
{
|
@@ -78,6 +79,7 @@ class Twig_Compiler implements Twig_CompilerInterface
|
|
78 |
// source code starts at 1 (as we then increment it when we encounter new lines)
|
79 |
$this->sourceLine = 1;
|
80 |
$this->indentation = $indentation;
|
|
|
81 |
|
82 |
if ($node instanceof Twig_Node_Module) {
|
83 |
// to be removed in 2.0
|
@@ -276,7 +278,7 @@ class Twig_Compiler implements Twig_CompilerInterface
|
|
276 |
|
277 |
public function getVarName()
|
278 |
{
|
279 |
-
return sprintf('__internal_%s', hash('sha256',
|
280 |
}
|
281 |
}
|
282 |
|
25 |
protected $sourceOffset;
|
26 |
protected $sourceLine;
|
27 |
protected $filename;
|
28 |
+
private $varNameSalt = 0;
|
29 |
|
30 |
public function __construct(Twig_Environment $env)
|
31 |
{
|
79 |
// source code starts at 1 (as we then increment it when we encounter new lines)
|
80 |
$this->sourceLine = 1;
|
81 |
$this->indentation = $indentation;
|
82 |
+
$this->varNameSalt = 0;
|
83 |
|
84 |
if ($node instanceof Twig_Node_Module) {
|
85 |
// to be removed in 2.0
|
278 |
|
279 |
public function getVarName()
|
280 |
{
|
281 |
+
return sprintf('__internal_%s', hash('sha256', __METHOD__.$this->varNameSalt++));
|
282 |
}
|
283 |
}
|
284 |
|
src/common/lib/vendor/twig/twig/lib/Twig/Environment.php
CHANGED
@@ -16,11 +16,11 @@
|
|
16 |
*/
|
17 |
class Twig_Environment
|
18 |
{
|
19 |
-
const VERSION = '1.35.
|
20 |
-
const VERSION_ID =
|
21 |
const MAJOR_VERSION = 1;
|
22 |
const MINOR_VERSION = 35;
|
23 |
-
const RELEASE_VERSION =
|
24 |
const EXTRA_VERSION = '';
|
25 |
|
26 |
protected $charset;
|
@@ -132,14 +132,14 @@ class Twig_Environment
|
|
132 |
// For BC
|
133 |
if (is_string($this->originalCache)) {
|
134 |
$r = new ReflectionMethod($this, 'writeCacheFile');
|
135 |
-
if ($r->getDeclaringClass()->getName()
|
136 |
@trigger_error('The Twig_Environment::writeCacheFile method is deprecated since version 1.22 and will be removed in Twig 2.0.', E_USER_DEPRECATED);
|
137 |
|
138 |
$this->bcWriteCacheFile = true;
|
139 |
}
|
140 |
|
141 |
$r = new ReflectionMethod($this, 'getCacheFilename');
|
142 |
-
if ($r->getDeclaringClass()->getName()
|
143 |
@trigger_error('The Twig_Environment::getCacheFilename method is deprecated since version 1.22 and will be removed in Twig 2.0.', E_USER_DEPRECATED);
|
144 |
|
145 |
$this->bcGetCacheFilename = true;
|
@@ -562,12 +562,12 @@ class Twig_Environment
|
|
562 |
/**
|
563 |
* Tries to load a template consecutively from an array.
|
564 |
*
|
565 |
-
* Similar to loadTemplate() but it also accepts
|
566 |
-
* of templates where each is tried to be loaded.
|
567 |
*
|
568 |
-
* @param string|Twig_Template|array $names A template or an array of templates to try consecutively
|
569 |
*
|
570 |
-
* @return Twig_Template
|
571 |
*
|
572 |
* @throws Twig_Error_Loader When none of the templates can be found
|
573 |
* @throws Twig_Error_Syntax When an error occurred during compilation
|
@@ -583,6 +583,10 @@ class Twig_Environment
|
|
583 |
return $name;
|
584 |
}
|
585 |
|
|
|
|
|
|
|
|
|
586 |
try {
|
587 |
return $this->loadTemplate($name);
|
588 |
} catch (Twig_Error_Loader $e) {
|
16 |
*/
|
17 |
class Twig_Environment
|
18 |
{
|
19 |
+
const VERSION = '1.35.2';
|
20 |
+
const VERSION_ID = 13501;
|
21 |
const MAJOR_VERSION = 1;
|
22 |
const MINOR_VERSION = 35;
|
23 |
+
const RELEASE_VERSION = 1;
|
24 |
const EXTRA_VERSION = '';
|
25 |
|
26 |
protected $charset;
|
132 |
// For BC
|
133 |
if (is_string($this->originalCache)) {
|
134 |
$r = new ReflectionMethod($this, 'writeCacheFile');
|
135 |
+
if (__CLASS__ !== $r->getDeclaringClass()->getName()) {
|
136 |
@trigger_error('The Twig_Environment::writeCacheFile method is deprecated since version 1.22 and will be removed in Twig 2.0.', E_USER_DEPRECATED);
|
137 |
|
138 |
$this->bcWriteCacheFile = true;
|
139 |
}
|
140 |
|
141 |
$r = new ReflectionMethod($this, 'getCacheFilename');
|
142 |
+
if (__CLASS__ !== $r->getDeclaringClass()->getName()) {
|
143 |
@trigger_error('The Twig_Environment::getCacheFilename method is deprecated since version 1.22 and will be removed in Twig 2.0.', E_USER_DEPRECATED);
|
144 |
|
145 |
$this->bcGetCacheFilename = true;
|
562 |
/**
|
563 |
* Tries to load a template consecutively from an array.
|
564 |
*
|
565 |
+
* Similar to loadTemplate() but it also accepts instances of Twig_Template and
|
566 |
+
* Twig_TemplateWrapper, and an array of templates where each is tried to be loaded.
|
567 |
*
|
568 |
+
* @param string|Twig_Template|Twig_TemplateWrapper|array $names A template or an array of templates to try consecutively
|
569 |
*
|
570 |
+
* @return Twig_Template|Twig_TemplateWrapper
|
571 |
*
|
572 |
* @throws Twig_Error_Loader When none of the templates can be found
|
573 |
* @throws Twig_Error_Syntax When an error occurred during compilation
|
583 |
return $name;
|
584 |
}
|
585 |
|
586 |
+
if ($name instanceof Twig_TemplateWrapper) {
|
587 |
+
return $name;
|
588 |
+
}
|
589 |
+
|
590 |
try {
|
591 |
return $this->loadTemplate($name);
|
592 |
} catch (Twig_Error_Loader $e) {
|
src/common/lib/vendor/twig/twig/lib/Twig/ExpressionParser.php
CHANGED
@@ -199,11 +199,14 @@ class Twig_ExpressionParser
|
|
199 |
break;
|
200 |
}
|
201 |
|
|
|
202 |
default:
|
203 |
if ($token->test(Twig_Token::PUNCTUATION_TYPE, '[')) {
|
204 |
$node = $this->parseArrayExpression();
|
205 |
} elseif ($token->test(Twig_Token::PUNCTUATION_TYPE, '{')) {
|
206 |
$node = $this->parseHashExpression();
|
|
|
|
|
207 |
} else {
|
208 |
throw new Twig_Error_Syntax(sprintf('Unexpected token "%s" of value "%s".', Twig_Token::typeToEnglish($token->getType()), $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext());
|
209 |
}
|
@@ -313,7 +316,7 @@ class Twig_ExpressionParser
|
|
313 |
{
|
314 |
while (true) {
|
315 |
$token = $this->parser->getCurrentToken();
|
316 |
-
if ($token->getType()
|
317 |
if ('.' == $token->getValue() || '[' == $token->getValue()) {
|
318 |
$node = $this->parseSubscriptExpression($node);
|
319 |
} elseif ('|' == $token->getValue()) {
|
@@ -384,14 +387,14 @@ class Twig_ExpressionParser
|
|
384 |
$lineno = $token->getLine();
|
385 |
$arguments = new Twig_Node_Expression_Array(array(), $lineno);
|
386 |
$type = Twig_Template::ANY_CALL;
|
387 |
-
if ($token->getValue()
|
388 |
$token = $stream->next();
|
389 |
if (
|
390 |
-
$token->getType()
|
391 |
||
|
392 |
-
$token->getType()
|
393 |
||
|
394 |
-
($token->getType()
|
395 |
) {
|
396 |
$arg = new Twig_Node_Expression_Constant($token->getValue(), $lineno);
|
397 |
|
199 |
break;
|
200 |
}
|
201 |
|
202 |
+
// no break
|
203 |
default:
|
204 |
if ($token->test(Twig_Token::PUNCTUATION_TYPE, '[')) {
|
205 |
$node = $this->parseArrayExpression();
|
206 |
} elseif ($token->test(Twig_Token::PUNCTUATION_TYPE, '{')) {
|
207 |
$node = $this->parseHashExpression();
|
208 |
+
} elseif ($token->test(Twig_Token::OPERATOR_TYPE, '=') && ('==' === $this->parser->getStream()->look(-1)->getValue() || '!=' === $this->parser->getStream()->look(-1)->getValue())) {
|
209 |
+
throw new Twig_Error_Syntax(sprintf('Unexpected operator of value "%s". Did you try to use "===" or "!==" for strict comparison? Use "is same as(value)" instead.', $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext());
|
210 |
} else {
|
211 |
throw new Twig_Error_Syntax(sprintf('Unexpected token "%s" of value "%s".', Twig_Token::typeToEnglish($token->getType()), $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext());
|
212 |
}
|
316 |
{
|
317 |
while (true) {
|
318 |
$token = $this->parser->getCurrentToken();
|
319 |
+
if (Twig_Token::PUNCTUATION_TYPE == $token->getType()) {
|
320 |
if ('.' == $token->getValue() || '[' == $token->getValue()) {
|
321 |
$node = $this->parseSubscriptExpression($node);
|
322 |
} elseif ('|' == $token->getValue()) {
|
387 |
$lineno = $token->getLine();
|
388 |
$arguments = new Twig_Node_Expression_Array(array(), $lineno);
|
389 |
$type = Twig_Template::ANY_CALL;
|
390 |
+
if ('.' == $token->getValue()) {
|
391 |
$token = $stream->next();
|
392 |
if (
|
393 |
+
Twig_Token::NAME_TYPE == $token->getType()
|
394 |
||
|
395 |
+
Twig_Token::NUMBER_TYPE == $token->getType()
|
396 |
||
|
397 |
+
(Twig_Token::OPERATOR_TYPE == $token->getType() && preg_match(Twig_Lexer::REGEX_NAME, $token->getValue()))
|
398 |
) {
|
399 |
$arg = new Twig_Node_Expression_Constant($token->getValue(), $lineno);
|
400 |
|
src/common/lib/vendor/twig/twig/lib/Twig/Extension/Core.php
CHANGED
@@ -661,7 +661,7 @@ function twig_slice(Twig_Environment $env, $item, $start, $length = null, $prese
|
|
661 |
|
662 |
if ($start >= 0 && $length >= 0 && $item instanceof Iterator) {
|
663 |
try {
|
664 |
-
return iterator_to_array(new LimitIterator($item, $start,
|
665 |
} catch (OutOfBoundsException $exception) {
|
666 |
return array();
|
667 |
}
|
@@ -1216,7 +1216,7 @@ function _twig_escape_html_attr_callback($matches)
|
|
1216 |
* The following replaces characters undefined in HTML with the
|
1217 |
* hex entity for the Unicode replacement character.
|
1218 |
*/
|
1219 |
-
if (($ord <= 0x1f &&
|
1220 |
return '�';
|
1221 |
}
|
1222 |
|
@@ -1224,7 +1224,7 @@ function _twig_escape_html_attr_callback($matches)
|
|
1224 |
* Check if the current character to escape has a name entity we should
|
1225 |
* replace it with while grabbing the hex value of the character.
|
1226 |
*/
|
1227 |
-
if (strlen($chr)
|
1228 |
$hex = strtoupper(substr('00'.bin2hex($chr), -2));
|
1229 |
} else {
|
1230 |
$chr = twig_convert_encoding($chr, 'UTF-16BE', 'UTF-8');
|
@@ -1271,6 +1271,10 @@ if (function_exists('mb_get_info')) {
|
|
1271 |
return count($thing);
|
1272 |
}
|
1273 |
|
|
|
|
|
|
|
|
|
1274 |
return 1;
|
1275 |
}
|
1276 |
|
@@ -1370,6 +1374,10 @@ else {
|
|
1370 |
return count($thing);
|
1371 |
}
|
1372 |
|
|
|
|
|
|
|
|
|
1373 |
return 1;
|
1374 |
}
|
1375 |
|
@@ -1444,7 +1452,7 @@ function twig_test_empty($value)
|
|
1444 |
*
|
1445 |
* <pre>
|
1446 |
* {# evaluates to true if the foo variable is an array or a traversable object #}
|
1447 |
-
* {% if foo is
|
1448 |
* {# ... #}
|
1449 |
* {% endif %}
|
1450 |
* </pre>
|
661 |
|
662 |
if ($start >= 0 && $length >= 0 && $item instanceof Iterator) {
|
663 |
try {
|
664 |
+
return iterator_to_array(new LimitIterator($item, $start, null === $length ? -1 : $length), $preserveKeys);
|
665 |
} catch (OutOfBoundsException $exception) {
|
666 |
return array();
|
667 |
}
|
1216 |
* The following replaces characters undefined in HTML with the
|
1217 |
* hex entity for the Unicode replacement character.
|
1218 |
*/
|
1219 |
+
if (($ord <= 0x1f && "\t" != $chr && "\n" != $chr && "\r" != $chr) || ($ord >= 0x7f && $ord <= 0x9f)) {
|
1220 |
return '�';
|
1221 |
}
|
1222 |
|
1224 |
* Check if the current character to escape has a name entity we should
|
1225 |
* replace it with while grabbing the hex value of the character.
|
1226 |
*/
|
1227 |
+
if (1 == strlen($chr)) {
|
1228 |
$hex = strtoupper(substr('00'.bin2hex($chr), -2));
|
1229 |
} else {
|
1230 |
$chr = twig_convert_encoding($chr, 'UTF-16BE', 'UTF-8');
|
1271 |
return count($thing);
|
1272 |
}
|
1273 |
|
1274 |
+
if ($thing instanceof \IteratorAggregate) {
|
1275 |
+
return iterator_count($thing);
|
1276 |
+
}
|
1277 |
+
|
1278 |
return 1;
|
1279 |
}
|
1280 |
|
1374 |
return count($thing);
|
1375 |
}
|
1376 |
|
1377 |
+
if ($thing instanceof \IteratorAggregate) {
|
1378 |
+
return iterator_count($thing);
|
1379 |
+
}
|
1380 |
+
|
1381 |
return 1;
|
1382 |
}
|
1383 |
|
1452 |
*
|
1453 |
* <pre>
|
1454 |
* {# evaluates to true if the foo variable is an array or a traversable object #}
|
1455 |
+
* {% if foo is iterable %}
|
1456 |
* {# ... #}
|
1457 |
* {% endif %}
|
1458 |
* </pre>
|
src/common/lib/vendor/twig/twig/lib/Twig/Lexer.php
CHANGED
@@ -235,7 +235,7 @@ class Twig_Lexer implements Twig_LexerInterface
|
|
235 |
$this->moveCursor($match[0]);
|
236 |
|
237 |
if ($this->cursor >= $this->end) {
|
238 |
-
throw new Twig_Error_Syntax(sprintf('Unclosed "%s".', $this->state
|
239 |
}
|
240 |
}
|
241 |
|
@@ -337,7 +337,7 @@ class Twig_Lexer implements Twig_LexerInterface
|
|
337 |
$this->moveCursor($match[0]);
|
338 |
} elseif (preg_match(self::REGEX_DQ_STRING_DELIM, $this->code, $match, null, $this->cursor)) {
|
339 |
list($expect, $lineno) = array_pop($this->brackets);
|
340 |
-
if ($this->code[$this->cursor]
|
341 |
throw new Twig_Error_Syntax(sprintf('Unclosed "%s".', $expect), $lineno, $this->source);
|
342 |
}
|
343 |
|
235 |
$this->moveCursor($match[0]);
|
236 |
|
237 |
if ($this->cursor >= $this->end) {
|
238 |
+
throw new Twig_Error_Syntax(sprintf('Unclosed "%s".', self::STATE_BLOCK === $this->state ? 'block' : 'variable'), $this->currentVarBlockLine, $this->source);
|
239 |
}
|
240 |
}
|
241 |
|
337 |
$this->moveCursor($match[0]);
|
338 |
} elseif (preg_match(self::REGEX_DQ_STRING_DELIM, $this->code, $match, null, $this->cursor)) {
|
339 |
list($expect, $lineno) = array_pop($this->brackets);
|
340 |
+
if ('"' != $this->code[$this->cursor]) {
|
341 |
throw new Twig_Error_Syntax(sprintf('Unclosed "%s".', $expect), $lineno, $this->source);
|
342 |
}
|
343 |
|
src/common/lib/vendor/twig/twig/lib/Twig/Loader/Filesystem.php
CHANGED
@@ -279,7 +279,7 @@ class Twig_Loader_Filesystem implements Twig_LoaderInterface, Twig_ExistsLoaderI
|
|
279 |
{
|
280 |
return strspn($file, '/\\', 0, 1)
|
281 |
|| (strlen($file) > 3 && ctype_alpha($file[0])
|
282 |
-
&& substr($file, 1, 1)
|
283 |
&& strspn($file, '/\\', 2, 1)
|
284 |
)
|
285 |
|| null !== parse_url($file, PHP_URL_SCHEME)
|
279 |
{
|
280 |
return strspn($file, '/\\', 0, 1)
|
281 |
|| (strlen($file) > 3 && ctype_alpha($file[0])
|
282 |
+
&& ':' === substr($file, 1, 1)
|
283 |
&& strspn($file, '/\\', 2, 1)
|
284 |
)
|
285 |
|| null !== parse_url($file, PHP_URL_SCHEME)
|
src/common/lib/vendor/twig/twig/lib/Twig/NodeVisitor/Optimizer.php
CHANGED
@@ -56,7 +56,7 @@ class Twig_NodeVisitor_Optimizer extends Twig_BaseNodeVisitor
|
|
56 |
if (PHP_VERSION_ID < 50400 && self::OPTIMIZE_VAR_ACCESS === (self::OPTIMIZE_VAR_ACCESS & $this->optimizers) && !$env->isStrictVariables() && !$env->hasExtension('Twig_Extension_Sandbox')) {
|
57 |
if ($this->inABody) {
|
58 |
if (!$node instanceof Twig_Node_Expression) {
|
59 |
-
if (get_class($node)
|
60 |
array_unshift($this->prependedNodes, array());
|
61 |
}
|
62 |
} else {
|
@@ -88,7 +88,7 @@ class Twig_NodeVisitor_Optimizer extends Twig_BaseNodeVisitor
|
|
88 |
if ($node instanceof Twig_Node_Body) {
|
89 |
$this->inABody = false;
|
90 |
} elseif ($this->inABody) {
|
91 |
-
if (!$expression && get_class($node)
|
92 |
$nodes = array();
|
93 |
foreach (array_unique($prependedNodes) as $name) {
|
94 |
$nodes[] = new Twig_Node_SetTemp($name, $node->getTemplateLine());
|
56 |
if (PHP_VERSION_ID < 50400 && self::OPTIMIZE_VAR_ACCESS === (self::OPTIMIZE_VAR_ACCESS & $this->optimizers) && !$env->isStrictVariables() && !$env->hasExtension('Twig_Extension_Sandbox')) {
|
57 |
if ($this->inABody) {
|
58 |
if (!$node instanceof Twig_Node_Expression) {
|
59 |
+
if ('Twig_Node' !== get_class($node)) {
|
60 |
array_unshift($this->prependedNodes, array());
|
61 |
}
|
62 |
} else {
|
88 |
if ($node instanceof Twig_Node_Body) {
|
89 |
$this->inABody = false;
|
90 |
} elseif ($this->inABody) {
|
91 |
+
if (!$expression && 'Twig_Node' !== get_class($node) && $prependedNodes = array_shift($this->prependedNodes)) {
|
92 |
$nodes = array();
|
93 |
foreach (array_unique($prependedNodes) as $name) {
|
94 |
$nodes[] = new Twig_Node_SetTemp($name, $node->getTemplateLine());
|
src/common/lib/vendor/twig/twig/lib/Twig/Parser.php
CHANGED
@@ -31,6 +31,7 @@ class Twig_Parser implements Twig_ParserInterface
|
|
31 |
protected $importedSymbols;
|
32 |
protected $traits;
|
33 |
protected $embeddedTemplates = array();
|
|
|
34 |
|
35 |
public function __construct(Twig_Environment $env)
|
36 |
{
|
@@ -49,7 +50,7 @@ class Twig_Parser implements Twig_ParserInterface
|
|
49 |
|
50 |
public function getVarName()
|
51 |
{
|
52 |
-
return sprintf('__internal_%s', hash('sha256',
|
53 |
}
|
54 |
|
55 |
/**
|
@@ -98,6 +99,7 @@ class Twig_Parser implements Twig_ParserInterface
|
|
98 |
$this->blockStack = array();
|
99 |
$this->importedSymbols = array(array());
|
100 |
$this->embeddedTemplates = array();
|
|
|
101 |
|
102 |
try {
|
103 |
$body = $this->subparse($test, $dropNeedle);
|
@@ -153,7 +155,7 @@ class Twig_Parser implements Twig_ParserInterface
|
|
153 |
$this->stream->next();
|
154 |
$token = $this->getCurrentToken();
|
155 |
|
156 |
-
if ($token->getType()
|
157 |
throw new Twig_Error_Syntax('A block must start with a tag name.', $token->getLine(), $this->stream->getSourceContext());
|
158 |
}
|
159 |
|
@@ -383,7 +385,7 @@ class Twig_Parser implements Twig_ParserInterface
|
|
383 |
throw new Twig_Error_Syntax('A template that extends another one cannot start with a byte order mark (BOM); it must be removed.', $node->getTemplateLine(), $this->stream->getSourceContext());
|
384 |
}
|
385 |
|
386 |
-
throw new Twig_Error_Syntax('A template that extends another one cannot include
|
387 |
}
|
388 |
|
389 |
// bypass nodes that will "capture" the output
|
31 |
protected $importedSymbols;
|
32 |
protected $traits;
|
33 |
protected $embeddedTemplates = array();
|
34 |
+
private $varNameSalt = 0;
|
35 |
|
36 |
public function __construct(Twig_Environment $env)
|
37 |
{
|
50 |
|
51 |
public function getVarName()
|
52 |
{
|
53 |
+
return sprintf('__internal_%s', hash('sha256', __METHOD__.$this->varNameSalt++));
|
54 |
}
|
55 |
|
56 |
/**
|
99 |
$this->blockStack = array();
|
100 |
$this->importedSymbols = array(array());
|
101 |
$this->embeddedTemplates = array();
|
102 |
+
$this->varNameSalt = 0;
|
103 |
|
104 |
try {
|
105 |
$body = $this->subparse($test, $dropNeedle);
|
155 |
$this->stream->next();
|
156 |
$token = $this->getCurrentToken();
|
157 |
|
158 |
+
if (Twig_Token::NAME_TYPE !== $token->getType()) {
|
159 |
throw new Twig_Error_Syntax('A block must start with a tag name.', $token->getLine(), $this->stream->getSourceContext());
|
160 |
}
|
161 |
|
385 |
throw new Twig_Error_Syntax('A template that extends another one cannot start with a byte order mark (BOM); it must be removed.', $node->getTemplateLine(), $this->stream->getSourceContext());
|
386 |
}
|
387 |
|
388 |
+
throw new Twig_Error_Syntax('A template that extends another one cannot include content outside Twig blocks. Did you forget to put the content inside a {% block %} tag?', $node->getTemplateLine(), $this->stream->getSourceContext());
|
389 |
}
|
390 |
|
391 |
// bypass nodes that will "capture" the output
|
src/common/lib/vendor/twig/twig/lib/Twig/Profiler/NodeVisitor/Profiler.php
CHANGED
@@ -55,7 +55,7 @@ class Twig_Profiler_NodeVisitor_Profiler extends Twig_BaseNodeVisitor
|
|
55 |
|
56 |
private function getVarName()
|
57 |
{
|
58 |
-
return sprintf('__internal_%s', hash('sha256',
|
59 |
}
|
60 |
|
61 |
public function getPriority()
|
55 |
|
56 |
private function getVarName()
|
57 |
{
|
58 |
+
return sprintf('__internal_%s', hash('sha256', $this->extensionName));
|
59 |
}
|
60 |
|
61 |
public function getPriority()
|
src/common/lib/vendor/twig/twig/lib/Twig/Template.php
CHANGED
@@ -568,6 +568,8 @@ abstract class Twig_Template implements Twig_TemplateInterface
|
|
568 |
|
569 |
if (null === $object) {
|
570 |
$message = sprintf('Impossible to invoke a method ("%s") on a null variable.', $item);
|
|
|
|
|
571 |
} else {
|
572 |
$message = sprintf('Impossible to invoke a method ("%s") on a %s variable ("%s").', $item, gettype($object), $object);
|
573 |
}
|
@@ -696,7 +698,7 @@ abstract class Twig_Template implements Twig_TemplateInterface
|
|
696 |
}
|
697 |
@trigger_error($message, E_USER_DEPRECATED);
|
698 |
|
699 |
-
return
|
700 |
}
|
701 |
|
702 |
return $ret;
|
568 |
|
569 |
if (null === $object) {
|
570 |
$message = sprintf('Impossible to invoke a method ("%s") on a null variable.', $item);
|
571 |
+
} elseif (is_array($object)) {
|
572 |
+
$message = sprintf('Impossible to invoke a method ("%s") on an array.', $item);
|
573 |
} else {
|
574 |
$message = sprintf('Impossible to invoke a method ("%s") on a %s variable ("%s").', $item, gettype($object), $object);
|
575 |
}
|
698 |
}
|
699 |
@trigger_error($message, E_USER_DEPRECATED);
|
700 |
|
701 |
+
return '' === $ret ? '' : new Twig_Markup($ret, $this->env->getCharset());
|
702 |
}
|
703 |
|
704 |
return $ret;
|
src/common/lib/vendor/twig/twig/lib/Twig/TokenParser/For.php
CHANGED
@@ -40,7 +40,7 @@ class Twig_TokenParser_For extends Twig_TokenParser
|
|
40 |
|
41 |
$stream->expect(Twig_Token::BLOCK_END_TYPE);
|
42 |
$body = $this->parser->subparse(array($this, 'decideForFork'));
|
43 |
-
if ($stream->next()->getValue()
|
44 |
$stream->expect(Twig_Token::BLOCK_END_TYPE);
|
45 |
$else = $this->parser->subparse(array($this, 'decideForEnd'), true);
|
46 |
} else {
|
40 |
|
41 |
$stream->expect(Twig_Token::BLOCK_END_TYPE);
|
42 |
$body = $this->parser->subparse(array($this, 'decideForFork'));
|
43 |
+
if ('else' == $stream->next()->getValue()) {
|
44 |
$stream->expect(Twig_Token::BLOCK_END_TYPE);
|
45 |
$else = $this->parser->subparse(array($this, 'decideForEnd'), true);
|
46 |
} else {
|
src/common/lib/vendor/twig/twig/lib/Twig/TokenParserBroker.php
CHANGED
@@ -61,12 +61,12 @@ class Twig_TokenParserBroker implements Twig_TokenParserBrokerInterface
|
|
61 |
}
|
62 |
}
|
63 |
|
64 |
-
public function addTokenParserBroker(
|
65 |
{
|
66 |
$this->brokers[] = $broker;
|
67 |
}
|
68 |
|
69 |
-
public function removeTokenParserBroker(
|
70 |
{
|
71 |
if (false !== $pos = array_search($broker, $this->brokers)) {
|
72 |
unset($this->brokers[$pos]);
|
61 |
}
|
62 |
}
|
63 |
|
64 |
+
public function addTokenParserBroker(self $broker)
|
65 |
{
|
66 |
$this->brokers[] = $broker;
|
67 |
}
|
68 |
|
69 |
+
public function removeTokenParserBroker(self $broker)
|
70 |
{
|
71 |
if (false !== $pos = array_search($broker, $this->brokers)) {
|
72 |
unset($this->brokers[$pos]);
|
src/common/lib/vendor/twig/twig/lib/Twig/TokenStream.php
CHANGED
@@ -139,7 +139,7 @@ class Twig_TokenStream
|
|
139 |
*/
|
140 |
public function isEOF()
|
141 |
{
|
142 |
-
return $this->tokens[$this->current]->getType()
|
143 |
}
|
144 |
|
145 |
/**
|
139 |
*/
|
140 |
public function isEOF()
|
141 |
{
|
142 |
+
return Twig_Token::EOF_TYPE === $this->tokens[$this->current]->getType();
|
143 |
}
|
144 |
|
145 |
/**
|
src/common/wp-admin-notices.php
CHANGED
@@ -39,9 +39,30 @@ class ICWP_WPSF_WpAdminNotices extends ICWP_WPSF_Foundation {
|
|
39 |
add_action( 'admin_notices', array( $this, 'onWpAdminNotices' ) );
|
40 |
add_action( 'network_admin_notices', array( $this, 'onWpAdminNotices' ) );
|
41 |
add_action( 'wp_loaded', array( $this, 'flushFlashMessage' ) );
|
42 |
-
|
43 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
44 |
}
|
|
|
45 |
}
|
46 |
|
47 |
public function onWpAdminNotices() {
|
@@ -52,19 +73,6 @@ class ICWP_WPSF_WpAdminNotices extends ICWP_WPSF_Foundation {
|
|
52 |
$this->flashNotice();
|
53 |
}
|
54 |
|
55 |
-
public function ajaxDismissAdminNotice() {
|
56 |
-
|
57 |
-
if ( $this->checkAjaxNonce() ) {
|
58 |
-
// Get all notices and if this notice exists, we set it to "hidden"
|
59 |
-
$sNoticeId = sanitize_key( $this->loadDP()->query( 'notice_id', '' ) );
|
60 |
-
$aNotices = apply_filters( $this->getActionPrefix().'register_admin_notices', array() );
|
61 |
-
if ( !empty( $sNoticeId ) && array_key_exists( $sNoticeId, $aNotices ) ) {
|
62 |
-
$this->setMeta( $aNotices[ $sNoticeId ][ 'id' ] );
|
63 |
-
}
|
64 |
-
$this->sendAjaxResponse( true );
|
65 |
-
}
|
66 |
-
}
|
67 |
-
|
68 |
/**
|
69 |
* @param string $sNoticeId
|
70 |
* @return true
|
@@ -115,36 +123,6 @@ class ICWP_WPSF_WpAdminNotices extends ICWP_WPSF_Foundation {
|
|
115 |
return;
|
116 |
}
|
117 |
|
118 |
-
/**
|
119 |
-
* Will send ajax error response immediately upon failure
|
120 |
-
* @return bool
|
121 |
-
*/
|
122 |
-
protected function checkAjaxNonce() {
|
123 |
-
|
124 |
-
$sNonce = $this->loadDP()->FetchRequest( '_ajax_nonce', '' );
|
125 |
-
if ( empty( $sNonce ) ) {
|
126 |
-
$sMessage = 'Nonce security checking failed - the nonce value was empty.';
|
127 |
-
}
|
128 |
-
else if ( wp_verify_nonce( $sNonce, 'icwp_ajax' ) === false ) {
|
129 |
-
$sMessage = sprintf( 'Nonce security checking failed - the nonce supplied was "%s".', $sNonce );
|
130 |
-
}
|
131 |
-
else {
|
132 |
-
return true; // At this stage we passed the nonce check
|
133 |
-
}
|
134 |
-
|
135 |
-
// At this stage we haven't returned after success so we failed the nonce check
|
136 |
-
$this->sendAjaxResponse( false, array( 'message' => $sMessage ) );
|
137 |
-
return false; //unreachable
|
138 |
-
}
|
139 |
-
|
140 |
-
/**
|
141 |
-
* @param $bSuccess
|
142 |
-
* @param array $aData
|
143 |
-
*/
|
144 |
-
protected function sendAjaxResponse( $bSuccess, $aData = array() ) {
|
145 |
-
$bSuccess ? wp_send_json_success( $aData ) : wp_send_json_error( $aData );
|
146 |
-
}
|
147 |
-
|
148 |
/**
|
149 |
* @return string
|
150 |
*/
|
39 |
add_action( 'admin_notices', array( $this, 'onWpAdminNotices' ) );
|
40 |
add_action( 'network_admin_notices', array( $this, 'onWpAdminNotices' ) );
|
41 |
add_action( 'wp_loaded', array( $this, 'flushFlashMessage' ) );
|
42 |
+
}
|
43 |
+
|
44 |
+
/**
|
45 |
+
* @param array $aAjaxResponse
|
46 |
+
* @return array
|
47 |
+
*/
|
48 |
+
public function handleAuthAjax( $aAjaxResponse ) {
|
49 |
+
if ( empty( $aAjaxResponse ) && $this->loadDP()->request( 'exec' ) === 'dismiss_admin_notice' ) {
|
50 |
+
$aAjaxResponse = $this->ajaxExec_DismissAdminNotice();
|
51 |
+
}
|
52 |
+
return $aAjaxResponse;
|
53 |
+
}
|
54 |
+
|
55 |
+
/**
|
56 |
+
* @return array
|
57 |
+
*/
|
58 |
+
protected function ajaxExec_DismissAdminNotice() {
|
59 |
+
// Get all notices and if this notice exists, we set it to "hidden"
|
60 |
+
$sNoticeId = sanitize_key( $this->loadDP()->query( 'notice_id', '' ) );
|
61 |
+
$aNotices = apply_filters( $this->getActionPrefix().'register_admin_notices', array() );
|
62 |
+
if ( !empty( $sNoticeId ) && array_key_exists( $sNoticeId, $aNotices ) ) {
|
63 |
+
$this->setMeta( $aNotices[ $sNoticeId ][ 'id' ] );
|
64 |
}
|
65 |
+
return array( 'success' => true );
|
66 |
}
|
67 |
|
68 |
public function onWpAdminNotices() {
|
73 |
$this->flashNotice();
|
74 |
}
|
75 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
76 |
/**
|
77 |
* @param string $sNoticeId
|
78 |
* @return true
|
123 |
return;
|
124 |
}
|
125 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
126 |
/**
|
127 |
* @return string
|
128 |
*/
|
src/common/wp-comments.php
CHANGED
@@ -80,7 +80,6 @@ class ICWP_WPSF_WpComments extends ICWP_WPSF_Foundation {
|
|
80 |
* @return bool
|
81 |
*/
|
82 |
public function isCommentPost() {
|
83 |
-
return $this->
|
84 |
-
->getIsCurrentPage( 'wp-comments-post.php' );
|
85 |
}
|
86 |
}
|
80 |
* @return bool
|
81 |
*/
|
82 |
public function isCommentPost() {
|
83 |
+
return $this->loadDP()->isMethodPost() && $this->loadWp()->getIsCurrentPage( 'wp-comments-post.php' );
|
|
|
84 |
}
|
85 |
}
|
src/config/feature-admin_access_restriction.php
CHANGED
@@ -46,6 +46,14 @@
|
|
46 |
"Recommendation - Use of this feature is highly recommend."
|
47 |
]
|
48 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
49 |
{
|
50 |
"slug": "section_enable_plugin_feature_admin_access_restriction",
|
51 |
"title": "Enable Module: WordPress Security Admin",
|
@@ -203,6 +211,85 @@
|
|
203 |
"link_blog": "http://icwp.io/wpsf21",
|
204 |
"summary": "Restrict Access To Key WordPress Posts And Pages Actions",
|
205 |
"description": "Careful: This will restrict access to page/post creation, editing and deletion."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
206 |
}
|
207 |
],
|
208 |
"definitions": {
|
46 |
"Recommendation - Use of this feature is highly recommend."
|
47 |
]
|
48 |
},
|
49 |
+
{
|
50 |
+
"slug": "section_whitelabel",
|
51 |
+
"title": "Shield White Label",
|
52 |
+
"title_short": "White Label",
|
53 |
+
"summary": [
|
54 |
+
"Purpose - Rename and re-brand the Shield Security plugin for your client site installations."
|
55 |
+
]
|
56 |
+
},
|
57 |
{
|
58 |
"slug": "section_enable_plugin_feature_admin_access_restriction",
|
59 |
"title": "Enable Module: WordPress Security Admin",
|
211 |
"link_blog": "http://icwp.io/wpsf21",
|
212 |
"summary": "Restrict Access To Key WordPress Posts And Pages Actions",
|
213 |
"description": "Careful: This will restrict access to page/post creation, editing and deletion."
|
214 |
+
},
|
215 |
+
{
|
216 |
+
"key": "whitelabel_enable",
|
217 |
+
"section": "section_non_ui",
|
218 |
+
"premium": true,
|
219 |
+
"default": "N",
|
220 |
+
"type": "checkbox",
|
221 |
+
"link_info": "",
|
222 |
+
"link_blog": "",
|
223 |
+
"name": "Enable White Label",
|
224 |
+
"summary": "Activate Your White Label Settings",
|
225 |
+
"description": "Use this option to turn on/off the whole White Label feature."
|
226 |
+
},
|
227 |
+
{
|
228 |
+
"key": "_wl_hide_updates",
|
229 |
+
"section": "section_non_ui",
|
230 |
+
"premium": true,
|
231 |
+
"default": "Y",
|
232 |
+
"type": "checkbox",
|
233 |
+
"link_info": "",
|
234 |
+
"link_blog": "",
|
235 |
+
"name": "Hide Updates",
|
236 |
+
"summary": "Hide Available Updates From Non Security Admins",
|
237 |
+
"description": "Hides the availability of Shield updates from non-security admins."
|
238 |
+
},
|
239 |
+
{
|
240 |
+
"key": "_wl_namemain",
|
241 |
+
"section": "section_non_ui",
|
242 |
+
"default": "Shield Security",
|
243 |
+
"type": "text",
|
244 |
+
"link_info": "",
|
245 |
+
"link_blog": "",
|
246 |
+
"name": "Plugin Name",
|
247 |
+
"summary": "The Name Of The Plugin",
|
248 |
+
"description": "The Name Of The Plugin."
|
249 |
+
},
|
250 |
+
{
|
251 |
+
"key": "_wl_namemenu",
|
252 |
+
"section": "section_non_ui",
|
253 |
+
"default": "",
|
254 |
+
"type": "text",
|
255 |
+
"link_info": "",
|
256 |
+
"link_blog": "",
|
257 |
+
"name": "Menu Title",
|
258 |
+
"summary": "The Main Menu Title Of The Plugin",
|
259 |
+
"description": "The Main Menu Title Of The Plugin. If left empty, the Plugin Name will be used."
|
260 |
+
},
|
261 |
+
{
|
262 |
+
"key": "_wl_description",
|
263 |
+
"section": "section_non_ui",
|
264 |
+
"default": "Secure Your Sites With The World's Most Powerful WordPress Security Plugin",
|
265 |
+
"type": "text",
|
266 |
+
"link_info": "",
|
267 |
+
"link_blog": "",
|
268 |
+
"name": "Plugin Tag Line",
|
269 |
+
"summary": "The Tag Line Of The Plugin",
|
270 |
+
"description": "The Tag Line Of The Plugin."
|
271 |
+
},
|
272 |
+
{
|
273 |
+
"key": "_wl_homeurl",
|
274 |
+
"section": "section_non_ui",
|
275 |
+
"default": "http://icwp.io/home",
|
276 |
+
"type": "text",
|
277 |
+
"link_info": "",
|
278 |
+
"link_blog": "",
|
279 |
+
"name": "Home URL",
|
280 |
+
"summary": "Plugin Home Page URL",
|
281 |
+
"description": "When a user clicks the home link for this plugin, this is where they'll be directed."
|
282 |
+
},
|
283 |
+
{
|
284 |
+
"key": "_wl_iconurl",
|
285 |
+
"section": "section_non_ui",
|
286 |
+
"default": "",
|
287 |
+
"type": "text",
|
288 |
+
"link_info": "",
|
289 |
+
"link_blog": "",
|
290 |
+
"name": "Icon URL",
|
291 |
+
"summary": "Plugin Icon URL",
|
292 |
+
"description": "The URL of the icon displayed in the menu and in the admin pages."
|
293 |
}
|
294 |
],
|
295 |
"definitions": {
|
src/config/feature-autoupdates.php
CHANGED
@@ -173,7 +173,7 @@
|
|
173 |
"key": "override_email_address",
|
174 |
"section": "section_options",
|
175 |
"sensitive": true,
|
176 |
-
"default": "
|
177 |
"type": "email",
|
178 |
"link_info": "",
|
179 |
"link_blog": "",
|
173 |
"key": "override_email_address",
|
174 |
"section": "section_options",
|
175 |
"sensitive": true,
|
176 |
+
"default": "",
|
177 |
"type": "email",
|
178 |
"link_info": "",
|
179 |
"link_blog": "",
|
src/config/feature-hack_protect.php
CHANGED
@@ -375,7 +375,25 @@
|
|
375 |
"description": "Show links to re-install plugins and offer re-install when activating plugins."
|
376 |
},
|
377 |
{
|
378 |
-
"key": "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
379 |
"transferable": false,
|
380 |
"section": "section_non_ui",
|
381 |
"value": 0
|
375 |
"description": "Show links to re-install plugins and offer re-install when activating plugins."
|
376 |
},
|
377 |
{
|
378 |
+
"key": "ptg_last_scan_at",
|
379 |
+
"transferable": false,
|
380 |
+
"section": "section_non_ui",
|
381 |
+
"value": 0
|
382 |
+
},
|
383 |
+
{
|
384 |
+
"key": "wcf_last_scan_at",
|
385 |
+
"transferable": false,
|
386 |
+
"section": "section_non_ui",
|
387 |
+
"value": 0
|
388 |
+
},
|
389 |
+
{
|
390 |
+
"key": "ufc_last_scan_at",
|
391 |
+
"transferable": false,
|
392 |
+
"section": "section_non_ui",
|
393 |
+
"value": 0
|
394 |
+
},
|
395 |
+
{
|
396 |
+
"key": "wpv_last_scan_at",
|
397 |
"transferable": false,
|
398 |
"section": "section_non_ui",
|
399 |
"value": 0
|
src/config/feature-license.php
CHANGED
@@ -27,14 +27,9 @@
|
|
27 |
"options": [
|
28 |
{
|
29 |
"key": "license_key",
|
30 |
-
"
|
31 |
"default": "",
|
32 |
-
"
|
33 |
-
"link_info": "",
|
34 |
-
"link_blog": "",
|
35 |
-
"name": "License Key",
|
36 |
-
"summary": "License Key",
|
37 |
-
"description": "License Key."
|
38 |
},
|
39 |
{
|
40 |
"key": "license_activated_at",
|
@@ -54,6 +49,12 @@
|
|
54 |
"default": 0,
|
55 |
"section": "section_non_ui"
|
56 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
57 |
{
|
58 |
"key": "license_expires_at",
|
59 |
"transferable": false,
|
@@ -79,7 +80,7 @@
|
|
79 |
"section": "section_non_ui"
|
80 |
},
|
81 |
{
|
82 |
-
"key": "
|
83 |
"transferable": false,
|
84 |
"default": false,
|
85 |
"section": "section_non_ui"
|
@@ -95,6 +96,18 @@
|
|
95 |
"transferable": false,
|
96 |
"default": 0,
|
97 |
"section": "section_non_ui"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
98 |
}
|
99 |
],
|
100 |
"definitions": {
|
@@ -103,8 +116,11 @@
|
|
103 |
"license_item_id": "6047",
|
104 |
"license_item_name_sc": "Shield Security Pro (via Shield Central)",
|
105 |
"license_item_id_sc": "968",
|
106 |
-
"
|
|
|
107 |
"license_key_length": 32,
|
108 |
-
"license_key_type": "alphanumeric"
|
|
|
|
|
109 |
}
|
110 |
}
|
27 |
"options": [
|
28 |
{
|
29 |
"key": "license_key",
|
30 |
+
"transferable": false,
|
31 |
"default": "",
|
32 |
+
"section": "section_non_ui"
|
|
|
|
|
|
|
|
|
|
|
33 |
},
|
34 |
{
|
35 |
"key": "license_activated_at",
|
49 |
"default": 0,
|
50 |
"section": "section_non_ui"
|
51 |
},
|
52 |
+
{
|
53 |
+
"key": "license_verified_at",
|
54 |
+
"transferable": false,
|
55 |
+
"default": 0,
|
56 |
+
"section": "section_non_ui"
|
57 |
+
},
|
58 |
{
|
59 |
"key": "license_expires_at",
|
60 |
"transferable": false,
|
80 |
"section": "section_non_ui"
|
81 |
},
|
82 |
{
|
83 |
+
"key": "is_shield_central",
|
84 |
"transferable": false,
|
85 |
"default": false,
|
86 |
"section": "section_non_ui"
|
96 |
"transferable": false,
|
97 |
"default": 0,
|
98 |
"section": "section_non_ui"
|
99 |
+
},
|
100 |
+
{
|
101 |
+
"key": "keyless_request_hash",
|
102 |
+
"transferable": false,
|
103 |
+
"default": "",
|
104 |
+
"section": "section_non_ui"
|
105 |
+
},
|
106 |
+
{
|
107 |
+
"key": "keyless_request_at",
|
108 |
+
"transferable": false,
|
109 |
+
"default": 0,
|
110 |
+
"section": "section_non_ui"
|
111 |
}
|
112 |
],
|
113 |
"definitions": {
|
116 |
"license_item_id": "6047",
|
117 |
"license_item_name_sc": "Shield Security Pro (via Shield Central)",
|
118 |
"license_item_id_sc": "968",
|
119 |
+
"lic_verify_expire_days": 3,
|
120 |
+
"lic_verify_expire_grace_days": 1,
|
121 |
"license_key_length": 32,
|
122 |
+
"license_key_type": "alphanumeric",
|
123 |
+
"keyless": true,
|
124 |
+
"keyless_handshake_expire": 15
|
125 |
}
|
126 |
}
|
src/config/feature-plugin.php
CHANGED
@@ -17,6 +17,7 @@
|
|
17 |
"id": "override-forceoff",
|
18 |
"schedule": "conditions",
|
19 |
"valid_admin": true,
|
|
|
20 |
"type": "error"
|
21 |
},
|
22 |
"plugin-update-available": {
|
17 |
"id": "override-forceoff",
|
18 |
"schedule": "conditions",
|
19 |
"valid_admin": true,
|
20 |
+
"can_dismiss": false,
|
21 |
"type": "error"
|
22 |
},
|
23 |
"plugin-update-available": {
|
src/config/feature-user_management.php
CHANGED
@@ -23,6 +23,18 @@
|
|
23 |
"Recommendation - Use of this feature is highly recommend."
|
24 |
]
|
25 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
{
|
27 |
"slug": "section_admin_login_notification",
|
28 |
"title": "Admin Login Notification",
|
@@ -114,6 +126,102 @@
|
|
114 |
"summary": "Limit Simultaneous Sessions For The Same Username",
|
115 |
"description": "The number provided here is the maximum number of simultaneous, distinct, sessions allowed for any given username. Use '0' for no limits."
|
116 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
117 |
{
|
118 |
"key": "autoadd_sessions_started_at",
|
119 |
"transferable": false,
|
@@ -121,5 +229,7 @@
|
|
121 |
}
|
122 |
],
|
123 |
"definitions": {
|
|
|
|
|
124 |
}
|
125 |
}
|
23 |
"Recommendation - Use of this feature is highly recommend."
|
24 |
]
|
25 |
},
|
26 |
+
{
|
27 |
+
"slug": "section_passwords",
|
28 |
+
"reqs" : {
|
29 |
+
"php_min": "5.4"
|
30 |
+
},
|
31 |
+
"title": "Password Policies",
|
32 |
+
"title_short": "Password Policies",
|
33 |
+
"summary": [
|
34 |
+
"Purpose - Have full control over passwords used by users on the site.",
|
35 |
+
"Recommendation - Use of this feature is highly recommend."
|
36 |
+
]
|
37 |
+
},
|
38 |
{
|
39 |
"slug": "section_admin_login_notification",
|
40 |
"title": "Admin Login Notification",
|
126 |
"summary": "Limit Simultaneous Sessions For The Same Username",
|
127 |
"description": "The number provided here is the maximum number of simultaneous, distinct, sessions allowed for any given username. Use '0' for no limits."
|
128 |
},
|
129 |
+
{
|
130 |
+
"key": "enable_password_policies",
|
131 |
+
"section": "section_passwords",
|
132 |
+
"type": "checkbox",
|
133 |
+
"default": "N",
|
134 |
+
"link_info": "http://icwp.io/c4",
|
135 |
+
"link_blog": "",
|
136 |
+
"name": "Enable Password Policies",
|
137 |
+
"summary": "Enable The Password Policies Below",
|
138 |
+
"description": "Turn on/off all password policies."
|
139 |
+
},
|
140 |
+
{
|
141 |
+
"key": "pass_prevent_pwned",
|
142 |
+
"section": "section_passwords",
|
143 |
+
"type": "checkbox",
|
144 |
+
"default": "Y",
|
145 |
+
"link_info": "http://icwp.io/by",
|
146 |
+
"link_blog": "",
|
147 |
+
"name": "Prevent Pwned Passwords",
|
148 |
+
"summary": "Prevent Use Of Pwned Passwords",
|
149 |
+
"description": "Prevents users from using any passwords found on the public available list of pwned passwords."
|
150 |
+
},
|
151 |
+
{
|
152 |
+
"key": "pass_min_length",
|
153 |
+
"premium": true,
|
154 |
+
"section": "section_passwords",
|
155 |
+
"premium": true,
|
156 |
+
"type": "integer",
|
157 |
+
"default": "12",
|
158 |
+
"link_info": "",
|
159 |
+
"link_blog": "",
|
160 |
+
"name": "Minimum Length",
|
161 |
+
"summary": "Minimum Password Length",
|
162 |
+
"description": "All passwords that a user sets must be at least this many characters in length."
|
163 |
+
},
|
164 |
+
{
|
165 |
+
"key": "pass_min_strength",
|
166 |
+
"premium": true,
|
167 |
+
"section": "section_passwords",
|
168 |
+
"premium": true,
|
169 |
+
"type": "select",
|
170 |
+
"default": "4",
|
171 |
+
"value_options": [
|
172 |
+
{
|
173 |
+
"value_key": "0",
|
174 |
+
"text": "Very Weak"
|
175 |
+
},
|
176 |
+
{
|
177 |
+
"value_key": "1",
|
178 |
+
"text": "Weak"
|
179 |
+
},
|
180 |
+
{
|
181 |
+
"value_key": "2",
|
182 |
+
"text": "Medium"
|
183 |
+
},
|
184 |
+
{
|
185 |
+
"value_key": "3",
|
186 |
+
"text": "Strong"
|
187 |
+
},
|
188 |
+
{
|
189 |
+
"value_key": "4",
|
190 |
+
"text": "Very Strong"
|
191 |
+
}
|
192 |
+
],
|
193 |
+
"link_info": "",
|
194 |
+
"link_blog": "",
|
195 |
+
"name": "Minimum Strength",
|
196 |
+
"summary": "Minimum Password Strength",
|
197 |
+
"description": "All passwords that a user sets must meet this minimum strength."
|
198 |
+
},
|
199 |
+
{
|
200 |
+
"key": "pass_force_existing",
|
201 |
+
"premium": true,
|
202 |
+
"section": "section_passwords",
|
203 |
+
"premium": true,
|
204 |
+
"type": "checkbox",
|
205 |
+
"default": "N",
|
206 |
+
"link_info": "",
|
207 |
+
"link_blog": "",
|
208 |
+
"name": "Apply To Existing Users",
|
209 |
+
"summary": "Apply Password Policies To Existing Users and Their Passwords",
|
210 |
+
"description": "Forces existing users to update their passwords if they don't meet requirements, after they next login ."
|
211 |
+
},
|
212 |
+
{
|
213 |
+
"key": "pass_expire",
|
214 |
+
"premium": true,
|
215 |
+
"section": "section_passwords",
|
216 |
+
"premium": true,
|
217 |
+
"type": "integer",
|
218 |
+
"default": "60",
|
219 |
+
"link_info": "",
|
220 |
+
"link_blog": "",
|
221 |
+
"name": "Password Expiration",
|
222 |
+
"summary": "Passwords Expire After This Many Days",
|
223 |
+
"description": "Users will be forced to reset their passwords after the number of days specified."
|
224 |
+
},
|
225 |
{
|
226 |
"key": "autoadd_sessions_started_at",
|
227 |
"transferable": false,
|
229 |
}
|
230 |
],
|
231 |
"definitions": {
|
232 |
+
"pwned_api_url_password_single": "https://api.pwnedpasswords.com/pwnedpassword/",
|
233 |
+
"pwned_api_url_password_range": "https://api.pwnedpasswords.com/range/"
|
234 |
}
|
235 |
}
|
src/features/admin_access_restriction.php
CHANGED
@@ -17,64 +17,106 @@ class ICWP_WPSF_FeatureHandler_AdminAccessRestriction extends ICWP_WPSF_FeatureH
|
|
17 |
return parent::isReadyToExecute() && $this->hasAccessKey() && !$this->isVisitorWhitelisted();
|
18 |
}
|
19 |
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
}
|
|
|
34 |
}
|
35 |
|
36 |
/**
|
37 |
-
* @
|
38 |
-
* @return string
|
39 |
*/
|
40 |
-
protected function
|
41 |
-
$
|
42 |
-
$aData[ 'admin_access_message' ] = empty( $sMessage ) ? _wpsf__( 'Enter your Security Admin Access Key' ) : $sMessage;
|
43 |
-
return $this->renderTemplate( 'snippets/admin_access_login', $aData );
|
44 |
-
}
|
45 |
|
46 |
-
|
47 |
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
$bSuccess = $this->setPermissionToSubmit( true );
|
53 |
-
if ( $bSuccess ) {
|
54 |
-
$sResponseData[ 'html' ] = _wpsf__( 'Security Admin Access Key Accepted.' ).' '._wpsf__( 'Please wait' ).' ...';
|
55 |
-
}
|
56 |
-
else {
|
57 |
-
$sResponseData[ 'html' ] = _wpsf__( 'Failed to process key - you may need to re-login to WordPress.' );
|
58 |
-
}
|
59 |
}
|
60 |
else {
|
61 |
-
$
|
62 |
}
|
63 |
-
$this->sendAjaxResponse( $bSuccess, $sResponseData );
|
64 |
}
|
|
|
|
|
|
|
|
|
|
|
65 |
}
|
66 |
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
73 |
}
|
74 |
else {
|
75 |
-
$
|
76 |
}
|
77 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
78 |
}
|
79 |
|
80 |
/**
|
@@ -267,6 +309,39 @@ class ICWP_WPSF_FeatureHandler_AdminAccessRestriction extends ICWP_WPSF_FeatureH
|
|
267 |
return !empty( $sKey ) && ( $this->getAccessKeyHash() === md5( $sKey ) );
|
268 |
}
|
269 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
270 |
/**
|
271 |
* @param string $sKey
|
272 |
* @return $this
|
@@ -324,6 +399,16 @@ class ICWP_WPSF_FeatureHandler_AdminAccessRestriction extends ICWP_WPSF_FeatureH
|
|
324 |
$sTitleShort = _wpsf__( 'Access Restriction Zones' );
|
325 |
break;
|
326 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
327 |
default:
|
328 |
throw new Exception( sprintf( 'A section slug was defined but with no associated strings. Slug: "%s".', $sSectionSlug ) );
|
329 |
}
|
@@ -408,6 +493,42 @@ class ICWP_WPSF_FeatureHandler_AdminAccessRestriction extends ICWP_WPSF_FeatureH
|
|
408 |
);
|
409 |
break;
|
410 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
411 |
default:
|
412 |
throw new Exception( sprintf( 'An option has been defined but without strings assigned to it. Option key: "%s".', $sKey ) );
|
413 |
}
|
17 |
return parent::isReadyToExecute() && $this->hasAccessKey() && !$this->isVisitorWhitelisted();
|
18 |
}
|
19 |
|
20 |
+
/**
|
21 |
+
* @param array $aAjaxResponse
|
22 |
+
* @return array
|
23 |
+
*/
|
24 |
+
public function handleAuthAjax( $aAjaxResponse ) {
|
25 |
+
|
26 |
+
if ( empty( $aAjaxResponse ) ) {
|
27 |
+
switch ( $this->loadDP()->request( 'exec' ) ) {
|
28 |
+
|
29 |
+
case 'sec_admin_login':
|
30 |
+
case 'restricted_access':
|
31 |
+
$aAjaxResponse = $this->ajaxExec_SecAdminLogin();
|
32 |
+
break;
|
33 |
+
|
34 |
+
case 'sec_admin_login_box':
|
35 |
+
$aAjaxResponse = $this->ajaxExec_SecAdminLoginBox();
|
36 |
+
break;
|
37 |
+
|
38 |
+
break;
|
39 |
+
|
40 |
+
default:
|
41 |
+
break;
|
42 |
+
}
|
43 |
}
|
44 |
+
return parent::handleAuthAjax( $aAjaxResponse );
|
45 |
}
|
46 |
|
47 |
/**
|
48 |
+
* @return array
|
|
|
49 |
*/
|
50 |
+
protected function ajaxExec_SecAdminLogin() {
|
51 |
+
$aResponse = array();
|
|
|
|
|
|
|
52 |
|
53 |
+
if ( $this->checkAdminAccessKeySubmission() ) {
|
54 |
|
55 |
+
if ( $this->setPermissionToSubmit( true ) ) {
|
56 |
+
$aResponse[ 'success' ] = true;
|
57 |
+
$aResponse[ 'html' ] = _wpsf__( 'Security Admin Access Key Accepted.' )
|
58 |
+
.' '._wpsf__( 'Please wait' ).' ...';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
59 |
}
|
60 |
else {
|
61 |
+
$aResponse[ 'html' ] = _wpsf__( 'Failed to process key - you may need to re-login to WordPress.' );
|
62 |
}
|
|
|
63 |
}
|
64 |
+
else {
|
65 |
+
$aResponse[ 'html' ] = $this->renderAdminAccessAjaxLoginForm( _wpsf__( 'Error - Invalid Key' ) );
|
66 |
+
}
|
67 |
+
|
68 |
+
return $aResponse;
|
69 |
}
|
70 |
|
71 |
+
/**
|
72 |
+
* @return array
|
73 |
+
*/
|
74 |
+
protected function ajaxExec_SecAdminLoginBox() {
|
75 |
+
return array(
|
76 |
+
'success' => 'true',
|
77 |
+
'html' => $this->renderAdminAccessAjaxLoginForm()
|
78 |
+
);
|
79 |
+
}
|
80 |
+
|
81 |
+
/**
|
82 |
+
* @return array
|
83 |
+
*/
|
84 |
+
protected function ajaxExec_RestrictedAccess() {
|
85 |
+
$aResponse = array();
|
86 |
+
|
87 |
+
if ( $this->checkAdminAccessKeySubmission() ) {
|
88 |
+
|
89 |
+
if ( $this->setPermissionToSubmit( true ) ) {
|
90 |
+
$aResponse[ 'success' ] = true;
|
91 |
+
$aResponse[ 'html' ] = _wpsf__( 'Security Admin Access Key Accepted.' )
|
92 |
+
.' '._wpsf__( 'Please wait' ).' ...';
|
93 |
+
}
|
94 |
+
else {
|
95 |
+
$aResponse[ 'html' ] = _wpsf__( 'Failed to process key - you may need to re-login to WordPress.' );
|
96 |
+
}
|
97 |
}
|
98 |
else {
|
99 |
+
$aResponse[ 'html' ] = $this->renderAdminAccessAjaxLoginForm( _wpsf__( 'Error - Invalid Key' ) );
|
100 |
}
|
101 |
+
|
102 |
+
return $aResponse;
|
103 |
+
}
|
104 |
+
|
105 |
+
/**
|
106 |
+
* @param string $sMessage
|
107 |
+
* @return string
|
108 |
+
*/
|
109 |
+
protected function renderAdminAccessAjaxLoginForm( $sMessage = '' ) {
|
110 |
+
|
111 |
+
$aData = array(
|
112 |
+
'ajax' => array(
|
113 |
+
'sec_admin_login' => json_encode( $this->getSecAdminLoginAjaxData() )
|
114 |
+
),
|
115 |
+
'strings' => array(
|
116 |
+
'access_message' => empty( $sMessage ) ? _wpsf__( 'Enter your Security Admin Access Key' ) : $sMessage
|
117 |
+
)
|
118 |
+
);
|
119 |
+
return $this->renderTemplate( 'snippets/admin_access_login', $aData );
|
120 |
}
|
121 |
|
122 |
/**
|
309 |
return !empty( $sKey ) && ( $this->getAccessKeyHash() === md5( $sKey ) );
|
310 |
}
|
311 |
|
312 |
+
/**
|
313 |
+
* @return array
|
314 |
+
*/
|
315 |
+
public function getWhitelabelOptions() {
|
316 |
+
$sMain = $this->getOpt( 'wl_namemain' );
|
317 |
+
$sMenu = $this->getOpt( 'wl_namemenu' );
|
318 |
+
if ( empty( $sMenu ) ) {
|
319 |
+
$sMenu = $sMain;
|
320 |
+
}
|
321 |
+
|
322 |
+
return array(
|
323 |
+
'name_main' => $sMain,
|
324 |
+
'name_menu' => $sMenu,
|
325 |
+
'description' => $this->getOpt( 'wl_description' ),
|
326 |
+
'url_home' => $this->getOpt( 'wl_homeurl' ),
|
327 |
+
'url_icon' => $this->getOpt( 'wl_iconurl' ),
|
328 |
+
);
|
329 |
+
}
|
330 |
+
|
331 |
+
/**
|
332 |
+
* @return bool
|
333 |
+
*/
|
334 |
+
public function isWlEnabled() {
|
335 |
+
return $this->getOptIs( 'whitelabel_enable', 'Y' ) && $this->isPremium();
|
336 |
+
}
|
337 |
+
|
338 |
+
/**
|
339 |
+
* @return bool
|
340 |
+
*/
|
341 |
+
public function isWlHideUpdates() {
|
342 |
+
return $this->isWlEnabled() && $this->getOptIs( 'wl_hide_updates', 'Y' );
|
343 |
+
}
|
344 |
+
|
345 |
/**
|
346 |
* @param string $sKey
|
347 |
* @return $this
|
399 |
$sTitleShort = _wpsf__( 'Access Restriction Zones' );
|
400 |
break;
|
401 |
|
402 |
+
case 'section_whitelabel' :
|
403 |
+
$sTitle = _wpsf__( 'Shield White Label' );
|
404 |
+
$aSummary = array(
|
405 |
+
sprintf( _wpsf__( 'Purpose - %s' ),
|
406 |
+
sprintf( _wpsf__( 'Rename and re-brand the %s plugin for your client site installations.' ),
|
407 |
+
$this->getConn()->getHumanName() ) ),
|
408 |
+
);
|
409 |
+
$sTitleShort = _wpsf__( 'White Label' );
|
410 |
+
break;
|
411 |
+
|
412 |
default:
|
413 |
throw new Exception( sprintf( 'A section slug was defined but with no associated strings. Slug: "%s".', $sSectionSlug ) );
|
414 |
}
|
493 |
);
|
494 |
break;
|
495 |
|
496 |
+
case 'whitelabel_enable' :
|
497 |
+
$sName = sprintf( '%s: %s', _wpsf__( 'Enable' ), _wpsf__( 'White Label' ) );
|
498 |
+
$sSummary = _wpsf__( 'Activate Your White Label Settings' );
|
499 |
+
$sDescription = _wpsf__( 'Turn on/off the application of your White Label settings.' );
|
500 |
+
break;
|
501 |
+
case 'wl_hide_updates' :
|
502 |
+
$sName = _wpsf__( 'Hide Updates' );
|
503 |
+
$sSummary = _wpsf__( 'Hide Plugin Updates From Non-Security Admins' );
|
504 |
+
$sDescription = _wpsf__( 'Do not show the availability of updates to non-security administrators.' );
|
505 |
+
break;
|
506 |
+
case 'wl_namemain' :
|
507 |
+
$sName = _wpsf__( 'Plugin Name' );
|
508 |
+
$sSummary = _wpsf__( 'The Name Of The Plugin' );
|
509 |
+
$sDescription = _wpsf__( 'The name of the plugin that will be displayed to your site users.' );
|
510 |
+
break;
|
511 |
+
case 'wl_namemenu' :
|
512 |
+
$sName = _wpsf__( 'Menu Title' );
|
513 |
+
$sSummary = _wpsf__( 'The Main Menu Title Of The Plugin' );
|
514 |
+
$sDescription = sprintf( _wpsf__( 'The Main Menu Title Of The Plugin. If left empty, the "%s" will be used.' ), _wpsf__( 'Plugin Name' ) );
|
515 |
+
break;
|
516 |
+
case 'wl_description' :
|
517 |
+
$sName = _wpsf__( 'Description' );
|
518 |
+
$sSummary = _wpsf__( 'The Description Of The Plugin' );
|
519 |
+
$sDescription = _wpsf__( 'The description of the plugin displayed on the plugins page.' );
|
520 |
+
break;
|
521 |
+
case 'wl_homeurl' :
|
522 |
+
$sName = _wpsf__( 'Home URL' );
|
523 |
+
$sSummary = _wpsf__( 'Plugin Home Page URL' );
|
524 |
+
$sDescription = _wpsf__( "When a user clicks the home link for this plugin, this is where they'll be directed." );
|
525 |
+
break;
|
526 |
+
case 'wl_iconurl' :
|
527 |
+
$sName = _wpsf__( 'Icon URL' );
|
528 |
+
$sSummary = _wpsf__( 'Plugin Icon URL' );
|
529 |
+
$sDescription = _wpsf__( 'The URL of the icon displayed in the menu and in the admin pages.' );
|
530 |
+
break;
|
531 |
+
|
532 |
default:
|
533 |
throw new Exception( sprintf( 'An option has been defined but without strings assigned to it. Option key: "%s".', $sKey ) );
|
534 |
}
|
src/features/audit_trail.php
CHANGED
@@ -22,15 +22,35 @@ class ICWP_WPSF_FeatureHandler_AuditTrail extends ICWP_WPSF_FeatureHandler_BaseW
|
|
22 |
}
|
23 |
}
|
24 |
|
25 |
-
|
26 |
-
|
27 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
}
|
29 |
|
30 |
-
public function
|
|
|
31 |
$aParams = array_intersect_key( $_POST, array_flip( array( 'paged', 'order', 'orderby' ) ) );
|
32 |
-
|
33 |
-
|
|
|
|
|
34 |
}
|
35 |
|
36 |
/**
|
@@ -40,7 +60,7 @@ class ICWP_WPSF_FeatureHandler_AuditTrail extends ICWP_WPSF_FeatureHandler_BaseW
|
|
40 |
protected function getTableRendererForContext( $sContext ) {
|
41 |
$this->requireCommonLib( 'Components/Tables/AuditTrailTable.php' );
|
42 |
/** @var ICWP_WPSF_Processor_AuditTrail $oAuditTrail */
|
43 |
-
$oAuditTrail = $this->
|
44 |
$nCount = $oAuditTrail->countAuditEntriesForContext( $sContext );
|
45 |
|
46 |
$oTable = new AuditTrailTable();
|
@@ -74,7 +94,7 @@ class ICWP_WPSF_FeatureHandler_AuditTrail extends ICWP_WPSF_FeatureHandler_BaseW
|
|
74 |
$nPage = (int)$aParams[ 'paged' ];
|
75 |
|
76 |
/** @var ICWP_WPSF_Processor_AuditTrail $oAuditTrail */
|
77 |
-
$oAuditTrail = $this->
|
78 |
$aEntries = $oAuditTrail->getAuditEntriesForContext(
|
79 |
$sContext,
|
80 |
$aParams[ 'orderby' ],
|
@@ -158,13 +178,13 @@ class ICWP_WPSF_FeatureHandler_AuditTrail extends ICWP_WPSF_FeatureHandler_BaseW
|
|
158 |
$aAuditTables[ $sContext ] = $this->renderTableForContext( $sContext );
|
159 |
}
|
160 |
|
161 |
-
return
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
);
|
169 |
}
|
170 |
|
22 |
}
|
23 |
}
|
24 |
|
25 |
+
/**
|
26 |
+
* @param array $aAjaxResponse
|
27 |
+
* @return array
|
28 |
+
*/
|
29 |
+
public function handleAuthAjax( $aAjaxResponse ) {
|
30 |
+
|
31 |
+
if ( empty( $aAjaxResponse ) ) {
|
32 |
+
switch ( $this->loadDP()->request( 'exec' ) ) {
|
33 |
+
|
34 |
+
case 'render_audit_table':
|
35 |
+
$aAjaxResponse = $this->ajaxExec_RenderAuditTable();
|
36 |
+
break;
|
37 |
+
|
38 |
+
break;
|
39 |
+
|
40 |
+
default:
|
41 |
+
break;
|
42 |
+
}
|
43 |
+
}
|
44 |
+
return parent::handleAuthAjax( $aAjaxResponse );
|
45 |
}
|
46 |
|
47 |
+
public function ajaxExec_RenderAuditTable() {
|
48 |
+
$sContext = $this->loadDP()->post( 'auditcontext' );
|
49 |
$aParams = array_intersect_key( $_POST, array_flip( array( 'paged', 'order', 'orderby' ) ) );
|
50 |
+
return array(
|
51 |
+
'success' => true,
|
52 |
+
'html' => $this->renderTableForContext( $sContext, $aParams )
|
53 |
+
);
|
54 |
}
|
55 |
|
56 |
/**
|
60 |
protected function getTableRendererForContext( $sContext ) {
|
61 |
$this->requireCommonLib( 'Components/Tables/AuditTrailTable.php' );
|
62 |
/** @var ICWP_WPSF_Processor_AuditTrail $oAuditTrail */
|
63 |
+
$oAuditTrail = $this->loadProcessor();
|
64 |
$nCount = $oAuditTrail->countAuditEntriesForContext( $sContext );
|
65 |
|
66 |
$oTable = new AuditTrailTable();
|
94 |
$nPage = (int)$aParams[ 'paged' ];
|
95 |
|
96 |
/** @var ICWP_WPSF_Processor_AuditTrail $oAuditTrail */
|
97 |
+
$oAuditTrail = $this->loadProcessor();
|
98 |
$aEntries = $oAuditTrail->getAuditEntriesForContext(
|
99 |
$sContext,
|
100 |
$aParams[ 'orderby' ],
|
178 |
$aAuditTables[ $sContext ] = $this->renderTableForContext( $sContext );
|
179 |
}
|
180 |
|
181 |
+
return array(
|
182 |
+
'aAuditTables' => $aAuditTables,
|
183 |
+
'aContexts' => $aContexts,
|
184 |
+
'sTitle' => _wpsf__( 'Audit Trail Viewer' ),
|
185 |
+
'ajax' => array(
|
186 |
+
'render_audit_table' => $this->getAjaxActionData( 'render_audit_table', true )
|
187 |
+
)
|
188 |
);
|
189 |
}
|
190 |
|
src/features/autoupdates.php
CHANGED
@@ -95,39 +95,56 @@ class ICWP_WPSF_FeatureHandler_Autoupdates extends ICWP_WPSF_FeatureHandler_Base
|
|
95 |
return in_array( $sPluginFile, $this->getAutoupdatePlugins() );
|
96 |
}
|
97 |
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
102 |
}
|
|
|
103 |
}
|
104 |
|
105 |
-
|
|
|
|
|
|
|
106 |
|
107 |
$bSuccess = false;
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
$
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
$bSuccess = true;
|
122 |
-
}
|
123 |
-
else {
|
124 |
-
$sMessage = _wpsf__( 'Failed to change the update status of the plugin.' );
|
125 |
-
}
|
126 |
}
|
127 |
else {
|
128 |
-
$sMessage = _wpsf__( '
|
129 |
}
|
130 |
-
|
|
|
|
|
|
|
|
|
131 |
}
|
132 |
|
133 |
/**
|
95 |
return in_array( $sPluginFile, $this->getAutoupdatePlugins() );
|
96 |
}
|
97 |
|
98 |
+
/**
|
99 |
+
* @param array $aAjaxResponse
|
100 |
+
* @return array
|
101 |
+
*/
|
102 |
+
public function handleAuthAjax( $aAjaxResponse ) {
|
103 |
+
|
104 |
+
if ( empty( $aAjaxResponse ) ) {
|
105 |
+
switch ( $this->loadDP()->request( 'exec' ) ) {
|
106 |
+
|
107 |
+
case 'toggle_plugin_autoupdate':
|
108 |
+
if ( $this->isAutoupdateIndividualPlugins() && $this->getConn()->getIsValidAdminArea() ) {
|
109 |
+
$aAjaxResponse = $this->ajaxExec_TogglePluginAutoupdate();
|
110 |
+
}
|
111 |
+
break;
|
112 |
+
|
113 |
+
default:
|
114 |
+
break;
|
115 |
+
}
|
116 |
}
|
117 |
+
return parent::handleAuthAjax( $aAjaxResponse );
|
118 |
}
|
119 |
|
120 |
+
/**
|
121 |
+
* @return array
|
122 |
+
*/
|
123 |
+
public function ajaxExec_TogglePluginAutoupdate() {
|
124 |
|
125 |
$bSuccess = false;
|
126 |
+
|
127 |
+
$oWpPlugins = $this->loadWpPlugins();
|
128 |
+
$sFile = $this->loadDP()->post( 'pluginfile' );
|
129 |
+
if ( $oWpPlugins->isInstalled( $sFile ) ) {
|
130 |
+
$this->setPluginToAutoUpdate( $sFile );
|
131 |
+
|
132 |
+
$aPlugin = $oWpPlugins->getPlugin( $sFile );
|
133 |
+
$sMessage = sprintf( _wpsf__( 'Plugin "%s" will %s.' ),
|
134 |
+
$aPlugin[ 'Name' ],
|
135 |
+
$this->loadWp()
|
136 |
+
->getIsPluginAutomaticallyUpdated( $sFile ) ? _wpsf__( 'update automatically' ) : _wpsf__( 'not update automatically' )
|
137 |
+
);
|
138 |
+
$bSuccess = true;
|
|
|
|
|
|
|
|
|
|
|
139 |
}
|
140 |
else {
|
141 |
+
$sMessage = _wpsf__( 'Failed to change the update status of the plugin.' );
|
142 |
}
|
143 |
+
|
144 |
+
return array(
|
145 |
+
'success' => $bSuccess,
|
146 |
+
'message' => $sMessage,
|
147 |
+
);
|
148 |
}
|
149 |
|
150 |
/**
|
src/features/base.php
CHANGED
@@ -109,9 +109,14 @@ abstract class ICWP_WPSF_FeatureHandler_Base extends ICWP_WPSF_Foundation {
|
|
109 |
add_action( $this->prefix( 'run_processors' ), array( $this, 'onRunProcessors' ), $nRunPriority );
|
110 |
add_action( 'init', array( $this, 'onWpInit' ), 1 );
|
111 |
add_action( $this->prefix( 'import_options' ), array( $this, 'processImportOptions' ) );
|
112 |
-
|
113 |
-
|
|
|
|
|
|
|
|
|
114 |
}
|
|
|
115 |
add_filter( $this->prefix( 'filter_plugin_submenu_items' ), array( $this, 'filter_addPluginSubMenuItem' ) );
|
116 |
add_filter( $this->prefix( 'get_feature_summary_data' ), array( $this, 'filter_getFeatureSummaryData' ) );
|
117 |
add_action( $this->prefix( 'plugin_shutdown' ), array( $this, 'action_doFeatureShutdown' ) );
|
@@ -127,6 +132,78 @@ abstract class ICWP_WPSF_FeatureHandler_Base extends ICWP_WPSF_Foundation {
|
|
127 |
}
|
128 |
}
|
129 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
130 |
/**
|
131 |
* @param array $aAdminNotices
|
132 |
* @return array
|
@@ -252,14 +329,13 @@ abstract class ICWP_WPSF_FeatureHandler_Base extends ICWP_WPSF_Foundation {
|
|
252 |
public function onWpInit() {
|
253 |
$this->runWizards();
|
254 |
$this->updateHandler();
|
255 |
-
$this->setupAjaxHandlers();
|
256 |
}
|
257 |
|
258 |
/**
|
259 |
* Override this and adapt per feature
|
260 |
* @return ICWP_WPSF_Processor_Base
|
261 |
*/
|
262 |
-
protected function
|
263 |
if ( !isset( $this->oProcessor ) ) {
|
264 |
include_once( self::getConn()
|
265 |
->getPath_SourceFile( sprintf( 'processors/%s.php', $this->getFeatureSlug() ) ) );
|
@@ -355,7 +431,7 @@ abstract class ICWP_WPSF_FeatureHandler_Base extends ICWP_WPSF_Foundation {
|
|
355 |
* @return ICWP_WPSF_Processor_Base
|
356 |
*/
|
357 |
public function getProcessor() {
|
358 |
-
return $this->
|
359 |
}
|
360 |
|
361 |
/**
|
@@ -678,7 +754,7 @@ abstract class ICWP_WPSF_FeatureHandler_Base extends ICWP_WPSF_Foundation {
|
|
678 |
* @param array|string $mErrors
|
679 |
* @return $this
|
680 |
*/
|
681 |
-
public function setLastErrors( $mErrors ) {
|
682 |
if ( !is_array( $mErrors ) ) {
|
683 |
if ( is_string( $mErrors ) ) {
|
684 |
$mErrors = array( $mErrors );
|
@@ -713,42 +789,11 @@ abstract class ICWP_WPSF_FeatureHandler_Base extends ICWP_WPSF_Foundation {
|
|
713 |
}
|
714 |
}
|
715 |
|
716 |
-
protected function setupAjaxHandlers() {
|
717 |
-
$bAdminRun = false;
|
718 |
-
|
719 |
-
if ( $this->isValidAjaxRequestForModule() ) { // TODO replicate all this for the backend
|
720 |
-
$this->frontEndAjaxHandlers();
|
721 |
-
$this->adminAjaxHandlers();
|
722 |
-
$bAdminRun = true;
|
723 |
-
// $this->sendAjaxResponse( false, array( 'message' => 'Failed Ajax Nonce' ) );
|
724 |
-
}
|
725 |
-
|
726 |
-
if ( !$bAdminRun && $this->loadWp()->isAjax() ) { //TODO: isValidAjaxRequest()
|
727 |
-
if ( is_admin() || is_network_admin() ) {
|
728 |
-
$this->adminAjaxHandlers();
|
729 |
-
}
|
730 |
-
}
|
731 |
-
}
|
732 |
-
|
733 |
/**
|
734 |
-
* A valid Ajax request must have all the icwp items as posted with getBaseAjaxActionRenderData()
|
735 |
-
* Note: Also performs nonce checking
|
736 |
* @return bool
|
737 |
*/
|
738 |
-
protected function
|
739 |
-
$
|
740 |
-
|
741 |
-
$bValid = $this->loadWp()->isAjax()
|
742 |
-
&& ( $this->getModSlug() == $oDp->post( 'icwp_action_module', '' ) );
|
743 |
-
if ( $bValid ) {
|
744 |
-
$aItems = array_keys( $this->getBaseAjaxActionRenderData() );
|
745 |
-
foreach ( $aItems as $sKey ) {
|
746 |
-
if ( strpos( $sKey, 'icwp_' ) === 0 ) {
|
747 |
-
$bValid = $bValid && ( strlen( $oDp->post( $sKey, '' ) ) > 0 );
|
748 |
-
}
|
749 |
-
}
|
750 |
-
}
|
751 |
-
return $bValid && $this->checkNonceAction( $oDp->post( 'icwp_nonce' ), $oDp->post( 'icwp_nonce_action' ) );
|
752 |
}
|
753 |
|
754 |
/**
|
@@ -756,46 +801,23 @@ abstract class ICWP_WPSF_FeatureHandler_Base extends ICWP_WPSF_Foundation {
|
|
756 |
* @param bool $bAsJsonEncodedObject
|
757 |
* @return array
|
758 |
*/
|
759 |
-
public function
|
760 |
$aData = array(
|
761 |
-
'action'
|
762 |
-
'
|
763 |
-
'
|
764 |
-
'
|
765 |
-
'
|
766 |
-
'ajaxurl' => admin_url( 'admin-ajax.php' ),
|
767 |
);
|
768 |
return $bAsJsonEncodedObject ? json_encode( (object)$aData ) : $aData;
|
769 |
}
|
770 |
|
771 |
-
protected function adminAjaxHandlers() {
|
772 |
-
add_action( 'wp_ajax_icwp_OptionsFormSave', array( $this, 'ajaxOptionsFormSave' ) );
|
773 |
-
|
774 |
-
// TODO: move this to the wizard handler itself
|
775 |
-
if ( $this->canRunWizards() && $this->hasWizard() ) {
|
776 |
-
$oWiz = $this->getWizardHandler();
|
777 |
-
if ( !is_null( $oWiz ) ) {
|
778 |
-
add_action( $this->prefixWpAjax( 'WizardProcessStepSubmit' ), array(
|
779 |
-
$oWiz,
|
780 |
-
'ajaxWizardProcessStepSubmit'
|
781 |
-
) );
|
782 |
-
add_action( $this->prefixWpAjax( 'WizardRenderStep' ), array(
|
783 |
-
$oWiz,
|
784 |
-
'ajaxWizardRenderStep'
|
785 |
-
) );
|
786 |
-
}
|
787 |
-
}
|
788 |
-
}
|
789 |
-
|
790 |
-
protected function frontEndAjaxHandlers() {
|
791 |
-
}
|
792 |
-
|
793 |
/**
|
794 |
* @param string $sAction
|
795 |
* @return string
|
796 |
*/
|
797 |
-
|
798 |
-
return wp_create_nonce( $
|
799 |
}
|
800 |
|
801 |
/**
|
@@ -803,33 +825,10 @@ abstract class ICWP_WPSF_FeatureHandler_Base extends ICWP_WPSF_Foundation {
|
|
803 |
* @param string $sAction
|
804 |
* @return bool
|
805 |
*/
|
806 |
-
|
807 |
return wp_verify_nonce( $sNonce, $this->prefix( $sAction ) );
|
808 |
}
|
809 |
|
810 |
-
/**
|
811 |
-
* Will send ajax error response immediately upon failure
|
812 |
-
* @return bool
|
813 |
-
*/
|
814 |
-
protected function checkAjaxNonce() {
|
815 |
-
|
816 |
-
$sNonce = $this->loadDataProcessor()->FetchRequest( '_ajax_nonce', '' );
|
817 |
-
if ( empty( $sNonce ) ) {
|
818 |
-
$sMessage = $this->getTranslatedString( 'nonce_failed_empty', 'Nonce security checking failed - the nonce value was empty.' );
|
819 |
-
}
|
820 |
-
else if ( wp_verify_nonce( $sNonce, 'icwp_ajax' ) === false ) {
|
821 |
-
$sMessage = $this->getTranslatedString( 'nonce_failed_supplied', 'Nonce security checking failed - the nonce supplied was "%s".' );
|
822 |
-
$sMessage = sprintf( $sMessage, $sNonce );
|
823 |
-
}
|
824 |
-
else {
|
825 |
-
return true; // At this stage we passed the nonce check
|
826 |
-
}
|
827 |
-
|
828 |
-
// At this stage we haven't returned after success so we failed the nonce check
|
829 |
-
$this->sendAjaxResponse( false, array( 'message' => $sMessage ) );
|
830 |
-
return false; //unreachable
|
831 |
-
}
|
832 |
-
|
833 |
/**
|
834 |
* @return bool
|
835 |
*/
|
@@ -861,14 +860,6 @@ abstract class ICWP_WPSF_FeatureHandler_Base extends ICWP_WPSF_Foundation {
|
|
861 |
return $this->oWizard;
|
862 |
}
|
863 |
|
864 |
-
/**
|
865 |
-
* @param $bSuccess
|
866 |
-
* @param array $aData
|
867 |
-
*/
|
868 |
-
public function sendAjaxResponse( $bSuccess, $aData = array() ) {
|
869 |
-
$bSuccess ? wp_send_json_success( $aData ) : wp_send_json_error( $aData );
|
870 |
-
}
|
871 |
-
|
872 |
/**
|
873 |
* Saves the options to the WordPress Options store.
|
874 |
* It will also update the stored plugin options version.
|
@@ -952,12 +943,21 @@ abstract class ICWP_WPSF_FeatureHandler_Base extends ICWP_WPSF_Foundation {
|
|
952 |
$aWarnings,
|
953 |
$this->getSectionWarnings( $aSection[ 'slug' ] )
|
954 |
);
|
|
|
955 |
}
|
956 |
}
|
957 |
|
958 |
return $aOptions;
|
959 |
}
|
960 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
961 |
/**
|
962 |
* @param string $sSectionSlug
|
963 |
* @return array
|
@@ -1077,19 +1077,18 @@ abstract class ICWP_WPSF_FeatureHandler_Base extends ICWP_WPSF_Foundation {
|
|
1077 |
return implode( self::CollateSeparator, $aToJoin );
|
1078 |
}
|
1079 |
|
1080 |
-
|
1081 |
-
|
1082 |
-
|
1083 |
-
|
1084 |
-
}
|
1085 |
|
1086 |
$oCon = self::getConn();
|
1087 |
$bSuccess = false;
|
1088 |
$sName = $oCon->getHumanName();
|
1089 |
$sMessage = sprintf( _wpsf__( 'Failed up to update %s plugin options.' ), $sName );
|
1090 |
|
1091 |
-
if ( $oCon->getIsValidAdminArea()
|
1092 |
-
$bSuccess = $this->
|
1093 |
if ( $bSuccess ) {
|
1094 |
$sMessage = sprintf( _wpsf__( '%s Plugin options updated successfully.' ), $sName );
|
1095 |
}
|
@@ -1098,23 +1097,26 @@ abstract class ICWP_WPSF_FeatureHandler_Base extends ICWP_WPSF_Foundation {
|
|
1098 |
$sMessage = sprintf( _wpsf__( 'Failed to update %s options as you are not authenticated with %s as a Security Admin.' ), $sName, $sName );
|
1099 |
}
|
1100 |
|
1101 |
-
|
1102 |
-
$
|
1103 |
-
|
1104 |
-
|
1105 |
-
|
1106 |
-
|
|
|
|
|
|
|
|
|
1107 |
);
|
1108 |
}
|
1109 |
|
1110 |
/**
|
1111 |
* @return bool
|
1112 |
*/
|
1113 |
-
public function
|
1114 |
$bVerified = $this->verifyFormSubmit();
|
1115 |
if ( $bVerified ) {
|
1116 |
-
$this->
|
1117 |
-
$this->doExtraSubmitProcessing();
|
1118 |
$this->setSaveUserResponse();
|
1119 |
}
|
1120 |
return $bVerified;
|
@@ -1123,8 +1125,17 @@ abstract class ICWP_WPSF_FeatureHandler_Base extends ICWP_WPSF_Foundation {
|
|
1123 |
/**
|
1124 |
* @return bool
|
1125 |
*/
|
1126 |
-
protected function
|
1127 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1128 |
}
|
1129 |
|
1130 |
protected function verifyFormSubmit() {
|
@@ -1311,18 +1322,7 @@ abstract class ICWP_WPSF_FeatureHandler_Base extends ICWP_WPSF_Foundation {
|
|
1311 |
* @return string
|
1312 |
*/
|
1313 |
public function prefix( $sSuffix = '', $sGlue = '-' ) {
|
1314 |
-
return self::getConn()->
|
1315 |
-
}
|
1316 |
-
|
1317 |
-
/**
|
1318 |
-
* @param string $sSuffix
|
1319 |
-
* @return string
|
1320 |
-
*/
|
1321 |
-
public function prefixWpAjax( $sSuffix = '' ) {
|
1322 |
-
return sprintf( '%s%s',
|
1323 |
-
'wp_ajax_',
|
1324 |
-
$this->prefix( $sSuffix )
|
1325 |
-
);
|
1326 |
}
|
1327 |
|
1328 |
/**
|
@@ -1369,7 +1369,9 @@ abstract class ICWP_WPSF_FeatureHandler_Base extends ICWP_WPSF_Foundation {
|
|
1369 |
protected function displayRestrictedPage() {
|
1370 |
$this->display(
|
1371 |
array(
|
1372 |
-
'
|
|
|
|
|
1373 |
),
|
1374 |
'access_restricted.php'
|
1375 |
);
|
@@ -1379,7 +1381,7 @@ abstract class ICWP_WPSF_FeatureHandler_Base extends ICWP_WPSF_Foundation {
|
|
1379 |
* @param bool $bRenderEmbeddedContent
|
1380 |
* @return array
|
1381 |
*/
|
1382 |
-
protected function getBaseDisplayData( $bRenderEmbeddedContent =
|
1383 |
$oCon = self::getConn();
|
1384 |
self::$sActivelyDisplayedModuleOptions = $this->getFeatureSlug();
|
1385 |
|
@@ -1402,13 +1404,11 @@ abstract class ICWP_WPSF_FeatureHandler_Base extends ICWP_WPSF_Foundation {
|
|
1402 |
'width' => 772,
|
1403 |
'height' => 454,
|
1404 |
),
|
1405 |
-
'
|
1406 |
-
|
1407 |
-
'aSummaryData' => apply_filters( $this->prefix( 'get_feature_summary_data' ), array() ),
|
1408 |
|
1409 |
// 'sPageTitle' => sprintf( '%s: %s', $oCon->getHumanName(), $this->getMainFeatureName() ),
|
1410 |
-
'sPageTitle'
|
1411 |
-
'data'
|
1412 |
'form_nonce' => $this->genNonce( '' ),
|
1413 |
'mod_slug' => $this->getModSlug( true ),
|
1414 |
'mod_slug_short' => $this->getModSlug( false ),
|
@@ -1416,11 +1416,13 @@ abstract class ICWP_WPSF_FeatureHandler_Base extends ICWP_WPSF_Foundation {
|
|
1416 |
'all_options_input' => $this->collateAllFormInputsForAllOptions(),
|
1417 |
'hidden_options' => $this->getOptionsVo()->getHiddenOptions()
|
1418 |
),
|
1419 |
-
'
|
1420 |
-
|
|
|
|
|
|
|
1421 |
'access_restricted' => !$this->canDisplayOptionsForm(),
|
1422 |
'show_ads' => $this->getIsShowMarketing(),
|
1423 |
-
'show_summary' => false,
|
1424 |
'wrap_page_content' => true,
|
1425 |
'show_standard_options' => true,
|
1426 |
'show_content_actions' => $this->hasCustomActions(),
|
@@ -1429,15 +1431,13 @@ abstract class ICWP_WPSF_FeatureHandler_Base extends ICWP_WPSF_Foundation {
|
|
1429 |
'can_wizard' => $this->canRunWizards(),
|
1430 |
'has_wizard' => $this->hasWizard(),
|
1431 |
),
|
1432 |
-
'hrefs'
|
1433 |
-
'go_pro'
|
1434 |
-
'goprofooter'
|
1435 |
-
'
|
1436 |
-
'
|
1437 |
-
'wizard_landing' => $this->getUrl_WizardLanding(),
|
1438 |
-
'primary_wizard' => $this->getUrl_WizardPrimary(),
|
1439 |
),
|
1440 |
-
'content'
|
1441 |
'options_form' => '',
|
1442 |
'alt' => '',
|
1443 |
'actions' => '',
|
@@ -1447,7 +1447,6 @@ abstract class ICWP_WPSF_FeatureHandler_Base extends ICWP_WPSF_Foundation {
|
|
1447 |
);
|
1448 |
|
1449 |
if ( $bRenderEmbeddedContent ) { // prevents recursive loops
|
1450 |
-
|
1451 |
$aData[ 'content' ] = array(
|
1452 |
'options_form' => 'no form',
|
1453 |
'alt' => '',
|
@@ -1472,6 +1471,7 @@ abstract class ICWP_WPSF_FeatureHandler_Base extends ICWP_WPSF_Foundation {
|
|
1472 |
'blog' => __( 'Blog' ),
|
1473 |
'save_all_settings' => __( 'Save All Settings' ),
|
1474 |
'see_help_video' => __( 'Watch Help Video' ),
|
|
|
1475 |
'btn_options' => __( 'Options' ),
|
1476 |
'btn_help' => __( 'Help' ),
|
1477 |
'btn_actions' => $this->hasCustomActions() ? __( 'Actions' ) : __( 'No Actions' ),
|
@@ -1515,13 +1515,6 @@ abstract class ICWP_WPSF_FeatureHandler_Base extends ICWP_WPSF_Foundation {
|
|
1515 |
return $this->renderTemplate( 'snippets/module-wizard-template.php', $aData );
|
1516 |
}
|
1517 |
|
1518 |
-
/**
|
1519 |
-
* @return string|null
|
1520 |
-
*/
|
1521 |
-
protected function getPrimaryWizard() {
|
1522 |
-
return $this->hasWizard() ? key( $this->getWizardDefinitions() ) : null;
|
1523 |
-
}
|
1524 |
-
|
1525 |
/**
|
1526 |
* @uses nonce
|
1527 |
* @param string $sWizardSlug
|
@@ -1546,14 +1539,6 @@ abstract class ICWP_WPSF_FeatureHandler_Base extends ICWP_WPSF_Foundation {
|
|
1546 |
return $this->getUrl_Wizard( 'landing' );
|
1547 |
}
|
1548 |
|
1549 |
-
/**
|
1550 |
-
* @return string
|
1551 |
-
*/
|
1552 |
-
protected function getUrl_WizardPrimary() {
|
1553 |
-
$sPrimary = $this->getPrimaryWizard();
|
1554 |
-
return $this->getUrl_Wizard( $sPrimary );
|
1555 |
-
}
|
1556 |
-
|
1557 |
/**
|
1558 |
* @return array
|
1559 |
*/
|
@@ -1599,7 +1584,7 @@ abstract class ICWP_WPSF_FeatureHandler_Base extends ICWP_WPSF_Foundation {
|
|
1599 |
// Get the same Base Data as normal display
|
1600 |
return $this->loadRenderer( self::getConn()->getPath_Templates() )
|
1601 |
->setTemplate( $sTemplate )
|
1602 |
-
->setRenderVars( $this->getBaseDisplayData() )
|
1603 |
->render();
|
1604 |
}
|
1605 |
|
@@ -1633,7 +1618,7 @@ abstract class ICWP_WPSF_FeatureHandler_Base extends ICWP_WPSF_Foundation {
|
|
1633 |
$oDp = $this->loadDataProcessor();
|
1634 |
|
1635 |
// Get Base Data
|
1636 |
-
$aData = $oDp->mergeArraysRecursive( $this->getBaseDisplayData(), $aData );
|
1637 |
if ( empty( $sSubView ) || !$oRndr->getTemplateExists( $sSubView ) ) {
|
1638 |
$sModuleView = 'feature-'.$this->getFeatureSlug();
|
1639 |
$sSubView = $oRndr->getTemplateExists( $sModuleView ) ? $sModuleView : 'feature-default';
|
@@ -1663,9 +1648,6 @@ abstract class ICWP_WPSF_FeatureHandler_Base extends ICWP_WPSF_Foundation {
|
|
1663 |
throw new Exception( 'notice_attributes is empty' );
|
1664 |
}
|
1665 |
|
1666 |
-
if ( !isset( $aData[ 'icwp_ajax_nonce' ] ) ) {
|
1667 |
-
$aData[ 'icwp_ajax_nonce' ] = wp_create_nonce( 'icwp_ajax' );
|
1668 |
-
}
|
1669 |
if ( !isset( $aData[ 'icwp_admin_notice_template' ] ) ) {
|
1670 |
$aData[ 'icwp_admin_notice_template' ] = $aData[ 'notice_attributes' ][ 'notice_id' ];
|
1671 |
}
|
@@ -1682,7 +1664,12 @@ abstract class ICWP_WPSF_FeatureHandler_Base extends ICWP_WPSF_Foundation {
|
|
1682 |
}
|
1683 |
$aData[ 'notice_classes' ] = implode( ' ', $aData[ 'notice_classes' ] );
|
1684 |
|
1685 |
-
|
|
|
|
|
|
|
|
|
|
|
1686 |
}
|
1687 |
|
1688 |
/**
|
@@ -1871,4 +1858,13 @@ abstract class ICWP_WPSF_FeatureHandler_Base extends ICWP_WPSF_Foundation {
|
|
1871 |
$aOpts[ $sKey ] = $mValue;
|
1872 |
return $this->setOpt( 'help_video_options', $aOpts );
|
1873 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1874 |
}
|
109 |
add_action( $this->prefix( 'run_processors' ), array( $this, 'onRunProcessors' ), $nRunPriority );
|
110 |
add_action( 'init', array( $this, 'onWpInit' ), 1 );
|
111 |
add_action( $this->prefix( 'import_options' ), array( $this, 'processImportOptions' ) );
|
112 |
+
|
113 |
+
if ( $this->isModuleRequest() ) {
|
114 |
+
add_action( $this->prefix( 'form_submit' ), array( $this, 'handleOptionsSubmit' ) );
|
115 |
+
add_filter( $this->prefix( 'ajaxAction' ), array( $this, 'handleAjax' ) );
|
116 |
+
add_filter( $this->prefix( 'ajaxAuthAction' ), array( $this, 'handleAuthAjax' ) );
|
117 |
+
add_filter( $this->prefix( 'ajaxNonAuthAction' ), array( $this, 'handleNonAuthAjax' ) );
|
118 |
}
|
119 |
+
|
120 |
add_filter( $this->prefix( 'filter_plugin_submenu_items' ), array( $this, 'filter_addPluginSubMenuItem' ) );
|
121 |
add_filter( $this->prefix( 'get_feature_summary_data' ), array( $this, 'filter_getFeatureSummaryData' ) );
|
122 |
add_action( $this->prefix( 'plugin_shutdown' ), array( $this, 'action_doFeatureShutdown' ) );
|
132 |
}
|
133 |
}
|
134 |
|
135 |
+
/**
|
136 |
+
* This is ajax for anyone logged-in or not logged-care. Due care must be taken here.
|
137 |
+
* @param array $aAjaxResponse
|
138 |
+
* @return array
|
139 |
+
*/
|
140 |
+
public function handleAjax( $aAjaxResponse ) {
|
141 |
+
return $this->normaliseAjaxResponse( $aAjaxResponse );
|
142 |
+
}
|
143 |
+
|
144 |
+
/**
|
145 |
+
* Ajax for any request not logged-in.
|
146 |
+
* @param array $aAjaxResponse
|
147 |
+
* @return array
|
148 |
+
*/
|
149 |
+
public function handleNonAuthAjax( $aAjaxResponse ) {
|
150 |
+
return $this->normaliseAjaxResponse( $aAjaxResponse );
|
151 |
+
}
|
152 |
+
|
153 |
+
/**
|
154 |
+
* @param array $aAjaxResponse
|
155 |
+
* @return array
|
156 |
+
*/
|
157 |
+
public function handleAuthAjax( $aAjaxResponse ) {
|
158 |
+
|
159 |
+
if ( empty( $aAjaxResponse ) ) {
|
160 |
+
switch ( $this->loadDP()->request( 'exec' ) ) {
|
161 |
+
|
162 |
+
case 'mod_options':
|
163 |
+
$aAjaxResponse = $this->ajaxExec_ModOptions();
|
164 |
+
break;
|
165 |
+
|
166 |
+
case 'wiz_process_step':
|
167 |
+
$aAjaxResponse = $this->ajaxExec_ModOptions();
|
168 |
+
if ( $this->canRunWizards() && $this->hasWizard() ) {
|
169 |
+
$aAjaxResponse = $this->getWizardHandler()
|
170 |
+
->ajaxExec_WizProcessStep();
|
171 |
+
}
|
172 |
+
break;
|
173 |
+
|
174 |
+
case 'wiz_render_step':
|
175 |
+
if ( $this->canRunWizards() && $this->hasWizard() ) {
|
176 |
+
$aAjaxResponse = $this->getWizardHandler()
|
177 |
+
->ajaxExec_WizRenderStep();
|
178 |
+
}
|
179 |
+
break;
|
180 |
+
}
|
181 |
+
}
|
182 |
+
|
183 |
+
return $this->normaliseAjaxResponse( $aAjaxResponse );
|
184 |
+
}
|
185 |
+
|
186 |
+
/**
|
187 |
+
* We check for empty since if it's empty, there's nothing to normalize. It's a filter,
|
188 |
+
* so if we send something back non-empty, it'll be treated like a "handled" response and
|
189 |
+
* processing will finish
|
190 |
+
* @param array $aAjaxResponse
|
191 |
+
* @return array
|
192 |
+
*/
|
193 |
+
protected function normaliseAjaxResponse( $aAjaxResponse ) {
|
194 |
+
if ( !empty( $aAjaxResponse ) ) {
|
195 |
+
$aAjaxResponse = array_merge(
|
196 |
+
array(
|
197 |
+
'success' => false,
|
198 |
+
'message' => 'Unknown',
|
199 |
+
'html' => '',
|
200 |
+
),
|
201 |
+
$aAjaxResponse
|
202 |
+
);
|
203 |
+
}
|
204 |
+
return $aAjaxResponse;
|
205 |
+
}
|
206 |
+
|
207 |
/**
|
208 |
* @param array $aAdminNotices
|
209 |
* @return array
|
329 |
public function onWpInit() {
|
330 |
$this->runWizards();
|
331 |
$this->updateHandler();
|
|
|
332 |
}
|
333 |
|
334 |
/**
|
335 |
* Override this and adapt per feature
|
336 |
* @return ICWP_WPSF_Processor_Base
|
337 |
*/
|
338 |
+
protected function loadProcessor() {
|
339 |
if ( !isset( $this->oProcessor ) ) {
|
340 |
include_once( self::getConn()
|
341 |
->getPath_SourceFile( sprintf( 'processors/%s.php', $this->getFeatureSlug() ) ) );
|
431 |
* @return ICWP_WPSF_Processor_Base
|
432 |
*/
|
433 |
public function getProcessor() {
|
434 |
+
return $this->loadProcessor();
|
435 |
}
|
436 |
|
437 |
/**
|
754 |
* @param array|string $mErrors
|
755 |
* @return $this
|
756 |
*/
|
757 |
+
public function setLastErrors( $mErrors = array() ) {
|
758 |
if ( !is_array( $mErrors ) ) {
|
759 |
if ( is_string( $mErrors ) ) {
|
760 |
$mErrors = array( $mErrors );
|
789 |
}
|
790 |
}
|
791 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
792 |
/**
|
|
|
|
|
793 |
* @return bool
|
794 |
*/
|
795 |
+
protected function isModuleRequest() {
|
796 |
+
return ( $this->getModSlug() == $this->loadDP()->request( 'mod_slug' ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
797 |
}
|
798 |
|
799 |
/**
|
801 |
* @param bool $bAsJsonEncodedObject
|
802 |
* @return array
|
803 |
*/
|
804 |
+
public function getAjaxActionData( $sAction = '', $bAsJsonEncodedObject = false ) {
|
805 |
$aData = array(
|
806 |
+
'action' => $this->prefix(), //wp ajax doesn't work without this.
|
807 |
+
'exec' => $sAction,
|
808 |
+
'exec_nonce' => $this->genNonce( $sAction ),
|
809 |
+
'mod_slug' => $this->getModSlug(),
|
810 |
+
'ajaxurl' => admin_url( 'admin-ajax.php' ),
|
|
|
811 |
);
|
812 |
return $bAsJsonEncodedObject ? json_encode( (object)$aData ) : $aData;
|
813 |
}
|
814 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
815 |
/**
|
816 |
* @param string $sAction
|
817 |
* @return string
|
818 |
*/
|
819 |
+
public function genNonce( $sAction = '' ) {
|
820 |
+
return wp_create_nonce( $sAction );
|
821 |
}
|
822 |
|
823 |
/**
|
825 |
* @param string $sAction
|
826 |
* @return bool
|
827 |
*/
|
828 |
+
public function checkNonceAction( $sNonce, $sAction = '' ) {
|
829 |
return wp_verify_nonce( $sNonce, $this->prefix( $sAction ) );
|
830 |
}
|
831 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
832 |
/**
|
833 |
* @return bool
|
834 |
*/
|
860 |
return $this->oWizard;
|
861 |
}
|
862 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
863 |
/**
|
864 |
* Saves the options to the WordPress Options store.
|
865 |
* It will also update the stored plugin options version.
|
943 |
$aWarnings,
|
944 |
$this->getSectionWarnings( $aSection[ 'slug' ] )
|
945 |
);
|
946 |
+
$aOptions[ $nSectionKey ][ 'notices' ] = $this->getSectionNotices( $aSection[ 'slug' ] );
|
947 |
}
|
948 |
}
|
949 |
|
950 |
return $aOptions;
|
951 |
}
|
952 |
|
953 |
+
/**
|
954 |
+
* @param string $sSectionSlug
|
955 |
+
* @return array
|
956 |
+
*/
|
957 |
+
protected function getSectionNotices( $sSectionSlug ) {
|
958 |
+
return array();
|
959 |
+
}
|
960 |
+
|
961 |
/**
|
962 |
* @param string $sSectionSlug
|
963 |
* @return array
|
1077 |
return implode( self::CollateSeparator, $aToJoin );
|
1078 |
}
|
1079 |
|
1080 |
+
/**
|
1081 |
+
* @return array
|
1082 |
+
*/
|
1083 |
+
protected function ajaxExec_ModOptions() {
|
|
|
1084 |
|
1085 |
$oCon = self::getConn();
|
1086 |
$bSuccess = false;
|
1087 |
$sName = $oCon->getHumanName();
|
1088 |
$sMessage = sprintf( _wpsf__( 'Failed up to update %s plugin options.' ), $sName );
|
1089 |
|
1090 |
+
if ( $oCon->getIsValidAdminArea() ) {
|
1091 |
+
$bSuccess = $this->saveOptionsSubmit();
|
1092 |
if ( $bSuccess ) {
|
1093 |
$sMessage = sprintf( _wpsf__( '%s Plugin options updated successfully.' ), $sName );
|
1094 |
}
|
1097 |
$sMessage = sprintf( _wpsf__( 'Failed to update %s options as you are not authenticated with %s as a Security Admin.' ), $sName, $sName );
|
1098 |
}
|
1099 |
|
1100 |
+
try {
|
1101 |
+
$sForm = $this->renderOptionsForm();
|
1102 |
+
}
|
1103 |
+
catch ( Exception $oE ) {
|
1104 |
+
$sForm = 'Error during form render';
|
1105 |
+
}
|
1106 |
+
return array(
|
1107 |
+
'success' => $bSuccess,
|
1108 |
+
'html' => $sForm,
|
1109 |
+
'message' => $sMessage
|
1110 |
);
|
1111 |
}
|
1112 |
|
1113 |
/**
|
1114 |
* @return bool
|
1115 |
*/
|
1116 |
+
public function handleOptionsSubmit() {
|
1117 |
$bVerified = $this->verifyFormSubmit();
|
1118 |
if ( $bVerified ) {
|
1119 |
+
$this->saveOptionsSubmit();
|
|
|
1120 |
$this->setSaveUserResponse();
|
1121 |
}
|
1122 |
return $bVerified;
|
1125 |
/**
|
1126 |
* @return bool
|
1127 |
*/
|
1128 |
+
protected function saveOptionsSubmit() {
|
1129 |
+
$bSuccess = true;
|
1130 |
+
if ( self::getConn()->getHasPermissionToManage() ) {
|
1131 |
+
$this->doSaveStandardOptions();
|
1132 |
+
$this->doExtraSubmitProcessing();
|
1133 |
+
}
|
1134 |
+
else {
|
1135 |
+
// TODO: manage how we react to prohibited submissions
|
1136 |
+
$bSuccess = false;
|
1137 |
+
}
|
1138 |
+
return $bSuccess;
|
1139 |
}
|
1140 |
|
1141 |
protected function verifyFormSubmit() {
|
1322 |
* @return string
|
1323 |
*/
|
1324 |
public function prefix( $sSuffix = '', $sGlue = '-' ) {
|
1325 |
+
return self::getConn()->prefix( $sSuffix, $sGlue );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1326 |
}
|
1327 |
|
1328 |
/**
|
1369 |
protected function displayRestrictedPage() {
|
1370 |
$this->display(
|
1371 |
array(
|
1372 |
+
'ajax' => array(
|
1373 |
+
'restricted_access' => $this->getAjaxActionData( 'restricted_access' )
|
1374 |
+
)
|
1375 |
),
|
1376 |
'access_restricted.php'
|
1377 |
);
|
1381 |
* @param bool $bRenderEmbeddedContent
|
1382 |
* @return array
|
1383 |
*/
|
1384 |
+
protected function getBaseDisplayData( $bRenderEmbeddedContent = false ) {
|
1385 |
$oCon = self::getConn();
|
1386 |
self::$sActivelyDisplayedModuleOptions = $this->getFeatureSlug();
|
1387 |
|
1404 |
'width' => 772,
|
1405 |
'height' => 454,
|
1406 |
),
|
1407 |
+
'aSummaryData' => apply_filters( $this->prefix( 'get_feature_summary_data' ), array() ),
|
|
|
|
|
1408 |
|
1409 |
// 'sPageTitle' => sprintf( '%s: %s', $oCon->getHumanName(), $this->getMainFeatureName() ),
|
1410 |
+
'sPageTitle' => $this->getMainFeatureName(),
|
1411 |
+
'data' => array(
|
1412 |
'form_nonce' => $this->genNonce( '' ),
|
1413 |
'mod_slug' => $this->getModSlug( true ),
|
1414 |
'mod_slug_short' => $this->getModSlug( false ),
|
1416 |
'all_options_input' => $this->collateAllFormInputsForAllOptions(),
|
1417 |
'hidden_options' => $this->getOptionsVo()->getHiddenOptions()
|
1418 |
),
|
1419 |
+
'ajax' => array(
|
1420 |
+
'mod_options' => $this->getAjaxActionData( 'mod_options' ),
|
1421 |
+
),
|
1422 |
+
'strings' => $this->getDisplayStrings(),
|
1423 |
+
'flags' => array(
|
1424 |
'access_restricted' => !$this->canDisplayOptionsForm(),
|
1425 |
'show_ads' => $this->getIsShowMarketing(),
|
|
|
1426 |
'wrap_page_content' => true,
|
1427 |
'show_standard_options' => true,
|
1428 |
'show_content_actions' => $this->hasCustomActions(),
|
1431 |
'can_wizard' => $this->canRunWizards(),
|
1432 |
'has_wizard' => $this->hasWizard(),
|
1433 |
),
|
1434 |
+
'hrefs' => array(
|
1435 |
+
'go_pro' => 'http://icwp.io/shieldgoprofeature',
|
1436 |
+
'goprofooter' => 'http://icwp.io/goprofooter',
|
1437 |
+
'wizard_link' => $this->getUrl_WizardLanding(),
|
1438 |
+
'wizard_landing' => $this->getUrl_WizardLanding()
|
|
|
|
|
1439 |
),
|
1440 |
+
'content' => array(
|
1441 |
'options_form' => '',
|
1442 |
'alt' => '',
|
1443 |
'actions' => '',
|
1447 |
);
|
1448 |
|
1449 |
if ( $bRenderEmbeddedContent ) { // prevents recursive loops
|
|
|
1450 |
$aData[ 'content' ] = array(
|
1451 |
'options_form' => 'no form',
|
1452 |
'alt' => '',
|
1471 |
'blog' => __( 'Blog' ),
|
1472 |
'save_all_settings' => __( 'Save All Settings' ),
|
1473 |
'see_help_video' => __( 'Watch Help Video' ),
|
1474 |
+
'btn_save' => __( 'Save Options' ),
|
1475 |
'btn_options' => __( 'Options' ),
|
1476 |
'btn_help' => __( 'Help' ),
|
1477 |
'btn_actions' => $this->hasCustomActions() ? __( 'Actions' ) : __( 'No Actions' ),
|
1515 |
return $this->renderTemplate( 'snippets/module-wizard-template.php', $aData );
|
1516 |
}
|
1517 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1518 |
/**
|
1519 |
* @uses nonce
|
1520 |
* @param string $sWizardSlug
|
1539 |
return $this->getUrl_Wizard( 'landing' );
|
1540 |
}
|
1541 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1542 |
/**
|
1543 |
* @return array
|
1544 |
*/
|
1584 |
// Get the same Base Data as normal display
|
1585 |
return $this->loadRenderer( self::getConn()->getPath_Templates() )
|
1586 |
->setTemplate( $sTemplate )
|
1587 |
+
->setRenderVars( $this->getBaseDisplayData( true ) )
|
1588 |
->render();
|
1589 |
}
|
1590 |
|
1618 |
$oDp = $this->loadDataProcessor();
|
1619 |
|
1620 |
// Get Base Data
|
1621 |
+
$aData = $oDp->mergeArraysRecursive( $this->getBaseDisplayData( true ), $aData );
|
1622 |
if ( empty( $sSubView ) || !$oRndr->getTemplateExists( $sSubView ) ) {
|
1623 |
$sModuleView = 'feature-'.$this->getFeatureSlug();
|
1624 |
$sSubView = $oRndr->getTemplateExists( $sModuleView ) ? $sModuleView : 'feature-default';
|
1648 |
throw new Exception( 'notice_attributes is empty' );
|
1649 |
}
|
1650 |
|
|
|
|
|
|
|
1651 |
if ( !isset( $aData[ 'icwp_admin_notice_template' ] ) ) {
|
1652 |
$aData[ 'icwp_admin_notice_template' ] = $aData[ 'notice_attributes' ][ 'notice_id' ];
|
1653 |
}
|
1664 |
}
|
1665 |
$aData[ 'notice_classes' ] = implode( ' ', $aData[ 'notice_classes' ] );
|
1666 |
|
1667 |
+
$aAjaxData = $this->getAjaxActionData( 'dismiss_admin_notice' );
|
1668 |
+
$aAjaxData[ 'hide' ] = 1;
|
1669 |
+
$aAjaxData[ 'notice_id' ] = $aData[ 'notice_attributes' ][ 'notice_id' ];
|
1670 |
+
$aData[ 'ajax' ][ 'dismiss_admin_notice' ] = json_encode( $aAjaxData );
|
1671 |
+
|
1672 |
+
return $this->renderTemplate( 'notices/admin-notice-template', $aData );
|
1673 |
}
|
1674 |
|
1675 |
/**
|
1858 |
$aOpts[ $sKey ] = $mValue;
|
1859 |
return $this->setOpt( 'help_video_options', $aOpts );
|
1860 |
}
|
1861 |
+
|
1862 |
+
/**
|
1863 |
+
* @param string $sOpt
|
1864 |
+
* @param int $nAt
|
1865 |
+
* @return $this
|
1866 |
+
*/
|
1867 |
+
protected function setOptAt( $sOpt, $nAt = null ) {
|
1868 |
+
return $this->setOpt( $sOpt, is_null( $nAt ) ? $this->loadDP()->time() : max( 0, (int)$nAt ) );
|
1869 |
+
}
|
1870 |
}
|
src/features/base_wpsf.php
CHANGED
@@ -89,6 +89,16 @@ class ICWP_WPSF_FeatureHandler_BaseWpsf extends ICWP_WPSF_FeatureHandler_Base {
|
|
89 |
return ( !empty( $sSecret ) && !empty( $sKey ) && $this->loadDataProcessor()->getPhpSupportsNamespaces() );
|
90 |
}
|
91 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
92 |
/**
|
93 |
* @param bool $bRenderEmbeddedContent
|
94 |
* @return array
|
@@ -97,6 +107,9 @@ class ICWP_WPSF_FeatureHandler_BaseWpsf extends ICWP_WPSF_FeatureHandler_Base {
|
|
97 |
return $this->loadDP()->mergeArraysRecursive(
|
98 |
parent::getBaseDisplayData( $bRenderEmbeddedContent ),
|
99 |
array(
|
|
|
|
|
|
|
100 |
'strings' => array(
|
101 |
'go_to_settings' => _wpsf__( 'Settings' ),
|
102 |
'on' => _wpsf__( 'On' ),
|
@@ -120,8 +133,7 @@ class ICWP_WPSF_FeatureHandler_BaseWpsf extends ICWP_WPSF_FeatureHandler_Base {
|
|
120 |
'aar_forget_key' => _wpsf__( "Forgotten Key" )
|
121 |
),
|
122 |
'flags' => array(
|
123 |
-
'
|
124 |
-
'has_session' => $this->hasSession()
|
125 |
),
|
126 |
'hrefs' => array(
|
127 |
'aar_forget_key' => 'http://icwp.io/b5',
|
@@ -161,6 +173,13 @@ class ICWP_WPSF_FeatureHandler_BaseWpsf extends ICWP_WPSF_FeatureHandler_Base {
|
|
161 |
);
|
162 |
}
|
163 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
164 |
protected function getTranslatedString( $sKey, $sDefault ) {
|
165 |
$aStrings = array(
|
166 |
'nonce_failed_empty' => _wpsf__( 'Nonce security checking failed - the nonce value was empty.' ),
|
89 |
return ( !empty( $sSecret ) && !empty( $sKey ) && $this->loadDataProcessor()->getPhpSupportsNamespaces() );
|
90 |
}
|
91 |
|
92 |
+
/**
|
93 |
+
* @return array
|
94 |
+
*/
|
95 |
+
protected function getSecAdminLoginAjaxData() {
|
96 |
+
// We set a custom mod_slug so that this module handles the ajax request
|
97 |
+
$aAjaxData = $this->getAjaxActionData( 'sec_admin_login' );
|
98 |
+
$aAjaxData[ 'mod_slug' ] = $this->prefix( 'admin_access_restriction' );
|
99 |
+
return $aAjaxData;
|
100 |
+
}
|
101 |
+
|
102 |
/**
|
103 |
* @param bool $bRenderEmbeddedContent
|
104 |
* @return array
|
107 |
return $this->loadDP()->mergeArraysRecursive(
|
108 |
parent::getBaseDisplayData( $bRenderEmbeddedContent ),
|
109 |
array(
|
110 |
+
'ajax' => array(
|
111 |
+
'sec_admin_login' => $this->getSecAdminLoginAjaxData(),
|
112 |
+
),
|
113 |
'strings' => array(
|
114 |
'go_to_settings' => _wpsf__( 'Settings' ),
|
115 |
'on' => _wpsf__( 'On' ),
|
133 |
'aar_forget_key' => _wpsf__( "Forgotten Key" )
|
134 |
),
|
135 |
'flags' => array(
|
136 |
+
'has_session' => $this->hasSession()
|
|
|
137 |
),
|
138 |
'hrefs' => array(
|
139 |
'aar_forget_key' => 'http://icwp.io/b5',
|
173 |
);
|
174 |
}
|
175 |
|
176 |
+
/**
|
177 |
+
* @return bool
|
178 |
+
*/
|
179 |
+
public function getIfSupport3rdParty() {
|
180 |
+
return $this->isPremium();
|
181 |
+
}
|
182 |
+
|
183 |
protected function getTranslatedString( $sKey, $sDefault ) {
|
184 |
$aStrings = array(
|
185 |
'nonce_failed_empty' => _wpsf__( 'Nonce security checking failed - the nonce value was empty.' ),
|
src/features/email.php
CHANGED
@@ -1,85 +1,78 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
if (
|
|
|
|
|
4 |
|
5 |
-
|
6 |
|
7 |
-
|
8 |
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
* @param array $aMessage
|
17 |
-
* @return array
|
18 |
-
*/
|
19 |
-
public function customiseMandrill( $aMessage ) {
|
20 |
-
if ( empty( $aMessage['text'] ) ) {
|
21 |
-
$aMessage['text'] = $aMessage['html'];
|
22 |
-
}
|
23 |
-
return $aMessage;
|
24 |
-
}
|
25 |
-
|
26 |
-
/**
|
27 |
-
* @param array $aOptionsParams
|
28 |
-
* @return array
|
29 |
-
* @throws Exception
|
30 |
-
*/
|
31 |
-
protected function loadStrings_SectionTitles( $aOptionsParams ) {
|
32 |
-
|
33 |
-
$sSectionSlug = $aOptionsParams['slug'];
|
34 |
-
switch( $sSectionSlug ) {
|
35 |
-
|
36 |
-
case 'section_email_options' :
|
37 |
-
$sTitle = _wpsf__( 'Email Options' );
|
38 |
-
break;
|
39 |
-
|
40 |
-
default:
|
41 |
-
throw new Exception( sprintf( 'A section slug was defined but with no associated strings. Slug: "%s".', $sSectionSlug ) );
|
42 |
-
}
|
43 |
-
$aOptionsParams['title'] = $sTitle;
|
44 |
-
return $aOptionsParams;
|
45 |
}
|
|
|
|
|
46 |
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
|
54 |
-
|
55 |
-
|
56 |
-
case 'send_email_throttle_limit' :
|
57 |
-
$sName = _wpsf__( 'Email Throttle Limit' );
|
58 |
-
$sSummary = _wpsf__( 'Limit Emails Per Second' );
|
59 |
-
$sDescription = _wpsf__( 'You throttle emails sent by this plugin by limiting the number of emails sent every second. This is useful in case you get hit by a bot attack. Zero (0) turns this off. Suggested: 10' );
|
60 |
-
break;
|
61 |
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
|
66 |
-
|
67 |
-
|
68 |
-
$aOptionsParams['description'] = $sDescription;
|
69 |
-
return $aOptionsParams;
|
70 |
}
|
|
|
|
|
|
|
71 |
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
81 |
}
|
82 |
|
|
|
|
|
|
|
|
|
83 |
}
|
84 |
|
85 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<?php
|
2 |
|
3 |
+
if ( class_exists( 'ICWP_WPSF_FeatureHandler_Email', false ) ) {
|
4 |
+
return;
|
5 |
+
}
|
6 |
|
7 |
+
require_once( dirname( __FILE__ ).'/base_wpsf.php' );
|
8 |
|
9 |
+
class ICWP_WPSF_FeatureHandler_Email extends ICWP_WPSF_FeatureHandler_BaseWpsf {
|
10 |
|
11 |
+
/**
|
12 |
+
* @param array $aMessage
|
13 |
+
* @return array
|
14 |
+
*/
|
15 |
+
public function customiseMandrill( $aMessage ) {
|
16 |
+
if ( empty( $aMessage[ 'text' ] ) ) {
|
17 |
+
$aMessage[ 'text' ] = $aMessage[ 'html' ];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
18 |
}
|
19 |
+
return $aMessage;
|
20 |
+
}
|
21 |
|
22 |
+
/**
|
23 |
+
* @param array $aOptionsParams
|
24 |
+
* @return array
|
25 |
+
* @throws Exception
|
26 |
+
*/
|
27 |
+
protected function loadStrings_SectionTitles( $aOptionsParams ) {
|
28 |
|
29 |
+
$sSectionSlug = $aOptionsParams[ 'slug' ];
|
30 |
+
switch ( $sSectionSlug ) {
|
|
|
|
|
|
|
|
|
|
|
31 |
|
32 |
+
case 'section_email_options' :
|
33 |
+
$sTitle = _wpsf__( 'Email Options' );
|
34 |
+
break;
|
35 |
|
36 |
+
default:
|
37 |
+
throw new Exception( sprintf( 'A section slug was defined but with no associated strings. Slug: "%s".', $sSectionSlug ) );
|
|
|
|
|
38 |
}
|
39 |
+
$aOptionsParams[ 'title' ] = $sTitle;
|
40 |
+
return $aOptionsParams;
|
41 |
+
}
|
42 |
|
43 |
+
/**
|
44 |
+
* @param array $aOptionsParams
|
45 |
+
* @return array
|
46 |
+
* @throws Exception
|
47 |
+
*/
|
48 |
+
protected function loadStrings_Options( $aOptionsParams ) {
|
49 |
+
|
50 |
+
$sKey = $aOptionsParams[ 'key' ];
|
51 |
+
switch ( $sKey ) {
|
52 |
+
case 'send_email_throttle_limit' :
|
53 |
+
$sName = _wpsf__( 'Email Throttle Limit' );
|
54 |
+
$sSummary = _wpsf__( 'Limit Emails Per Second' );
|
55 |
+
$sDescription = _wpsf__( 'You throttle emails sent by this plugin by limiting the number of emails sent every second. This is useful in case you get hit by a bot attack. Zero (0) turns this off. Suggested: 10' );
|
56 |
+
break;
|
57 |
+
|
58 |
+
default:
|
59 |
+
throw new Exception( sprintf( 'An option has been defined but without strings assigned to it. Option key: "%s".', $sKey ) );
|
60 |
}
|
61 |
|
62 |
+
$aOptionsParams[ 'name' ] = $sName;
|
63 |
+
$aOptionsParams[ 'summary' ] = $sSummary;
|
64 |
+
$aOptionsParams[ 'description' ] = $sDescription;
|
65 |
+
return $aOptionsParams;
|
66 |
}
|
67 |
|
68 |
+
/**
|
69 |
+
* This is the point where you would want to do any options verification
|
70 |
+
*/
|
71 |
+
protected function doPrePluginOptionsSave() {
|
72 |
+
$sLimit = $this->getOpt( 'send_email_throttle_limit' );
|
73 |
+
if ( !is_numeric( $sLimit ) || $sLimit < 0 ) {
|
74 |
+
$sLimit = 0;
|
75 |
+
}
|
76 |
+
$this->setOpt( 'send_email_throttle_limit', $sLimit );
|
77 |
+
}
|
78 |
+
}
|
src/features/hack_protect.php
CHANGED
@@ -19,9 +19,24 @@ class ICWP_WPSF_FeatureHandler_HackProtect extends ICWP_WPSF_FeatureHandler_Base
|
|
19 |
}
|
20 |
}
|
21 |
|
22 |
-
|
23 |
-
|
24 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
}
|
26 |
|
27 |
/**
|
@@ -59,6 +74,23 @@ class ICWP_WPSF_FeatureHandler_HackProtect extends ICWP_WPSF_FeatureHandler_Base
|
|
59 |
}
|
60 |
}
|
61 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
62 |
/**
|
63 |
* @return int
|
64 |
*/
|
@@ -465,7 +497,10 @@ class ICWP_WPSF_FeatureHandler_HackProtect extends ICWP_WPSF_FeatureHandler_Base
|
|
465 |
return $this->setOpt( 'ptg_enable', $sValue );
|
466 |
}
|
467 |
|
468 |
-
|
|
|
|
|
|
|
469 |
$oDP = $this->loadDP();
|
470 |
$bReinstall = (bool)$oDP->post( 'reinstall' );
|
471 |
$bActivate = (bool)$oDP->post( 'activate' );
|
@@ -483,7 +518,9 @@ class ICWP_WPSF_FeatureHandler_HackProtect extends ICWP_WPSF_FeatureHandler_Base
|
|
483 |
$oWpP->activate( $sFile );
|
484 |
}
|
485 |
|
486 |
-
|
|
|
|
|
487 |
}
|
488 |
|
489 |
public function insertCustomJsVars() {
|
@@ -493,7 +530,7 @@ class ICWP_WPSF_FeatureHandler_HackProtect extends ICWP_WPSF_FeatureHandler_Base
|
|
493 |
$this->prefix( 'global-plugin' ),
|
494 |
'icwp_wpsf_vars_hp',
|
495 |
array(
|
496 |
-
'ajax_reinstall' => $this->
|
497 |
'reinstallable' => $this->getReinstallablePlugins()
|
498 |
)
|
499 |
);
|
@@ -516,6 +553,42 @@ class ICWP_WPSF_FeatureHandler_HackProtect extends ICWP_WPSF_FeatureHandler_Base
|
|
516 |
return $aP;
|
517 |
}
|
518 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
519 |
/**
|
520 |
* @param string $sSectionSlug
|
521 |
* @return array
|
19 |
}
|
20 |
}
|
21 |
|
22 |
+
/**
|
23 |
+
* @param array $aAjaxResponse
|
24 |
+
* @return array
|
25 |
+
*/
|
26 |
+
public function handleAuthAjax( $aAjaxResponse ) {
|
27 |
+
|
28 |
+
if ( empty( $aAjaxResponse ) ) {
|
29 |
+
switch ( $this->loadDP()->request( 'exec' ) ) {
|
30 |
+
|
31 |
+
case 'plugin_reinstall':
|
32 |
+
$aAjaxResponse = $this->ajaxExec_PluginReinstall();
|
33 |
+
break;
|
34 |
+
|
35 |
+
default:
|
36 |
+
break;
|
37 |
+
}
|
38 |
+
}
|
39 |
+
return parent::handleAuthAjax( $aAjaxResponse );
|
40 |
}
|
41 |
|
42 |
/**
|
74 |
}
|
75 |
}
|
76 |
|
77 |
+
/**
|
78 |
+
* @param string $sScan ptg, wcf, ufc, wpv
|
79 |
+
* @return int
|
80 |
+
*/
|
81 |
+
public function getLastScanAt( $sScan ) {
|
82 |
+
return (int)$this->getOpt( $sScan.'_last_scan_at', 0 );
|
83 |
+
}
|
84 |
+
|
85 |
+
/**
|
86 |
+
* @param string $sScan ptg, wcf, ufc, wpv
|
87 |
+
* @param int|null $nAt
|
88 |
+
* @return $this
|
89 |
+
*/
|
90 |
+
public function setLastScanAt( $sScan, $nAt = null ) {
|
91 |
+
return $this->setOpt( $sScan.'_last_scan_at', is_null( $nAt ) ? $this->loadDP()->time() : $nAt );
|
92 |
+
}
|
93 |
+
|
94 |
/**
|
95 |
* @return int
|
96 |
*/
|
497 |
return $this->setOpt( 'ptg_enable', $sValue );
|
498 |
}
|
499 |
|
500 |
+
/**
|
501 |
+
* @return array
|
502 |
+
*/
|
503 |
+
public function ajaxExec_PluginReinstall() {
|
504 |
$oDP = $this->loadDP();
|
505 |
$bReinstall = (bool)$oDP->post( 'reinstall' );
|
506 |
$bActivate = (bool)$oDP->post( 'activate' );
|
518 |
$oWpP->activate( $sFile );
|
519 |
}
|
520 |
|
521 |
+
return array(
|
522 |
+
'success' => true
|
523 |
+
);
|
524 |
}
|
525 |
|
526 |
public function insertCustomJsVars() {
|
530 |
$this->prefix( 'global-plugin' ),
|
531 |
'icwp_wpsf_vars_hp',
|
532 |
array(
|
533 |
+
'ajax_reinstall' => $this->getAjaxActionData( 'plugin_reinstall' ),
|
534 |
'reinstallable' => $this->getReinstallablePlugins()
|
535 |
)
|
536 |
);
|
553 |
return $aP;
|
554 |
}
|
555 |
|
556 |
+
/**
|
557 |
+
* @param string $sSectionSlug
|
558 |
+
* @return array
|
559 |
+
*/
|
560 |
+
protected function getSectionNotices( $sSectionSlug ) {
|
561 |
+
$aNotices = array();
|
562 |
+
switch ( $sSectionSlug ) {
|
563 |
+
|
564 |
+
case 'section_core_file_integrity_scan':
|
565 |
+
$nTime = $this->getLastScanAt( 'wcf' );
|
566 |
+
break;
|
567 |
+
|
568 |
+
case 'section_unrecognised_file_scan':
|
569 |
+
$nTime = $this->getLastScanAt( 'ufc' );
|
570 |
+
break;
|
571 |
+
|
572 |
+
case 'section_pluginthemes_guard':
|
573 |
+
$nTime = $this->getLastScanAt( 'ptg' );
|
574 |
+
break;
|
575 |
+
|
576 |
+
case 'section_wpvuln_scan':
|
577 |
+
$nTime = $this->getLastScanAt( 'wpv' );
|
578 |
+
break;
|
579 |
+
|
580 |
+
default:
|
581 |
+
$nTime = null;
|
582 |
+
break;
|
583 |
+
}
|
584 |
+
|
585 |
+
if ( !is_null( $nTime ) ) {
|
586 |
+
$nTime = ( $nTime > 0 ) ? $this->loadWp()->getTimeStampForDisplay( $nTime ) : _wpsf__( 'Never' );
|
587 |
+
$aNotices[] = sprintf( _wpsf__( 'Last Scan Time: %s' ), $nTime );
|
588 |
+
}
|
589 |
+
return $aNotices;
|
590 |
+
}
|
591 |
+
|
592 |
/**
|
593 |
* @param string $sSectionSlug
|
594 |
* @return array
|
src/features/ips.php
CHANGED
@@ -74,7 +74,7 @@ class ICWP_WPSF_FeatureHandler_Ips extends ICWP_WPSF_FeatureHandler_BaseWpsf {
|
|
74 |
return array(
|
75 |
'ajax' => $this->getAjaxDataSets(),
|
76 |
);
|
77 |
-
}
|
78 |
|
79 |
/**
|
80 |
* @return array
|
@@ -132,52 +132,72 @@ class ICWP_WPSF_FeatureHandler_Ips extends ICWP_WPSF_FeatureHandler_BaseWpsf {
|
|
132 |
return !$this->getOptIs( 'track_404', 'disabled' );
|
133 |
}
|
134 |
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
141 |
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
146 |
}
|
147 |
|
148 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
149 |
|
|
|
150 |
/** @var ICWP_WPSF_Processor_Ips $oProcessor */
|
151 |
$oProcessor = $this->getProcessor();
|
152 |
-
$sResponseData = array();
|
153 |
-
|
154 |
$oDp = $this->loadDP();
|
|
|
155 |
$oProcessor->removeIpFromList( $oDp->post( 'ip' ), $oDp->post( 'list' ) );
|
156 |
|
157 |
-
|
158 |
-
|
|
|
|
|
159 |
}
|
160 |
|
161 |
-
|
162 |
-
|
163 |
/** @var ICWP_WPSF_Processor_Ips $oProcessor */
|
164 |
$oProcessor = $this->getProcessor();
|
165 |
-
$sResponseData = array();
|
166 |
-
|
167 |
$oDp = $this->loadDP();
|
168 |
|
169 |
$sIp = $oDp->post( 'ip', '' );
|
170 |
$sLabel = $oDp->post( 'label', '' );
|
171 |
if ( !empty( $sIp ) ) {
|
172 |
-
$
|
173 |
}
|
174 |
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
// }
|
180 |
-
$this->sendAjaxResponse( true, $sResponseData );
|
181 |
}
|
182 |
|
183 |
/**
|
@@ -185,9 +205,9 @@ class ICWP_WPSF_FeatureHandler_Ips extends ICWP_WPSF_FeatureHandler_BaseWpsf {
|
|
185 |
*/
|
186 |
protected function getAjaxDataSets() {
|
187 |
return array(
|
188 |
-
'glist' => $this->
|
189 |
-
'alist' => $this->
|
190 |
-
'rlist' => $this->
|
191 |
);
|
192 |
}
|
193 |
|
74 |
return array(
|
75 |
'ajax' => $this->getAjaxDataSets(),
|
76 |
);
|
77 |
+
}
|
78 |
|
79 |
/**
|
80 |
* @return array
|
132 |
return !$this->getOptIs( 'track_404', 'disabled' );
|
133 |
}
|
134 |
|
135 |
+
/**
|
136 |
+
* @param array $aAjaxResponse
|
137 |
+
* @return array
|
138 |
+
*/
|
139 |
+
public function handleAuthAjax( $aAjaxResponse ) {
|
140 |
+
|
141 |
+
if ( empty( $aAjaxResponse ) ) {
|
142 |
+
switch ( $this->loadDP()->request( 'exec' ) ) {
|
143 |
+
|
144 |
+
case 'get_ip_list':
|
145 |
+
$aAjaxResponse = $this->ajaxExec_GetIpList();
|
146 |
+
break;
|
147 |
|
148 |
+
case 'add_ip_white':
|
149 |
+
$aAjaxResponse = $this->ajaxExec_AddIpToWhitelist();
|
150 |
+
break;
|
151 |
+
|
152 |
+
case 'remove_ip':
|
153 |
+
$aAjaxResponse = $this->ajaxExec_RemoveIpFromList();
|
154 |
+
break;
|
155 |
+
|
156 |
+
default:
|
157 |
+
break;
|
158 |
+
}
|
159 |
+
}
|
160 |
+
return parent::handleAuthAjax( $aAjaxResponse );
|
161 |
}
|
162 |
|
163 |
+
/**
|
164 |
+
* @return array
|
165 |
+
*/
|
166 |
+
protected function ajaxExec_GetIpList() {
|
167 |
+
return array(
|
168 |
+
'success' => true,
|
169 |
+
'html' => $this->renderListTable( $this->loadDP()->post( 'list', '' ) )
|
170 |
+
);
|
171 |
+
}
|
172 |
|
173 |
+
public function ajaxExec_RemoveIpFromList() {
|
174 |
/** @var ICWP_WPSF_Processor_Ips $oProcessor */
|
175 |
$oProcessor = $this->getProcessor();
|
|
|
|
|
176 |
$oDp = $this->loadDP();
|
177 |
+
|
178 |
$oProcessor->removeIpFromList( $oDp->post( 'ip' ), $oDp->post( 'list' ) );
|
179 |
|
180 |
+
return array(
|
181 |
+
'success' => true,
|
182 |
+
'html' => $this->renderListTable( $oDp->post( 'list', '' ) ),
|
183 |
+
);
|
184 |
}
|
185 |
|
186 |
+
protected function ajaxExec_AddIpToWhitelist() {
|
|
|
187 |
/** @var ICWP_WPSF_Processor_Ips $oProcessor */
|
188 |
$oProcessor = $this->getProcessor();
|
|
|
|
|
189 |
$oDp = $this->loadDP();
|
190 |
|
191 |
$sIp = $oDp->post( 'ip', '' );
|
192 |
$sLabel = $oDp->post( 'label', '' );
|
193 |
if ( !empty( $sIp ) ) {
|
194 |
+
$oProcessor->addIpToWhiteList( $sIp, $sLabel );
|
195 |
}
|
196 |
|
197 |
+
return array(
|
198 |
+
'success' => true,
|
199 |
+
'html' => $this->renderListTable( $oDp->post( 'list', '' ) ),
|
200 |
+
);
|
|
|
|
|
201 |
}
|
202 |
|
203 |
/**
|
205 |
*/
|
206 |
protected function getAjaxDataSets() {
|
207 |
return array(
|
208 |
+
'glist' => $this->getAjaxActionData( 'get_ip_list', true ),
|
209 |
+
'alist' => $this->getAjaxActionData( 'add_ip_white', true ),
|
210 |
+
'rlist' => $this->getAjaxActionData( 'remove_ip', true ),
|
211 |
);
|
212 |
}
|
213 |
|
src/features/license.php
CHANGED
@@ -19,47 +19,52 @@ class ICWP_WPSF_FeatureHandler_License extends ICWP_WPSF_FeatureHandler_BaseWpsf
|
|
19 |
|
20 |
$nExpiresAt = $this->getLicenseExpiresAt();
|
21 |
if ( $nExpiresAt > 0 && $nExpiresAt != PHP_INT_MAX ) {
|
22 |
-
$sExpiresAt =
|
23 |
}
|
24 |
else {
|
25 |
$sExpiresAt = 'n/a';
|
26 |
}
|
27 |
|
28 |
-
$sCheckedAt =
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
|
30 |
$aData = array(
|
31 |
-
'vars'
|
32 |
-
|
33 |
-
'license_active' => $this->hasValidWorkingLicense() ? 'Active' : 'Not Active',
|
34 |
-
'license_status' => $this->getOfficialLicenseStatus(),
|
35 |
-
'license_key' => $this->hasLicenseKey() ? $this->getLicenseKey() : 'n/a',
|
36 |
-
'license_expires' => $sExpiresAt,
|
37 |
-
'license_email' => $this->getOfficialLicenseRegisteredEmail(),
|
38 |
-
'last_checked' => $sCheckedAt,
|
39 |
-
'last_errors' => $this->hasLastErrors() ? $this->getLastErrors() : ''
|
40 |
-
),
|
41 |
-
'inputs' => array(
|
42 |
'license_key' => array(
|
43 |
'name' => $this->prefixOptionKey( 'license_key' ),
|
44 |
-
'maxlength' => $this->
|
45 |
)
|
46 |
),
|
47 |
-
'
|
48 |
-
|
|
|
|
|
49 |
'shield_pro_url' => 'http://icwp.io/shieldpro',
|
50 |
'shield_pro_more_info_url' => 'http://icwp.io/shld1',
|
51 |
'iframe_url' => $this->getDef( 'landing_page_url' ),
|
52 |
),
|
53 |
-
'flags'
|
54 |
-
'
|
55 |
-
'
|
56 |
-
'show_ads'
|
57 |
-
'
|
58 |
-
'button_enabled_remove'
|
59 |
-
'show_standard_options'
|
60 |
-
'show_alt_content'
|
61 |
),
|
62 |
-
'strings'
|
63 |
);
|
64 |
$aData[ 'content' ] = array(
|
65 |
'alt' => $this->loadRenderer( self::getConn()->getPath_Templates() )
|
@@ -94,55 +99,67 @@ class ICWP_WPSF_FeatureHandler_License extends ICWP_WPSF_FeatureHandler_BaseWpsf
|
|
94 |
|
95 |
/**
|
96 |
* Used to store a valid license.
|
97 |
-
* @param string $sLicenseKey
|
98 |
* @param ICWP_EDD_LicenseVO $oLicense
|
|
|
99 |
* @throws Exception
|
100 |
*/
|
101 |
-
protected function storeLicense( $
|
102 |
if ( !( $oLicense instanceof ICWP_EDD_LicenseVO ) ) {
|
103 |
throw new Exception( sprintf( 'Attempt to store something that is not even a license: %s', gettype( $oLicense ) ) );
|
104 |
}
|
105 |
-
|
|
|
|
|
|
|
106 |
throw new Exception( 'Attempt to store invalid license.' );
|
107 |
}
|
108 |
|
109 |
-
$nRequestTime = $this->loadDataProcessor()->time();
|
110 |
-
|
111 |
-
$sPreviousKey = $this->getLicenseKey();
|
112 |
$bLicenseWasValid = $this->hasValidWorkingLicense();
|
113 |
|
114 |
-
$this->setOpt( 'license_key',
|
115 |
-
->setOpt( '
|
116 |
-
->
|
117 |
-
->setOpt( 'license_official_status', $oLicense->getLicenseStatus() )
|
118 |
->setOfficialLicenseRegisteredEmail( $oLicense->getCustomerEmail() );
|
119 |
|
120 |
-
$bIsNewLicense = $sPreviousKey != $sLicenseKey;
|
121 |
$bCurrentLicenseValid = $this->isOfficialLicenseStatusValid() && !$this->isLicenseExpired();
|
122 |
|
123 |
-
if (
|
124 |
-
$this->setOpt( 'license_activated_at', $
|
125 |
}
|
|
|
126 |
}
|
127 |
|
128 |
-
|
129 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
130 |
}
|
131 |
|
132 |
-
|
|
|
|
|
|
|
133 |
$bSuccess = false;
|
134 |
-
$oDp = $this->loadDataProcessor();
|
135 |
|
136 |
-
$sLicenseAction = $
|
137 |
|
138 |
-
if ( $sLicenseAction == '
|
139 |
-
$this->
|
140 |
-
|
141 |
-
}
|
142 |
-
else if ( $sLicenseAction == 'activate' ) {
|
143 |
-
$sKey = $oDp->FetchPost( $this->prefixOptionKey( 'license_key' ) );
|
144 |
-
$this->activateOfficialLicense( $sKey );
|
145 |
-
$bSuccess = $this->hasValidWorkingLicense();
|
146 |
}
|
147 |
else if ( $sLicenseAction == 'remove' ) {
|
148 |
$oLicense = $this->loadEdd()
|
@@ -155,27 +172,26 @@ class ICWP_WPSF_FeatureHandler_License extends ICWP_WPSF_FeatureHandler_BaseWpsf
|
|
155 |
$bSuccess = $oLicense->isSuccess();
|
156 |
}
|
157 |
$this->deactivate( 'User submitted deactivation' );
|
158 |
-
$this->setOpt( '
|
159 |
-
->setOpt( 'license_official_status', 'n/a' );
|
160 |
}
|
161 |
|
162 |
-
|
163 |
}
|
164 |
|
165 |
/**
|
166 |
* @param string $sDeactivatedReason
|
167 |
*/
|
168 |
-
|
169 |
|
170 |
$this->setOpt( 'license_expires_at', 0 )
|
171 |
-
->setOpt( '
|
172 |
->setOfficialLicenseRegisteredEmail( 'n/a' );
|
173 |
|
174 |
if ( $this->isOfficialLicenseStatusValid() ) {
|
175 |
$this->setOpt( 'license_official_status', 'cleared' );
|
176 |
}
|
177 |
if ( $this->isLicenseActive() ) {
|
178 |
-
$this->
|
179 |
}
|
180 |
if ( !empty( $sDeactivatedReason ) ) {
|
181 |
$this->setOpt( 'license_deactivated_reason', $sDeactivatedReason );
|
@@ -184,141 +200,61 @@ class ICWP_WPSF_FeatureHandler_License extends ICWP_WPSF_FeatureHandler_BaseWpsf
|
|
184 |
add_filter( $this->prefix( 'force_options_resave' ), '__return_true' );
|
185 |
}
|
186 |
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
|
|
193 |
|
194 |
-
//
|
195 |
-
|
196 |
-
|
197 |
-
// $bCurrentLicenseValid = $this->isOfficialLicenseStatusValid() && !$this->isLastCheckExpired();
|
198 |
-
// $sErrorMessage = '';
|
199 |
-
//
|
200 |
-
// $oLicense = $this->activateOfficialLicense( $sKey );
|
201 |
-
//
|
202 |
-
// if ( is_null( $oLicense ) ) {
|
203 |
-
// $sErrorMessage = 'Could not successfully request license server.'; // error for license lookup
|
204 |
-
// }
|
205 |
-
// else if ( !$oLicense->isReady() ) {
|
206 |
-
// $sErrorMessage = 'Unexpected response from license server.';
|
207 |
-
// }
|
208 |
-
// else if ( $oLicense->isReady() ) {
|
209 |
-
//
|
210 |
-
// $bLicenseWasValid = $this->isLicenseActive();
|
211 |
-
//
|
212 |
-
// if ( $oLicense->getLicenseStatus() == 'valid' ) {
|
213 |
-
// $this->setOpt( 'license_expires_at', $oLicense->getExpiresAt() )
|
214 |
-
// ->setOpt( 'license_last_checked_at', $nRequestTime )
|
215 |
-
// ->setOfficialLicenseRegisteredEmail( $oLicense->getCustomerEmail() );
|
216 |
-
// }
|
217 |
-
// $this->setOpt( 'license_official_status', $oLicense->getLicenseStatus() );
|
218 |
-
//
|
219 |
-
// $bCurrentLicenseValid = $this->isOfficialLicenseStatusValid() && !$this->isLicenseExpired();
|
220 |
-
//
|
221 |
-
// $bNewlyActivated = !$bLicenseWasValid && $bCurrentLicenseValid;
|
222 |
-
// $bNewlyDeactivated = $bLicenseWasValid && !$bCurrentLicenseValid;
|
223 |
-
//
|
224 |
-
// if ( $bNewlyActivated || !$this->isLicenseActive() ) {
|
225 |
-
// $this->setOpt( 'license_activated_at', $nRequestTime );
|
226 |
-
// }
|
227 |
-
// else if ( $bNewlyDeactivated ) {
|
228 |
-
// $sErrorMessage = sprintf( 'Official license check returned as %s.', $oLicense->getLicenseStatus() );
|
229 |
-
// }
|
230 |
-
// }
|
231 |
-
//
|
232 |
-
// if ( !$bCurrentLicenseValid ) {
|
233 |
-
// $this->deactivate( $sErrorMessage );
|
234 |
-
// }
|
235 |
-
// }
|
236 |
|
237 |
-
|
238 |
-
|
239 |
-
* @param bool $bForceUpdate
|
240 |
-
* @return ICWP_EDD_LicenseVO
|
241 |
-
*/
|
242 |
-
public function activateOfficialLicense( $sKey, $bForceUpdate = false ) {
|
243 |
-
$oLicense = null;
|
244 |
-
$sKey = $this->verifyLicenseKeyFormat( $sKey );
|
245 |
-
$sErrorMessage = '';
|
246 |
-
|
247 |
-
// i.e. only continue if the keys are different, or, if they're the same only if your license is expired.
|
248 |
-
if ( !is_null( $sKey ) ) {
|
249 |
-
|
250 |
-
$sOrigKey = $this->getLicenseKey();
|
251 |
-
$bIsNewKey = $sOrigKey != $sKey;
|
252 |
-
$bIsOrigValid = $this->hasValidWorkingLicense();
|
253 |
-
$bDeactivateOriginal = $bIsNewKey && $bIsOrigValid;
|
254 |
-
$bIsShieldCentral = false;
|
255 |
-
|
256 |
-
if ( $bForceUpdate || $bIsNewKey || !$bIsOrigValid ) {
|
257 |
-
$oEDD = $this->loadEdd();
|
258 |
-
$sPing = $oEDD->ping( $this->getLicenseStoreUrl() );
|
259 |
-
|
260 |
-
if ( $sPing == 'success' ) {
|
261 |
-
$oLicense = $oEDD->activateLicense(
|
262 |
-
$this->getLicenseStoreUrl(),
|
263 |
-
$sKey,
|
264 |
-
$this->getLicenseItemId()
|
265 |
-
);
|
266 |
-
|
267 |
-
if ( !is_null( $oLicense ) ) {
|
268 |
-
|
269 |
-
if ( !$oLicense->isSuccess() ) {
|
270 |
-
$oScLicense = $this->activateOfficialLicenseAsShieldCentral( $sKey );
|
271 |
-
if ( $oScLicense->isSuccess() ) {
|
272 |
-
$bIsShieldCentral = true;
|
273 |
-
$oLicense = $oScLicense;
|
274 |
-
}
|
275 |
-
}
|
276 |
-
}
|
277 |
-
else {
|
278 |
-
$sErrorMessage = 'Could not successfully request license server.'; // error for license lookup
|
279 |
-
}
|
280 |
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
}
|
291 |
-
catch ( Exception $oE ) {
|
292 |
-
$sErrorMessage = $oE->getMessage();
|
293 |
-
}
|
294 |
-
}
|
295 |
-
else {
|
296 |
-
$sErrorMessage = $sPing;
|
297 |
-
}
|
298 |
}
|
299 |
-
}
|
300 |
-
else {
|
301 |
-
$sErrorMessage = 'Invalid License Key Format';
|
302 |
-
}
|
303 |
|
304 |
-
|
305 |
-
|
|
|
306 |
}
|
307 |
|
308 |
-
return $
|
309 |
}
|
310 |
|
311 |
/**
|
312 |
-
* @
|
313 |
-
* @return ICWP_EDD_LicenseVO
|
314 |
*/
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
322 |
}
|
323 |
|
324 |
/**
|
@@ -353,30 +289,30 @@ class ICWP_WPSF_FeatureHandler_License extends ICWP_WPSF_FeatureHandler_BaseWpsf
|
|
353 |
* @return string
|
354 |
*/
|
355 |
public function getLicenseItemId() {
|
356 |
-
return $this->
|
357 |
}
|
358 |
|
359 |
/**
|
360 |
* @return string
|
361 |
*/
|
362 |
public function getLicenseItemIdShieldCentral() {
|
363 |
-
return $this->
|
364 |
}
|
365 |
|
366 |
/**
|
367 |
* @return string
|
368 |
*/
|
369 |
public function getLicenseItemName() {
|
370 |
-
return $this->
|
371 |
-
$this->
|
372 |
-
$this->
|
373 |
}
|
374 |
|
375 |
/**
|
376 |
* @return string
|
377 |
*/
|
378 |
public function getLicenseStoreUrl() {
|
379 |
-
return $this->
|
380 |
}
|
381 |
|
382 |
/**
|
@@ -393,6 +329,13 @@ class ICWP_WPSF_FeatureHandler_License extends ICWP_WPSF_FeatureHandler_BaseWpsf
|
|
393 |
return $this->getOpt( 'license_last_checked_at' );
|
394 |
}
|
395 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
396 |
/**
|
397 |
* @return string
|
398 |
*/
|
@@ -426,7 +369,7 @@ class ICWP_WPSF_FeatureHandler_License extends ICWP_WPSF_FeatureHandler_BaseWpsf
|
|
426 |
* @return bool
|
427 |
*/
|
428 |
public function isLicenseShieldCentral() {
|
429 |
-
return $this->getOpt( '
|
430 |
}
|
431 |
|
432 |
/**
|
@@ -440,19 +383,12 @@ class ICWP_WPSF_FeatureHandler_License extends ICWP_WPSF_FeatureHandler_BaseWpsf
|
|
440 |
* @return bool
|
441 |
*/
|
442 |
protected function isLicenseExpired() {
|
443 |
-
return ( $this->getLicenseExpiresAt() < $this->
|
444 |
-
}
|
445 |
-
|
446 |
-
/**
|
447 |
-
* Expires between 2 and 3 days.
|
448 |
-
* @return bool
|
449 |
-
*/
|
450 |
-
protected function isLastCheckExpired() {
|
451 |
-
return ( $this->loadDP()->time() - $this->getLicenseLastCheckedAt()
|
452 |
-
> $this->getDefinition( 'license_lack_check_expire_days' )*DAY_IN_SECONDS*( mt_rand( 20, 30 )/10 ) );
|
453 |
}
|
454 |
|
455 |
/**
|
|
|
|
|
456 |
* We test various data points:
|
457 |
* 1) the key is valid format
|
458 |
* 2) the official license status is 'valid'
|
@@ -462,8 +398,33 @@ class ICWP_WPSF_FeatureHandler_License extends ICWP_WPSF_FeatureHandler_BaseWpsf
|
|
462 |
* @return bool
|
463 |
*/
|
464 |
public function hasValidWorkingLicense() {
|
465 |
-
return $this->
|
466 |
-
&& $this->isLicenseActive() && !$this->isLicenseExpired();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
467 |
}
|
468 |
|
469 |
/**
|
@@ -474,6 +435,22 @@ class ICWP_WPSF_FeatureHandler_License extends ICWP_WPSF_FeatureHandler_BaseWpsf
|
|
474 |
return $this->setOpt( 'license_registered_email', $sEmail );
|
475 |
}
|
476 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
477 |
/**
|
478 |
* @param string $sKey
|
479 |
* @return string|null
|
@@ -483,10 +460,10 @@ class ICWP_WPSF_FeatureHandler_License extends ICWP_WPSF_FeatureHandler_BaseWpsf
|
|
483 |
|
484 |
$sKey = $this->cleanLicenseKey( $sKey );
|
485 |
$bValid = !empty( $sKey ) && is_string( $sKey )
|
486 |
-
&& ( strlen( $sKey ) == $this->
|
487 |
|
488 |
if ( $bValid ) {
|
489 |
-
switch ( $this->
|
490 |
case 'alphanumeric':
|
491 |
default:
|
492 |
if ( preg_match( '#[^a-z0-9]#i', $sKey ) === 0 ) {
|
@@ -501,7 +478,7 @@ class ICWP_WPSF_FeatureHandler_License extends ICWP_WPSF_FeatureHandler_BaseWpsf
|
|
501 |
|
502 |
protected function cleanLicenseKey( $sKey ) {
|
503 |
|
504 |
-
switch ( $this->
|
505 |
case 'alphanumeric':
|
506 |
default:
|
507 |
$sKey = preg_replace( '#[^a-z0-9]#i', '', $sKey );
|
@@ -524,7 +501,7 @@ class ICWP_WPSF_FeatureHandler_License extends ICWP_WPSF_FeatureHandler_BaseWpsf
|
|
524 |
// clean the key.
|
525 |
$sLicKey = $this->getLicenseKey();
|
526 |
if ( strlen( $sLicKey ) > 0 ) {
|
527 |
-
switch ( $this->
|
528 |
case 'alphanumeric':
|
529 |
default:
|
530 |
$this->setOpt( 'license_key', preg_replace( '#[^a-z0-9]#i', '', $sLicKey ) );
|
@@ -533,14 +510,50 @@ class ICWP_WPSF_FeatureHandler_License extends ICWP_WPSF_FeatureHandler_BaseWpsf
|
|
533 |
}
|
534 |
}
|
535 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
536 |
/**
|
537 |
* Hooked to the plugin's main plugin_shutdown action
|
538 |
*/
|
539 |
public function action_doFeatureShutdown() {
|
540 |
-
|
541 |
-
if ( $this->hasValidWorkingLicense() && $this->isLastCheckExpired() ) {
|
542 |
-
$this->validateCurrentLicenseKey();
|
543 |
-
}
|
544 |
parent::action_doFeatureShutdown();
|
545 |
}
|
546 |
|
19 |
|
20 |
$nExpiresAt = $this->getLicenseExpiresAt();
|
21 |
if ( $nExpiresAt > 0 && $nExpiresAt != PHP_INT_MAX ) {
|
22 |
+
$sExpiresAt = $oWp->getTimeStampForDisplay( $this->getLicenseExpiresAt() );
|
23 |
}
|
24 |
else {
|
25 |
$sExpiresAt = 'n/a';
|
26 |
}
|
27 |
|
28 |
+
$sCheckedAt = $oWp->getTimeStampForDisplay( $this->getLicenseVerifiedAt() );
|
29 |
+
|
30 |
+
$aLicenseTableVars = array(
|
31 |
+
'product_name' => $this->getLicenseItemName(),
|
32 |
+
'license_active' => $this->hasValidWorkingLicense() ? 'Active' : 'Not Active',
|
33 |
+
'license_expires' => $sExpiresAt,
|
34 |
+
'license_email' => $this->getOfficialLicenseRegisteredEmail(),
|
35 |
+
'last_checked' => $sCheckedAt,
|
36 |
+
'last_errors' => $this->hasLastErrors() ? $this->getLastErrors() : ''
|
37 |
+
);
|
38 |
+
if ( !$this->isKeyless() ) {
|
39 |
+
$aLicenseTableVars[ 'license_key' ] = $this->hasLicenseKey() ? $this->getLicenseKey() : 'n/a';
|
40 |
+
}
|
41 |
|
42 |
$aData = array(
|
43 |
+
'vars' => $aLicenseTableVars,
|
44 |
+
'inputs' => array(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
45 |
'license_key' => array(
|
46 |
'name' => $this->prefixOptionKey( 'license_key' ),
|
47 |
+
'maxlength' => $this->getDef( 'license_key_length' ),
|
48 |
)
|
49 |
),
|
50 |
+
'ajax' => array(
|
51 |
+
'license_handling' => $this->getAjaxActionData( 'license_handling' )
|
52 |
+
),
|
53 |
+
'aHrefs' => array(
|
54 |
'shield_pro_url' => 'http://icwp.io/shieldpro',
|
55 |
'shield_pro_more_info_url' => 'http://icwp.io/shld1',
|
56 |
'iframe_url' => $this->getDef( 'landing_page_url' ),
|
57 |
),
|
58 |
+
'flags' => array(
|
59 |
+
'show_key' => !$this->isKeyless(),
|
60 |
+
'has_license_key' => $this->isLicenseKeyValidFormat(),
|
61 |
+
'show_ads' => false,
|
62 |
+
'button_enabled_check' => true,
|
63 |
+
'button_enabled_remove' => $this->isLicenseKeyValidFormat(),
|
64 |
+
'show_standard_options' => false,
|
65 |
+
'show_alt_content' => true,
|
66 |
),
|
67 |
+
'strings' => $this->getDisplayStrings(),
|
68 |
);
|
69 |
$aData[ 'content' ] = array(
|
70 |
'alt' => $this->loadRenderer( self::getConn()->getPath_Templates() )
|
99 |
|
100 |
/**
|
101 |
* Used to store a valid license.
|
|
|
102 |
* @param ICWP_EDD_LicenseVO $oLicense
|
103 |
+
* @return $this
|
104 |
* @throws Exception
|
105 |
*/
|
106 |
+
protected function storeLicense( $oLicense ) {
|
107 |
if ( !( $oLicense instanceof ICWP_EDD_LicenseVO ) ) {
|
108 |
throw new Exception( sprintf( 'Attempt to store something that is not even a license: %s', gettype( $oLicense ) ) );
|
109 |
}
|
110 |
+
|
111 |
+
$this->setOpt( 'license_official_status', $oLicense->getLicenseStatus() );
|
112 |
+
|
113 |
+
if ( !$oLicense->isSuccess() || $oLicense->getLicenseStatus() != 'valid' ) {
|
114 |
throw new Exception( 'Attempt to store invalid license.' );
|
115 |
}
|
116 |
|
|
|
|
|
|
|
117 |
$bLicenseWasValid = $this->hasValidWorkingLicense();
|
118 |
|
119 |
+
$this->setOpt( 'license_key', '' )
|
120 |
+
->setOpt( 'is_shield_central', $oLicense->isShieldCentral() )
|
121 |
+
->setOptAt( 'license_expires_at', $oLicense->getExpiresAt() )
|
|
|
122 |
->setOfficialLicenseRegisteredEmail( $oLicense->getCustomerEmail() );
|
123 |
|
|
|
124 |
$bCurrentLicenseValid = $this->isOfficialLicenseStatusValid() && !$this->isLicenseExpired();
|
125 |
|
126 |
+
if ( !$this->isLicenseActive() || ( !$bLicenseWasValid && $bCurrentLicenseValid ) ) {
|
127 |
+
$this->setOpt( 'license_activated_at', $this->loadDP()->time() );
|
128 |
}
|
129 |
+
return $this->setLastErrors();
|
130 |
}
|
131 |
|
132 |
+
/**
|
133 |
+
* @param array $aAjaxResponse
|
134 |
+
* @return array
|
135 |
+
*/
|
136 |
+
public function handleAuthAjax( $aAjaxResponse ) {
|
137 |
+
|
138 |
+
if ( empty( $aAjaxResponse ) ) {
|
139 |
+
switch ( $this->loadDP()->request( 'exec' ) ) {
|
140 |
+
|
141 |
+
case 'license_handling':
|
142 |
+
$aAjaxResponse = $this->ajaxExec_LicenseHandling();
|
143 |
+
break;
|
144 |
+
|
145 |
+
default:
|
146 |
+
break;
|
147 |
+
}
|
148 |
+
}
|
149 |
+
return parent::handleAuthAjax( $aAjaxResponse );
|
150 |
}
|
151 |
|
152 |
+
/**
|
153 |
+
* @return array
|
154 |
+
*/
|
155 |
+
protected function ajaxExec_LicenseHandling() {
|
156 |
$bSuccess = false;
|
|
|
157 |
|
158 |
+
$sLicenseAction = $this->loadDP()->post( 'license-action' );
|
159 |
|
160 |
+
if ( $sLicenseAction == 'check' ) {
|
161 |
+
$bSuccess = $this->verifyLicense( true )
|
162 |
+
->hasValidWorkingLicense();
|
|
|
|
|
|
|
|
|
|
|
163 |
}
|
164 |
else if ( $sLicenseAction == 'remove' ) {
|
165 |
$oLicense = $this->loadEdd()
|
172 |
$bSuccess = $oLicense->isSuccess();
|
173 |
}
|
174 |
$this->deactivate( 'User submitted deactivation' );
|
175 |
+
$this->setOpt( 'license_official_status', 'n/a' );
|
|
|
176 |
}
|
177 |
|
178 |
+
return array( 'success' => $bSuccess );
|
179 |
}
|
180 |
|
181 |
/**
|
182 |
* @param string $sDeactivatedReason
|
183 |
*/
|
184 |
+
private function deactivate( $sDeactivatedReason = '' ) {
|
185 |
|
186 |
$this->setOpt( 'license_expires_at', 0 )
|
187 |
+
->setOpt( 'is_shield_central', false )
|
188 |
->setOfficialLicenseRegisteredEmail( 'n/a' );
|
189 |
|
190 |
if ( $this->isOfficialLicenseStatusValid() ) {
|
191 |
$this->setOpt( 'license_official_status', 'cleared' );
|
192 |
}
|
193 |
if ( $this->isLicenseActive() ) {
|
194 |
+
$this->setOptAt( 'license_deactivated_at' );
|
195 |
}
|
196 |
if ( !empty( $sDeactivatedReason ) ) {
|
197 |
$this->setOpt( 'license_deactivated_reason', $sDeactivatedReason );
|
200 |
add_filter( $this->prefix( 'force_options_resave' ), '__return_true' );
|
201 |
}
|
202 |
|
203 |
+
/**
|
204 |
+
* License check normally only happens when the verification_at expires (~3 days) for a currently valid license.
|
205 |
+
* @param bool $bForceCheck
|
206 |
+
* @return $this
|
207 |
+
*/
|
208 |
+
public function verifyLicense( $bForceCheck = true ) {
|
209 |
+
$nNow = $this->loadDP()->time();
|
210 |
|
211 |
+
// If your last license verification has expired and it's been 4hrs since your last check.
|
212 |
+
$bCheck = $bForceCheck || ( $this->hasValidWorkingLicense() && $this->isLastVerifiedExpired()
|
213 |
+
&& ( $nNow - $this->getLicenseLastCheckedAt() > HOUR_IN_SECONDS*4 ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
214 |
|
215 |
+
if ( $bCheck ) {
|
216 |
+
$this->setLicenseLastCheckedAt();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
217 |
|
218 |
+
$oLicense = $this->retrieveLicense();
|
219 |
+
try {
|
220 |
+
$this->storeLicense( $oLicense )
|
221 |
+
->setLicenseVerifiedAt( $nNow );
|
222 |
+
$bSuccess = true;
|
223 |
+
}
|
224 |
+
catch ( Exception $oE ) {
|
225 |
+
$this->setLastErrors( 'Could not find a valid license' );
|
226 |
+
$bSuccess = false;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
227 |
}
|
|
|
|
|
|
|
|
|
228 |
|
229 |
+
if ( !$bSuccess && ( $bForceCheck || $this->isLastVerifiedGraceExpired() ) ) {
|
230 |
+
$this->deactivate();
|
231 |
+
}
|
232 |
}
|
233 |
|
234 |
+
return $this;
|
235 |
}
|
236 |
|
237 |
/**
|
238 |
+
* @return ICWP_EDD_LicenseVO|null
|
|
|
239 |
*/
|
240 |
+
private function retrieveLicense() {
|
241 |
+
|
242 |
+
$sPass = wp_generate_password( 16 );
|
243 |
+
|
244 |
+
$this->setKeylessRequestAt()
|
245 |
+
->setKeylessRequestHash( sha1( $sPass.$this->loadWp()->getHomeUrl() ) )
|
246 |
+
->savePluginOptions();
|
247 |
+
|
248 |
+
$oLicense = $this->loadEdd()
|
249 |
+
->setRequestParams( array( 'nonce' => $sPass ) )
|
250 |
+
->activateLicenseKeyless( $this->getLicenseStoreUrl(), $this->getLicenseItemId() );
|
251 |
+
|
252 |
+
// clear the handshake data
|
253 |
+
$this->setKeylessRequestAt( 0 )
|
254 |
+
->setKeylessRequestHash( '' )
|
255 |
+
->savePluginOptions();
|
256 |
+
|
257 |
+
return $oLicense;
|
258 |
}
|
259 |
|
260 |
/**
|
289 |
* @return string
|
290 |
*/
|
291 |
public function getLicenseItemId() {
|
292 |
+
return $this->getDef( 'license_item_id' );
|
293 |
}
|
294 |
|
295 |
/**
|
296 |
* @return string
|
297 |
*/
|
298 |
public function getLicenseItemIdShieldCentral() {
|
299 |
+
return $this->getDef( 'license_item_id_sc' );
|
300 |
}
|
301 |
|
302 |
/**
|
303 |
* @return string
|
304 |
*/
|
305 |
public function getLicenseItemName() {
|
306 |
+
return $this->isLicenseShieldCentral() ?
|
307 |
+
$this->getDef( 'license_item_name_sc' ) :
|
308 |
+
$this->getDef( 'license_item_name' );
|
309 |
}
|
310 |
|
311 |
/**
|
312 |
* @return string
|
313 |
*/
|
314 |
public function getLicenseStoreUrl() {
|
315 |
+
return $this->getDef( 'license_store_url' );
|
316 |
}
|
317 |
|
318 |
/**
|
329 |
return $this->getOpt( 'license_last_checked_at' );
|
330 |
}
|
331 |
|
332 |
+
/**
|
333 |
+
* @return int
|
334 |
+
*/
|
335 |
+
protected function getLicenseVerifiedAt() {
|
336 |
+
return $this->getOpt( 'license_verified_at' );
|
337 |
+
}
|
338 |
+
|
339 |
/**
|
340 |
* @return string
|
341 |
*/
|
369 |
* @return bool
|
370 |
*/
|
371 |
public function isLicenseShieldCentral() {
|
372 |
+
return $this->getOpt( 'is_shield_central', false );
|
373 |
}
|
374 |
|
375 |
/**
|
383 |
* @return bool
|
384 |
*/
|
385 |
protected function isLicenseExpired() {
|
386 |
+
return ( $this->getLicenseExpiresAt() < $this->loadDP()->time() );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
387 |
}
|
388 |
|
389 |
/**
|
390 |
+
* IMPORTANT: Method used by Shield Central. Modify with care.
|
391 |
+
*
|
392 |
* We test various data points:
|
393 |
* 1) the key is valid format
|
394 |
* 2) the official license status is 'valid'
|
398 |
* @return bool
|
399 |
*/
|
400 |
public function hasValidWorkingLicense() {
|
401 |
+
return ( $this->isKeyless() || $this->isLicenseKeyValidFormat() )
|
402 |
+
&& $this->isOfficialLicenseStatusValid() && $this->isLicenseActive() && !$this->isLicenseExpired();
|
403 |
+
}
|
404 |
+
|
405 |
+
/**
|
406 |
+
* @return bool
|
407 |
+
*/
|
408 |
+
protected function isKeyless() {
|
409 |
+
return (bool)$this->getDef( 'keyless' );
|
410 |
+
}
|
411 |
+
|
412 |
+
/**
|
413 |
+
* Expires between 2 and 3 days.
|
414 |
+
* @return bool
|
415 |
+
*/
|
416 |
+
protected function isLastVerifiedExpired() {
|
417 |
+
return ( $this->loadDP()->time() - $this->getLicenseVerifiedAt()
|
418 |
+
> $this->getDef( 'lic_verify_expire_days' )*DAY_IN_SECONDS );
|
419 |
+
}
|
420 |
+
|
421 |
+
/**
|
422 |
+
* @return bool
|
423 |
+
*/
|
424 |
+
protected function isLastVerifiedGraceExpired() {
|
425 |
+
$nGracePeriod = ( $this->getDef( 'lic_verify_expire_days' ) + $this->getDef( 'lic_verify_expire_grace_days' ) )
|
426 |
+
*DAY_IN_SECONDS;
|
427 |
+
return $this->loadDP()->time() - $this->getLicenseVerifiedAt() > $nGracePeriod;
|
428 |
}
|
429 |
|
430 |
/**
|
435 |
return $this->setOpt( 'license_registered_email', $sEmail );
|
436 |
}
|
437 |
|
438 |
+
/**
|
439 |
+
* @param int $nAt
|
440 |
+
* @return $this
|
441 |
+
*/
|
442 |
+
protected function setLicenseLastCheckedAt( $nAt = null ) {
|
443 |
+
return $this->setOptAt( 'license_last_checked_at', $nAt );
|
444 |
+
}
|
445 |
+
|
446 |
+
/**
|
447 |
+
* @param int $nAt
|
448 |
+
* @return $this
|
449 |
+
*/
|
450 |
+
protected function setLicenseVerifiedAt( $nAt = null ) {
|
451 |
+
return $this->setOptAt( 'license_verified_at', $nAt );
|
452 |
+
}
|
453 |
+
|
454 |
/**
|
455 |
* @param string $sKey
|
456 |
* @return string|null
|
460 |
|
461 |
$sKey = $this->cleanLicenseKey( $sKey );
|
462 |
$bValid = !empty( $sKey ) && is_string( $sKey )
|
463 |
+
&& ( strlen( $sKey ) == $this->getDef( 'license_key_length' ) );
|
464 |
|
465 |
if ( $bValid ) {
|
466 |
+
switch ( $this->getDef( 'license_key_type' ) ) {
|
467 |
case 'alphanumeric':
|
468 |
default:
|
469 |
if ( preg_match( '#[^a-z0-9]#i', $sKey ) === 0 ) {
|
478 |
|
479 |
protected function cleanLicenseKey( $sKey ) {
|
480 |
|
481 |
+
switch ( $this->getDef( 'license_key_type' ) ) {
|
482 |
case 'alphanumeric':
|
483 |
default:
|
484 |
$sKey = preg_replace( '#[^a-z0-9]#i', '', $sKey );
|
501 |
// clean the key.
|
502 |
$sLicKey = $this->getLicenseKey();
|
503 |
if ( strlen( $sLicKey ) > 0 ) {
|
504 |
+
switch ( $this->getDef( 'license_key_type' ) ) {
|
505 |
case 'alphanumeric':
|
506 |
default:
|
507 |
$this->setOpt( 'license_key', preg_replace( '#[^a-z0-9]#i', '', $sLicKey ) );
|
510 |
}
|
511 |
}
|
512 |
|
513 |
+
/**
|
514 |
+
* @return int
|
515 |
+
*/
|
516 |
+
public function getKeylessRequestAt() {
|
517 |
+
return (int)$this->getOpt( 'keyless_request_at', 0 );
|
518 |
+
}
|
519 |
+
|
520 |
+
/**
|
521 |
+
* @return string
|
522 |
+
*/
|
523 |
+
public function getKeylessRequestHash() {
|
524 |
+
return (string)$this->getOpt( 'keyless_request_hash', '' );
|
525 |
+
}
|
526 |
+
|
527 |
+
/**
|
528 |
+
* @return bool
|
529 |
+
*/
|
530 |
+
public function isKeylessHandshakeExpired() {
|
531 |
+
return ( $this->loadDP()->time() - $this->getKeylessRequestAt() )
|
532 |
+
> $this->getDef( 'keyless_handshake_expire' );
|
533 |
+
}
|
534 |
+
|
535 |
+
/**
|
536 |
+
* @param string $sHash
|
537 |
+
* @return $this
|
538 |
+
*/
|
539 |
+
public function setKeylessRequestHash( $sHash ) {
|
540 |
+
return $this->setOpt( 'keyless_request_hash', $sHash );
|
541 |
+
}
|
542 |
+
|
543 |
+
/**
|
544 |
+
* @param int|null $nTime
|
545 |
+
* @return $this
|
546 |
+
*/
|
547 |
+
public function setKeylessRequestAt( $nTime = null ) {
|
548 |
+
$nTime = is_numeric( $nTime ) ? $nTime : $this->loadDP()->time();
|
549 |
+
return $this->setOpt( 'keyless_request_at', $nTime );
|
550 |
+
}
|
551 |
+
|
552 |
/**
|
553 |
* Hooked to the plugin's main plugin_shutdown action
|
554 |
*/
|
555 |
public function action_doFeatureShutdown() {
|
556 |
+
$this->verifyLicense( false );
|
|
|
|
|
|
|
557 |
parent::action_doFeatureShutdown();
|
558 |
}
|
559 |
|
src/features/login_protect.php
CHANGED
@@ -45,13 +45,6 @@ class ICWP_WPSF_FeatureHandler_LoginProtect extends ICWP_WPSF_FeatureHandler_Bas
|
|
45 |
return $this->getOptIs( 'use_login_intent_page', true );
|
46 |
}
|
47 |
|
48 |
-
/**
|
49 |
-
* @return bool
|
50 |
-
*/
|
51 |
-
public function getIfSupport3rdParty() {
|
52 |
-
return $this->isPremium();
|
53 |
-
}
|
54 |
-
|
55 |
protected function doExtraSubmitProcessing() {
|
56 |
/**
|
57 |
* $oWp = $this->loadWpFunctionsProcessor();
|
45 |
return $this->getOptIs( 'use_login_intent_page', true );
|
46 |
}
|
47 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
protected function doExtraSubmitProcessing() {
|
49 |
/**
|
50 |
* $oWp = $this->loadWpFunctionsProcessor();
|
src/features/plugin.php
CHANGED
@@ -13,10 +13,6 @@ class ICWP_WPSF_FeatureHandler_Plugin extends ICWP_WPSF_FeatureHandler_BaseWpsf
|
|
13 |
add_filter( $this->prefix( 'report_email_address' ), array( $this, 'getPluginReportEmail' ) );
|
14 |
add_filter( $this->prefix( 'globally_disabled' ), array( $this, 'filter_IsPluginGloballyDisabled' ) );
|
15 |
add_filter( $this->prefix( 'google_recaptcha_config' ), array( $this, 'supplyGoogleRecaptchaConfig' ), 10, 0 );
|
16 |
-
|
17 |
-
if ( !$this->isTrackingPermissionSet() ) {
|
18 |
-
add_action( 'wp_ajax_icwp_PluginTrackingPermission', array( $this, 'ajaxSetPluginTrackingPermission' ) );
|
19 |
-
}
|
20 |
$this->setVisitorIp();
|
21 |
}
|
22 |
|
@@ -163,10 +159,6 @@ class ICWP_WPSF_FeatureHandler_Plugin extends ICWP_WPSF_FeatureHandler_BaseWpsf
|
|
163 |
return $this->getVisitorAddressSource() == 'AUTO_DETECT_IP';
|
164 |
}
|
165 |
|
166 |
-
protected function frontEndAjaxHandlers() {
|
167 |
-
add_action( $this->prefixWpAjax( 'PluginBadgeClose' ), array( $this, 'ajaxPluginBadgeClose' ) );
|
168 |
-
}
|
169 |
-
|
170 |
/**
|
171 |
* @return string
|
172 |
*/
|
@@ -175,24 +167,49 @@ class ICWP_WPSF_FeatureHandler_Plugin extends ICWP_WPSF_FeatureHandler_BaseWpsf
|
|
175 |
}
|
176 |
|
177 |
/**
|
|
|
|
|
178 |
*/
|
179 |
-
public function
|
180 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
181 |
->setCookie(
|
182 |
$this->getCookieIdBadgeState(),
|
183 |
'closed',
|
184 |
DAY_IN_SECONDS
|
185 |
);
|
186 |
$sMessage = $bSuccess ? 'Badge Closed' : 'Badge Not Closed';
|
187 |
-
|
|
|
|
|
|
|
188 |
}
|
189 |
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
}
|
197 |
|
198 |
/**
|
@@ -588,10 +605,16 @@ class ICWP_WPSF_FeatureHandler_Plugin extends ICWP_WPSF_FeatureHandler_BaseWpsf
|
|
588 |
*/
|
589 |
public function renderPluginBadge() {
|
590 |
$oCon = $this->getConn();
|
|
|
|
|
|
|
|
|
|
|
|
|
591 |
$sContents = $this->loadRenderer( $oCon->getPath_Templates() )
|
592 |
->setTemplateEnginePhp()
|
593 |
->clearRenderVars()
|
594 |
-
->setRenderVars( $
|
595 |
->setTemplate( 'snippets/plugin_badge' )
|
596 |
->render();
|
597 |
|
13 |
add_filter( $this->prefix( 'report_email_address' ), array( $this, 'getPluginReportEmail' ) );
|
14 |
add_filter( $this->prefix( 'globally_disabled' ), array( $this, 'filter_IsPluginGloballyDisabled' ) );
|
15 |
add_filter( $this->prefix( 'google_recaptcha_config' ), array( $this, 'supplyGoogleRecaptchaConfig' ), 10, 0 );
|
|
|
|
|
|
|
|
|
16 |
$this->setVisitorIp();
|
17 |
}
|
18 |
|
159 |
return $this->getVisitorAddressSource() == 'AUTO_DETECT_IP';
|
160 |
}
|
161 |
|
|
|
|
|
|
|
|
|
162 |
/**
|
163 |
* @return string
|
164 |
*/
|
167 |
}
|
168 |
|
169 |
/**
|
170 |
+
* @param array $aAjaxResponse
|
171 |
+
* @return array
|
172 |
*/
|
173 |
+
public function handleAjax( $aAjaxResponse ) {
|
174 |
+
|
175 |
+
if ( empty( $aAjaxResponse ) ) {
|
176 |
+
switch ( $this->loadDP()->request( 'exec' ) ) {
|
177 |
+
case 'plugin_badge_close':
|
178 |
+
$aAjaxResponse = $this->ajaxExec_PluginBadgeClose();
|
179 |
+
break;
|
180 |
+
case 'set_plugin_tracking_perm':
|
181 |
+
if ( !$this->isTrackingPermissionSet() ) {
|
182 |
+
$aAjaxResponse = $this->ajaxExec_SetPluginTrackingPerm();
|
183 |
+
}
|
184 |
+
break;
|
185 |
+
}
|
186 |
+
}
|
187 |
+
return parent::handleAjax( $aAjaxResponse );
|
188 |
+
}
|
189 |
+
|
190 |
+
/**
|
191 |
+
* @return array
|
192 |
+
*/
|
193 |
+
public function ajaxExec_PluginBadgeClose() {
|
194 |
+
$bSuccess = $this->loadDP()
|
195 |
->setCookie(
|
196 |
$this->getCookieIdBadgeState(),
|
197 |
'closed',
|
198 |
DAY_IN_SECONDS
|
199 |
);
|
200 |
$sMessage = $bSuccess ? 'Badge Closed' : 'Badge Not Closed';
|
201 |
+
return array(
|
202 |
+
'success' => $bSuccess,
|
203 |
+
'message' => $sMessage
|
204 |
+
);
|
205 |
}
|
206 |
|
207 |
+
/**
|
208 |
+
* @return array
|
209 |
+
*/
|
210 |
+
public function ajaxExec_SetPluginTrackingPerm() {
|
211 |
+
$this->setPluginTrackingPermission( (bool)$this->loadDP()->query( 'agree', false ) );
|
212 |
+
return array( 'success' => true );
|
213 |
}
|
214 |
|
215 |
/**
|
605 |
*/
|
606 |
public function renderPluginBadge() {
|
607 |
$oCon = $this->getConn();
|
608 |
+
|
609 |
+
$aData = array(
|
610 |
+
'ajax' => array(
|
611 |
+
'plugin_badge_close' => $this->getAjaxActionData( 'plugin_badge_close', true ),
|
612 |
+
)
|
613 |
+
);
|
614 |
$sContents = $this->loadRenderer( $oCon->getPath_Templates() )
|
615 |
->setTemplateEnginePhp()
|
616 |
->clearRenderVars()
|
617 |
+
->setRenderVars( $aData )
|
618 |
->setTemplate( 'snippets/plugin_badge' )
|
619 |
->render();
|
620 |
|
src/features/sessions.php
CHANGED
@@ -12,8 +12,8 @@ class ICWP_WPSF_FeatureHandler_Sessions extends ICWP_WPSF_FeatureHandler_BaseWps
|
|
12 |
* Override this and adapt per feature
|
13 |
* @return ICWP_WPSF_Processor_Base
|
14 |
*/
|
15 |
-
protected function
|
16 |
-
$oP = parent::
|
17 |
self::$oSessProcessor = $oP;
|
18 |
return $oP;
|
19 |
}
|
12 |
* Override this and adapt per feature
|
13 |
* @return ICWP_WPSF_Processor_Base
|
14 |
*/
|
15 |
+
protected function loadProcessor() {
|
16 |
+
$oP = parent::loadProcessor();
|
17 |
self::$oSessProcessor = $oP;
|
18 |
return $oP;
|
19 |
}
|
src/features/user_management.php
CHANGED
@@ -8,17 +8,6 @@ require_once( dirname( __FILE__ ).'/base_wpsf.php' );
|
|
8 |
|
9 |
class ICWP_WPSF_FeatureHandler_UserManagement extends ICWP_WPSF_FeatureHandler_BaseWpsf {
|
10 |
|
11 |
-
/**
|
12 |
-
* TODO: remove on next release
|
13 |
-
*/
|
14 |
-
protected function updateHandler() {
|
15 |
-
$oDb = $this->loadDbProcessor();
|
16 |
-
$sDbName = $oDb->getPrefix().$this->prefix( 'user_management', '_' );
|
17 |
-
if ( $oDb->getIfTableExists( $sDbName ) ) {
|
18 |
-
$oDb->doDropTable( $sDbName );
|
19 |
-
}
|
20 |
-
}
|
21 |
-
|
22 |
/**
|
23 |
* @return array
|
24 |
*/
|
@@ -52,8 +41,7 @@ class ICWP_WPSF_FeatureHandler_UserManagement extends ICWP_WPSF_FeatureHandler_B
|
|
52 |
|
53 |
return array(
|
54 |
'strings' => $this->getDisplayStrings(),
|
55 |
-
'time_now' => sprintf( _wpsf__( 'now: %s' ), date_i18n( $sTimeFormat.' '.$sDateFormat, $this->loadDP()
|
56 |
-
->time() ) ),
|
57 |
'sUserSessionsTable' => $sUserSessionsTable
|
58 |
);
|
59 |
}
|
@@ -64,7 +52,7 @@ class ICWP_WPSF_FeatureHandler_UserManagement extends ICWP_WPSF_FeatureHandler_B
|
|
64 |
protected function getTableRendererForSessions() {
|
65 |
$this->requireCommonLib( 'Components/Tables/SessionsTable.php' );
|
66 |
/** @var ICWP_WPSF_Processor_UserManagement $oProc */
|
67 |
-
$oProc = $this->
|
68 |
// $nCount = $oProc->countAuditEntriesForContext( $sContext );
|
69 |
|
70 |
$oTable = new SessionsTable();
|
@@ -150,6 +138,71 @@ class ICWP_WPSF_FeatureHandler_UserManagement extends ICWP_WPSF_FeatureHandler_B
|
|
150 |
return $this->loadDP()->validEmail( $this->getOpt( 'enable_admin_login_email_notification' ) );
|
151 |
}
|
152 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
153 |
/**
|
154 |
* @param array $aOptionsParams
|
155 |
* @return array
|
@@ -169,6 +222,16 @@ class ICWP_WPSF_FeatureHandler_UserManagement extends ICWP_WPSF_FeatureHandler_B
|
|
169 |
$sTitleShort = sprintf( _wpsf__( '%s/%s Module' ), _wpsf__( 'Enable' ), _wpsf__( 'Disable' ) );
|
170 |
break;
|
171 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
172 |
case 'section_admin_login_notification' :
|
173 |
$sTitle = _wpsf__( 'Admin Login Notification' );
|
174 |
$aSummary = array(
|
@@ -258,6 +321,45 @@ class ICWP_WPSF_FeatureHandler_UserManagement extends ICWP_WPSF_FeatureHandler_B
|
|
258 |
.'<br />'._wpsf__( "Zero (0) will allow unlimited simultaneous sessions." );
|
259 |
break;
|
260 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
261 |
default:
|
262 |
throw new Exception( sprintf( 'An option has been defined but without strings assigned to it. Option key: "%s".', $sKey ) );
|
263 |
}
|
8 |
|
9 |
class ICWP_WPSF_FeatureHandler_UserManagement extends ICWP_WPSF_FeatureHandler_BaseWpsf {
|
10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
/**
|
12 |
* @return array
|
13 |
*/
|
41 |
|
42 |
return array(
|
43 |
'strings' => $this->getDisplayStrings(),
|
44 |
+
'time_now' => sprintf( _wpsf__( 'now: %s' ), date_i18n( $sTimeFormat.' '.$sDateFormat, $this->loadDP()->time() ) ),
|
|
|
45 |
'sUserSessionsTable' => $sUserSessionsTable
|
46 |
);
|
47 |
}
|
52 |
protected function getTableRendererForSessions() {
|
53 |
$this->requireCommonLib( 'Components/Tables/SessionsTable.php' );
|
54 |
/** @var ICWP_WPSF_Processor_UserManagement $oProc */
|
55 |
+
$oProc = $this->loadProcessor();
|
56 |
// $nCount = $oProc->countAuditEntriesForContext( $sContext );
|
57 |
|
58 |
$oTable = new SessionsTable();
|
138 |
return $this->loadDP()->validEmail( $this->getOpt( 'enable_admin_login_email_notification' ) );
|
139 |
}
|
140 |
|
141 |
+
/**
|
142 |
+
* @return int days
|
143 |
+
*/
|
144 |
+
public function getPassExpireDays() {
|
145 |
+
return max( 0, (int)$this->getOpt( 'pass_expire' ) );
|
146 |
+
}
|
147 |
+
|
148 |
+
/**
|
149 |
+
* @return int seconds
|
150 |
+
*/
|
151 |
+
public function getPassExpireTimeout() {
|
152 |
+
return $this->isPremium() ? $this->getPassExpireDays()*DAY_IN_SECONDS : 0;
|
153 |
+
}
|
154 |
+
|
155 |
+
/**
|
156 |
+
* @return int
|
157 |
+
*/
|
158 |
+
public function getPassMinLength() {
|
159 |
+
return $this->isPremium() ? (int)$this->getOpt( 'pass_min_length' ) : 0;
|
160 |
+
}
|
161 |
+
|
162 |
+
/**
|
163 |
+
* @return int
|
164 |
+
*/
|
165 |
+
public function getPassMinStrength() {
|
166 |
+
return $this->isPremium() ? (int)$this->getOpt( 'pass_min_strength' ) : 0;
|
167 |
+
}
|
168 |
+
|
169 |
+
/**
|
170 |
+
* @param int $nStrength
|
171 |
+
* @return int
|
172 |
+
*/
|
173 |
+
public function getPassStrengthName( $nStrength ) {
|
174 |
+
$aMap = array(
|
175 |
+
_wpsf__( 'Very Weak' ),
|
176 |
+
_wpsf__( 'Weak' ),
|
177 |
+
_wpsf__( 'Medium' ),
|
178 |
+
_wpsf__( 'Strong' ),
|
179 |
+
_wpsf__( 'Very Strong' ),
|
180 |
+
);
|
181 |
+
return $aMap[ max( 0, min( 4, $nStrength ) ) ];
|
182 |
+
}
|
183 |
+
|
184 |
+
/**
|
185 |
+
* @return bool
|
186 |
+
*/
|
187 |
+
public function isPasswordPoliciesEnabled() {
|
188 |
+
return $this->getOptIs( 'enable_password_policies', 'Y' )
|
189 |
+
&& $this->getOptionsVo()->isOptReqsMet( 'enable_password_policies' );
|
190 |
+
}
|
191 |
+
|
192 |
+
/**
|
193 |
+
* @return bool
|
194 |
+
*/
|
195 |
+
public function isPassForceUpdateExisting() {
|
196 |
+
return $this->getOptIs( 'pass_force_existing', 'Y' );
|
197 |
+
}
|
198 |
+
|
199 |
+
/**
|
200 |
+
* @return bool
|
201 |
+
*/
|
202 |
+
public function isPassPreventPwned() {
|
203 |
+
return $this->getOptIs( 'pass_prevent_pwned', 'Y' );
|
204 |
+
}
|
205 |
+
|
206 |
/**
|
207 |
* @param array $aOptionsParams
|
208 |
* @return array
|
222 |
$sTitleShort = sprintf( _wpsf__( '%s/%s Module' ), _wpsf__( 'Enable' ), _wpsf__( 'Disable' ) );
|
223 |
break;
|
224 |
|
225 |
+
case 'section_passwords' :
|
226 |
+
$sTitle = _wpsf__( 'Password Policies' );
|
227 |
+
$sTitleShort = _wpsf__( 'Password Policies' );
|
228 |
+
$aSummary = array(
|
229 |
+
sprintf( _wpsf__( 'Purpose - %s' ), _wpsf__( 'Have full control over passwords used by users on the site.' ) ),
|
230 |
+
sprintf( _wpsf__( 'Recommendation - %s' ), _wpsf__( 'Use of this feature is highly recommend.' ) ),
|
231 |
+
sprintf( _wpsf__( 'Note - %s' ), _wpsf__( 'Requires PHP v5.4 and above.' ) )
|
232 |
+
);
|
233 |
+
break;
|
234 |
+
|
235 |
case 'section_admin_login_notification' :
|
236 |
$sTitle = _wpsf__( 'Admin Login Notification' );
|
237 |
$aSummary = array(
|
321 |
.'<br />'._wpsf__( "Zero (0) will allow unlimited simultaneous sessions." );
|
322 |
break;
|
323 |
|
324 |
+
case 'enable_password_policies' :
|
325 |
+
$sName = _wpsf__( 'Enable Password Policies' );
|
326 |
+
$sSummary = _wpsf__( 'Enable The Password Policies Detailed Below' );
|
327 |
+
$sDescription = _wpsf__( 'Turn on/off all password policy settings.' );
|
328 |
+
break;
|
329 |
+
|
330 |
+
case 'pass_prevent_pwned' :
|
331 |
+
$sName = _wpsf__( 'Prevent Pwned Passwords' );
|
332 |
+
$sSummary = _wpsf__( 'Prevent Use Of "Pwned" Passwords' );
|
333 |
+
$sDescription = _wpsf__( 'Prevents users from using any passwords found on the public available list of "pwned" passwords.' );
|
334 |
+
break;
|
335 |
+
|
336 |
+
case 'pass_min_length' :
|
337 |
+
$sName = _wpsf__( 'Minimum Length' );
|
338 |
+
$sSummary = _wpsf__( 'Minimum Password Length' );
|
339 |
+
$sDescription = _wpsf__( 'All passwords that a user sets must be at least this many characters in length.' )
|
340 |
+
.'<br/>'._wpsf__( 'Set to Zero(0) to disable.' );
|
341 |
+
break;
|
342 |
+
|
343 |
+
case 'pass_min_strength' :
|
344 |
+
$sName = _wpsf__( 'Minimum Strength' );
|
345 |
+
$sSummary = _wpsf__( 'Minimum Password Strength' );
|
346 |
+
$sDescription = _wpsf__( 'All passwords that a user sets must meet this minimum strength.' );
|
347 |
+
break;
|
348 |
+
|
349 |
+
case 'pass_force_existing' :
|
350 |
+
$sName = _wpsf__( 'Apply To Existing Users' );
|
351 |
+
$sSummary = _wpsf__( 'Apply Password Policies To Existing Users and Their Passwords' );
|
352 |
+
$sDescription = _wpsf__( "Forces existing users to update their passwords if they don't meet requirements, after they next login." )
|
353 |
+
.'<br/>'._wpsf__( 'Note: You may want to warn users prior to enabling this option.' );
|
354 |
+
break;
|
355 |
+
|
356 |
+
case 'pass_expire' :
|
357 |
+
$sName = _wpsf__( 'Password Expiration' );
|
358 |
+
$sSummary = _wpsf__( 'Passwords Expire After This Many Days' );
|
359 |
+
$sDescription = _wpsf__( 'Users will be forced to reset their passwords after the number of days specified.' )
|
360 |
+
.'<br/>'._wpsf__( 'Set to Zero(0) to disable.' );
|
361 |
+
break;
|
362 |
+
|
363 |
default:
|
364 |
throw new Exception( sprintf( 'An option has been defined but without strings assigned to it. Option key: "%s".', $sKey ) );
|
365 |
}
|
src/processors/admin_access_restriction.php
CHANGED
@@ -46,6 +46,30 @@ class ICWP_WPSF_Processor_AdminAccessRestriction extends ICWP_WPSF_Processor_Bas
|
|
46 |
}
|
47 |
|
48 |
add_action( 'admin_footer', array( $this, 'printAdminAccessAjaxForm' ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
49 |
}
|
50 |
|
51 |
/**
|
@@ -421,13 +445,15 @@ class ICWP_WPSF_Processor_AdminAccessRestriction extends ICWP_WPSF_Processor_Bas
|
|
421 |
'editing_restricted' => _wpsf__( 'Editing this option is currently restricted.' ),
|
422 |
'unlock_link' => $this->getUnlockLinkHtml(),
|
423 |
),
|
424 |
-
'sAjaxNonce' => wp_create_nonce( 'icwp_ajax' ),
|
425 |
'js_snippets' => array(
|
426 |
'options_to_restrict' => "'".implode( "','", $oFO->getOptionsToRestrict() )."'",
|
|
|
|
|
|
|
427 |
)
|
428 |
);
|
429 |
add_thickbox();
|
430 |
-
echo $oFO->renderTemplate( 'snippets
|
431 |
}
|
432 |
|
433 |
/**
|
46 |
}
|
47 |
|
48 |
add_action( 'admin_footer', array( $this, 'printAdminAccessAjaxForm' ) );
|
49 |
+
|
50 |
+
if ( $oFO->isWlEnabled() ) {
|
51 |
+
$this->runWhiteLabel();
|
52 |
+
}
|
53 |
+
}
|
54 |
+
|
55 |
+
/**
|
56 |
+
*/
|
57 |
+
protected function runWhiteLabel() {
|
58 |
+
$this->getSubProcessorWhitelabel()
|
59 |
+
->run();
|
60 |
+
}
|
61 |
+
|
62 |
+
/**
|
63 |
+
* @return ICWP_WPSF_Processor_AdminAccess_Whitelabel
|
64 |
+
*/
|
65 |
+
protected function getSubProcessorWhitelabel() {
|
66 |
+
$oProc = $this->getSubProcessor( 'checksum' );
|
67 |
+
if ( is_null( $oProc ) ) {
|
68 |
+
require_once( dirname( __FILE__ ).'/adminaccess_whitelabel.php' );
|
69 |
+
$oProc = new ICWP_WPSF_Processor_AdminAccess_Whitelabel( $this->getFeature() );
|
70 |
+
$this->aSubProcessors[ 'wl' ] = $oProc;
|
71 |
+
}
|
72 |
+
return $oProc;
|
73 |
}
|
74 |
|
75 |
/**
|
445 |
'editing_restricted' => _wpsf__( 'Editing this option is currently restricted.' ),
|
446 |
'unlock_link' => $this->getUnlockLinkHtml(),
|
447 |
),
|
|
|
448 |
'js_snippets' => array(
|
449 |
'options_to_restrict' => "'".implode( "','", $oFO->getOptionsToRestrict() )."'",
|
450 |
+
),
|
451 |
+
'ajax' => array(
|
452 |
+
'sec_admin_login_box' => $oFO->getAjaxActionData( 'sec_admin_login_box', true )
|
453 |
)
|
454 |
);
|
455 |
add_thickbox();
|
456 |
+
echo $oFO->renderTemplate( 'snippets/admin_access_login_box.php', $aRenderData );
|
457 |
}
|
458 |
|
459 |
/**
|
src/processors/adminaccess_whitelabel.php
ADDED
@@ -0,0 +1,111 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if ( class_exists( 'ICWP_WPSF_Processor_AdminAccess_Whitelabel', false ) ) {
|
4 |
+
return;
|
5 |
+
}
|
6 |
+
|
7 |
+
require_once( dirname( __FILE__ ).'/base_wpsf.php' );
|
8 |
+
|
9 |
+
class ICWP_WPSF_Processor_AdminAccess_Whitelabel extends ICWP_WPSF_Processor_BaseWpsf {
|
10 |
+
|
11 |
+
/**
|
12 |
+
*/
|
13 |
+
public function run() {
|
14 |
+
/** @var ICWP_WPSF_FeatureHandler_AdminAccessRestriction $oFO */
|
15 |
+
$oFO = $this->getFeature();
|
16 |
+
add_filter( $this->getController()->prefix( 'plugin_labels' ), array( $this, 'doRelabelPlugin' ) );
|
17 |
+
add_filter( 'plugin_row_meta', array( $this, 'fRemoveDetailsMetaLink' ), 200, 2 );
|
18 |
+
if ( $oFO->isWlHideUpdates() && $this->isNeedToHideUpdates() ) {
|
19 |
+
add_filter( 'site_transient_update_plugins', array( $this, 'hidePluginUpdatesFromUI' ) );
|
20 |
+
}
|
21 |
+
add_action( 'admin_print_footer_scripts-plugin-editor.php', array( $this, 'hideFromPluginEditor' ) );
|
22 |
+
}
|
23 |
+
|
24 |
+
public function hideFromPluginEditor() {
|
25 |
+
$oCon = $this->getController();
|
26 |
+
$sJs = $this->loadDP()->readFileContentsUsingInclude( $oCon->getPath_AssetJs( 'whitelabel.js' ) );
|
27 |
+
echo sprintf( '<script type="text/javascript">%s</script>', sprintf( $sJs, $oCon->getPluginBaseFile() ) );
|
28 |
+
}
|
29 |
+
|
30 |
+
/**
|
31 |
+
* @param array $aPluginLabels
|
32 |
+
* @return array
|
33 |
+
*/
|
34 |
+
public function doRelabelPlugin( $aPluginLabels ) {
|
35 |
+
/** @var ICWP_WPSF_FeatureHandler_AdminAccessRestriction $oFO */
|
36 |
+
$oFO = $this->getFeature();
|
37 |
+
|
38 |
+
$aWhiteLabels = $oFO->getWhitelabelOptions();
|
39 |
+
|
40 |
+
// these are the old white labelling keys which will be replaced upon final release of white labelling.
|
41 |
+
$sServiceName = $aWhiteLabels[ 'name_main' ];
|
42 |
+
if ( !empty( $sServiceName ) ) {
|
43 |
+
$aPluginLabels[ 'Name' ] = $sServiceName;
|
44 |
+
$aPluginLabels[ 'Title' ] = $sServiceName;
|
45 |
+
$aPluginLabels[ 'Author' ] = $sServiceName;
|
46 |
+
$aPluginLabels[ 'AuthorName' ] = $sServiceName;
|
47 |
+
$aPluginLabels[ 'MenuTitle' ] = $aWhiteLabels[ 'name_menu' ];
|
48 |
+
}
|
49 |
+
$sTagLine = $aWhiteLabels[ 'description' ];
|
50 |
+
if ( !empty( $sTagLine ) ) {
|
51 |
+
$aPluginLabels[ 'Description' ] = $sTagLine;
|
52 |
+
}
|
53 |
+
|
54 |
+
$sUrl = $aWhiteLabels[ 'url_home' ];
|
55 |
+
if ( !empty( $sUrl ) ) {
|
56 |
+
$aPluginLabels[ 'PluginURI' ] = $sUrl;
|
57 |
+
$aPluginLabels[ 'AuthorURI' ] = $sUrl;
|
58 |
+
}
|
59 |
+
|
60 |
+
$sIconUrl = $aWhiteLabels[ 'url_icon' ];
|
61 |
+
if ( !empty( $sIcon16 ) ) {
|
62 |
+
$aPluginLabels[ 'icon_url_16x16' ] = $sIconUrl;
|
63 |
+
}
|
64 |
+
|
65 |
+
$sIcon32 = $this->getOption( 'icon_url_32x32' );
|
66 |
+
if ( !empty( $sIcon32 ) ) {
|
67 |
+
$aPluginLabels[ 'icon_url_32x32' ] = $sIconUrl;
|
68 |
+
}
|
69 |
+
|
70 |
+
return $aPluginLabels;
|
71 |
+
}
|
72 |
+
|
73 |
+
/**
|
74 |
+
* @filter
|
75 |
+
* @param array $aPluginMeta
|
76 |
+
* @param string $sPluginBaseFileName
|
77 |
+
* @return array
|
78 |
+
*/
|
79 |
+
public function fRemoveDetailsMetaLink( $aPluginMeta, $sPluginBaseFileName ) {
|
80 |
+
if ( $sPluginBaseFileName == $this->getController()->getPluginBaseFile() ) {
|
81 |
+
unset( $aPluginMeta[ 2 ] ); // View details
|
82 |
+
unset( $aPluginMeta[ 3 ] ); // Rate 5*
|
83 |
+
}
|
84 |
+
return $aPluginMeta;
|
85 |
+
}
|
86 |
+
|
87 |
+
/**
|
88 |
+
* @param stdClass $oPlugins
|
89 |
+
* @return stdClass
|
90 |
+
*/
|
91 |
+
public function hidePluginUpdatesFromUI( $oPlugins ) {
|
92 |
+
$oCon = $this->getController();
|
93 |
+
|
94 |
+
if ( !$oCon->getHasPermissionToManage() ) {
|
95 |
+
$sFile = $oCon->getPluginBaseFile();
|
96 |
+
if ( isset( $oPlugins->response[ $sFile ] ) ) {
|
97 |
+
unset( $oPlugins->response[ $sFile ] );
|
98 |
+
}
|
99 |
+
}
|
100 |
+
return $oPlugins;
|
101 |
+
}
|
102 |
+
|
103 |
+
/**
|
104 |
+
* @return bool
|
105 |
+
*/
|
106 |
+
private function isNeedToHideUpdates() {
|
107 |
+
$oWp = $this->loadWp();
|
108 |
+
return is_admin() && !$oWp->isCron()
|
109 |
+
&& ( in_array( $oWp->getCurrentPage(), array( 'plugins.php', 'update-core.php' ) ) );
|
110 |
+
}
|
111 |
+
}
|
src/processors/autoupdates.php
CHANGED
@@ -505,14 +505,12 @@ class ICWP_WPSF_Processor_Autoupdates extends ICWP_WPSF_Processor_BaseWpsf {
|
|
505 |
class="icwp-autoupdate-plugin"
|
506 |
data-pluginfile="%s"
|
507 |
data-disabled="%s"
|
508 |
-
%s
|
509 |
-
data-nonce="%s">
|
510 |
<span class="slider"></span></label>',
|
511 |
$bDisabled ? 'disabled' : '',
|
512 |
$sPluginBaseFileName,
|
513 |
$bDisabled ? _wpsf__( 'Automatic updates for this plugin is controlled by another plugin or setting.' ) : 'no',
|
514 |
-
$bIsAutoupdate ? 'checked="checked"' : ''
|
515 |
-
wp_create_nonce( 'icwp_ajax' )
|
516 |
);
|
517 |
}
|
518 |
|
505 |
class="icwp-autoupdate-plugin"
|
506 |
data-pluginfile="%s"
|
507 |
data-disabled="%s"
|
508 |
+
%s />
|
|
|
509 |
<span class="slider"></span></label>',
|
510 |
$bDisabled ? 'disabled' : '',
|
511 |
$sPluginBaseFileName,
|
512 |
$bDisabled ? _wpsf__( 'Automatic updates for this plugin is controlled by another plugin or setting.' ) : 'no',
|
513 |
+
$bIsAutoupdate ? 'checked="checked"' : ''
|
|
|
514 |
);
|
515 |
}
|
516 |
|
src/processors/base.php
CHANGED
@@ -106,7 +106,6 @@ abstract class ICWP_WPSF_Processor_Base extends ICWP_WPSF_Foundation {
|
|
106 |
return false;
|
107 |
}
|
108 |
}
|
109 |
-
|
110 |
return true;
|
111 |
}
|
112 |
|
@@ -141,8 +140,11 @@ abstract class ICWP_WPSF_Processor_Base extends ICWP_WPSF_Foundation {
|
|
141 |
return;
|
142 |
}
|
143 |
|
|
|
|
|
|
|
144 |
$oNotices = $this->loadAdminNoticesProcessor();
|
145 |
-
if ( !$oNotices->isDismissed( $aAttrs[ 'id' ] ) ) {
|
146 |
|
147 |
$sRenderedNotice = $this->getFeature()->renderAdminNotice( $aNoticeData );
|
148 |
if ( !empty( $sRenderedNotice ) ) {
|
106 |
return false;
|
107 |
}
|
108 |
}
|
|
|
109 |
return true;
|
110 |
}
|
111 |
|
140 |
return;
|
141 |
}
|
142 |
|
143 |
+
$bCantDismiss = isset( $aNoticeData[ 'notice_attributes' ][ 'can_dismiss' ] )
|
144 |
+
&& !$aNoticeData[ 'notice_attributes' ][ 'can_dismiss' ];
|
145 |
+
|
146 |
$oNotices = $this->loadAdminNoticesProcessor();
|
147 |
+
if ( !$oNotices->isDismissed( $aAttrs[ 'id' ] ) || $bCantDismiss ) {
|
148 |
|
149 |
$sRenderedNotice = $this->getFeature()->renderAdminNotice( $aNoticeData );
|
150 |
if ( !empty( $sRenderedNotice ) ) {
|
src/processors/base_plugin.php
CHANGED
@@ -214,10 +214,6 @@ class ICWP_WPSF_Processor_BasePlugin extends ICWP_WPSF_Processor_BaseWpsf {
|
|
214 |
return $bShow;
|
215 |
}
|
216 |
|
217 |
-
if ( $this->getInstallationDays() < 1 ) {
|
218 |
-
$bShow = false;
|
219 |
-
}
|
220 |
-
|
221 |
$oWpFunctions = $this->loadWp();
|
222 |
if ( class_exists( 'Worpit_Plugin' ) ) {
|
223 |
if ( method_exists( 'Worpit_Plugin', 'IsLinked' ) ) {
|
214 |
return $bShow;
|
215 |
}
|
216 |
|
|
|
|
|
|
|
|
|
217 |
$oWpFunctions = $this->loadWp();
|
218 |
if ( class_exists( 'Worpit_Plugin' ) ) {
|
219 |
if ( method_exists( 'Worpit_Plugin', 'IsLinked' ) ) {
|
src/processors/base_wpsf.php
CHANGED
@@ -44,7 +44,7 @@ abstract class ICWP_WPSF_Processor_BaseWpsf extends ICWP_WPSF_Processor_Base {
|
|
44 |
if ( empty( $nTimeInstalled ) ) {
|
45 |
return 0;
|
46 |
}
|
47 |
-
return (int)round( ( $this->
|
48 |
}
|
49 |
|
50 |
/**
|
@@ -60,7 +60,7 @@ abstract class ICWP_WPSF_Processor_BaseWpsf extends ICWP_WPSF_Processor_Base {
|
|
60 |
* @return string
|
61 |
*/
|
62 |
protected function getRecaptchaResponse() {
|
63 |
-
return $this->
|
64 |
}
|
65 |
|
66 |
/**
|
44 |
if ( empty( $nTimeInstalled ) ) {
|
45 |
return 0;
|
46 |
}
|
47 |
+
return (int)round( ( $this->loadDP()->time() - $nTimeInstalled )/DAY_IN_SECONDS );
|
48 |
}
|
49 |
|
50 |
/**
|
60 |
* @return string
|
61 |
*/
|
62 |
protected function getRecaptchaResponse() {
|
63 |
+
return $this->loadDP()->post( 'g-recaptcha-response' );
|
64 |
}
|
65 |
|
66 |
/**
|
src/processors/basedb.php
CHANGED
@@ -247,7 +247,7 @@ abstract class ICWP_WPSF_BaseDbProcessor extends ICWP_WPSF_Processor_BaseWpsf {
|
|
247 |
* @return string
|
248 |
*/
|
249 |
protected function getDbCleanupHookName() {
|
250 |
-
return $this->getController()->
|
251 |
}
|
252 |
|
253 |
/**
|
247 |
* @return string
|
248 |
*/
|
249 |
protected function getDbCleanupHookName() {
|
250 |
+
return $this->getController()->prefix( $this->getFeature()->getFeatureSlug().'_db_cleanup' );
|
251 |
}
|
252 |
|
253 |
/**
|
src/processors/hackprotect_corechecksumscan.php
CHANGED
@@ -16,31 +16,25 @@ class ICWP_WPSF_Processor_HackProtect_CoreChecksumScan extends ICWP_WPSF_Process
|
|
16 |
if ( $this->loadWpUsers()->isUserAdmin() ) {
|
17 |
$oDp = $this->loadDP();
|
18 |
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
if ( $this->repairCoreFile( $sMd5FilePath ) ) {
|
31 |
-
$this->loadAdminNoticesProcessor()
|
32 |
-
->addFlashMessage(
|
33 |
-
_wpsf__( 'File was successfully replaced with an original from WordPress.org' )
|
34 |
-
);
|
35 |
-
}
|
36 |
-
else {
|
37 |
-
$this->loadAdminNoticesProcessor()
|
38 |
-
->addFlashMessage(
|
39 |
-
_wpsf__( 'File was not replaced' )
|
40 |
-
);
|
41 |
-
}
|
42 |
}
|
43 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
44 |
}
|
45 |
}
|
46 |
}
|
@@ -120,6 +114,10 @@ class ICWP_WPSF_Processor_HackProtect_CoreChecksumScan extends ICWP_WPSF_Process
|
|
120 |
}
|
121 |
}
|
122 |
|
|
|
|
|
|
|
|
|
123 |
return $aDiscoveredFiles;
|
124 |
}
|
125 |
|
16 |
if ( $this->loadWpUsers()->isUserAdmin() ) {
|
17 |
$oDp = $this->loadDP();
|
18 |
|
19 |
+
switch ( $oDp->query( 'shield_action' ) ) {
|
20 |
+
|
21 |
+
case 'repair_file':
|
22 |
+
$sPath = '/'.trim( $oDp->query( 'repair_file_path' ) ); // "/" prevents esc_url() from prepending http.
|
23 |
+
$sMd5FilePath = urldecode( esc_url( $sPath ) );
|
24 |
+
if ( !empty( $sMd5FilePath ) ) {
|
25 |
+
if ( $this->repairCoreFile( $sMd5FilePath ) ) {
|
26 |
+
$this->loadAdminNoticesProcessor()
|
27 |
+
->addFlashMessage(
|
28 |
+
_wpsf__( 'File was successfully replaced with an original from WordPress.org' )
|
29 |
+
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
}
|
31 |
+
else {
|
32 |
+
$this->loadAdminNoticesProcessor()
|
33 |
+
->addFlashMessage(
|
34 |
+
_wpsf__( 'File was not replaced' )
|
35 |
+
);
|
36 |
+
}
|
37 |
+
}
|
38 |
}
|
39 |
}
|
40 |
}
|
114 |
}
|
115 |
}
|
116 |
|
117 |
+
/** @var ICWP_WPSF_FeatureHandler_HackProtect $oFO */
|
118 |
+
$oFO = $this->getFeature();
|
119 |
+
$oFO->setLastScanAt( 'wcf' );
|
120 |
+
|
121 |
return $aDiscoveredFiles;
|
122 |
}
|
123 |
|
src/processors/hackprotect_filecleanerscan.php
CHANGED
@@ -21,15 +21,10 @@ class ICWP_WPSF_Processor_HackProtect_FileCleanerScan extends ICWP_WPSF_Processo
|
|
21 |
if ( $this->loadWpUsers()->isUserAdmin() ) {
|
22 |
$oDp = $this->loadDP();
|
23 |
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
$sAction = $oDp->query( 'shield_action' );
|
29 |
-
switch ( $sAction ) {
|
30 |
-
case 'delete_unrecognised_file':
|
31 |
-
$sPath = '/'.trim( $oDp->FetchGet( 'repair_file_path' ) ); // "/" prevents esc_url() from prepending http.
|
32 |
-
}
|
33 |
}
|
34 |
}
|
35 |
}
|
@@ -189,6 +184,7 @@ class ICWP_WPSF_Processor_HackProtect_FileCleanerScan extends ICWP_WPSF_Processo
|
|
189 |
public function runScan() {
|
190 |
/** @var ICWP_WPSF_FeatureHandler_HackProtect $oFO */
|
191 |
$oFO = $this->getFeature();
|
|
|
192 |
$aDiscoveredFiles = $this->discoverFiles();
|
193 |
if ( !empty( $aDiscoveredFiles ) ) {
|
194 |
if ( $oFO->isUfcDeleteFiles() ) {
|
@@ -206,6 +202,7 @@ class ICWP_WPSF_Processor_HackProtect_FileCleanerScan extends ICWP_WPSF_Processo
|
|
206 |
public function discoverFiles() {
|
207 |
/** @var ICWP_WPSF_FeatureHandler_HackProtect $oFO */
|
208 |
$oFO = $this->getFeature();
|
|
|
209 |
|
210 |
$aDiscoveredFiles = $this->scanCore();
|
211 |
if ( $oFO->isUfsScanUploads() ) {
|
21 |
if ( $this->loadWpUsers()->isUserAdmin() ) {
|
22 |
$oDp = $this->loadDP();
|
23 |
|
24 |
+
switch ( $oDp->query( 'shield_action' ) ) {
|
25 |
+
case 'delete_unrecognised_file':
|
26 |
+
$sPath = '/'.trim( $oDp->query( 'repair_file_path' ) ); // "/" prevents esc_url() from prepending http.
|
27 |
+
break;
|
|
|
|
|
|
|
|
|
|
|
28 |
}
|
29 |
}
|
30 |
}
|
184 |
public function runScan() {
|
185 |
/** @var ICWP_WPSF_FeatureHandler_HackProtect $oFO */
|
186 |
$oFO = $this->getFeature();
|
187 |
+
|
188 |
$aDiscoveredFiles = $this->discoverFiles();
|
189 |
if ( !empty( $aDiscoveredFiles ) ) {
|
190 |
if ( $oFO->isUfcDeleteFiles() ) {
|
202 |
public function discoverFiles() {
|
203 |
/** @var ICWP_WPSF_FeatureHandler_HackProtect $oFO */
|
204 |
$oFO = $this->getFeature();
|
205 |
+
$oFO->setLastScanAt( 'ufc' );
|
206 |
|
207 |
$aDiscoveredFiles = $this->scanCore();
|
208 |
if ( $oFO->isUfsScanUploads() ) {
|
src/processors/hackprotect_ptguard.php
CHANGED
@@ -551,6 +551,9 @@ class ICWP_WPSF_Processor_HackProtect_PTGuard extends ICWP_WPSF_Processor_CronBa
|
|
551 |
* @return array[][] - keys are slugs
|
552 |
*/
|
553 |
protected function runSnapshotScan( $sContext = self::CONTEXT_PLUGINS ) {
|
|
|
|
|
|
|
554 |
|
555 |
$aResults = array();
|
556 |
|
551 |
* @return array[][] - keys are slugs
|
552 |
*/
|
553 |
protected function runSnapshotScan( $sContext = self::CONTEXT_PLUGINS ) {
|
554 |
+
/** @var ICWP_WPSF_FeatureHandler_HackProtect $oFO */
|
555 |
+
$oFO = $this->getFeature();
|
556 |
+
$oFO->setLastScanAt( 'ptg' );
|
557 |
|
558 |
$aResults = array();
|
559 |
|
src/processors/hackprotect_wpvulnscan.php
CHANGED
@@ -32,11 +32,6 @@ class ICWP_WPSF_Processor_HackProtect_WpVulnScan extends ICWP_WPSF_Processor_Bas
|
|
32 |
*/
|
33 |
public function run() {
|
34 |
|
35 |
-
if ( $this->loadDP()->FetchGet( 'force_wpvulnscan' ) == 1 ) {
|
36 |
-
$this->scanPlugins();
|
37 |
-
die();
|
38 |
-
}
|
39 |
-
|
40 |
// For display on the Plugins page
|
41 |
add_action( 'admin_init', array( $this, 'addPluginVulnerabilityRows' ), 10, 2 );
|
42 |
|
@@ -95,7 +90,7 @@ class ICWP_WPSF_Processor_HackProtect_WpVulnScan extends ICWP_WPSF_Processor_Bas
|
|
95 |
}
|
96 |
|
97 |
public function addVulnerablePluginStatusView() {
|
98 |
-
if ( $this->loadDP()->
|
99 |
global $status;
|
100 |
$status = 'vulnerable';
|
101 |
}
|
@@ -125,7 +120,7 @@ class ICWP_WPSF_Processor_HackProtect_WpVulnScan extends ICWP_WPSF_Processor_Bas
|
|
125 |
* @return array
|
126 |
*/
|
127 |
public function filterPluginsToView( $aPlugins ) {
|
128 |
-
if ( $this->loadDP()->
|
129 |
global $status;
|
130 |
$status = 'vulnerable';
|
131 |
$aPlugins = array_intersect_key( $aPlugins, $this->getVulnerablePlugins() );
|
@@ -235,6 +230,10 @@ class ICWP_WPSF_Processor_HackProtect_WpVulnScan extends ICWP_WPSF_Processor_Bas
|
|
235 |
}
|
236 |
|
237 |
public function cron_dailyWpVulnScan() {
|
|
|
|
|
|
|
|
|
238 |
$this->scanPlugins();
|
239 |
$this->scanThemes();
|
240 |
}
|
32 |
*/
|
33 |
public function run() {
|
34 |
|
|
|
|
|
|
|
|
|
|
|
35 |
// For display on the Plugins page
|
36 |
add_action( 'admin_init', array( $this, 'addPluginVulnerabilityRows' ), 10, 2 );
|
37 |
|
90 |
}
|
91 |
|
92 |
public function addVulnerablePluginStatusView() {
|
93 |
+
if ( $this->loadDP()->query( 'plugin_status' ) == 'vulnerable' ) {
|
94 |
global $status;
|
95 |
$status = 'vulnerable';
|
96 |
}
|
120 |
* @return array
|
121 |
*/
|
122 |
public function filterPluginsToView( $aPlugins ) {
|
123 |
+
if ( $this->loadDP()->query( 'plugin_status' ) == 'vulnerable' ) {
|
124 |
global $status;
|
125 |
$status = 'vulnerable';
|
126 |
$aPlugins = array_intersect_key( $aPlugins, $this->getVulnerablePlugins() );
|
230 |
}
|
231 |
|
232 |
public function cron_dailyWpVulnScan() {
|
233 |
+
/** @var ICWP_WPSF_FeatureHandler_HackProtect $oFO */
|
234 |
+
$oFO = $this->getFeature();
|
235 |
+
$oFO->setLastScanAt( 'wpv' );
|
236 |
+
|
237 |
$this->scanPlugins();
|
238 |
$this->scanThemes();
|
239 |
}
|
src/processors/license.php
CHANGED
@@ -4,12 +4,38 @@ if ( class_exists( 'ICWP_WPSF_Processor_License' ) ) {
|
|
4 |
return;
|
5 |
}
|
6 |
|
7 |
-
require_once( dirname( __FILE__ ).'/
|
8 |
|
9 |
-
class ICWP_WPSF_Processor_License extends
|
10 |
|
11 |
/**
|
12 |
*/
|
13 |
public function run() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14 |
}
|
15 |
}
|
4 |
return;
|
5 |
}
|
6 |
|
7 |
+
require_once( dirname( __FILE__ ).'/base_wpsf.php' );
|
8 |
|
9 |
+
class ICWP_WPSF_Processor_License extends ICWP_WPSF_Processor_BaseWpsf {
|
10 |
|
11 |
/**
|
12 |
*/
|
13 |
public function run() {
|
14 |
+
/** @var ICWP_WPSF_FeatureHandler_License $oFO */
|
15 |
+
$oFO = $this->getFeature();
|
16 |
+
$oDp = $this->loadDP();
|
17 |
+
|
18 |
+
// performs the license check
|
19 |
+
add_action( $oFO->prefix( 'adhoc_cron_license_check' ), array( $oFO, 'verifyLicense' ) );
|
20 |
+
|
21 |
+
switch ( $oDp->query( 'shield_action' ) ) {
|
22 |
+
|
23 |
+
case 'keyless_handshake':
|
24 |
+
$sNonce = $oDp->query( 'nonce' );
|
25 |
+
if ( !empty( $sNonce ) && $sNonce == $oFO->getKeylessRequestHash() ) {
|
26 |
+
$aHandshakeData = array( 'success' => false );
|
27 |
+
if ( !$oFO->isKeylessHandshakeExpired() ) {
|
28 |
+
$aHandshakeData[ 'success' ] = true;
|
29 |
+
}
|
30 |
+
die( json_encode( $aHandshakeData ) );
|
31 |
+
}
|
32 |
+
break;
|
33 |
+
|
34 |
+
case 'license_check':
|
35 |
+
if ( !wp_next_scheduled( $oFO->prefix( 'license_check' ) ) ) {
|
36 |
+
wp_schedule_single_event( $oDp->time() + 12, $oFO->prefix( 'adhoc_cron_license_check' ) );
|
37 |
+
}
|
38 |
+
break;
|
39 |
+
}
|
40 |
}
|
41 |
}
|
src/processors/plugin.php
CHANGED
@@ -119,12 +119,11 @@ class ICWP_WPSF_Processor_Plugin extends ICWP_WPSF_Processor_BasePlugin {
|
|
119 |
'strings' => array(
|
120 |
'tracking_data' => print_r( $this->getTrackingProcessor()->collectTrackingData(), true ),
|
121 |
),
|
122 |
-
|
123 |
-
'js_snippets' => array(// 'options_to_restrict' => "'".implode( "','", $oFO->getOptionsToRestrict() )."'",
|
124 |
)
|
125 |
);
|
126 |
add_thickbox();
|
127 |
-
echo $oFO->renderTemplate( 'snippets
|
128 |
}
|
129 |
|
130 |
/**
|
119 |
'strings' => array(
|
120 |
'tracking_data' => print_r( $this->getTrackingProcessor()->collectTrackingData(), true ),
|
121 |
),
|
122 |
+
'js_snippets' => array(
|
|
|
123 |
)
|
124 |
);
|
125 |
add_thickbox();
|
126 |
+
echo $oFO->renderTemplate( 'snippets/plugin_tracking_data_dump.php', $aRenderData );
|
127 |
}
|
128 |
|
129 |
/**
|
src/processors/plugin_badgewidget.php
CHANGED
@@ -72,7 +72,7 @@ class ICWP_WPSF_Processor_Plugin_BadgeWidget extends ICWP_WPSF_WpWidget {
|
|
72 |
return self::$oFeatureOptions
|
73 |
->loadRenderer( $oCon->getPath_Templates().'php' )
|
74 |
->setRenderVars( $aData )
|
75 |
-
->setTemplate( 'snippets
|
76 |
->setTemplateEnginePhp()
|
77 |
->render();
|
78 |
}
|
72 |
return self::$oFeatureOptions
|
73 |
->loadRenderer( $oCon->getPath_Templates().'php' )
|
74 |
->setRenderVars( $aData )
|
75 |
+
->setTemplate( 'snippets/plugin_badge_widget' )
|
76 |
->setTemplateEnginePhp()
|
77 |
->render();
|
78 |
}
|
src/processors/plugin_tracking.php
CHANGED
@@ -23,7 +23,6 @@ class ICWP_WPSF_Processor_Plugin_Tracking extends ICWP_WPSF_Processor_BasePlugin
|
|
23 |
protected function addNotice_allow_tracking( $aNoticeAttributes ) {
|
24 |
/** @var ICWP_WPSF_FeatureHandler_Plugin $oFO */
|
25 |
$oFO = $this->getFeature();
|
26 |
-
|
27 |
if ( $this->getIfShowAdminNotices() && !$oFO->isTrackingPermissionSet() ) {
|
28 |
$oCon = $this->getController();
|
29 |
$aRenderData = array(
|
@@ -39,6 +38,9 @@ class ICWP_WPSF_Processor_Plugin_Tracking extends ICWP_WPSF_Processor_BasePlugin
|
|
39 |
'site_url' => 'translate.icontrolwp.com',
|
40 |
'yes' => _wpsf__( 'Absolutely' )
|
41 |
),
|
|
|
|
|
|
|
42 |
'hrefs' => array(
|
43 |
'learn_more' => 'http://translate.icontrolwp.com',
|
44 |
'link_to_see' => $oFO->getLinkToTrackingDataDump(),
|
23 |
protected function addNotice_allow_tracking( $aNoticeAttributes ) {
|
24 |
/** @var ICWP_WPSF_FeatureHandler_Plugin $oFO */
|
25 |
$oFO = $this->getFeature();
|
|
|
26 |
if ( $this->getIfShowAdminNotices() && !$oFO->isTrackingPermissionSet() ) {
|
27 |
$oCon = $this->getController();
|
28 |
$aRenderData = array(
|
38 |
'site_url' => 'translate.icontrolwp.com',
|
39 |
'yes' => _wpsf__( 'Absolutely' )
|
40 |
),
|
41 |
+
'ajax' => array(
|
42 |
+
'set_plugin_tracking_perm' => $oFO->getAjaxActionData( 'set_plugin_tracking_perm', true ),
|
43 |
+
),
|
44 |
'hrefs' => array(
|
45 |
'learn_more' => 'http://translate.icontrolwp.com',
|
46 |
'link_to_see' => $oFO->getLinkToTrackingDataDump(),
|
src/processors/user_management.php
CHANGED
@@ -19,13 +19,19 @@ class ICWP_WPSF_Processor_UserManagement extends ICWP_WPSF_Processor_BaseWpsf {
|
|
19 |
/** @var ICWP_WPSF_FeatureHandler_UserManagement $oFO */
|
20 |
$oFO = $this->getFeature();
|
21 |
|
22 |
-
// Adds last login indicator column
|
23 |
add_filter( 'manage_users_columns', array( $this, 'fAddUserListLastLoginColumn' ) );
|
24 |
add_filter( 'wpmu_users_columns', array( $this, 'fAddUserListLastLoginColumn' ) );
|
25 |
|
26 |
-
|
27 |
add_action( 'wp_login', array( $this, 'onWpLogin' ) );
|
28 |
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
// XML-RPC Compatibility
|
30 |
if ( $this->loadWp()->getIsXmlrpc() && $oFO->isXmlrpcBypass() ) {
|
31 |
return;
|
@@ -37,6 +43,16 @@ class ICWP_WPSF_Processor_UserManagement extends ICWP_WPSF_Processor_BaseWpsf {
|
|
37 |
}
|
38 |
}
|
39 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
/**
|
41 |
* Hooked to action wp_login
|
42 |
* @param $sUsername
|
@@ -44,6 +60,9 @@ class ICWP_WPSF_Processor_UserManagement extends ICWP_WPSF_Processor_BaseWpsf {
|
|
44 |
public function onWpLogin( $sUsername ) {
|
45 |
$oUser = $this->loadWpUsers()->getUserByUsername( $sUsername );
|
46 |
if ( $oUser instanceof WP_User ) {
|
|
|
|
|
|
|
47 |
/** @var ICWP_WPSF_FeatureHandler_UserManagement $oFO */
|
48 |
$oFO = $this->getFeature();
|
49 |
if ( $oFO->isSendEmailLoginNotification() ) {
|
@@ -53,12 +72,27 @@ class ICWP_WPSF_Processor_UserManagement extends ICWP_WPSF_Processor_BaseWpsf {
|
|
53 |
}
|
54 |
}
|
55 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
56 |
/**
|
57 |
* @param WP_User $oUser
|
58 |
* @return $this
|
59 |
*/
|
60 |
protected function setUserLastLoginTime( $oUser ) {
|
61 |
-
$oMeta = $this->
|
62 |
$oMeta->last_login_at = $this->time();
|
63 |
return $this;
|
64 |
}
|
@@ -168,6 +202,19 @@ class ICWP_WPSF_Processor_UserManagement extends ICWP_WPSF_Processor_BaseWpsf {
|
|
168 |
);
|
169 |
}
|
170 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
171 |
/**
|
172 |
* @return ICWP_WPSF_Processor_UserManagement_Sessions
|
173 |
*/
|
@@ -193,6 +240,6 @@ class ICWP_WPSF_Processor_UserManagement extends ICWP_WPSF_Processor_BaseWpsf {
|
|
193 |
* @return string
|
194 |
*/
|
195 |
protected function getUserLastLoginKey() {
|
196 |
-
return $this->getController()->
|
197 |
}
|
198 |
}
|
19 |
/** @var ICWP_WPSF_FeatureHandler_UserManagement $oFO */
|
20 |
$oFO = $this->getFeature();
|
21 |
|
22 |
+
// Adds last login indicator column
|
23 |
add_filter( 'manage_users_columns', array( $this, 'fAddUserListLastLoginColumn' ) );
|
24 |
add_filter( 'wpmu_users_columns', array( $this, 'fAddUserListLastLoginColumn' ) );
|
25 |
|
26 |
+
add_action( 'init', array( $this, 'onWpInit' ) );
|
27 |
add_action( 'wp_login', array( $this, 'onWpLogin' ) );
|
28 |
|
29 |
+
if ( $oFO->isPasswordPoliciesEnabled() ) {
|
30 |
+
$this->getProcessorPasswords()->run();
|
31 |
+
}
|
32 |
+
|
33 |
+
/** Everything from this point on must consider XMLRPC compatibility **/
|
34 |
+
|
35 |
// XML-RPC Compatibility
|
36 |
if ( $this->loadWp()->getIsXmlrpc() && $oFO->isXmlrpcBypass() ) {
|
37 |
return;
|
43 |
}
|
44 |
}
|
45 |
|
46 |
+
/**
|
47 |
+
*/
|
48 |
+
public function onWpInit() {
|
49 |
+
$oWpUsers = $this->loadWpUsers();
|
50 |
+
if ( $oWpUsers->isUserLoggedIn() ) {
|
51 |
+
$oUser = $oWpUsers->getCurrentWpUser();
|
52 |
+
$this->setPasswordStartedAt( $oUser ); // used by Password Policies
|
53 |
+
}
|
54 |
+
}
|
55 |
+
|
56 |
/**
|
57 |
* Hooked to action wp_login
|
58 |
* @param $sUsername
|
60 |
public function onWpLogin( $sUsername ) {
|
61 |
$oUser = $this->loadWpUsers()->getUserByUsername( $sUsername );
|
62 |
if ( $oUser instanceof WP_User ) {
|
63 |
+
|
64 |
+
$this->setPasswordStartedAt( $oUser ); // used by Password Policies
|
65 |
+
|
66 |
/** @var ICWP_WPSF_FeatureHandler_UserManagement $oFO */
|
67 |
$oFO = $this->getFeature();
|
68 |
if ( $oFO->isSendEmailLoginNotification() ) {
|
72 |
}
|
73 |
}
|
74 |
|
75 |
+
/**
|
76 |
+
* @param WP_User $oUser
|
77 |
+
* @return $this
|
78 |
+
*/
|
79 |
+
private function setPasswordStartedAt( $oUser ) {
|
80 |
+
$oMeta = $this->getFeature()->getUserMeta( $oUser );
|
81 |
+
|
82 |
+
$sCurrentPassHash = substr( sha1( $oUser->user_pass ), 6, 4 );
|
83 |
+
if ( !isset( $oMeta->pass_hash ) || ( $oMeta->pass_hash != $sCurrentPassHash ) ) {
|
84 |
+
$oMeta->pass_hash = $sCurrentPassHash;
|
85 |
+
$oMeta->pass_started_at = $this->time();
|
86 |
+
}
|
87 |
+
return $this;
|
88 |
+
}
|
89 |
+
|
90 |
/**
|
91 |
* @param WP_User $oUser
|
92 |
* @return $this
|
93 |
*/
|
94 |
protected function setUserLastLoginTime( $oUser ) {
|
95 |
+
$oMeta = $this->getFeature()->getUserMeta( $oUser );
|
96 |
$oMeta->last_login_at = $this->time();
|
97 |
return $this;
|
98 |
}
|
202 |
);
|
203 |
}
|
204 |
|
205 |
+
/**
|
206 |
+
* @return ICWP_WPSF_Processor_UserManagement_Passwords
|
207 |
+
*/
|
208 |
+
protected function getProcessorPasswords() {
|
209 |
+
$oProc = $this->getSubProcessor( 'passwords' );
|
210 |
+
if ( is_null( $oProc ) ) {
|
211 |
+
require_once( dirname( __FILE__ ).'/usermanagement_passwords.php' );
|
212 |
+
$oProc = new ICWP_WPSF_Processor_UserManagement_Passwords( $this->getFeature() );
|
213 |
+
$this->aSubProcessors[ 'passwords' ] = $oProc;
|
214 |
+
}
|
215 |
+
return $oProc;
|
216 |
+
}
|
217 |
+
|
218 |
/**
|
219 |
* @return ICWP_WPSF_Processor_UserManagement_Sessions
|
220 |
*/
|
240 |
* @return string
|
241 |
*/
|
242 |
protected function getUserLastLoginKey() {
|
243 |
+
return $this->getController()->prefixOption( 'last_login_at' );
|
244 |
}
|
245 |
}
|
src/processors/usermanagement_passwords.php
ADDED
@@ -0,0 +1,337 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if ( class_exists( 'ICWP_WPSF_Processor_UserManagement_Passwords', false ) ) {
|
4 |
+
return;
|
5 |
+
}
|
6 |
+
|
7 |
+
require_once( dirname( __FILE__ ).'/base_wpsf.php' );
|
8 |
+
|
9 |
+
/**
|
10 |
+
* Referenced some of https://github.com/BenjaminNelan/PwnedPasswordChecker
|
11 |
+
* Class ICWP_WPSF_Processor_UserManagement_Pwned
|
12 |
+
*/
|
13 |
+
class ICWP_WPSF_Processor_UserManagement_Passwords extends ICWP_WPSF_Processor_BaseWpsf {
|
14 |
+
|
15 |
+
public function run() {
|
16 |
+
add_filter( 'registration_errors', array( $this, 'checkPassword' ), 100, 3 );
|
17 |
+
add_action( 'user_profile_update_errors', array( $this, 'checkPassword' ), 100, 3 );
|
18 |
+
add_action( 'validate_password_reset', array( $this, 'checkPassword' ), 100, 3 );
|
19 |
+
add_action( 'wp_login', array( $this, 'onWpLogin' ) );
|
20 |
+
add_action( 'wp_loaded', array( $this, 'onWpLoaded' ) );
|
21 |
+
$this->loadAutoload();
|
22 |
+
}
|
23 |
+
|
24 |
+
/**
|
25 |
+
* @param string $sUsername
|
26 |
+
*/
|
27 |
+
public function onWpLogin( $sUsername ) {
|
28 |
+
$oUser = $this->loadWpUsers()->getUserByUsername( $sUsername );
|
29 |
+
$sPassword = $this->getLoginPassword();
|
30 |
+
|
31 |
+
if ( $oUser instanceof WP_User && !empty( $sPassword ) ) {
|
32 |
+
try {
|
33 |
+
$this->applyPasswordChecks( $sPassword );
|
34 |
+
$bFailed = false;
|
35 |
+
}
|
36 |
+
catch ( Exception $oE ) {
|
37 |
+
$bFailed = true;
|
38 |
+
}
|
39 |
+
$this->setPasswordFailedFlag( $oUser, $bFailed );
|
40 |
+
}
|
41 |
+
}
|
42 |
+
|
43 |
+
public function onWpLoaded() {
|
44 |
+
if ( !$this->loadDP()->isMethodPost() && $this->loadWpUsers()->isUserLoggedIn() ) {
|
45 |
+
$this->processExpiredPassword();
|
46 |
+
$this->processFailedCheckPassword();
|
47 |
+
}
|
48 |
+
}
|
49 |
+
|
50 |
+
private function processExpiredPassword() {
|
51 |
+
/** @var ICWP_WPSF_FeatureHandler_UserManagement $oFO */
|
52 |
+
$oFO = $this->getFeature();
|
53 |
+
$oMeta = $oFO->getCurrentUserMeta();
|
54 |
+
|
55 |
+
$nExpireTimeout = $oFO->getPassExpireTimeout();
|
56 |
+
if ( $nExpireTimeout > 0 && $oMeta->pass_started_at > 0 ) {
|
57 |
+
if ( $this->time() - $oMeta->pass_started_at > $nExpireTimeout ) {
|
58 |
+
$this->addToAuditEntry( _wpsf__( 'Forcing user to update expired password.' ) );
|
59 |
+
$this->redirectToProfile(
|
60 |
+
sprintf( _wpsf__( 'Your password has expired (%s days).' ), $oFO->getPassExpireDays() )
|
61 |
+
);
|
62 |
+
}
|
63 |
+
}
|
64 |
+
}
|
65 |
+
|
66 |
+
private function processFailedCheckPassword() {
|
67 |
+
/** @var ICWP_WPSF_FeatureHandler_UserManagement $oFO */
|
68 |
+
$oFO = $this->getFeature();
|
69 |
+
$oMeta = $oFO->getCurrentUserMeta();
|
70 |
+
|
71 |
+
$bPassCheckFailed = false;
|
72 |
+
if ( $oFO->isPassForceUpdateExisting() ) {
|
73 |
+
$bPassCheckFailed = isset( $oMeta->pass_check_failed_at ) ? $oMeta->pass_check_failed_at > 0 : false;
|
74 |
+
}
|
75 |
+
|
76 |
+
if ( $bPassCheckFailed ) {
|
77 |
+
$this->addToAuditEntry(
|
78 |
+
_wpsf__( 'Forcing user to update password that fails to meet policies.' ),
|
79 |
+
'1', 'um_password_force_update'
|
80 |
+
);
|
81 |
+
$this->redirectToProfile(
|
82 |
+
_wpsf__( "Your password doesn't meet requirements set by your security administrator." )
|
83 |
+
);
|
84 |
+
}
|
85 |
+
}
|
86 |
+
|
87 |
+
private function redirectToProfile( $sMessage ) {
|
88 |
+
$this->loadAdminNoticesProcessor()
|
89 |
+
->addFlashMessage( $sMessage.'<br/>'._wpsf__( 'Please update your password.' ) );
|
90 |
+
|
91 |
+
$this->loadWp()
|
92 |
+
->doRedirect(
|
93 |
+
self_admin_url( 'profile.php' ),
|
94 |
+
array( $this->getFeature()->prefix( 'force-user-password' ) => 1 )
|
95 |
+
);
|
96 |
+
}
|
97 |
+
|
98 |
+
/**
|
99 |
+
* @param WP_Error $oErrors
|
100 |
+
* @return WP_Error
|
101 |
+
*/
|
102 |
+
public function checkPassword( $oErrors ) {
|
103 |
+
$aExistingCodes = $oErrors->get_error_code();
|
104 |
+
if ( empty( $aExistingCodes ) ) {
|
105 |
+
$sPassword = $this->getLoginPassword();
|
106 |
+
|
107 |
+
if ( !empty( $sPassword ) ) {
|
108 |
+
try {
|
109 |
+
$this->applyPasswordChecks( $sPassword );
|
110 |
+
|
111 |
+
$oWpUser = $this->loadWpUsers();
|
112 |
+
if ( $oWpUser->isUserLoggedIn() ) {
|
113 |
+
$this->getCurrentUserMeta()->pass_check_failed_at = 0;
|
114 |
+
}
|
115 |
+
}
|
116 |
+
catch ( Exception $oE ) {
|
117 |
+
$sMessage = _wpsf__( 'Your security administrator has imposed requirements for password quality.' )
|
118 |
+
.'<br/>'.sprintf( _wpsf__( 'Reason' ).': '.$oE->getMessage() );
|
119 |
+
$oErrors->add( 'shield_password_policy', $sMessage );
|
120 |
+
$this->addToAuditEntry(
|
121 |
+
_wpsf__( 'Blocked attempted password update that failed policy requirements.' ),
|
122 |
+
'1', 'um_password_update_blocked'
|
123 |
+
);
|
124 |
+
}
|
125 |
+
}
|
126 |
+
}
|
127 |
+
|
128 |
+
return $oErrors;
|
129 |
+
}
|
130 |
+
|
131 |
+
/**
|
132 |
+
* @param string $sPassword
|
133 |
+
* @throws Exception
|
134 |
+
*/
|
135 |
+
protected function applyPasswordChecks( $sPassword ) {
|
136 |
+
$this->testPasswordMeetsMinimumLength( $sPassword );
|
137 |
+
$this->testPasswordMeetsMinimumStrength( $sPassword );
|
138 |
+
$this->sendRequestToPwnedRange( $sPassword );
|
139 |
+
}
|
140 |
+
|
141 |
+
/**
|
142 |
+
* @param string $sPassword
|
143 |
+
* @return bool
|
144 |
+
* @throws Exception
|
145 |
+
*/
|
146 |
+
protected function testPasswordMeetsMinimumStrength( $sPassword ) {
|
147 |
+
/** @var ICWP_WPSF_FeatureHandler_UserManagement $oFO */
|
148 |
+
$oFO = $this->getFeature();
|
149 |
+
$nMin = $oFO->getPassMinStrength();
|
150 |
+
|
151 |
+
$oStengther = new \ZxcvbnPhp\Zxcvbn();
|
152 |
+
$aResults = $oStengther->passwordStrength( $sPassword );
|
153 |
+
$nScore = $aResults[ 'score' ];
|
154 |
+
|
155 |
+
if ( $nMin > 0 && $nScore < $nMin ) {
|
156 |
+
throw new Exception( sprintf( "Password strength (%s) doesn't meet the minimum required strength (%s).",
|
157 |
+
$oFO->getPassStrengthName( $nScore ), $oFO->getPassStrengthName( $nMin ) ) );
|
158 |
+
}
|
159 |
+
return true;
|
160 |
+
}
|
161 |
+
|
162 |
+
/**
|
163 |
+
* @param string $sPassword
|
164 |
+
* @return bool
|
165 |
+
* @throws Exception
|
166 |
+
*/
|
167 |
+
protected function testPasswordMeetsMinimumLength( $sPassword ) {
|
168 |
+
/** @var ICWP_WPSF_FeatureHandler_UserManagement $oFO */
|
169 |
+
$oFO = $this->getFeature();
|
170 |
+
$nMin = $oFO->getPassMinLength();
|
171 |
+
$nLength = strlen( $sPassword );
|
172 |
+
if ( $nMin > 0 && $nLength < $nMin ) {
|
173 |
+
throw new Exception( sprintf( _wpsf__( 'Password length (%s) too short (min: %s characters)' ), $nLength, $nMin ) );
|
174 |
+
}
|
175 |
+
return true;
|
176 |
+
}
|
177 |
+
|
178 |
+
/**
|
179 |
+
* @return bool
|
180 |
+
*/
|
181 |
+
protected function verifyApiAccess() {
|
182 |
+
try {
|
183 |
+
$this->sendRequestToPwnedRange( 'P@ssw0rd' );
|
184 |
+
}
|
185 |
+
catch ( Exception $oE ) {
|
186 |
+
return false;
|
187 |
+
}
|
188 |
+
return true;
|
189 |
+
}
|
190 |
+
|
191 |
+
/**
|
192 |
+
* @param string $sPass
|
193 |
+
* @return bool
|
194 |
+
* @throws Exception
|
195 |
+
*/
|
196 |
+
protected function sendRequestToPwned( $sPass ) {
|
197 |
+
/** @var ICWP_WPSF_FeatureHandler_UserManagement $oFO */
|
198 |
+
$oFO = $this->getFeature();
|
199 |
+
$oConn = $oFO->getConn();
|
200 |
+
|
201 |
+
$aResponse = $this->loadFS()->requestUrl(
|
202 |
+
sprintf( '%s/%s', $oFO->getDef( 'pwned_api_url_password_single' ), hash( 'sha1', $sPass ) ),
|
203 |
+
array(
|
204 |
+
'headers' => array(
|
205 |
+
'user-agent' => sprintf( '%s WP Plugin-v%s', $oConn->getHumanName(), $oConn->getVersion() )
|
206 |
+
)
|
207 |
+
),
|
208 |
+
true
|
209 |
+
);
|
210 |
+
|
211 |
+
$sError = '';
|
212 |
+
if ( is_wp_error( $aResponse ) ) {
|
213 |
+
$sError = $aResponse->get_error_message();
|
214 |
+
}
|
215 |
+
else if ( empty( $aResponse ) ) {
|
216 |
+
$sError = 'Response was empty';
|
217 |
+
}
|
218 |
+
else if ( is_array( $aResponse ) ) {
|
219 |
+
if ( empty( $aResponse[ 'response' ][ 'code' ] ) ) {
|
220 |
+
$sError = 'Unexpected Error: No response code available from the API';
|
221 |
+
}
|
222 |
+
else if ( $aResponse[ 'response' ][ 'code' ] == 404 ) {
|
223 |
+
// means that the password isn't on the pwned list. It's acceptable.
|
224 |
+
}
|
225 |
+
else if ( empty( $aResponse[ 'body' ] ) ) {
|
226 |
+
$sError = 'Unexpected Error: The response from the API was empty';
|
227 |
+
}
|
228 |
+
else {
|
229 |
+
// password pwned
|
230 |
+
$nCount = intval( $aResponse[ 'body' ] );
|
231 |
+
if ( $nCount == 0 ) {
|
232 |
+
$sError = 'Unexpected Error: The API response could not be properly parsed.';
|
233 |
+
}
|
234 |
+
else {
|
235 |
+
$sError = _wpsf__( 'Please use a different password.' )
|
236 |
+
.' '._wpsf__( 'This password has already been pwned.' )
|
237 |
+
.' '.sprintf(
|
238 |
+
'(<a href="%s" target="_blank">%s</a>)',
|
239 |
+
'https://www.troyhunt.com/ive-just-launched-pwned-passwords-version-2/',
|
240 |
+
sprintf( _wpsf__( '%s times' ), $nCount )
|
241 |
+
);
|
242 |
+
}
|
243 |
+
}
|
244 |
+
}
|
245 |
+
|
246 |
+
if ( !empty( $sError ) ) {
|
247 |
+
throw new Exception( $sError );
|
248 |
+
}
|
249 |
+
|
250 |
+
return true;
|
251 |
+
}
|
252 |
+
|
253 |
+
/**
|
254 |
+
* @param string $sPass
|
255 |
+
* @return bool
|
256 |
+
* @throws Exception
|
257 |
+
*/
|
258 |
+
protected function sendRequestToPwnedRange( $sPass ) {
|
259 |
+
/** @var ICWP_WPSF_FeatureHandler_UserManagement $oFO */
|
260 |
+
$oFO = $this->getFeature();
|
261 |
+
$oConn = $oFO->getConn();
|
262 |
+
|
263 |
+
$sPassHash = strtoupper( hash( 'sha1', $sPass ) );
|
264 |
+
$sSubHash = substr( $sPassHash, 0, 5 );
|
265 |
+
|
266 |
+
$aResponse = $this->loadFS()->requestUrl(
|
267 |
+
sprintf( '%s/%s', $oFO->getDef( 'pwned_api_url_password_range' ), $sSubHash ),
|
268 |
+
array(
|
269 |
+
'headers' => array(
|
270 |
+
'user-agent' => sprintf( '%s WP Plugin-v%s', $oConn->getHumanName(), $oConn->getVersion() )
|
271 |
+
)
|
272 |
+
),
|
273 |
+
true
|
274 |
+
);
|
275 |
+
|
276 |
+
$sError = '';
|
277 |
+
if ( is_wp_error( $aResponse ) ) {
|
278 |
+
$sError = $aResponse->get_error_message();
|
279 |
+
}
|
280 |
+
else if ( empty( $aResponse ) ) {
|
281 |
+
$sError = 'Response was empty';
|
282 |
+
}
|
283 |
+
else if ( is_array( $aResponse ) ) {
|
284 |
+
if ( empty( $aResponse[ 'response' ][ 'code' ] ) ) {
|
285 |
+
$sError = 'Unexpected Error: No response code available from the Pwned API';
|
286 |
+
}
|
287 |
+
else if ( $aResponse[ 'response' ][ 'code' ] != 200 ) {
|
288 |
+
$sError = 'Unexpected Error: The response from the Pwned API was unexpected';
|
289 |
+
}
|
290 |
+
else if ( empty( $aResponse[ 'body' ] ) ) {
|
291 |
+
$sError = 'Unexpected Error: The response from the Pwned API was empty';
|
292 |
+
}
|
293 |
+
else {
|
294 |
+
$nCount = 0;
|
295 |
+
foreach ( array_map( 'trim', explode( "\n", trim( $aResponse[ 'body' ] ) ) ) as $sRow ) {
|
296 |
+
if ( $sSubHash.substr( strtoupper( $sRow ), 0, 35 ) == $sPassHash ) {
|
297 |
+
$nCount = substr( $sRow, 36 );
|
298 |
+
break;
|
299 |
+
}
|
300 |
+
}
|
301 |
+
if ( $nCount > 0 ) {
|
302 |
+
$sError = _wpsf__( 'Please use a different password.' )
|
303 |
+
.'<br/>'._wpsf__( 'This password has been pwned.' )
|
304 |
+
.' '.sprintf(
|
305 |
+
'(<a href="%s" target="_blank">%s</a>)',
|
306 |
+
'https://www.troyhunt.com/ive-just-launched-pwned-passwords-version-2/',
|
307 |
+
sprintf( _wpsf__( '%s times' ), $nCount )
|
308 |
+
);
|
309 |
+
}
|
310 |
+
}
|
311 |
+
}
|
312 |
+
|
313 |
+
if ( !empty( $sError ) ) {
|
314 |
+
throw new Exception( $sError );
|
315 |
+
}
|
316 |
+
|
317 |
+
return true;
|
318 |
+
}
|
319 |
+
|
320 |
+
/**
|
321 |
+
* @return string
|
322 |
+
*/
|
323 |
+
private function getLoginPassword() {
|
324 |
+
return $this->loadDP()->post( 'pass1' );
|
325 |
+
}
|
326 |
+
|
327 |
+
/**
|
328 |
+
* @param WP_User $oUser
|
329 |
+
* @param bool $bFailed
|
330 |
+
* @return $this
|
331 |
+
*/
|
332 |
+
private function setPasswordFailedFlag( $oUser, $bFailed = false ) {
|
333 |
+
$oMeta = $this->getFeature()->getUserMeta( $oUser );
|
334 |
+
$oMeta->pass_check_failed_at = $bFailed ? $this->time() : 0;
|
335 |
+
return $this;
|
336 |
+
}
|
337 |
+
}
|
src/wizards/base.php
CHANGED
@@ -36,9 +36,14 @@ abstract class ICWP_WPSF_Wizard_Base extends ICWP_WPSF_Foundation {
|
|
36 |
/**
|
37 |
* Ensure to only ever process supported wizards
|
38 |
*/
|
39 |
-
public function
|
40 |
$oDP = $this->loadDP();
|
41 |
|
|
|
|
|
|
|
|
|
|
|
42 |
try {
|
43 |
$this->setCurrentWizard( $oDP->post( 'wizard_slug' ) );
|
44 |
if ( $this->getUserCan() ) {
|
@@ -46,19 +51,17 @@ abstract class ICWP_WPSF_Wizard_Base extends ICWP_WPSF_Foundation {
|
|
46 |
$oDP->post( 'wizard_steps' ),
|
47 |
(int)$oDP->post( 'current_index' )
|
48 |
);
|
49 |
-
$
|
50 |
-
|
51 |
-
true,
|
52 |
-
array( 'next_step' => $aNextStep )
|
53 |
-
);
|
54 |
}
|
55 |
else {
|
56 |
-
$this
|
57 |
-
->wpDie( 'Please login to run this wizard.' );
|
58 |
}
|
59 |
}
|
60 |
catch ( Exception $oE ) {
|
61 |
}
|
|
|
|
|
62 |
}
|
63 |
|
64 |
public function onWpLoaded() {
|
@@ -174,12 +177,19 @@ abstract class ICWP_WPSF_Wizard_Base extends ICWP_WPSF_Foundation {
|
|
174 |
return array_keys( $this->getModCon()->getWizardDefinitions() );
|
175 |
}
|
176 |
|
177 |
-
|
|
|
|
|
|
|
178 |
$this->loadAutoload(); // for Response
|
179 |
$oResponse = $this->processWizardStep( $this->loadDP()->post( 'wizard-step' ) );
|
180 |
if ( !empty( $oResponse ) ) {
|
181 |
-
$this->
|
182 |
}
|
|
|
|
|
|
|
|
|
183 |
}
|
184 |
|
185 |
/**
|
@@ -197,8 +207,9 @@ abstract class ICWP_WPSF_Wizard_Base extends ICWP_WPSF_Foundation {
|
|
197 |
|
198 |
/**
|
199 |
* @param \FernleafSystems\Utilities\Response $oResponse
|
|
|
200 |
*/
|
201 |
-
protected function
|
202 |
|
203 |
$sMessage = $oResponse->getMessageText();
|
204 |
if ( $oResponse->successful() ) {
|
@@ -211,9 +222,7 @@ abstract class ICWP_WPSF_Wizard_Base extends ICWP_WPSF_Foundation {
|
|
211 |
$aData = $oResponse->getData();
|
212 |
$aData[ 'message' ] = $sMessage;
|
213 |
$oResponse->setData( $aData );
|
214 |
-
|
215 |
-
$this->getModCon()
|
216 |
-
->sendAjaxResponse( $oResponse->successful(), $aData );
|
217 |
}
|
218 |
|
219 |
/**
|
@@ -278,9 +287,9 @@ abstract class ICWP_WPSF_Wizard_Base extends ICWP_WPSF_Foundation {
|
|
278 |
'goprofooter' => 'http://icwp.io/goprofooter',
|
279 |
),
|
280 |
'ajax' => array(
|
281 |
-
'content' => $oFO->
|
282 |
-
'steps' => $oFO->
|
283 |
-
'steps_as_json' => $oFO->
|
284 |
)
|
285 |
)
|
286 |
);
|
@@ -343,9 +352,9 @@ abstract class ICWP_WPSF_Wizard_Base extends ICWP_WPSF_Foundation {
|
|
343 |
'goprofooter' => 'http://icwp.io/goprofooter',
|
344 |
),
|
345 |
'ajax' => array(
|
346 |
-
'content' => $oFO->
|
347 |
-
'steps' => $oFO->
|
348 |
-
'steps_as_json' => $oFO->
|
349 |
)
|
350 |
)
|
351 |
);
|
36 |
/**
|
37 |
* Ensure to only ever process supported wizards
|
38 |
*/
|
39 |
+
public function ajaxExec_WizRenderStep() {
|
40 |
$oDP = $this->loadDP();
|
41 |
|
42 |
+
$aResponse = array(
|
43 |
+
'success' => false,
|
44 |
+
'next_step' => array(),
|
45 |
+
);
|
46 |
+
|
47 |
try {
|
48 |
$this->setCurrentWizard( $oDP->post( 'wizard_slug' ) );
|
49 |
if ( $this->getUserCan() ) {
|
51 |
$oDP->post( 'wizard_steps' ),
|
52 |
(int)$oDP->post( 'current_index' )
|
53 |
);
|
54 |
+
$aResponse[ 'success' ] = true;
|
55 |
+
$aResponse[ 'next_step' ] = $aNextStep;
|
|
|
|
|
|
|
56 |
}
|
57 |
else {
|
58 |
+
$aResponse[ 'message' ] = 'Please login to run this wizard.';
|
|
|
59 |
}
|
60 |
}
|
61 |
catch ( Exception $oE ) {
|
62 |
}
|
63 |
+
|
64 |
+
return $aResponse;
|
65 |
}
|
66 |
|
67 |
public function onWpLoaded() {
|
177 |
return array_keys( $this->getModCon()->getWizardDefinitions() );
|
178 |
}
|
179 |
|
180 |
+
/**
|
181 |
+
* @return array
|
182 |
+
*/
|
183 |
+
public function ajaxExec_WizProcessStep() {
|
184 |
$this->loadAutoload(); // for Response
|
185 |
$oResponse = $this->processWizardStep( $this->loadDP()->post( 'wizard-step' ) );
|
186 |
if ( !empty( $oResponse ) ) {
|
187 |
+
$this->buildWizardResponse( $oResponse );
|
188 |
}
|
189 |
+
|
190 |
+
$aData = $oResponse->getData();
|
191 |
+
$aData[ 'success' ] = $oResponse->successful();
|
192 |
+
return $aData;
|
193 |
}
|
194 |
|
195 |
/**
|
207 |
|
208 |
/**
|
209 |
* @param \FernleafSystems\Utilities\Response $oResponse
|
210 |
+
* @return \FernleafSystems\Utilities\Response
|
211 |
*/
|
212 |
+
protected function buildWizardResponse( $oResponse ) {
|
213 |
|
214 |
$sMessage = $oResponse->getMessageText();
|
215 |
if ( $oResponse->successful() ) {
|
222 |
$aData = $oResponse->getData();
|
223 |
$aData[ 'message' ] = $sMessage;
|
224 |
$oResponse->setData( $aData );
|
225 |
+
return $oResponse;
|
|
|
|
|
226 |
}
|
227 |
|
228 |
/**
|
287 |
'goprofooter' => 'http://icwp.io/goprofooter',
|
288 |
),
|
289 |
'ajax' => array(
|
290 |
+
'content' => $oFO->getAjaxActionData( 'wiz_process_step' ),
|
291 |
+
'steps' => $oFO->getAjaxActionData( 'wiz_render_step' ),
|
292 |
+
'steps_as_json' => $oFO->getAjaxActionData( 'wiz_render_step', true ),
|
293 |
)
|
294 |
)
|
295 |
);
|
352 |
'goprofooter' => 'http://icwp.io/goprofooter',
|
353 |
),
|
354 |
'ajax' => array(
|
355 |
+
'content' => $oFO->getAjaxActionData( 'wiz_process_step' ),
|
356 |
+
'steps' => $oFO->getAjaxActionData( 'wiz_render_step' ),
|
357 |
+
'steps_as_json' => $oFO->getAjaxActionData( 'wiz_render_step', true ),
|
358 |
)
|
359 |
)
|
360 |
);
|
src/wizards/plugin.php
CHANGED
@@ -315,29 +315,24 @@ class ICWP_WPSF_Wizard_Plugin extends ICWP_WPSF_Wizard_BaseWpsf {
|
|
315 |
* @return \FernleafSystems\Utilities\Response
|
316 |
*/
|
317 |
private function wizardLicense() {
|
318 |
-
$sKey = $this->loadDP()->post( 'LicenseKey' );
|
319 |
|
320 |
$bSuccess = false;
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
$
|
329 |
-
if ( $oModule->hasValidWorkingLicense() ) {
|
330 |
-
$bSuccess = true;
|
331 |
-
$sMessage = _wpsf__( 'License key was accepted and installed successfully.' );
|
332 |
-
}
|
333 |
-
else {
|
334 |
-
$sMessage = _wpsf__( 'License key was not accepted.' );
|
335 |
-
}
|
336 |
}
|
337 |
-
|
338 |
-
$sMessage = _wpsf__(
|
339 |
}
|
340 |
}
|
|
|
|
|
|
|
341 |
|
342 |
$oResponse = new \FernleafSystems\Utilities\Response();
|
343 |
return $oResponse->setSuccessful( $bSuccess )
|
@@ -502,10 +497,10 @@ class ICWP_WPSF_Wizard_Plugin extends ICWP_WPSF_Wizard_BaseWpsf {
|
|
502 |
$oModule->setEnabledGaspCheck( $bEnabled )
|
503 |
->savePluginOptions();
|
504 |
|
505 |
-
$bSuccess = $oModule->
|
506 |
if ( $bSuccess ) {
|
507 |
$sMessage = sprintf( '%s has been %s.', _wpsf__( 'Login Guard' ),
|
508 |
-
$
|
509 |
);
|
510 |
}
|
511 |
else {
|
@@ -576,10 +571,10 @@ class ICWP_WPSF_Wizard_Plugin extends ICWP_WPSF_Wizard_BaseWpsf {
|
|
576 |
$oModule->setEnabledGasp( $bEnabled )
|
577 |
->savePluginOptions();
|
578 |
|
579 |
-
$bSuccess = $oModule->
|
580 |
if ( $bSuccess ) {
|
581 |
$sMessage = sprintf( '%s has been %s.', _wpsf__( 'Comment SPAM Protection' ),
|
582 |
-
$
|
583 |
);
|
584 |
}
|
585 |
else {
|
315 |
* @return \FernleafSystems\Utilities\Response
|
316 |
*/
|
317 |
private function wizardLicense() {
|
|
|
318 |
|
319 |
$bSuccess = false;
|
320 |
+
|
321 |
+
/** @var ICWP_WPSF_FeatureHandler_License $oModule */
|
322 |
+
$oModule = $this->getPluginCon()->getModule( 'license' );
|
323 |
+
try {
|
324 |
+
$bSuccess = $oModule->verifyLicense( true )
|
325 |
+
->hasValidWorkingLicense();
|
326 |
+
if ( $bSuccess ) {
|
327 |
+
$sMessage = _wpsf__( 'License was found and successfully installed.' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
328 |
}
|
329 |
+
else {
|
330 |
+
$sMessage = _wpsf__( 'License could not be found.' );
|
331 |
}
|
332 |
}
|
333 |
+
catch ( Exception $oE ) {
|
334 |
+
$sMessage = _wpsf__( $oE->getMessage() );
|
335 |
+
}
|
336 |
|
337 |
$oResponse = new \FernleafSystems\Utilities\Response();
|
338 |
return $oResponse->setSuccessful( $bSuccess )
|
497 |
$oModule->setEnabledGaspCheck( $bEnabled )
|
498 |
->savePluginOptions();
|
499 |
|
500 |
+
$bSuccess = $oModule->isEnabledGaspCheck() === $bEnabled;
|
501 |
if ( $bSuccess ) {
|
502 |
$sMessage = sprintf( '%s has been %s.', _wpsf__( 'Login Guard' ),
|
503 |
+
$bEnabled ? _wpsf__( 'Enabled' ) : _wpsf__( 'Disabled' )
|
504 |
);
|
505 |
}
|
506 |
else {
|
571 |
$oModule->setEnabledGasp( $bEnabled )
|
572 |
->savePluginOptions();
|
573 |
|
574 |
+
$bSuccess = $oModule->isEnabledGaspCheck() === $bEnabled;
|
575 |
if ( $bSuccess ) {
|
576 |
$sMessage = sprintf( '%s has been %s.', _wpsf__( 'Comment SPAM Protection' ),
|
577 |
+
$bEnabled ? _wpsf__( 'Enabled' ) : _wpsf__( 'Disabled' )
|
578 |
);
|
579 |
}
|
580 |
else {
|
templates/php/access_restricted.php
CHANGED
@@ -5,13 +5,15 @@
|
|
5 |
|
6 |
<h3><?php echo $strings[ 'aar_title' ]; ?></h3>
|
7 |
<p><?php echo $strings[ 'aar_what_should_you_enter' ]; ?>
|
8 |
-
<br /><?php echo $strings[ 'aar_must_supply_key_first' ];
|
|
|
9 |
|
10 |
<form action="<?php echo $form_action; ?>" method="post" class="form-horizontal" id="SecurityAdminForm">
|
11 |
-
|
12 |
-
<?php foreach ( $
|
13 |
<input type="hidden" value="<?php echo $sVal; ?>" name="<?php echo $sName; ?>" />
|
14 |
<?php endforeach; ?>
|
|
|
15 |
<div class="form-group row no-gutters">
|
16 |
|
17 |
<label class="form-label col-3 col-form-label" for="admin_access_key_request">
|
@@ -22,19 +24,19 @@
|
|
22 |
|
23 |
<div class="option_section">
|
24 |
<label class="admin_access_key_request">
|
25 |
-
<input type="password" name="admin_access_key_request"
|
26 |
-
value="" autocomplete="off" autofocus />
|
27 |
</label>
|
28 |
<p class="help-block"><?php echo $strings[ 'aar_to_manage_must_enter_key' ]; ?></p>
|
29 |
</div>
|
30 |
</div>
|
31 |
</div>
|
32 |
<div class="form-group row no-gutters">
|
33 |
-
<div class="col-6">
|
34 |
<button type="submit" class="btn btn-primary" name="submit">
|
35 |
<?php echo $strings[ 'aar_submit_access_key' ]; ?></button>
|
36 |
</div>
|
37 |
-
<div class="col-6 text-
|
38 |
<a class="btn btn-link "
|
39 |
href="<?php echo $hrefs[ 'aar_forget_key' ]; ?>" target="_blank">
|
40 |
<?php echo $strings[ 'aar_forget_key' ]; ?></a>
|
@@ -42,6 +44,7 @@
|
|
42 |
|
43 |
</div>
|
44 |
</form>
|
|
|
45 |
</div>
|
46 |
-
|
47 |
</div>
|
5 |
|
6 |
<h3><?php echo $strings[ 'aar_title' ]; ?></h3>
|
7 |
<p><?php echo $strings[ 'aar_what_should_you_enter' ]; ?>
|
8 |
+
<br /><?php echo $strings[ 'aar_must_supply_key_first' ]; ?>
|
9 |
+
</p>
|
10 |
|
11 |
<form action="<?php echo $form_action; ?>" method="post" class="form-horizontal" id="SecurityAdminForm">
|
12 |
+
|
13 |
+
<?php foreach ( $ajax[ 'sec_admin_login' ] as $sName => $sVal ) : ?>
|
14 |
<input type="hidden" value="<?php echo $sVal; ?>" name="<?php echo $sName; ?>" />
|
15 |
<?php endforeach; ?>
|
16 |
+
|
17 |
<div class="form-group row no-gutters">
|
18 |
|
19 |
<label class="form-label col-3 col-form-label" for="admin_access_key_request">
|
24 |
|
25 |
<div class="option_section">
|
26 |
<label class="admin_access_key_request">
|
27 |
+
<input type="password" name="admin_access_key_request"
|
28 |
+
id="admin_access_key_request" value="" autocomplete="off" autofocus />
|
29 |
</label>
|
30 |
<p class="help-block"><?php echo $strings[ 'aar_to_manage_must_enter_key' ]; ?></p>
|
31 |
</div>
|
32 |
</div>
|
33 |
</div>
|
34 |
<div class="form-group row no-gutters">
|
35 |
+
<div class="col-6 order-2 text-right">
|
36 |
<button type="submit" class="btn btn-primary" name="submit">
|
37 |
<?php echo $strings[ 'aar_submit_access_key' ]; ?></button>
|
38 |
</div>
|
39 |
+
<div class="col-6 order-1 text-left">
|
40 |
<a class="btn btn-link "
|
41 |
href="<?php echo $hrefs[ 'aar_forget_key' ]; ?>" target="_blank">
|
42 |
<?php echo $strings[ 'aar_forget_key' ]; ?></a>
|
44 |
|
45 |
</div>
|
46 |
</form>
|
47 |
+
</div>
|
48 |
</div>
|
49 |
+
</div>
|
50 |
</div>
|
templates/php/index.php
CHANGED
@@ -3,7 +3,7 @@ $sBaseDirName = dirname( __FILE__ ).DIRECTORY_SEPARATOR;
|
|
3 |
|
4 |
if ( $flags[ 'wrap_page_content' ] ) : ?>
|
5 |
<div class="wrap">
|
6 |
-
<div class="bootstrap-wpadmin1 <?php echo $data[ 'mod_slug' ]; ?>
|
7 |
<h1 style="height: 0; display: none"></h1>
|
8 |
<?php endif;?>
|
9 |
|
3 |
|
4 |
if ( $flags[ 'wrap_page_content' ] ) : ?>
|
5 |
<div class="wrap">
|
6 |
+
<div class="bootstrap-wpadmin1 icwp-options-page <?php echo $data[ 'mod_slug' ]; ?>">
|
7 |
<h1 style="height: 0; display: none"></h1>
|
8 |
<?php endif;?>
|
9 |
|
templates/php/index_body.php
CHANGED
@@ -17,7 +17,6 @@
|
|
17 |
<?php endif; ?>
|
18 |
<?php echo $aSummary[ 'name' ]; ?>
|
19 |
</div>
|
20 |
-
|
21 |
</a>
|
22 |
<?php endforeach; ?>
|
23 |
</div>
|
17 |
<?php endif; ?>
|
18 |
<?php echo $aSummary[ 'name' ]; ?>
|
19 |
</div>
|
|
|
20 |
</a>
|
21 |
<?php endforeach; ?>
|
22 |
</div>
|
templates/php/index_footer.php
CHANGED
@@ -2,12 +2,12 @@
|
|
2 |
<div id="FooterWizardBanner" class="container-fluid">
|
3 |
<div id="WizardBanner" class="row">
|
4 |
<div class="col-lg-6 offset-lg-1 col-7">
|
5 |
-
<h6 class="text-left">
|
6 |
<p>Vulnerability Scanner; Plugins Hack Guard; More Frequent Scans; Email Support +much more.</p>
|
7 |
</div>
|
8 |
<div class="col-lg-4 col-5">
|
9 |
<a href="<?php echo $hrefs['goprofooter'];?>" target="_blank" class="btn btn-success">
|
10 |
-
|
11 |
</div>
|
12 |
</div>
|
13 |
</div>
|
2 |
<div id="FooterWizardBanner" class="container-fluid">
|
3 |
<div id="WizardBanner" class="row">
|
4 |
<div class="col-lg-6 offset-lg-1 col-7">
|
5 |
+
<h6 class="text-left">Exclusive Security Extras when you go Pro:</h6>
|
6 |
<p>Vulnerability Scanner; Plugins Hack Guard; More Frequent Scans; Email Support +much more.</p>
|
7 |
</div>
|
8 |
<div class="col-lg-4 col-5">
|
9 |
<a href="<?php echo $hrefs['goprofooter'];?>" target="_blank" class="btn btn-success">
|
10 |
+
Get Even More Protection With Pro →</a>
|
11 |
</div>
|
12 |
</div>
|
13 |
</div>
|
templates/php/notices/admin-notice-template.php
CHANGED
@@ -1,19 +1,20 @@
|
|
1 |
-
<?php $sBaseDirName = dirname(__FILE__).DIRECTORY_SEPARATOR; ?>
|
2 |
|
3 |
-
<div id="<?php echo $unique_render_id
|
|
|
4 |
|
5 |
<div class="notice-icon">
|
6 |
<span class="dashicons dashicons-shield"></span>
|
7 |
</div>
|
8 |
|
9 |
<div class="notice-content">
|
10 |
-
<h3 class="notice-title"><?php echo $strings['title']
|
11 |
<?php require_once( $sBaseDirName.$icwp_admin_notice_template.'.php' ); ?>
|
12 |
</div>
|
13 |
|
14 |
-
<?php if ( !empty( $strings['dismiss'] ) ) : ?>
|
15 |
<div class="dismiss-p">
|
16 |
-
<a class="icwp-notice-dismiss" href="#"><?php echo $strings['dismiss']; ?></a>
|
17 |
</div>
|
18 |
<?php endif; ?>
|
19 |
|
@@ -29,13 +30,10 @@
|
|
29 |
|
30 |
function icwp_dismiss_notice() {
|
31 |
var $oContainer = jQuery( '#<?php echo $unique_render_id; ?>' );
|
32 |
-
var
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
};
|
38 |
-
jQuery.get( ajaxurl, requestData );
|
39 |
-
$oContainer.fadeOut( 500, function() { $oContainer.remove(); } );
|
40 |
}
|
41 |
</script>
|
1 |
+
<?php $sBaseDirName = dirname( __FILE__ ).DIRECTORY_SEPARATOR; ?>
|
2 |
|
3 |
+
<div id="<?php echo $unique_render_id; ?>"
|
4 |
+
class="<?php echo $notice_classes; ?> icwp-admin-notice notice is-dismissible notice-<?php echo $icwp_admin_notice_template; ?>">
|
5 |
|
6 |
<div class="notice-icon">
|
7 |
<span class="dashicons dashicons-shield"></span>
|
8 |
</div>
|
9 |
|
10 |
<div class="notice-content">
|
11 |
+
<h3 class="notice-title"><?php echo $strings[ 'title' ]; ?></h3>
|
12 |
<?php require_once( $sBaseDirName.$icwp_admin_notice_template.'.php' ); ?>
|
13 |
</div>
|
14 |
|
15 |
+
<?php if ( !empty( $strings[ 'dismiss' ] ) ) : ?>
|
16 |
<div class="dismiss-p">
|
17 |
+
<a class="icwp-notice-dismiss" href="#"><?php echo $strings[ 'dismiss' ]; ?></a>
|
18 |
</div>
|
19 |
<?php endif; ?>
|
20 |
|
30 |
|
31 |
function icwp_dismiss_notice() {
|
32 |
var $oContainer = jQuery( '#<?php echo $unique_render_id; ?>' );
|
33 |
+
var aData = <?php echo $ajax[ 'dismiss_admin_notice' ]; ?>;
|
34 |
+
jQuery.get( ajaxurl, aData );
|
35 |
+
$oContainer.fadeOut( 500, function () {
|
36 |
+
$oContainer.remove();
|
37 |
+
} );
|
|
|
|
|
|
|
38 |
}
|
39 |
</script>
|
templates/php/notices/allow-tracking.php
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
<p><?php echo $strings[ 'want_to_track' ];
|
2 |
<p><?php echo $strings[ 'data_anon' ]; ?> <?php echo $strings[ 'can_turn_off' ]; ?>
|
3 |
<a target="_blank" href="<?php echo $hrefs[ 'link_to_see' ]; ?>"><?php echo $strings[ 'click_to_see' ]; ?></a>
|
4 |
</p>
|
@@ -25,14 +25,12 @@
|
|
25 |
icwp_PluginTrackingAgreement( 0 );
|
26 |
}
|
27 |
|
28 |
-
function icwp_PluginTrackingAgreement(
|
29 |
-
var requestData =
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
'notice_id': '<?php echo $notice_attributes[ 'notice_id' ]; ?>'
|
35 |
-
};
|
36 |
jQuery.get( ajaxurl, requestData );
|
37 |
$oContainer.fadeOut( 500, function () {
|
38 |
$oContainer.remove();
|
1 |
+
<p><?php echo $strings[ 'want_to_track' ]; ?><?php echo $strings[ 'what_we_collect' ]; ?></p>
|
2 |
<p><?php echo $strings[ 'data_anon' ]; ?> <?php echo $strings[ 'can_turn_off' ]; ?>
|
3 |
<a target="_blank" href="<?php echo $hrefs[ 'link_to_see' ]; ?>"><?php echo $strings[ 'click_to_see' ]; ?></a>
|
4 |
</p>
|
25 |
icwp_PluginTrackingAgreement( 0 );
|
26 |
}
|
27 |
|
28 |
+
function icwp_PluginTrackingAgreement( bAgree ) {
|
29 |
+
var requestData = <?php echo $ajax[ 'set_plugin_tracking_perm' ]; ?>;
|
30 |
+
requestData[ 'agree' ] = bAgree;
|
31 |
+
requestData[ 'hide' ] = 1;
|
32 |
+
requestData[ 'notice_id' ] = '<?php echo $notice_attributes[ 'notice_id' ]; ?>';
|
33 |
+
|
|
|
|
|
34 |
jQuery.get( ajaxurl, requestData );
|
35 |
$oContainer.fadeOut( 500, function () {
|
36 |
$oContainer.remove();
|
templates/php/snippets/admin_access_login.php
CHANGED
@@ -1,50 +1,44 @@
|
|
1 |
-
<div class="input-holder" id="AdminInputHolder-<?php echo $unique_render_id
|
2 |
<label>
|
3 |
-
<?php echo $
|
4 |
-
<input type="password" name="admin_access_key_request"
|
5 |
<button type="submit">Go!</button>
|
6 |
</label>
|
7 |
</div>
|
8 |
|
9 |
<script type="text/javascript">
|
10 |
-
var $oThisAAL = jQuery('#AdminInputHolder-<?php echo $unique_render_id;?>');
|
11 |
var $oInput = jQuery( 'input', $oThisAAL );
|
12 |
var $oSubmit = jQuery( 'button', $oThisAAL );
|
13 |
jQuery( document ).ready(
|
14 |
-
function() {
|
15 |
$oSubmit.click( submit_admin_access );
|
16 |
-
$oInput.keypress( function(e) {
|
17 |
-
if( e.which
|
18 |
submit_admin_access();
|
19 |
}
|
20 |
-
});
|
21 |
}
|
22 |
);
|
23 |
|
24 |
function submit_admin_access() {
|
25 |
-
$oThisAAL.html( '<div class="spinner"></div>');
|
26 |
$oInput.prop( 'disabled', true );
|
27 |
|
28 |
-
var requestData =
|
29 |
-
|
30 |
-
'icwp_ajax_action': '<?php echo $icwp_ajax_action; ?>',
|
31 |
-
'icwp_nonce': '<?php echo $icwp_nonce; ?>',
|
32 |
-
'icwp_nonce_action': '<?php echo $icwp_nonce_action; ?>',
|
33 |
-
'icwp_action_module': '<?php echo $icwp_action_module; ?>',
|
34 |
-
'admin_access_key_request': $oInput.val()
|
35 |
-
};
|
36 |
|
37 |
-
jQuery.post(ajaxurl, requestData, function( oResponse ) {
|
38 |
-
if( oResponse.success ) {
|
39 |
-
location.reload(true);
|
40 |
}
|
41 |
-
if( oResponse.data ) {
|
42 |
$oThisAAL.html( oResponse.data.html );
|
43 |
}
|
44 |
else {
|
45 |
$oThisAAL.html( 'There was an unknown error' );
|
46 |
}
|
47 |
-
});
|
48 |
}
|
49 |
|
50 |
|
1 |
+
<div class="input-holder" id="AdminInputHolder-<?php echo $unique_render_id; ?>">
|
2 |
<label>
|
3 |
+
<?php echo $strings[ 'access_message' ]; ?>:
|
4 |
+
<input type="password" name="admin_access_key_request" />
|
5 |
<button type="submit">Go!</button>
|
6 |
</label>
|
7 |
</div>
|
8 |
|
9 |
<script type="text/javascript">
|
10 |
+
var $oThisAAL = jQuery( '#AdminInputHolder-<?php echo $unique_render_id;?>' );
|
11 |
var $oInput = jQuery( 'input', $oThisAAL );
|
12 |
var $oSubmit = jQuery( 'button', $oThisAAL );
|
13 |
jQuery( document ).ready(
|
14 |
+
function () {
|
15 |
$oSubmit.click( submit_admin_access );
|
16 |
+
$oInput.keypress( function ( e ) {
|
17 |
+
if ( e.which === 13 ) {
|
18 |
submit_admin_access();
|
19 |
}
|
20 |
+
} );
|
21 |
}
|
22 |
);
|
23 |
|
24 |
function submit_admin_access() {
|
25 |
+
$oThisAAL.html( '<div class="spinner"></div>' );
|
26 |
$oInput.prop( 'disabled', true );
|
27 |
|
28 |
+
var requestData = <?php echo $ajax[ 'sec_admin_login' ]; ?>;
|
29 |
+
requestData[ 'admin_access_key_request' ] = $oInput.val();
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
|
31 |
+
jQuery.post( ajaxurl, requestData, function ( oResponse ) {
|
32 |
+
if ( oResponse.success ) {
|
33 |
+
location.reload( true );
|
34 |
}
|
35 |
+
if ( oResponse.data ) {
|
36 |
$oThisAAL.html( oResponse.data.html );
|
37 |
}
|
38 |
else {
|
39 |
$oThisAAL.html( 'There was an unknown error' );
|
40 |
}
|
41 |
+
} );
|
42 |
}
|
43 |
|
44 |
|
templates/php/snippets/admin_access_login_box.php
CHANGED
@@ -1,12 +1,12 @@
|
|
1 |
<div id="WpsfAdminAccessLogin" style="display:none;">
|
2 |
-
<div class="bootstrap-wpadmin wpsf-admin-access-login" id="AdminAccessLogin-<?php echo $unique_render_id
|
3 |
</div>
|
4 |
|
5 |
<script type="text/javascript">
|
6 |
|
7 |
jQuery( document ).ready(
|
8 |
-
function() {
|
9 |
-
aItems = [ <?php echo $js_snippets['options_to_restrict']; ?> ];
|
10 |
aItems.forEach( disable_input );
|
11 |
}
|
12 |
);
|
@@ -14,38 +14,36 @@
|
|
14 |
function disable_input( element, index, array ) {
|
15 |
$oItem = jQuery( 'input[name=' + element + ']' );
|
16 |
$oItem.prop( 'disabled', true );
|
17 |
-
$oParentTr = $oItem.parents('tr');
|
18 |
$oParentTr.addClass( 'restricted-option-row' );
|
19 |
-
$oItem.parents('td').append(
|
20 |
'<div style="clear:both"></div><div class="restricted-option">' +
|
21 |
'<span class="dashicons dashicons-lock"></span>' +
|
22 |
-
'<?php echo $strings['editing_restricted'];?>'+' <?php echo $strings['unlock_link'];?>' +
|
23 |
'</div>'
|
24 |
);
|
25 |
}
|
26 |
|
27 |
-
jQuery( document ).ready(function() {
|
28 |
-
load_admin_access_form( jQuery('#AdminAccessLogin-<?php echo $unique_render_id;?>') );
|
29 |
-
});
|
30 |
|
31 |
function load_admin_access_form( $oTarget ) {
|
32 |
-
|
33 |
-
var aData = {
|
34 |
-
'action': 'icwp_wpsf_LoadAdminAccessForm',
|
35 |
-
'_ajax_nonce': '<?php echo $sAjaxNonce; ?>'
|
36 |
-
};
|
37 |
request_and_html( aData, $oTarget );
|
38 |
}
|
|
|
39 |
function request_and_html( requestData, $oTarget ) {
|
40 |
|
41 |
-
$oTarget.html( '<div class="spinner"></div>');
|
42 |
-
jQuery.post(ajaxurl, requestData, function( oResponse ) {
|
43 |
-
|
|
|
44 |
$oTarget.html( oResponse.data.html );
|
45 |
}
|
46 |
else {
|
47 |
$oTarget.html( 'There was an unknown error' );
|
48 |
}
|
49 |
-
});
|
50 |
}
|
51 |
</script>
|
1 |
<div id="WpsfAdminAccessLogin" style="display:none;">
|
2 |
+
<div class="bootstrap-wpadmin wpsf-admin-access-login" id="AdminAccessLogin-<?php echo $unique_render_id; ?>"></div>
|
3 |
</div>
|
4 |
|
5 |
<script type="text/javascript">
|
6 |
|
7 |
jQuery( document ).ready(
|
8 |
+
function () {
|
9 |
+
aItems = [ <?php echo $js_snippets[ 'options_to_restrict' ]; ?> ];
|
10 |
aItems.forEach( disable_input );
|
11 |
}
|
12 |
);
|
14 |
function disable_input( element, index, array ) {
|
15 |
$oItem = jQuery( 'input[name=' + element + ']' );
|
16 |
$oItem.prop( 'disabled', true );
|
17 |
+
$oParentTr = $oItem.parents( 'tr' );
|
18 |
$oParentTr.addClass( 'restricted-option-row' );
|
19 |
+
$oItem.parents( 'td' ).append(
|
20 |
'<div style="clear:both"></div><div class="restricted-option">' +
|
21 |
'<span class="dashicons dashicons-lock"></span>' +
|
22 |
+
'<?php echo $strings[ 'editing_restricted' ];?>' + ' <?php echo $strings[ 'unlock_link' ];?>' +
|
23 |
'</div>'
|
24 |
);
|
25 |
}
|
26 |
|
27 |
+
jQuery( document ).ready( function () {
|
28 |
+
load_admin_access_form( jQuery( '#AdminAccessLogin-<?php echo $unique_render_id;?>' ) );
|
29 |
+
} );
|
30 |
|
31 |
function load_admin_access_form( $oTarget ) {
|
32 |
+
var aData = <?php echo $ajax[ 'sec_admin_login_box' ]; ?>;
|
|
|
|
|
|
|
|
|
33 |
request_and_html( aData, $oTarget );
|
34 |
}
|
35 |
+
|
36 |
function request_and_html( requestData, $oTarget ) {
|
37 |
|
38 |
+
$oTarget.html( '<div class="spinner"></div>' );
|
39 |
+
jQuery.post( ajaxurl, requestData, function ( oResponse ) {
|
40 |
+
console.log( oResponse );
|
41 |
+
if ( oResponse.data ) {
|
42 |
$oTarget.html( oResponse.data.html );
|
43 |
}
|
44 |
else {
|
45 |
$oTarget.html( 'There was an unknown error' );
|
46 |
}
|
47 |
+
} );
|
48 |
}
|
49 |
</script>
|
templates/php/snippets/module-actions-audit_trail.php
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
<h2 style="margin: 0 0 20px"><?php echo $sTitle
|
2 |
<div id="AuditTrailTabs">
|
3 |
<ul class="nav nav-tabs">
|
4 |
<?php foreach ( $aAuditTables as $sContext => $aAuditDataContext ) : ?>
|
@@ -55,18 +55,12 @@ var iCWP_WPSF_AuditTrailTable = new function () {
|
|
55 |
iCWP_WPSF_BodyOverlay.show();
|
56 |
$oMainContainer.html( '' );
|
57 |
|
58 |
-
var requestData =
|
59 |
-
|
60 |
-
'icwp_ajax_action': '<?php echo $icwp_ajax_action; ?>',
|
61 |
-
'icwp_nonce': '<?php echo $icwp_nonce; ?>',
|
62 |
-
'icwp_nonce_action': '<?php echo $icwp_nonce_action; ?>',
|
63 |
-
'icwp_action_module': '<?php echo $icwp_action_module; ?>',
|
64 |
-
'auditcontext': $oMainContainer.data( 'auditcontext' )
|
65 |
-
};
|
66 |
|
67 |
jQuery.post( ajaxurl, jQuery.extend( aTableRequestParams, requestData ),
|
68 |
function ( oResponse ) {
|
69 |
-
$oMainContainer.html( oResponse.data.
|
70 |
}
|
71 |
).always(
|
72 |
function () {
|
1 |
+
<h2 style="margin: 0 0 20px"><?php echo $sTitle; ?></h2>
|
2 |
<div id="AuditTrailTabs">
|
3 |
<ul class="nav nav-tabs">
|
4 |
<?php foreach ( $aAuditTables as $sContext => $aAuditDataContext ) : ?>
|
55 |
iCWP_WPSF_BodyOverlay.show();
|
56 |
$oMainContainer.html( '' );
|
57 |
|
58 |
+
var requestData = <?php echo $ajax['render_audit_table']; ?>;
|
59 |
+
requestData[ 'auditcontext' ] = $oMainContainer.data( 'auditcontext' );
|
|
|
|
|
|
|
|
|
|
|
|
|
60 |
|
61 |
jQuery.post( ajaxurl, jQuery.extend( aTableRequestParams, requestData ),
|
62 |
function ( oResponse ) {
|
63 |
+
$oMainContainer.html( oResponse.data.html )
|
64 |
}
|
65 |
).always(
|
66 |
function () {
|
templates/php/snippets/module-actions-ips.php
CHANGED
@@ -37,7 +37,6 @@
|
|
37 |
function request_and_reload( requestData, $oTarget ) {
|
38 |
|
39 |
$oTarget.html( '<div class="spinner"></div>' );
|
40 |
-
// since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
|
41 |
jQuery.post( ajaxurl, requestData, function ( oResponse ) {
|
42 |
|
43 |
if ( oResponse.data ) {
|
37 |
function request_and_reload( requestData, $oTarget ) {
|
38 |
|
39 |
$oTarget.html( '<div class="spinner"></div>' );
|
|
|
40 |
jQuery.post( ajaxurl, requestData, function ( oResponse ) {
|
41 |
|
42 |
if ( oResponse.data ) {
|
templates/php/snippets/options_form.php
CHANGED
@@ -1,11 +1,14 @@
|
|
1 |
-
<form action="<?php echo $form_action; ?>" method="post" class="
|
2 |
<input type="hidden" id="_wpnonce" name="_wpnonce" value="<?php echo $data[ 'form_nonce' ] ?>">
|
3 |
<input type="hidden" name="mod_slug" value="<?php echo $data[ 'mod_slug' ]; ?>" />
|
4 |
<input type="hidden" name="all_options_input" value="<?php echo $data[ 'all_options_input' ]; ?>" />
|
5 |
<input type="hidden" name="plugin_form_submit" value="Y" />
|
6 |
|
|
|
|
|
|
|
7 |
|
8 |
-
<div style="margin-bottom: -1px">
|
9 |
<div class="row no-gutters">
|
10 |
<div class="col">
|
11 |
<div class="module-headline">
|
@@ -14,7 +17,7 @@
|
|
14 |
<div class="float-right">
|
15 |
<button type="submit" class="btn btn-primary icwp-form-button"
|
16 |
name="submit" style="margin-right: 12px">
|
17 |
-
<?php
|
18 |
</button>
|
19 |
|
20 |
<div class="btn-group" role="group" aria-label="Basic example">
|
@@ -56,10 +59,11 @@
|
|
56 |
</div>
|
57 |
</div>
|
58 |
</div>
|
|
|
59 |
<div class="row no-gutters">
|
60 |
<div class="col-2 smoothwidth">
|
61 |
|
62 |
-
<ul id="ModuleOptionsNav" class="nav flex-column"
|
63 |
role="tablist" aria-orientation="vertical">
|
64 |
<?php foreach ( $data[ 'all_options' ] as $aOptSection ) : ?>
|
65 |
<li class="nav-item">
|
@@ -67,9 +71,8 @@
|
|
67 |
id="pills-tab-<?php echo $aOptSection[ 'slug' ]; ?>"
|
68 |
data-toggle="pill" href="#pills-<?php echo $aOptSection[ 'slug' ]; ?>"
|
69 |
role="tab" aria-controls="pills-<?php echo $aOptSection[ 'slug' ]; ?>"
|
70 |
-
<?php echo $aOptSection[ 'primary' ] ? 'aria-selected="true"' : ''
|
71 |
-
|
72 |
-
</a>
|
73 |
</li>
|
74 |
<?php endforeach; ?>
|
75 |
</ul>
|
@@ -84,21 +87,7 @@
|
|
84 |
<div class="option_section_row <?php echo $aOptSection[ 'primary' ] ? 'primary_section' : 'non_primary_section'; ?>"
|
85 |
id="row-<?php echo $aOptSection[ 'slug' ]; ?>">
|
86 |
<div class="options-body">
|
87 |
-
<legend>
|
88 |
-
<?php echo $aOptSection[ 'title' ]; ?>
|
89 |
-
<?php if ( !empty( $aOptSection[ 'help_video_url' ] ) ) : ?>
|
90 |
-
<div style="float:right;">
|
91 |
-
|
92 |
-
<a href="<?php echo $aOptSection[ 'help_video_url' ]; ?>"
|
93 |
-
class="btn"
|
94 |
-
data-featherlight-iframe-height="454"
|
95 |
-
data-featherlight-iframe-width="772"
|
96 |
-
data-featherlight="iframe">
|
97 |
-
<span class="dashicons dashicons-controls-play"></span> Help Video
|
98 |
-
</a>
|
99 |
-
</div>
|
100 |
-
<?php endif; ?>
|
101 |
-
</legend>
|
102 |
|
103 |
<div class="row_section_summary row">
|
104 |
<div class="col-8">
|
@@ -126,9 +115,9 @@
|
|
126 |
<div class="collapse section_video"
|
127 |
id="sectionVideo<?php echo $aOptSection[ 'help_video' ][ 'id' ]; ?>">
|
128 |
<div class="embed-responsive embed-responsive-16by9">
|
129 |
-
<iframe src="<?php echo $aOptSection[ 'help_video' ][ 'embed_url' ]; ?>"
|
130 |
-
height="360"
|
131 |
-
|
132 |
</div>
|
133 |
</div>
|
134 |
</div>
|
@@ -138,10 +127,18 @@
|
|
138 |
<?php if ( !empty( $aOptSection[ 'warnings' ] ) ) : ?>
|
139 |
<div class="row">
|
140 |
<div class="col">
|
141 |
-
<?php foreach ( $aOptSection[ 'warnings' ] as $sWarning )
|
142 |
-
|
143 |
-
|
144 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
145 |
<?php endforeach; ?>
|
146 |
</div>
|
147 |
</div>
|
@@ -207,13 +204,13 @@
|
|
207 |
id="<?php echo $sOptKey; ?>"
|
208 |
placeholder="<?php echo $mOptValue; ?>"
|
209 |
rows="<?php echo $aOption[ 'rows' ]; ?>"
|
210 |
-
|
|
|
211 |
|
212 |
<?php elseif ( $sOptType == 'noneditable_text' ) : ?>
|
213 |
|
214 |
<p><?php echo $aOption[ 'summary' ]; ?></p>
|
215 |
-
<input type="text"
|
216 |
-
value="<?php echo $mOptValue; ?>" />
|
217 |
|
218 |
<?php elseif ( $sOptType == 'password' ) : ?>
|
219 |
|
@@ -222,7 +219,7 @@
|
|
222 |
id="<?php echo $sOptKey; ?>"
|
223 |
value="<?php echo $mOptValue; ?>"
|
224 |
placeholder="<?php echo $mOptValue; ?>"
|
225 |
-
|
226 |
|
227 |
<?php elseif ( $sOptType == 'email' ) : ?>
|
228 |
|
@@ -231,7 +228,7 @@
|
|
231 |
id="<?php echo $sOptKey; ?>"
|
232 |
value="<?php echo $mOptValue; ?>"
|
233 |
placeholder="<?php echo $mOptValue; ?>"
|
234 |
-
|
235 |
|
236 |
<?php elseif ( $sOptType == 'select' ) : ?>
|
237 |
|
@@ -263,23 +260,15 @@
|
|
263 |
<?php endforeach; ?>
|
264 |
</select>
|
265 |
|
266 |
-
<?php elseif ( $sOptType
|
267 |
|
268 |
<p><?php echo $aOption[ 'summary' ]; ?></p>
|
269 |
<textarea name="<?php echo $sOptKey; ?>"
|
270 |
id="<?php echo $sOptKey; ?>"
|
271 |
placeholder="<?php echo $mOptValue; ?>"
|
272 |
rows="<?php echo $aOption[ 'rows' ]; ?>"
|
273 |
-
|
274 |
-
|
275 |
-
<?php elseif ( $sOptType == 'comma_separated_lists' ) : ?>
|
276 |
-
|
277 |
-
<p><?php echo $aOption[ 'summary' ]; ?></p>
|
278 |
-
<textarea name="<?php echo $sOptKey; ?>"
|
279 |
-
id="<?php echo $sOptKey; ?>"
|
280 |
-
placeholder="<?php echo $mOptValue; ?>"
|
281 |
-
rows="<?php echo $aOption[ 'rows' ]; ?>"
|
282 |
-
class="span7" <?php echo $sDisabledText; ?> ><?php echo $mOptValue; ?></textarea>
|
283 |
|
284 |
<?php elseif ( $sOptType == 'integer' ) : ?>
|
285 |
|
@@ -288,7 +277,7 @@
|
|
288 |
id="<?php echo $sOptKey; ?>"
|
289 |
value="<?php echo $mOptValue; ?>"
|
290 |
placeholder="<?php echo $mOptValue; ?>"
|
291 |
-
|
292 |
|
293 |
<?php else : ?>
|
294 |
ERROR: Should never reach this point.
|
@@ -309,26 +298,4 @@
|
|
309 |
</div>
|
310 |
</div>
|
311 |
</div>
|
312 |
-
</form>
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
<!--<div class="pull-right well">-->
|
319 |
-
<!-- <h5 style="margin-bottom: 10px;">Options Legend</h5>-->
|
320 |
-
<!-- <label class="forcheckbox">-->
|
321 |
-
<!-- <span class="switch">-->
|
322 |
-
<!-- <input type="checkbox" name="legend" id="legend" value="Y" checked="checked" disabled="disabled">-->
|
323 |
-
<!-- <span class="icwp-slider round"></span>-->
|
324 |
-
<!-- </span>-->
|
325 |
-
<!-- <span class="summary">Option is turned on / enabled</span>-->
|
326 |
-
<!-- </label>-->
|
327 |
-
<!-- <label class="forcheckbox">-->
|
328 |
-
<!-- <span class="switch">-->
|
329 |
-
<!-- <input type="checkbox" name="legend" id="legend" value="Y" disabled="disabled">-->
|
330 |
-
<!-- <span class="icwp-slider round"></span>-->
|
331 |
-
<!-- </span>-->
|
332 |
-
<!-- <span class="summary">Option is turned off / disabled</span>-->
|
333 |
-
<!-- </label>-->
|
334 |
-
<!--</div>-->
|
1 |
+
<form action="<?php echo $form_action; ?>" method="post" class="icwpOptionsForm">
|
2 |
<input type="hidden" id="_wpnonce" name="_wpnonce" value="<?php echo $data[ 'form_nonce' ] ?>">
|
3 |
<input type="hidden" name="mod_slug" value="<?php echo $data[ 'mod_slug' ]; ?>" />
|
4 |
<input type="hidden" name="all_options_input" value="<?php echo $data[ 'all_options_input' ]; ?>" />
|
5 |
<input type="hidden" name="plugin_form_submit" value="Y" />
|
6 |
|
7 |
+
<?php foreach ( $ajax[ 'mod_options' ] as $sAjKey => $sAjVal ) : ?>
|
8 |
+
<input type="hidden" name="<?php echo $sAjKey; ?>" value="<?php echo $sAjVal; ?>" />
|
9 |
+
<?php endforeach; ?>
|
10 |
|
11 |
+
<div style="margin-bottom: -1px">
|
12 |
<div class="row no-gutters">
|
13 |
<div class="col">
|
14 |
<div class="module-headline">
|
17 |
<div class="float-right">
|
18 |
<button type="submit" class="btn btn-primary icwp-form-button"
|
19 |
name="submit" style="margin-right: 12px">
|
20 |
+
<?php echo $strings[ 'btn_save' ]; ?>
|
21 |
</button>
|
22 |
|
23 |
<div class="btn-group" role="group" aria-label="Basic example">
|
59 |
</div>
|
60 |
</div>
|
61 |
</div>
|
62 |
+
|
63 |
<div class="row no-gutters">
|
64 |
<div class="col-2 smoothwidth">
|
65 |
|
66 |
+
<ul id="ModuleOptionsNav" class="nav flex-column"
|
67 |
role="tablist" aria-orientation="vertical">
|
68 |
<?php foreach ( $data[ 'all_options' ] as $aOptSection ) : ?>
|
69 |
<li class="nav-item">
|
71 |
id="pills-tab-<?php echo $aOptSection[ 'slug' ]; ?>"
|
72 |
data-toggle="pill" href="#pills-<?php echo $aOptSection[ 'slug' ]; ?>"
|
73 |
role="tab" aria-controls="pills-<?php echo $aOptSection[ 'slug' ]; ?>"
|
74 |
+
<?php echo $aOptSection[ 'primary' ] ? 'aria-selected="true"' : '' ?>
|
75 |
+
><?php echo $aOptSection[ 'title_short' ]; ?></a>
|
|
|
76 |
</li>
|
77 |
<?php endforeach; ?>
|
78 |
</ul>
|
87 |
<div class="option_section_row <?php echo $aOptSection[ 'primary' ] ? 'primary_section' : 'non_primary_section'; ?>"
|
88 |
id="row-<?php echo $aOptSection[ 'slug' ]; ?>">
|
89 |
<div class="options-body">
|
90 |
+
<legend><?php echo $aOptSection[ 'title' ]; ?></legend>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
91 |
|
92 |
<div class="row_section_summary row">
|
93 |
<div class="col-8">
|
115 |
<div class="collapse section_video"
|
116 |
id="sectionVideo<?php echo $aOptSection[ 'help_video' ][ 'id' ]; ?>">
|
117 |
<div class="embed-responsive embed-responsive-16by9">
|
118 |
+
<iframe src="<?php echo $aOptSection[ 'help_video' ][ 'embed_url' ]; ?>"
|
119 |
+
width="640" height="360" class="embed-responsive-item"
|
120 |
+
allowfullscreen></iframe>
|
121 |
</div>
|
122 |
</div>
|
123 |
</div>
|
127 |
<?php if ( !empty( $aOptSection[ 'warnings' ] ) ) : ?>
|
128 |
<div class="row">
|
129 |
<div class="col">
|
130 |
+
<?php foreach ( $aOptSection[ 'warnings' ] as $sWarning ) : ?>
|
131 |
+
<div class="alert alert-warning text-center"><?php echo $sWarning; ?></div>
|
132 |
+
<?php endforeach; ?>
|
133 |
+
</div>
|
134 |
+
</div>
|
135 |
+
<?php endif; ?>
|
136 |
+
|
137 |
+
<?php if ( !empty( $aOptSection[ 'notices' ] ) ) : ?>
|
138 |
+
<div class="row">
|
139 |
+
<div class="col">
|
140 |
+
<?php foreach ( $aOptSection[ 'notices' ] as $sNotices ) : ?>
|
141 |
+
<div class="alert alert-info text-center"><?php echo $sNotices; ?></div>
|
142 |
<?php endforeach; ?>
|
143 |
</div>
|
144 |
</div>
|
204 |
id="<?php echo $sOptKey; ?>"
|
205 |
placeholder="<?php echo $mOptValue; ?>"
|
206 |
rows="<?php echo $aOption[ 'rows' ]; ?>"
|
207 |
+
<?php echo $sDisabledText; ?>
|
208 |
+
><?php echo $mOptValue; ?></textarea>
|
209 |
|
210 |
<?php elseif ( $sOptType == 'noneditable_text' ) : ?>
|
211 |
|
212 |
<p><?php echo $aOption[ 'summary' ]; ?></p>
|
213 |
+
<input type="text" value="<?php echo $mOptValue; ?>" readonly />
|
|
|
214 |
|
215 |
<?php elseif ( $sOptType == 'password' ) : ?>
|
216 |
|
219 |
id="<?php echo $sOptKey; ?>"
|
220 |
value="<?php echo $mOptValue; ?>"
|
221 |
placeholder="<?php echo $mOptValue; ?>"
|
222 |
+
<?php echo $sDisabledText; ?> />
|
223 |
|
224 |
<?php elseif ( $sOptType == 'email' ) : ?>
|
225 |
|
228 |
id="<?php echo $sOptKey; ?>"
|
229 |
value="<?php echo $mOptValue; ?>"
|
230 |
placeholder="<?php echo $mOptValue; ?>"
|
231 |
+
<?php echo $sDisabledText; ?> />
|
232 |
|
233 |
<?php elseif ( $sOptType == 'select' ) : ?>
|
234 |
|
260 |
<?php endforeach; ?>
|
261 |
</select>
|
262 |
|
263 |
+
<?php elseif ( in_array( $sOptType, array( 'comma_separated_lists', 'array' ) ) ) : ?>
|
264 |
|
265 |
<p><?php echo $aOption[ 'summary' ]; ?></p>
|
266 |
<textarea name="<?php echo $sOptKey; ?>"
|
267 |
id="<?php echo $sOptKey; ?>"
|
268 |
placeholder="<?php echo $mOptValue; ?>"
|
269 |
rows="<?php echo $aOption[ 'rows' ]; ?>"
|
270 |
+
<?php echo $sDisabledText; ?>
|
271 |
+
><?php echo $mOptValue; ?></textarea>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
272 |
|
273 |
<?php elseif ( $sOptType == 'integer' ) : ?>
|
274 |
|
277 |
id="<?php echo $sOptKey; ?>"
|
278 |
value="<?php echo $mOptValue; ?>"
|
279 |
placeholder="<?php echo $mOptValue; ?>"
|
280 |
+
<?php echo $sDisabledText; ?> />
|
281 |
|
282 |
<?php else : ?>
|
283 |
ERROR: Should never reach this point.
|
298 |
</div>
|
299 |
</div>
|
300 |
</div>
|
301 |
+
</form>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
templates/php/snippets/plugin_badge.php
CHANGED
@@ -1,25 +1,25 @@
|
|
1 |
<style type="text/css">
|
2 |
#icwpWpsfSiteBadge {
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
|
|
|
|
|
|
19 |
}
|
20 |
-
#icwpWpsfSiteBadge:hover {
|
21 |
-
opacity: 1.0;
|
22 |
-
}
|
23 |
#icwpWpsfSiteBadge a {
|
24 |
border: 0 none;
|
25 |
box-sizing: inherit;
|
@@ -33,50 +33,50 @@
|
|
33 |
text-decoration: none;
|
34 |
}
|
35 |
#icwpWpsfSiteBadge .badge-text {
|
36 |
-
|
37 |
font-size: 12px;
|
38 |
line-height: 17px;
|
39 |
padding-left: 43px;
|
40 |
letter-spacing: 0;
|
41 |
-
|
42 |
-
|
43 |
}
|
44 |
#icwpWpsfSiteBadge img {
|
45 |
float: left;
|
46 |
}
|
47 |
a#icwpWpsfCloseButton {
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
}
|
62 |
#icwpWpsfCloseButton:hover {
|
63 |
cursor: pointer;
|
64 |
}
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
</style>
|
81 |
<div id="icwpWpsfSiteBadge">
|
82 |
<a id="icwpWpsfCloseButton">x</a>
|
@@ -93,19 +93,12 @@
|
|
93 |
|
94 |
var closeBadge = function () {
|
95 |
|
96 |
-
var
|
97 |
-
|
98 |
-
'icwp_ajax_action': '<?php echo $icwp_ajax_action; ?>',
|
99 |
-
'icwp_nonce': '<?php echo $icwp_nonce; ?>',
|
100 |
-
'icwp_nonce_action': '<?php echo $icwp_nonce_action; ?>',
|
101 |
-
'icwp_action_module': '<?php echo $icwp_action_module; ?>'
|
102 |
-
};
|
103 |
-
|
104 |
-
jQuery.post( '<?php echo $ajaxurl; ?>', requestData,
|
105 |
function ( oResponse ) {
|
106 |
}
|
107 |
).always( function () {
|
108 |
-
|
109 |
}
|
110 |
);
|
111 |
|
1 |
<style type="text/css">
|
2 |
#icwpWpsfSiteBadge {
|
3 |
+
background-color: rgba(241, 241, 241, 0.99);
|
4 |
+
border-radius: 5px;
|
5 |
+
bottom: 9px;
|
6 |
+
box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.47);
|
7 |
+
box-sizing: content-box;
|
8 |
+
color: #000000;
|
9 |
+
height: 33px;
|
10 |
+
left: 9px;
|
11 |
+
opacity: 0.9;
|
12 |
+
padding: 7px 4px 7px 10px;
|
13 |
+
position: fixed;
|
14 |
+
text-align: left;
|
15 |
+
width: 180px;
|
16 |
+
z-index: 10000;
|
17 |
+
-webkit-transition: width 0.5s; /* Safari */
|
18 |
+
transition: width 0.5s;
|
19 |
+
}
|
20 |
+
#icwpWpsfSiteBadge:hover {
|
21 |
+
opacity: 1.0;
|
22 |
}
|
|
|
|
|
|
|
23 |
#icwpWpsfSiteBadge a {
|
24 |
border: 0 none;
|
25 |
box-sizing: inherit;
|
33 |
text-decoration: none;
|
34 |
}
|
35 |
#icwpWpsfSiteBadge .badge-text {
|
36 |
+
font-family: sans-serif;
|
37 |
font-size: 12px;
|
38 |
line-height: 17px;
|
39 |
padding-left: 43px;
|
40 |
letter-spacing: 0;
|
41 |
+
-webkit-transition: opacity 1s; /* Safari */
|
42 |
+
transition: opacity 1s;
|
43 |
}
|
44 |
#icwpWpsfSiteBadge img {
|
45 |
float: left;
|
46 |
}
|
47 |
a#icwpWpsfCloseButton {
|
48 |
+
background-color: #ffffff;
|
49 |
+
border: 1px solid #ddd;
|
50 |
+
border-radius: 4px;
|
51 |
+
font-size: 10px;
|
52 |
+
height: 10px;
|
53 |
+
left: -2px;
|
54 |
+
line-height: 6px;
|
55 |
+
padding: 2px 1px 0 2px !important;
|
56 |
+
position: absolute;
|
57 |
+
text-align: center;
|
58 |
+
top: -3px;
|
59 |
+
width: 10px;
|
60 |
+
z-index: 1001;
|
61 |
}
|
62 |
#icwpWpsfCloseButton:hover {
|
63 |
cursor: pointer;
|
64 |
}
|
65 |
+
@media (max-width: 600px) {
|
66 |
+
#icwpWpsfSiteBadge {
|
67 |
+
height: 16px;
|
68 |
+
width: 112px;
|
69 |
+
}
|
70 |
+
#icwpWpsfSiteBadge .badge-text {
|
71 |
+
font-size: 8px;
|
72 |
+
line-height: 10px;
|
73 |
+
padding-left: 20px;
|
74 |
+
}
|
75 |
+
#icwpWpsfSiteBadge img {
|
76 |
+
height: 16px;
|
77 |
+
width: 16px;
|
78 |
+
}
|
79 |
+
}
|
80 |
</style>
|
81 |
<div id="icwpWpsfSiteBadge">
|
82 |
<a id="icwpWpsfCloseButton">x</a>
|
93 |
|
94 |
var closeBadge = function () {
|
95 |
|
96 |
+
var aData = <?php echo $ajax[ 'plugin_badge_close' ]; ?>;
|
97 |
+
jQuery.post( aData[ 'ajaxurl' ], aData,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
98 |
function ( oResponse ) {
|
99 |
}
|
100 |
).always( function () {
|
101 |
+
jQuery( '#icwpWpsfSiteBadge' ).remove();
|
102 |
}
|
103 |
);
|
104 |
|
templates/php/snippets/pro.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
/** @var string[] $inputs */
|
4 |
/** @var string[] $flags */
|
5 |
/** @var string[] $vars */
|
6 |
-
/** @var string[] $
|
7 |
/** @var array $aLicKeyInput */
|
8 |
$aLicKeyInput = $inputs[ 'license_key' ];
|
9 |
?>
|
@@ -65,20 +65,23 @@ $aLicKeyInput = $inputs[ 'license_key' ];
|
|
65 |
<hr />
|
66 |
|
67 |
<h4>License Actions</h4>
|
|
|
68 |
<div class="row">
|
69 |
<div class="col card">
|
70 |
<form action="<?php echo $form_action; ?>" method="post" class="licenseForm">
|
71 |
-
|
|
|
|
|
|
|
|
|
|
|
72 |
<div class="form-group">
|
73 |
-
<label
|
74 |
-
<
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
<button class="btn btn-success" type="submit" id="ButtonActivate" name="activate">
|
80 |
-
Activate Key</button>
|
81 |
-
<span class="form-text text-muted">This will replace any existing license key.</span>
|
82 |
</div>
|
83 |
</form>
|
84 |
</div>
|
@@ -88,22 +91,11 @@ $aLicKeyInput = $inputs[ 'license_key' ];
|
|
88 |
<div class="row">
|
89 |
<div class="col card">
|
90 |
<form action="<?php echo $form_action; ?>" method="post" class="licenseForm">
|
91 |
-
<input type="hidden" name="license-action" value="recheck" />
|
92 |
-
<div class="form-group">
|
93 |
-
<label>Recheck Key</label>
|
94 |
-
<button class="btn btn-info" type="submit"
|
95 |
-
<?php echo $flags[ 'button_enabled_remove' ] ? '' : 'disabled="disabled"'; ?> >
|
96 |
-
Recheck
|
97 |
-
</button>
|
98 |
-
<span class="form-text text-muted">Verify and refresh the current license registration.</span>
|
99 |
-
</div>
|
100 |
-
</form>
|
101 |
-
</div>
|
102 |
-
</div>
|
103 |
|
104 |
-
|
105 |
-
|
106 |
-
|
|
|
107 |
<input type="hidden" name="license-action" value="remove" />
|
108 |
<div class="form-group">
|
109 |
<label>Remove Current License</label>
|
@@ -132,7 +124,7 @@ $aLicKeyInput = $inputs[ 'license_key' ];
|
|
132 |
</h5>
|
133 |
</div>
|
134 |
|
135 |
-
<div id="collone" class="collapse" aria-labelledby="headingOne"
|
136 |
data-parent="#accordion">
|
137 |
<div class="card-body">
|
138 |
<dl>
|
@@ -141,24 +133,24 @@ $aLicKeyInput = $inputs[ 'license_key' ];
|
|
141 |
Shield can then automatically upgrade as updates become available.
|
142 |
</dd>
|
143 |
|
|
|
|
|
|
|
144 |
<dt>Support for WooCommerce & other 3rd party plugins</dt>
|
145 |
-
<dd>
|
146 |
-
for your customer accounts.
|
147 |
</dd>
|
148 |
|
149 |
<dt>Exclusive Customer Support</dt>
|
150 |
-
<dd>Technical
|
151 |
-
</dd>
|
152 |
|
153 |
<dt>Import and Export of plugin options</dt>
|
154 |
-
<dd>Automatically import
|
155 |
|
156 |
-
<dt>Exclusive Early-Access
|
157 |
-
<dd>Be
|
158 |
-
</dd>
|
159 |
|
160 |
<dt>Unlimited Audit Trail</dt>
|
161 |
-
<dd>Retain
|
162 |
|
163 |
<dt>Customize text shown to visitors</dt>
|
164 |
<dd>Edit customer-facing messages/text of the Shield plugin.</dd>
|
@@ -179,9 +171,6 @@ $aLicKeyInput = $inputs[ 'license_key' ];
|
|
179 |
<div id="colltwo" class="collapse" aria-labelledby="headingTwo" data-parent="#accordion">
|
180 |
<div class="card-body">
|
181 |
<dl>
|
182 |
-
<dt>Catch Hacks Immediately - Plugins and Themes Guard</dt>
|
183 |
-
<dd>Be alerted immediately to ANY unauthorized changes to plugin and theme files.</dd>
|
184 |
-
|
185 |
<dt>White Label</dt>
|
186 |
<dd>Re-Brand Shield Security as your own!</dd>
|
187 |
|
@@ -254,26 +243,9 @@ var iCWP_WPSF_LicenseHandler = new function () {
|
|
254 |
return false;
|
255 |
}
|
256 |
bRequestCurrentlyRunning = true;
|
257 |
-
|
258 |
event.preventDefault();
|
259 |
|
260 |
var $oForm = jQuery( this );
|
261 |
-
jQuery( '<input />' ).attr( 'type', 'hidden' ).attr( 'name', 'action' )
|
262 |
-
.attr( 'value', "<?php echo $ajax_vars[ 'icwp_ajax_action' ]; ?>" )
|
263 |
-
.appendTo( $oForm );
|
264 |
-
jQuery( '<input />' ).attr( 'type', 'hidden' ).attr( 'name', 'icwp_ajax_action' )
|
265 |
-
.attr( 'value', "<?php echo $ajax_vars[ 'icwp_ajax_action' ]; ?>" )
|
266 |
-
.appendTo( $oForm );
|
267 |
-
jQuery( '<input />' ).attr( 'type', 'hidden' ).attr( 'name', 'icwp_nonce' )
|
268 |
-
.attr( 'value', "<?php echo $ajax_vars[ 'icwp_nonce' ]; ?>" )
|
269 |
-
.appendTo( $oForm );
|
270 |
-
jQuery( '<input />' ).attr( 'type', 'hidden' ).attr( 'name', 'icwp_nonce_action' )
|
271 |
-
.attr( 'value', "<?php echo $ajax_vars[ 'icwp_nonce_action' ]; ?>" )
|
272 |
-
.appendTo( $oForm );
|
273 |
-
jQuery( '<input />' ).attr( 'type', 'hidden' ).attr( 'name', 'icwp_action_module' )
|
274 |
-
.attr( 'value', "<?php echo $ajax_vars[ 'icwp_action_module' ]; ?>" )
|
275 |
-
.appendTo( $oForm );
|
276 |
-
|
277 |
jQuery.post( ajaxurl, $oForm.serialize(),
|
278 |
function ( oResponse ) {
|
279 |
}
|
3 |
/** @var string[] $inputs */
|
4 |
/** @var string[] $flags */
|
5 |
/** @var string[] $vars */
|
6 |
+
/** @var string[] $aLicenseAjax */
|
7 |
/** @var array $aLicKeyInput */
|
8 |
$aLicKeyInput = $inputs[ 'license_key' ];
|
9 |
?>
|
65 |
<hr />
|
66 |
|
67 |
<h4>License Actions</h4>
|
68 |
+
|
69 |
<div class="row">
|
70 |
<div class="col card">
|
71 |
<form action="<?php echo $form_action; ?>" method="post" class="licenseForm">
|
72 |
+
|
73 |
+
<?php foreach ( $ajax[ 'license_handling' ] as $sAjKey => $sAjVal ) : ?>
|
74 |
+
<input type="hidden" name="<?php echo $sAjKey; ?>" value="<?php echo $sAjVal; ?>" />
|
75 |
+
<?php endforeach; ?>
|
76 |
+
|
77 |
+
<input type="hidden" name="license-action" value="check" />
|
78 |
<div class="form-group">
|
79 |
+
<label>Check License Availability For This Site</label>
|
80 |
+
<button class="btn btn-info" type="submit"
|
81 |
+
<?php echo $flags[ 'button_enabled_check' ] ? '' : 'disabled="disabled"'; ?> >
|
82 |
+
Check License
|
83 |
+
</button>
|
84 |
+
<span class="form-text text-muted">Verify License Registration</span>
|
|
|
|
|
|
|
85 |
</div>
|
86 |
</form>
|
87 |
</div>
|
91 |
<div class="row">
|
92 |
<div class="col card">
|
93 |
<form action="<?php echo $form_action; ?>" method="post" class="licenseForm">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
94 |
|
95 |
+
<?php foreach ( $ajax[ 'license_handling' ] as $sAjKey => $sAjVal ) : ?>
|
96 |
+
<input type="hidden" name="<?php echo $sAjKey; ?>" value="<?php echo $sAjVal; ?>" />
|
97 |
+
<?php endforeach; ?>
|
98 |
+
|
99 |
<input type="hidden" name="license-action" value="remove" />
|
100 |
<div class="form-group">
|
101 |
<label>Remove Current License</label>
|
124 |
</h5>
|
125 |
</div>
|
126 |
|
127 |
+
<div id="collone" class="collapse show" aria-labelledby="headingOne"
|
128 |
data-parent="#accordion">
|
129 |
<div class="card-body">
|
130 |
<dl>
|
133 |
Shield can then automatically upgrade as updates become available.
|
134 |
</dd>
|
135 |
|
136 |
+
<dt>Catch Hacks Immediately - Plugins and Themes Guard</dt>
|
137 |
+
<dd>Be alerted to ANY unauthorized changes to plugins/themes.</dd>
|
138 |
+
|
139 |
<dt>Support for WooCommerce & other 3rd party plugins</dt>
|
140 |
+
<dd>Provide tighter security for your WooCommerce customers.
|
|
|
141 |
</dd>
|
142 |
|
143 |
<dt>Exclusive Customer Support</dt>
|
144 |
+
<dd>Technical support for Shield is exclusive to Pro customers.</dd>
|
|
|
145 |
|
146 |
<dt>Import and Export of plugin options</dt>
|
147 |
+
<dd>Automatically import settings directly from 1 site to another.</dd>
|
148 |
|
149 |
+
<dt>Exclusive Early-Access </dt>
|
150 |
+
<dd>Be 1st to get new security features, as soon as they're available.</dd>
|
|
|
151 |
|
152 |
<dt>Unlimited Audit Trail</dt>
|
153 |
+
<dd>Retain logs for as long as you need - no limits.</dd>
|
154 |
|
155 |
<dt>Customize text shown to visitors</dt>
|
156 |
<dd>Edit customer-facing messages/text of the Shield plugin.</dd>
|
171 |
<div id="colltwo" class="collapse" aria-labelledby="headingTwo" data-parent="#accordion">
|
172 |
<div class="card-body">
|
173 |
<dl>
|
|
|
|
|
|
|
174 |
<dt>White Label</dt>
|
175 |
<dd>Re-Brand Shield Security as your own!</dd>
|
176 |
|
243 |
return false;
|
244 |
}
|
245 |
bRequestCurrentlyRunning = true;
|
|
|
246 |
event.preventDefault();
|
247 |
|
248 |
var $oForm = jQuery( this );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
249 |
jQuery.post( ajaxurl, $oForm.serialize(),
|
250 |
function ( oResponse ) {
|
251 |
}
|
templates/twig/snippets/state_summary.twig
DELETED
@@ -1,33 +0,0 @@
|
|
1 |
-
|
2 |
-
{% if aSummaryData is defined and aSummaryData|length %}
|
3 |
-
|
4 |
-
<div class="row-fluid">
|
5 |
-
<div class="span">
|
6 |
-
<h3>{{ strings.plugin_activated_features_summary }}</h3>
|
7 |
-
</div>
|
8 |
-
</div>
|
9 |
-
|
10 |
-
<div class="row-fluid feature-summary-blocks">
|
11 |
-
{% for key, aSummary in aSummaryData %}
|
12 |
-
{% if (key > 0) and ( key is divisible by(4) )%}
|
13 |
-
</div><div class="row-fluid feature-summary-blocks">
|
14 |
-
{% endif %}
|
15 |
-
|
16 |
-
<div class="span3 feature-summary-block state-{{ aSummary.enabled? 'on' : 'off' }}" id="feature-{{ aSummary.slug }}">
|
17 |
-
<div class="row-fluid">
|
18 |
-
<div class="feature-icon span3"></div>
|
19 |
-
<div class="span8 offset1">
|
20 |
-
<a class="btn btn-{{ aSummary.enabled ? 'success' : 'warning' }}"
|
21 |
-
href="{{ aSummary.href }}">
|
22 |
-
{{ strings.go_to_settings }}
|
23 |
-
</a>
|
24 |
-
</div>
|
25 |
-
</div>
|
26 |
-
<div class="feature-name">
|
27 |
-
{{ aSummary.name }} : <span class="feature-enabled-text">{{ aSummary.enabled ? 'on' : 'off' }}</span>
|
28 |
-
</div>
|
29 |
-
</div>
|
30 |
-
|
31 |
-
{% endfor %}
|
32 |
-
</div>
|
33 |
-
{% endif %}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
templates/twig/wizard/pages/wizard.twig
CHANGED
@@ -128,19 +128,16 @@ var iCWP_WPSF_Wizard_FormHandler = new function () {
|
|
128 |
bRequestCurrentlyRunning = true;
|
129 |
|
130 |
jQuery( '<input />' ).attr( 'type', 'hidden' ).attr( 'name', 'action' )
|
131 |
-
.attr( 'value', "{{ ajax.content.
|
132 |
.appendTo( $oForm );
|
133 |
-
jQuery( '<input />' ).attr( 'type', 'hidden' ).attr( 'name', '
|
134 |
-
.attr( 'value', "{{ ajax.content.
|
135 |
.appendTo( $oForm );
|
136 |
-
jQuery( '<input />' ).attr( 'type', 'hidden' ).attr( 'name', '
|
137 |
-
.attr( 'value', "{{ ajax.content.
|
138 |
.appendTo( $oForm );
|
139 |
-
jQuery( '<input />' ).attr( 'type', 'hidden' ).attr( 'name', '
|
140 |
-
.attr( 'value', "{{ ajax.content.
|
141 |
-
.appendTo( $oForm );
|
142 |
-
jQuery( '<input />' ).attr( 'type', 'hidden' ).attr( 'name', 'icwp_action_module' )
|
143 |
-
.attr( 'value', "{{ ajax.content.icwp_action_module }}" )
|
144 |
.appendTo( $oForm );
|
145 |
|
146 |
if ( jQuery( 'p.wizard-response', $oForm ).length === 0 ) {
|
@@ -157,6 +154,11 @@ var iCWP_WPSF_Wizard_FormHandler = new function () {
|
|
157 |
jQuery.post( '{{ ajax.content.ajaxurl }}', $oForm.serialize(),
|
158 |
function ( oResponse ) {
|
159 |
|
|
|
|
|
|
|
|
|
|
|
160 |
if ( oResponse.success ) {
|
161 |
$oResponseField.removeClass( 'alert-danger' )
|
162 |
.addClass( 'alert-success' );
|
@@ -219,6 +221,11 @@ var iCWP_WPSF_Wizard_FormHandler = new function () {
|
|
219 |
|
220 |
jQuery.post( '{{ ajax.steps.ajaxurl }}', reqData,
|
221 |
function ( oResponse ) {
|
|
|
|
|
|
|
|
|
|
|
222 |
if ( undefined !== oResponse.data.next_step ) {
|
223 |
$oWizard.steps( 'add', oResponse.data.next_step );
|
224 |
$oWizard.steps( 'next' );
|
128 |
bRequestCurrentlyRunning = true;
|
129 |
|
130 |
jQuery( '<input />' ).attr( 'type', 'hidden' ).attr( 'name', 'action' )
|
131 |
+
.attr( 'value', "{{ ajax.content.action }}" )
|
132 |
.appendTo( $oForm );
|
133 |
+
jQuery( '<input />' ).attr( 'type', 'hidden' ).attr( 'name', 'exec' )
|
134 |
+
.attr( 'value', "{{ ajax.content.exec }}" )
|
135 |
.appendTo( $oForm );
|
136 |
+
jQuery( '<input />' ).attr( 'type', 'hidden' ).attr( 'name', 'exec_nonce' )
|
137 |
+
.attr( 'value', "{{ ajax.content.exec_nonce }}" )
|
138 |
.appendTo( $oForm );
|
139 |
+
jQuery( '<input />' ).attr( 'type', 'hidden' ).attr( 'name', 'mod_slug' )
|
140 |
+
.attr( 'value', "{{ ajax.content.mod_slug }}" )
|
|
|
|
|
|
|
141 |
.appendTo( $oForm );
|
142 |
|
143 |
if ( jQuery( 'p.wizard-response', $oForm ).length === 0 ) {
|
154 |
jQuery.post( '{{ ajax.content.ajaxurl }}', $oForm.serialize(),
|
155 |
function ( oResponse ) {
|
156 |
|
157 |
+
if ( typeof oResponse === "undefined" || typeof oResponse.data === "undefined" ) {
|
158 |
+
alert( 'There was a critical failure in the request. Cannot proceed. Example causes are HTTPS misconfiguration or PHP error warnings output.' );
|
159 |
+
return;
|
160 |
+
}
|
161 |
+
|
162 |
if ( oResponse.success ) {
|
163 |
$oResponseField.removeClass( 'alert-danger' )
|
164 |
.addClass( 'alert-success' );
|
221 |
|
222 |
jQuery.post( '{{ ajax.steps.ajaxurl }}', reqData,
|
223 |
function ( oResponse ) {
|
224 |
+
if ( typeof oResponse === "undefined" || typeof oResponse.data === "undefined" ) {
|
225 |
+
alert( 'There was a critical failure in the request. Cannot proceed. Example causes are HTTPS misconfiguration or PHP error warnings output.' );
|
226 |
+
return;
|
227 |
+
}
|
228 |
+
|
229 |
if ( undefined !== oResponse.data.next_step ) {
|
230 |
$oWizard.steps( 'add', oResponse.data.next_step );
|
231 |
$oWizard.steps( 'next' );
|
templates/twig/wizard/slides/welcome/ip_detect.twig
CHANGED
@@ -26,7 +26,7 @@
|
|
26 |
<p>Copy and paste the IP address from Step 1 into the text box below and click submit.</p>
|
27 |
|
28 |
<form class="form-horizontal icwp-wizard-form">
|
29 |
-
{{ slideMacros.
|
30 |
|
31 |
{{ slideMacros.formInput_Hidden( 'wizard-step', 'ip_detect' ) }}
|
32 |
{{ slideMacros.formInput_Submit( 'Submit: This Is My IP' ) }}
|
26 |
<p>Copy and paste the IP address from Step 1 into the text box below and click submit.</p>
|
27 |
|
28 |
<form class="form-horizontal icwp-wizard-form">
|
29 |
+
{{ slideMacros.formInput_Text( 'ip', '', 'My IP Address', '123.456.789.012' ) }}
|
30 |
|
31 |
{{ slideMacros.formInput_Hidden( 'wizard-step', 'ip_detect' ) }}
|
32 |
{{ slideMacros.formInput_Submit( 'Submit: This Is My IP' ) }}
|