PK œqhYî¶J‚ßFßF)nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/ $#$#$#

Dir : /home/trave494/allinonecryptonews.kerihosting.com/wp-content/plugins/wp-automatic/
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64
IP: 209.182.202.254
Choose File :

Url:
Dir : //home/trave494/allinonecryptonews.kerihosting.com/wp-content/plugins/wp-automatic/core.reddit.php

<?php

// Main Class
require_once 'core.php';

Class WpAutomaticReddit extends wp_automatic{


	/*
	 * ---* youtube get links ---
	 */
	function reddit_fetch_items($keyword, $camp) {

		  echo "<br>so I should now get some items from Reddit" ;

		// ini options
		$camp_opt = unserialize ( $camp->camp_options );
		if( stristr($camp->camp_general, 'a:') ) $camp->camp_general=base64_encode($camp->camp_general);
		$camp_general = unserialize ( base64_decode( $camp->camp_general ) );
		$camp_general=array_map('wp_automatic_stripslashes', $camp_general);

		// items url
		$cg_rd_page = trim( $camp_general['cg_rd_page'] );
		$cg_rd_page_md = md5($cg_rd_page);
		
		// verify valid link
		if(  !( stristr($cg_rd_page, 'http') && stristr($cg_rd_page, 'reddit.com') ) ){
			  echo '<br>Provided reddit link is not valid please visit reddit.com and get a correct one';
			return false;
		}

		//.json
		if( ! preg_match('{/$}', $cg_rd_page)){
			$cg_rd_page.= '/';
		}
		
		$cg_rd_page.= '.json';
		
		// get start-index for this keyword
		$query = "select keyword_start ,keyword_id from {$this->wp_prefix}automatic_keywords where keyword_name='$keyword' and keyword_camp={$camp->camp_id}";
		$rows = $this->db->get_results ( $query );
		@$row = $rows [0];

		//If no rows add a keyword record
		if(count($rows) == 0){
			$query="insert into {$this->wp_prefix}automatic_keywords(keyword_name,keyword_camp,keyword_start) values ('$keyword','{$camp->camp_id}',1)";
			$this->db->query($query);
			$kid = $this->db->insert_id;
			$start = 0;

		}else{
			$kid = $row->keyword_id;
			$start = $row->keyword_start;
		}

 
		if ($start == - 1) {
			  echo '<- exhausted link';
				
			if( ! in_array( 'OPT_RD_CACHE' , $camp_opt )){
				$start =1;
				  echo '<br>Cache disabled resetting index to 1';
			}else{

				//check if it is reactivated or still deactivated
				if($this->is_deactivated($camp->camp_id, $keyword)){
					$start =1;
				}else{
					//still deactivated
					return false;
				}

			}
				
				
		}
		
		// page tag
		if(in_array( 'OPT_RD_CACHE' , $camp_opt )){
			
			$after_tag = get_post_meta($camp->camp_id,'after_tag',1);
			$after_md  = get_post_meta($camp->camp_id , 'after_md' , 1);
			
			  echo '<br>AFter tag:'.$after_tag;
			  echo '<br>md:'.$after_md;
			  echo '<br>current md:'.$cg_rd_page_md;
			
			if(trim($after_tag) != ''){
					
				if($after_md == $cg_rd_page_md){
					$cg_rd_page .= '?after='.$after_tag;
				}
					
			}
		}

		  echo '<br>Reddit items url:'.$cg_rd_page;

		  echo ' index:' . $start;

		 
		// update start index to start+1
		$nextstart = $start + 1;

		$query = "update {$this->wp_prefix}automatic_keywords set keyword_start = $nextstart where keyword_id=$kid ";
		$this->db->query ( $query );

		// get items
		// curl get
		$x = 'error';
		$url = $cg_rd_page;
		curl_setopt ( $this->ch, CURLOPT_HTTPGET, 1 );
		curl_setopt ( $this->ch, CURLOPT_URL, trim ( $url ) );
		$exec = curl_exec ( $this->ch );
		$x = curl_error ( $this->ch );

	 
		// error check
		if(trim($x) != ''){
			  echo '<br>Curl error:'.$x;
			return false;
		}

		// validate reply
		if( ! stristr($exec, '{"')){
			  echo '<br>Not expected response from reddit';
		}

		// decode json
		$jsonReply = json_decode($exec);
		
		$allItms = array();
		if( isset($jsonReply->data->children) ){
			$allItms = $jsonReply->data->children;
		}
		
		  
		// Check returned items count
		if ( count($allItms) > 0 ) {

			  echo '<br>Valid reply returned with ' . count($allItms) . ' item';
			
			$after= '';
			$after = $jsonReply->data->after;
			  echo '<br>Next page tag:'.$after;
			
			if(trim($after) == ''){
				delete_post_meta($camp->camp_id,'after_tag');
			}else{
				update_post_meta($camp->camp_id,'after_tag',$after);
				update_post_meta($camp->camp_id,'after_md',($cg_rd_page_md));
			}

		} else {

			  echo '<br>No items found';
			delete_post_meta($camp->camp_id,'after_tag');
			
			  echo '<br>Keyword have no more images deactivating...';
			$query = "update {$this->wp_prefix}automatic_keywords set keyword_start = -1 where keyword_id=$kid ";
			$this->db->query ( $query );

			if(! in_array('OPT_NO_DEACTIVATE', $camp_opt))
				$this->deactivate_key($camp->camp_id, $keyword);

		}


		  echo '<ol>';

 
		foreach ( $allItms as $itemTxt ) {
 
			$item = array();
			
			// match title
			$item['item_title'] = $itemTxt->data->title;

			// match description
			$item['item_description'] = $itemTxt->data->selftext;

			// match link
			$item_link = $item['item_url'] = $itemTxt->data->url;
			$item['item_link'] = $itemTxt->data->permalink;

			// match date
			$item['item_date'] = $itemTxt->data->created_utc;

			// match img
			$item['item_img'] = '';
			$item['item_img'] = @$itemTxt->data->preview->images[0]->source->url;
			 
			$id = $item['item_id'] = $itemTxt->data->id;
			$item['item_domain'] = $itemTxt->data->domain;
			$item['item_score'] = $itemTxt->data->score;
			$item['item_author'] = $itemTxt->data->author;
			
			$item['item_gif'] = '';
			$item['item_gif'] = @$itemTxt->data->preview->images[0]->variants->gif->source->url;
			
			$item['item_mp4'] = '';
			$item['item_mp4'] = @$itemTxt->data->preview->images[0]->variants->mp4->source->url;
			
			
			//media external embed
			$html = '';
			$html = @$itemTxt->data->media->oembed->html;
				
			if(trim($html) != '' && ! stristr($html, 'embedly-embed')) $item['item_embed'] = html_entity_decode( $html );
				
			$data = ( base64_encode( serialize ( $item ) ) );
			
			//post_hint
			$post_hint = '';
			$post_hint = @$itemTxt->data->post_hint;
			
			  echo '<li> Link:'.$item_link;
 
			// No image skip
			if( trim($item['item_img']) == '' && in_array('OPT_RD_IMG', $camp_opt) ){
				  echo '<- No image skip';
				continue;
			}
			
			// Filter type
			if(in_array('OPT_RD_POST_FILTER' , $camp_opt)){
				
				//gifs
				if(trim($item['item_mp4']) != '' || isset($item['item_embed']) ){
					
					//video
					if(! in_array('OPT_RD_POST_VID', $camp_opt)){
						  echo '<-- Gif/Vid skipping...';
						continue;
					}
					
				}elseif( trim($post_hint) == '' || $post_hint == 'self' ){
					
					//text
					if(! in_array('OPT_RD_POST_TXT', $camp_opt)){
						  echo '<-- Text post skipping...';
						continue;
					}
					
				}elseif($post_hint == 'image' ){
					
					//Image
					if(! in_array('OPT_RD_POST_IMAGE', $camp_opt)){
						  echo '<-- Image post skipping...';
						continue;
					}
					
				}elseif($post_hint == 'link'){
					
					//Image
					if(! in_array('OPT_RD_POST_LINK', $camp_opt)){
						  echo '<-- Link post skipping...';
						continue;
					}
					
				}
				
			}

			if( $this->is_execluded($camp->camp_id, $item_link) ){
				  echo '<-- Execluded';
				continue;
			}

			if ( ! $this->is_duplicate($item_link) )  {
				$query = "INSERT INTO {$this->wp_prefix}automatic_general ( item_id , item_status , item_data ,item_type) values (  '$id', '0', '$data' ,'rd_{$camp->camp_id}_$keyword')  ";
				$this->db->query ( $query );
			} else {
				  echo ' <- duplicated <a href="'.get_edit_post_link($this->duplicate_id).'">#'.$this->duplicate_id.'</a>';
			}
				
		}

		  echo '</ol>';

	}


	/*
	 * ---* reddit post ---
	 */
	function reddit_get_post($camp) {


		// Campaign options
		$camp_opt = unserialize (  $camp->camp_options );
		$keywords = array('*');

		foreach ( $keywords as $keyword ) {
				
			$keyword = trim($keyword);

			//update last keyword
			update_post_meta($camp->camp_id, 'last_keyword', trim($keyword));
				
			if (trim ( $keyword ) != '') {

				// getting links from the db for that keyword
				$query = "select * from {$this->wp_prefix}automatic_general where item_type=  'rd_{$camp->camp_id}_$keyword' and item_status ='0'";
				$this->used_keyword=$keyword;
				$res = $this->db->get_results ( $query );

				
				
				// when no links lets get new links
				if (count ( $res ) == 0) {

					// get new fresh items
					$this->reddit_fetch_items ( $keyword, $camp );

					// getting links from the db for that keyword
					$res = $this->db->get_results ( $query );
				}

				
				
				
				//check if already duplicated
				//deleting duplicated items
				$res_count = count($res);
				for($i=0;$i< $res_count ;$i++){

					$t_row = $res[$i];
						
					$t_data =  unserialize ( base64_decode( $t_row->item_data ) );
						
					$t_link_url= $t_data['item_url'] ;

					if( $this->is_duplicate($t_link_url) ){

						//duplicated item let's delete
						unset($res[$i]);

						  echo '<br>reddit item ('. $t_data ['item_title'] .') found cached but duplicated <a href="'.get_permalink($this->duplicate_id).'">#'.$this->duplicate_id.'</a>'  ;

						//delete the item
						$query = "delete from {$this->wp_prefix}automatic_general where item_id='{$t_row->item_id}' and item_type=  'rd_{$camp->camp_id}_$keyword'";
						$this->db->query ( $query );

					}else{
						break;
					}

				}

				// check again if valid links found for that keyword otherwise skip it
				if (count ( $res ) > 0) {
						
					// lets process that link
					$ret = $res [$i];
						
					$data = unserialize ( base64_decode( $ret->item_data )  );

					$temp = $data;
				 	
					  echo '<br>Found Link:'.$temp['item_link'];
					
					// empty item_description fix
					if(trim($temp['item_description']) == '') $temp['item_description'] = $temp['item_title'];
					
					// Item img html
					if(trim($temp['item_img']) != ''){
						$temp['item_img_html'] = '<img src="'.$temp['item_img'].'" />';
					}else{
						$temp['item_img_html'] = '';
					}
					
					// Yt embed
					if(! isset($temp['item_embed']) ) $temp['item_embed'] = '';
					
					if(stristr($temp['item_url'], 'youtu.be') || stristr($temp['item_url'], 'youtube.com')){
						$temp['item_embed'] = '[embed]'.$temp['item_url'] .'[/embed]'; 
					}
					
					// Gif embed
					$temp['item_gif_embed'] = '' ;
					if(trim($temp['item_gif']) != ''){
						$temp['item_embed'] = $temp['item_gif_embed'] = '<img src="'.$temp['item_gif'].'"/>';
						
					}
					
					// mp4 embed
					$temp['item_mp4_embed'] = '' ;
					if(trim($temp['item_mp4']) != ''){
					
					$temp['item_embed'] = $temp['item_mp4_embed'] =  '<video  controls="controls"><source src="'.$temp['item_mp4'].'" type="video/mp4"></video>';
					
					}
					 
					
					// author link
					$temp['item_author_link'] =  '<a href="'.$temp['item_author'].'">'.$temp['item_author'].'</a>'; 
					
					// Item link prefix
					$temp['item_link'] = 'https://reddit.com'.$temp['item_link'];
					 
					// update the link status to 1
					$query = "update {$this->wp_prefix}automatic_general set item_status='1' where item_id='$ret->item_id' and item_type='rd_{$camp->camp_id}_$keyword' ";
					$this->db->query ( $query );
						
					// if cache not active let's delete the cached videos and reset indexes
					if (! in_array ( 'OPT_RD_CACHE', $camp_opt )) {
						  echo '<br>Cache disabled claring cache ...';
						$query = "delete from {$this->wp_prefix}automatic_general where item_type='rd_{$camp->camp_id}_$keyword' and item_status ='0'";
						$this->db->query ( $query );

						// reset index
						$query = "update {$this->wp_prefix}automatic_keywords set keyword_start =1 where keyword_camp={$camp->camp_id}";
						$this->db->query ( $query );
					}
					
					//item_date timestamp to date
					$temp['item_date_formated'] = get_date_from_gmt(  gmdate ( 'Y-m-d H:i:s' , ($temp['item_date']) )  );
 						
					return $temp;
				} else {
						
					  echo '<br>No links found for this keyword';
				}
			} // if trim
		} // foreach keyword
	}

}