HEX
Server: Apache/2.4.46 (Win64) OpenSSL/1.1.1j PHP/8.4.25
System: Windows NT DESKTOP-4TAV2RJ 10.0 build 19045 (Windows 10) AMD64
User: fred (0)
PHP: 8.4.25
Disabled: NONE
Upload Files
File: C:/xampp/htdocs/wordpress0612/wp-content/pluginsBK/wp-likes/api.php
<?php


class wp_likes{
//data members
public $method;
public $user_name;
public $user_id;
public $session_hash;
public $post_id;
public $total_count;
//plugin dir, both should be same;
public $plugin_path;


//member functions start	
public function wp_likes($req=null,$user_id=null){
	
$this->method=isset($req["method"])? ($req["method"]=="unlike"? "unlike":"like"):null;	

//user info	
$this->user_id=$user_id;
$this->user_name=null;

//set plugin dir

if(defined('WP_LIKES_URL'))
$this->plugin_path=WP_LIKES_URL;
 else if($this->method==null)$this->plugin_path=get_option('siteurl')."/wp-content/plugins/wp-likes";
	
//post info
$this->total_count=0;
$this->post_id=isset($req["post_id"])? (int)(mysql_escape_string($req["post_id"])):null;

//inits
$this->cookieInit();

}	


public function fetchPeople(){
	global $wpdb;
	$wpdb->likes=$wpdb->prefix."likes";
	
	$people=$wpdb->get_results("SELECT session_hash FROM $wpdb->likes WHERE post_id=$this->post_id",ARRAY_A);
	$this->total_count=count($people);
	return $people;
}

public function fetchCount(){
	global $wpdb;
	$wpdb->likes=$wpdb->prefix."likes";
	
	$count=$wpdb->get_var("SELECT count(*) FROM $wpdb->likes WHERE post_id=$this->post_id");
	$this->total_count=$count;
	return $count;
	
	
	
}
public function cookieInit(){
	
if(!isset($_COOKIE["wp_likes_sh"])){

//cookie not there 
//set null session if method is null
if($this->method==null)	$this->session_hash=null;
else{
$time = time();	
setcookie("wp_likes_sh",md5($this->getIP().$time),$time+31104000,"/");
//print($_SERVER["REMOTE_ADDR"]);
//print (md5($_SERVER["REMOTE_ADDR"]));
$this->session_hash=md5($this->getIP().$time);
}
}
else $this->session_hash=mysql_escape_string($_COOKIE["wp_likes_sh"]);

}

public function like(){
	if($this->method=="like" && $this->post_id>0){
	global $wpdb;
	$wpdb->likes=$wpdb->prefix."likes";
	$sql="INSERT INTO $wpdb->likes (id,post_id,person_id,at_time,session_hash) VALUES(LAST_INSERT_ID(),$this->post_id,$this->user_id,now(),'$this->session_hash')";
	//echo $sql;
	$wpdb->query($sql);
	}
	else {throw new Exception("invalid params- method=$this->method and post_id=$this->post_id");}
	
	}
	
public function unlike(){
	if($this->method=="unlike" && $this->post_id>0){
	global $wpdb;
	$wpdb->likes=$wpdb->prefix."likes";
	$sql="DELETE FROM $wpdb->likes WHERE post_id=$this->post_id AND session_hash='$this->session_hash' LIMIT 1";
	//echo $sql;
	$wpdb->query($sql);
	}
	else {throw new Exception("invalid params");}	
}

public function getText($count, $text) {
	global $wp_likes_replace_count;
	$wp_likes_replace_count = $count; 
	if(!function_exists('wp_likes_preg_cb')) {
		function wp_likes_preg_cb($matches) {
			global $wp_likes_replace_count;
			$new_count = $wp_likes_replace_count;
			if( isset($matches[2]) ){
				$operator = $matches[3];
				$num = $matches[4];
				$new_count = $operator == "+"? $wp_likes_replace_count + $num : $wp_likes_replace_count - $num;		
			}
			return "<b>$new_count</b>";
		}
	}

	$text = preg_replace_callback(
	        '/(%NUM(([+-])([0-9]+))?%)/',
	        "wp_likes_preg_cb",
	        $text);
	return $text;
}

private function getIP(){
	if (isset($_SERVER['HTTP_X_CLUSTER_CLIENT_IP']) === TRUE)
    	return $_SERVER['HTTP_X_CLUSTER_CLIENT_IP'];
	elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR']) === TRUE)
    	return $_SERVER['HTTP_X_FORWARDED_FOR'];
	else return $_SERVER['REMOTE_ADDR'];

}
public static function install(){

global $wpdb;
  
   $table_name = $wpdb->prefix . "likes";
   if($wpdb->get_var("show tables like '$table_name'") != $table_name) {
   
   
   
		$charset_collate = '';
		if ( version_compare(mysql_get_server_info(), '4.1.0', '>=') ) {
			if (!empty($wpdb->charset)) {
				$charset_collate .= " DEFAULT CHARACTER SET $wpdb->charset";
			}
			if (!empty($wpdb->collate)) {
			$charset_collate .= " COLLATE $wpdb->collate";
			}
		}

      
      $sql = "CREATE TABLE " . $table_name . " (
	   `id` int(10) unsigned NOT NULL auto_increment,
       `post_id` int(10) unsigned NOT NULL,
  	   `person_id` int(10) default NULL,
       `at_time` datetime default NULL,
       `session_hash` char(32) NOT NULL,
        PRIMARY KEY  (`id`),
        UNIQUE KEY `key_post_id-sh_pair` (`post_id`,`session_hash`),
        KEY `key_post_id` (`post_id`)
	 )ENGINE=InnoDB AUTO_INCREMENT=1 $charset_collate ;";

      require_once(ABSPATH."/wp-admin/includes/upgrade.php");
      dbDelta($sql);

}
//restore css
wp_likes_settings::restore(true,false,false);
}
	

}
class wp_likes_settings{
	private $css;
	private $options;
	public $text;
	public $text_default;
	public $css_default;
	public function __construct($loadCss=true,$loadOptions=true,$loadText=true){
		$this->options=array();
		$this->options["showOnPages"]='false';
		$this->options["showOnMainPage"]='true';
		$this->options["likeImageUrl"]=WP_LIKES_URL."/images/like.png";
		$this->options["catFilterStatus"]="no-use";
		$this->text_default=array();
		$this->text_default[0]="You and %NUM% people like this post.";
		$this->text_default[1]="You and 1 person like this post.";
		$this->text_default[2]="You like this post.";
		$this->text_default[3]="%NUM% people like this post.";
		$this->text_default[4]="1 person likes this post.";
		$this->text_default[5]="Like";
		$this->text_default[6]="Unlike";
		$this->text_default[7]="Be the first to like.";
		$this->text=$this->text_default;
		$this->options["WPSuperCache"]="false";
		$this->options["customRender"]="false";
		$WP_LIKES_URL=WP_LIKES_URL;
		$this->css=$this->css_default = <<<EOD
.wp_likes {
	margin-top:30px;
}
.wp_likes span.text{ 
   margin-left: 5px;
}
.wp_likes a.like img,a.liked img{
	vertical-align:middle;
    opacity:.8;
	filter: alpha(opacity = 80);
    margin-right:3px;
}
.wp_likes a.like img:hover{
        opacity:1;
		filter: alpha(opacity = 100);
}
.wp_likes a.like:hover{
text-decoration:none;
}
.wp_likes div.unlike{
	display:none;
}
/*sidebar widget css*/
.wp_likes_widget div img{
border:0px;
margin-left:15px;
margin-right:3px;
width:10px;
vertical-align:middle;	
}
.wp_likes_widget div span{
font-weight:bold;	
}
EOD;
if($loadCss)$this->loadCss();
if($loadOptions)$this->loadOptions();
if($loadText)$this->loadText();
	}
public function __get($var){
		if($var=="css"){
		return $this->css;		
		}else{
			 return $this->options[$var];
		  }
	}
public function __set($var,$value){
	if($var=="css"){
		$this->css=$value;
	}
	else {
		
		$this->options[$var]=$value;
		
	}
		
	}	  	
public function loadCss(){
		$var_db=get_option("wp_likes_css");
		if($var_db)$this->css=$var_db; else 
		  {
		  add_option("wp_likes_css",$this->css);
		  }	
}
public function loadOptions(){
	$options=get_option("wp_likes_options");
	if($options){
		foreach($options as $key=>$value){
		$this->options[$key]=$value;	
		}
		}
	else add_option("wp_likes_options",$this->options);
}		

public function loadText(){
	$texts=get_option("wp_likes_text");
	if($texts)$this->text = $texts + $this->text_default;
	else add_option("wp_likes_text",$this->text);
	
}
public function save(){
	update_option("wp_likes_css",$this->css);
	update_option("wp_likes_options",$this->options);
	update_option("wp_likes_text",$this->text);	
}		
public static function restore($css=true,$options=true,$texts=true){
	$settings= new wp_likes_settings(!$css,!$options,!$texts);
	$settings->save();
	return $settings;
}		

}
?>