File: /var/www/karjerosdiena.lt/wp-content/plugins/addon-jobsearch-chat/includes/jobsearch-chat-hooks.php
<?php
use WP_Jobsearch\Package_Limits;
use WP_Jobsearch\Candidate_Profile_Restriction;
if (!class_exists('addon_jobsearch_chat_settings_handle')) {
class addon_jobsearch_chat_settings_handle
{
public $jobsearch_candidate;
public $jobsearch_employer;
public $jobsearch_admin;
public $jobsearch_chat_support;
public $query;
public $args;
public $user_login_flag;
public $current_user;
public $get_friends;
public $result;
public $emojis;
public function __construct()
{
$this->load_auto_load_files();
add_action('wp_footer', array($this, 'jobsearch_chat_floating_chat'));
add_action('admin_menu', array($this, 'jobsearch_chat_settings_create_menu'));
add_action('jobsearch_chat_with_candidate', array($this, 'start_chat_with_candidate_callback'), 10, 1);
add_action('jobsearch_chat_with_employer', array($this, 'start_chat_with_employer_callback'), 10, 1);
//
add_filter('jobsearch_cand_dash_menu_in_opts', array($this, 'dashboard_cand_menu_items_inopts_arr'), 10, 1);
add_filter('jobsearch_cand_dash_menu_in_opts_swch', array($this, 'dashboard_cand_menu_items_inopts_swch_arr'), 10, 1);
add_filter('jobsearch_cand_menudash_link_user_chat_item', array($this, 'dashboard_cand_menu_items_in_fmenu'), 10, 5);
//
add_filter('jobsearch_emp_dash_menu_in_opts', array($this, 'dashboard_emp_menu_items_inopts_arr'), 10, 1);
add_filter('jobsearch_emp_dash_menu_in_opts_swch', array($this, 'dashboard_emp_menu_items_inopts_swch_arr'), 10, 1);
add_filter('jobsearch_emp_menudash_link_user_chat_item', array($this, 'dashboard_emp_menu_items_in_fmenu'), 10, 5);
add_filter('jobsearch_dashboard_tab_content_ext', array($this, 'dashboard_tab_content_add'), 10, 2);
//
add_filter('jobsearch_api_settings_section', array($this, 'php_pusher_sdk_api_settings'), 999, 1);
//
add_action('wp_ajax_wp_jobsearch_get_cand_profile_img_content', array($this, 'wp_jobsearch_get_cand_profile_img_content'));
add_action('wp_ajax_nopriv_wp_jobsearch_get_cand_profile_img_content', array($this, 'wp_jobsearch_get_cand_profile_img_content'));
add_filter('jobsearch_cand_dash_side_menulinks_html', array($this, 'jobsearch_cand_dash_side_menulinks_html_callback'), 10, 4);
add_action('init', array($this, 'save_chatsettings'));
$this->emojis = _wp_emoji_list();
}
public function load_auto_load_files()
{
include plugin_dir_path(dirname(__FILE__)) . '/vendor/autoload.php';
}
public function jobsearch_cand_dash_side_menulinks_html_callback($menu_items_html, $get_tab, $page_url, $candidate_id)
{
$this->current_user = wp_get_current_user();
if ($this->current_user->roles[0] == 'jobsearch_chat_support') {
$menu_items_html = '';
}
return $menu_items_html;
}
public function jobsearch_chat_floating_chat()
{
$this->current_user = wp_get_current_user();
if (!is_user_logged_in() || $this->current_user->roles[0] == 'administrator' || (isset($_REQUEST['tab']) && $_REQUEST['tab'] == 'emp-chat') || (isset($_REQUEST['tab']) && $_REQUEST['tab'] == 'cand-chat')) {
return;
}
include dirname(__FILE__) . '/front/jobsearch-chat-toggle-view.php';
}
public function get_user_last_msg_info($id)
{
global $wpdb;
$this->current_user = wp_get_current_user();
$this->query = "SELECT * from {$wpdb->prefix}chatmessages where sender_id = {$id} and reciever_id = {$this->current_user->ID}";
return $wpdb->get_results($this->query);
}
public function get_fiends_list()
{
global $wpdb;
$this->current_user = wp_get_current_user();
//if no user is logged in
if ($this->current_user->ID != 0) {
if (jobsearch_user_is_candidate($this->current_user->ID)) {
$this->query = "SELECT employer_id,is_active,f_id from {$wpdb->prefix}chatfriendlist where candidate_id = {$this->current_user->ID}";
}
//
if (jobsearch_user_is_employer($this->current_user->ID)) {
$this->query = "SELECT candidate_id,is_active,f_id from {$wpdb->prefix}chatfriendlist where employer_id = {$this->current_user->ID}";
}
return $wpdb->get_results($this->query);
}
}
public function limit_text($text, $limit)
{
if (str_word_count($text, 0) > $limit) {
$words = str_word_count($text, 2);
$pos = array_keys($words);
$text = substr($text, 0, $pos[$limit]) . '...';
}
return $text;
}
public function get_day_name_and_time($timestamp)
{
$date = date('d/m/Y', strtotime($timestamp));
if ($date == date('d/m/Y')) {
$date = 'Today at ' . date('g:ia', strtotime($timestamp));
} else if ($date == date('d/m/Y', strtotime("-1 days"))) {
$date = 'Yesterday at ' . date('g:ia', strtotime($timestamp));
} else {
$date = date('g:ia l,F Y', strtotime($timestamp));
}
return $date;
}
public function get_unviewed_messages($reciever_id)
{
global $wpdb;
$current_user = get_current_user_id();
$reciever_id = $reciever_id > 0 ? $reciever_id : 0;
$this->query = "SELECT * FROM {$wpdb->prefix}chatmessages WHERE sender_id = {$reciever_id} AND reciever_id = {$current_user} and viewed = 0";
return $wpdb->get_results($this->query);
}
public function jobsearch_chat_settings_create_menu()
{
global $current_user;
if (in_array($current_user->roles[0], array('jobsearch_chat_support', 'administrator'))) {
add_menu_page(esc_html__('Chat Box', 'jobsearch-ajchat'), esc_html__('Chat Box', 'jobsearch-ajchat'), $current_user->roles[0], 'jobsearch-chat-box', function () {
include dirname(__FILE__) . '/backend/jobsearch-chat-backend-view.php';
}, '', 20);
}
//
add_submenu_page(
'jobsearch-chat-box',
esc_html__('Chat Box Settings', 'jobsearch-ajchat'), //page title
esc_html__('Chat Box Settings', 'jobsearch-ajchat'), //menu title
'administrator',
'jobsearch-chat-box-settings',
array($this, 'jobsearch_chat_settings_editor')
);
}
public function jobsearch_chat_settings_editor()
{
include dirname(__FILE__) . '/backend/jobsearch-chat-backend-settings.php';
}
public function save_chatsettings()
{
if (isset($_POST['jobsearch_chat_setingsubmit']) && current_user_can('administrator') && check_ajax_referer('jobsearch_chat_settings_nonce', '_wpnonce_chat_settings', false)) {
$data_arr_list = array();
foreach ($_POST as $post_key => $post_val) {
$data_arr_list[$post_key] = $post_val;
}
update_option('jobsearch_chat_settings', $data_arr_list);
}
}
public function dashboard_cand_menu_items_inopts_arr($opts_arr = array())
{
$opts_arr['user_chat'] = __('Chat', 'jobsearch-ajchat');
return $opts_arr;
}
public function dashboard_cand_menu_items_inopts_swch_arr($opts_arr = array())
{
$opts_arr['user_chat'] = true;
return $opts_arr;
}
public function dashboard_cand_menu_items_in_fmenu($opts_item = '', $cand_menu_item = '', $get_tab = '', $page_url = '', $candidate_id = '')
{
$jobsearch__options = get_option('jobsearch_plugin_options');
$user_pkg_limits = new Package_Limits;
ob_start();
$dashmenu_links_cand = isset($jobsearch__options['cand_dashbord_menu']) ? $jobsearch__options['cand_dashbord_menu'] : '';
$dashmenu_links_cand = apply_filters('jobsearch_cand_dashbord_menu_items_arr', $dashmenu_links_cand);
$link_item_switch = isset($dashmenu_links_cand['user_chat']) ? $dashmenu_links_cand['user_chat'] : '';
if ($cand_menu_item == 'user_chat' && $link_item_switch == '1') {
?>
<li<?php echo($get_tab == 'user_chat' ? ' class="active"' : '') ?>>
<?php
if ($user_pkg_limits::cand_field_is_locked('dashtab_fields|user_chat')) {
echo ($user_pkg_limits::dashtab_locked_html('cand-chat', 'chat-icon chat-bubble-line', esc_html__('Message / Chat', 'wp-jobsearch')));
} else {
?>
<a href="<?php echo add_query_arg(array('tab' => 'cand-chat'), $page_url) ?>">
<i class="chat-icon chat-bubble-line"></i>
<?php esc_html_e('Message / Chat', 'jobsearch-ajchat') ?>
</a>
<?php
}
?>
</li>
<?php
}
$opts_item .= ob_get_clean();
return $opts_item;
}
public function dashboard_emp_menu_items_inopts_arr($opts_arr = array())
{
$opts_arr['user_chat'] = __('Chat', 'wp-jobsearch');
return $opts_arr;
}
public function dashboard_emp_menu_items_inopts_swch_arr($opts_arr = array())
{
$opts_arr['user_chat'] = true;
return $opts_arr;
}
public function dashboard_emp_menu_items_in_fmenu($opts_item = '', $emp_menu_item = '', $get_tab = '', $page_url = '', $emp_id = '')
{
$jobsearch__options = get_option('jobsearch_plugin_options');
$dashmenu_links_empp = isset($jobsearch__options['emp_dashbord_menu']) ? $jobsearch__options['emp_dashbord_menu'] : '';
$user_pkg_limits = new Package_Limits;
ob_start();
$link_item_switch = isset($dashmenu_links_empp['user_chat']) ? $dashmenu_links_empp['user_chat'] : '';
if ($emp_menu_item == 'user_chat' && $link_item_switch == '1') {
?>
<li<?php echo($get_tab == 'user_chat' ? ' class="active"' : '') ?>>
<?php
if ($user_pkg_limits::emp_field_is_locked('dashtab_fields|user_chat')) {
echo ($user_pkg_limits::dashtab_locked_html('emp-chat', 'chat-icon chat-bubble-line', esc_html__('Message / Chat', 'wp-jobsearch')));
} else {
?>
<a href="<?php echo add_query_arg(array('tab' => 'emp-chat'), $page_url) ?>">
<i class="chat-icon chat-bubble-line"></i>
<?php esc_html_e('Message / Chat', 'jobsearch-ajchat') ?>
</a>
<?php
}
?>
</li>
<?php
}
$opts_item .= ob_get_clean();
return $opts_item;
}
public function start_chat_with_candidate_callback($args = array())
{
global $jobsearch_plugin_options;
$free_shortlist_allow = isset($jobsearch_plugin_options['free-shortlist-allow']) ? $jobsearch_plugin_options['free-shortlist-allow'] : '';
$logged_in_user_id = get_current_user_id();
$employer_id = jobsearch_user_is_employer($logged_in_user_id) == true ? jobsearch_get_user_employer_id($logged_in_user_id) : '';
$employer_user_id = jobsearch_user_is_employer($logged_in_user_id) == true ? $logged_in_user_id : '';
$jobsearch_chat_settings = get_option('jobsearch_chat_settings');
$u_jobsearch_chat_settings_emp = isset($jobsearch_chat_settings['cusjob_chat_disable_for_emp']) ? $jobsearch_chat_settings['cusjob_chat_disable_for_emp'] : '';
$candidate_id = isset($args['candidate_id']) ? $args['candidate_id'] : '';
$class = isset($args['class']) ? $args['class'] : '';
$cand_user_id = jobsearch_get_candidate_user_id($candidate_id);
$cand_jobsearch_chat_settings = get_option('jobsearch_chat_chat_status_' . $cand_user_id);
$is_emp_applicant = jobsearch_is_employer_job_aplicant($candidate_id, $employer_id);
//
$employer_resumes_list = get_post_meta($employer_id, 'jobsearch_candidates_list', true);
$employer_resumes_list = !empty($employer_resumes_list) ? explode(',', $employer_resumes_list) : array();
$user_cv_pkg = apply_filters('jobsearch_onsave_cand_chk_userpkg', false);
if (!$user_cv_pkg) {
$user_cv_pkg = jobsearch_employer_first_subscribed_cv_pkg($employer_user_id);
}
if (!$user_cv_pkg) {
$user_cv_pkg = jobsearch_allin_first_pkg_subscribed($employer_user_id, 'cvs');
}
if (!$user_cv_pkg) {
$user_cv_pkg = jobsearch_emprof_first_pkg_subscribed($employer_user_id, 'cvs');
}
//
$jobsearch_chat_settings = get_option('jobsearch_chat_settings');
$add_to_chat_class = '';
if (jobsearch_get_candidate_user_id($employer_id) != '') {
if ($this->check_if_candidate_exists($candidate_id) == 1) {
$add_to_chat_class = 'jobsearch-chat-candidate-openbox';
} else if ($is_emp_applicant) {
$add_to_chat_class = 'jobsearch-chat-candidate-add';
} else if (in_array($candidate_id, $employer_resumes_list)) {
$add_to_chat_class = 'jobsearch-chat-candidate-add';
} else {
if (isset($jobsearch_chat_settings['chat_pkg']) && $jobsearch_chat_settings['chat_pkg'] == 'free') {
if ($free_shortlist_allow == 'on') {
if (!in_array($candidate_id, $employer_resumes_list)) {
$employer_resumes_list[] = $candidate_id;
}
$employer_resumes_list = implode(',', $employer_resumes_list);
update_post_meta($employer_id, 'jobsearch_candidates_list', $employer_resumes_list);
$add_to_chat_class = 'jobsearch-chat-candidate-add';
}
} else {
if ($user_cv_pkg) {
if (!in_array($candidate_id, $employer_resumes_list)) {
$employer_resumes_list[] = $candidate_id;
}
$employer_resumes_list = implode(',', $employer_resumes_list);
update_post_meta($employer_id, 'jobsearch_candidates_list', $employer_resumes_list);
do_action('jobsearch_add_candidate_resume_id_to_order', $candidate_id, $user_cv_pkg);
$add_to_chat_class = 'jobsearch-chat-candidate-add';
} else {
$add_to_chat_class = 'jobsearch-open-dloadres-popup';
}
}
}
}
$cand_profile_restrict = new Candidate_Profile_Restriction;
//
if (is_user_logged_in() || jobsearch_get_candidate_user_id($employer_id) != '') {
if ((jobsearch_user_is_employer($logged_in_user_id) == true && $u_jobsearch_chat_settings_emp == 'off') || $u_jobsearch_chat_settings_emp == '') {
if ($cand_jobsearch_chat_settings != 1 && !$cand_profile_restrict::cand_field_is_locked('profile_fields|chat', 'detail_page')) {
?>
<div class="jobsearch-chat-start-btn <?php echo($class) ?>">
<a href="javascript:void(0)" data-cand-id="<?php echo($candidate_id) ?>"
data-id="<?php echo($candidate_id) ?>"
data-cand-user-id="<?php echo jobsearch_get_candidate_user_id($candidate_id) ?>"
class="<?php echo($add_to_chat_class) ?>">
<i class="chat-icon chat-bubble"></i>
<small><?php esc_html_e('Send Message', 'jobsearch-ajchat') ?></small>
</a>
</div>
<?php
}
}
}
}
public function start_chat_with_employer_callback($args = array())
{
$employer_id = isset($args['employer_id']) ? $args['employer_id'] : '';
$class = isset($args['class']) ? $args['class'] : '';
$jobsearch_chat_settings = get_option('jobsearch_chat_settings');
$u_jobsearch_chat_settings_cand = isset($jobsearch_chat_settings['cusjob_chat_disable_for_cand']) ? $jobsearch_chat_settings['cusjob_chat_disable_for_cand'] : '';
if (is_user_logged_in() || jobsearch_get_employer_user_id($employer_id) != '') {
$logged_in_user_id = get_current_user_id();
if ((jobsearch_user_is_candidate($logged_in_user_id) && $u_jobsearch_chat_settings_cand == 'off') || $u_jobsearch_chat_settings_cand == '') {
$emp_user_id = jobsearch_get_employer_user_id($employer_id);
$emp_jobsearch_chat_settings = get_option('jobsearch_chat_chat_status_' . $emp_user_id);
if ($emp_jobsearch_chat_settings != 1) { ?>
<div class="jobsearch-chat-start-btn <?php echo($class) ?>">
<a href="javascript:void(0)" data-emp-id="<?php echo($employer_id) ?>"
data-emp-user-id="<?php echo jobsearch_get_employer_user_id($employer_id) ?>"
class="<?php echo $this->check_if_employer_exists($employer_id) != 1 ? 'jobsearch-chat-emp-add' : 'jobsearch-chat-employer-openbox' ?>">
<i class="chat-icon chat-bubble"></i>
<small><?php esc_html_e('Send Message', 'jobsearch-ajchat') ?></small>
</a>
</div>
<?php }
}
}
}
public function check_if_candidate_exists($candidate_id)
{
global $wpdb;
$current_user = get_current_user_id();
$this->result = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}chatfriendlist WHERE employer_id = {$current_user} and candidate_id = " . jobsearch_get_candidate_user_id($candidate_id) . " ");
return count($this->result);
}
public function check_if_employer_exists($employer_id)
{
global $wpdb;
$current_user = get_current_user_id();
$emp_user_id = jobsearch_get_employer_user_id($employer_id);
//
$this->query = "SELECT * FROM {$wpdb->prefix}chatfriendlist WHERE employer_id = {$emp_user_id} and candidate_id = {$current_user}";
$this->result = $wpdb->get_results($this->query);
return count($this->result);
}
public function php_pusher_sdk_api_settings($section_settings = array())
{
if (isset($section_settings['fields'])) {
// PHP pusher
$section_settings['fields'][] = array(
'id' => 'php-pusher-section',
'type' => 'section',
'title' => __('Chat Pusher API settings section.', 'jobsearch-ajchat'),
'indent' => true,
);
//
$section_settings['fields'][] = array(
'id' => 'jobsearch-php-pusher-app-id',
'type' => 'text',
'transparent' => false,
'title' => __('App ID', 'wp-jobsearch'),
'subtitle' => __('Please enter the app id of your chat Pusher app.', 'jobsearch-ajchat'),
'desc' => '',
'default' => ''
);
//
$section_settings['fields'][] = array(
'id' => 'jobsearch-php-pusher-auth-key',
'type' => 'text',
'transparent' => false,
'title' => __('Auth Key', 'wp-jobsearch'),
'subtitle' => __('Please enter the auth key of your chat Pusher app.', 'jobsearch-ajchat'),
'desc' => '',
'default' => ''
);
$section_settings['fields'][] = array(
'id' => 'jobsearch-php-pusher-auth-secret',
'type' => 'text',
'transparent' => false,
'title' => __('Auth Secret', 'wp-jobsearch'),
'subtitle' => __('Please enter the auth secret of your chat Pusher app.', 'jobsearch-ajchat'),
'desc' => '',
'default' => ''
);
$section_settings['fields'][] = array(
'id' => 'jobsearch-php-pusher-auth-cluster',
'type' => 'text',
'transparent' => false,
'title' => __('cluster Secret', 'wp-jobsearch'),
'subtitle' => __('Please enter the app cluster of your chat Pusher app.', 'jobsearch-ajchat'),
'desc' => '',
'default' => ''
);
}
return $section_settings;
}
public function wp_jobsearch_get_cand_profile_img_content()
{
$candidate_id = isset($_GET['cand_id']) ? $_GET['cand_id'] : '';
$size = isset($_GET['dimen']) ? $_GET['dimen'] : '';
$error_page_url = home_url('/404_error');
if (get_post_type($candidate_id) == 'candidate') {
$user_avatar_dburl = get_post_meta($candidate_id, 'jobsearch_user_avatar_url', true);
if (isset($user_avatar_dburl['file_url']) && $user_avatar_dburl['file_url'] != '') {
require_once(ABSPATH . 'wp-admin/includes/file.php');
WP_Filesystem();
global $wp_filesystem;
$folder_path = $user_avatar_dburl['file_path'];
$user_def_avatar_url = isset($user_avatar_dburl['orig_file_url']) ? $user_avatar_dburl['orig_file_url'] : '';
$file_name = $user_avatar_dburl['file_name'];
$filetype = $user_avatar_dburl['mime_type'];
$file_mimetype = $filetype['type'];
$file_ext = $filetype['ext'];
if (!$file_ext) {
$file_ext = 'jpg';
}
if (!empty($attach_size) && $attach_size == 'full') {
$file_path = $folder_path . '/' . $file_name;
if ($user_def_avatar_url != '') {
$file_path = str_replace(get_site_url() . '/', ABSPATH, $user_def_avatar_url);
}
} else {
$file_path = $folder_path . '/user-img-150.' . $file_ext;
if ($user_def_avatar_url != '') {
$orig_file_path = str_replace(get_site_url() . '/', ABSPATH, $user_def_avatar_url);
$file_path = str_replace($file_name, 'user-img-150.' . $file_ext, $orig_file_path);
}
}
}
if (isset($file_path)) {
header('Content-Description: File Transfer');
header('Content-Type: ' . $file_mimetype);
header('Content-Dispositon: attachment; filename="' . basename($file_path) . '"');
header('Content-Transfer-Encoding: Binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . @filesize($file_path));
ob_clean();
flush();
@readfile($file_path);
exit;
}
} else {
wp_redirect($error_page_url);
exit;
}
die;
}
public function jobsearch_cand_img_url_wout_encode($candidate_id, $dimen = '150')
{
$user_id = jobsearch_get_candidate_user_id($candidate_id);
$user_gravatar_url = get_avatar_url($user_id, array('size' => 132));
$user_avatar_dburl = get_post_meta($candidate_id, 'jobsearch_user_avatar_url', true);
$user_def_avatar_url = '';
if (isset($user_avatar_dburl['file_url']) && $user_avatar_dburl['file_url'] != '') {
$user_img_name = $user_avatar_dburl['file_name'];
$user_img_path = $user_avatar_dburl['file_path'];
$img_full_path = $user_img_path . '/' . $user_img_name;
$user_def_avatar_url = isset($user_avatar_dburl['orig_file_url']) ? $user_avatar_dburl['orig_file_url'] : '';
if ($user_def_avatar_url != '') {
$img_full_path = str_replace(get_site_url() . '/', ABSPATH, $user_def_avatar_url);
}
if (file_exists($img_full_path)) {
$user_def_avatar_url = esc_url(wp_nonce_url(add_query_arg(array('action' => 'wp_jobsearch_get_cand_profile_img_content', 'cand_id' => $candidate_id, 'dimen' => $dimen), admin_url('admin-ajax.php')), 'jobsearch_cand_img_nonce', '_cand_img_nonce'));
} else {
$user_def_avatar_url = '';
}
} else {
$user_avatar_id = get_post_thumbnail_id($candidate_id);
if ($user_avatar_id > 0) {
$user_has_cimg = true;
$def_img_size = 'thumbnail';
$def_img_size = apply_filters('jobsearch_cand_dashside_pimg_size', $def_img_size);
$user_thumbnail_image = wp_get_attachment_image_src($user_avatar_id, $def_img_size);
$user_def_avatar_url = isset($user_thumbnail_image[0]) && esc_url($user_thumbnail_image[0]) != '' ? $user_thumbnail_image[0] : '';
}
}
if ($user_def_avatar_url == '') {
$user_def_avatar_url = $user_gravatar_url != '' ? $user_gravatar_url : jobsearch_candidate_image_placeholder();
}
return $user_def_avatar_url;
}
public function dashboard_tab_content_add($html = '', $get_tab = '')
{
//Chat front Full view for emplyer and candidate
global $jobsearch_plugin_options;
$curent_user_id = $user_id = get_current_user_id();
wp_enqueue_style('jobsearch-chat-app');
wp_enqueue_script('jobsearch-selectize');
//
$php_pusher_auth = isset($jobsearch_plugin_options['jobsearch-php-pusher-auth-key']) ? $jobsearch_plugin_options['jobsearch-php-pusher-auth-key'] : '';
$php_pusher_secret = isset($jobsearch_plugin_options['jobsearch-php-pusher-auth-secret']) ? $jobsearch_plugin_options['jobsearch-php-pusher-auth-secret'] : '';
$php_pusher_app_id = isset($jobsearch_plugin_options['jobsearch-php-pusher-app-id']) ? $jobsearch_plugin_options['jobsearch-php-pusher-app-id'] : '';
//
if ($get_tab == 'emp-chat' || $get_tab == 'cand-chat') {
$this->args = array(
'role' => 'administrator',
'orderby' => 'user_nicename',
'order' => 'ASC',
);
$this->jobsearch_admin = get_users($this->args);
//
$this->args = array(
'role' => 'jobsearch_chat_support',
'orderby' => 'user_nicename',
'order' => 'ASC',
);
$this->jobsearch_chat_support = get_users($this->args);
//
$user_id = get_current_user_id();
if (jobsearch_user_is_employer($user_id)) {
$employer_user_id = $user_id;
$employer_id = jobsearch_get_user_employer_id($employer_user_id);
$current_user_def_avatar_url = get_avatar_url($employer_user_id, array('size' => 140));
$user_avatar_id = get_post_thumbnail_id($employer_id);
if ($user_avatar_id > 0) {
$user_thumbnail_image = wp_get_attachment_image_src($user_avatar_id, 'thumbnail');
$current_user_def_avatar_url = isset($user_thumbnail_image[0]) && esc_url($user_thumbnail_image[0]) != '' ? $user_thumbnail_image[0] : '';
} else {
$current_user_def_avatar_url = jobsearch_employer_image_placeholder();
}
} else {
$cand_user_id = $user_id;
$candidate_user_id = jobsearch_get_user_candidate_id($cand_user_id);
$current_user_def_avatar_url = $this->jobsearch_cand_img_url_wout_encode($candidate_user_id);
}
?>
<script>
jQuery(document).ready(function () {
jQuery('.chat-selectize').selectize({
sortField: 'text'
});
});
</script>
<div id="jobsearch-chat-container" class="jobsearch-chat-main-container jobsearch-chat-front-full">
<div class="jobsearch-profile-title jobsearch-chat-heading">
<?php if (empty($php_pusher_auth) || empty($php_pusher_secret) || empty($php_pusher_app_id)) { ?>
<h2><?php esc_html_e('Please add API credentials in Jobsearch options, API settings in order to use chat.', 'jobsearch-ajchat') ?></h2>
<?php return;
} ?>
<h2><?php esc_html_e('Messages', 'jobsearch-ajchat') ?></h2>
</div>
<aside>
<ul class="nav nav-tabs jobsearch-chat-nav">
<li class="active">
<a href="javascript:void(0)" data-list="jobsearch-chat-user-employer"
class="jobsearch-chat-list"><?php echo esc_html__('All', 'jobsearch-ajchat') ?></a>
</li>
<li>
<a href="javascript:void(0)" data-list="jobsearch-chat-user-candidate"
class="jobsearch-chat-list"><?php echo esc_html__(jobsearch_user_is_employer($user_id) ? 'Candidate' : 'Employer', 'jobsearch-ajchat') ?></a>
</li>
<li>
<a href="javascript:void(0)" data-list="jobsearch-chat-user-groups"
class="jobsearch-chat-list" style="display: none;"><?php echo esc_html__('Groups', 'jobsearch-ajchat') ?></a>
</li>
</ul>
<div class="jobsearch-chat-sort-list">
<div class="jobsearch-chat-selectize">
<select class="chat-selectize sort-contacts">
<option value="0"><?php echo esc_html__('Sort Contacts', 'jobsearch-ajchat') ?></option>
<option value="sort_by_recent"><?php echo esc_html__('Sort by recent', 'jobsearch-ajchat') ?></option>
<option value="sort_by_unread"><?php echo esc_html__('Sort by unread', 'jobsearch-ajchat') ?></option>
</select>
</div>
<div class="jobsearch-chat-filter-wrapper">
<div class="jobsearch-chat-filter-input">
<a href="javascript:void(0)" class="jobsearch-chat-filter-toggle"><i
class="chat-icon chat-search"></i></a>
</div>
<div class="jobsearch-chat-filter-input-field">
<input type="text" name="filter-name" id="search-field-front-full-view"
data-user-type="emp"
placeholder="<?php echo esc_html__('Search', 'jobsearch-ajchat') ?>">
<i class="jobsearch-chat-filter-toggle chat-icon chat-close"></i>
</div>
</div>
</div>
<div class="jobsearch-chat-user-list">
<input type="hidden" name="employer-user-offset" value="7">
<input type="hidden" name="candidate-user-offset" value="7">
<input type="hidden" name="scrollTop-emp" value="600">
<input type="hidden" name="scrollTop-cand" value="600">
<div class="jobsearch-chat-users-list jobsearch-chat-user-employer">
<ul>
<?php
$user_def_avatar_url = '';
if (count($this->jobsearch_chat_support) > 0) {
foreach ($this->jobsearch_chat_support as $admin) {
$total_msgs = $this->get_unviewed_messages($admin->ID);
$user_img = get_avatar_url($admin->ID);
$user_msgs = $this->get_user_last_msg_info($admin->ID);
$last_msg = end($user_msgs);
?>
<li class="jobsearch-chat-user-<?php echo($admin->ID) ?>">
<img src="<?php echo($user_img) ?>">
<span class="status status-with-thumb orange"></span>
<div class="jobsearch-load-user-chat user-info"
data-user-chat="<?php echo($admin->ID) ?>">
<h2 class="name"><?php echo($admin->display_name) ?>
(<?php echo esc_html__('Support', 'jobsearch-ajchat') ?>)
<small><?php echo isset($last_msg) && !empty($last_msg) ? date("g:ia", strtotime($last_msg->time_sent)) : '' ?></small>
</h2>
<p> <?php echo isset($last_msg) && !empty($last_msg) ? $this->limit_text($last_msg->message, 5) : '' ?>
<span class="jobsearch-chat-unread-message <?php echo count($total_msgs) == 0 ? 'hidden' : ''; ?>"><?php echo count($total_msgs) ?></span>
</p>
</div>
</li>
<?php }
}
//
if (count($this->jobsearch_admin) > 0) {
foreach ($this->jobsearch_admin as $admin) {
$total_msgs = $this->get_unviewed_messages($admin->ID);
$user_img = get_avatar_url($admin->ID);
$user_msgs = $this->get_user_last_msg_info($admin->ID);
$last_msg = end($user_msgs);
?>
<li class="jobsearch-chat-user-<?php echo($admin->ID) ?>">
<img src="<?php echo($user_img) ?>">
<span class="status status-with-thumb orange"></span>
<div class="jobsearch-load-user-chat user-info"
data-user-chat="<?php echo($admin->ID) ?>">
<h2 class="name"><?php echo($admin->display_name) ?>
<small><?php echo isset($last_msg) && !empty($last_msg) ? date("g:ia", strtotime($last_msg->time_sent)) : '' ?></small>
</h2>
<p> <?php echo isset($last_msg) && !empty($last_msg) ? $this->limit_text($last_msg->message, 5) : '' ?>
<span class="jobsearch-chat-unread-message <?php echo count($total_msgs) == 0 ? 'hidden' : ''; ?>"><?php echo count($total_msgs) ?></span>
</p>
</div>
</li>
<?php }
}
//
foreach ($this->get_fiends_list() as $friends) {
if(!empty($friends->candidate_id)){
$user_data = get_userdata($friends->candidate_id);
}elseif(!empty($friends->employer_id)){
$user_data = get_userdata($friends->employer_id);
}
$user_id = isset($user_data->ID) ? $user_data->ID : '';
if (isset($friends->employer_id)) {
$employer_user_id = $friends->employer_id;
$employer_id = jobsearch_get_user_employer_id($employer_user_id);
$user_def_avatar_url = get_avatar_url($employer_user_id, array('size' => 140));
$user_avatar_id = get_post_thumbnail_id($employer_id);
if ($user_avatar_id > 0) {
$user_thumbnail_image = wp_get_attachment_image_src($user_avatar_id, 'thumbnail');
$user_def_avatar_url = isset($user_thumbnail_image[0]) && esc_url($user_thumbnail_image[0]) != '' ? $user_thumbnail_image[0] : '';
} else {
$user_def_avatar_url = jobsearch_employer_image_placeholder();
}
$user_displayname = isset($user_data->display_name) ? $user_data->display_name : '';
} else {
$cand_user_id = $friends->candidate_id;
$candidate_user_id = jobsearch_get_user_candidate_id($cand_user_id);
$user_def_avatar_url = $this->jobsearch_cand_img_url_wout_encode($candidate_user_id);
//$user_data = get_user_by('ID', $friends->candidate_id);
//$user_id = isset($user_data->ID) ? $user_data->ID : '';
$user_displayname = isset($user_data->display_name) ? $user_data->display_name : '';
$user_displayname = apply_filters('jobsearch_user_display_name', $user_displayname, $user_data);
}
$total_msgs = $this->get_unviewed_messages($user_id);
$user_msgs = $this->get_user_last_msg_info($user_id);
$last_msg = end($user_msgs);
?>
<li class="jobsearch-chat-user-<?php echo($user_id) ?>">
<img src="<?php echo($user_def_avatar_url) ?>">
<div class="jobsearch-chat-user-events">
<a href="javascript:void(0)"><i
class="chat-icon chat-clock-fill"></i></a>
<a href="javascript:void(0)"><i
class="chat-icon chat-heart-o"></i></a>
<a href="javascript:void(0)" class="jobsearch-chat-delete-user"
data-selector-id="<?php echo($user_id) ?>"
data-user-id="<?php echo($friends->f_id) ?>"><i
class="chat-icon chat-trash-fill"></i></a>
</div>
<span class="status status-with-thumb orange"></span>
<div class="jobsearch-load-user-chat name"
data-user-chat="<?php echo($user_id) ?>">
<h2><?php echo($user_displayname) ?>
<small><?php echo isset($last_msg) && !empty($last_msg) ? date("g:ia", strtotime($last_msg->time_sent)) : '' ?></small>
</h2>
<p><?php echo isset($last_msg) && !empty($last_msg) ? $this->limit_text($last_msg->message, 5) : '' ?>
<span class="jobsearch-chat-unread-message <?php echo count($total_msgs) == 0 ? 'hidden' : ''; ?>"><?php echo count($total_msgs) ?></span>
</p>
</div>
</li>
<?php } ?>
</ul>
</div>
<div class="jobsearch-chat-users-list jobsearch-chat-user-candidate hidden">
<ul>
<?php foreach ($this->get_fiends_list() as $friends) {
if(!empty($friends->candidate_id)){
$user_data = get_userdata($friends->candidate_id);
}elseif(!empty($friends->employer_id)){
$user_data = get_userdata($friends->employer_id);
}
if (isset($friends->employer_id)) {
$employer_user_id = $friends->employer_id;
$employer_id = jobsearch_get_user_employer_id($employer_user_id);
$user_def_avatar_url = get_avatar_url($employer_user_id, array('size' => 140));
$user_avatar_id = get_post_thumbnail_id($employer_id);
if ($user_avatar_id > 0) {
$user_thumbnail_image = wp_get_attachment_image_src($user_avatar_id, 'thumbnail');
$user_def_avatar_url = isset($user_thumbnail_image[0]) && esc_url($user_thumbnail_image[0]) != '' ? $user_thumbnail_image[0] : '';
} else {
$user_def_avatar_url = jobsearch_employer_image_placeholder();
}
$user_displayname = $user_data->display_name;
} else {
$cand_user_id = $friends->candidate_id;
$candidate_user_id = jobsearch_get_user_candidate_id($cand_user_id);
$user_def_avatar_url = $this->jobsearch_cand_img_url_wout_encode($candidate_user_id);
//
$user_data = get_user_by('ID', $friends->candidate_id);
$user_id = isset($user_data->ID) ? $user_data->ID : '';
$user_displayname = isset($user_data->display_name) ? $user_data->display_name : '';
$user_displayname = apply_filters('jobsearch_user_display_name', $user_displayname, $user_data);
}
//
$total_msgs = $this->get_unviewed_messages($user_id);
$user_msgs = $this->get_user_last_msg_info($user_id);
$last_msg = end($user_msgs);
?>
<li class="jobsearch-chat-user-<?php echo($user_id) ?>">
<img src="<?php echo($user_def_avatar_url) ?>">
<div class="jobsearch-chat-user-events">
<a href="javascript:void(0)"><i
class="chat-icon chat-clock-fill"></i></a>
<a href="javascript:void(0)"><i
class="chat-icon chat-heart-o"></i></a>
<a href="javascript:void(0)"><i
class="chat-icon chat-trash-fill"></i></a>
</div>
<span class="status status-with-thumb orange"></span>
<div class="user-info">
<h2 class="jobsearch-load-user-chat name"
data-user-chat="<?php echo($user_id) ?>"><?php echo($user_displayname) ?>
<small><?php echo $last_msg != '' ? date("g:ia", strtotime($last_msg->time_sent)) : '' ?></small>
</h2>
<p><?php echo $last_msg != '' ? $this->limit_text($last_msg->message, 5) : '' ?>
<span class="jobsearch-chat-unread-message <?php echo count($total_msgs) == 0 ? 'hidden' : ''; ?>"><?php echo count($total_msgs) ?></span>
</p>
</div>
</li>
<?php } ?>
</ul>
</div>
<div class="jobsearch-chat-users-list jobsearch-chat-user-groups hidden" style="display: none;">
<ul>
<li class="feature-coming-soon">
<span class="jobsearch-chat-group-title "><?php echo esc_html__('Group Conversation', 'jobsearch-ajchat') ?></span>
<a href="javascript:void(0)">
<span><img src="<?php echo plugin_dir_url(__DIR__) . '/img/group-icon.png'; ?>"></span>
<small><?php echo esc_html__('Create New Group', 'jobsearch-ajchat') ?></small>
</a>
</li>
</ul>
</div>
</div>
</aside>
<div class="jobsearch-user-chat-content jobsearch-user-chat-messages hidden">
<div class="jobsearch-user-chat-header">
<div class="jobsearch-user-detail">
<img src="#" alt="">
<span class="status status-with-thumb orange"></span>
<div class="jobsearch-user-status-wrapper">
<h2></h2>
<span><?php echo esc_html__('Offline', 'jobsearch-ajchat') ?></span>
</div>
</div>
<div class="jobsearch-user-file-content">
<ul>
<li><a href="javascript:void(0)" class="feature-coming-soon"><i
class="chat-icon chat-icon-plus-circle"></i></a></li>
<li><a href="javascript:void(0)" class="feature-coming-soon"><i
class="chat-icon chat-icon-ellipsis-v"></i></a></li>
</ul>
</div>
</div>
<ul id="chat" class="jobsearch-chat-messages-list" onscroll="loadMessages(this)"></ul>
<div class="jobsearch-chat-form-wrapper">
<form class="jobsearch-chat-form" method="post" enctype="multipart/form-data">
<textarea placeholder="Type your message" name="message"></textarea>
<input type="hidden" name="sender_id" value="<?php echo($curent_user_id) ?>">
<input type="hidden" name="reciever_id" value="">
<input type="hidden" class="typing" name="typing" value="false">
<input type="hidden" name="sender_image"
value="<?php echo($current_user_def_avatar_url) ?>">
<input type="hidden" name="receiver_image" value="">
<input type="file" class="jobsearch-chat-share-file hidden" value="sharefile">
<div class="jobsearch-chat-share-file-wrapper">
<div class="jobsearch-chat-emojis-box">
<?php foreach ($this->emojis as $key => $info) {
if ($key >= 1777 && $key <= 1821) {
echo '<span class="jobsearch-emoji" data-val="' . $info . '">' . $info . '</span>';
}
} ?>
</div>
<div class="jobsearch-chat-share-file">
<a href="javascript:void(0)" class="jobsearch-tooltipcon"
title="<?php echo esc_html__('Upload File', 'jobsearch-ajchat') ?>"
onclick="triggerFile()"><i class="chat-icon chat-link"></i></a>
<a href="javascript:void(0)"
class="jobsearch-chat-emoji-picker-select-full-view"><i
class="chat-icon chat-smile"></i></a>
</div>
<div class="jobsearch-chat-typing-wrapper">
<span class="jobsearch-chat-user-typing bounce">
<img src="<?php echo plugin_dir_url(__DIR__) . '../img/userIsTyping.gif'; ?>"/>
</span>
<input type="submit" class="jobsearch-chat-send-message"
value="<?php echo esc_html__('Send', 'jobsearch-ajchat') ?>">
</div>
</div>
</form>
<form hidden enctype="multipart/form-data" name="fileForm" method="post"
onsubmit="uploadFileForm(this);return false;">
<input type="file" class="file" name="userfile" required/>
<input type="hidden" name="reciever_id" value="">
<input type="hidden" name="sender_id" value="<?php echo($user_id) ?>">
<input type="hidden" name="sender_image"
value="<?php echo($current_user_def_avatar_url) ?>">
<input type="hidden" name="receiver_image" value="">
<input type="hidden" name="action" value="uploadFile">
<input type="submit" name="submit" class="jobsearch-chat-save" value="save"/>
</form>
</div>
</div>
</div>
<?php
$html .= ob_get_clean();
return $html;
}
}
}
}
//
global $jobsearch_chat_settings;
$jobsearch_chat_settings = new addon_jobsearch_chat_settings_handle();