This commit is contained in:
2024-05-20 15:37:46 +03:00
commit 00b7dbd0b7
10404 changed files with 3285853 additions and 0 deletions

View File

@ -0,0 +1,34 @@
<?php
defined( 'ABSPATH' ) or die( 'No script kiddies please!!' );
if ( !class_exists( 'PLD_Activation' ) ) {
class PLD_Activation extends PLD_Library {
/**
* Includes all the activation tasks
*
* @since 1.0.0
*/
function __construct() {
register_activation_hook( PLD_PATH . 'posts-like-dislike.php', array( $this, 'activation_tasks' ) );
}
/**
* Store default settings in database on activation
*
* @since 1.0.0
*/
function activation_tasks() {
$default_settings = $this->get_default_settings();
if(!get_option('pld_settings')){
update_option('pld_settings',$default_settings);
}
}
}
new PLD_Activation();
}

View File

@ -0,0 +1,156 @@
<?php
defined('ABSPATH') or die('No script kiddies please!!');
if (!class_exists('PLD_Admin')) {
class PLD_Admin extends PLD_Library {
function __construct() {
parent::__construct();
add_action('admin_menu', array($this, 'pld_admin_menu'));
/**
* Plugin Settings link in plugins screen
*
*/
add_filter('plugin_action_links_' . PLD_BASENAME, array($this, 'add_setting_link'));
/**
* Settings save action
*/
add_action('wp_ajax_pld_settings_save_action', array($this, 'save_settings'));
add_action('wp_ajax_nopriv_pld_settings_save_action', array($this, 'no_permission'));
/**
* Settings restore action
*/
add_action('wp_ajax_pld_settings_restore_action', array($this, 'restore_settings'));
add_action('wp_ajax_nopriv_pld_settings_restore_action', array($this, 'no_permission'));
/**
* Count Info Meta Box
*/
add_action('add_meta_boxes', array($this, 'render_count_info_metabox'));
/**
* Save posts like dislike meta box
*/
add_action('save_post', array($this, 'save_pld_metabox'));
}
function pld_admin_menu() {
add_options_page(__('Posts Like Dislike', 'posts-like-dislike'), __('Posts Like Dislike', 'posts-like-dislike'), 'manage_options', 'posts-like-dislike', array($this, 'pld_settings'));
}
function pld_settings() {
include(PLD_PATH . 'inc/views/backend/settings.php');
}
function save_settings() {
if (isset($_POST['_wpnonce']) && wp_verify_nonce($_POST['_wpnonce'], 'pld-backend-ajax-nonce') && current_user_can('manage_options')) {
$_POST = stripslashes_deep($_POST);
parse_str($_POST['settings_data'], $settings_data);
$settings_data = $this->sanitize_array($settings_data);
$pld_settings = $settings_data['pld_settings'];
/**
* Fires before storing the settings array into database
*
* @param type array $settings_data - before sanitization
* @param type array $pld_settings - after sanitization
*
* @since 1.0.0
*/
do_action('pld_before_save_settings', $settings_data, $pld_settings);
/**
* Filters the settings stored in the database
*
* @param type array $pld_settings
*
* @since 1.0.0
*/
update_option('pld_settings', apply_filters('pld_settings', $pld_settings));
die(__('Settings saved successfully', PLD_TD));
} else {
die('No script kiddies please!!');
}
}
function no_permission() {
die('No script kiddies please!!');
}
function restore_settings() {
if (isset($_POST['_wpnonce']) && wp_verify_nonce($_POST['_wpnonce'], 'pld-backend-ajax-nonce') && current_user_can('manage_options')) {
$default_settings = $this->get_default_settings();
update_option('pld_settings', $default_settings);
die(__('Settings restored successfully.Redirecting...', PLD_TD));
} else {
die('No script kiddies please!!');
}
}
/**
* Adds settings link
*
* @since 1.0.0
*/
function add_setting_link($links) {
$settings_link = array(
'<a href="' . admin_url('options-general.php?page=posts-like-dislike') . '">' . __('Settings', PLD_TD) . '</a>',
);
return array_merge($links, $settings_link);
}
function render_count_info_metabox() {
$pld_settings = $this->pld_settings;
$post_types = (!empty($pld_settings['basic_settings']['post_types'])) ? $pld_settings['basic_settings']['post_types'] : array();
if (empty($pld_settings['basic_settings']['hide_counter_info_metabox']) && !empty($post_types)) {
add_meta_box('pld-count-info', esc_html__('Posts Like Dislike', 'posts-like-dislike'), array($this, 'render_count_info_html'), $post_types, 'normal');
}
}
function render_count_info_html($post) {
$post_id = $post->ID;
$like_count = get_post_meta($post_id, 'pld_like_count', true);
$dislike_count = get_post_meta($post_id, 'pld_dislike_count', true);
include(PLD_PATH . '/inc/views/backend/pld-metabox.php');
}
function save_pld_metabox($post_id) {
$nonce_name = isset($_POST['pld_metabox_nonce_field']) ? $_POST['pld_metabox_nonce_field'] : '';
$nonce_action = 'pld_metabox_nonce';
// Check if nonce is valid.
if (!wp_verify_nonce($nonce_name, $nonce_action)) {
return;
}
// Check if user has permissions to save data.
if (!current_user_can('edit_post', $post_id)) {
return;
}
// Check if not an autosave.
if (wp_is_post_autosave($post_id)) {
return;
}
// Check if not a revision.
if (wp_is_post_revision($post_id)) {
return;
}
if (isset($_POST['pld_like_count'], $_POST['pld_dislike_count'])) {
$pld_like_count = sanitize_text_field($_POST['pld_like_count']);
$pld_dislike_count = sanitize_text_field($_POST['pld_dislike_count']);
update_post_meta($post_id, 'pld_like_count', $pld_like_count);
update_post_meta($post_id, 'pld_dislike_count', $pld_dislike_count);
} else {
return;
}
}
}
new PLD_Admin();
}

View File

@ -0,0 +1,315 @@
<?php
if (!class_exists('PLD_Ajax')) {
class PLD_Ajax extends PLD_Library {
function __construct() {
add_action('wp_ajax_pld_post_ajax_action', array($this, 'like_dislike_action'));
add_action('wp_ajax_nopriv_pld_post_ajax_action', array($this, 'like_dislike_action'));
add_action('wp_ajax_pld_post_undo_ajax_action', array($this, 'like_dislike_undo_action'));
add_action('wp_ajax_nopriv_pld_post_undo_ajax_action', array($this, 'like_dislike_undo_action'));
}
function like_dislike_action() {
if (isset($_POST['_wpnonce']) && wp_verify_nonce($_POST['_wpnonce'], 'pld-ajax-nonce')) {
$post_id = sanitize_text_field($_POST['post_id']);
/**
* Action pld_before_ajax_process
*
* @param type int $post_id
*
* @since 1.0.0
*/
do_action('pld_before_ajax_process', $post_id);
$pld_settings = get_option('pld_settings');
/**
* Cookie Restriction Validation
*
*/
if ($pld_settings['basic_settings']['like_dislike_resistriction'] == 'cookie' && isset($_COOKIE['pld_' . $post_id])) {
$response_array = array('success' => true, 'message' => 'Invalid action');
echo json_encode($response_array);
die();
}
/**
* IP Restriction Validation
*/
if ($pld_settings['basic_settings']['like_dislike_resistriction'] == 'ip') {
$liked_ips = get_post_meta($post_id, 'pld_ips', true);
$user_ip = $this->get_user_IP();
if (empty($liked_ips)) {
$liked_ips = array();
}
if (in_array($user_ip, $liked_ips)) {
$response_array = array('success' => true, 'message' => 'Invalid action');
echo json_encode($response_array);
die();
}
}
/**
* User Logged In validation
*/
if ($pld_settings['basic_settings']['like_dislike_resistriction'] == 'user') {
if (is_user_logged_in()) {
$liked_users = get_post_meta($post_id, 'pld_users', true);
$liked_users = (empty($liked_users)) ? array() : $liked_users;
$current_user_id = get_current_user_id();
if (in_array($current_user_id, $liked_users)) {
$response_array = array('success' => true, 'message' => 'Invalid action');
echo json_encode($response_array);
die();
}
} else {
$response_array = array('success' => true, 'message' => 'Invalid action');
echo json_encode($response_array);
die();
}
}
$type = sanitize_text_field($_POST['type']);
if ($type == 'like') {
$like_count = get_post_meta($post_id, 'pld_like_count', true);
if (empty($like_count)) {
$like_count = 0;
}
$like_count = $like_count + 1;
$check = update_post_meta($post_id, 'pld_like_count', $like_count);
if ($check) {
$response_array = array('success' => true, 'latest_count' => $like_count);
} else {
$response_array = array('success' => false, 'latest_count' => $like_count);
}
} else {
$dislike_count = get_post_meta($post_id, 'pld_dislike_count', true);
if (empty($dislike_count)) {
$dislike_count = 0;
}
$dislike_count = $dislike_count + 1;
$check = update_post_meta($post_id, 'pld_dislike_count', $dislike_count);
if ($check) {
$response_array = array('success' => true, 'latest_count' => $dislike_count);
} else {
$response_array = array('success' => false, 'latest_count' => $dislike_count);
}
}
if ($pld_settings['basic_settings']['like_dislike_resistriction'] == 'cookie') {
setcookie('pld_' . $post_id, $type, time() + 365 * 24 * 60 * 60, '/');
}
/**
* Check the liked ips and insert the user ips for future checking
*
*/
if ($pld_settings['basic_settings']['like_dislike_resistriction'] == 'ip') {
$liked_ips = get_post_meta($post_id, 'pld_ips', true);
$liked_ips = (empty($liked_ips)) ? array() : $liked_ips;
$liked_ips_info = get_comment_meta($post_id, 'pld_ips_info', true);
$liked_ips_info = (empty($liked_ips_info)) ? array() : $liked_ips_info;
if (!in_array($user_ip, $liked_ips)) {
$liked_ips[] = $user_ip;
$liked_ips_info[md5($user_ip)] = $type;
}
update_post_meta($post_id, 'pld_ips', $liked_ips);
update_post_meta($post_id, 'pld_ips_info', $liked_ips_info);
}
/**
* Check if user is logged in to check user login for like dislike action
*/
if ($pld_settings['basic_settings']['like_dislike_resistriction'] == 'user') {
if (is_user_logged_in()) {
$liked_users = get_post_meta($post_id, 'pld_users', true);
$liked_users = (empty($liked_users)) ? array() : $liked_users;
$liked_users_info = get_post_meta($post_id, 'pld_users_info', true);
$liked_users_info = (empty($liked_users_info)) ? array() : $liked_users_info;
$current_user_id = get_current_user_id();
if (!in_array($current_user_id, $liked_users)) {
$liked_users[] = $current_user_id;
}
$liked_users_info[$current_user_id] = $type;
update_post_meta($post_id, 'pld_users', $liked_users);
update_comment_meta($post_id, 'pld_users_info', $liked_users_info);
}
}
/**
* Action pld_after_ajax_process
*
* @param type int $post_id
*
* @since 1.0.0
*/
do_action('pld_after_ajax_process', $post_id);
echo json_encode($response_array);
//$this->print_array( $response_array );
die();
} else {
die('No script kiddies please!');
}
}
function like_dislike_undo_action() {
if (isset($_POST['_wpnonce']) && wp_verify_nonce($_POST['_wpnonce'], 'pld-ajax-nonce')) {
$post_id = sanitize_text_field($_POST['post_id']);
/**
* Action pld_before_undo_ajax_process
* Fires just before the undo ajax process
*
* @param type int $post_id
*
* @since 1.1.9
*/
do_action('pld_before_undo_ajax_process', $post_id);
$type = sanitize_text_field($_POST['type']);
$pld_settings = get_option('pld_settings');
/**
* Cookie Validation
*/
if ($pld_settings['basic_settings']['like_dislike_resistriction'] == 'cookie' && !isset($_COOKIE['pld_' . $post_id])) {
$response_array = array('success' => false, 'message' => 'Invalid action');
echo json_encode($response_array);
die();
}
/**
* IP Validation
*/
if ($pld_settings['basic_settings']['like_dislike_resistriction'] == 'ip') {
$user_ip = $this->get_user_IP();
$liked_ips = get_post_meta($post_id, 'pld_ips', true);
if (empty($liked_ips)) {
$liked_ips = array();
}
if ((!in_array($user_ip, $liked_ips))) {
$response_array = array('success' => false, 'message' => 'Invalid action');
echo json_encode($response_array);
die();
}
}
/**
* User Logged in validation
*/
if ($pld_settings['basic_settings']['like_dislike_resistriction'] == 'user') {
if (is_user_logged_in()) {
$liked_users = get_post_meta($post_id, 'pld_users', true);
$liked_users = (empty($liked_users)) ? array() : $liked_users;
$current_user_id = get_current_user_id();
if (!in_array($current_user_id, $liked_users)) {
$response_array = array('success' => false, 'message' => 'Invalid action');
echo json_encode($response_array);
die();
}
} else {
$response_array = array('success' => false, 'message' => 'Invalid action');
echo json_encode($response_array);
die();
}
}
if ($type == 'like') {
$like_count = get_post_meta($post_id, 'pld_like_count', true);
if (empty($like_count)) {
$like_count = 0;
}
$like_count = $like_count - 1;
$check = update_post_meta($post_id, 'pld_like_count', $like_count);
if ($check) {
$response_array = array('success' => true, 'latest_count' => $like_count);
} else {
$response_array = array('success' => false, 'latest_count' => $like_count);
}
} else {
$dislike_count = get_post_meta($post_id, 'pld_dislike_count', true);
if (empty($dislike_count)) {
$dislike_count = 0;
}
$dislike_count = $dislike_count - 1;
$check = update_post_meta($post_id, 'pld_dislike_count', $dislike_count);
if ($check) {
$response_array = array('success' => true, 'latest_count' => $dislike_count);
} else {
$response_array = array('success' => false, 'latest_count' => $dislike_count);
}
}
if ($pld_settings['basic_settings']['like_dislike_resistriction'] == 'cookie') {
$cookie_name = 'pld_' . $post_id;
setcookie($cookie_name, $type, time() - 3600 * 24 * 365, '/');
}
/**
* Check the liked ips and insert the user ips for future checking
*
*/
if ($pld_settings['basic_settings']['like_dislike_resistriction'] == 'ip') {
$liked_ips = get_post_meta($post_id, 'pld_ips', true);
$liked_ips = (empty($liked_ips)) ? array() : $liked_ips;
$liked_ips_info = get_post_meta($post_id, 'pld_ips_info', true);
$liked_ips_info = (empty($liked_ips_info)) ? array() : $liked_ips_info;
if (in_array($user_ip, $liked_ips)) {
$liked_ips = array_diff($liked_ips, [$user_ip]);
unset($liked_ips_info[md5($user_ip)]);
}
update_post_meta($post_id, 'pld_ips', $liked_ips);
update_post_meta($post_id, 'pld_ips_info', $liked_ips_info);
}
/**
* Check if user is logged in to check user login for like dislike action
*/
if ($pld_settings['basic_settings']['like_dislike_resistriction'] == 'user') {
if (is_user_logged_in()) {
$liked_users = get_post_meta($post_id, 'pld_users', true);
$liked_users = (empty($liked_users)) ? array() : $liked_users;
$liked_users_info = get_post_meta($post_id, 'pld_users_info', true);
$liked_users_info = (empty($liked_users_info)) ? array() : $liked_users_info;
$current_user_id = get_current_user_id();
if (in_array($current_user_id, $liked_users)) {
$liked_users = array_diff($liked_users, [$current_user_id]);
unset($liked_users_info[$current_user_id]);
}
update_post_meta($post_id, 'pld_users', $liked_users);
update_post_meta($post_id, 'pld_users_info', $liked_users_info);
}
}
/**
* Action pld_after_undo_ajax_process
* Fires just after the undo ajax process
*
* @param type int $post_id
*
* @since 1.1.9
*/
do_action('pld_after_undo_ajax_process', $post_id);
echo json_encode($response_array);
//$this->print_array( $response_array );
die();
} else {
die('No script kiddies please!');
}
}
}
new PLD_Ajax();
}

View File

@ -0,0 +1,48 @@
<?php
if (!class_exists('PLD_Enqueue')) {
class PLD_Enqueue {
/**
* Includes all the frontend and backend JS and CSS enqueues
*
* @since 1.0.0
*/
function __construct() {
add_action('wp_enqueue_scripts', array($this, 'register_frontend_assets'));
add_action('admin_enqueue_scripts', array($this, 'register_backend_assets'));
}
function register_frontend_assets() {
$pld_settings = get_option('pld_settings');
if (empty($pld_settings['design_settings']['disable_fontawesome'])) {
/**
* Fontawesome 5 support
*
* @version 1.0.6
*/
wp_enqueue_style('pld-font-awesome', PLD_CSS_DIR . '/fontawesome/css/all.min.css', array(), PLD_VERSION);
}
wp_enqueue_style('pld-frontend', PLD_CSS_DIR . '/pld-frontend.css', array(), PLD_VERSION);
wp_enqueue_script('pld-frontend', PLD_JS_DIR . '/pld-frontend.js', array('jquery'), PLD_VERSION);
$ajax_nonce = wp_create_nonce('pld-ajax-nonce');
$js_object = array('admin_ajax_url' => admin_url('admin-ajax.php'), 'admin_ajax_nonce' => $ajax_nonce);
wp_localize_script('pld-frontend', 'pld_js_object', $js_object);
}
function register_backend_assets($hook) {
wp_enqueue_style('wp-color-picker');
wp_enqueue_media();
wp_enqueue_style('pld-admin-css', PLD_CSS_DIR . '/pld-backend.css', array(), PLD_VERSION);
wp_enqueue_script('pld-admin-js', PLD_JS_DIR . '/pld-backend.js', array('jquery', 'wp-color-picker'), PLD_VERSION);
$ajax_nonce = wp_create_nonce('pld-backend-ajax-nonce');
$messages = array('wait' => __('Please wait', PLD_TD), 'restore_confirm' => __('Are you sure you want to restore default settings?', PLD_TD));
$js_object = array('admin_ajax_url' => admin_url('admin-ajax.php'), 'admin_ajax_nonce' => $ajax_nonce, 'messages' => $messages);
wp_localize_script('pld-admin-js', 'pld_admin_js_object', $js_object);
}
}
new PLD_Enqueue();
}

View File

@ -0,0 +1,52 @@
<?php
if (!class_exists('PLD_Hooks')) {
class PLD_Hooks extends PLD_Library
{
public function __construct()
{
parent::__construct();
add_filter('the_content', array($this, 'posts_like_dislike'), 200); // hook to add html for like dislike
add_action('pld_like_dislike_output', array($this, 'generate_like_dislike_html'), 10, 3);
add_action('wp_head', array($this, 'custom_styles'));
add_shortcode('posts_like_dislike', array($this, 'render_pld_shortcode'));
}
public function posts_like_dislike($content)
{
include(PLD_PATH . '/inc/cores/like-dislike-render.php');
return $content;
}
public function render_pld_shortcode($atts)
{
$content = '';
$shortcode = true;
include(PLD_PATH . '/inc/cores/like-dislike-render.php');
return $content;
}
public function generate_like_dislike_html($content, $shortcode, $atts)
{
include(PLD_PATH . '/inc/views/frontend/like-dislike-html.php');
}
public function custom_styles()
{
$pld_settings = $this->pld_settings;
echo "<style>";
if ($pld_settings['design_settings']['icon_color'] != '') {
echo 'a.pld-like-dislike-trigger {color: ' . esc_attr($pld_settings['design_settings']['icon_color']) . ';}';
}
if ($pld_settings['design_settings']['count_color'] != '') {
echo 'span.pld-count-wrap {color: ' . esc_attr($pld_settings['design_settings']['count_color']) . ';}';
}
if (!empty($pld_settings['design_settings']['already_liked_disliked_color'])) {
echo 'a.pld-prevent.pld-undo-trigger {color: ' . esc_html($pld_settings['design_settings']['already_liked_disliked_color']) . ';}';
}
echo "</style>";
}
}
new PLD_Hooks();
}

View File

@ -0,0 +1,21 @@
<?php
if(!class_exists('PLD_Init')){
class PLD_Init{
function __construct(){
add_action('init',array($this,'pld_init'));
}
function pld_init(){
load_plugin_textdomain( 'posts-like-dislike', false, plugin_basename( dirname( __FILE__ ) ) . '/languages' );
/**
* Fires when Init hook is fired through plugin
*
* @since 1.0.0
*/
do_action('pld_init');
}
}
new PLD_Init();
}

View File

@ -0,0 +1,170 @@
<?php
if (!class_exists('PLD_Library')) {
class PLD_Library {
var $pld_settings;
function __construct() {
$this->pld_settings = get_option('pld_settings');
}
function print_array($array) {
echo "<pre>";
print_r($array);
echo "</pre>";
}
/**
* Returns default settings array
*
* @return array
*
* @since 1.0.0
*/
function get_default_settings() {
$default_settings = array();
$default_settings['basic_settings']['status'] = 0;
$default_settings['basic_settings']['like_dislike_position'] = 'after';
$default_settings['basic_settings']['like_dislike_display'] = 'both';
$default_settings['basic_settings']['like_dislike_resistriction'] = 'cookie';
$default_settings['basic_settings']['display_order'] = 'like-dislike';
$default_settings['basic_settings']['like_hover_text'] = '';
$default_settings['basic_settings']['dislike_hover_text'] = '';
$default_settings['design_settings']['template'] = 'template-1';
$default_settings['design_settings']['like_icon'] = '';
$default_settings['design_settings']['dislike_icon'] = '';
$default_settings['design_settings']['icon_color'] = '';
$default_settings['design_settings']['count_color'] = '';
/**
* Filters deault settings
*
* @param type array $default_settings
*
* @since 1.0.0
*/
return apply_filters('pld_default_settings', $default_settings);
}
/**
* Returns visitors IP address
*
* @return string $ip
*
* @since 1.0.0
*/
function get_user_IP() {
$client = (!empty($_SERVER['HTTP_CLIENT_IP'])) ? $_SERVER['HTTP_CLIENT_IP'] : '';
$forward = (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : '';
$remote = (!empty($_SERVER['REMOTE_ADDR'])) ? $_SERVER['REMOTE_ADDR'] : '';
if (filter_var($client, FILTER_VALIDATE_IP)) {
$ip = $client;
} elseif (filter_var($forward, FILTER_VALIDATE_IP)) {
$ip = $forward;
} else {
$ip = $remote;
}
return $ip;
}
/**
* Sanitizes Multi Dimensional Array
* @param array $array
* @param array $sanitize_rule
* @return array
*
* @since 1.0.0
*/
function sanitize_array($array = array(), $sanitize_rule = array()) {
if (!is_array($array) || count($array) == 0) {
return array();
}
foreach ($array as $k => $v) {
if (!is_array($v)) {
$default_sanitize_rule = (is_numeric($k)) ? 'html' : 'text';
$sanitize_type = isset($sanitize_rule[$k]) ? $sanitize_rule[$k] : $default_sanitize_rule;
$array[$k] = $this->sanitize_value($v, $sanitize_type);
}
if (is_array($v)) {
$array[$k] = $this->sanitize_array($v, $sanitize_rule);
}
}
return $array;
}
/**
* Sanitizes Value
*
* @param type $value
* @param type $sanitize_type
* @return string
*
* @since 1.0.0
*/
function sanitize_value($value = '', $sanitize_type = 'text') {
switch ($sanitize_type) {
case 'html':
return $this->sanitize_html($value);
break;
case 'none':
return $value;
break;
default:
return sanitize_text_field($value);
break;
}
}
/**
* Sanitizes the content by bypassing allowed html
*
* @param string $text
* @return string
*
* @since 1.0.0
*/
function sanitize_html($text) {
$allowed_html = wp_kses_allowed_html('post');
return wp_kses($text, $allowed_html);
}
/**
* Prints display none
*
* @param string $param1
* @param string $param2
*
* @since 1.0.5
*/
function display_none($param1, $param2) {
if ($param1 != $param2) {
echo 'style="display:none"';
}
}
/**
* Returns current page URL
*
* @since 1.0.5
*/
function get_current_page_url() {
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on')
$url = "https://";
else
$url = "http://";
// Append the host(domain name, ip) to the URL.
$url .= $_SERVER['HTTP_HOST'];
// Append the requested resource location to the URL
$url .= $_SERVER['REQUEST_URI'];
return $url;
}
}
}

View File

@ -0,0 +1,51 @@
<?php
defined('ABSPATH') or die('No script kiddies please!!');
$pld_settings = $this->pld_settings;
if (empty($shortcode)) {
global $post;
if (empty($post)) {
return $content;
}
$checked_post_types = (!empty($pld_settings['basic_settings']['post_types'])) ? $pld_settings['basic_settings']['post_types'] : array();
if (!in_array($post->post_type, $checked_post_types)) {
return $content;
}
}
/**
* Don't implement on admin section
*
* @since 1.0.0
*/
if (is_admin() && !wp_doing_ajax()) {
return $content;
}
ob_start();
/**
* Fires while generating the like dislike html
*
* @param type string $content
*
* @since 1.0.0
*/
$shortcode = (!empty($shortcode)) ? $shortcode : false;
$atts = (!empty($atts))?$atts:[];
do_action('pld_like_dislike_output', $content, $shortcode, $atts);
$like_dislike_html = ob_get_contents();
ob_end_clean();
if ($pld_settings['basic_settings']['like_dislike_position'] == 'after') {
/**
* Filters Like Dislike HTML
*
* @param string $like_dislike_html
* @param array $pld_settings
*
* @since 1.0.0
*/
$content .= apply_filters('pld_like_dislike_html', $like_dislike_html, $pld_settings);
} else {
$content = apply_filters('pld_like_dislike_html', $like_dislike_html, $pld_settings) . $content;
}

View File

@ -0,0 +1,17 @@
<div class="pld-settings-section" data-settings-ref="about" style="display:none;">
<h3><?php _e( 'Who we are ?', PLD_TD ); ?></h3>
<p><?php _e( 'We are WP Happy Coders {:)} ,bunch of <strong>WordPress Developers</strong> with enthusiasm towards <strong>WordPress</strong> trying to spread happiness through WordPress by developing some Handy Wordpress Plugins.', PLD_TD ); ?></p>
<p><?php _e( 'If you really liked our plugin then please give us a rating from <a href="https://wordpress.org/support/plugin/posts-like-dislike/reviews/#form" target="_blank">here</a>. That\'s the only way to keep us motivated to make the plugin even better.', PLD_TD ); ?></p>
<h3><?php _e( 'Like us on facebook for latest updates', PLD_TD ); ?></h3>
<div id="fb-root"></div>
<script>(function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id))
return;
js = d.createElement(s);
js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.8";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<div class="fb-page" data-href="https://www.facebook.com/wphappycoders" data-width="500" data-small-header="false" data-adapt-container-width="true" data-hide-cover="false" data-show-facepile="true"><blockquote cite="https://www.facebook.com/wphappycoders" class="fb-xfbml-parse-ignore"><a href="https://www.facebook.com/wphappycoders">WP Happy Coders</a></blockquote></div>
</div>

View File

@ -0,0 +1,98 @@
<div class="pld-settings-section" data-settings-ref="basic">
<div class="pld-field-wrap">
<label><?php _e('Status', PLD_TD); ?></label>
<div class="pld-field">
<input type="checkbox" name="pld_settings[basic_settings][status]" class="pld-form-field" value="1" <?php echo (!empty($pld_settings['basic_settings']['status'])) ? 'checked="checked"' : ''; ?>/>
<p class="description"><?php _e('Please check to enable posts like and dislike in frontend', PLD_TD); ?></p>
</div>
</div>
<div class="pld-field-wrap">
<label><?php esc_html_e('Post Types', PLD_TD); ?></label>
<div class="pld-field">
<?php
$post_types = get_post_types(array('public' => true), 'object');
$checked_post_types = (!empty($pld_settings['basic_settings']['post_types'])) ? $pld_settings['basic_settings']['post_types'] : array();
foreach ($post_types as $post_type_name => $post_type_object) {
?>
<label class="pld-checkbox-label"><input type="checkbox" name="pld_settings[basic_settings][post_types][]" value="<?php echo esc_attr($post_type_name); ?>" <?php echo (in_array($post_type_name, $checked_post_types)) ? 'checked="checked"' : ''; ?> class="pld-form-field"/><?php echo esc_attr($post_type_object->label); ?></label>
<?php
}
?>
<p class="description"><?php esc_html_e('Please uncheck all of these if you are wiling to generate the like dislike icon through custom function.', PLD_TD); ?></p>
</div>
</div>
<div class="pld-field-wrap">
<label><?php _e('Like Dislike Positiion', PLD_TD); ?></label>
<div class="pld-field">
<select name="pld_settings[basic_settings][like_dislike_position]" class="pld-form-field">
<option value="after" <?php selected($pld_settings['basic_settings']['like_dislike_position'], 'after'); ?>><?php _e('After Post', PLD_TD); ?></option>
<option value="before" <?php selected($pld_settings['basic_settings']['like_dislike_position'], 'before'); ?>><?php _e('Before Post', PLD_TD); ?></option>
</select>
</div>
</div>
<div class="pld-field-wrap">
<label><?php _e('Like Dislike Display', PLD_TD); ?></label>
<div class="pld-field">
<select name="pld_settings[basic_settings][like_dislike_display]" class="pld-form-field">
<option value="both" <?php selected($pld_settings['basic_settings']['like_dislike_display'], 'both'); ?>><?php _e('Display Both', PLD_TD); ?></option>
<option value="like_only" <?php selected($pld_settings['basic_settings']['like_dislike_display'], 'like_only'); ?>><?php _e('Display Like Only', PLD_TD); ?></option>
<option value="dislike_only" <?php selected($pld_settings['basic_settings']['like_dislike_display'], 'dislike_only'); ?>><?php _e('Display Dislike Only', PLD_TD); ?></option>
</select>
<p class="description"><?php _e('Please choose where you want to display the like dislike buttons', PLD_TD); ?></p>
</div>
</div>
<div class="pld-field-wrap">
<label><?php _e('Like Dislike Restriction', PLD_TD); ?></label>
<div class="pld-field">
<select name="pld_settings[basic_settings][like_dislike_resistriction]" class="pld-form-field pld-toggle-trigger" data-toggle-class="pld-login-link">
<option value="cookie" <?php selected($pld_settings['basic_settings']['like_dislike_resistriction'], 'cookie'); ?>><?php _e('Cookie Restriction', PLD_TD); ?></option>
<option value="ip" <?php selected($pld_settings['basic_settings']['like_dislike_resistriction'], 'ip'); ?>><?php _e('IP Restriction', PLD_TD); ?></option>
<option value="user" <?php selected($pld_settings['basic_settings']['like_dislike_resistriction'], 'user'); ?>><?php _e('Logged In User Restriction', PLD_TD); ?></option>
<option value="no" <?php selected($pld_settings['basic_settings']['like_dislike_resistriction'], 'no'); ?>><?php _e('No Restriction', PLD_TD); ?></option>
</select>
<p class="description"><?php _e('Please choose the restriction you want to assign to likers and dislikers', PLD_TD); ?></p>
</div>
</div>
<div class="pld-field-wrap pld-login-link" data-toggle-value="user" <?php $this->display_none($pld_settings['basic_settings']['like_dislike_resistriction'], 'user'); ?>>
<label><?php _e('Login Link', PLD_TD); ?></label>
<div class="pld-field">
<input type="text" name="pld_settings[basic_settings][login_link]" class="pld-form-field" value="<?php echo (!empty($pld_settings['basic_settings']['login_link'])) ? esc_url($pld_settings['basic_settings']['login_link']) : ''; ?>"/>
<p class="description"><?php esc_html_e('Please enter the login link where users will be redirected while trying to like or dislike without logging in. Please leave blank if you don\'t want to redirect users to login page.', PLD_TD); ?></p>
</div>
</div>
<div class="pld-field-wrap">
<label><?php _e('Like Dislike Display Order', PLD_TD); ?></label>
<div class="pld-field">
<select name="pld_settings[basic_settings][display_order]" class="pld-form-field">
<option value="like-dislike" <?php selected($pld_settings['basic_settings']['display_order'], 'like-dislike'); ?>><?php _e('Like Dislike', PLD_TD); ?></option>
<option value="dislike-like" <?php selected($pld_settings['basic_settings']['display_order'], 'dislike-like'); ?>><?php _e('Dislike Like', PLD_TD); ?></option>
</select>
</div>
</div>
<div class="pld-field-wrap">
<label><?php _e("Like hover text", PLD_TD); ?></label>
<div class="pld-field">
<input type="text" name="pld_settings[basic_settings][like_hover_text]" class="pld-form-field" value="<?php echo isset($pld_settings['basic_settings']['like_hover_text']) ? esc_attr($pld_settings['basic_settings']['like_hover_text']) : ''; ?>" placeholder="<?php _e("Like", PLD_TD); ?>"/>
</div>
</div>
<div class="pld-field-wrap">
<label><?php _e("Dislike hover text", PLD_TD); ?></label>
<div class="pld-field">
<input type="text" name="pld_settings[basic_settings][dislike_hover_text]" class="pld-form-field" value="<?php echo isset($pld_settings['basic_settings']['dislike_hover_text']) ? esc_attr($pld_settings['basic_settings']['dislike_hover_text']) : ''; ?>" placeholder="<?php _e('Dislike', PLD_TD); ?>"/>
</div>
</div>
<div class="pld-field-wrap">
<label><?php esc_html_e('Display 0(Zero) by default', 'posts-like-dislike'); ?></label>
<div class="pld-field">
<input type="checkbox" name="pld_settings[basic_settings][display_zero]" class="pld-form-field" value="1" <?php echo (!empty($pld_settings['basic_settings']['display_zero'])) ? 'checked="checked"' : ''; ?>/>
<p class="description"><?php _e('Please check if you want to show 0 for no likes and dislikes', PLD_TD); ?></p>
</div>
</div>
<div class="pld-field-wrap">
<label><?php esc_html_e('Hide Counter Info Metabox', 'posts-like-dislike'); ?></label>
<div class="pld-field">
<input type="checkbox" name="pld_settings[basic_settings][hide_counter_info_metabox]" class="pld-form-field" value="1" <?php echo (!empty($pld_settings['basic_settings']['hide_counter_info_metabox'])) ? 'checked="checked"' : ''; ?>/>
<p class="description"><?php _e('Please check if you want to hide the counter info metabox in the post edit screen. ', PLD_TD); ?></p>
</div>
</div>
</div>

View File

@ -0,0 +1,93 @@
<div class="pld-settings-section" data-settings-ref="design" style="display:none;">
<div class="pld-field-wrap">
<label><?php _e('Choose Template', PLD_TD); ?></label>
<div class="pld-field">
<select name="pld_settings[design_settings][template]" class="pld-form-field pld-template-dropdown">
<?php
/**
* Filters total number or templates
*
* @param int
*
* @since 1.0.0
*/
$pld_total_templates = apply_filters('pld_total_templates', 4);
for ($i = 1; $i <= $pld_total_templates; $i++) {
?>
<option value="template-<?php echo $i; ?>" <?php selected($pld_settings['design_settings']['template'], 'template-' . $i); ?>><?php echo __('Template ', PLD_TD) . $i; ?></option>
<?php
}
?>
<option value="custom" <?php selected($pld_settings['design_settings']['template'], 'custom'); ?>><?php _e('Custom Template', PLD_TD); ?></option>
</select>
<div class="pld-template-previews-wrap">
<?php for ($i = 1; $i <= 4; $i++) {
?>
<div class="pld-each-template-preview" <?php if ('template-' . $i != $pld_settings['design_settings']['template']) { ?>style="display:none" <?php } ?> data-template-ref="template-<?php echo $i; ?>"><img src="<?php echo PLD_IMG_DIR . '/template-previews/template-' . $i . '.jpeg'; ?>" /></div>
<?php
}
/**
* Fires on backend template preview
*
* Useful to add additional templates in backend
*
* @param array $pld_settings
*
* @since 1.0.0
*
*/
do_action('pld_template_previews', $pld_settings);
?>
</div>
</div>
</div>
<div class="pld-custom-ref" <?php if ($pld_settings['design_settings']['template'] != 'custom') { ?>style="display:none" <?php } ?>>
<div class="pld-field-wrap">
<label><?php _e('Like Icon', PLD_TD); ?></label>
<div class="pld-field">
<input type="text" name="pld_settings[design_settings][like_icon]" class="pld-form-field" value="<?php echo esc_url($pld_settings['design_settings']['like_icon']) ?>" />
<input type="button" class="button-primary pld-file-uploader" value="<?php _e('Upload Icon', PLD_TD); ?>" />
<span class="pld-preview-holder">
<?php if ($pld_settings['design_settings']['dislike_icon'] != '') { ?>
<img src="<?php echo esc_url($pld_settings['design_settings']['like_icon']); ?>" />
<?php } ?>
</span>
</div>
</div>
<div class="pld-field-wrap">
<label><?php _e('Dislike Icon', PLD_TD); ?></label>
<div class="pld-field">
<input type="text" name="pld_settings[design_settings][dislike_icon]" class="pld-form-field" value="<?php echo esc_url($pld_settings['design_settings']['dislike_icon']) ?>" />
<input type="button" class="button-primary pld-file-uploader" value="<?php _e('Upload Icon', PLD_TD); ?>" />
<span class="pld-preview-holder"><?php if ($pld_settings['design_settings']['dislike_icon'] != '') { ?><img src="<?php echo esc_url($pld_settings['design_settings']['dislike_icon']); ?>" /><?php } ?></span>
</div>
</div>
</div>
<div class="pld-field-wrap pld-template-ref" <?php if ($pld_settings['design_settings']['template'] == 'custom') { ?>style="display:none" <?php } ?>>
<label><?php _e('Icon Color', PLD_TD); ?></label>
<div class="pld-field">
<input type="text" name="pld_settings[design_settings][icon_color]" class="pld-form-field pld-colorpicker" value="<?php echo esc_attr($pld_settings['design_settings']['icon_color']) ?>" />
</div>
</div>
<div class="pld-field-wrap">
<label><?php _e('Count Color', PLD_TD); ?></label>
<div class="pld-field">
<input type="text" name="pld_settings[design_settings][count_color]" class="pld-form-field pld-colorpicker" value="<?php echo esc_attr($pld_settings['design_settings']['count_color']) ?>" />
</div>
</div>
<div class="pld-field-wrap">
<label><?php _e('Already Liked/Disliked Color', PLD_TD); ?></label>
<div class="pld-field">
<input type="text" name="pld_settings[design_settings][already_liked_disliked_color]" class="pld-form-field pld-colorpicker" value="<?php echo (!empty($pld_settings['design_settings']['already_liked_disliked_color'])) ? esc_attr($pld_settings['design_settings']['already_liked_disliked_color']) : ''; ?>" />
</div>
</div>
<div class="pld-field-wrap">
<label><?php _e('Disable Fontawesome', PLD_TD); ?></label>
<div class="pld-field">
<input type="checkbox" name="pld_settings[design_settings][disable_fontawesome]" class="pld-form-field" value="1" <?php echo (!empty($pld_settings['design_settings']['disable_fontawesome'])) ? 'checked="checked"' : ''; ?> />
<p class="description"><?php _e('Please check to disable fontawesome from loading in the frontend', PLD_TD); ?></p>
</div>
</div>
</div>

View File

@ -0,0 +1,302 @@
<div class="pld-settings-section" data-settings-ref="help" style="display:none">
<h3><?php esc_html_e('Status', PLD_TD); ?>
</h3>
<p><?php esc_html_e('This can be used to enable or disable like dislike in the frontend posts.', PLD_TD); ?>
</p>
<div class="pld-separator"></div>
<h3><?php esc_html_e('Post Types', PLD_TD); ?>
</h3>
<p><?php esc_html_e('You can choose the post type for which you want to enable the like dislike buttons.', PLD_TD); ?>
</p>
<div class="pld-separator"></div>
<h3><?php esc_html_e('Like Dislike Position', PLD_TD); ?>
</h3>
<p><?php esc_html_e('This can be used to control whether like dislike should be shown before.', PLD_TD); ?>
</p>
<div class="pld-separator"></div>
<h3><?php esc_html_e('Like Dislike Display', PLD_TD); ?>
</h3>
<p><?php esc_html_e('This can be used to control whether like or dislike or both should be shown.', PLD_TD); ?>
</p>
<div class="pld-separator"></div>
<h3><?php esc_html_e('Like Dislike Restriction', PLD_TD); ?>
</h3>
<p><?php esc_html_e('This can be used to prevent liking or disliking same posts from same liker or disliker through Cookie or IP.', PLD_TD); ?>
</p>
<div class="pld-separator"></div>
<h3><?php esc_html_e('Like Dislike Display Order', PLD_TD); ?>
</h3>
<p><?php esc_html_e('This can be used control the display order of like and dislike.', PLD_TD); ?>
</p>
<div class="pld-separator"></div>
<h3><?php esc_html_e('Like Hover Text', PLD_TD); ?>
</h3>
<p><?php esc_html_e('The field is for the hover text of like button.', PLD_TD); ?>
</p>
<div class="pld-separator"></div>
<h3><?php esc_html_e('Dislike Hover Text', PLD_TD); ?>
</h3>
<p><?php esc_html_e('This field is for the hover text of dislike button.', PLD_TD); ?>
</p>
<div class="pld-separator"></div>
<h3><?php esc_html_e('Display 0(Zero) by default', PLD_TD); ?>
</h3>
<p><?php esc_html_e('If you will check this option, the count will show as 0 by default.', PLD_TD); ?>
</p>
<div class="pld-separator"></div>
<h3><?php esc_html_e('Hide Counter Info Metabox', PLD_TD); ?>
</h3>
<p><?php esc_html_e('You can check this if you don\'t want to show the like dislike count info in the post edit screen.', PLD_TD); ?>
</p>
<div class="pld-separator"></div>
<h3><?php esc_html_e('Like Dislike Templates', PLD_TD); ?>
</h3>
<p><?php esc_html_e('There are altogether 5 templates including a custom template. Custom templates can be used to customize the like and dislike display by uploading your own icons.', PLD_TD); ?>
</p>
<div class="pld-separator"></div>
<h3><?php esc_html_e('Icon Color', PLD_TD); ?>
</h3>
<p><?php esc_html_e('This can be used to override the color of icon provided by your active theme.', PLD_TD); ?>
</p>
<div class="pld-separator"></div>
<h3><?php esc_html_e('Count Color', PLD_TD); ?>
</h3>
<p><?php esc_html_e('This can be used to override the color of count provided by your active theme.', PLD_TD); ?>
</p>
<div class="pld-separator"></div>
<h3><?php esc_html_e('Shortcode', 'posts-like-dislike'); ?>
</h3>
<p><input type="text" onfocus="this.select();" value="[posts_like_dislike id=post_id]" /></p>
<h3><?php esc_html_e('Custom Function', 'posts-like-dislike'); ?>
</h3>
<p>
<pre>&lt;?php echo do_shortcode('[posts_like_dislike id=post_id]');?&gt;</pre>
<span class="description"><?php esc_html_e('Please replace post_id with the id of the post for which you want to get the like and dislike icon. Please remove id parameter for considering the post id as the id of global $post object', 'posts-like-dislike'); ?></span>
</p>
<h3><?php esc_html_e('Available Filters', PLD_TD); ?>
</h3>
<div class="pld-fixed-height">
<pre>
/**
* Filters the tabs
*
* @since 1.0.0
*
* @param array $pld_tabs
*/
$pld_tabs = apply_filters( 'pld_admin_tabs', $pld_tabs );
</pre>
<pre>
/**
* Filters total number or templates
*
* @param int
*
* @since 1.0.0
*/
$pld_total_templates = apply_filters( 'pld_total_templates', 4 );
</pre>
<pre>
/**
* Filters the array stored in the database
*
* @param type array $pld_settings
*
* @since 1.0.0
*/
update_option( 'pld_settings', apply_filters( 'pld_settings', $pld_settings ) );
</pre>
<pre>
/**
* Filters Like Dislike HTML
*
* @param string $like_dislike_html
* @param array $pld_settings
*
* @since 1.0.0
*/
$post_text .= apply_filters( 'pld_like_dislike_html', $like_dislike_html, $pld_settings );
</pre>
<pre>
/**
* Filters deault settings
*
* @param type array $default_settings
*
* @since 1.0.0
*/
return apply_filters( 'pld_default_settings', $default_settings );
</pre>
<pre>
/**
* Filters like count
*
* @param type int $like_count
* @param type int $post_id
*
* @since 1.0.0
*/
$like_count = apply_filters( 'pld_like_count', $like_count, $post_id );
</pre>
<pre>
/**
* Filters dislike count
*
* @param type int $dislike_count
* @param type int $post_id
*
* @since 1.0.0
*/
$dislike_count = apply_filters( 'pld_dislike_count', $dislike_count, $post_id );
</pre>
</div>
<div class="pld-separator"></div>
<h3><?php esc_html_e('Available Actions', PLD_TD); ?>
</h3>
<div class="pld-fixed-height">
<pre>
/**
* Fires before storing the settings array into database
*
* @param type array $settings_data - before sanitization
* @param type array $pld_settings - after sanitization
*
* @since 1.0.0
*/
do_action( 'pld_before_save_settings', $settings_data, $pld_settings );
</pre>
<pre>
/**
* Fires while generating the like dislike html
*
* @param type string $post_text
* @param type array $post
*
* @since 1.0.0
*/
do_action( 'pld_like_dislike_output', $post_text, $post );
</pre>
<pre>
/**
* Fires when Init hook is fired through plugin
*
* @since 1.0.0
*/
do_action('pld_init');
</pre>
<pre>
/**
* Fires on backend template preview* Fires on backend template preview
*
* Useful to add additional templates in backend
* Fires on backend template preview* Fires on backend template preview*
* @param array $pld_settings
*
* @since 1.0.0
*
*/
do_action( 'pld_template_previews' );
</pre>
<pre>
/**
* Fires when displaying the tabs section
*
* @param array $pld_settings
*
* @since 1.0.0
*/
do_action( 'pld_admin_tab_section', $pld_settings );
</pre>
<pre>
/**
* Fires when template is being loaded
*
* @param array $pld_settings
*
* @since 1.0.0
*/
do_action( 'pld_dislike_template', $pld_settings );
</pre>
<pre>
/**
* Fires when template is being loaded
*
* @param array $pld_settings
*
* @since 1.0.0
*/
do_action( 'pld_like_template', $pld_settings );
</pre>
<pre>
/**
* Action pld_before_ajax_process
*
* Fires just before processing the ajax request when like or dislike button is clicked
*
* @param type int $post_id
*
* @since 1.0.0
*/
do_action( 'pld_before_ajax_process', $post_id );
</pre>
<pre>
/**
* Action pld_after_ajax_process
*
* Fires after the ajax process is complete when like or dislike button is clicked just before printing the response
*
* @param type int $post_id
*
* @since 1.0.0
*/
do_action( 'pld_after_ajax_process', $post_id );
</pre>
<pre>
/**
* Action pld_before_undo_ajax_process
* Fires just before the undo ajax process
*
* @param type int $post_id
*
* @since 1.1.9
*/
do_action('pld_before_undo_ajax_process', $post_id);
</pre>
<pre>
/**
* Action pld_after_undo_ajax_process
* Fires just after the undo ajax process
*
* @param type int $post_id
*
* @since 1.1.9
*/
do_action('pld_after_undo_ajax_process', $post_id);
</pre>
</div>
</div>

View File

@ -0,0 +1,16 @@
<?php
defined('ABSPATH') or die('No script kiddies please!!');
wp_nonce_field('pld_metabox_nonce', 'pld_metabox_nonce_field');
?>
<div class="pld-field-wrap">
<label><?php esc_html_e('Like Count', 'posts-like-dislike'); ?></label>
<div class="pld-field">
<input type="text" name="pld_like_count" value="<?php echo esc_attr($like_count); ?>"/>
</div>
</div>
<div class="pld-field-wrap">
<label><?php esc_html_e('Dislike Count', 'posts-like-dislike'); ?></label>
<div class="pld-field">
<input type="text" name="pld_dislike_count" value="<?php echo esc_attr($dislike_count); ?>"/>
</div>
</div>

View File

@ -0,0 +1,67 @@
<?php
$pld_settings = $this->pld_settings;
?>
<div class="wrap pld-wrap">
<div class="pld-header"><h3><?php _e('Posts Like Dislike', 'posts-like-dislike'); ?><span class="pld-avatar-holder"><img src="<?php echo PLD_IMG_DIR . '/avatar.jpeg'; ?>"/></span></h3></div>
<div class="pld-clear"></div>
<h2 class="nav-tab-wrapper wp-clearfix">
<?php
$pld_tabs = array(
'basic' => array('label' => __('Basic Settings', PLD_TD)),
'design' => array('label' => __('Design Settings', PLD_TD)),
'help' => array('label' => __('Help', PLD_TD)),
'about' => array('label' => __('About Us', PLD_TD))
);
/**
* Filters the tabs
*
* @since 1.0.0
*
* @param array $pld_tabs
*/
$pld_tabs = apply_filters('pld_admin_tabs', $pld_tabs);
$pld_tab_counter = 0;
foreach ($pld_tabs as $pld_tab => $pld_tab_detail) {
$pld_tab_counter++;
?>
<a href="javascript:void(0);" class="nav-tab <?php echo ($pld_tab_counter == 1) ? 'nav-tab-active' : ''; ?> pld-tab-trigger" data-settings-ref="<?php echo $pld_tab; ?>"><?php echo $pld_tab_detail['label']; ?></a>
<?php
}
?>
</h2>
<div class="pld-settings-section-wrap">
<form class="pld-settings-form">
<?php include(PLD_PATH . 'inc/views/backend/boxes/basic-settings.php'); ?>
<?php include(PLD_PATH . 'inc/views/backend/boxes/design-settings.php'); ?>
<?php include(PLD_PATH . 'inc/views/backend/boxes/help.php'); ?>
<?php include(PLD_PATH . 'inc/views/backend/boxes/about-us.php'); ?>
<?php
/**
* Fires when displaying the tabs section
*
* @param array $pld_settings
*
* @since 1.0.0
*/
do_action('pld_admin_tab_section', $pld_settings);
?>
<div class="pld-field-wrap pld-settings-action">
<label></label>
<div class="pld-field">
<input type="submit" class="pld-settings-save-trigger button-primary" value="<?php _e('Save settings', PLD_TD); ?>"/>
<input type="button" class="pld-settings-restore-trigger button-secondary" value="<?php _e('Restore settings', PLD_TD); ?>"/>
</div>
</div>
</form>
</div>
<div class="pld-info-wrap" style="display:none;">
<img src="<?php echo PLD_IMG_DIR . '/ajax-loader.gif'; ?>" class="pld-loader"/>
<span class="pld-info"><?php _e('Please wait.', PLD_TD); ?></span>
<span class="dashicons dashicons-dismiss pld-close-info"></span>
</div>
</div>

View File

@ -0,0 +1,45 @@
<div class="pld-dislike-wrap pld-common-wrap">
<a href="<?php echo esc_attr($href); ?>" class="pld-dislike-trigger pld-like-dislike-trigger <?php echo ($already_liked == 1) ? 'pld-prevent' : ''; ?> <?php echo ($already_liked_type == 'dislike') ? 'pld-undo-dislike-trigger pld-undo-trigger' : ''; ?>" title="<?php echo esc_attr($dislike_title); ?>" data-post-id="<?php echo intval($post_id); ?>" data-trigger-type="dislike" data-restriction="<?php echo esc_attr($pld_settings['basic_settings']['like_dislike_resistriction']); ?>" data-already-liked="<?php echo esc_attr($already_liked); ?>">
<?php
$template = esc_attr($pld_settings['design_settings']['template']);
switch ($template) {
case 'template-1':
?>
<i class="fas fa-thumbs-down"></i>
<?php
break;
case 'template-2':
?>
<i class="fa fa-heartbeat"></i>
<?php
break;
case 'template-3':
?>
<i class="fas fa-times"></i>
<?php
break;
case 'template-4':
?>
<i class="far fa-frown"></i>
<?php
break;
case 'custom':
if ($pld_settings['design_settings']['dislike_icon'] != '') {
?>
<img src="<?php echo esc_url($pld_settings['design_settings']['dislike_icon']); ?>" alt="<?php echo esc_attr($dislike_title); ?>" />
<?php
}
break;
}
/**
* Fires when template is being loaded
*
* @param array $pld_settings
*
* @since 1.0.0
*/
do_action('pld_dislike_template', $pld_settings);
?>
</a>
<span class="pld-dislike-count-wrap pld-count-wrap"><?php echo esc_html($dislike_count); ?></span>
</div>

View File

@ -0,0 +1,133 @@
<?php
$post_id = (!empty($atts['id'])) ? intval($atts['id']) : get_the_ID();
$like_count = get_post_meta($post_id, 'pld_like_count', true);
$dislike_count = get_post_meta($post_id, 'pld_dislike_count', true);
$pld_settings = get_option('pld_settings');
if (empty($pld_settings['basic_settings']['status']) && empty($shortcode)) {
// if posts like dislike is disabled from backend
return;
}
$already_liked = 0;
$already_liked_type = 'na';
$href = 'javascript:void(0)';
/**
* Cookie Restriction Validation
*
*/
if ($pld_settings['basic_settings']['like_dislike_resistriction'] == 'cookie' && isset($_COOKIE['pld_' . $post_id])) {
$already_liked = 1;
$already_liked_type = ($_COOKIE['pld_' . $post_id] != 1) ? $_COOKIE['pld_' . $post_id] : 'na';
}
/**
* IP Restriction Validation
*/
if ($pld_settings['basic_settings']['like_dislike_resistriction'] == 'ip') {
$liked_ips = get_post_meta($post_id, 'pld_ips', true);
$liked_ips_info = get_post_meta($post_id, 'pld_ips_info', true);
$user_ip = $this->get_user_IP();
if (empty($liked_ips)) {
$liked_ips = array();
}
if (in_array($user_ip, $liked_ips)) {
$already_liked = 1;
}
if ((in_array($user_ip, $liked_ips))) {
$already_liked = 1;
if (isset($liked_ips_info[md5($user_ip)])) {
$already_liked_type = $liked_ips_info[md5($user_ip)];
} else {
$already_liked_type = 'na';
}
}
}
/**
* User Logged In validation
*/
if ($pld_settings['basic_settings']['like_dislike_resistriction'] == 'user') {
if (is_user_logged_in()) {
$liked_users = get_post_meta($post_id, 'pld_users', true);
$liked_users = (empty($liked_users)) ? array() : $liked_users;
$liked_users_info = get_post_meta($post_id, 'pld_users_info', true);
$liked_users_info = (empty($liked_users_info)) ? array() : $liked_users_info;
$current_user_id = get_current_user_id();
if (in_array($current_user_id, $liked_users)) {
$already_liked = 1;
}
if (in_array($current_user_id, $liked_users)) {
$already_liked = 1;
if (isset($liked_users_info[$current_user_id])) {
$already_liked_type = $liked_users_info[$current_user_id];
} else {
$already_liked_type = 'na';
}
}
} else {
$current_page_url = $this->get_current_page_url();
$href = (!empty($pld_settings['basic_settings']['login_link'])) ? $pld_settings['basic_settings']['login_link'] : admin_url() . '/wp-login.php?redirect=' . $current_page_url;
}
}
if (!empty($pld_settings['basic_settings']['display_zero'])) {
if (empty($like_count)) {
$like_count = 0;
}
if (empty($dislike_count)) {
$dislike_count = 0;
}
}
/**
* Filters like count
*
* @param type int $like_count
* @param type int $post_id
*
* @since 1.0.0
*/
$like_count = apply_filters('pld_like_count', $like_count, $post_id);
/**
* Filters dislike count
*
* @param type int $dislike_count
* @param type int $post_id
*
* @since 1.0.0
*/
$dislike_count = apply_filters('pld_dislike_count', $dislike_count, $post_id);
$like_title = isset($pld_settings['basic_settings']['like_hover_text']) ? esc_attr($pld_settings['basic_settings']['like_hover_text']) : __('Like', PLD_TD);
$dislike_title = isset($pld_settings['basic_settings']['dislike_hover_text']) ? esc_attr($pld_settings['basic_settings']['dislike_hover_text']) : __('Dislike', PLD_TD);
//$this->print_array( $pld_settings );
?>
<div class="pld-like-dislike-wrap pld-<?php echo esc_attr($pld_settings['design_settings']['template']); ?>">
<?php
/**
* Like Dislike Order
*/
if ($pld_settings['basic_settings']['display_order'] == 'like-dislike') {
if ($pld_settings['basic_settings']['like_dislike_display'] != 'dislike_only') {
include(PLD_PATH . 'inc/views/frontend/like.php');
}
if ($pld_settings['basic_settings']['like_dislike_display'] != 'like_only') {
include(PLD_PATH . 'inc/views/frontend/dislike.php');
}
} else {
/**
* Dislike Like Order
*/
if ($pld_settings['basic_settings']['like_dislike_display'] != 'like_only') {
include(PLD_PATH . 'inc/views/frontend/dislike.php');
}
if ($pld_settings['basic_settings']['like_dislike_display'] != 'dislike_only') {
include(PLD_PATH . 'inc/views/frontend/like.php');
}
}
?>
</div>

View File

@ -0,0 +1,46 @@
<div class="pld-like-wrap pld-common-wrap">
<a href="<?php echo esc_attr($href); ?>" class="pld-like-trigger pld-like-dislike-trigger <?php echo ($already_liked == 1) ? 'pld-prevent' : ''; ?> <?php echo ($already_liked_type == 'like') ? 'pld-undo-like-trigger pld-undo-trigger' : ''; ?>" title="<?php echo esc_attr($like_title); ?>" data-post-id="<?php echo intval($post_id); ?>" data-trigger-type="like" data-restriction="<?php echo esc_attr($pld_settings['basic_settings']['like_dislike_resistriction']); ?>" data-already-liked="<?php echo esc_attr($already_liked); ?>">
<?php
$template = $pld_settings['design_settings']['template'];
switch ($template) {
case 'template-1':
?>
<i class="fas fa-thumbs-up"></i>
<?php
break;
case 'template-2':
?>
<i class="fas fa-heart"></i>
<?php
break;
case 'template-3':
?>
<i class="fas fa-check"></i>
<?php
break;
case 'template-4':
?>
<i class="far fa-smile"></i>
<?php
break;
case 'custom':
if ($pld_settings['design_settings']['like_icon'] != '') {
?>
<img src="<?php echo esc_url($pld_settings['design_settings']['like_icon']); ?>" alt="<?php echo esc_attr($like_title); ?>" />
<?php
}
break;
}
/**
* Fires when template is being loaded
*
* @param array $pld_settings
*
* @since 1.0.0
*/
do_action('pld_like_template', $pld_settings);
?>
</a>
<span class="pld-like-count-wrap pld-count-wrap"><?php echo esc_html($like_count); ?>
</span>
</div>