Changeset 2611140
- Timestamp:
- 10/07/2021 05:20:28 PM (4 years ago)
- Location:
- vaultpress/trunk
- Files:
-
- 19 added
- 16 edited
-
CHANGELOG.md (added)
-
class.vaultpress-cli.php (modified) (1 diff)
-
class.vaultpress-hotfixes.php (modified) (5 diffs)
-
composer.json (modified) (1 diff)
-
cron-tasks.php (modified) (1 diff)
-
readme.txt (modified) (1 diff)
-
vaultpress.php (modified) (4 diffs)
-
vendor/autoload.php (modified) (1 diff)
-
vendor/autoload_packages.php (modified) (1 diff)
-
vendor/automattic/jetpack-logo/composer.json (modified) (2 diffs)
-
vendor/automattic/jetpack-logo/src/class-logo.php (modified) (1 diff)
-
vendor/composer/ClassLoader.php (modified) (18 diffs)
-
vendor/composer/InstalledVersions.php (added)
-
vendor/composer/autoload_classmap.php (modified) (1 diff)
-
vendor/composer/autoload_psr4.php (modified) (1 diff)
-
vendor/composer/autoload_real.php (modified) (3 diffs)
-
vendor/composer/autoload_static.php (modified) (4 diffs)
-
vendor/composer/installed.json (modified) (1 diff)
-
vendor/composer/installed.php (added)
-
vendor/composer/jetpack_autoload_classmap.php (added)
-
vendor/jetpack-autoloader (added)
-
vendor/jetpack-autoloader/class-autoloader-handler.php (added)
-
vendor/jetpack-autoloader/class-autoloader-locator.php (added)
-
vendor/jetpack-autoloader/class-autoloader.php (added)
-
vendor/jetpack-autoloader/class-container.php (added)
-
vendor/jetpack-autoloader/class-hook-manager.php (added)
-
vendor/jetpack-autoloader/class-latest-autoloader-guard.php (added)
-
vendor/jetpack-autoloader/class-manifest-reader.php (added)
-
vendor/jetpack-autoloader/class-path-processor.php (added)
-
vendor/jetpack-autoloader/class-php-autoloader.php (added)
-
vendor/jetpack-autoloader/class-plugin-locator.php (added)
-
vendor/jetpack-autoloader/class-plugins-handler.php (added)
-
vendor/jetpack-autoloader/class-shutdown-handler.php (added)
-
vendor/jetpack-autoloader/class-version-loader.php (added)
-
vendor/jetpack-autoloader/class-version-selector.php (added)
Legend:
- Unmodified
- Added
- Removed
-
vaultpress/trunk/class.vaultpress-cli.php
r1582905 r2611140 1 <?php 1 <?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName 2 /** 3 * WP CLI commands for vaultpress. 4 * 5 * @package automattic/vaultpress 6 */ 2 7 3 8 WP_CLI::add_command( 'vaultpress', 'VaultPress_CLI' ); -
vaultpress/trunk/class.vaultpress-hotfixes.php
r2201737 r2611140 7 7 global $wp_version; 8 8 9 if ( version_compare( $wp_version, '3.0.2', '<' ) )10 add_filter( 'query', array( $this, 'r16625' ) );11 12 if ( defined( 'XMLRPC_REQUEST' ) && XMLRPC_REQUEST && version_compare( $wp_version, '4.3.1', '<' ) )13 add_action( 'xmlrpc_call', array( $this, 'filter_xmlrpc_methods' ) );14 15 if ( version_compare( $wp_version, '3.3.2', '<' ) ) {16 add_filter( 'pre_kses', array( $this, 'r17172_wp_kses' ), 1, 3 );17 add_filter( 'clean_url', array( $this, 'r17172_esc_url' ), 1, 3 );18 }19 20 if ( version_compare( $wp_version, '3.1.3', '<' ) ) {21 add_filter( 'sanitize_file_name', array( $this, 'r17990' ) );22 23 if ( ! empty( $_POST ) ) {24 $this->r17994( $_POST );25 }26 // Protect add_meta, update_meta used by the XML-RPC API.27 add_filter( 'wp_xmlrpc_server_class', 'r17994_xmlrpc_server' );28 29 // clean post_mime_type and guid (r17994)30 add_filter( 'pre_post_mime_type', array( $this, 'r17994_sanitize_mime_type' ) );31 add_filter( 'post_mime_type', array( $this, 'r17994_sanitize_mime_type' ) );32 add_filter( 'pre_post_guid', 'esc_url_raw' );33 add_filter( 'post_guid', 'esc_url' );34 }35 36 if ( version_compare( $wp_version, '3.1.4', '<' ) ) {37 add_filter( 'wp_insert_post_data', array( $this, 'r18368' ), 1, 2 );38 39 // Add click jacking protection40 // login_init does not exist before 17826.41 $action = isset( $_REQUEST['action'] ) ? $_REQUEST['action'] : 'login';42 add_action( 'login_form_' . $action, array( $this, 'r17826_send_frame_options_header' ), 10, 0 );43 add_action( 'admin_init', array( $this, 'r17826_send_frame_options_header' ), 10, 0 );44 45 add_filter( 'sanitize_option_WPLANG', array( $this, 'r18346_sanitize_lang_on_save' ) );46 add_filter( 'sanitize_option_new_admin_email', array( $this, 'r18346_sanitize_admin_email_on_save' ) );47 }48 9 add_filter( 'option_new_admin_email', array( $this, 'r18346_sanitize_admin_email' ) ); 49 10 50 if ( version_compare( $wp_version, '3.3.2', '<' ) ) {51 remove_filter( 'comment_text', 'make_clickable' );52 add_filter( 'comment_text', array( $this, 'r20493_make_clickable' ), 9 );53 54 add_filter( 'comment_post_redirect', array( $this, 'r20486_comment_post_redirect' ) );55 }56 57 // WooThemes < 3.8.3, foxypress, asset-manager, wordpress-member-private-conversation.58 $end_execution = false;59 if ( isset( $_SERVER['SCRIPT_FILENAME'] ) )60 foreach ( array( 'preview-shortcode-external.php', 'uploadify.php', 'doupload.php', 'cef-upload.php', 'upload.php' ) as $vulnerable_script ) {61 if ( $vulnerable_script == basename( $_SERVER['SCRIPT_FILENAME'] ) ) {62 switch ( $vulnerable_script ) {63 case 'upload.php':64 $pma_config_file = realpath( dirname( $_SERVER['SCRIPT_FILENAME'] ) . DIRECTORY_SEPARATOR . 'paam-config-ajax.php' );65 if ( false === $pma_config_file || ! in_array( $pma_config_file, get_included_files() ) ) {66 break;67 }68 default:69 $end_execution = true;70 break 2;71 }72 }73 }74 if ( $end_execution )75 die( 'Disabled for security reasons' );76 77 if ( version_compare( $wp_version, '3.3.2', '>') && version_compare( $wp_version, '3.4.1', '<' ) ) {78 add_filter( 'map_meta_cap', array( $this, 'r21138_xmlrpc_edit_posts' ), 10, 4 );79 add_action( 'map_meta_cap', array( $this, 'r21152_unfiltered_html' ), 10, 4 );80 }81 82 // https://core.trac.wordpress.org/changeset/2108383 if ( version_compare( $wp_version, '3.3', '>=') && version_compare( $wp_version, '3.3.3', '<' ) )84 add_filter( 'editable_slug', 'esc_textarea' );85 86 if ( version_compare( $wp_version, '4.1', '>=' ) && version_compare( $wp_version, '4.1.2', '<' ) )87 add_filter( 'wp_check_filetype_and_ext', array( $this, 'wp_check_filetype_and_ext' ), 20, 4 );88 89 if ( version_compare( $wp_version, '4.2', '<=' ) )90 add_filter( 'preprocess_comment', array( $this, 'filter_long_comment_xss' ), 10, 1 );91 92 11 add_filter( 'get_pagenum_link', array( $this, 'get_pagenum_link' ) ); 93 94 add_filter( 'jetpack_xmlrpc_methods', array( $this, 'disable_jetpack_xmlrpc_methods_293' ), 20, 3 );95 add_filter( 'xmlrpc_methods', array( $this, 'disable_xmlrpc_methods_293' ), 20 );96 12 97 13 // Protect All-in-one SEO from non-authorized users making changes, and script injection attacks. 98 14 add_action( 'wp_ajax_aioseop_ajax_save_meta', array( $this, 'protect_aioseo_ajax' ), 1 ); 99 15 100 // Protect The MailPoet plugin (wysija-newsletters) from remote file upload. Affects versions <= 2.6.6101 add_action( 'admin_init', array( $this , 'protect_wysija_newsletters_verify_capability' ), 1 );102 103 // Protect the Revolution Slider plugin (revslider) from local file inclusion. Affects versions < 4.2104 add_action( 'init', array( $this , 'protect_revslider_lfi' ), 1 );105 106 16 // Protect WooCommerce from object injection via PayPal IPN notifications. Affects 2.0.20 -> 2.3.10 107 17 add_action( 'init', array( $this , 'protect_woocommerce_paypal_object_injection' ), 1 ); 108 109 // Protect Jetpack from comments-based XSS attack110 add_action( 'plugins_loaded', array( $this, 'protect_jetpack_402_from_oembed_xss' ), 1 );111 112 if ( version_compare( $wp_version, '3.1', '>=') && version_compare( $wp_version, '4.3', '<=' ) ) {113 if ( is_admin() ) {114 add_filter( 'user_email', array( $this, 'patch_user_email' ), 10 , 3 );115 }116 117 remove_shortcode( 'wp_caption' );118 remove_shortcode( 'caption' );119 add_shortcode( 'wp_caption', array( $this, 'filtered_caption_shortcode' ) );120 add_shortcode( 'caption', array( $this, 'filtered_caption_shortcode' ) );121 }122 123 // Protect Akismet < 3.1.5 from stored XSS in admin page124 add_filter( 'init', array( $this, 'protect_akismet_comment_xss' ), 50 );125 18 126 19 if ( version_compare( $wp_version, '4.7.1', '<=' ) ) { … … 160 53 } 161 54 162 function protect_jetpack_402_from_oembed_xss() {163 if ( $this->needs_jetpack_402_fix() ) {164 add_filter( 'jetpack_comments_allow_oembed', array( $this, 'disable_jetpack_oembed' ) );165 }166 }167 168 function needs_jetpack_402_fix() {169 if ( ! defined( 'JETPACK__VERSION' ) ) {170 return false;171 }172 173 if ( version_compare( JETPACK__VERSION, '2.0.7', '<' ) ) {174 return true;175 }176 177 if ( version_compare( JETPACK__VERSION, '4.0.2', '>' ) ) {178 return false;179 }180 181 $secure_jetpacks = array(182 '2.1' => '2.1.5',183 '2.2' => '2.2.8',184 '2.3' => '2.3.8',185 '2.4' => '2.4.5',186 '2.5' => '2.5.3',187 '2.6' => '2.6.4',188 '2.7' => '2.7.3',189 '2.8' => '2.8.3',190 '2.9' => '2.9.4',191 '3.0' => '3.0.4',192 '3.1' => '3.1.3',193 '3.2' => '3.2.3',194 '3.3' => '3.3.4',195 '3.4' => '3.4.4',196 '3.5' => '3.5.4',197 '3.6' => '3.6.2',198 '3.7' => '3.7.3',199 '3.8' => '3.8.3',200 '3.9' => '3.9.7',201 '4.0' => '4.0.3',202 );203 204 $parts = explode( '.', JETPACK__VERSION, 3 );205 if ( count( $parts ) < 2 ) {206 // no/not enough periods in the version;207 return false;208 }209 210 // pull out the first two components, cast to int to get rid of weird 'beta2' junk211 $int_parts = array();212 $int_parts[0] = intval( $parts[0] );213 $int_parts[1] = intval( $parts[1] );214 215 // and find the secure version for this branch216 $branch = sprintf( '%d.%d', $int_parts[0], $int_parts[1] );217 if ( ! isset( $secure_jetpacks[ $branch ] ) ) {218 return false;219 }220 return version_compare( JETPACK__VERSION, $secure_jetpacks[ $branch ], '<' );221 }222 223 55 function disable_jetpack_oembed( $enabled ) { 224 56 return false; 225 57 } 226 58 227 function filter_long_comment_xss( $commentdata ) {228 if ( strlen( $commentdata['comment_content'] ) > 65500 )229 wp_die( 'Comment too long', 'Invalid comment' );230 231 return $commentdata;232 }233 234 function wp_check_filetype_and_ext( $filetype, $file, $filename, $mimes ) {235 if ( empty( $mimes ) )236 $mimes = get_allowed_mime_types();237 $type = false;238 $ext = false;239 foreach ( $mimes as $ext_preg => $mime_match ) {240 $ext_preg = '!\.(' . $ext_preg . ')$!i';241 if ( preg_match( $ext_preg, $filename, $ext_matches ) ) {242 $type = $mime_match;243 $ext = $ext_matches[1];244 break;245 }246 }247 $filetype['ext'] = $ext;248 $filetype['type'] = $type;249 return $filetype;250 }251 252 function disable_jetpack_xmlrpc_methods_293( $jetpack_methods, $core_methods, $user = false ) {253 if ( $this->needs_jetpack_293_fix() && !$user )254 unset( $jetpack_methods['jetpack.jsonAPI'], $jetpack_methods['jetpack.verifyAction'] );255 return $jetpack_methods;256 }257 258 function disable_xmlrpc_methods_293( $core_methods ) {259 if ( $this->needs_jetpack_293_fix() )260 unset( $core_methods['jetpack.verifyAction'] );261 return $core_methods;262 }263 264 function needs_jetpack_293_fix() {265 if ( ! defined( 'JETPACK__VERSION' ) )266 return false;267 $secure_jetpacks = array(268 '1.9' => '1.9.3',269 '2.0' => '2.0.5',270 '2.1' => '2.1.3',271 '2.2' => '2.2.6',272 '2.3' => '2.3.6',273 '2.4' => '2.4.3',274 '2.5' => '2.5.1',275 '2.6' => '2.6.2',276 '2.7' => '2.7.1',277 '2.8' => '2.8.1',278 '2.9' => '2.9.3',279 );280 $float_version = (string) floatval( JETPACK__VERSION );281 if ( ! isset( $secure_jetpacks[ $float_version ] ) )282 return false;283 return version_compare( JETPACK__VERSION, $secure_jetpacks[ $float_version ], '<' );284 }285 286 function r21138_xmlrpc_edit_posts( $caps, $cap, $user_id, $args ) {287 if ( ! isset( $args[0] ) || isset( $args[1] ) && $args[1] === 'hotfixed' )288 return $caps;289 foreach ( get_post_types( array(), 'objects' ) as $post_type_object ) {290 if ( $cap === $post_type_object->cap->edit_posts )291 return map_meta_cap( $post_type_object->cap->edit_post, $user_id, $args[0], 'hotfixed' );292 }293 return $caps;294 }295 296 function r21152_unfiltered_html( $caps, $cap, $user_id, $args ) {297 if ( $cap !== 'unfiltered_html' )298 return $caps;299 if ( defined( 'DISALLOW_UNFILTERED_HTML' ) && DISALLOW_UNFILTERED_HTML )300 return $caps;301 $key = array_search( 'do_not_allow', $caps );302 if ( false !== $key )303 return $caps;304 if ( is_multisite() && ! is_super_admin( $user_id ) )305 $caps[$key] = 'do_not_allow';306 return $caps;307 }308 309 59 function get_pagenum_link( $url ) { 310 60 return esc_url_raw( $url ); 311 }312 313 function r20486_comment_post_redirect( $location ) {314 $location = wp_sanitize_redirect( $location );315 $location = wp_validate_redirect( $location, admin_url() );316 317 return $location;318 }319 320 function r20493_make_clickable( $text ) {321 $r = '';322 $textarr = preg_split( '/(<[^<>]+>)/', $text, -1, PREG_SPLIT_DELIM_CAPTURE ); // split out HTML tags323 foreach ( $textarr as $piece ) {324 if ( empty( $piece ) || ( $piece[0] == '<' && ! preg_match('|^<\s*[\w]{1,20}+://|', $piece) ) ) {325 $r .= $piece;326 continue;327 }328 329 // Long strings might contain expensive edge cases ...330 if ( 10000 < strlen( $piece ) ) {331 // ... break it up332 foreach ( $this->r20493_split_str_by_whitespace( $piece, 2100 ) as $chunk ) { // 2100: Extra room for scheme and leading and trailing paretheses333 if ( 2101 < strlen( $chunk ) ) {334 $r .= $chunk; // Too big, no whitespace: bail.335 } else {336 $r .= $this->r20493_make_clickable( $chunk );337 }338 }339 } else {340 $ret = " $piece "; // Pad with whitespace to simplify the regexes341 342 $url_clickable = '~343 ([\\s(<.,;:!?]) # 1: Leading whitespace, or punctuation344 ( # 2: URL345 [\\w]{1,20}+:// # Scheme and hier-part prefix346 (?=\S{1,2000}\s) # Limit to URLs less than about 2000 characters long347 [\\w\\x80-\\xff#%\\~/@\\[\\]*(+=&$-]*+ # Non-punctuation URL character348 (?: # Unroll the Loop: Only allow puctuation URL character if followed by a non-punctuation URL character349 [\'.,;:!?)] # Punctuation URL character350 [\\w\\x80-\\xff#%\\~/@\\[\\]*(+=&$-]++ # Non-punctuation URL character351 )*352 )353 (\)?) # 3: Trailing closing parenthesis (for parethesis balancing post processing)354 ~xS'; // The regex is a non-anchored pattern and does not have a single fixed starting character.355 // Tell PCRE to spend more time optimizing since, when used on a page load, it will probably be used several times.356 357 $ret = preg_replace_callback( $url_clickable, array( $this, 'r20493_make_url_clickable_cb') , $ret );358 359 $ret = preg_replace_callback( '#([\s>])((www|ftp)\.[\w\\x80-\\xff\#$%&~/.\-;:=,?@\[\]+]+)#is', '_make_web_ftp_clickable_cb', $ret );360 $ret = preg_replace_callback( '#([\s>])([.0-9a-z_+-]+)@(([0-9a-z-]+\.)+[0-9a-z]{2,})#i', '_make_email_clickable_cb', $ret );361 362 $ret = substr( $ret, 1, -1 ); // Remove our whitespace padding.363 $r .= $ret;364 }365 }366 367 // Cleanup of accidental links within links368 $r = preg_replace( '#(<a( [^>]+?>|>))<a [^>]+?>([^>]+?)</a></a>#i', "$1$3</a>", $r );369 return $r;370 61 } 371 62 … … 422 113 } 423 114 424 function r16625( $query ) {425 // Hotfixes: http://core.trac.wordpress.org/changeset/16625426 427 // Punt as fast as possible if this isn't an UPDATE428 if ( substr( $query, 0, 6 ) != "UPDATE" )429 return $query;430 global $wpdb;431 432 // Determine what the prefix of the bad query would look like and punt if this query doesn't match433 $badstring = "UPDATE $wpdb->posts SET to_ping = TRIM(REPLACE(to_ping, '";434 if ( substr( $query, 0, strlen( $badstring ) ) != $badstring )435 return $query;436 437 // Pull the post_id which is the last thing in the origin query, after a space, no quotes438 $query_parts = explode( " ", $query );439 $post_id = array_pop( $query_parts );440 441 // Chop off the beginning and end of the original query to get our unsanitized $tb_ping442 $tb_ping = substr(443 $query,444 strlen( $badstring ),445 (446 strlen( $query ) - (447 strlen( $badstring ) + strlen( sprintf( "', '')) WHERE ID = %d", $post_id ) )448 )449 )450 );451 452 // Return the fixed query453 return $wpdb->prepare( "UPDATE $wpdb->posts SET to_ping = TRIM(REPLACE(to_ping, %s, '')) WHERE ID = %d", $tb_ping, $post_id );454 }455 456 function filter_xmlrpc_methods( $xmlrpc_method ) {457 // Hotfixes: http://core.trac.wordpress.org/changeset/16803458 global $wp_xmlrpc_server;459 // Pretend that we are an xmlrpc method, freshly called460 $args = $wp_xmlrpc_server->message->params;461 $error_code = 401;462 switch( $xmlrpc_method ) {463 case 'metaWeblog.newPost':464 $content_struct = $args[3];465 $publish = isset( $args[4] ) ? $args[4] : 0;466 if ( !empty( $content_struct['post_type'] ) ) {467 if ( $content_struct['post_type'] == 'page' ) {468 if ( $publish || 'publish' == $content_struct['page_status'] )469 $cap = 'publish_pages';470 else471 $cap = 'edit_pages';472 $error_message = __( 'Sorry, you are not allowed to publish pages on this site.' );473 } elseif ( $content_struct['post_type'] == 'post' ) {474 if ( $publish || 'publish' == $content_struct['post_status'] )475 $cap = 'publish_posts';476 else477 $cap = 'edit_posts';478 $error_message = __( 'Sorry, you are not allowed to publish posts on this site.' );479 } else {480 $error_message = __( 'Invalid post type.' );481 }482 } else {483 if ( $publish || 'publish' == $content_struct['post_status'] )484 $cap = 'publish_posts';485 else486 $cap = 'edit_posts';487 $error_message = __( 'Sorry, you are not allowed to publish posts on this site.' );488 }489 if ( current_user_can( $cap ) )490 return true;491 break;492 case 'metaWeblog.editPost':493 $post_ID = (int) $args[0];494 $content_struct = $args[3];495 $publish = $args[4] || ( isset( $content_struct['post_status'] ) && in_array( $content_struct['post_status'], array( 'publish', 'private' ) ) );496 $cap = ( $publish ) ? 'publish_posts' : 'edit_posts';497 $error_message = __( 'Sorry, you are not allowed to publish posts on this site.' );498 if ( !empty( $content_struct['post_type'] ) ) {499 if ( $content_struct['post_type'] == 'page' ) {500 $error_message = __( 'Sorry, you are not allowed to publish pages on this site.' );501 } elseif ( $content_struct['post_type'] == 'post' ) {502 $error_message = __( 'Sorry, you are not allowed to publish posts on this site.' );503 } else {504 $error_message = __( 'Invalid post type.' );505 }506 }507 if ( current_user_can( $cap ) )508 return true;509 break;510 case 'mt.publishPost':511 $post_ID = (int) $args[0];512 if ( current_user_can( 'publish_posts' ) && current_user_can( 'edit_post', $post_ID ) )513 return true;514 $error_message = __( 'Sorry, you cannot edit this post.' );515 break;516 case 'blogger.deletePost':517 $post_ID = (int) $args[1];518 if ( current_user_can( 'delete_post', $post_ID ) )519 return true;520 $error_message = __( 'Sorry, you do not have the right to delete this post.' );521 break;522 case 'wp.getPageStatusList':523 if ( current_user_can( 'edit_pages' ) )524 return true;525 $error_code = 403;526 $error_message = __( 'You are not allowed access to details about this site.' );527 break;528 case 'wp.deleteComment':529 case 'wp.editComment':530 $comment_ID = (int) $args[3];531 if ( !$comment = get_comment( $comment_ID ) )532 return true; // This will be handled in the calling function explicitly533 if ( current_user_can( 'edit_post', $comment->comment_post_ID ) )534 return true;535 $error_code = 403;536 $error_message = __( 'You are not allowed to moderate comments on this site.' );537 break;538 default:539 return true;540 }541 // If we are here then this was a handlable xmlrpc call and the capability checks above all failed542 // ( otherwise they would have returned to the do_action from the switch statement above ) so it's543 // time to exit with whatever error we've determined is the problem (thus short circuiting the544 // original XMLRPC method call, and enforcing the above capability checks -- with an ax. We'll545 // mimic the behavior from the end of IXR_Server::serve()546 $r = new IXR_Error( $error_code, $error_message );547 $resultxml = $r->getXml();548 $xml = <<<EOD549 <methodResponse>550 <params>551 <param>552 <value>553 $resultxml554 </value>555 </param>556 </params>557 </methodResponse>558 EOD;559 $wp_xmlrpc_server->output( $xml );560 // For good measure...561 die();562 }563 564 function r17172_esc_url( $url, $original_url, $_context ) {565 $url = $original_url;566 567 if ( '' == $url )568 return $url;569 $url = preg_replace('|[^a-z0-9-~+_.?#=!&;,/:%@$\|*\'()\\x80-\\xff]|i', '', $url);570 $strip = array('%0d', '%0a', '%0D', '%0A');571 $url = _deep_replace($strip, $url);572 $url = str_replace(';//', '://', $url);573 /* If the URL doesn't appear to contain a scheme, we574 * presume it needs http:// appended (unless a relative575 * link starting with /, # or ? or a php file).576 */577 if ( strpos($url, ':') === false && ! in_array( $url[0], array( '/', '#', '?' ) ) &&578 ! preg_match('/^[a-z0-9-]+?\.php/i', $url) )579 $url = 'http://' . $url;580 581 // Replace ampersands and single quotes only when displaying.582 if ( 'display' == $_context ) {583 $url = wp_kses_normalize_entities( $url );584 $url = str_replace( '&', '&', $url );585 $url = str_replace( "'", ''', $url );586 }587 588 $protocols = array ('http', 'https', 'ftp', 'ftps', 'mailto', 'news', 'irc', 'gopher', 'nntp', 'feed', 'telnet', 'mms', 'rtsp', 'svn');589 if ( VaultPress_kses::wp_kses_bad_protocol( $url, $protocols ) != $url )590 return '';591 return $url;592 }593 594 // http://core.trac.wordpress.org/changeset/17172595 // http://core.trac.wordpress.org/changeset/20541596 function r17172_wp_kses( $string, $html, $protocols ) {597 return VaultPress_kses::wp_kses( $string, $html, $protocols );598 }599 600 // http://core.trac.wordpress.org/changeset/17990601 function r17990( $filename ) {602 $parts = explode('.', $filename);603 $filename = array_shift($parts);604 $extension = array_pop($parts);605 $mimes = get_allowed_mime_types();606 607 // Loop over any intermediate extensions. Munge them with a trailing underscore if they are a 2 - 5 character608 // long alpha string not in the extension whitelist.609 foreach ( (array) $parts as $part) {610 $filename .= '.' . $part;611 612 if ( preg_match("/^[a-zA-Z]{2,5}\d?$/", $part) ) {613 $allowed = false;614 foreach ( $mimes as $ext_preg => $mime_match ) {615 $ext_preg = '!^(' . $ext_preg . ')$!i';616 if ( preg_match( $ext_preg, $part ) ) {617 $allowed = true;618 break;619 }620 }621 if ( !$allowed )622 $filename .= '_';623 }624 }625 $filename .= '.' . $extension;626 return $filename;627 }628 629 /*630 * Hotfixes: http://core.trac.wordpress.org/changeset/18368631 */632 function r18368( $post, $raw_post ) {633 if ( isset( $post['filter'] ) || isset ( $raw_post['filter'] ) ) {634 unset( $post['filter'], $raw_post['filter'] ); // to ensure the post is properly sanitized635 $post = sanitize_post($post, 'db');636 }637 if ( empty( $post['ID'] ) )638 unset( $post['ID'] ); // sanitize_post639 unset( $post['filter'] ); // sanitize_post640 return $post;641 }642 643 /**644 * Protect WordPress internal metadata.645 *646 * The post data is passed as a parameter to (unit) test this method.647 * @param $post_data|array the $_POST array.648 */649 function r17994( &$post_data ) {650 // Protect admin-ajax add_meta651 $metakeyselect = isset( $post_data['metakeyselect'] ) ? stripslashes( trim( $post_data['metakeyselect'] ) ) : '';652 $metakeyinput = isset( $post_data['metakeyinput'] ) ? stripslashes( trim( $post_data['metakeyinput'] ) ) : '';653 654 if ( ( $metakeyselect && '_' == $metakeyselect[0] ) || ( $metakeyinput && '_' == $metakeyinput[0] ) ) {655 unset( $_POST['metakeyselect'], $_POST['metakeyinput'] );656 }657 658 // Protect admin-ajax update_meta659 if ( isset( $post_data['meta'] ) ) {660 foreach ( (array)$post_data['meta'] as $mid => $value ) {661 $key = stripslashes( $post_data['meta'][$mid]['key'] );662 if ( $key && '_' == $key[0] )663 unset( $post_data['meta'][$mid] );664 }665 }666 }667 668 function r17994_sanitize_mime_type( $mime_type ) {669 $sani_mime_type = preg_replace( '/[^\-*.a-zA-Z0-9\/+]/', '', $mime_type );670 return apply_filters( 'sanitize_mime_type', $sani_mime_type, $mime_type );671 }672 673 function r17826_send_frame_options_header() {674 @header( 'X-Frame-Options: SAMEORIGIN' );675 }676 677 function r18346_sanitize_admin_email_on_save($value) {678 $value = sanitize_email( $value );679 if ( !is_email( $value ) ) {680 $value = get_option( 'new_admin_email' ); // Resets option to stored value in the case of failed sanitization681 if ( function_exists( 'add_settings_error' ) )682 add_settings_error( 'new_admin_email', 'invalid_admin_email', __( 'The email address entered did not appear to be a valid email address. Please enter a valid email address.' ) );683 }684 return $value;685 }686 687 115 function r18346_sanitize_admin_email( $value ) { 688 116 return sanitize_email( $value ); // Is it enough ? 689 }690 691 function r18346_sanitize_lang_on_save( $value ) {692 $value = $this->r18346_sanitize_lang( $value ); // sanitize the new value.693 if ( empty( $value ) )694 $value = get_option( 'WPLANG' );695 return $value;696 117 } 697 118 … … 724 145 } 725 146 726 // Protect The MailPoet plugin (wysija-newsletters) from remote file upload. Affects versions <= 2.6.6727 function protect_wysija_newsletters_verify_capability() {728 if ( !class_exists( 'WYSIJA_object' ) )729 return true;730 if ( version_compare( WYSIJA::get_version(), '2.6.7', '>=' ) )731 return true;732 if ( !defined( 'DOING_AJAX' ) && !defined( 'WYSIJA_ITF' ) )733 return true;734 if( isset( $_REQUEST['page'] ) && substr( $_REQUEST['page'] ,0 ,7 ) == 'wysija_' ){735 736 switch( $_REQUEST['page'] ){737 case 'wysija_campaigns':738 $role_needed = 'wysija_newsletters';739 break;740 case 'wysija_subscribers':741 $role_needed = 'wysija_subscribers';742 break;743 case 'wysija_config':744 $role_needed = 'wysija_config';745 break;746 case 'wysija_statistics':747 $role_needed = 'wysija_stats_dashboard';748 break;749 default:750 $role_needed = 'switch_themes';751 }752 753 if( current_user_can( $role_needed ) ){754 return true;755 } else{756 die( 'You are not allowed here.' );757 }758 759 }else{760 // this is not a wysija interface/action we can let it pass761 return true;762 }763 }764 765 // Protect the Revolution Slider plugin (revslider) from local file inclusion. Affects versions < 4.2766 function protect_revslider_lfi() {767 if ( isset( $_GET['action'] ) && 'revslider_show_image' == $_GET['action'] ) {768 $img = '';769 if ( isset( $_GET['img'] ) )770 $img = $_GET['img'];771 if ( is_numeric( $img ) )772 return;773 $validate = validate_file( $img );774 if ( 0 !== $validate )775 die( 'invalid file' );776 if ( !file_exists( $img ) )777 die( 'file does not exist' );778 }779 }780 781 147 // Protect WooCommerce 2.0.20 - 2.3.10 from PayPal IPN object injection attack. 782 148 function protect_woocommerce_paypal_object_injection() { … … 797 163 } 798 164 } 799 }800 801 // Protect WordPress 3.1.0 -> WordPress 4.3.0 from code injection via user email802 function patch_user_email( $value, $user_id, $context ) {803 if ( 'display' === $context && class_exists( 'WP_Users_List_Table' ) ) {804 return esc_attr( $value );805 }806 807 return $value;808 }809 810 // Protect WordPress < 4.3.1 from evil tags inside caption shortcodes811 function filtered_caption_shortcode( $attr, $content = null ) {812 if ( isset( $attr['caption'] ) && strpos( $attr['caption'], '<' ) !== false ) {813 $attr['caption'] = wp_kses( $attr['caption'], 'post' );814 }815 816 return img_caption_shortcode( $attr, $content );817 }818 819 // Protect Akismet < 3.1.5 from stored XSS in admin page820 function protect_akismet_comment_xss() {821 remove_filter( 'comment_text', array( 'Akismet_Admin', 'text_add_link_class' ) );822 }823 }824 825 global $wp_version;826 $needs_class_fix = version_compare( $wp_version, '3.1', '>=') && version_compare( $wp_version, '3.1.3', '<' );827 if ( defined( 'XMLRPC_REQUEST' ) && XMLRPC_REQUEST && $needs_class_fix ) {828 include_once( ABSPATH . WPINC . '/class-IXR.php' );829 include_once( ABSPATH . WPINC . '/class-wp-xmlrpc-server.php' );830 831 class VaultPress_XMLRPC_Server_r17994 extends wp_xmlrpc_server {832 function set_custom_fields( $post_id, $fields ) {833 foreach( $fields as $k => $meta ) {834 $key = stripslashes( trim( $meta['key'] ) );835 if ( $key && '_' == $key[0] )836 unset( $fields[$k] );837 }838 parent::set_custom_fields( $post_id, $fields );839 }840 }841 842 function r17994_xmlrpc_server() {843 return 'VaultPress_XMLRPC_Server_r17994';844 165 } 845 166 } -
vaultpress/trunk/composer.json
r2354699 r2611140 6 6 "license": "GPL-2.0-or-later", 7 7 "support": { 8 "issues": "https://github.com/Automattic/ vaultpress/issues"8 "issues": "https://github.com/Automattic/jetpack/issues" 9 9 }, 10 10 "require": { 11 "automattic/jetpack-logo": " 1.3.0",12 "automattic/jetpack-autoloader": " 1.7.0"11 "automattic/jetpack-logo": "^1.5", 12 "automattic/jetpack-autoloader": "^2.10" 13 13 }, 14 14 "require-dev": { 15 "automattic/jetpack-standards": "master-dev" 15 "yoast/phpunit-polyfills": "1.0.2", 16 "automattic/jetpack-changelogger": "^2.0" 16 17 }, 17 18 "scripts": { 18 "php:compatibility": "composer install && vendor/bin/phpcs -p -s -n --runtime-set testVersion '5.3-' --standard=PHPCompatibilityWP --ignore=docker,tools,tests,node_modules,vendor --extensions=php", 19 "php:lint": "composer install && vendor/bin/phpcs -p -s", 20 "php:autofix": "composer install && vendor/bin/phpcbf", 21 "php:lint:errors": "composer install && vendor/bin/phpcs -p -s --runtime-set ignore_warnings_on_exit 1" 19 "phpunit": [ 20 "./vendor/phpunit/phpunit/phpunit --colors=always" 21 ], 22 "test-coverage": [ 23 "@composer install", 24 "phpdbg -d memory_limit=2048M -d max_execution_time=900 -qrr ./vendor/bin/phpunit --coverage-clover \"$COVERAGE_DIR/clover.xml\"" 25 ], 26 "test-php": [ 27 "@composer install", 28 "@composer phpunit" 29 ], 30 "build-development": [ 31 "Composer\\Config::disableProcessTimeout", 32 "@clean", 33 "@composer install" 34 ], 35 "build-production": [ 36 "Composer\\Config::disableProcessTimeout", 37 "@clean", 38 "@putenv COMPOSER_MIRROR_PATH_REPOS=1", 39 "@composer install -o --no-dev --classmap-authoritative --prefer-dist" 40 ], 41 "clean": [ 42 "rm -rf vendor/" 43 ] 44 }, 45 "repositories": [], 46 "minimum-stability": "dev", 47 "prefer-stable": true, 48 "config": { 49 "autoloader-suffix": "9559eef123208b7d1b9c15b978567267_vaultpressⓥ2_2_0_beta" 50 }, 51 "extra": { 52 "mirror-repo": "Automattic/vaultpress", 53 "release-branch-prefix": "vaultpress", 54 "version-constants": { 55 "VAULTPRESS__VERSION": "vaultpress.php" 56 }, 57 "wp-plugin-slug": "vaultpress" 22 58 } 23 59 } -
vaultpress/trunk/cron-tasks.php
r2063252 r2611140 12 12 // Do 'all' actions first 13 13 if ( isset($wp_filter['all']) ) { 14 $all_args = func_get_args(); 14 15 $wp_current_filter[] = $tag; 15 $all_args = func_get_args();16 16 _wp_call_all_hook($all_args); 17 17 } -
vaultpress/trunk/readme.txt
r2354794 r2611140 49 49 50 50 == Changelog == 51 ### 2.2.0-beta - 2021-10-07 52 #### Changed 53 - Tests: update PHPUnit polyfills dependency (yoast/phpunit-polyfills). 54 - Updated package dependencies. 51 55 52 = 2.1.4 = 56 #### Removed 57 - VaultPress: Remove obsolete hotfixes 53 58 54 * Release date: August 7, 2020 55 56 ** Opcache Conflict ** 57 58 * General: Revert autoloader version to prior 1.7.0 version, to resolve an intermittent issue during the upgrade process for some users. 59 60 = 2.1.3 = 61 62 * Release date: August 6, 2020 63 64 ** Compatibility ** 65 66 * General: Handle new user meta actions. 67 * General: Implement the spread operator for our IXR class methods to match WordPress Core behavior in 5.5. 68 * General: Update some miscellaneous dependencies. 69 70 = 2.1.2 = 71 72 * Release date: Not publicly released, all changes shipped in subsequent version instead. 73 74 = 2.1.1 = 75 76 * Release date: December 10, 2019 77 78 **Compatibility** 79 80 * General: the VaultPress plugin now requires PHP 5.6, just like WordPress. 81 * General: avoid using PHP short array syntax to load plugin files. 82 83 = 2.1 = 84 85 * Release date: December 9, 2019 86 87 **Compatibility** 88 89 * General: avoid PHP deprecation notices when using a newer version of the Jetpack plugin. 90 * Admin Page: do not display a dashboard link if not registered. 91 * Admin Page: update reset settings card wording. 92 * Connect button: update link to current VaultPress page. 93 * Notices: only display notices in specific locations. 94 * Notices: update wording for the VaultPress connection notice 59 #### Fixed 60 - General: avoid PHP notices when using recent versions of PHP. 95 61 96 62 -------- 97 63 98 [See the previous changelogs here](https:// raw.githubusercontent.com/Automattic/vaultpress/master/changelog.txt).64 [See the previous changelogs here](https://github.com/Automattic/jetpack/blob/master/projects/plugins/vaultpress/CHANGELOG.md#changelog) -
vaultpress/trunk/vaultpress.php
r2354699 r2611140 4 4 * Plugin URI: http://vaultpress.com/?utm_source=plugin-uri&utm_medium=plugin-description&utm_campaign=1.0 5 5 * Description: Protect your content, themes, plugins, and settings with <strong>realtime backup</strong> and <strong>automated security scanning</strong> from <a href="http://vaultpress.com/?utm_source=wp-admin&utm_medium=plugin-description&utm_campaign=1.0" rel="nofollow">VaultPress</a>. Activate, enter your registration key, and never worry again. <a href="http://vaultpress.com/help/?utm_source=wp-admin&utm_medium=plugin-description&utm_campaign=1.0" rel="nofollow">Need some help?</a> 6 * Version: 2. 1.46 * Version: 2.2.0-beta 7 7 * Author: Automattic 8 8 * Author URI: http://vaultpress.com/?utm_source=author-uri&utm_medium=plugin-description&utm_campaign=1.0 … … 11 11 * Domain Path: /languages/ 12 12 * 13 * @package VaultPress13 * @package automattic/vaultpress 14 14 */ 15 15 … … 18 18 19 19 define( 'VAULTPRESS__MINIMUM_PHP_VERSION', '5.6' ); 20 define( 'VAULTPRESS__VERSION', '2. 1.4' );20 define( 'VAULTPRESS__VERSION', '2.2.0-beta' ); 21 21 define( 'VAULTPRESS__PLUGIN_DIR', plugin_dir_path( __FILE__ ) ); 22 22 … … 3047 3047 if ( isset( $_GET['vaultpress'] ) && $_GET['vaultpress'] ) { 3048 3048 if ( !function_exists( 'wp_magic_quotes' ) ) { 3049 // If already slashed, strip.3050 if ( get_magic_quotes_gpc() ) {3051 $_GET = stripslashes_deep( $_GET );3052 $_POST = stripslashes_deep( $_POST );3053 $_COOKIE = stripslashes_deep( $_COOKIE );3054 }3055 3056 3049 // Escape with wpdb. 3057 3050 $_GET = add_magic_quotes( $_GET ); -
vaultpress/trunk/vendor/autoload.php
r2354699 r2611140 5 5 require_once __DIR__ . '/composer/autoload_real.php'; 6 6 7 return ComposerAutoloaderInit abbe6786ee8beb5eddaaf6583db0467b::getLoader();7 return ComposerAutoloaderInit9559eef123208b7d1b9c15b978567267_vaultpressⓥ2_2_0_beta::getLoader(); -
vaultpress/trunk/vendor/autoload_packages.php
r2354699 r2611140 1 1 <?php 2 2 /** 3 * This file `autoload_packages.php`was generated by automattic/jetpack-autoloader. 4 * 5 * From your plugin include this file with: 6 * require_once . plugin_dir_path( __FILE__ ) . '/vendor/autoload_packages.php'; 3 * This file was automatically generated by automattic/jetpack-autoloader. 7 4 * 8 5 * @package automattic/jetpack-autoloader 9 6 */ 10 7 11 // phpcs:disable PHPCompatibility.LanguageConstructs.NewLanguageConstructs.t_ns_separatorFound 12 // phpcs:disable PHPCompatibility.Keywords.NewKeywords.t_namespaceFound 13 // phpcs:disable PHPCompatibility.Keywords.NewKeywords.t_ns_cFound 8 namespace Automattic\Jetpack\Autoloader\jp9559eef123208b7d1b9c15b978567267_vaultpressⓥ2_2_0_beta; 14 9 15 namespace Automattic\Jetpack\Autoloader; 10 // phpcs:ignore 16 11 17 if ( ! function_exists( __NAMESPACE__ . '\enqueue_package_class' ) ) { 18 global $jetpack_packages_classes; 19 20 if ( ! is_array( $jetpack_packages_classes ) ) { 21 $jetpack_packages_classes = array(); 22 } 23 /** 24 * Adds the version of a package to the $jetpack_packages global array so that 25 * the autoloader is able to find it. 26 * 27 * @param string $class_name Name of the class that you want to autoload. 28 * @param string $version Version of the class. 29 * @param string $path Absolute path to the class so that we can load it. 30 */ 31 function enqueue_package_class( $class_name, $version, $path ) { 32 global $jetpack_packages_classes; 33 34 if ( ! isset( $jetpack_packages_classes[ $class_name ] ) ) { 35 $jetpack_packages_classes[ $class_name ] = array( 36 'version' => $version, 37 'path' => $path, 38 ); 39 40 return; 41 } 42 // If we have a @dev version set always use that one! 43 if ( 'dev-' === substr( $jetpack_packages_classes[ $class_name ]['version'], 0, 4 ) ) { 44 return; 45 } 46 47 // Always favour the @dev version. Since that version is the same as bleeding edge. 48 // We need to make sure that we don't do this in production! 49 if ( 'dev-' === substr( $version, 0, 4 ) ) { 50 $jetpack_packages_classes[ $class_name ] = array( 51 'version' => $version, 52 'path' => $path, 53 ); 54 55 return; 56 } 57 // Set the latest version! 58 if ( version_compare( $jetpack_packages_classes[ $class_name ]['version'], $version, '<' ) ) { 59 $jetpack_packages_classes[ $class_name ] = array( 60 'version' => $version, 61 'path' => $path, 62 ); 63 } 64 } 65 } 66 67 if ( ! function_exists( __NAMESPACE__ . '\enqueue_package_file' ) ) { 68 global $jetpack_packages_files; 69 70 if ( ! is_array( $jetpack_packages_files ) ) { 71 $jetpack_packages_files = array(); 72 } 73 /** 74 * Adds the version of a package file to the $jetpack_packages_files global array so that 75 * we can load the most recent version after 'plugins_loaded'. 76 * 77 * @param string $file_identifier Unique id to file assigned by composer based on package name and filename. 78 * @param string $version Version of the file. 79 * @param string $path Absolute path to the file so that we can load it. 80 */ 81 function enqueue_package_file( $file_identifier, $version, $path ) { 82 global $jetpack_packages_files; 83 84 if ( ! isset( $jetpack_packages_files[ $file_identifier ] ) ) { 85 $jetpack_packages_files[ $file_identifier ] = array( 86 'version' => $version, 87 'path' => $path, 88 ); 89 90 return; 91 } 92 // If we have a @dev version set always use that one! 93 if ( 'dev-' === substr( $jetpack_packages_files[ $file_identifier ]['version'], 0, 4 ) ) { 94 return; 95 } 96 97 // Always favour the @dev version. Since that version is the same as bleeding edge. 98 // We need to make sure that we don't do this in production! 99 if ( 'dev-' === substr( $version, 0, 4 ) ) { 100 $jetpack_packages_files[ $file_identifier ] = array( 101 'version' => $version, 102 'path' => $path, 103 ); 104 105 return; 106 } 107 // Set the latest version! 108 if ( version_compare( $jetpack_packages_files[ $file_identifier ]['version'], $version, '<' ) ) { 109 $jetpack_packages_files[ $file_identifier ] = array( 110 'version' => $version, 111 'path' => $path, 112 ); 113 } 114 } 115 } 116 117 if ( ! function_exists( __NAMESPACE__ . '\file_loader' ) ) { 118 /** 119 * Include latest version of all enqueued files. Should be called after all plugins are loaded. 120 */ 121 function file_loader() { 122 global $jetpack_packages_files; 123 foreach ( $jetpack_packages_files as $file_identifier => $file_data ) { 124 if ( empty( $GLOBALS['__composer_autoload_files'][ $file_identifier ] ) ) { 125 require $file_data['path']; 126 127 $GLOBALS['__composer_autoload_files'][ $file_identifier ] = true; 128 } 129 } 130 } 131 } 132 133 if ( ! function_exists( __NAMESPACE__ . '\autoloader' ) ) { 134 /** 135 * Used for autoloading jetpack packages. 136 * 137 * @param string $class_name Class Name to load. 138 */ 139 function autoloader( $class_name ) { 140 global $jetpack_packages_classes; 141 142 if ( isset( $jetpack_packages_classes[ $class_name ] ) ) { 143 if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) { 144 // TODO ideally we shouldn't skip any of these, see: https://github.com/Automattic/jetpack/pull/12646. 145 $ignore = in_array( 146 $class_name, 147 array( 148 'Automattic\Jetpack\Connection\Manager', 149 'Jetpack_Options', 150 ), 151 true 152 ); 153 154 if ( ! $ignore && function_exists( 'did_action' ) && ! did_action( 'plugins_loaded' ) ) { 155 _doing_it_wrong( 156 esc_html( $class_name ), 157 sprintf( 158 /* translators: %s Name of a PHP Class */ 159 esc_html__( 'Not all plugins have loaded yet but we requested the class %s', 'jetpack' ), 160 // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped 161 $class_name 162 ), 163 esc_html( $jetpack_packages_classes[ $class_name ]['version'] ) 164 ); 165 } 166 } 167 168 require_once $jetpack_packages_classes[ $class_name ]['path']; 169 170 return true; 171 } 172 173 return false; 174 } 175 176 // Add the jetpack autoloader. 177 spl_autoload_register( __NAMESPACE__ . '\autoloader' ); 178 } 179 /** 180 * Prepare all the classes for autoloading. 181 */ 182 function enqueue_packages_dad950db79c73a765361c7b7c609843f() { 183 $class_map = require_once dirname( __FILE__ ) . '/composer/autoload_classmap_package.php'; 184 foreach ( $class_map as $class_name => $class_info ) { 185 enqueue_package_class( $class_name, $class_info['version'], $class_info['path'] ); 186 } 187 188 $autoload_file = __DIR__ . '/composer/autoload_files_package.php'; 189 190 $includeFiles = file_exists( $autoload_file ) 191 ? require $autoload_file 192 : array(); 193 194 foreach ( $includeFiles as $fileIdentifier => $file_data ) { 195 enqueue_package_file( $fileIdentifier, $file_data[ 'version' ], $file_data[ 'path' ] ); 196 } 197 198 if ( function_exists( 'has_action') && function_exists( 'did_action' ) && ! did_action( 'plugins_loaded' ) && false === has_action( 'plugins_loaded', __NAMESPACE__ . '\file_loader' ) ) { 199 // Add action if it has not been added and has not happened yet. 200 // Priority -10 to load files as early as possible in case plugins try to use them during `plugins_loaded`. 201 add_action( 'plugins_loaded', __NAMESPACE__ . '\file_loader', 0, -10 ); 202 } elseif( ! function_exists( 'did_action' ) || did_action( 'plugins_loaded' ) ) { 203 file_loader(); // Either WordPress is not loaded or plugin is doing it wrong. Either way we'll load the files so nothing breaks. 204 } 205 } 206 enqueue_packages_dad950db79c73a765361c7b7c609843f(); 12 require_once __DIR__ . '/jetpack-autoloader/class-autoloader.php'; 13 Autoloader::init(); -
vaultpress/trunk/vendor/automattic/jetpack-logo/composer.json
r2201737 r2611140 6 6 "require": {}, 7 7 "require-dev": { 8 " phpunit/phpunit": "^5.7 || ^6.5 || ^7.5",9 " php-mock/php-mock": "^2.1"8 "yoast/phpunit-polyfills": "1.0.2", 9 "automattic/jetpack-changelogger": "^2.0" 10 10 }, 11 11 "autoload": { … … 16 16 "scripts": { 17 17 "phpunit": [ 18 "@composer install",19 18 "./vendor/phpunit/phpunit/phpunit --colors=always" 19 ], 20 "test-coverage": [ 21 "@composer update", 22 "phpdbg -d memory_limit=2048M -d max_execution_time=900 -qrr ./vendor/bin/phpunit --coverage-clover \"$COVERAGE_DIR/clover.xml\"" 23 ], 24 "test-php": [ 25 "@composer update", 26 "@composer phpunit" 20 27 ] 21 28 }, 29 "repositories": [], 22 30 "minimum-stability": "dev", 23 "prefer-stable": true 31 "prefer-stable": true, 32 "extra": { 33 "autotagger": true, 34 "mirror-repo": "Automattic/jetpack-logo", 35 "changelogger": { 36 "link-template": "https://github.com/Automattic/jetpack-logo/compare/v${old}...v${new}" 37 }, 38 "branch-alias": { 39 "dev-master": "1.5.x-dev" 40 } 41 } 24 42 } -
vaultpress/trunk/vendor/automattic/jetpack-logo/src/class-logo.php
r2353267 r2611140 46 46 * Return string containing the Jetpack logo. 47 47 * 48 * @since 7.5.0 48 * @since 1.1.4 49 * @since-jetpack 7.5.0 49 50 * 50 51 * @param bool $logotype Should we use the full logotype (logo + text). Default to false. -
vaultpress/trunk/vendor/composer/ClassLoader.php
r2120238 r2611140 38 38 * @author Fabien Potencier <[email protected]> 39 39 * @author Jordi Boggiano <[email protected]> 40 * @see http ://www.php-fig.org/psr/psr-0/41 * @see http ://www.php-fig.org/psr/psr-4/40 * @see https://www.php-fig.org/psr/psr-0/ 41 * @see https://www.php-fig.org/psr/psr-4/ 42 42 */ 43 43 class ClassLoader 44 44 { 45 /** @var ?string */ 46 private $vendorDir; 47 45 48 // PSR-4 49 /** 50 * @var array[] 51 * @psalm-var array<string, array<string, int>> 52 */ 46 53 private $prefixLengthsPsr4 = array(); 54 /** 55 * @var array[] 56 * @psalm-var array<string, array<int, string>> 57 */ 47 58 private $prefixDirsPsr4 = array(); 59 /** 60 * @var array[] 61 * @psalm-var array<string, string> 62 */ 48 63 private $fallbackDirsPsr4 = array(); 49 64 50 65 // PSR-0 66 /** 67 * @var array[] 68 * @psalm-var array<string, array<string, string[]>> 69 */ 51 70 private $prefixesPsr0 = array(); 71 /** 72 * @var array[] 73 * @psalm-var array<string, string> 74 */ 52 75 private $fallbackDirsPsr0 = array(); 53 76 77 /** @var bool */ 54 78 private $useIncludePath = false; 79 80 /** 81 * @var string[] 82 * @psalm-var array<string, string> 83 */ 55 84 private $classMap = array(); 85 86 /** @var bool */ 56 87 private $classMapAuthoritative = false; 88 89 /** 90 * @var bool[] 91 * @psalm-var array<string, bool> 92 */ 57 93 private $missingClasses = array(); 94 95 /** @var ?string */ 58 96 private $apcuPrefix; 59 97 98 /** 99 * @var self[] 100 */ 101 private static $registeredLoaders = array(); 102 103 /** 104 * @param ?string $vendorDir 105 */ 106 public function __construct($vendorDir = null) 107 { 108 $this->vendorDir = $vendorDir; 109 } 110 111 /** 112 * @return string[] 113 */ 60 114 public function getPrefixes() 61 115 { 62 116 if (!empty($this->prefixesPsr0)) { 63 return call_user_func_array('array_merge', $this->prefixesPsr0);117 return call_user_func_array('array_merge', array_values($this->prefixesPsr0)); 64 118 } 65 119 … … 67 121 } 68 122 123 /** 124 * @return array[] 125 * @psalm-return array<string, array<int, string>> 126 */ 69 127 public function getPrefixesPsr4() 70 128 { … … 72 130 } 73 131 132 /** 133 * @return array[] 134 * @psalm-return array<string, string> 135 */ 74 136 public function getFallbackDirs() 75 137 { … … 77 139 } 78 140 141 /** 142 * @return array[] 143 * @psalm-return array<string, string> 144 */ 79 145 public function getFallbackDirsPsr4() 80 146 { … … 82 148 } 83 149 150 /** 151 * @return string[] Array of classname => path 152 * @psalm-var array<string, string> 153 */ 84 154 public function getClassMap() 85 155 { … … 88 158 89 159 /** 90 * @param array $classMap Class to filename map 160 * @param string[] $classMap Class to filename map 161 * @psalm-param array<string, string> $classMap 162 * 163 * @return void 91 164 */ 92 165 public function addClassMap(array $classMap) … … 103 176 * appending or prepending to the ones previously set for this prefix. 104 177 * 105 * @param string $prefix The prefix 106 * @param array|string $paths The PSR-0 root directories 107 * @param bool $prepend Whether to prepend the directories 178 * @param string $prefix The prefix 179 * @param string[]|string $paths The PSR-0 root directories 180 * @param bool $prepend Whether to prepend the directories 181 * 182 * @return void 108 183 */ 109 184 public function add($prefix, $paths, $prepend = false) … … 148 223 * appending or prepending to the ones previously set for this namespace. 149 224 * 150 * @param string $prefix The prefix/namespace, with trailing '\\'151 * @param array|string $paths The PSR-4 base directories152 * @param bool $prepend Whether to prepend the directories225 * @param string $prefix The prefix/namespace, with trailing '\\' 226 * @param string[]|string $paths The PSR-4 base directories 227 * @param bool $prepend Whether to prepend the directories 153 228 * 154 229 * @throws \InvalidArgumentException 230 * 231 * @return void 155 232 */ 156 233 public function addPsr4($prefix, $paths, $prepend = false) … … 196 273 * replacing any others previously set for this prefix. 197 274 * 198 * @param string $prefix The prefix 199 * @param array|string $paths The PSR-0 base directories 275 * @param string $prefix The prefix 276 * @param string[]|string $paths The PSR-0 base directories 277 * 278 * @return void 200 279 */ 201 280 public function set($prefix, $paths) … … 212 291 * replacing any others previously set for this namespace. 213 292 * 214 * @param string $prefix The prefix/namespace, with trailing '\\'215 * @param array|string $paths The PSR-4 base directories293 * @param string $prefix The prefix/namespace, with trailing '\\' 294 * @param string[]|string $paths The PSR-4 base directories 216 295 * 217 296 * @throws \InvalidArgumentException 297 * 298 * @return void 218 299 */ 219 300 public function setPsr4($prefix, $paths) … … 235 316 * 236 317 * @param bool $useIncludePath 318 * 319 * @return void 237 320 */ 238 321 public function setUseIncludePath($useIncludePath) … … 257 340 * 258 341 * @param bool $classMapAuthoritative 342 * 343 * @return void 259 344 */ 260 345 public function setClassMapAuthoritative($classMapAuthoritative) … … 277 362 * 278 363 * @param string|null $apcuPrefix 364 * 365 * @return void 279 366 */ 280 367 public function setApcuPrefix($apcuPrefix) … … 297 384 * 298 385 * @param bool $prepend Whether to prepend the autoloader or not 386 * 387 * @return void 299 388 */ 300 389 public function register($prepend = false) 301 390 { 302 391 spl_autoload_register(array($this, 'loadClass'), true, $prepend); 392 393 if (null === $this->vendorDir) { 394 return; 395 } 396 397 if ($prepend) { 398 self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders; 399 } else { 400 unset(self::$registeredLoaders[$this->vendorDir]); 401 self::$registeredLoaders[$this->vendorDir] = $this; 402 } 303 403 } 304 404 305 405 /** 306 406 * Unregisters this instance as an autoloader. 407 * 408 * @return void 307 409 */ 308 410 public function unregister() 309 411 { 310 412 spl_autoload_unregister(array($this, 'loadClass')); 413 414 if (null !== $this->vendorDir) { 415 unset(self::$registeredLoaders[$this->vendorDir]); 416 } 311 417 } 312 418 … … 315 421 * 316 422 * @param string $class The name of the class 317 * @return bool|null True if loaded, null otherwise423 * @return true|null True if loaded, null otherwise 318 424 */ 319 425 public function loadClass($class) … … 324 430 return true; 325 431 } 432 433 return null; 326 434 } 327 435 … … 368 476 } 369 477 478 /** 479 * Returns the currently registered loaders indexed by their corresponding vendor directories. 480 * 481 * @return self[] 482 */ 483 public static function getRegisteredLoaders() 484 { 485 return self::$registeredLoaders; 486 } 487 488 /** 489 * @param string $class 490 * @param string $ext 491 * @return string|false 492 */ 370 493 private function findFileWithExtension($class, $ext) 371 494 { … … 439 562 * 440 563 * Prevents access to $this/self from included files. 564 * 565 * @param string $file 566 * @return void 567 * @private 441 568 */ 442 569 function includeFile($file) -
vaultpress/trunk/vendor/composer/autoload_classmap.php
r2201737 r2611140 8 8 return array( 9 9 'Automattic\\Jetpack\\Assets\\Logo' => $vendorDir . '/automattic/jetpack-logo/src/class-logo.php', 10 'Automattic\\Jetpack\\Autoloader\\AutoloadFileWriter' => $vendorDir . '/automattic/jetpack-autoloader/src/AutoloadFileWriter.php', 11 'Automattic\\Jetpack\\Autoloader\\AutoloadGenerator' => $vendorDir . '/automattic/jetpack-autoloader/src/AutoloadGenerator.php', 12 'Automattic\\Jetpack\\Autoloader\\AutoloadProcessor' => $vendorDir . '/automattic/jetpack-autoloader/src/AutoloadProcessor.php', 13 'Automattic\\Jetpack\\Autoloader\\CustomAutoloaderPlugin' => $vendorDir . '/automattic/jetpack-autoloader/src/CustomAutoloaderPlugin.php', 14 'Automattic\\Jetpack\\Autoloader\\ManifestGenerator' => $vendorDir . '/automattic/jetpack-autoloader/src/ManifestGenerator.php', 15 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', 10 16 ); -
vaultpress/trunk/vendor/composer/autoload_psr4.php
r2201737 r2611140 7 7 8 8 return array( 9 'VariableAnalysis\\' => array($vendorDir . '/sirbrillig/phpcs-variable-analysis/VariableAnalysis'),10 'Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\' => array($vendorDir . '/dealerdirect/phpcodesniffer-composer-installer/src'),11 'Automattic\\Jetpack\\Standards\\' => array($vendorDir . '/automattic/jetpack-standards'),12 9 'Automattic\\Jetpack\\Autoloader\\' => array($vendorDir . '/automattic/jetpack-autoloader/src'), 13 10 ); -
vaultpress/trunk/vendor/composer/autoload_real.php
r2354699 r2611140 3 3 // autoload_real.php @generated by Composer 4 4 5 class ComposerAutoloaderInit abbe6786ee8beb5eddaaf6583db0467b5 class ComposerAutoloaderInit9559eef123208b7d1b9c15b978567267_vaultpressⓥ2_2_0_beta 6 6 { 7 7 private static $loader; … … 23 23 } 24 24 25 spl_autoload_register(array('ComposerAutoloaderInit abbe6786ee8beb5eddaaf6583db0467b', 'loadClassLoader'), true, true);26 self::$loader = $loader = new \Composer\Autoload\ClassLoader( );27 spl_autoload_unregister(array('ComposerAutoloaderInit abbe6786ee8beb5eddaaf6583db0467b', 'loadClassLoader'));25 spl_autoload_register(array('ComposerAutoloaderInit9559eef123208b7d1b9c15b978567267_vaultpressⓥ2_2_0_beta', 'loadClassLoader'), true, true); 26 self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__))); 27 spl_autoload_unregister(array('ComposerAutoloaderInit9559eef123208b7d1b9c15b978567267_vaultpressⓥ2_2_0_beta', 'loadClassLoader')); 28 28 29 29 $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); 30 30 if ($useStaticLoader) { 31 require _once__DIR__ . '/autoload_static.php';31 require __DIR__ . '/autoload_static.php'; 32 32 33 call_user_func(\Composer\Autoload\ComposerStaticInit abbe6786ee8beb5eddaaf6583db0467b::getInitializer($loader));33 call_user_func(\Composer\Autoload\ComposerStaticInit9559eef123208b7d1b9c15b978567267_vaultpressⓥ2_2_0_beta::getInitializer($loader)); 34 34 } else { 35 $map = require __DIR__ . '/autoload_namespaces.php';36 foreach ($map as $namespace => $path) {37 $loader->set($namespace, $path);38 }39 40 $map = require __DIR__ . '/autoload_psr4.php';41 foreach ($map as $namespace => $path) {42 $loader->setPsr4($namespace, $path);43 }44 45 35 $classMap = require __DIR__ . '/autoload_classmap.php'; 46 36 if ($classMap) { … … 49 39 } 50 40 41 $loader->setClassMapAuthoritative(true); 51 42 $loader->register(true); 52 43 -
vaultpress/trunk/vendor/composer/autoload_static.php
r2354699 r2611140 5 5 namespace Composer\Autoload; 6 6 7 class ComposerStaticInit abbe6786ee8beb5eddaaf6583db0467b7 class ComposerStaticInit9559eef123208b7d1b9c15b978567267_vaultpressⓥ2_2_0_beta 8 8 { 9 9 public static $prefixLengthsPsr4 = array ( 10 'V' =>11 array (12 'VariableAnalysis\\' => 17,13 ),14 'D' =>15 array (16 'Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\' => 55,17 ),18 10 'A' => 19 11 array ( 20 'Automattic\\Jetpack\\Standards\\' => 29,21 12 'Automattic\\Jetpack\\Autoloader\\' => 30, 22 13 ), … … 24 15 25 16 public static $prefixDirsPsr4 = array ( 26 'VariableAnalysis\\' =>27 array (28 0 => __DIR__ . '/..' . '/sirbrillig/phpcs-variable-analysis/VariableAnalysis',29 ),30 'Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\' =>31 array (32 0 => __DIR__ . '/..' . '/dealerdirect/phpcodesniffer-composer-installer/src',33 ),34 'Automattic\\Jetpack\\Standards\\' =>35 array (36 0 => __DIR__ . '/..' . '/automattic/jetpack-standards',37 ),38 17 'Automattic\\Jetpack\\Autoloader\\' => 39 18 array ( … … 44 23 public static $classMap = array ( 45 24 'Automattic\\Jetpack\\Assets\\Logo' => __DIR__ . '/..' . '/automattic/jetpack-logo/src/class-logo.php', 25 'Automattic\\Jetpack\\Autoloader\\AutoloadFileWriter' => __DIR__ . '/..' . '/automattic/jetpack-autoloader/src/AutoloadFileWriter.php', 26 'Automattic\\Jetpack\\Autoloader\\AutoloadGenerator' => __DIR__ . '/..' . '/automattic/jetpack-autoloader/src/AutoloadGenerator.php', 27 'Automattic\\Jetpack\\Autoloader\\AutoloadProcessor' => __DIR__ . '/..' . '/automattic/jetpack-autoloader/src/AutoloadProcessor.php', 28 'Automattic\\Jetpack\\Autoloader\\CustomAutoloaderPlugin' => __DIR__ . '/..' . '/automattic/jetpack-autoloader/src/CustomAutoloaderPlugin.php', 29 'Automattic\\Jetpack\\Autoloader\\ManifestGenerator' => __DIR__ . '/..' . '/automattic/jetpack-autoloader/src/ManifestGenerator.php', 30 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', 46 31 ); 47 32 … … 49 34 { 50 35 return \Closure::bind(function () use ($loader) { 51 $loader->prefixLengthsPsr4 = ComposerStaticInit abbe6786ee8beb5eddaaf6583db0467b::$prefixLengthsPsr4;52 $loader->prefixDirsPsr4 = ComposerStaticInit abbe6786ee8beb5eddaaf6583db0467b::$prefixDirsPsr4;53 $loader->classMap = ComposerStaticInit abbe6786ee8beb5eddaaf6583db0467b::$classMap;36 $loader->prefixLengthsPsr4 = ComposerStaticInit9559eef123208b7d1b9c15b978567267_vaultpressⓥ2_2_0_beta::$prefixLengthsPsr4; 37 $loader->prefixDirsPsr4 = ComposerStaticInit9559eef123208b7d1b9c15b978567267_vaultpressⓥ2_2_0_beta::$prefixDirsPsr4; 38 $loader->classMap = ComposerStaticInit9559eef123208b7d1b9c15b978567267_vaultpressⓥ2_2_0_beta::$classMap; 54 39 55 40 }, null, ClassLoader::class); -
vaultpress/trunk/vendor/composer/installed.json
r2354699 r2611140 1 [ 2 { 3 "name": "automattic/jetpack-autoloader", 4 "version": "v1.7.0", 5 "version_normalized": "1.7.0.0", 6 "source": { 7 "type": "git", 8 "url": "https://github.com/Automattic/jetpack-autoloader.git", 9 "reference": "7c6736eeee0f9fc49fa691fe3e958725efb27ca0" 1 { 2 "packages": [ 3 { 4 "name": "automattic/jetpack-autoloader", 5 "version": "v2.10.7", 6 "version_normalized": "2.10.7.0", 7 "source": { 8 "type": "git", 9 "url": "https://github.com/Automattic/jetpack-autoloader.git", 10 "reference": "e3dfa1a2679e4b8e380bc37b722081875c84a381" 11 }, 12 "dist": { 13 "type": "zip", 14 "url": "https://api.github.com/repos/Automattic/jetpack-autoloader/zipball/e3dfa1a2679e4b8e380bc37b722081875c84a381", 15 "reference": "e3dfa1a2679e4b8e380bc37b722081875c84a381", 16 "shasum": "" 17 }, 18 "require": { 19 "composer-plugin-api": "^1.1 || ^2.0" 20 }, 21 "require-dev": { 22 "automattic/jetpack-changelogger": "^2.0", 23 "yoast/phpunit-polyfills": "1.0.2" 24 }, 25 "time": "2021-10-07T14:29:51+00:00", 26 "type": "composer-plugin", 27 "extra": { 28 "autotagger": true, 29 "class": "Automattic\\Jetpack\\Autoloader\\CustomAutoloaderPlugin", 30 "mirror-repo": "Automattic/jetpack-autoloader", 31 "changelogger": { 32 "link-template": "https://github.com/Automattic/jetpack-autoloader/compare/v${old}...v${new}" 33 }, 34 "branch-alias": { 35 "dev-master": "2.10.x-dev" 36 } 37 }, 38 "installation-source": "dist", 39 "autoload": { 40 "classmap": [ 41 "src/AutoloadGenerator.php" 42 ], 43 "psr-4": { 44 "Automattic\\Jetpack\\Autoloader\\": "src" 45 } 46 }, 47 "notification-url": "https://packagist.org/downloads/", 48 "license": [ 49 "GPL-2.0-or-later" 50 ], 51 "description": "Creates a custom autoloader for a plugin or theme.", 52 "support": { 53 "source": "https://github.com/Automattic/jetpack-autoloader/tree/v2.10.7" 54 }, 55 "install-path": "../automattic/jetpack-autoloader" 10 56 }, 11 "dist": { 12 "type": "zip", 13 "url": "https://api.github.com/repos/Automattic/jetpack-autoloader/zipball/7c6736eeee0f9fc49fa691fe3e958725efb27ca0", 14 "reference": "7c6736eeee0f9fc49fa691fe3e958725efb27ca0", 15 "shasum": "" 16 }, 17 "require": { 18 "composer-plugin-api": "^1.1" 19 }, 20 "require-dev": { 21 "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5" 22 }, 23 "time": "2020-04-23T02:28:37+00:00", 24 "type": "composer-plugin", 25 "extra": { 26 "class": "Automattic\\Jetpack\\Autoloader\\CustomAutoloaderPlugin" 27 }, 28 "installation-source": "dist", 29 "autoload": { 30 "psr-4": { 31 "Automattic\\Jetpack\\Autoloader\\": "src" 32 } 33 }, 34 "notification-url": "https://packagist.org/downloads/", 35 "license": [ 36 "GPL-2.0-or-later" 37 ], 38 "description": "Creates a custom autoloader for a plugin or theme." 39 }, 40 { 41 "name": "automattic/jetpack-logo", 42 "version": "v1.2.0", 43 "version_normalized": "1.2.0.0", 44 "source": { 45 "type": "git", 46 "url": "https://github.com/Automattic/jetpack-logo.git", 47 "reference": "d7840f25d7836ab69de979bcb67e8190220e53a3" 48 }, 49 "dist": { 50 "type": "zip", 51 "url": "https://api.github.com/repos/Automattic/jetpack-logo/zipball/d7840f25d7836ab69de979bcb67e8190220e53a3", 52 "reference": "d7840f25d7836ab69de979bcb67e8190220e53a3", 53 "shasum": "" 54 }, 55 "require-dev": { 56 "php-mock/php-mock": "^2.1", 57 "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5" 58 }, 59 "time": "2020-03-27T21:57:58+00:00", 60 "type": "library", 61 "installation-source": "dist", 62 "autoload": { 63 "classmap": [ 64 "src/" 65 ] 66 }, 67 "notification-url": "https://packagist.org/downloads/", 68 "license": [ 69 "GPL-2.0-or-later" 70 ], 71 "description": "A logo for Jetpack" 72 }, 73 { 74 "name": "automattic/jetpack-standards", 75 "version": "dev-master", 76 "version_normalized": "9999999-dev", 77 "source": { 78 "type": "git", 79 "url": "https://github.com/Automattic/jetpack-standards.git", 80 "reference": "1453b5eafe67bc82d0361e4d76a113cbd11c8149" 81 }, 82 "dist": { 83 "type": "zip", 84 "url": "https://api.github.com/repos/Automattic/jetpack-standards/zipball/1453b5eafe67bc82d0361e4d76a113cbd11c8149", 85 "reference": "1453b5eafe67bc82d0361e4d76a113cbd11c8149", 86 "shasum": "" 87 }, 88 "require": { 89 "composer-plugin-api": "^1.1", 90 "dealerdirect/phpcodesniffer-composer-installer": "0.5.0", 91 "phpcompatibility/phpcompatibility-wp": "2.0.0", 92 "sirbrillig/phpcs-variable-analysis": "2.6.4", 93 "wp-coding-standards/wpcs": "2.1.1" 94 }, 95 "time": "2019-05-21T18:08:46+00:00", 96 "type": "composer-plugin", 97 "extra": { 98 "class": "Automattic\\Jetpack\\Standards\\PostInstall" 99 }, 100 "installation-source": "source", 101 "autoload": { 102 "psr-4": { 103 "Automattic\\Jetpack\\Standards\\": "" 104 } 105 }, 106 "notification-url": "https://packagist.org/downloads/", 107 "license": [ 108 "GPL-2.0-or-later" 109 ], 110 "description": "Adds basic Jetpack standards to a project." 111 }, 112 { 113 "name": "dealerdirect/phpcodesniffer-composer-installer", 114 "version": "v0.5.0", 115 "version_normalized": "0.5.0.0", 116 "source": { 117 "type": "git", 118 "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git", 119 "reference": "e749410375ff6fb7a040a68878c656c2e610b132" 120 }, 121 "dist": { 122 "type": "zip", 123 "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/e749410375ff6fb7a040a68878c656c2e610b132", 124 "reference": "e749410375ff6fb7a040a68878c656c2e610b132", 125 "shasum": "" 126 }, 127 "require": { 128 "composer-plugin-api": "^1.0", 129 "php": "^5.3|^7", 130 "squizlabs/php_codesniffer": "^2|^3" 131 }, 132 "require-dev": { 133 "composer/composer": "*", 134 "phpcompatibility/php-compatibility": "^9.0", 135 "sensiolabs/security-checker": "^4.1.0" 136 }, 137 "time": "2018-10-26T13:21:45+00:00", 138 "type": "composer-plugin", 139 "extra": { 140 "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" 141 }, 142 "installation-source": "dist", 143 "autoload": { 144 "psr-4": { 145 "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" 146 } 147 }, 148 "notification-url": "https://packagist.org/downloads/", 149 "license": [ 150 "MIT" 151 ], 152 "authors": [ 153 { 154 "name": "Franck Nijhof", 155 "email": "[email protected]", 156 "homepage": "http://www.frenck.nl", 157 "role": "Developer / IT Manager" 158 } 159 ], 160 "description": "PHP_CodeSniffer Standards Composer Installer Plugin", 161 "homepage": "http://www.dealerdirect.com", 162 "keywords": [ 163 "PHPCodeSniffer", 164 "PHP_CodeSniffer", 165 "code quality", 166 "codesniffer", 167 "composer", 168 "installer", 169 "phpcs", 170 "plugin", 171 "qa", 172 "quality", 173 "standard", 174 "standards", 175 "style guide", 176 "stylecheck", 177 "tests" 178 ] 179 }, 180 { 181 "name": "phpcompatibility/php-compatibility", 182 "version": "9.3.4", 183 "version_normalized": "9.3.4.0", 184 "source": { 185 "type": "git", 186 "url": "https://github.com/PHPCompatibility/PHPCompatibility.git", 187 "reference": "1f37659196e4f3113ea506a7efba201c52303bf1" 188 }, 189 "dist": { 190 "type": "zip", 191 "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/1f37659196e4f3113ea506a7efba201c52303bf1", 192 "reference": "1f37659196e4f3113ea506a7efba201c52303bf1", 193 "shasum": "" 194 }, 195 "require": { 196 "php": ">=5.3", 197 "squizlabs/php_codesniffer": "^2.3 || ^3.0.2" 198 }, 199 "conflict": { 200 "squizlabs/php_codesniffer": "2.6.2" 201 }, 202 "require-dev": { 203 "phpunit/phpunit": "~4.5 || ^5.0 || ^6.0 || ^7.0" 204 }, 205 "suggest": { 206 "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically.", 207 "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." 208 }, 209 "time": "2019-11-15T04:12:02+00:00", 210 "type": "phpcodesniffer-standard", 211 "installation-source": "dist", 212 "notification-url": "https://packagist.org/downloads/", 213 "license": [ 214 "LGPL-3.0-or-later" 215 ], 216 "authors": [ 217 { 218 "name": "Wim Godden", 219 "homepage": "https://github.com/wimg", 220 "role": "lead" 57 { 58 "name": "automattic/jetpack-logo", 59 "version": "v1.5.8", 60 "version_normalized": "1.5.8.0", 61 "source": { 62 "type": "git", 63 "url": "https://github.com/Automattic/jetpack-logo.git", 64 "reference": "c3045c4aa008507a13ee02ae5035dc91b3ff3ae4" 221 65 }, 222 { 223 "name": "Juliette Reinders Folmer", 224 "homepage": "https://github.com/jrfnl", 225 "role": "lead" 66 "dist": { 67 "type": "zip", 68 "url": "https://api.github.com/repos/Automattic/jetpack-logo/zipball/c3045c4aa008507a13ee02ae5035dc91b3ff3ae4", 69 "reference": "c3045c4aa008507a13ee02ae5035dc91b3ff3ae4", 70 "shasum": "" 226 71 }, 227 { 228 "name": "Contributors", 229 "homepage": "https://github.com/PHPCompatibility/PHPCompatibility/graphs/contributors" 230 } 231 ], 232 "description": "A set of sniffs for PHP_CodeSniffer that checks for PHP cross-version compatibility.", 233 "homepage": "http://techblog.wimgodden.be/tag/codesniffer/", 234 "keywords": [ 235 "compatibility", 236 "phpcs", 237 "standards" 238 ] 239 }, 240 { 241 "name": "phpcompatibility/phpcompatibility-paragonie", 242 "version": "1.3.0", 243 "version_normalized": "1.3.0.0", 244 "source": { 245 "type": "git", 246 "url": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie.git", 247 "reference": "b862bc32f7e860d0b164b199bd995e690b4b191c" 248 }, 249 "dist": { 250 "type": "zip", 251 "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityParagonie/zipball/b862bc32f7e860d0b164b199bd995e690b4b191c", 252 "reference": "b862bc32f7e860d0b164b199bd995e690b4b191c", 253 "shasum": "" 254 }, 255 "require": { 256 "phpcompatibility/php-compatibility": "^9.0" 257 }, 258 "require-dev": { 259 "dealerdirect/phpcodesniffer-composer-installer": "^0.5", 260 "paragonie/random_compat": "dev-master", 261 "paragonie/sodium_compat": "dev-master" 262 }, 263 "suggest": { 264 "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.", 265 "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." 266 }, 267 "time": "2019-11-04T15:17:54+00:00", 268 "type": "phpcodesniffer-standard", 269 "installation-source": "dist", 270 "notification-url": "https://packagist.org/downloads/", 271 "license": [ 272 "LGPL-3.0-or-later" 273 ], 274 "authors": [ 275 { 276 "name": "Wim Godden", 277 "role": "lead" 72 "require-dev": { 73 "automattic/jetpack-changelogger": "^2.0", 74 "yoast/phpunit-polyfills": "1.0.2" 278 75 }, 279 { 280 "name": "Juliette Reinders Folmer", 281 "role": "lead" 282 } 283 ], 284 "description": "A set of rulesets for PHP_CodeSniffer to check for PHP cross-version compatibility issues in projects, while accounting for polyfills provided by the Paragonie polyfill libraries.", 285 "homepage": "http://phpcompatibility.com/", 286 "keywords": [ 287 "compatibility", 288 "paragonie", 289 "phpcs", 290 "polyfill", 291 "standards" 292 ] 293 }, 294 { 295 "name": "phpcompatibility/phpcompatibility-wp", 296 "version": "2.0.0", 297 "version_normalized": "2.0.0.0", 298 "source": { 299 "type": "git", 300 "url": "https://github.com/PHPCompatibility/PHPCompatibilityWP.git", 301 "reference": "cb303f0067cd5b366a41d4fb0e254fb40ff02efd" 302 }, 303 "dist": { 304 "type": "zip", 305 "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityWP/zipball/cb303f0067cd5b366a41d4fb0e254fb40ff02efd", 306 "reference": "cb303f0067cd5b366a41d4fb0e254fb40ff02efd", 307 "shasum": "" 308 }, 309 "require": { 310 "phpcompatibility/php-compatibility": "^9.0", 311 "phpcompatibility/phpcompatibility-paragonie": "^1.0" 312 }, 313 "require-dev": { 314 "dealerdirect/phpcodesniffer-composer-installer": "^0.4.3" 315 }, 316 "suggest": { 317 "dealerdirect/phpcodesniffer-composer-installer": "^0.4.3 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.", 318 "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." 319 }, 320 "time": "2018-10-07T18:31:37+00:00", 321 "type": "phpcodesniffer-standard", 322 "installation-source": "dist", 323 "notification-url": "https://packagist.org/downloads/", 324 "license": [ 325 "LGPL-3.0-or-later" 326 ], 327 "authors": [ 328 { 329 "name": "Wim Godden", 330 "role": "lead" 76 "time": "2021-10-07T14:29:57+00:00", 77 "type": "library", 78 "extra": { 79 "autotagger": true, 80 "mirror-repo": "Automattic/jetpack-logo", 81 "changelogger": { 82 "link-template": "https://github.com/Automattic/jetpack-logo/compare/v${old}...v${new}" 83 }, 84 "branch-alias": { 85 "dev-master": "1.5.x-dev" 86 } 331 87 }, 332 { 333 "name": "Juliette Reinders Folmer", 334 "role": "lead" 335 } 336 ], 337 "description": "A ruleset for PHP_CodeSniffer to check for PHP cross-version compatibility issues in projects, while accounting for polyfills provided by WordPress.", 338 "homepage": "http://phpcompatibility.com/", 339 "keywords": [ 340 "compatibility", 341 "phpcs", 342 "standards", 343 "wordpress" 344 ] 345 }, 346 { 347 "name": "sirbrillig/phpcs-variable-analysis", 348 "version": "v2.6.4", 349 "version_normalized": "2.6.4.0", 350 "source": { 351 "type": "git", 352 "url": "https://github.com/sirbrillig/phpcs-variable-analysis.git", 353 "reference": "fd217f2077fbcc287aded2b52147e68d208ace4b" 354 }, 355 "dist": { 356 "type": "zip", 357 "url": "https://api.github.com/repos/sirbrillig/phpcs-variable-analysis/zipball/fd217f2077fbcc287aded2b52147e68d208ace4b", 358 "reference": "fd217f2077fbcc287aded2b52147e68d208ace4b", 359 "shasum": "" 360 }, 361 "require": { 362 "php": ">=5.6.0" 363 }, 364 "require-dev": { 365 "dealerdirect/phpcodesniffer-composer-installer": "^0.4.4", 366 "limedeck/phpunit-detailed-printer": "^3.1", 367 "phpunit/phpunit": "^6.5", 368 "sirbrillig/phpcs-import-detection": "^1.1", 369 "squizlabs/php_codesniffer": "^3.1" 370 }, 371 "time": "2019-05-10T21:08:30+00:00", 372 "type": "phpcodesniffer-standard", 373 "installation-source": "dist", 374 "autoload": { 375 "psr-4": { 376 "VariableAnalysis\\": "VariableAnalysis/" 377 } 378 }, 379 "notification-url": "https://packagist.org/downloads/", 380 "license": [ 381 "BSD-2-Clause" 382 ], 383 "authors": [ 384 { 385 "name": "Payton Swick", 386 "email": "[email protected]" 88 "installation-source": "dist", 89 "autoload": { 90 "classmap": [ 91 "src/" 92 ] 387 93 }, 388 { 389 "name": "Sam Graham", 390 "email": "[email protected]" 391 } 392 ], 393 "description": "A PHPCS sniff to detect problems with variables." 394 }, 395 { 396 "name": "squizlabs/php_codesniffer", 397 "version": "3.5.3", 398 "version_normalized": "3.5.3.0", 399 "source": { 400 "type": "git", 401 "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", 402 "reference": "557a1fc7ac702c66b0bbfe16ab3d55839ef724cb" 403 }, 404 "dist": { 405 "type": "zip", 406 "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/557a1fc7ac702c66b0bbfe16ab3d55839ef724cb", 407 "reference": "557a1fc7ac702c66b0bbfe16ab3d55839ef724cb", 408 "shasum": "" 409 }, 410 "require": { 411 "ext-simplexml": "*", 412 "ext-tokenizer": "*", 413 "ext-xmlwriter": "*", 414 "php": ">=5.4.0" 415 }, 416 "require-dev": { 417 "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" 418 }, 419 "time": "2019-12-04T04:46:47+00:00", 420 "bin": [ 421 "bin/phpcs", 422 "bin/phpcbf" 423 ], 424 "type": "library", 425 "extra": { 426 "branch-alias": { 427 "dev-master": "3.x-dev" 428 } 429 }, 430 "installation-source": "dist", 431 "notification-url": "https://packagist.org/downloads/", 432 "license": [ 433 "BSD-3-Clause" 434 ], 435 "authors": [ 436 { 437 "name": "Greg Sherwood", 438 "role": "lead" 439 } 440 ], 441 "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", 442 "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", 443 "keywords": [ 444 "phpcs", 445 "standards" 446 ] 447 }, 448 { 449 "name": "wp-coding-standards/wpcs", 450 "version": "2.1.1", 451 "version_normalized": "2.1.1.0", 452 "source": { 453 "type": "git", 454 "url": "https://github.com/WordPress/WordPress-Coding-Standards.git", 455 "reference": "bd9c33152115e6741e3510ff7189605b35167908" 456 }, 457 "dist": { 458 "type": "zip", 459 "url": "https://api.github.com/repos/WordPress/WordPress-Coding-Standards/zipball/bd9c33152115e6741e3510ff7189605b35167908", 460 "reference": "bd9c33152115e6741e3510ff7189605b35167908", 461 "shasum": "" 462 }, 463 "require": { 464 "php": ">=5.4", 465 "squizlabs/php_codesniffer": "^3.3.1" 466 }, 467 "require-dev": { 468 "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0", 469 "phpcompatibility/php-compatibility": "^9.0", 470 "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" 471 }, 472 "suggest": { 473 "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically." 474 }, 475 "time": "2019-05-21T02:50:00+00:00", 476 "type": "phpcodesniffer-standard", 477 "installation-source": "dist", 478 "notification-url": "https://packagist.org/downloads/", 479 "license": [ 480 "MIT" 481 ], 482 "authors": [ 483 { 484 "name": "Contributors", 485 "homepage": "https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/graphs/contributors" 486 } 487 ], 488 "description": "PHP_CodeSniffer rules (sniffs) to enforce WordPress coding conventions", 489 "keywords": [ 490 "phpcs", 491 "standards", 492 "wordpress" 493 ] 494 } 495 ] 94 "notification-url": "https://packagist.org/downloads/", 95 "license": [ 96 "GPL-2.0-or-later" 97 ], 98 "description": "A logo for Jetpack", 99 "support": { 100 "source": "https://github.com/Automattic/jetpack-logo/tree/v1.5.8" 101 }, 102 "install-path": "../automattic/jetpack-logo" 103 } 104 ], 105 "dev": false, 106 "dev-package-names": [] 107 }
Note: See TracChangeset
for help on using the changeset viewer.