Changeset 10180 for sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-block-validator.php
- Timestamp:
- 08/19/2020 03:06:29 AM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-block-validator.php
r10173 r10180 29 29 </form> 30 30 31 32 <details> 33 <summary>Or upload a plugin ZIP file.</summary> 34 <form id="upload_form" class="plugin-upload-form" enctype="multipart/form-data" method="POST" action=""> 35 <?php wp_nonce_field( 'wporg-block-upload', 'block-upload-nonce' ); ?> 36 <input type="hidden" name="action" value="upload"/> 37 38 <input type="file" id="zip_file" class="plugin-file" name="zip_file" size="25" accept=".zip"/> 39 <label class="button button-secondary" for="zip_file"><?php _e( 'Select File', 'wporg-plugins' ); ?></label> 40 41 <input id="upload_button" name="block-directory-upload" class="button button-primary" type="submit" value="<?php esc_attr_e( 'Upload', 'wporg-plugins' ); ?>"/> 42 43 <p> 44 <small> 45 <?php 46 printf( 47 /* translators: Maximum allowed file size. */ 48 esc_html__( 'Maximum allowed file size: %s', 'wporg-plugins' ), 49 esc_html( size_format( wp_max_upload_size() ) ) 50 ); 51 ?> 52 </small> 53 </p> 54 </form> 55 56 <?php 57 $upload_script = ' 58 ( function ( $ ) { 59 var $label = $( "label.button" ), 60 labelText = $label.text(); 61 $( "#zip_file" ) 62 .on( "change", function( event ) { 63 var fileName = event.target.value.split( "\\\\" ).pop(); 64 fileName ? $label.text( fileName ) : $label.text( labelText ); 65 } ) 66 .on( "focus", function() { $label.addClass( "focus" ); } ) 67 .on( "blur", function() { $label.removeClass( "focus" ); } ); 68 } ( window.jQuery ) );'; 69 70 if ( ! wp_script_is( 'jquery', 'done' ) ) { 71 wp_enqueue_script( 'jquery' ); 72 wp_add_inline_script( 'jquery-migrate', $upload_script ); 73 } else { 74 printf( '<script>%s</script>', $upload_script ); 75 } 76 ?> 77 </details> 31 78 <?php 79 32 80 if ( $_POST && ! empty( $_POST['plugin_url'] ) && wp_verify_nonce( $_POST['block-nonce'], 'validate-block-plugin' ) ) { 33 81 self::validate_block( $_POST['plugin_url'] ); 82 } elseif ( $_POST && ! empty( $_POST['block-directory-upload'] ) ) { 83 self::handle_file_upload(); 34 84 } elseif ( $_POST && ! empty( $_POST['block-directory-edit'] ) ) { 35 $post = get_post( intval( $_POST['plugin-id'] ) ); 36 if ( $post && wp_verify_nonce( $_POST['block-directory-nonce'], 'block-directory-edit-' . $post->ID ) ) { 37 if ( current_user_can( 'edit_post', $post->ID ) || current_user_can( 'plugin_admin_edit', $post->ID ) ) { 38 $terms = wp_list_pluck( get_the_terms( $post->ID, 'plugin_section' ), 'slug' ); 39 if ( 'add' === $_POST['block-directory-edit'] ) { 40 $terms[] = 'block'; 41 } elseif ( 'remove' === $_POST['block-directory-edit'] ) { 42 $terms = array_diff( $terms, array( 'block' ) ); 43 } 44 $result = wp_set_object_terms( $post->ID, $terms, 'plugin_section' ); 45 if ( !is_wp_error( $result ) && !empty( $result ) ) { 46 if ( 'add' === $_POST['block-directory-edit'] ) { 47 Tools::audit_log( 'Plugin added to block directory.', $post->ID ); 48 self::maybe_send_email_plugin_added( $post ); 49 Plugin_Import::queue( $post->post_name, array( 'tags_touched' => array( $post->stable_tag ) ) ); 50 echo '<div class="notice notice-success notice-alt"><p>' . __( 'Plugin added to the block directory.', 'wporg-plugins' ) . '</p></div>'; 51 } elseif ( 'remove' === $_POST['block-directory-edit'] ) { 52 Tools::audit_log( 'Plugin removed from block directory.', $post->ID ); 53 echo '<div class="notice notice-info notice-alt"><p>' . __( 'Plugin removed from the block directory.', 'wporg-plugins' ) . '</p></div>'; 54 } 55 } 56 } 57 58 self::validate_block( $post->post_name ); 59 } 85 self::handle_edit_form(); 60 86 } 61 87 ?> … … 69 95 } 70 96 97 protected static function handle_file_upload() { 98 if ( 99 ! empty( $_POST['block-upload-nonce'] ) 100 && wp_verify_nonce( $_POST['block-upload-nonce'], 'wporg-block-upload' ) 101 && 'upload' === $_POST['action'] 102 ) { 103 if ( UPLOAD_ERR_OK === $_FILES['zip_file']['error'] ) { 104 self::validate_block_from_zip( $_FILES['zip_file']['tmp_name'] ); 105 } else { 106 $message = __( 'Error in file upload.', 'wporg-plugins' ); 107 } 108 109 if ( ! empty( $message ) ) { 110 echo "<div class='notice notice-warning notice-alt'><p>{$message}</p></div>\n"; 111 } 112 } 113 114 } 115 116 protected static function handle_edit_form() { 117 $post = get_post( intval( $_POST['plugin-id'] ) ); 118 if ( $post && wp_verify_nonce( $_POST['block-directory-nonce'], 'block-directory-edit-' . $post->ID ) ) { 119 if ( current_user_can( 'edit_post', $post->ID ) || current_user_can( 'plugin_admin_edit', $post->ID ) ) { 120 $terms = wp_list_pluck( get_the_terms( $post->ID, 'plugin_section' ), 'slug' ); 121 if ( 'add' === $_POST['block-directory-edit'] ) { 122 $terms[] = 'block'; 123 } elseif ( 'remove' === $_POST['block-directory-edit'] ) { 124 $terms = array_diff( $terms, array( 'block' ) ); 125 } 126 $result = wp_set_object_terms( $post->ID, $terms, 'plugin_section' ); 127 if ( !is_wp_error( $result ) && !empty( $result ) ) { 128 if ( 'add' === $_POST['block-directory-edit'] ) { 129 Tools::audit_log( 'Plugin added to block directory.', $post->ID ); 130 self::maybe_send_email_plugin_added( $post ); 131 Plugin_Import::queue( $post->post_name, array( 'tags_touched' => array( $post->stable_tag ) ) ); 132 echo '<div class="notice notice-success notice-alt"><p>' . __( 'Plugin added to the block directory.', 'wporg-plugins' ) . '</p></div>'; 133 } elseif ( 'remove' === $_POST['block-directory-edit'] ) { 134 Tools::audit_log( 'Plugin removed from block directory.', $post->ID ); 135 echo '<div class="notice notice-info notice-alt"><p>' . __( 'Plugin removed from the block directory.', 'wporg-plugins' ) . '</p></div>'; 136 } 137 } 138 } 139 140 return self::validate_block( $post->post_name ); 141 } 142 } 143 71 144 protected static function plugin_is_in_block_directory( $slug ) { 72 145 $plugin = Plugin_Directory::get_plugin_post( $slug ); … … 108 181 */ 109 182 protected static function validate_block( $plugin_url ) { 110 111 183 $checker = new Block_Plugin_Checker(); 112 184 $results = $checker->run_check_plugin_repo( $plugin_url ); 185 self::display_results( $checker ); 186 } 187 188 /** 189 * Validates a block plugin to check that blocks are correctly registered and detectable. 190 * 191 * @param string $plugin_url The URL of a Subversion or GitHub repository. 192 */ 193 protected static function validate_block_from_zip( $zip_file ) { 194 $path = Tools\Filesystem::unzip( $zip_file ); 195 $checker = new Block_Plugin_Checker(); 196 $results = $checker->run_check_plugin_files( $path ); 197 self::display_results( $checker ); 198 } 199 200 /** 201 * Display the results of a Block_Plugin_Checker run. 202 * 203 * @param array $results The Block_Plugin_Checker output. 204 */ 205 protected static function display_results( $checker ) { 113 206 114 207 echo '<h2>' . __( 'Results', 'wporg-plugins' ) . '</h2>'; 208 209 $results = $checker->get_results(); 115 210 116 211 if ( $checker->repo_url && $checker->repo_revision ) {
Note: See TracChangeset
for help on using the changeset viewer.