5. 2 Xử lý ajax trong file pfajaxhandler.php && validate form submit (ok)
Last updated
Was this helpful?
Last updated
Was this helpful?
<?php
if (class_exists('Coreelements_AJAX')) {
return;
}
class Coreelements_AJAX {
use OptionFunctions;
}
<?php
if (!class_exists('PF_SF_Val')) {
class PF_SF_Val {
use OptionFunctions;
public $FieldOutput;
public $ScriptOutput;
public function __construct() {}
function GetMiniSearch($minisearchc = 1) {
switch ($minisearchc) {
case '3':
return '<div class="col-lg-3 col-md-3 col-sm-6 colhorsearch lionel2">';
break;
}
}
function ShowOnlyWidgetCheck($widget, $url, $minisearch) {
$showonlywidget_check = 'show';
$showonlywidget = $this->PFSFIssetControl('setupsearchfields_' . $url . '_showonlywidget', '', '0');
$minisearchadm = $this->PFSFIssetControl('setupsearchfields_' . $url . '_minisearch', '', '0');
$minisearchso = $this->PFSFIssetControl('setupsearchfields_' . $url . '_minisearchso', '', '0');
if ($showonlywidget == 0 && $widget == 0) {
$showonlywidget_check = 'show';
} elseif ($showonlywidget == 1 && $widget == 0) {
$showonlywidget_check = 'hide';
} else {
$showonlywidget_check = 'show';
}
if ($minisearch == 1 && $minisearchadm == 0) {
$showonlywidget_check = 'hide';
} elseif ($minisearch == 0 && $minisearchso == 1) {
$showonlywidget_check = 'hide';
}
return $showonlywidget_check;
}
function GetValue($title, $url, $ftype, $widget = 0, $pfgetdata = array(), $hormode = 0, $minisearch = 0, $minisearchc = 1) {
$showonlywidget_check = $this->ShowOnlyWidgetCheck($widget, $url, $minisearch);
switch ($ftype) {
case '4':
if ($showonlywidget_check == 'show') {
$target = $this->PFSFIssetControl('setupsearchfields_' . $url . '_target_target', '', '');
$fieldtext = '';
$placeholder = $this->PFSFIssetControl('setupsearchfields_' . $url . '_placeholder', '', '');
if ($hormode == 1 && $widget == 1 && $minisearch == 1) {
$this->FieldOutput .= $this->GetMiniSearch($minisearchc);
}
if (array_key_exists($url, $pfgetdata)) {
$valtext = ' value = "' . $pfgetdata[$url] . '" ';
} else {
$valtext = '';
}
$this->FieldOutput .= '
<div id="' . $url . '_main">
<label class="lbl-ui pflabelfixsearch pflabelfixsearch' . $url . '">
<input type="text" name="' . $url . '" id="' . $url . '" class="input" placeholder="' . $placeholder . '"' . $valtext . ' />
</label>
</div>';
$this->ScriptOutput .= '
$( "#' . $url . '" ).on("keydown",function(){
$( "#' . $url . '" ).autocomplete({
source: function( request, response ) {
$.ajax({
url: theme_scriptspf.ajaxurl,
dataType: "jsonp",
data: {
action: "pfget_autocomplete",
q: request.term,
security: theme_scriptspf.pfget_autocomplete,
lang: "vi",
ftype: "' . $target . '"
},
success: function( data ) {
response( data );
}
});
},
minLength: 2,
select: function( event, ui ) {
$("#' . $url . '").val(ui.item);
}
});
});';
if ($hormode == 1 && $widget == 1 && $minisearch == 1) {
$this->FieldOutput .= '</div>';
}
}
break;
}
}
}
}
?>
<?php
if (class_exists('AutoCMPLT')) {
return;
}
class AutoCMPLT extends Coreelements_AJAX {
public function pf_ajax_autocomplete() {
check_ajax_referer('pfget_autocomplete', 'security');
header('Content-Type: application/javascript; charset=UTF-8;');
if (isset($_GET['ftype']) && $_GET['ftype'] != '') {
$ftype = sanitize_text_field($_GET['ftype']);
}
if (isset($_GET['callback']) && $_GET['callback'] != '') {
$callback = sanitize_text_field($_GET['callback']);
};
$tax_query = false;
$setup3_pointposttype_pt1 = $this->PFSAIssetControl('setup3_pointposttype_pt1', '', '');
$args = array('post_type' => $setup3_pointposttype_pt1, 'post_status' => 'publish', 'posts_per_page' => 5);
$output_arr = array();
$the_query = new WP_Query($args);
if ($the_query->have_posts()):
while ($the_query->have_posts()): $the_query->the_post();
if ($ftype == 'title' || $ftype == 'description' || $ftype == 'title_description') {
$output_arr[] = html_entity_decode(get_the_title());
}
endwhile;
wp_reset_postdata();
endif;
echo $callback . '(' . json_encode($output_arr) . ');';
die();
}
}
<?php
if ( ! defined( 'ABSPATH' ) ) {
die( '-1' );
}
class SearchShortcode extends WPBakeryShortCode {
use OptionFunctions;
function __construct() {
add_shortcode( 'pf_searchw', array( $this, 'single_pf_searchw_module_html' ) );
}
public function single_pf_searchw_module_html( $atts ) {
$output = $title = $number = $el_class = $mini_style = '';
extract(
shortcode_atts(
array(
'minisearchc' => 1,
'searchbg' => '',
'searchtext' => '',
'mini_padding_tb' => 0,
'mini_padding_lr' => 0,
'mini_bg_color' => '',
'mini_radius' => 0
), $atts
)
);
$coln = '<div class="col-lg-3 col-md-3 col-sm-6 colhorsearch">';
switch ($minisearchc) {
case '3':
$coln = '<div class="col-lg-3 col-md-3 col-sm-6 colhorsearch lionel1">';
break;
}
$mini_style = " style='";
if (!empty($mini_bg_color)) {
$mini_style .= "background-color:".$mini_bg_color.';';
}
$mini_style .= "padding: ".$mini_padding_tb."px ".$mini_padding_lr."px;";
if (!empty($mini_radius)) {
$mini_style .= "border-radius:".$mini_radius.'px;';
}
$mini_style .= "'";
if ($searchbg != '' && $searchtext != '') {
$searchb_style = " style='color:".$searchtext."!important;background-color:".$searchbg."!important'";
} else {
$searchb_style = "";
}
ob_start();
?>
<div class="-mini-search <?php echo ' pfministyle'.$minisearchc;?>"<?php echo $mini_style;?>>
<form id="pointfinder-search-form-manual" class="pfminisearch" method="get" action="<?php echo esc_url(home_url("/")); ?>" data-ajax="false">
<div class="pfsearch-content golden-forms">
<div class="pf-row">
<?php
$setup1s_slides = $this->PFSAIssetControl('setup1s_slides','','');
if(is_array($setup1s_slides)){
$PFListSF = new PF_SF_Val();
foreach ($setup1s_slides as $value) {
$PFListSF->GetValue($value['title'],$value['url'],4,1,[],1,1,3);
}
echo $PFListSF->FieldOutput;
echo $coln;
echo '<div id="pfsearchsubvalues"></div>';
echo '<input type="hidden" name="s" value=""/>';
echo '<input type="hidden" name="serialized" value="1"/>';
echo '<input type="hidden" name="action" value="pfs"/>';
echo '<a class="button pfsearch" id="pf-search-button-manual"'.$searchb_style.'><i class="pfadmicon-glyph-627"></i> '.esc_html__('SEARCH', 'pointfindercoreelements').'</a>';
$script_output = '
(function($) {
$(function(){'.$PFListSF->ScriptOutput;$script_output .= '});';
}
$script_output .='})(jQuery);';
wp_add_inline_script('theme-scriptspf',$script_output,'after');
echo '</div>';
?>
</div>
</div>
</form>
</div>
<?php
$output = ob_get_contents();
ob_end_clean();
return $output;
}
}
new SearchShortcode();
<?php
if (!trait_exists('OptionFunctions')) {
/**
* Option Functions
*/
trait OptionFunctions {
public function PFSAIssetControl($field, $field2 = '', $default = '') {
$pointfindertheme_option = array(
'setup3_pointposttype_pt1' => 'listing',
'setup1s_slides' => array(
0 => array(
'select' => '4',
'title' => 'Keyword',
'url' => 'jobskeyword',
'sort' => '12',
),
),
);
return $pointfindertheme_option['' . $field . ''];
}
public function PFSFIssetControl($field, $field2 = '', $default = '') {
$pfsearchfields_options = array(
'setupsearchfields_jobskeyword_minisearch' => '1',
'setupsearchfields_field_listingtype_minisearch' => '1',
'setupsearchfields_jobskeyword_placeholder' => 'Từ khóa',
'setupsearchfields_jobskeyword_target_target' => 'title',
'setupsearchfields_jobskeyword_showonlywidget' => '0',
'setupsearchfields_jobskeyword_minisearchso' => '0'
);
return $pfsearchfields_options['' . $field . ''];
}
}
}
<?php
class Coreelements_Loader {
protected $actions;
public function __construct() {
$this->actions = array();
}
public function add_action($hook, $component, $callback, $priority = 10, $accepted_args = 1) {
$this->actions = $this->add($this->actions, $hook, $component, $callback, $priority, $accepted_args);
}
private function add($hooks, $hook, $component, $callback, $priority, $accepted_args) {
$hooks[] = array(
'hook' => $hook,
'component' => $component,
'callback' => $callback,
'priority' => $priority,
'accepted_args' => $accepted_args,
);
return $hooks;
}
public function run() {
foreach ($this->actions as $hook) {
add_action($hook['hook'], array($hook['component'], $hook['callback']), $hook['priority'], $hook['accepted_args']);
}
}
}
?>
<?php
class Coreelements {
use OptionFunctions;
protected $loader;
public function __construct() {
$this->load_dependencies();
$this->define_public_hooks();
$this->define_ajax_hooks();
}
private function load_dependencies() {
require_once PFCOREELEMENTSDIR . '/pfgetsearchfields.php';
if (function_exists('vc_set_shortcodes_templates_dir')) {
require_once PFCOREELEMENTSDIR . '/includes/pf-search.php';
}
require_once PFCOREELEMENTSDIR . '/coreelements-loader.php';
require_once PFCOREELEMENTSDIR . '/coreelements-public.php';
require_once PFCOREELEMENTSDIR . '/coreelements-ajax.php';
require_once PFCOREELEMENTSDIR . '/autocomplete.php';
require_once PFCOREELEMENTSDIR . '/coreelements-dashboard-page.php';
$this->loader = new Coreelements_Loader();
}
private function define_public_hooks() {
$plugin_public = new Coreelements_Public();
$this->loader->add_action('wp_enqueue_scripts', $plugin_public, 'enqueue_styles_scripts');
$plugin_dashboardpage = new DashboardPageClass();
$this->loader->add_action('dashboardpage_hook', $plugin_dashboardpage, 'dashpage_maindash');
}
private function define_ajax_hooks() {
$AutoCMPLT = new AutoCMPLT();
$this->loader->add_action('PF_AJAX_HANDLER_pfget_autocomplete', $AutoCMPLT, 'pf_ajax_autocomplete');
$this->loader->add_action('PF_AJAX_HANDLER_nopriv_pfget_autocomplete', $AutoCMPLT, 'pf_ajax_autocomplete');
}
public function run() {
$this->loader->run();
}
}
?>
<?php
if (!isset($_POST['action'])) {
if (!isset($_GET['action'])) {
die('Not supported.');
}
};
$absolute_path = __FILE__;
$path_to_file = explode('wp-content', $absolute_path);
$path_to_wp = $path_to_file[0];
require_once $path_to_wp . '/wp-load.php';
if (empty($action)) {
$action = trim($_GET['action']);
}
$allowed_actions = array(
'pfget_autocomplete',
);
if (in_array($action, $allowed_actions)) {
if (is_user_logged_in()) {
do_action('PF_AJAX_HANDLER_' . $action);
} else {
do_action('PF_AJAX_HANDLER_nopriv_' . $action);
}
} else {
die('-2');
}
?>
<?php
if (class_exists('DashboardPageClass')) {
return;
}
class DashboardPageClass {
public function __construct() {}
public function dashpage_maindash() {
echo '<section role="main" style="margin-top: 100px;">';
echo '<div class="pf-container">';
echo '<div class="pf-row">';
echo '<div class="col-lg-12">';
the_content();
echo '</div>';
echo '</div>';
echo '</div>';
echo '</section>';
}
}
?>
<?php
class Coreelements_Public {
public function enqueue_styles_scripts() {
wp_register_script('theme-scriptspf', PFCOREELEMENTSURLPUBLIC . 'js/theme-scripts.js', ['jquery', 'jquery-ui-autocomplete','jquery-ui-widget', 'jquery-ui-position'], '2.0', true);
wp_enqueue_script('theme-scriptspf');
wp_localize_script('theme-scriptspf', 'theme_scriptspf', array('ajaxurl' => PFCOREELEMENTSURLINC . 'pfajaxhandler.php', 'pfget_autocomplete' => wp_create_nonce('pfget_autocomplete'),
));
}
}
?>
jQuery(document).ready(function($) {
$('body').on('click', '#pf-search-button-manual', function() {
var form = $('#pointfinder-search-form-manual');
form.validate();
if (form.valid()) {
form.submit();
};
return false;
});
});