diff --git a/display-featured-image-genesis.php b/display-featured-image-genesis.php
index e58fac3..1b74595 100644
--- a/display-featured-image-genesis.php
+++ b/display-featured-image-genesis.php
@@ -28,6 +28,7 @@ function display_featured_image_genesis_require() {
$files = array(
'class-displayfeaturedimagegenesis',
'class-displayfeaturedimagegenesis-admin',
+ 'class-displayfeaturedimagegenesis-author',
'class-displayfeaturedimagegenesis-common',
'class-displayfeaturedimagegenesis-description',
'class-displayfeaturedimagegenesis-output',
@@ -58,12 +59,16 @@ $displayfeaturedimagegenesis_rss = new Display_Featured_Image_Genesis_RS
$displayfeaturedimagegenesis_settings = new Display_Featured_Image_Genesis_Settings(
$displayfeaturedimagegenesis_common
);
+$displayfeaturedimagegenesis_author = new Display_Featured_Image_Genesis_Author(
+ $displayfeaturedimagegenesis_settings
+);
$displayfeaturedimagegenesis_taxonomies = new Display_Featured_Image_Genesis_Taxonomies(
$displayfeaturedimagegenesis_settings
);
$displayfeaturedimage = new Display_Featured_Image_Genesis(
$displayfeaturedimagegenesis_admin,
+ $displayfeaturedimagegenesis_author,
$displayfeaturedimagegenesis_common,
$displayfeaturedimagegenesis_description,
$displayfeaturedimagegenesis_output,
diff --git a/includes/class-displayfeaturedimagegenesis-author.php b/includes/class-displayfeaturedimagegenesis-author.php
new file mode 100644
index 0000000..ec2cd37
--- /dev/null
+++ b/includes/class-displayfeaturedimagegenesis-author.php
@@ -0,0 +1,54 @@
+settings = $settings;
+ $this->name = 'displayfeaturedimagegenesis';
+ }
+
+ function do_author_fields( $user ) {
+
+ $id = get_the_author_meta( $this->name, $user->ID );
+
+ echo '
';
+ }
+
+ function save_profile_fields( $user_id ) {
+
+ if ( ! current_user_can( 'edit_user', $user_id ) ) {
+ return false;
+ }
+
+ if ( empty( $_POST['_wpnonce'] ) ) {
+ wp_die( esc_attr__( 'Something unexpected happened. Please try again.', 'display-featured-image-genesis' ) );
+ }
+
+ $new_value = $_POST[ $this->name ];
+ $old_value = get_the_author_meta( $this->name, $user_id );
+ if ( $old_value !== $new_value ) {
+ $new_value = $this->settings->validate_author_image( $new_value, $old_value );
+
+ update_user_meta( $user_id, $this->name, $new_value );
+ }
+ }
+
+}
diff --git a/includes/class-displayfeaturedimagegenesis-common.php b/includes/class-displayfeaturedimagegenesis-common.php
index f1ed3d1..8f7b1f5 100644
--- a/includes/class-displayfeaturedimagegenesis-common.php
+++ b/includes/class-displayfeaturedimagegenesis-common.php
@@ -182,6 +182,9 @@ class Display_Featured_Image_Genesis_Common {
}
}
}
+ if ( is_author() ) {
+ $image_id = get_the_author_meta( 'displayfeaturedimagegenesis_author', (int) get_query_var( 'author' ) );
+ }
// taxonomy
if ( is_category() || is_tag() || is_tax() ) {
$t_id = $object->term_id;
diff --git a/includes/class-displayfeaturedimagegenesis-settings.php b/includes/class-displayfeaturedimagegenesis-settings.php
index 05eca82..0c03afc 100644
--- a/includes/class-displayfeaturedimagegenesis-settings.php
+++ b/includes/class-displayfeaturedimagegenesis-settings.php
@@ -513,6 +513,54 @@ class Display_Featured_Image_Genesis_Settings {
return $new_value;
}
+ /**
+ * Returns old value for author image if not correct file type/size
+ * @param string $new_value New value
+ * @return string New value or old, depending on allowed image size.
+ * @since x.y.z
+ */
+ public function validate_author_image( $new_value, $old_value ) {
+
+ $medium = get_option( 'medium_size_w' );
+ $source = wp_get_attachment_image_src( $new_value, 'full' );
+ $valid = $this->is_valid_img_ext( $source[0] );
+ $width = $source[1];
+
+ if ( ! $new_value || ( $new_value && $valid && $width > $medium ) ) {
+ return $new_value;
+ }
+
+ add_filter( 'user_profile_update_errors', array( $this, 'user_profile_error_message' ), 10, 3 );
+
+ return $old_value;
+
+ }
+
+ /**
+ * User profile error message
+ * @param var $errors error message depending on what's wrong
+ * @param var $update whether or not to update
+ * @param var $user user being updated
+ * @return error message
+ *
+ * @since x.y.z
+ */
+ public function user_profile_error_message( $errors, $update, $user ) {
+ $new_value = (int) $_POST['displayfeaturedimagegenesis'];
+ $medium = get_option( 'medium_size_w' );
+ $source = wp_get_attachment_image_src( $new_value, 'full' );
+ $valid = $this->is_valid_img_ext( $source[0] );
+ $width = $source[1];
+ $reset = sprintf( __( ' The %s Featured Image has been reset to the last valid setting.', 'display-featured-image-genesis' ), $user->display_name );
+
+ if ( ! $valid ) {
+ $error = __( 'Sorry, that is an invalid file type.', 'display-featured-image-genesis' );
+ } elseif ( $width <= $medium ) {
+ $error = __( 'Sorry, your image is too small.', 'display-featured-image-genesis' );
+ }
+ $errors->add( 'profile_error', $error . $reset );
+ }
+
/**
* returns file extension
* @since 1.2.2
diff --git a/includes/class-displayfeaturedimagegenesis.php b/includes/class-displayfeaturedimagegenesis.php
index 9277d22..9998bda 100644
--- a/includes/class-displayfeaturedimagegenesis.php
+++ b/includes/class-displayfeaturedimagegenesis.php
@@ -16,8 +16,9 @@
*/
class Display_Featured_Image_Genesis {
- function __construct( $admin, $common, $description, $output, $rss, $settings, $taxonomies ) {
+ function __construct( $admin, $author, $common, $description, $output, $rss, $settings, $taxonomies ) {
$this->admin = $admin;
+ $this->author = $author;
$this->common = $common;
$this->description = $description;
$this->output = $output;
@@ -38,6 +39,7 @@ class Display_Featured_Image_Genesis {
add_action( 'init', array( $this, 'add_plugin_supports' ) );
add_action( 'admin_init', array( $this, 'check_settings' ) );
add_action( 'admin_init', array( $this, 'set_taxonomy_meta' ) );
+ add_action( 'admin_init', array( $this, 'set_author_meta' ) );
add_action( 'widgets_init', array( $this, 'register_widgets' ) );
add_action( 'admin_init', array( $this->admin, 'set_up_columns' ) );
add_action( 'plugins_loaded', array( $this, 'load_textdomain' ) );
@@ -169,6 +171,20 @@ class Display_Featured_Image_Genesis {
}
}
+ /**
+ * Set new profile field for authors
+ *
+ * @since x.y.z
+ */
+ public function set_author_meta() {
+ // current user
+ add_action( 'profile_personal_options', array( $this->author, 'do_author_fields' ) );
+ add_action( 'personal_options_update', array( $this->author, 'save_profile_fields' ) );
+ // not current user
+ add_action( 'edit_user_profile', array( $this->author, 'do_author_fields' ) );
+ add_action( 'edit_user_profile_update', array( $this->author, 'save_profile_fields' ) );
+ }
+
/**
* Set up text domain for translations
*
@@ -194,7 +210,7 @@ class Display_Featured_Image_Genesis {
$screen = get_current_screen();
- if ( 'appearance_page_displayfeaturedimagegenesis' === $screen->id || ! empty( $screen->taxonomy ) ) {
+ if ( 'appearance_page_displayfeaturedimagegenesis' === $screen->id || ! empty( $screen->taxonomy ) || 'profile' === $screen->id ) {
wp_enqueue_media();
wp_enqueue_script( 'displayfeaturedimage-upload' );
wp_localize_script( 'displayfeaturedimage-upload', 'objectL10n', array(