*/ class Applyonline_Admin{ /** * The ID of this plugin. * * @since 1.0.0 * @access private * @var string $plugin_name The ID of this plugin. */ private $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 this plugin. * @param string $version The version of this plugin. */ public function __construct( $plugin_name, $version ) { $this->plugin_name = $plugin_name; $this->version = $version; // Hook - Applicant Listing - Column Name add_filter( 'manage_edit-aol_application_columns', array ( $this, 'applicants_list_columns' ) ); // Hook - Applicant Listing - Column Value add_action( 'manage_aol_application_posts_custom_column', array ( $this, 'applicants_list_columns_value' ), 10, 2 ); //Fix comments on application add_filter('comment_row_actions', array($this, 'comments_fix'), 10, 2); add_filter('post_row_actions',array($this, 'aol_post_row_actions'), 10, 2); //Filter Aplications based on parent. add_action( 'pre_get_posts', array($this, 'applications_filter') ); // Add Application data to the Application editor. add_action ( 'edit_form_after_title', array ( $this, 'aol_application_post_editor' ) ); //Application Print add_action('init', array($this, 'application_print')); add_filter( 'post_date_column_status', array($this, 'application_date_column'), 10, 2); $this->hooks_to_search_in_post_metas(); new Applyonline_MetaBoxes(); new Applyonline_Settings($version); } /** * Register the stylesheets for the admin area. * * @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, plugin_dir_url( __FILE__ ) . 'css/applyonline-admin.css', array(), $this->version, 'all' ); //wp_enqueue_style( 'aol-sk', plugin_dir_url( __FILE__ ) . 'css/skeleton-grid.css', array(), $this->version, 'all' ); } /** * Register the JavaScript for the admin area. * * @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. */ $localize['app_submission_message'] = __('Form has been submitted successfully. If required, we will get back to you shortly!', 'ApplyOnline'); $localize['app_closed_alert'] = __('We are no longer accepting applications for this ad!', 'ApplyOnline'); $localize['aol_required_fields_notice'] = __('Fields with (*) are compulsory.', 'ApplyOnline'); $localize['admin_url'] = admin_url(); $localize['aol_url'] = plugins_url( 'apply-online/' ); wp_enqueue_script( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'js/applyonline-admin.js', array( 'jquery', 'jquery-ui-sortable' ), $this->version, false ); wp_enqueue_script($this->plugin_name.'_md5', plugin_dir_url(__FILE__).'js/md5.min.js', array( 'jquery' ), $this->version, false); wp_localize_script( $this->plugin_name, 'aol_admin', $localize ); } public function settings_notice(){ $notices = get_option('aol_dismissed_notices', array()); if(in_array('aol', $notices) OR !current_user_can('manage_options')) return; //__( "%sApply Online%s - It's good to %scheck things%s before a long drive.", 'ApplyOnline' ) ?>

', ''); ?> ', ''); ?>

ID, '_aol_ad_closing_date', true); if($timestamp != null and $timestamp < time()){ $post_states['ad_closed'] = __( 'Closed' ); } return $post_states; } public function aol_ad_closing($post){ $types = get_aol_ad_types(); if( !in_array($post->post_type, $types)) return; $date = $closed_class = NULL; $close_type = get_post_meta($post->ID, '_aol_ad_close_type', true); $close_ad = ($close_type == 'ad' or empty($close_type)) ? 'checked': NULL; $close_form = ($close_type == 'form') ? 'checked': NULL; $timestamp = (int)get_post_meta($post->ID, '_aol_ad_closing_date', true); if(is_int($timestamp) and $timestamp != null){ $date = date('j-m-Y' ,sanitize_text_field($timestamp)); $closed_class = ($timestamp < time()) ? 'closed' : null; } ob_start(); ?>

Format: dd-mm-yyyy
Example:

When Expires:
/>     />

getTimestamp(); update_post_meta( $post_id, '_aol_ad_closing_date', $timestamp); //Add new value. } } update_post_meta( $post_id, '_aol_ad_close_type', $_POST['_aol_ad_close_type']); //Add new value. } function application_date_column($status, $post ){ if($post->post_type == 'aol_application') $status = 'Received'; return $status; } /** * Extend WordPress search to include custom fields * Join posts and postmeta tables * * http://codex.wordpress.org/Plugin_API/Filter_Reference/posts_join * * @since 1.6 */ function hooks_to_search_in_post_metas(){ add_filter('posts_join', array($this, 'cf_search_join' )); add_filter( 'posts_where', array($this, 'cf_search_where' )); add_filter( 'posts_distinct', array($this, 'cf_search_distinct' )); } function cf_search_join( $join ) { global $wpdb; if ( is_search() and is_admin() ) { $join .=' LEFT JOIN '.$wpdb->postmeta. ' ON '. $wpdb->posts . '.ID = ' . $wpdb->postmeta . '.post_id '; } return $join; } /** * Modify the search query with posts_where * * http://codex.wordpress.org/Plugin_API/Filter_Reference/posts_where * * @since 1.6 */ function cf_search_where( $where ) { global $wpdb; if ( is_search() and is_admin() ) { $where = preg_replace( "/\(\s*".$wpdb->posts.".post_title\s+LIKE\s*(\'[^\']+\')\s*\)/", "(".$wpdb->posts.".post_title LIKE $1) OR (".$wpdb->postmeta.".meta_value LIKE $1)", $where ); } return $where; } /** * Prevent duplicates * * http://codex.wordpress.org/Plugin_API/Filter_Reference/posts_distinct * * @since 1.6 */ function cf_search_distinct( $where ) { global $wpdb; if ( is_search() and is_admin() ) { return "DISTINCT"; } return $where; } /** * */ public function comments_fix($actions, $comment){ $post_id = $comment->comment_post_ID; if(get_post_field('post_type', $post_id) == 'aol_application'){ $author = get_user_by('email', $comment->comment_author_email ); if(get_current_user_id() != $author->ID) unset($actions['quickedit']); //if not comment author, dont show the quick edit unset($actions['unapprove']); unset($actions['trash']); unset($actions['edit']); } return $actions; } /** * Applicant Listing - Column Name * * @param array $columns * @access public * @return array */ public function applicants_list_columns( $columns ){ $columns = array ( 'cb' => '', 'title' => __( 'Ad Title', 'ApplyOnline' ), 'applicant'=> __( 'Applicant', 'ApplyOnline' ), 'taxonomy' => __( 'Status', 'ApplyOnline' ), 'date' => __( 'Date', 'ApplyOnline' ), ); return $columns; } /** * Case in-sensitive array_search() with partial matches * * @param string $needle The string to search for. * @param array $haystack The array to search in. * * @author Bran van der Meer * @since 29-01-2010 */ function array_find($needle, array $haystack) { foreach ($haystack as $key => $value) { if (stripos($value, $needle) !== FALSE) { return $key; } } return false; } /** * Applicant Listing - Column Value * * @param array $columns * @param int $post_id * @access public * @return void */ public function applicants_list_columns_value( $column, $post_id ){ $keys = get_post_custom_keys( $post_id ); $values = get_post_meta($post_id); $new = array(); foreach($values as $key => $val){ $new[$key]=$val[0]; } $name = $this->array_find(__('Name','ApplyOnline'), $keys); switch ( $column ) { case 'applicant' : if($name === FALSE): $applicant_name = __('Undefined', 'ApplyOnline'); else: $applicant = get_post_meta( $post_id, $keys[ $name ], TRUE ); if(is_object($applicant)) $applicant = NULL; elseif(is_array($applicant)) $applicant = implode(',', $applicant); $applicant_name = sprintf( '%s', esc_url( add_query_arg( array ( 'post' => $post_id, 'action' => 'edit' ), 'post.php' ) ), esc_html( $applicant ) ); endif; echo $applicant_name; break; case 'taxonomy' : //$parent_id = wp_get_post_parent_id( $post_id ); // get_post_field ( 'post_parent', $post_id ); $terms = get_the_terms( $post_id, 'aol_application_status' ); if ( ! empty( $terms ) ) { $out = array (); foreach ( $terms as $term ) { $out[] = sprintf( '%s', esc_url( add_query_arg( array ( 'post_type' => 'aol_application', 'aol_application_status' => $term->slug ), 'edit.php' ) ), esc_html( sanitize_term_field( 'name', $term->name, $term->term_id, 'jobpost_category', 'display' ) ) ); } echo join( ', ', $out ); }/* If no terms were found, output a default message. */ else { _e( 'Undefined' , 'ApplyOnline'); } break; } } public function aol_post_row_actions($actions, $post){ $types = get_aol_ad_types(); if($post->post_type == 'aol_application'){ $actions = array(); //Empty actions. $actions['filters'] = ''; $actions['ad'] = ''; $actions['view'] = ''; } elseif( in_array($post->post_type, $types) ){ $actions['test'] = 'Applications'; } return $actions; } public function applications_filter( $query ) { if ( $query->is_main_query() AND is_admin() AND isset($_GET['ad'])) { $query->set( 'post_parent', $_GET['ad'] ); } } public function application_print(){ if( current_user_can('edit_applications') AND isset($_GET['aol_page']) AND $_GET['aol_page'] == 'print' ){ $post = get_post($_GET['id']); $parent = get_post($post->post_parent); ?> Application <?php echo $_GET['id']; ?> - Apply online
#

post_title; ?>

post_date; ?>
Application

'; endforeach; ?>
' . $row['label'] . '' . $row['value'] . '
post_type =='aol_application' ): ?>

ID, '_aol_attachment', true ); ?>    

'; endforeach;; ?>
' . $row['label'] . '' . $row['value'] . '

app_field_types = $this->app_field_types(); add_action( 'add_meta_boxes', array($this, 'aol_meta_boxes'),1 ); add_action('admin_menu', array($this, 'remove_submit_metabox')); add_action('aol_schedule_event', array($this, 'close_ad')); //keep this cron hook claing at top. add_action('post_submitbox_misc_actions', array($this, 'aol_metas')); add_action( 'save_post', array( $this, 'save_ad' ) ); add_action('save_post_aol_application', array($this, 'save_application')); add_action('do_meta_boxes', array($this, 'alter_metaboxes_on_application_page')); add_action( 'admin_enqueue_scripts', array($this, 'enqueue_date_picker') ); add_action("wp_ajax_aol_template_render", array($this, "aol_form_template_render")); } function app_field_types(){ return array( 'text'=>'Text Field', 'number'=>'Number Field', 'text_area'=>'Text Area', 'email'=>'E Mail Field', 'date'=>'Date Field', 'checkbox'=>'Check Boxes', 'radio'=> 'Radio Buttons', 'dropdown'=>'Dropdown Options', 'file'=>'Attachment Field', //'seprator' => 'Seprator', //Deprecated since 1.9.6. Need to be fixed for older versions. 'separator' => 'Separator', 'paragraph' => 'Paragraph', ); } function save_application($post_id){ if ( wp_is_post_revision( $post_id ) ) return; // Check if this post is in default category if ( isset($_POST['aol_tag']) AND !empty($_POST['aol_tag'])) { $result = current_user_can('delete_application') ? wp_set_post_terms( $post_id, $_POST['aol_tag'], 'aol_application_status' ): array(); $term = get_term($result[0]); do_action('aol_application_status_change', $term, $post_id); } } function remove_submit_metabox(){ remove_meta_box( 'submitdiv', 'aol_application', 'side' ); } function close_ad($post_id){ update_post_meta($post_id, '_aol_closed', 0); } function enqueue_date_picker(){ wp_enqueue_script( 'jquery-ui-datepicker'); wp_enqueue_style('jquery-ui-css', 'https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.min.css'); } public function alter_metaboxes_on_application_page(){ remove_meta_box('commentstatusdiv', 'aol_application', 'normal'); //Hide discussion meta box. } /** * Metaboxes for Ads Editor * * @since 1.0 */ function aol_meta_boxes($post) { $screens = array('aol_ad'); $types = get_option_fixed('aol_ad_types'); if(is_array($types)){ foreach ($types as $type){ $screens[] = 'aol_'.strtolower($type['singular']); } } if(empty($screens) or !is_array($screens)) $screens = array(); add_meta_box( 'aol_ad_metas', __( 'Ad Features', 'ApplyOnline' ), array($this, 'ad_features'), $screens, 'advanced', 'high' ); add_meta_box( 'aol_ad_app_fields', __( 'Application Form Builder', 'ApplyOnline' ), array($this, 'application_form_fields'), $screens, 'advanced', 'high' ); add_meta_box( 'aol_application', __( 'Application Details', 'ApplyOnline' ), array($this, 'application_general'), 'aol_application', 'side' ); /* add_meta_box( 'aol_form_builder', __( 'New Application Form Builder', 'ApplyOnline' ), array($this, 'application_form_builder'), $screens, 'advanced', 'high' ); * */ } function application_general(){ global $post; $post_terms = get_the_terms( $post->ID, 'aol_application_status'); $stauses = aol_app_statuses_active(); ?>

Print Application

post_type, $types)) return; echo '
'; echo '

Full ad shortcode

'; echo '

Form shortcode

'; echo '

View All applications

'; do_action('aol_metabox_after', $post); echo '
'; } function ad_features( $post ) { // Add a nonce field so we can check for it later. wp_nonce_field( 'myplugin_adpost_meta_awesome_box', 'adpost_meta_box_nonce' ); /* * Use get_post_meta() to retrieve an existing value * from the database and use the value for the form. */ ?>
    ID); if($keys != NULL): foreach($keys as $key): if(substr($key, 0, 13)=='_aol_feature_'){ $val = get_post_meta($post->ID, $key, TRUE); echo '
  1. '; if( is_array($val) ){ echo '    
    Delete
  2. '; } else{ echo '  
    Delete
    '; } } endforeach; endif; ?>
Add Feature
New Field
Add Field $field){ if( substr($key, 0, 4) != '_aol' ) unset($array[$key]); } echo $this->aol_form_template($array); exit; } function aol_form_template($fields){ foreach($fields as $key => $val): $key = esc_attr($key); $label = isset($val['label']) ? sanitize_text_field($val['label']) : str_replace('_',' ',substr($key,9)); // $description = isset($val['description']) ? esc_html($val['description']) : NULL; // $required = (int)$val['required']; if($val['type']=='seprator') $val['type'] = 'separator'; //Fixed bug before 1.9.6, spell mistake in the key. if(!isset($val['required'])) $val['required'] = 1; $req_class = ($val['required'] == 0) ? 'button-disabled': null; $fields = NULL; foreach($this->app_field_types as $field_key => $field_val){ $field_key = esc_attr($field_key); $field_val = sanitize_text_field($field_val); if($val['type'] == $field_key) $fields .= ''; else $fields .= ''; } $req_class .= ($val['type'] == 'separator' OR $val['type'] == 'paragraph') ? ' button-disabled' : ' toggle-required'; //if($key.'[type]'=='text'){ echo ''; echo ' '; echo ''; echo ''; echo ''; echo '
'.__('Required', 'ApplyOnline').'
'; echo ''; echo ''; //if(!($val['type']=='text' or $val['type']=='email' or $val['type']=='date' or $val['type']=='text_area' or $val['type']=='file' )): if(in_array($val['type'], array('checkbox','dropdown','radio'))): echo ''; else: echo ''; endif; echo '   '; echo ''; do_action('aol_after_form_field', $key); echo ''; //} endforeach; } public function application_form_fields( $post ) { //global $adfields; // Add a nonce field so we can check for it later. wp_nonce_field( 'myplugin_adpost_meta_awesome_box', 'adpost_meta_box_nonce' ); do_action('aol_before_form_builder', $post); /* * Use get_post_meta() to retrieve an existing value * from the database and use the value for the form. */ ?>
ID); } else{ $fields = get_option('aol_default_fields', array()); if(empty($fields)){ $fields = get_option('aol_form_templates', array()); $templates = TRUE; $keys = array_keys($fields); $options = null; foreach($keys as $key){ $options.= ''; } ?> aol_form_template($fields); endif; do_action('aol_after_form_builder', $post); ?>
   
application_fields_generator($this->app_field_types); ?>
$val): if(substr($val, 0, 13) == '_aol_feature_' OR substr($val, 0, 9) == '_aol_app_'){ delete_post_meta($post_id, $val); //Remove meta from the db. } endforeach; // $existing_keys = array_diff($old_keys, $removed_keys); //List of removed meta keys. UNUSED // Add/update new value. $fields_order = array(); foreach ($_POST as $key => $val): // Make sure that it is set. if ( substr($key, 0, 13)=='_aol_feature_' and isset( $val ) ) { /*Adding Support for version >= 1.9*/ if( !is_array($val) ){ $val = array('label' => str_replace('_', ' ',substr($key, 13)), 'value' => $val); } //Sanitize user input. $my_data = array_map( 'sanitize_text_field', $val ); update_post_meta( $post_id, sanitize_key($key), $my_data); // Add new value. } // Make sure that it is set. elseif ( substr($key, 0, 9) == '_aol_app_' and isset( $val ) ) { //$my_data = serialize($val); if(in_array($val['type'], array('separator', 'seprator', 'paragraph'))) $val['required'] = 0; $val['options'] = explode(',', $val['options']); $val['options'] = implode(',', array_map('trim',$val['options'])); /*END - Remove white spaces */ update_post_meta( $post_id, sanitize_key($key), $val); // Add new value. $fields_order[] = sanitize_key($key); } // endforeach; update_post_meta( $post_id, '_aol_fields_order', $fields_order); // Add new value. } function ismd5($md5 ='') { return strlen($md5) == 32 && ctype_xdigit($md5); } } class Applyonline_Updater{ function db_updater(){ global $wpdb; //$rows = $wpdb->get_results( "SELECT * FROM $wpdb->postmeta WHERE meta_key = '_aol_app_%' AND meta_value != ".'%"label"%' ); } } /** * This class contains all nuts and bolts of plugin settings. * * * @since 1.3 * @package Applyonline_settings * @author Farhan Noor **/ class Applyonline_Settings extends Applyonline_MetaBoxes{ private $version; public function __construct($version) { //parent::__construct(); //Acitvating Parent's constructor $this->version = $version; //Registering Submenus. add_action('admin_menu', array($this, 'sub_menus')); //Registering Settings. add_action( 'admin_init', array($this, 'registers_settings') ); add_filter( 'plugin_row_meta', array($this, 'plugin_row_meta'), 10, 2 ); //Manageing AOL role capabilites. add_filter( "option_page_capability_aol_settings_group", 'aol_manager_capability' ); add_filter( "option_page_capability_aol_ad_template", 'aol_manager_capability' ); add_filter( "option_page_capability_aol_ads", 'aol_manager_capability' ); add_filter( "option_page_capability_aol_applications", 'aol_manager_capability' ); } public function plugin_row_meta($links, $file){ if ( strpos( $file, 'apply-online.php' ) !== false ){ $links['settings'] = 'Settings'; } return $links; } public function sub_menus(){ add_menu_page( __('Settings', 'ApplyOnline'), _x('Apply Online', 'Admin Menu', 'ApplyOnline'), 'edit_applications', 'aol-settings', array($this, 'settings_page_callback'), 'dashicons-admin-site',31 ); add_submenu_page('aol-settings', __('Settings', 'ApplyOnline'), _x('Settings', 'Admin Menu', 'ApplyOnline'), 'delete_others_ads', 'aol-settings'); $filters = aol_ad_filters(); foreach($filters as $key => $val){ add_submenu_page( 'aol-settings', '', sprintf(__('%s Filter', 'ApplyOnline'), $val['plural']), 'delete_others_ads', "edit-tags.php?taxonomy=aol_ad_".sanitize_key($key)."&post_type=aol_ad", null ); } } function save_settings(){ if(!current_user_can('edit_applications')) return; if ( !empty( $_POST['aol_default_app_fields'] ) && check_admin_referer( 'aol_awesome_pretty_nonce','aol_default_app_fields' ) ) { foreach($_POST as $tempid => $template): //Check if all top level template keys starts with 'template' keyword. if(isset($_POST[$tempid])){ if($tempid == 'new'){ if( !empty($_POST[$tempid]['templateName']) ) $_POST['template'.time()] = $template; unset($_POST[$tempid]); } elseif( substr($tempid, 0, 8) != 'template' ) unset ($_POST[$tempid]); //if(is_array($template) AND (key($template) != 'templateName' OR substr(key($template), 0, 4) != '_aol')) unset($_POST[$tempid][key($template)]); } /* if(substr($tempid, 0, 8) != 'template'){ unset($_POST[$tempid]); continue; } * */ //Remove unnecessary fields //foreach($template as $key => $val){ //If not an aol meta key, unset it & continue to next iteration. //Replacing meta key with sanitized one. //unset($_POST[$tempid][$key]); //$_POST[$tempid][sanitize_key($key)] = $val; //} //Save aol default fields in DB. endforeach; //rich_print($_POST); die(); update_option('aol_form_templates', $_POST, FALSE); } } //Depricated since 1.9.92 function save_settings_x(){ if(!current_user_can('edit_applications')) return; if ( !empty( $_POST['aol_default_app_fields'] ) && check_admin_referer( 'aol_awesome_pretty_nonce','aol_default_app_fields' ) ) { //Remove unnecessary fields foreach($_POST as $key => $val){ //If not an aol meta key, unset it & continue to next iteration. if(substr($key, 0, 4) != '_aol'){ unset($_POST[$key]); continue; } //Replacing meta key with sanitized one. unset($_POST[$key]); $_POST[sanitize_key($key)] = $val; } //Save aol default fields in DB. update_option('aol_default_fields', $_POST); update_option('aol_template_forms', $_POST); } } public function settings_page_callback(){ $this->save_settings(); $tabs = $tabs = json_decode(json_encode($this->settings_api()), FALSE); ob_start(); ?>

version version; ?>

id; echo '
'; if(isset($tab->name)) echo '

'.$tab->name.'

'; if(isset($tab->desc)) echo '

'.$tab->desc.'

'; echo isset($tab->output) ? $tab->output : $this->$func(); //Return $output or related method of the same variable name. echo '
'; } ?>
'integer', 'default' => 1, 'sanitize_callback' => 'intval') ); register_setting( 'aol_settings_group', 'aol_upload_folder', array('sanitize_callback' => 'sanitize_text_field') ); register_setting( 'aol_settings_group', 'aol_allowed_file_types', array('sanitize_callback' => 'sanitize_text_field') ); //Registering aol_settings API option, example is given. /* $settings = array( 'type' => 'text', 'label' => 'Google Map Key', 'key' => 'aol_map_key', 'secret' => true, 'helptext' => __('Google Map API key to display map in the [aol] shortcode output.', 'ApplyOnlineEtic'), 'value' => get_option('aol_map_key') ); * */ /* $settings = get_aol_settings(); //rich_print($settings); die(); foreach($settings as $setting){ $key = get_option($setting['key']); //$val = $setting['value']; /* //if option is empty, is secret & is already saved. then keep the old value & avoid option update. if($setting['secret'] AND empty($val) AND !empty($key)){ rich_print($setting); die(); continue; } //if($setting['secret']) register_setting( 'aol_settings_group', $key, array('sanitize_callback' => 'aol_crypt') ); register_setting( 'aol_settings_group', $key ); } * */ register_setting( 'aol_ad_template', 'aol_default_fields');//Depreciated register_setting( 'aol_ad_template', 'aol_form_templates'); register_setting( 'aol_ads', 'aol_ad_types', array('sanitize_callback' => 'aol_sanitize_filters') ); register_setting( 'aol_ads', 'aol_ad_filters', array('sanitize_callback' => 'aol_array_check') ); register_setting( 'aol_applications', 'aol_app_statuses', array('default' => array())); //On update of aol_slug field, update permalink too. add_action('update_option_aol_slug', array($this, 'refresh_permalink')); add_action('update_option_aol_ad_types', array($this, 'refresh_types_permalink'), 10, 3); } public function refresh_permalink(){ //Re register post type for proper Flush Rules. $slug = get_option_fixed('aol_slug', 'ads'); /*Register Main Post Type*/ register_post_type('aol_ad', array('has_archive' => true, 'rewrite' => array('slug'=> $slug))); flush_rewrite_rules(); } function register_cpts_for_flushing($cpt, $plural){ $result = register_post_type('aol_'.$cpt, array( 'has_archive' => true, 'public' => true, 'rewrite' => array('slug' => sanitize_key($plural)), )); } function refresh_types_permalink($old, $new, $option){ wp_cache_delete ( 'alloptions', 'options' ); foreach($new as $cpt => $val){ $this->register_cpts_for_flushing($cpt, $val['plural']); } flush_rewrite_rules(); } function settings_api(){ $tabs = array( 'general' => array( 'id' => 'general', 'name' => __( 'General' ,'ApplyOnline' ), 'desc' => __( 'General settings of the plugin', 'ApplyOnline' ), 'href' => null, 'classes' => 'nav-tab-active', ), 'template' => array( 'id' => 'template', 'name' => __('Template' ,'ApplyOnline'), 'desc' => __( 'Application form templates for new ads.', 'ApplyOnline' ), 'href' => null, ), 'applications' => array( 'id' => 'applications', 'name' => __('Applications' ,'ApplyOnline'), 'desc' => __( 'Add status to each application you have received.', 'ApplyOnline' ), 'href' => null, ), 'types' => array( 'id' => 'types', 'name' => __('Ad Types' ,'ApplyOnline'), 'desc' => __( 'Define different types of ads e.g. Careers, Classes, Memberships. These types will appear under All Ads section.', 'ApplyOnline' ), 'href' => null, ), /*'labels' => array( 'id' => 'labels', 'name' => __('Labels' ,'ApplyOnline'), 'desc' => __( 'Modify labels on front-end.', 'ApplyOnline' ), 'href' => null, ),*/ ); $tabs = apply_filters('aol_settings_tabs', $tabs); $tabs['faqs'] = array( 'id' => 'faqs', 'name' => __('FAQs' ,'ApplyOnline'), 'desc' => __('Frequently Asked Questions.' ,'ApplyOnline'), 'href' => null, ); $tabs['extend'] = array( 'id' => 'extend', 'name' => __('Extend' ,'ApplyOnline'), 'desc' => __('Extend Plugin' ,'ApplyOnline'), 'href' => 'http://wpreloaded.com/plugins/apply-online', 'capability' => 'manage_options' ); $tabs = apply_filters('aol_settings_all_tabs', $tabs); return $tabs; } private function wp_pages(){ $pages = get_pages(); $pages_arr = array(); foreach ( $pages as $page ) { $pages_arr[$page->ID] = $page->post_title; } return $pages_arr; } private function tab_general(){ ?>




', ''); ?>

This option doesn't work with Plain permalinks structure. Check Permalink Settings

'.get_post_type_archive_link('aol_ad').'') ?>

MBs

jpg,jpeg,png,doc,docx,pdf,rtf,odt,txt

app_field_types(); settings_fields( 'aol_ad_template' ); do_settings_sections( 'aol_ad_template' ); //Support for deprecated Template Form. $xfields = get_option('aol_default_fields'); if(!empty($xfields)){ $xfields['templateName'] = 'Default Template'; update_option ('aol_form_templates', array('templatedefault' => $xfields)); update_option ('aol_default_fields_x', $xfields, FALSE); delete_option('aol_default_fields'); } //update_option('aol_form_templates', array('english' => $template, 'french' => $template)); $templates = get_option('aol_form_templates', array()); //rich_print($templates); if(!empty($templates)): $i = 0; echo '

app_field_types(); settings_fields( 'aol_ad_template' ); do_settings_sections( 'aol_ad_template' ); $keys= apply_filters('aol_ad_default_fields', get_option('aol_default_fields')); if($keys != NULL): foreach($keys as $key => $val): echo ''; if(substr($key, 0, 9)=='_aol_app_'): $label = isset($val['label']) ? $val['label'] : str_replace('_',' ',substr($key,9)); $fields = NULL; foreach($app_fields as $field_key => $field_val){ if($val['type']==$field_key) $fields .= ''; else $fields .= ''; } if($val['type']=='checkbox' or $val['type']=='radio' or $val['type']=='dropdown'): $options = 'value="'.$val['options'].'"'; else: $options = 'style="display:none;"'; endif; ?> '; endforeach; endif; ?>
  placeholder="Option1, option2, option3" />
application_fields_generator($this->app_field_types()); ?>
app_field_types(); settings_fields( 'aol_ad_templates' ); do_settings_sections( 'aol_ad_templates' ); $templates = apply_filters('aol_ad_templates', get_option('aol_ad_templates', array(array('name' => 'Default')))); $i = 0; foreach($templates as $template): ?>
$val): echo ''; if(substr($key, 0, 9)=='_aol_app_'): $label = isset($val['label']) ? $val['label'] : str_replace('_',' ',substr($key,9)); $fields = NULL; foreach($app_fields as $field_key => $field_val){ if($val['type']==$field_key) $fields .= ''; else $fields .= ''; } if($val['type']=='checkbox' or $val['type']=='radio' or $val['type']=='dropdown'): $options = 'value="'.$val['options'].'"'; else: $options = 'style="display:none;"'; endif; ?> '; endforeach; endif; ?>
  placeholder="Option1, option2, option3" />
application_fields_generator($this->app_field_types()); ?>
    $type): $count = wp_count_posts('aol_'.sanitize_key($type['singular'])); echo '
  1. '.sanitize_text_field( $type['singular'] ) .' ('. sanitize_text_field( $type['plural'] ) .')

    '; echo '

    '.__('Description', 'ApplyOnline').':

    '; echo '

    '.__('Shortcode', 'ApplyOnline').':

    '; echo '

    '.__('Direct URL', 'ApplyOnline').': '.get_post_type_archive_link( 'aol_'.$key ).'

    '; echo ''; echo ''; $this->filters($type['filters'], $key); if($key != 'ad') echo '
  2. '; endforeach; endif; ?>
Add Type

', '', ''); ?>

', ''); ?>.


/> />
    $val){ if($i >= 3) break; $checked = in_array(sanitize_key($key), $set_filters) ? 'checked' : NULL; echo '
  • '; $i++; } ?>

Need more customized filters? Click Here


    $val){ $checked = in_array(sanitize_key($key), $set_filters) ? 'checked' : NULL; echo '
  • '; $i++; } ?>

Need more customized statuses? Click Here


  1. '.get_post_type_archive_link( 'aol_ad' ).'', '
        ', '', ''); ?>

', ''); ?>

', ''); ?>

', ''); ?>

', ''); ?>