diff options
| Commit | 1c86fe831289eee3d3c2c963885fd553f40f81d2 (patch) | |
|---|---|---|
| Author | 2020-07-15 20:43:05 +0300 | |
| Committer | 2020-07-15 20:43:05 +0300 | |
| Files | 1dc3d183affddf9c040eba8b9ec1e60c9e002d90 /wp-content/plugins | |
| tues-interns-2020-feature/offers-grid.tar tues-interns-2020-feature/offers-grid.tar.gz tues-interns-2020-feature/offers-grid.zip | ||
| Parent | 333668c49e98cdfc84cf0702f289bd149fc5fd25 (diff) | |
[fix] bring changes from master feature/offers-grid
13 files changed, 532 insertions, 137 deletions
| -rw-r--r-- | wp-content/plugins/dx-cars/class.cpt.php | 23 | ||||
| -rw-r--r-- | wp-content/plugins/dx-cars/dx-cars.php | 14 | ||||
| -rw-r--r-- | wp-content/plugins/dx-users/dx-users.php | 21 | ||||
| -rw-r--r-- | wp-content/plugins/dx-users/login-user-class.php | 24 | ||||
| -rw-r--r-- | wp-content/plugins/dx-users/register-user-class.php | 31 | ||||
| -rw-r--r-- | wp-content/plugins/dx-vehicles/dx-vehicles.php | 26 | ||||
| -rw-r--r-- | wp-content/plugins/dx-vehicles/search-class.php | 111 | ||||
| -rw-r--r-- | wp-content/plugins/dx-vehicles/taxonomies-hierarchical-class.php | 65 | ||||
| -rw-r--r-- | wp-content/plugins/dx-vehicles/taxonomies-non-hierarchical-class.php | 93 | ||||
| -rw-r--r-- | wp-content/plugins/dx-vehicles/vehicle-info-display-callback.php | 35 | ||||
| -rw-r--r-- | wp-content/plugins/dx-vehicles/vehicles-class.php | 124 | ||||
| -rw-r--r-- | wp-content/plugins/hello.php | 100 | ||||
| -rw-r--r-- | wp-content/plugins/index.php | 2 |
diff --git a/wp-content/plugins/dx-cars/class.cpt.php b/wp-content/plugins/dx-cars/class.cpt.php deleted file mode 100644 index 378a082..0000000 --- a/wp-content/plugins/dx-cars/class.cpt.php +++ /dev/null @@ -1,23 +0,0 @@ -<?php -class Vehicles { - function init() { - add_action( 'init', array( $this, 'cpt_create' ) ); - } - - public function labels() { - $arr = array( - 'labels' => array( - 'name' => __( 'Vehicles' ), - 'singular_name' => __( 'Vehicle' ) - ), - 'public' => true, - 'has_archive' => true, - 'rewrite' => array( 'slug' => 'vehicles' ), - 'show_in_rest' => true, ); - return $arr; - } - - function cpt_create() { - register_post_type( 'vehicles', $this->labels() ); - } -} diff --git a/wp-content/plugins/dx-cars/dx-cars.php b/wp-content/plugins/dx-cars/dx-cars.php deleted file mode 100644 index 90cc6ec..0000000 --- a/wp-content/plugins/dx-cars/dx-cars.php +++ /dev/null @@ -1,14 +0,0 @@ -<?php -/** - * Plugin Name: DX Cars - * Plugin URI: https://devrix.com - * Description: Plugin for handling cars - * Version: 0.1 - * Author: DevriX-interns-2020 - * Author URI: https://devrix.com - * Text Domain: dx-cars - */ - include 'class.cpt.php'; - - $cars = new Vehicles; - $cars->init(); diff --git a/wp-content/plugins/dx-users/dx-users.php b/wp-content/plugins/dx-users/dx-users.php new file mode 100644 index 0000000..2d47e6a --- /dev/null +++ b/wp-content/plugins/dx-users/dx-users.php @@ -0,0 +1,21 @@ +<?php +/** + * Plugin Name: DX Users + * Plugin URI: https://devrix.com + * Description: Plugin for handling user login and register + * Version: 0.1 + * Author: DevriX-interns-2020 + * Author URI: https://devrix.com + * Text Domain: dx-users + */ + +defined( 'ABSPATH' ) or die( 'No script kiddies please!' ); + +include 'login-user-class.php'; +include 'register-user-class.php'; + +$login_user = new LoginUser; +$register_user = new RegisterUser; + +$login_user->init(); +$register_user->init(); diff --git a/wp-content/plugins/dx-users/login-user-class.php b/wp-content/plugins/dx-users/login-user-class.php new file mode 100644 index 0000000..7bc4f1e --- /dev/null +++ b/wp-content/plugins/dx-users/login-user-class.php @@ -0,0 +1,24 @@ +<?php +class LoginUser { + function init() { + add_action( 'admin_post_nopriv_process_login', array($this, 'try_login_user' )); + } + + function try_login_user() { + $creds = array( + 'user_login' => sanitize_text_field( $_POST['email'] ), + 'user_password' => sanitize_text_field( $_POST['password'] ), + 'remember' => true + ); + + $user = wp_signon( $creds ); + + if ( is_wp_error( $user ) ) { + wp_die( $user->get_error_message() ); + } + + wp_set_current_user( $user->data->ID ); + + wp_redirect( home_url() ); exit; + } +} diff --git a/wp-content/plugins/dx-users/register-user-class.php b/wp-content/plugins/dx-users/register-user-class.php new file mode 100644 index 0000000..bbadf3c --- /dev/null +++ b/wp-content/plugins/dx-users/register-user-class.php @@ -0,0 +1,31 @@ +<?php +class RegisterUser { + function init() { + add_action( 'admin_post_nopriv_process_register', array( $this, 'process_register_data' )); + } + + function process_register_data() { + if( username_exists( sanitize_text_field( $_POST['password'] ) ) ) { + wp_die( 'User already exists!' ); + } + + $user_data = array( + 'user_pass' => sanitize_text_field( $_POST['password'] ), + 'user_login' => sanitize_text_field( $_POST['email'] ), + 'user_email' => sanitize_text_field( $_POST['email'] ), + 'display_name' => sanitize_text_field( $_POST['name'] ), + ); + + if( ! is_email( $user_data['user_email'] ) ) { + wp_die( 'Invaid email address!' ); + } + + $user_id = wp_insert_user( $user_data ); + + if( is_wp_error( $user_id ) ) { + wp_die( $user_id->get_error_message() ); + } + + wp_redirect( home_url() ); exit; + } +} diff --git a/wp-content/plugins/dx-vehicles/dx-vehicles.php b/wp-content/plugins/dx-vehicles/dx-vehicles.php new file mode 100644 index 0000000..8ad9496 --- /dev/null +++ b/wp-content/plugins/dx-vehicles/dx-vehicles.php @@ -0,0 +1,26 @@ +<?php +/** + * Plugin Name: DX Vehicles + * Plugin URI: https://devrix.com + * Description: Plugin for handling vehicles + * Version: 0.2 + * Author: DevriX-interns-2020 + * Author URI: https://devrix.com + * Text Domain: dx-vehicles + */ + +defined( 'ABSPATH' ) or die( 'No script kiddies please!' ); + +include 'taxonomies-non-hierarchical-class.php'; +include 'taxonomies-hierarchical-class.php'; +include 'vehicles-class.php'; +include 'search-class.php'; + +$cars = new Vehicles; +$tax = new Taxonomies; +$tax1 = new TaxonomiesHierarchical; +$search = new Search; +$cars->init(); +$tax->init(); +$tax1->init(); +$search->init(); diff --git a/wp-content/plugins/dx-vehicles/search-class.php b/wp-content/plugins/dx-vehicles/search-class.php new file mode 100644 index 0000000..cab5544 --- /dev/null +++ b/wp-content/plugins/dx-vehicles/search-class.php @@ -0,0 +1,111 @@ +<?php +class Search { + function init() { + add_action( 'pre_get_posts', array( $this, 'pre_get_posts' ), 1 ); + + add_filter( 'query_vars', array( $this, 'register_query_vars' ) ); + } + + static $tax_vars = array( // tax_name (what is in the request) => tax_key (what is in the database, only hierarchical taxonomies are different from tax_name ) + 'brand' => 'vehicle-type', + 'category' => 'vehicle-category', + 'color' => 'vehicle-color', + 'conditoin' => 'vehicle-condition', + 'fuel' => 'vehicle-fuel', + 'gearbox' => 'vehicle-gearbox', + 'location' => 'vehicle-location', + 'model' => 'vehicle-type', + 'type' => 'vehicle-category', + ); + + static $meta_vars = array( // meta_name (name of post meta, stored in the database) => meta_keys (what is in the request) + 'vehicle-horsepower' => array( + 'start_horsepower', 'end_horsepower' + ), + 'vehicle-price' => array( + 'start_price', 'end_price' + ), + 'vehicle-range' => array( + 'start_range', 'end_range' + ), + 'vehicle-year' => array( + 'start_year', 'end_year' + ), + ); + + function register_query_vars( $vars ) { // didn't use array_merge because it caused some problems + $vars[] = 'search'; + foreach( $this::$tax_vars as $key => $value ) { + $vars[] = $key; + } + foreach( $this::$meta_vars as $key => $value ) { + foreach( $value as $name ) { + $vars[] = $name; + } + } + return $vars; + } + + function get_slug_taxonomy_array( $name, $terms ) { + $taxonomy_arr = array( + 'taxonomy' => $name, + 'field' => 'slug', + 'terms' => $terms, + ); + return $taxonomy_arr; + } + + function get_num_meta_array( $key, $value1, $value2 ) { + $result; + if( ! empty( $value1 ) && ! empty( $value2 ) ) { + $result = array( + 'key' => $key, + 'value' => array( $value1, $value2 ), + 'type' => 'NUMERIC', + 'compare' => 'BETWEEN', + ); + } else if( ! empty( $value1 ) ) { + $result = array( + 'key' => $key, + 'value' => $value1, + 'type' => 'NUMERIC', + 'compare' => '>=', + ); + } else { + $result = array( + 'key' => $key, + 'value' => $value2, + 'type' => 'NUMERIC', + 'compare' => '<=', + ); + } + return $result; + } + + function pre_get_posts( $query ) { + if ( get_query_var( 'search' ) != 'vehicles' ) { + return; + } + + $query->set( 'post_type', 'vehicles' ); + + $tax_query = array(); + + foreach( $this::$tax_vars as $tax_name => $tax_key ) { + if ( ! empty( get_query_var( $tax_name ) ) ) { + $tax_query[] = $this->get_slug_taxonomy_array( $tax_key, get_query_var( $tax_name ) ); + } + } + + $meta_query = array(); + + foreach( $this::$meta_vars as $meta_name => $meta_keys ) { + if ( ! empty( get_query_var( $meta_keys[0] ) ) || ! empty( get_query_var( $meta_keys[1] ) ) ) { + $meta_query[] = $this->get_num_meta_array( $meta_name, get_query_var( $meta_keys[0] ), get_query_var( $meta_keys[1] ) ); + } + } + + $query->set( 'meta_query', $meta_query ); + $query->set( 'tax_query', $tax_query ); + } +} diff --git a/wp-content/plugins/dx-vehicles/taxonomies-hierarchical-class.php b/wp-content/plugins/dx-vehicles/taxonomies-hierarchical-class.php new file mode 100644 index 0000000..82c1089 --- /dev/null +++ b/wp-content/plugins/dx-vehicles/taxonomies-hierarchical-class.php @@ -0,0 +1,65 @@ +<?php + +class TaxonomiesHierarchical { + function init() { + add_action( 'init', array( $this, 'tax_create' ) , 999 ); + } + public function labels() { + $arr = array ( + 'name' => _x( 'Categories', 'taxonomy general name' ), + 'singular_name' => _x( 'Category', 'taxonomy singular name' ), + 'search_items' => __( 'Search Category', 'textdomain' ), + 'all_items' => __( 'All Categories', 'textdomain' ), + 'parent_item' => __( 'Parent Category', 'textdomain' ), + 'parent_item_colon' => __( 'Parent Category:', 'textdomain' ), + 'edit_item' => __( 'Edit Category' ), + 'update_item' => __( 'Update Category' ), + 'add_new_item' => __( 'Add New Category' ), + 'new_item_name' => __( 'New Category Name' ), + 'menu_name' => __( 'Category' ), + ); + return $arr; + } + + public function labels_types() { + $arr = array ( + 'name' => _x( 'Types', 'taxonomy general name' ), + 'singular_name' => _x( 'Type', 'taxonomy singular name' ), + 'search_items' => __( 'Search Type', 'textdomain' ), + 'all_items' => __( 'All Types', 'textdomain' ), + 'parent_item' => __( 'Parent Type', 'textdomain' ), + 'parent_item_colon' => __( 'Parent Type:', 'textdomain' ), + 'edit_item' => __( 'Edit Type' ), + 'update_item' => __( 'Update Type' ), + 'add_new_item' => __( 'Add New Type' ), + 'new_item_name' => __( 'New Type Name' ), + 'menu_name' => __( 'Type' ), + ); + return $arr; + } + + public function tax_create(){ + register_taxonomy( 'vehicle-category', 'vehicles', array( + 'hierarchical' => true, + 'labels' => $this->labels(), + 'show_ui' => true, + 'show_admin_column' => true, + 'show_in_rest' => true, + 'update_count_callback' => '_update_post_term_count', + 'query_var' => true, + 'rewrite' => array( 'slug' => 'vehicle-category' ), + ) + ); + register_taxonomy( 'vehicle-type', 'vehicles', array( + 'hierarchical' => true, + 'labels' => $this->labels_types(), + 'show_ui' => true, + 'show_admin_column' => true, + 'show_in_rest' => true, + 'update_count_callback' => '_update_post_term_count', + 'query_var' => true, + 'rewrite' => array( 'slug' => 'car-type' ), + ) + ); + } +} diff --git a/wp-content/plugins/dx-vehicles/taxonomies-non-hierarchical-class.php b/wp-content/plugins/dx-vehicles/taxonomies-non-hierarchical-class.php new file mode 100644 index 0000000..9ea1330 --- /dev/null +++ b/wp-content/plugins/dx-vehicles/taxonomies-non-hierarchical-class.php @@ -0,0 +1,93 @@ +<?php + +class Taxonomies { + function init() { + add_action( 'init', array( $this, 'tax_create' ) , 999 ); + } + + public function labels($name) { + $arr = array ( + 'name' => _x( $name.'s', 'taxonomy general name' ), + 'singular_name' => _x( $name, 'taxonomy singular name' ), + 'search_items' => __( 'Search '.$name.'s' ), + 'all_items' => __( 'All '.$name.'s' ), + 'parent_item' => null, + 'parent_item_colon' => null, + 'edit_item' => __( 'Edit '.$name ), + 'update_item' => __( 'Update '.$name ), + 'add_new_item' => __( 'Add New '.$name ), + 'new_item_name' => __( 'New '.$name.' Name' ), + 'menu_name' => __( $name.'s' ), + ); + return $arr; + } + + public function tax_create(){ + register_taxonomy( 'vehicle-location', 'vehicles', array( + 'hierarchical' => false, + 'labels' => $this->labels('Location'), + 'show_ui' => true, + 'show_admin_column' => true, + 'show_in_rest' => true, + 'update_count_callback' => '_update_post_term_count', + 'query_var' => true, + 'rewrite' => array( 'slug' => 'location' ), + ) + ); + register_taxonomy( 'vehicle-color', 'vehicles', array( + 'hierarchical' => false, + 'labels' => $this->labels('Color'), + 'show_ui' => true, + 'show_admin_column' => true, + 'show_in_rest' => true, + 'update_count_callback' => '_update_post_term_count', + 'query_var' => true, + 'rewrite' => array( 'slug' => 'color' ), + ) + ); + register_taxonomy( 'vehicle-condition', 'vehicles', array( + 'hierarchical' => false, + 'labels' => $this->labels('Condition'), + 'show_ui' => true, + 'show_admin_column' => true, + 'show_in_rest' => true, + 'update_count_callback' => '_update_post_term_count', + 'query_var' => true, + 'rewrite' => array( 'slug' => 'condition' ), + ) + ); + register_taxonomy( 'vehicle-gearbox', 'vehicles', array( + 'hierarchical' => false, + 'labels' => $this->labels('Gearbox'), + 'show_ui' => true, + 'show_admin_column' => true, + 'show_in_rest' => true, + 'update_count_callback' => '_update_post_term_count', + 'query_var' => true, + 'rewrite' => array( 'slug' => 'gearbox' ), + ) + ); + register_taxonomy( 'vehicle-fuel', 'vehicles', array( + 'hierarchical' => false, + 'labels' => $this->labels('Fuel'), + 'show_ui' => true, + 'show_admin_column' => true, + 'show_in_rest' => true, + 'update_count_callback' => '_update_post_term_count', + 'query_var' => true, + 'rewrite' => array( 'slug' => 'fuel' ), + ) + ); + register_taxonomy( 'vehicle-type', 'vehicles', array( + 'hierarchical' => false, + 'labels' => $this->labels('Type'), + 'show_ui' => true, + 'show_admin_column' => true, + 'show_in_rest' => true, + 'update_count_callback' => '_update_post_term_count', + 'query_var' => true, + 'rewrite' => array( 'slug' => 'car-type' ), + ) + ); + } +} diff --git a/wp-content/plugins/dx-vehicles/vehicle-info-display-callback.php b/wp-content/plugins/dx-vehicles/vehicle-info-display-callback.php new file mode 100644 index 0000000..02d3308 --- /dev/null +++ b/wp-content/plugins/dx-vehicles/vehicle-info-display-callback.php @@ -0,0 +1,35 @@ +<table> + <tr> + <td><?php _e( 'Year:' ) ?></td> + <td><input type="text" name="vehicle-year" value="<?php echo( sanitize_text_field( get_post_meta( get_the_ID(), __( 'vehicle-year' ), true ) ) ) ?>"></td> + </tr> + <tr> + <td><?php _e( 'Millage:' ) ?></td> + <td><input type="text" name="vehicle-millage" value="<?php echo( sanitize_text_field( get_post_meta( get_the_ID(), __( 'vehicle-millage' ), true ) ) ) ?>"></td> + </tr> + <tr> + <td><?php _e( 'Horsepower:' ) ?></td> + <td><input type="text" name="vehicle-horsepower" value="<?php echo( sanitize_text_field( get_post_meta( get_the_ID(), __( 'vehicle-horsepower' ), true ) ) ) ?>"></td> + </tr> + <tr> + <td><?php _e( 'Range:' ) ?></td> + <td><input type="text" name="vehicle-range" value="<?php echo( sanitize_text_field( get_post_meta( get_the_ID(), __( 'vehicle-range' ), true ) ) ) ?>"></td> + </tr> + <tr> + <td><?php _e( 'Price:' ) ?></td> + <td><input type="text" name="vehicle-price" value="<?php echo( sanitize_text_field( get_post_meta( get_the_ID(), __( 'vehicle-price' ), true ) ) ) ?>"></td> + </tr> + <tr> + <td><?php _e( 'Photo:' ) ?></td> + <td><input type="file" name="vehicle-images[]" value="" multiple></td> + </tr> + <tr> + <td><?php _e( 'Uploaded photos<br>(might need page refresh):' ) ?></td> + <?php + $images = ( array )json_decode( get_post_meta( get_the_ID(), __( 'vehicle-images' ), true ) ); + foreach ( $images as $image ) { + echo( '<td> <img src="' . $image . '" alt=""></td>' ); + } + ?> + </tr> +</table> diff --git a/wp-content/plugins/dx-vehicles/vehicles-class.php b/wp-content/plugins/dx-vehicles/vehicles-class.php new file mode 100644 index 0000000..3a0b127 --- /dev/null +++ b/wp-content/plugins/dx-vehicles/vehicles-class.php @@ -0,0 +1,124 @@ +<?php +class Vehicles { + function init() { + add_action( 'init', array( $this, 'cpt_create' ) ); + add_action( 'add_meta_boxes', array( $this, 'register_meta_boxes' ) ); + add_action( 'save_post', array( $this, 'vehicle_info_save_meta' ), 1, 2 ); + } + + public function labels() { + $arr = array( + 'labels' => array( + 'name' => __( 'Vehicles' ), + 'singular_name' => __( 'Vehicle' ), + ), + 'public' => true, + 'has_archive' => true, + 'rewrite' => array( 'slug' => 'vehicles' ), + 'show_in_rest' => true, + 'supports' => array( 'title', 'editor', 'excerpt', 'author', 'thumbnail', 'comments', 'revisions', 'custom-fields', ), + ); + return $arr; + } + + function cpt_create( $post ) { + register_post_type( 'vehicles', $this->labels() ); + } + + function register_meta_boxes() { + add_meta_box( 'vehicle-info', __( 'Vehicle Information' ), array( $this, 'vehicle_info_display_callback' ), 'vehicles' ); + } + + function vehicle_info_display_callback( $post ) { + include 'vehicle-info-display-callback.php'; + } + + function remove_message( $location ) { + return remove_query_arg( 'message', $location ); + } + + function allowed_image_types() { + $mime_types = array( + 'jpg|jpeg|jpe' => 'image/jpeg', + 'gif' => 'image/gif', + 'png' => 'image/png', + 'bmp' => 'image/bmp', + 'tiff|tif' => 'image/tiff', + ); + return $mime_types; + } + + function get_enc_uploaded_img_urls( $images ) { + $uploaded_urls = array(); + for ( $i = 0; $i < sizeof( $images['name'] ); $i++ ) { + // Upload each valid file, throw error if file is not valid + if ( wp_check_filetype( $images['name'][ $i ], $this->allowed_image_types() )['ext'] ) { + $file = array( + 'name' => $images['name'][ $i ], + 'type' => $images['type'][ $i ], + 'tmp_name' => $images['tmp_name'][ $i ], + 'error' => $images['error'][ $i ], + 'size' => $images['size'][ $i ] + ); + // Note: images will not upload if you don't set 777 permission to wp-content folder and it's contents + $uploaded = wp_handle_upload( $file, array( 'test_form' => false ) ); + array_push( $uploaded_urls, $uploaded['url'] ); + } else { + wp_die( 'Invalid image' ); + } + } + return json_encode( $uploaded_urls ); + } + + function vehicle_info_save_meta( $post_id, $post ) { + // Return if the user doesn't have edit permissions. + if ( ! current_user_can( 'edit_post', $post_id ) ) { + return $post_id; + } + + // Now that we're authenticated, time to save the data. + // This sanitizes the data from the field and saves it into an array $events_meta. + $events_meta = array( + 'vehicle-year' => sanitize_text_field( isset( $_POST['vehicle-year'] ) ? $_POST['vehicle-year'] : null ), + 'vehicle-millage' => sanitize_text_field( isset( $_POST['vehicle-millage'] ) ? $_POST['vehicle-millage'] : null ), + 'vehicle-horsepower' => sanitize_text_field( isset( $_POST['vehicle-horsepower'] ) ? $_POST['vehicle-horsepower'] : null ), + 'vehicle-range' => sanitize_text_field( isset( $_POST['vehicle-range'] ) ? $_POST['vehicle-range'] : null ), + 'vehicle-price' => sanitize_text_field( isset( $_POST['vehicle-price'] ) ? $_POST['vehicle-price'] : null ), + 'vehicle-images' => isset( $_FILES['vehicle-images'] ) ? $this->get_enc_uploaded_img_urls( $_FILES['vehicle-images'] ): null, + ); + + // Cycle through the $events_meta array. + // Note, in this example we just have one item, but this is helpful if you have multiple. + foreach ( $events_meta as $key => $value ) { + if ( $value == null ) { + continue; + } + + switch ( $key ) { + case 'vehicle-year': + if( strcmp( "1769", $value ) > 0 || strcmp( "2020", $value ) < 0 ) wp_die( 'Invalid year' ); + break; + case 'vehicle-millage': + if( strcmp( "0", $value ) > 0 ) wp_die( 'Invalid millage.' ); + break; + case 'vehicle-horsepower': + if( strcmp( "0", $value ) > 0 ) wp_die( 'Invalid horsepower.' ); + break; + case 'vehicle-range': + if( strcmp( "0", $value ) > 0 ) wp_die( 'Invalid range.' ); + break; + case 'vehicle-price': + if( strcmp( "0", $value ) > 0 ) wp_die( 'Invalid price.' ); + break; + } + + if ( get_post_meta( $post_id, $key, false ) ) { + // If the custom field already has a value, update it. + update_post_meta( $post_id, $key, $value ); + } else { + // If the custom field doesn't have a value, add it. + add_post_meta( $post_id, $key, $value ); + } + } + } +} diff --git a/wp-content/plugins/hello.php b/wp-content/plugins/hello.php deleted file mode 100644 index ff55908..0000000 --- a/wp-content/plugins/hello.php +++ /dev/null @@ -1,100 +0,0 @@ -<?php -/** - * @package Hello_Dolly - * @version 1.7.2 - */ -/* -Plugin Name: Hello Dolly -Plugin URI: http://wordpress.org/plugins/hello-dolly/ -Description: This is not just a plugin, it symbolizes the hope and enthusiasm of an entire generation summed up in two words sung most famously by Louis Armstrong: Hello, Dolly. When activated you will randomly see a lyric from <cite>Hello, Dolly</cite> in the upper right of your admin screen on every page. -Author: Matt Mullenweg -Version: 1.7.2 -Author URI: http://ma.tt/ -*/ - -function hello_dolly_get_lyric() { - /** These are the lyrics to Hello Dolly */ - $lyrics = "Hello, Dolly -Well, hello, Dolly -It's so nice to have you back where you belong -You're lookin' swell, Dolly -I can tell, Dolly -You're still glowin', you're still crowin' -You're still goin' strong -I feel the room swayin' -While the band's playin' -One of our old favorite songs from way back when -So, take her wrap, fellas -Dolly, never go away again -Hello, Dolly -Well, hello, Dolly -It's so nice to have you back where you belong -You're lookin' swell, Dolly -I can tell, Dolly -You're still glowin', you're still crowin' -You're still goin' strong -I feel the room swayin' -While the band's playin' -One of our old favorite songs from way back when -So, golly, gee, fellas -Have a little faith in me, fellas -Dolly, never go away -Promise, you'll never go away -Dolly'll never go away again"; - - // Here we split it into lines. - $lyrics = explode( "\n", $lyrics ); - - // And then randomly choose a line. - return wptexturize( $lyrics[ mt_rand( 0, count( $lyrics ) - 1 ) ] ); -} - -// This just echoes the chosen line, we'll position it later. -function hello_dolly() { - $chosen = hello_dolly_get_lyric(); - $lang = ''; - if ( 'en_' !== substr( get_user_locale(), 0, 3 ) ) { - $lang = ' lang="en"'; - } - - printf( - '<p id="dolly"><span class="screen-reader-text">%s </span><span dir="ltr"%s>%s</span></p>', - __( 'Quote from Hello Dolly song, by Jerry Herman:' ), - $lang, - $chosen - ); -} - -// Now we set that function up to execute when the admin_notices action is called. -add_action( 'admin_notices', 'hello_dolly' ); - -// We need some CSS to position the paragraph. -function dolly_css() { - echo " - <style type='text/css'> - #dolly { - float: right; - padding: 5px 10px; - margin: 0; - font-size: 12px; - line-height: 1.6666; - } - .rtl #dolly { - float: left; - } - .block-editor-page #dolly { - display: none; - } - @media screen and (max-width: 782px) { - #dolly, - .rtl #dolly { - float: none; - padding-left: 0; - padding-right: 0; - } - } - </style> - "; -} - -add_action( 'admin_head', 'dolly_css' ); diff --git a/wp-content/plugins/index.php b/wp-content/plugins/index.php new file mode 100644 index 0000000..6220032 --- /dev/null +++ b/wp-content/plugins/index.php @@ -0,0 +1,2 @@ +<?php +// Silence is golden. |
