[FRAMEWORK] Xây dựng page Search (ok)

Search People, Search Group

Search People and Search Group

C:\xampp\htdocs\reset4\wp-content\themes\addframwork\framework\controllers\Search.php

<?php
class BJ_Search_Controller extends Pv_Controller{
  function __construct(){
    $this->index();
  }
  public function index() {
    $data = array();
    $this->load()->View("search",$data,"page");
  }
}

C:\xampp\htdocs\reset4\wp-content\themes\addframwork\js\custom.js

jQuery(document).ready(function($) {
  function addLoading() {
    $('#page-load').css({ 'opacity': '1', 'visibility': 'visible' });
  }
  function unLoading() {
    $('#page-load').css({ 'opacity': '0', 'visibility': 'hidden' });
  }
  const boxMessage = $('.notifi__update');
  $("body").on("submit", "form#form-update-info", function(e) {
    e.preventDefault();
    var fd = new FormData(document.getElementById("form-update-info"));
    fd.append('action', 'app_update_info');
    $.ajax({
      url: app.ajaxUrl,
      type: "post",
      contentType: false,
      processData: false,
      data: fd,
      beforeSend: function() {
        addLoading()
      },
      success: function(output) {
        unLoading();
        var result = $.parseJSON(output);
        if (result.status === false) {
          setTimeout(() => {
            var currURL = window.location.href;
            var urlReload = replaceUrlParam(currURL, 'appt', 'C');
            window.location.replace(urlReload);
          }, 1500)
        } else {
          boxMessage.text(result.message);
        }
        boxMessage.removeClass('hidden');
      },
      error: function(jqXHR, textStatus, errorThrown) {
        unLoading();
        alert('error');
      }
    });
  });
  $("input").blur(function() {
    boxMessage.addClass('hidden');
  });
  $("#event-datepicker").datepicker({
    onSelect: function() {
      let dateObject = $(this).datepicker('getDate');
      $("#date").val($.datepicker.formatDate("yy-mm-dd", dateObject));
    }
  });
  $("body").on("submit", "form#form-update-post", function(e) {
    e.preventDefault();
    var fd = new FormData(document.getElementById("form-update-post"));
    fd.append('action', 'edit_post_single');
    $.ajax({
      url: app.ajaxUrl,
      type: "post",
      contentType: false,
      processData: false,
      data: fd,
      beforeSend: function() { 
        addLoading() 
      },
      success: function(output) {
        unLoading();
        var currURL = window.location.href;
        currURL = currURL.split('?')[0];
        currURL = currURL + "?appt=C";
        window.location.replace(currURL);
      },
      error: function(jqXHR, textStatus, errorThrown) {
        unLoading();
        alert('error');
      }
    });
  });
  // For Search
  var typeSearch = $('.filters__item.active').data('type');
  const boxResult = $('.box-results__list');
  $("body").on("click", ".filters__item", function (e) {
    $('.filters__item').removeClass('active');
    $(this).addClass('active');
    typeSearch = $('.filters__item.active').data('type');
    const keyWord = $('#search').val().trim();
    if ( keyWord.length == 0) return;
    searchFilter(keyWord, typeSearch);
  })
  $("#search").keyup(function(){
    const keyWord = $(this).val().trim();
    if ( keyWord.length == 0) return;
    searchFilter(keyWord, typeSearch);
  });
  function searchFilter(keyWord, typeSearch){
    $.ajax({
      url: app.ajaxUrl,
      type: "post",
      dataType: "text",
      data: {                  
        action: 'search_by_filters',
        keyword : keyWord,
        type: typeSearch,
        token: $('#nonce_token').val(),                                                        
      },
      beforeSend: function () {
        boxResult.css('opacity', '0.6');
      },
      success: function(output) {
        boxResult.css('opacity', '1');
        boxResult.html(output);
      },
      error: function () { alert('error'); }
    });
  }
});

C:\xampp\htdocs\reset4\wp-content\themes\addframwork\page-search.php

<?php get_header()?>
<?php
  require get_template_directory() . '/framework/frontend.php';
  new BJ_Frontend();
?>
<?php get_footer()?>

C:\xampp\htdocs\reset4\wp-content\themes\addframwork\framework\frontend.php

<?php
class BJ_Frontend {
  private function load() {
    global $bj_controller;
    return $bj_controller;
  }
  function __construct() {
    if (is_page('account')) {
      $this->load()->Controller("Account");
    }elseif ( is_page('search') ) {
      $this->load()->Controller("Search");
    }
  }
}

C:\xampp\htdocs\reset4\wp-content\themes\addframwork\layout\searchs\item-account.php

<div class="box-results__item d-flex align-items-center justify-content-between border-b-1 py-2">
  <div class="box-results__item__avatar">
    <a href="<?php echo $args['link'] ?>" class="d-block">
      <img src="<?php echo $args['avatar'] ?>" class="rounded-circle" width="40" height="40">
    </a>
  </div>
  <div class="box-results__item__name flex-fill font-weight-500 ml-4">
    <a href="<?php echo $args['link'] ?>"><?php echo $args['name']; ?></a>
  </div>
</div>

C:\xampp\htdocs\reset4\wp-content\themes\addframwork\inc\functions\function-global.php

<?php
/**
 *
 * @return HTML - option list tỉnh thành
 */
function reder_province_option($default = "") {
  $json_file = get_stylesheet_directory() . "/json/tinh_tp.json";
  if (file_exists($json_file)) {
    $json       = file_get_contents($json_file);
    $tinh_thanh = json_decode($json, true);
    foreach ($tinh_thanh as $key => $value) {
      if ($key == $default) {$select = "selected";} else { $select = "";}
      echo "<option " . $select . " value='" . $key . "'>" . $value["name"] . "</option>";
    }
  }
}
/**
 * @return HTML - option list quận huyện
 */
function reder_quan_huyen_option($tinh_thanh, $default) {
  $default    = sprintf('%02d', intval($default));
  $tinh_thanh = sprintf('%02d', intval($tinh_thanh));
  $json_file  = get_stylesheet_directory() . "/json/quan-huyen/" . $tinh_thanh . ".json";
  if (file_exists($json_file)) {
    $json       = file_get_contents($json_file);
    $quan_huyen = json_decode($json, true);
    foreach ($quan_huyen as $key => $value) {
      if ($key == $default) {
        $select = "selected";
      } else {
        $select = "";
      }
      echo "<option " . $select . " value='" . $key . "'>" . $value["name_with_type"] . "</option>";
    }
  }
}
/**
 * @return HTML - option list xã phường
 */
function reder_xa_phuong_option($quan_huyen, $default) {
  $default    = intval($default);
  $quan_huyen = sprintf('%03d', intval($quan_huyen));
  $json_file  = get_stylesheet_directory() . "/json/xa-phuong/" . $quan_huyen . ".json";
  if (file_exists($json_file)) {
    $json      = file_get_contents($json_file);
    $xa_phuong = json_decode($json, true);
    foreach ($xa_phuong as $key => $value) {
      if ($key == $default) {$select = "selected";} else { $select = "";}
      echo "<option " . $select . " value='" . $key . "'>" . $value["name_with_type"] . "</option>";
    }
  }
}
/**
 * AJAX load quận huyện khi select tỉnh thành phố
 */
add_action('wp_ajax_load_quan_huyen', 'load_quan_huyen');
function load_quan_huyen() {
  $tinh_thanh = $_POST['id'];
  $type       = $_POST['type'];
  $json_file  = get_stylesheet_directory() . "/json/quan-huyen/" . $tinh_thanh . ".json";
  if (file_exists($json_file)) {
    $json       = file_get_contents($json_file);
    $quan_huyen = json_decode($json, true);
    echo '<option value="" disabled selected >' . __("Select", "golf") . '</option>';
    foreach ($quan_huyen as $key => $value) {
      if ($type) {
        echo "<option value='" . $value["name_with_type"] . "'>" . $value["name_with_type"] . "</option>";
      } else {
        echo "<option value='" . $key . "'>" . $value["name_with_type"] . "</option>";
      }
    }
  }
  die();
}
/**
 * AJAX load danh sách xã phường khi select tỉnh thành phố
 */
add_action('wp_ajax_load_xa_phuong', 'load_xa_phuong');
function load_xa_phuong() {
  $quan_huyen = $_POST['id'];
  $json_file  = get_stylesheet_directory() . "/json/xa-phuong/" . $quan_huyen . ".json";
  if (file_exists($json_file)) {
    $json      = file_get_contents($json_file);
    $xa_phuong = json_decode($json, true);
    foreach ($xa_phuong as $key => $value) {
      echo "<option value='" . $key . "'>" . $value["name_with_type"] . "</option>";
    }
  }
  die();
}
/**
 *
 * Get địa chỉ của user bởi id
 * Nếu chưa update địa chỉ, thì gán mặc định là: '90 Đường Lê Lợi, Phường Bến Thành, Quận 1, Thành phố Hồ Chí Minh'
 */
function get_address_by_id_user($user_id = null) {
  if (!$user_id) {
    $user_id = get_current_user_id();
  }
  $province_address = get_user_meta($user_id, "province_address", true);
  if ($province_address) {
    return json_decode($province_address, true);
  }
  return array(
    'province' => 79,
    'district' => 760,
    'ward'     => 26743,
    'street'   => '90 Đường Lê Lợi',
  );
}
/**
 * Get địa chỉ text
 * @return array
 */
function atw_load_province_address($user_id = null) {
  $province = '';
  $district = '';
  $ward     = '';
  if (!$user_id) {
    $user_id = get_current_user_id();
  }
  $province_address = get_address_by_id_user($user_id);
  if ($province_address && is_array($province_address)) {
    $json_file = get_stylesheet_directory() . "/json/tinh_tp.json";
    if (file_exists($json_file)) {
      $json_tinh_tp = file_get_contents($json_file);
      $tinh_thanh   = json_decode($json_tinh_tp, true);
      foreach ($tinh_thanh as $key => $value) {
        if ($key == $province_address['province']) {
          $province = $tinh_thanh[$key]['name'];
          break;
        }
      }
    }
    if ($province_address['province']):
      $json_file = get_stylesheet_directory() . "/json/quan-huyen/" . $province_address['province'] . ".json";
      if (file_exists($json_file)) {
        $json_quan_huyen = file_get_contents($json_file);
        $quan_huyen      = json_decode($json_quan_huyen, true);
        foreach ($quan_huyen as $key => $value) {
          if ($key == $province_address['district']) {
            $district = $quan_huyen[$key]['name_with_type'];
            break;
          }
        }
      }
    endif;
    if ($province_address['district']):
      $json_file = get_stylesheet_directory() . "/json/xa-phuong/" . $province_address['district'] . ".json";
      if (file_exists($json_file)) {
        $json_xa_phuong = file_get_contents($json_file);
        $xa_phuong      = json_decode($json_xa_phuong, true);
        foreach ($xa_phuong as $key => $value) {
          if ($key == $province_address['ward']) {
            $ward = $xa_phuong[$key]['name_with_type'];
            break;
          }
        }
      }
    endif;
  }
  return array(
    'province' => $province,
    'district' => $district,
    'ward'     => $ward,
    'street'   => $province_address['street'],
  );
}
/**
 *
 * Crop image
 */
function resize_image($method, $image_loc, $new_loc, $width, $height) {
  $exif = exif_read_data($image_loc);
  if (isset($exif['Orientation']) && $exif['Orientation'] === 6) {
    $rotate = -90;
  } else if (isset($exif['Orientation']) && $exif['Orientation'] === 3) {
    $rotate = 180;
  } else if (isset($exif['Orientation']) && $exif['Orientation'] === 8) {
    $rotate = 90;
  }
  if (!is_array(@$GLOBALS['errors'])) {$GLOBALS['errors'] = array();}
  if (!in_array($method, array('force', 'max', 'crop'))) {$GLOBALS['errors'][] = 'Invalid method selected.';}
  if (!$image_loc) {$GLOBALS['errors'][] = 'No source image location specified.';} else {
    if ((substr(strtolower($image_loc), 0, 7) == 'http://') || (substr(strtolower($image_loc), 0, 7) == 'https://')) { /*don't check to see if file exists since it's not local*/} elseif (!file_exists($image_loc)) {$GLOBALS['errors'][] = 'Image source file does not exist.';}
    $extension = strtolower(substr($image_loc, strrpos($image_loc, '.')));
    if (!in_array($extension, array('.jpg', '.jpeg', '.png', '.gif', '.bmp'))) {$GLOBALS['errors'][] = 'Invalid source file extension!';}
  }
  if (!$new_loc) {$GLOBALS['errors'][] = 'No destination image location specified.';} else {
    $new_extension = strtolower(substr($new_loc, strrpos($new_loc, '.')));
    if (!in_array($new_extension, array('.jpg', '.jpeg', '.png', '.gif', '.bmp'))) {$GLOBALS['errors'][] = 'Invalid destination file extension!';}
  }
  $width = abs(intval($width));
  if (!$width) {$GLOBALS['errors'][] = 'No width specified!';}
  $height = abs(intval($height));
  if (!$height) {$GLOBALS['errors'][] = 'No height specified!';}
  if (count($GLOBALS['errors']) > 0) {echo_errors();return false;}
  if (in_array($extension, array('.jpg', '.jpeg'))) {$image = @imagecreatefromjpeg($image_loc);} elseif ($extension == '.png') {$image = @imagecreatefrompng($image_loc);} elseif ($extension == '.gif') {$image = @imagecreatefromgif($image_loc);} elseif ($extension == '.bmp') {$image = @imagecreatefromwbmp($image_loc);}
  if (!$image) {$GLOBALS['errors'][] = 'Image could not be generated!';} else {
    $current_width  = imagesx($image);
    $current_height = imagesy($image);
    if ((!$current_width) || (!$current_height)) {$GLOBALS['errors'][] = 'Generated image has invalid dimensions!';}
  }
  if (count($GLOBALS['errors']) > 0) {
    @imagedestroy($image);
    echo_errors();return false;}
  if ($method == 'force') {$new_image = resize_image_force($image, $width, $height);} elseif ($method == 'max') {$new_image = resize_image_max($image, $width, $height);} elseif ($method == 'crop') {$new_image = resize_image_crop($image, $width, $height);}
  if ((!$new_image) && (count($GLOBALS['errors'] == 0))) {$GLOBALS['errors'][] = 'New image could not be generated!';}
  if (count($GLOBALS['errors']) > 0) {
    @imagedestroy($image);
    echo_errors();return false;}
  $save_error = false;
  if (in_array($extension, array('.jpg', '.jpeg'))) {
    if (isset($rotate)) {$new_image = imagerotate($new_image, $rotate, 0);}
    imagejpeg($new_image, $new_loc) or ($save_error = true);} elseif ($extension == '.png') {
    if (isset($rotate)) {$new_image = imagerotate($new_image, $rotate, 0);}
    imagepng($new_image, $new_loc) or ($save_error = true);} elseif ($extension == '.gif') {imagegif($new_image, $new_loc) or ($save_error = true);} elseif ($extension == '.bmp') {imagewbmp($new_image, $new_loc) or ($save_error = true);}
  if ($save_error) {$GLOBALS['errors'][] = 'New image could not be saved!';}
  if (count($GLOBALS['errors']) > 0) {
    @imagedestroy($image);@imagedestroy($new_image);
    echo_errors();return false;}
  imagedestroy($image);
  imagedestroy($new_image);
  return true;
}
function echo_errors() {
  if (!is_array(@$GLOBALS['errors'])) {$GLOBALS['errors'] = array('Unknown error!');}
  foreach ($GLOBALS['errors'] as $error) {echo '<p style="color:red;font-weight:bold;">Error: ' . $error . '</p>';}
}
function resize_image_force($image, $width, $height) {
  $w = @imagesx($image); //current width
  $h = @imagesy($image); //current height
  if ((!$w) || (!$h)) {$GLOBALS['errors'][] = 'Image couldn\'t be resized because it wasn\'t a valid image.';return false;}
  if (($w == $width) && ($h == $height)) {return $image;} //no resizing needed
  $image2 = imagecreatetruecolor($width, $height);
  imagecopyresampled($image2, $image, 0, 0, 0, 0, $width, $height, $w, $h);
  return $image2;
}
function resize_image_max($image, $max_width, $max_height) {
  $w = imagesx($image); //current width
  $h = imagesy($image); //current height
  if ((!$w) || (!$h)) {$GLOBALS['errors'][] = 'Image couldn\'t be resized because it wasn\'t a valid image.';return false;}
  if (($w <= $max_width) && ($h <= $max_height)) {return $image;} //no resizing needed
  //try max width first...
  $ratio = $max_width / $w;
  $new_w = $max_width;
  $new_h = $h * $ratio;
  //if that didn't work
  if ($new_h > $max_height) {
    $ratio = $max_height / $h;
    $new_h = $max_height;
    $new_w = $w * $ratio;
  }
  $new_image = imagecreatetruecolor($new_w, $new_h);
  imagecopyresampled($new_image, $image, 0, 0, 0, 0, $new_w, $new_h, $w, $h);
  return $new_image;
}
function resize_image_crop($image, $width, $height) {
  $w = @imagesx($image); //current width
  $h = @imagesy($image); //current height
  if ((!$w) || (!$h)) {$GLOBALS['errors'][] = 'Image couldn\'t be resized because it wasn\'t a valid image.';return false;}
  if (($w == $width) && ($h == $height)) {return $image;} //no resizing needed
  //try max width first...
  $ratio = $width / $w;
  $new_w = $width;
  $new_h = $h * $ratio;
  //if that created an image smaller than what we wanted, try the other way
  if ($new_h < $height) {
    $ratio = $height / $h;
    $new_h = $height;
    $new_w = $w * $ratio;
  }
  $image2 = imagecreatetruecolor($new_w, $new_h);
  imagecopyresampled($image2, $image, 0, 0, 0, 0, $new_w, $new_h, $w, $h);
  //check to see if cropping needs to happen
  if (($new_h != $height) || ($new_w != $width)) {
    $image3 = imagecreatetruecolor($width, $height);
    if ($new_h > $height) {
      //crop vertically
      $extra = $new_h - $height;
      $x     = 0; //source x
      $y     = round($extra / 2); //source y
      imagecopyresampled($image3, $image2, 0, 0, $x, $y, $width, $height, $width, $height);
    } else {
      $extra = $new_w - $width;
      $x     = round($extra / 2); //source x
      $y     = 0; //source y
      imagecopyresampled($image3, $image2, 0, 0, $x, $y, $width, $height, $width, $height);
    }
    imagedestroy($image2);
    return $image3;
  } else {
    return $image2;
  }
}
function upload_image($file) {
  $targetDir      = wp_upload_dir()["basedir"] . '/image-files/';
  $allowTypes     = array('jpg', 'png', 'jpeg');
  $fileName       = round(microtime(true)) . "_" . basename($file['name']);
  $targetFilePath = $targetDir . $fileName;
  // Check whether file type is valid
  $fileType = pathinfo($targetFilePath, PATHINFO_EXTENSION);
  if (in_array($fileType, $allowTypes)) {
    if ($file["size"] > 10000000) {
      return array("status" => "error", "content" => "Maximum 10Mb");
    }
    if (move_uploaded_file($file['tmp_name'], $targetFilePath)) {
      resize_image('crop', $targetDir . $fileName, $targetDir . '200x200/' . $fileName, 200, 200);
      $file_id = umm_model_insert_img($fileName);
      return array("status" => "success", "content" => $file_id);
    }
  } else {
    return array("status" => "error", "content" => "Allow jpg, png, jpeg");
  }
}
function umm_model_insert_img($file_name) {
  global $wpdb;
  $table  = $wpdb->prefix . 'images';
  $data   = array('image_name' => $file_name, 'user_id' => get_current_user_id());
  $format = array('%s', '%d');
  $wpdb->insert($table, $data, $format);
  return $wpdb->insert_id;
}
function get_image_url_by_id($id, $size = "full") {
  $url = wp_get_upload_dir()["baseurl"] . "/image-files/";
  if ($size != "full") {
    $url = wp_get_upload_dir()["baseurl"] . "/image-files/200x200/";
  }
  global $wpdb;
  $table  = $wpdb->prefix . "images";
  $result = $wpdb->get_results($wpdb->prepare(" SELECT image_name  FROM  {$table} WHERE id = %d ", $id), ARRAY_A, 1);
  return $url . $result[0]["image_name"];
}
/**
 *
 * Delete uploaded images file, database
 */
function delete_img_by_id($img_id) {
  global $wpdb;
  $table     = $wpdb->prefix . "images";
  $result    = $wpdb->get_results($wpdb->prepare(" SELECT image_name  FROM  {$table} WHERE id = %d ", $img_id), ARRAY_A, 1);
  $file_name = $result[0]["image_name"];
  $folder    = wp_upload_dir()["basedir"] . '/image-files/';
  unlink($folder . $file_name);
  unlink($folder . "200x200/" . $file_name);
  $wpdb->delete($table, array('id' => $img_id), array('%d'));
}
/**
 *
 * Get image url avatar  by user id
 */
function get_url_avatar($user_id = '') {
  if ($user_id === '') {
    $user_id = get_current_user_id();
  }
  $id_avatar = get_user_meta($user_id, 'id_img_avatar', true);
  if ($id_avatar) {
    return get_image_url_by_id($id_avatar, 'thumbnail');
  }
  return AVATAR_DF;
}
/**
 *
 * Check user exists
 * @return boolean
 */
function is_user_exist($user_id) {
  $user       = get_userdata($user_id);
  $user_roles = !empty($user) ? $user->roles[0] : "";
  if ($user === false or $user_roles != USER) {
    return false;
  } else {
    return true;
  }
}
/**
 *
 * Check View other account
 * @return boolean
 */
function is_view_other_account() {
  if (is_page('account') && isset($_GET['id']) && intval($_GET['id']) !== get_current_user_id()) {
    return true;
  }
  return false;
}
/**
 *
 * Get list user follow
 * @return array
 */
function list_user_follow($user_id = null) {
  if (!$user_id) {
    $user_id = get_current_user_id();
  }
  $list_user_follow = get_user_meta($user_id, 'list_user_follow', true);
  if (!$list_user_follow) {
    return array();
  }
  return json_decode($list_user_follow, true);
}
/**
 *
 * Nhận danh sách người theo dõi tôi
 * @return array
 */
function get_list_follower($current_user_id = null) {
  if (!$current_user_id) {
    $current_user_id = get_current_user_id();
  }
  $args              = array('role' => USER);
  $users             = get_users($args);
  $list_follower_arr = [];
  foreach ($users as $value) {
    $user_id         = $value->ID;
    $list_follow_arr = list_user_follow($user_id);
    if ($list_follow_arr):
      if (in_array($current_user_id, $list_follow_arr)) {
        $list_follower_arr[] = $user_id;
      }
    endif;
  }
  return $list_follower_arr;
}
/**
 *
 * Nhận tổng số người tôi đang theo dõi
 * @return int
 */
function get_total_following($current_user_id = null) {
  if (!$current_user_id) {
    $current_user_id = get_current_user_id();
  }
  return count(list_user_follow($current_user_id));
}
/**
 * tăng lên 1 so tổng thông báo mới hiện tại của user ID
 */
function update_total_notify_user($user_id){
  $total = (int)get_user_meta( $user_id, 'total_notify', true ) + 1;
  update_user_meta( $user_id, 'total_notify', $total);
}
// ==
function get_market_image_url($img_id){
  $url = wp_get_upload_dir()["baseurl"]."/market-images/";
  global $wpdb;
  $table = $wpdb->prefix."bj_market_image";
  $result = $wpdb->get_results ( $wpdb->prepare(" SELECT image_name FROM  {$table} WHERE id = %d ",$img_id) ,ARRAY_A  );
  if(!empty($result)){
    return $url."__".$result[0]["image_name"];
  }else{
    return THEME_URL."assets/images/default.jpg";
  }
}
function market_upload_image($file){
  $targetDir = wp_upload_dir()["basedir"].'/market-images/'; 
  $allowTypes = array( 'jpg', 'png', 'jpeg'); 
  $fileName = round(microtime(true))."_".basename($file['name']);
  $targetFilePath = $targetDir.$fileName; 
    // Check whether file type is valid 
  $fileType = pathinfo($targetFilePath, PATHINFO_EXTENSION); 
  if(in_array($fileType, $allowTypes)){ 
    if($file["size"] > 5000000) return array("status" => "error","content" => "Maximum 5Mb");
    if(move_uploaded_file($file['tmp_name'], $targetFilePath)){ 
      $result = resize_image('max',$targetDir.$fileName,$targetDir.'__'.$fileName,600,4000);
      if($result == true){
        $file_id = add_market_image_to_db($fileName);
        unlink($targetDir.$fileName);
        return array("status" => "success","content" => $file_id);
      }
    }else{
      return array("status" => "error","content" => "Unknow");
    } 
  }else{
    return array("status" => "error","content" => "Allow jpg, png, jpeg");
  }
}
function add_market_image_to_db($file_name){
  global $wpdb;
  $table = $wpdb->prefix."bj_market_image";
  $wpdb->insert($table,
    array("image_name" => $file_name),
    array("%s")
  );
  return $wpdb->insert_id;
}
/**
 * 
 * Get role and check member group
 * @return int
 */
function is_member_of_group($group_id = 0,$user_id = 0){
  if($user_id == 0) $user_id = get_current_user_id();
  $current_list_member_arr = json_decode(get_term_meta($group_id,"list_member",true),true);
  if(!empty($current_list_member_arr)){
    foreach ($current_list_member_arr as $value) {
      if(isset($value["user_id"]) && $value["user_id"] == $user_id){
        if (isset($value["role"])) return $value["role"];
      }
    }
  }else{
    return false;
  }
}
/**
 * 
 * Get all id group have join
 * @return array
 */
function all_groups_have_joined($user_id = 0){
  if($user_id == 0) $user_id = get_current_user_id();
  $list_groups = array();
  $terms = get_terms( ['hide_empty' => false, 'taxonomy'  => 'group', 'meta_key'  => 'list_member'] );
  if ($terms) {
  foreach ($terms as $value) {
      $group_id = $value->term_id;
      $role = is_member_of_group($group_id, $user_id);
      if( $role ) $list_groups[] = $group_id;
    }
  }
  return $list_groups;
}
/**
 * 
 * Get banner group
 * @return string - banner
 */
function get_banner_group($id_gr, $size = 'thumbnail') {
  $id_banner_gr = get_term_meta($id_gr, 'image_cover_group');
  if( $id_banner_gr ) return get_image_url_by_id($id_banner_gr, $size);
  return BANNER_DF;
}
/**
 * Search Filters
 */
add_action( 'wp_ajax_search_by_filters', 'search_by_filters' );
function search_by_filters(){
  $current_user_id = get_current_user_id();
  if( !isset( $_POST['token']) or !wp_verify_nonce($_POST['token'],AT_NONCE_KEY.'ajax-nonce'.$current_user_id)) wp_die();
  $key_word = sanitize_text_field($_POST['keyword']);
  $type = $_POST['type'];
  if ($type == 'people'){
    $args= array(
      'search' => '*'.$key_word.'*', 
      'search_columns' => array( 'display_name','user_email'),
      'exclude' => array($current_user_id),
      'role'  => USER,
    );
    $users = get_users($args); 
    foreach ($users as $value) {
      $data['link'] = SITE_URL."account/?id=".$value->ID."&appt=N";
      $data['name'] = $value->display_name;
      $data['avatar'] = get_url_avatar($value->ID);
      get_template_part( 'layout/searchs/item', 'account', $data);
    }
  } else if ( $type =='group' ) {
    $args = array(
      'taxonomy'      => 'group',
      'hide_empty'    => false,
      'name__like'    => $key_word,
    );
    $terms = get_terms( $args );
    foreach ($terms as $value) {
      $id_gr = $value->term_id;
      $data['id'] = $id_gr;
      $data['link'] = SITE_URL . "community/?action=view-group&id={$id_gr}&appt=N";
      $data['banner'] = get_banner_group($id_gr);
      $data['name'] = get_term($id_gr)->name;
      get_template_part( 'layout/searchs/item', 'group', $data);
    }
  }
  wp_die();
}

Search Group

C:\xampp\htdocs\reset4\wp-content\themes\addframwork\layout\searchs\item-group.php

<div class="box-results__item d-flex align-items-center justify-content-between border-b-1 py-2">
  <div class="box-results__item__avatar">
    <a href="<?php echo $args['link'] ?>" class="d-block">
      <img src="<?php echo $args['banner'] ?>" class="rounded-circle" width="40" height="40">
    </a>
  </div>
  <div class="box-results__item__name flex-fill font-weight-500 ml-4">
    <a href="<?php echo $args['link'] ?>"><?php echo $args['name']; ?></a>
  </div>
</div>

Last updated