*/
class Applyonline_Public {
/**
* The ID of this plugin.
*
* @since 1.0.0
* @access private
* @var string $plugin_name The ID of this plugin.
*/
protected $plugin_name;
/**
* The version of this plugin.
*
* @since 1.0.0
* @access private
* @var string $version The current version of this plugin.
*/
protected $version;
/**
* Initialize the class and set its properties.
*
* @since 1.0.0
* @param string $plugin_name The name of the plugin.
* @param string $version The version of this plugin.
*/
public function __construct( $plugin_name, $version ) {
$this->plugin_name = $plugin_name;
$this->version = $version;
new SinglePostTemplate($plugin_name, $version); //Passing 2 parameters to the child
new Applyonline_Shortcodes();
}
/**
* Register the stylesheets for the public-facing side of the site.
*
* @since 1.0.0
*/
public function enqueue_styles() {
/**
* This function is provided for demonstration purposes only.
*
* An instance of this class should be passed to the run() function
* defined in Applyonline_Loader as all of the hooks are defined
* in that particular class.
*
* The Applyonline_Loader will then create the relationship
* between the defined hooks and the functions defined in this
* class.
*/
wp_enqueue_style( $this->plugin_name.'-BS', plugin_dir_url( __FILE__ ) . 'css/bootstrap.min.css', array(), $this->version, 'all' );
wp_enqueue_style('jquery-ui-css', 'https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css');
wp_enqueue_style( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'css/applyonline-public.css', array(), $this->version, 'all' );
}
/**
* Register the stylesheets for the public-facing side of the site.
*
* @since 1.0.0
*/
public function enqueue_scripts() {
/**
* This function is provided for demonstration purposes only.
*
* An instance of this class should be passed to the run() function
* defined in Applyonline_Loader as all of the hooks are defined
* in that particular class.
*
* The Applyonline_Loader will then create the relationship
* between the defined hooks and the functions defined in this
* class.
*/
wp_enqueue_script( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'js/applyonline-public.js', array( 'jquery','jquery-ui-datepicker' ), $this->version, false );
$aol_js_vars = array(
'ajaxurl' => admin_url ( 'admin-ajax.php' ),
'date_format' => get_option('aol_date_format', 'dd-mm-yy')
);
wp_localize_script (
$this->plugin_name,
'aol_public',
apply_filters('aol_js_vars', $aol_js_vars)
);
}
public function check_ad_closing_status($query){
$types = get_aol_ad_types();
if(!is_admin() and isset($query->query['post_type']) and in_array($query->query['post_type'], $types)){
global $wpdb;
$closed = $wpdb->get_col("SELECT post_id FROM $wpdb->postmeta WHERE meta_key = '_aol_ad_closing_date' AND meta_value <= UNIX_TIMESTAMP() AND post_id NOT IN (SELECT post_id FROM wp_postmeta WHERE meta_key = '_aol_ad_close_type' AND meta_value != 'ad')");
$query->set('post__not_in', $closed);
}
}
}
class SinglePostTemplate{
var $plugin_name;
var $version;
public function __construct($plugin_name = null, $version = null) {
$this->plugin_name = $version;
$this->version = $plugin_name;
add_filter('body_class', array($this, 'aol_body_classes'));
add_filter( 'the_content', array($this, 'aol_the_content') );
}
function aol_body_classes($classes){
$classes[] = $this->plugin_name;
$classes[] = $this->plugin_name.'-'.$this->version;
return $classes;
}
public function aol_ad_is_checked($i){
if($i==0) $checked="checked";
else $checked = NULL;
return $checked;
}
public function application_form_fields($post_id = 0){
//Get current post object on SINGLE Template file(e.g. single.php, aol_ad-single.php).
if(empty($post_id)){
global $post;
$post_id = $post->ID;
}
$field_types = array('text'=>'Text', 'checkbox'=>'Check Box', 'dropdown'=>'Drop Down', 'radio'=> 'Radio', 'file'=> 'File', 'separator' => 'Seprator');
$raw_fields = get_aol_ad_post_meta($post_id);
$fields = array();
$i=0;
foreach($raw_fields as $key => $val){
$fields[$i] = $val; //
$fields[$i]['key'] = substr($key, 9); //Add key as array element for easy access.
if(isset($fields[$i]['options'])) $fields[$i]['options'] = array_combine(explode(',', $fields[$i]['options']), explode(',', $fields[$i]['options'])); //Add options as an array, Setting arrays keys & values alike.
if(!isset($fields[$i]['required'])) $fields[$i]['required'] = 1; //Fix for older versions (prior to 1.6.1 when REQUIRED field was not available)
if(isset($fields[$i]['type']) AND $fields[$i]['type']=='seprator') $fields[$i]['type'] = 'separator'; //Fixed bug before 1.9.6, spell mistake in the key.
$i++;
}
return $fields;
//Debuggin
}
public function application_form($post_id = 0){
if(empty($post_id) AND !is_singular()){
return '
'.__('Form ID is missing', 'ApplyOnline').'
';
}
global $post;
if(empty($post_id)) $post_id = $post->ID;
ob_start();
$fields = apply_filters('aol_form_fields', $this->application_form_fields($post_id), $post_id);
$date = get_post_meta($post_id, '_aol_ad_closing_date', TRUE);
if( !empty($date) AND $date < time() )
return ''.__('We are no longer accepting applications for this ad.', 'ApplyOnline').'';
?>
ID;
$fields = get_aol_ad_features($post_id);
$metas = NULL;
if( !empty($fields) ):
switch ($output):
case 'heading':
$start_wrapper = '
';
$close_wrapper = '
';
$row_start = '
';
$separator = ':
';
$row_close = '';
break;
case 'list':
$start_wrapper = '
';
$form = $this->application_form();
//Show this content if you are viewing aol_ad post type using single.php (not with single-aol_type.php)
$aol_content;
$this_template = substr(wp_basename($template), 7, -4);
if(in_array($this_template, $aol_types) OR has_shortcode( $content, 'aol_form' )):
$aol_content = $content;
else:
$aol_content = '
"; //Outer Wrapper
do_action('aol_after_archive', $post);
else: _e('Sorry, we could not find what you were looking for.', 'ApplyOnline');
endif;
wp_reset_postdata();
$html = apply_filters('aol_shortcode', ob_get_clean());
return '
'.$html.'
';
}
function aol_excerpt_more( $more ) {
return '....';
}
//@todo Form generated with this shortcode may not submit & generate error: "Your form could not submit, Please contact us"
function aol_form( $atts ){
global $post;
$id = is_singular('aol_ad') ? $post->ID: NULL;
$a = shortcode_atts( array(
//Check if shortcode is called on the Ads Page, ID is not required in that case.
//@todo extend post type to all ad types.
'id' => $id,
), $atts );
if(isset($a['id'])) return aol_form($a['id']);
}
/*
* @todo: this function should print complete ad with application form.
*/
function aol_ad( $atts ) {
$a = shortcode_atts( array(
'id' => NULL,
), $atts );
if(isset($a['id'])) {
$post = $a['id'];
return $post->post_content;
}
}
function aol_filters($atts){
//@ad support for all ad types.
if(!is_singular('aol_ad')) return;
$a = shortcode_atts( array(
'style' => 'csv',
), $atts );
global $post;
$filters = aol_ad_cpt_filters(get_post_type());// rich_print($filters);
$terms = get_terms(array('object_ids' => $post->ID, 'orderby' => 'term_group', 'hide_empty' => TRUE, 'taxonomy' => aol_sanitize_taxonomies($filters)));
//$filters = aol_ad_cpt_filters($a['type']);
ob_start();
echo '