• Resolved Art Project Group

    (@artprojectgroup)


    Please update widgets.php file with the present WP-Widget class extends to prevent PHP notice:

    <?php
    class JobmanLatestJobsWidget extends WP_Widget {
        /** constructor */
        function __construct() {
    		$name = __( 'Job Manager: Recent Jobs', 'jobman');
    		$options = array( 'description' => __( 'A list of the most recent jobs posted to your site', 'jobman' ) );
    
            parent::__construct( false, $name, $options );
        }
    
        function widget( $args, $instance ) {
            extract( $args );
            $title = apply_filters( 'widget_title', $instance['title'] );
    
    		echo $before_widget;
    
    		if ( $title )
    			echo $before_title . $title . $after_title;
    
    		$args = array(
    					'post_type' => 'jobman_job',
    					'numberposts' => -1,
    					'suppress_filters' => false
    				);
    
    		add_filter( 'posts_where', 'jobman_job_live_where' );
    		add_filter( 'posts_join', 'jobman_job_live_join' );
    		add_filter( 'posts_distinct', 'jobman_job_live_distinct' );
    
    		$jobs = get_posts( $args );
    
    		remove_filter( 'posts_where', 'jobman_job_live_where' );
    		remove_filter( 'posts_join', 'jobman_job_live_join' );
    		remove_filter( 'posts_distinct', 'jobman_job_live_distinct' );
    
    		foreach( $jobs as $id => $job ) {
    			// Remove jobs not in selected categories
    			if( 'selected' == $instance['jobsfrom'] ) {
    				$categories = wp_get_object_terms( $job->ID, 'jobman_category' );
    				if( count( $categories ) > 0 ) {
    					foreach( $categories as $cat ) {
    						if( in_array( $cat->term_id, $instance['selected_cats'] ) )
    							// Job is in a selected category. Move to next job.
    							continue 2;
    					}
    
    					// Job wasn't in a selected category. Remove it.
    					unset( $jobs[$id] );
    				}
    				else {
    					unset( $jobs[$id] );
    				}
    			}
    		}
    
    		if( count( $jobs ) > 0 ) {
    			echo '<ul>';
    			$jobcount = 0;
    			foreach( $jobs as $job ) {
    				if( $jobcount >= $instance['jobslimit'] )
    					break;
    
    				echo '<li><a href="' . get_page_link( $job->ID ) . '">' . $job->post_title . '</a></li>';
    
    				$jobcount++;
    			}
    			echo '</ul>';
    		}
    		else {
    			echo '<p>' . __( 'There are no jobs to display at this time.', 'jobman' ) . '</p>';
    		}
    
    		echo $after_widget;
        }
    
        function update( $new_instance, $old_instance ) {
    		$new_instance['jobslimit'] = (int)$new_instance['jobslimit'];
    
    		if( $new_instance['jobslimit'] < 0 )
    			$new_instance['jobslimit'] = 0;
    		else if( $new_instance['jobslimit'] > 15 )
    			$new_instance['jobslimit'] = 15;
    
    		$new_instance['selected_cats'] = array();
    
    		if( array_key_exists( $this->get_field_id( 'selected_cats' ), $_REQUEST ) && is_array( $_REQUEST[$this->get_field_id( 'selected_cats' )] ) ) {
    			foreach( $_REQUEST[$this->get_field_id( 'selected_cats' )] as $catid ) {
    				$new_instance['selected_cats'][] = $catid;
    			}
    		}
    
    		return $new_instance;
        }
    
        function form( $instance ) {
    		$title = '';
    		if( array_key_exists( 'title', $instance ) )
    			$title = esc_attr( $instance['title'] );
    ?>
                <p>
    				<label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title', 'jobman' ); ?>:
    					<input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo $title; ?>" />
    				</label>
    			</p>
    <?php 
    
    		$jobslimit = 5;
    		if( array_key_exists( 'jobslimit', $instance ) )
    			$jobslimit = esc_attr( $instance['jobslimit'] );
    ?>
                <p>
    				<label for="<?php echo $this->get_field_id( 'jobslimit' ); ?>"><?php _e( 'Number of Jobs to show', 'jobman' ); ?>:
    					<input id="<?php echo $this->get_field_id( 'jobslimit' ); ?>" name="<?php echo $this->get_field_name( 'jobslimit' ); ?>" type="text" size="3" value="<?php echo $jobslimit; ?>" />
    				</label>
    				<small>(<?php _e( 'at most 15', 'jobman' ) ?>)</small>
    			</p>
    <?php 
    
    		$jobsfrom = 'all';
    		if( array_key_exists( 'jobsfrom', $instance ) )
    			$jobsfrom = esc_attr( $instance['jobsfrom'] );
    ?>
                <p>
    				<label for="<?php echo $this->get_field_id( 'jobsfrom' ); ?>"><?php _e( 'Show Jobs From', 'jobman' ); ?>:
    					<select id="<?php echo $this->get_field_id( 'jobsfrom' ); ?>" name="<?php echo $this->get_field_name( 'jobsfrom' ); ?>">
    						<option value="all"<?php echo ( 'all' == $jobsfrom )?( ' selected="selected"' ):( '' ) ?>><?php _e( 'All Categories', 'jobman' ) ?></option>
    						<option value="selected"<?php echo ( 'selected' == $jobsfrom )?( ' selected="selected"' ):( '' ) ?>><?php _e( 'Selected Categories', 'jobman' ) ?></option>
    					</select>
    				</label>
    			</p>
    <?php 
    
    		$selected_cats = array();
    		if( array_key_exists( 'selected_cats', $instance ) )
    			$selected_cats = $instance['selected_cats'];
    
    		$categories = get_terms( 'jobman_category', 'hide_empty=0' );
    ?>
                <p>
    				<label><?php _e( 'Categories', 'jobman' ); ?>: </label><br/>
    <?php
    		if( count( $categories ) > 0 ) {
    			foreach( $categories as $cat ) {
    				echo "<input type='checkbox' name='" . $this->get_field_id( 'selected_cats' ) . "[]' value='$cat->term_id'";
    				if( in_array( $cat->term_id, $selected_cats ) )
    					echo ' checked="checked"';
    				echo "> $cat->name<br/>";
    			}
    		}
    		else {
    			echo '<p>' . __( 'No categories defined.', 'jobman' ) . '</p>';
    		}
    ?>
    			</p>
    <?php
    	}
    
    }
    
    class JobmanCategoriesWidget extends WP_Widget {
        /** constructor */
        function __construct() {
    		$name = __( 'Job Manager: Categories', 'jobman');
    		$options = array( 'description' => __( 'A list or dropdown of Job Manager categories', 'jobman' ) );
    
            parent::__construct( false, $name, $options );
        }
    
        function widget( $args, $instance ) {
    		global $wp_query;
    
            extract( $args );
            $title = apply_filters( 'widget_title', $instance['title'] );
    
    		echo $before_widget;
    
    		if ( $title )
    			echo $before_title . $title . $after_title;
    
    		$dropdown = 0;
    		if( array_key_exists( 'dropdown', $instance ) )
    			$dropdown = $instance['dropdown'];
    
    		$show_counts = 0;
    		if( array_key_exists( 'show_counts', $instance ) )
    			$show_counts = $instance['show_counts'];
    
    		$hide_empty = 0;
    		if( array_key_exists( 'hide_empty', $instance ) )
    			$hide_empty = $instance['hide_empty'];
    
    		$categories = get_terms( 'jobman_category', 'hide_empty=0' );
    		if( count( $categories ) > 0 ) {
    			if( $dropdown ) {
    				echo '<select id="jobman-catlist">';
    				echo '<option value="">' . __( 'Select Category', 'jobman' ) . '</option>';
    			}
    			else {
    				echo '<ul>';
    			}
    
    			$count_args = array(
    							'post_type' => 'jobman_job',
    							'numberposts' => -1,
    							'suppress_filters' => false
    						);
    
    			foreach( $categories as $cat ) {
    				$selected = '';
    				if( array_key_exists( 'jcat', $wp_query->query_vars ) && $wp_query->query_vars['jcat'] == $cat->slug )
    					$selected = ' selected="selected"';
    
    				$jobs = array();
    				if( $hide_empty || $show_counts ) {
    					$count_args['jcat'] = $cat->slug;
    					add_filter( 'posts_where', 'jobman_job_live_where' );
    					add_filter( 'posts_join', 'jobman_job_live_join' );
    					add_filter( 'posts_distinct', 'jobman_job_live_distinct' );
    
    					$jobs = get_posts( $count_args );
    
    					remove_filter( 'posts_where', 'jobman_job_live_where' );
    					remove_filter( 'posts_join', 'jobman_job_live_join' );
    					remove_filter( 'posts_distinct', 'jobman_job_live_distinct' );
    				}
    
    				if( $hide_empty && empty( $jobs ) )
    					continue;
    
    				$count = '';
    				if( $show_counts ) {
    					$count = ' (' . count( $jobs ) . ')';
    				}
    
    				if( $dropdown )
    					echo "<option value='$cat->slug'$selected>$cat->name$count</option>";
    				else
    					echo "<li><a href='" . get_term_link( $cat->slug, 'jobman_category' ) . "'>$cat->name$count</a></li>";
    			}
    
    			if( $dropdown ) {
    ?>
    		</select>
    
    <script type='text/javascript'>
    /* <![CDATA[ */
    	var jobman_dropdown = document.getElementById("jobman-catlist");
    	function onJobmanCatChange() {
    		if ( jobman_dropdown.options[jobman_dropdown.selectedIndex].value != '' ) {
    			location.href = "<?php echo get_option( 'home' ) ?>/?jcat="+jobman_dropdown.options[jobman_dropdown.selectedIndex].value;
    		}
    	}
    	jobman_dropdown.onchange = onJobmanCatChange;
    /* ]]> */
    </script>
    <?php
    			}
    			else {
    				echo '</ul>';
    			}
    		}
    		else {
    			echo '<p>' . __( 'There are no categories to display at this time.', 'jobman' ) . '</p>';
    		}
    
    		echo $after_widget;
        }
    
        function update( $new_instance, $old_instance ) {
    		return $new_instance;
        }
    
        function form( $instance ) {
    		$title = '';
    		if( array_key_exists( 'title', $instance ) )
    			$title = esc_attr( $instance['title'] );
    ?>
                <p>
    				<label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title', 'jobman' ); ?>:
    					<input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo $title; ?>" />
    				</label>
    			</p>
    <?php
    		$dropdown = 0;
    		if( array_key_exists( 'dropdown', $instance ) )
    			$dropdown = $instance['dropdown'];
    
    		$show_counts = 0;
    		if( array_key_exists( 'show_counts', $instance ) )
    			$show_counts = $instance['show_counts'];
    
    		$hide_empty = 0;
    		if( array_key_exists( 'hide_empty', $instance ) )
    			$hide_empty = $instance['hide_empty'];
    ?>
                <p>
    				<input id="<?php echo $this->get_field_id( 'dropdown' ); ?>" name="<?php echo $this->get_field_name( 'dropdown' ); ?>" type="checkbox" value="1" <?php echo ( $dropdown )?( 'checked="checked" ' ):( '' )?>/> <?php _e( 'Show as dropdown', 'jobman' ) ?><br/>
    				<input id="<?php echo $this->get_field_id( 'show_counts' ); ?>" name="<?php echo $this->get_field_name( 'show_counts' ); ?>" type="checkbox" value="1" <?php echo ( $show_counts )?( 'checked="checked" ' ):( '' )?>/> <?php _e( 'Show job counts', 'jobman' ); ?><br/>
    				<input id="<?php echo $this->get_field_id( 'hide_empty' ); ?>" name="<?php echo $this->get_field_name( 'hide_empty' ); ?>" type="checkbox" value="1" <?php echo ( $hide_empty )?( 'checked="checked" ' ):( '' )?>/> <?php _e( 'Hide empty categories', 'jobman' ); ?>
    			</p>
    <?php
    	}
    
    }
    
    class JobmanHighlightedJobsWidget extends WP_Widget {
        /** constructor */
        function __construct() {
    		$name = __( 'Job Manager: Highlighted Jobs', 'jobman');
    		$options = array( 'description' => __( 'A list jobs that have been marked as highlighted', 'jobman' ) );
    
            parent::__construct( false, $name, $options );
        }
    
        function widget( $args, $instance ) {
    		global $wp_query;
    
            extract( $args );
            $title = apply_filters( 'widget_title', $instance['title'] );
    
    		echo $before_widget;
    
    		if ( $title )
    			echo $before_title . $title . $after_title;
    
    		$args = array(
    					'post_type' => 'jobman_job',
    					'numberposts' => -1,
    					'suppress_filters' => false,
    					'meta_key' => 'highlighted',
    					'meta_value' => 1
    				);
    		add_filter( 'posts_where', 'jobman_job_live_where' );
    		add_filter( 'posts_join', 'jobman_job_live_join' );
    		add_filter( 'posts_distinct', 'jobman_job_live_distinct' );
    
    		$jobs = get_posts( $args );
    
    		remove_filter( 'posts_where', 'jobman_job_live_where' );
    		remove_filter( 'posts_join', 'jobman_job_live_join' );
    		remove_filter( 'posts_distinct', 'jobman_job_live_distinct' );
    
    		foreach( $jobs as $id => $job ) {
    			// Remove expired jobs
    			$displayenddate = get_post_meta( $job->ID, 'displayenddate', true );
    			if( '' != $displayenddate && strtotime( $displayenddate ) <= time() ) {
    				unset( $jobs[$id] );
    				continue;
    			}
    
    				// Remove future jobs
    			$displaystartdate = $job->post_date;
    			if( '' != $displaystartdate && strtotime( $displaystartdate ) > time() ) {
    				unset( $jobs[$id] );
    				continue;
    			}
    		}
    
    		if( count( $jobs ) > 0 ) {
    			echo '<ul>';
    			foreach( $jobs as $job ) {
    				echo '<li><a href="' . get_page_link( $job->ID ) . '">' . $job->post_title . '</a></li>';
    			}
    			echo '</ul>';
    		}
    		else {
    			echo '<p>' . __( 'There are no jobs to display at this time.', 'jobman' ) . '</p>';
    		}
    
    		echo $after_widget;
        }
    
        function update( $new_instance, $old_instance ) {
    		return $new_instance;
        }
    
        function form( $instance ) {
    		$title = '';
    		if( array_key_exists( 'title', $instance ) )
    			$title = esc_attr( $instance['title'] );
    ?>
                <p>
    				<label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title', 'jobman' ); ?>:
    					<input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo $title; ?>" />
    				</label>
    			</p>
    <?php
    	}
    
    }
    
    class JobmanJobsWidget extends WP_Widget {
        /** constructor */
        function __construct() {
    		$name = __( 'Job Manager: Selected Jobs', 'jobman');
    		$options = array( 'description' => __( 'A customizable list jobs posted to your site', 'jobman' ) );
    
            parent::__construct( false, $name, $options );
        }
    
        function widget( $args, $instance ) {
            extract( $args );
            $title = apply_filters( 'widget_title', $instance['title'] );
    
    		echo $before_widget;
    
    		if ( $title )
    			echo $before_title . $title . $after_title;
    
    		$args = array(
    					'post_type' => 'jobman_job',
    					'numberposts' => -1,
    					'suppress_filters' => false,
    					'post__in' => explode( ',', $instance['jobs'] )
    				);
    		add_filter( 'posts_where', 'jobman_job_live_where' );
    		add_filter( 'posts_join', 'jobman_job_live_join' );
    		add_filter( 'posts_distinct', 'jobman_job_live_distinct' );
    
    		$jobs = get_posts( $args );
    
    		remove_filter( 'posts_where', 'jobman_job_live_where' );
    		remove_filter( 'posts_join', 'jobman_job_live_join' );
    		remove_filter( 'posts_distinct', 'jobman_job_live_distinct' );
    
    		if( count( $jobs ) > 0 ) {
    			echo '<ul>';
    			foreach( $jobs as $job ) {
    				echo '<li><a href="' . get_page_link( $job->ID ) . '">' . $job->post_title . '</a></li>';
    			}
    			echo '</ul>';
    		}
    		else {
    			echo '<p>' . __( 'There are no jobs to display at this time.', 'jobman' ) . '</p>';
    		}
    
    		echo $after_widget;
        }
    
        function update( $new_instance, $old_instance ) {
    		return $new_instance;
        }
    
        function form( $instance ) {
    		$title = '';
    		if( array_key_exists( 'title', $instance ) )
    			$title = esc_attr( $instance['title'] );
    ?>
                <p>
    				<label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title', 'jobman' ); ?>:
    					<input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo $title; ?>" />
    				</label>
    			</p>
    <?php
    			$jobs = esc_attr( $instance['jobs'] );
    ?>
                <p>
    				<label for="<?php echo $this->get_field_id( 'jobs' ); ?>"><?php _e( 'Comma separated list of Job IDs', 'jobman' ); ?>:
    					<input class="widefat" id="<?php echo $this->get_field_id( 'jobs' ); ?>" name="<?php echo $this->get_field_name( 'jobs' ); ?>" type="text" value="<?php echo $jobs; ?>" />
    				</label>
    			</p>
    <?php
    	}
    
    }
    
    ?>

    Thank you for your job.

    Kind regards.

    https://wordpress.org/plugins/job-manager/

Viewing 5 replies - 1 through 5 (of 5 total)
  • Plugin Author Thomas Townsend

    (@smb-dev)

    Would be great if you some examples of what your seeing and where your seeing this ?

    Will also need specifics of your install, Theme, Plugins, server etc ??

    How do you know this is not a Theme and or plugin conflict ?

    Thread Starter Art Project Group

    (@artprojectgroup)

    It’s a WordPress 4.3 compatibility fix.

    We detect a lot of Notice in your code 🙁

    Kind regards.

    Plugin Author Thomas Townsend

    (@smb-dev)

    Art Project Group if you have anywhere else that you would like to chip in for code updates let me know. I will update and test this and if you want to provide an email I can include you in on Testing and will give you credit attribution assists

    Plugin Author Thomas Townsend

    (@smb-dev)

    Hi Art, working on this over the WE and something in the new code for WP 4.4.2 is causing havoc with the Category Taxonomy.

    Everything works until you select a Category from the Widget then it blows up with Catchable fatal error: Object of class WP_Error could not be converted to string in \wp-includes\formatting.php on line 3376

    Looks like am back troubleshooting again…you have this working on your install ?

    Thread Starter Art Project Group

    (@artprojectgroup)

    Sorry, but we don’t have any installation with your plugin active 🙁

    Kind regards.

Viewing 5 replies - 1 through 5 (of 5 total)
  • The topic ‘Update widgets.php’ is closed to new replies.