Jump to content

How to define custom value in existing script


libero

Recommended Posts

Hi, all,

I have this script: (I`m sorry I`m putting it all here, but dont`t sure what`s important)

<?php
add_action('the_content','rpf_content_filter');
add_filter('wp_head', 'rpf_init');
$rpf_options = get_option('rpf_options');

function rpf_content_filter($content){
if(is_admin())
	return $content;

$id = get_post_meta(get_the_ID(), 'rpf_feed_id', true);

if(!$id)
	return $content;//might be normal content

global $rpf_options;
if($rpf_options['word_limit'] >0 )
	$content = rpf_truncate($content, $rpf_options['word_limit']);


$sourcelink=get_post_meta(get_the_ID(), 'rpf_sourcepermalink', true);

if($sourcelink)
	$link='<p>'.rpf_custom_template($sourcelink,$id).'</p>';

$content=$content.$link;

return $content;


}

function rpf_custom_template($sourcelink,$feed_id){



global $rpf_options;
$custom_template = $rpf_options['custom_template'];

if( false ===  strpos($custom_template, '%SOURCE_URL%' ) )
	$custom_template .= ' <a href="%SOURCE_URL%">%SOURCE_URL%</a> ';



$feed = rpf_get_feed($feed_id);

$user = get_userdata($feed['author']);
$author = $user->nickname;

$category = get_cat_name($feed['category']);

$feed_url = $feed['url'];

$feed_name = $feed['name'];

$custom_template = str_replace(
	array('%SOURCE_URL%','%AUTHOR%','%CATEGORY%','%FEED_URL%','%FEED_NAME%'),
	array($sourcelink,$author,$category,$feed_url,$feed_name),
	$custom_template

);

return $custom_template;


}
function rpf_truncate($text,$count) { 
$count=intval($count);
if(  $count<1 || substr_count($text,' ') < $count )
	return $text;

$temp = explode(' ', $text);

$text = implode(' ', array_slice($temp, 0, $count));

return $text;

}
function rpf_init(){

global $rpf_options;

$now_time=time();

$interval=60*60*3;
$lastactive=$rpf_options['lastactive'];
if(!$lastactive){
	$lastactive=$now_time;
	$rpf_options['lastactive']=$lastactive;
	update_option('rpf_options', $rpf_options);

}

if ( ($now_time - $lastactive ) >= $interval ) {

	$rpf_options['lastactive'] = $now_time+$interval;
	update_option('rpf_options', $rpf_options);
	rpf_process_feeds();
}

}



function rpf_process_feeds(){

@set_time_limit(0);


$feeds=rpf_get_feeds();
if($feeds){

	rpf_log("<b>----------Processing all feeds-------------</b>");
	foreach($feeds as $feed){

		rpf_process_feed($feed);

	}
}else{

	rpf_log("No feeds data found!");
}


}


function rpf_process_feed($feed){
@set_time_limit(0);
if(empty($feed['url'])){

	return false;
}


rpf_log("Processing feed <b>{$feed['url']}</b>");

$lastactive = $feed['lastactive'];

$now=time();

$frequency = $feed['frequency']*60*60;

if( ($now - $lastactive) >= $frequency ){

	rpf_update_feed_lastactive($feed['id'],$now);

}else{

	rpf_log("It's not the time to update <b>{$feed['url']}</b>. <a href='http://www.wprssposter.com/faq.html#cronjob'>Explanation</a>");
	return false;
}

global $rpf_options;

$max_items=$feed['max_items'];

if(empty($max_items)||!is_numeric($max_items))

	$max_items=3;

$simplepie = rpf_fetch_feed($feed['url'],$max_items);
$error=$simplepie->error();

if($error){

	rpf_log("Feed Error: <b>$error</b>");
	return false;
}

    	$count = 0;
    
foreach($simplepie->get_items() as $item){
	if( rpf_is_duplicate(  $item->get_title() ) ){
       			rpf_log('Filtering duplicate post');
        		continue;
	}
	if(false == rpf_process_item($item,$feed))
		continue;
	$count++;
	if($count == $max_items)
		break;
      	}

    	if($count==0)
	rpf_log("No new or qualified post for <b>{$feed['url']}</b> <a href='http://www.wprssposter.com/faq.html#newandqualified'>Explanation</a>");
else
	rpf_log( "Fetch $count posts from <b>{$feed['url']}</b>" );

    	
    	return true;
    

}
function rpf_process_item($item,$feed){


global $wpdb;

$title = $item->get_title();

$link = $item->get_permalink();

if(false !== strpos($link,'news.google.com')){
	$link=urldecode(substr($link,strpos($link,'url=')+4));
}elseif(false !== strpos($link,'/**')){
	$link=urldecode(substr($link,strpos($link,'/**')+3));

}	

$content = rpf_full_feed($link);

if(!$content ){
	//rpf_log("Cannot grab full content from <b>$link</b>");
	return false;
}
$title=rpf_title_fix($title);

$content=rpf_content_fix($content);

if(empty($title)||empty($content)){

	return false;
}

$content=rpf_parse_images($content,$item->get_base());
$meta = array(
     'rpf_feed_id' => $feed['id'],
     'rpf_sourcepermalink' => $link,

    	);

$rpf_date = date("Y-m-d H:i:s", time());
if($feed['publish_date'] === 'Publish Immediately'){

}elseif($feed['publish_date'] === 'RSS Publication Date'){

	$rpf_date = $item->get_date("Y-m-d H:i:s");
}



rpf_insert_post( $title,$content,$feed['category'],$feed['tags'],$meta,$feed['post_status'],$rpf_date,$feed['author']);
	rpf_log("<b>{$title}</b> added");
global $wpdb;
global $rpf_options;
$hash=rpf_item_hash($item->get_title());
$sql="insert into {$rpf_options['db']['post']} (hash) values ('{$hash}')";
$wpdb->query($sql);

return true;


}
function rpf_title_fix($title){
if($title && strpos($title,' - ')){

	$backup=$title;
	$backup=preg_replace('/([-])/','$1[D]',$backup);

	$backup=explode('[D]',$backup);

	if( strlen($backup[0])>10 || count($backup)>=2 )
		unset($backup[count($backup)-1]);
	else
		return $title;

	$title=trim(implode('',$backup),' - ');
}
return $title;

}

function rpf_content_fix($text){
preg_match_all('@(<a.+?href=\".+?\">)(.*?</a>)@',$text,$m);
$urls = $m[1];
if(count($urls)){
	foreach($urls as $pos => $link){
		if(false === stripos($link,'http://') && false === stripos($link,'https://')){

			$text=str_replace($link,'',$text);

			$text=str_replace($m[2][$pos],str_replace('</a>','',$m[2][$pos]),$text);
		}
	}
}
$text=preg_replace("/[&|#|&#]+[a-z0-9]+;/i","",$text);
$text=preg_replace('@<[dtrx][^>]*>@','',$text);
$text=preg_replace('@</[dtrx][^>]*>@','',$text);
return $text;

}
function rpf_parse_images($content,$link){

preg_match_all('/<img(.+?)src=\"(.+?)\"(.*?)>/', $content, $images);
$urls = $images[2];
       
      	if(count($urls)){

	foreach($urls as $pos => $url){
		$oldurl=$url;
		$meta=parse_url($url);

		if(!isset($meta['host'])){

			$meta=parse_url($link);
			$url=$meta['scheme'].'://'.$meta['host'].'/'.$url;

   			}

          		$newurl = rpf_cache_image($url);
          		if($newurl)
            			$content = str_replace($oldurl, $newurl, $content);
		else
			$content = str_replace($images[0][$pos],'',$content);
        	} 
        }
return $content;
   	


}
function rpf_cache_image($url){
if( strpos($url, "icon_") !== FALSE)
      return false;
global $rpf_options;
$contents = rpf_get_file($url);

if( !$contents )
	return false;
$basename = basename($url);
$paresed_url = parse_url($basename);

$filename = substr(md5(time()), 0, 5) . '_' . $paresed_url['path'];
    	
$cachepath = RPF_CACHE;
$pluginpath = RPF_URL_ROOT;
    	$real_cachepath=dirname(__FILE__).'/'.$cachepath;
if(is_writable(	$real_cachepath ) ){

	if($contents){

		file_put_contents($real_cachepath . $filename, $contents);
		$i=@exif_imagetype($real_cachepath . $filename);
		if($i)
			return $pluginpath . $cachepath . rawurlencode($filename);
	}
}else{

	rpf_log($real_cachepath . " directory is not writable" );

}
    
return false;

}
function rpf_insert_post($title,$content,$category=array(1),$tags_input='',$meta='',$post_status='publish',$rpf_date,$post_author=1){


$category=(array)$category;

if(!$rpf_date)
	$rpf_date = time();


$postid = wp_insert_post(array(
    		'post_title' 	          => $title,
  		'post_content'  	  => $content,
  		'post_category'           => $category,
	'tags_input'		  => $tags_input,
	'post_status'		  => $post_status,
	'post_author'             => $post_author,
  		"post_date" 		  => get_date_from_gmt($rpf_date),
    	));
if($meta)
	foreach($meta as $key => $value) 
		rpf_insert_post_meta($postid, $key, $value);


return $postid;

}

function rpf_full_feed($permalink){

require_once(RPFINC.'readability.php');

if ($permalink && $html = rpf_get_file($permalink)) {

	$html = rpf_convert_to_utf8($html);

	$content = grabArticleHtml($html);


}else
	return false;

if( false !== stripos($content,'readability was unable to parse this page for content') )
	return false;
if( false !== stripos($content, 'return go_back();') )
	return false;

return $content;

}
function rpf_insert_post_meta($postid, $key, $value) {
global $wpdb;

$result = $wpdb->query( "INSERT INTO $wpdb->postmeta (post_id,meta_key,meta_value ) " 
				                . " VALUES ('$postid','$key','$value') ");

return $wpdb->insert_id;		
}

function rpf_is_duplicate($title){

global $wpdb;
global $rpf_options;

$hash = rpf_item_hash($title);

$row = $wpdb->get_row("SELECT * FROM {$rpf_options['db']['post']} "
                          . "WHERE hash = '{$hash}'");  
if($row)
	return true;
return false;


}

function rpf_item_hash($data){

return sha1($data);
}
function rpf_get_file($url){

if(ini_get('allow_url_fopen') != 1) {
	@ini_set('allow_url_fopen', '1');
}

if(ini_get('allow_url_fopen') != 1) {

	$ch = curl_init();

	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //Set curl to return the data instead of printing it to the browser.
	curl_setopt($ch, CURLOPT_URL, $url);

	$data = curl_exec($ch);
	curl_close($ch);

	return $data;

    
} else {
	return @file_get_contents($url);
}

return false;


}
function rpf_fetch_feed($url,$max_items){
  
    $url=str_replace(' ','+',$url);

     # SimplePie
    if(! class_exists('SimplePie'))
      require_once( RPFINC . 'simplepie.class.php' );
   
    $feed = new SimplePie();
    $feed->enable_order_by_date(false); 
    $feed->set_feed_url($url);
    $feed->set_item_limit($max_items);
    $feed->set_stupidly_fast(true);
    $feed->enable_cache(false);    
    $feed->init();
    $feed->handle_content_type(); 
    
    return $feed;

}

function rpf_get_feeds(){

$rtn_feeds=array();
global $rpf_options;

$feeds=$rpf_options['feed'];

foreach($feeds as $feed){


	$rtn_feeds[]=$feed;

}
return $rtn_feeds;


}

function rpf_get_feed($id){

$feeds=rpf_get_feeds();

foreach($feeds as $feed){

	if($feed['id'] == $id)		
		return $feed;

}
return false;


}

function rpf_update_feed($_feed){

global $rpf_options;

$feeds=$rpf_options['feed'];


foreach($_feed as $k => $v)
	$_feed[$k]=str_replace('\\','',$v);

foreach($feeds as $key => $feed){

	if($feed['id'] == $_feed['id']){

		if(empty($_feed['name'])||empty($_feed['url'])){

			unset($feeds[$key]);
			$feeds[]=array(
			'id' => $_feed['id'],
			'name' => '',
			'url' => '',
			'category' => 1,
			'tags' =>'',
			'frequency' => 8,
			'max_items' => 3,
			'lastactive' =>'0',
			'post_status' => 'publish',
			'publish_date' => 'Publish Immediately',
			'author' => 1
			);
			break;		

		}else{
			if($_feed['url'] == $feed['url'] && $_feed['name'] == $feed['name'])
				$_feed['lastactive']=$feed['lastactive'];
			else
				$_feed['lastactive']='0';

			unset($feeds[$key]);
			$feeds[$key]=$_feed;
			break;
		}

	}	


}
$rpf_options['feed']=$feeds;
update_option('rpf_options',$rpf_options);

}
function rpf_update_feed_lastactive($id,$lastactive){

global $rpf_options;

$feeds=$rpf_options['feed'];

foreach($feeds as $key => $feed){

	if($feed['id'] == $id){
		$backup=$feed;
		unset($feeds[$key]);
		$backup['lastactive']=$lastactive;
		$feeds[$key]=$backup;
		break;

	}	


}
$rpf_options['feed']=$feeds;
update_option('rpf_options',$rpf_options);

}


function rpf_log($message){
   	global $wpdb;
    	global $rpf_options;
    	$message = $wpdb->escape($message);
      	$time = current_time('mysql', true);
      	$wpdb->query("INSERT INTO {$rpf_options['db']['log']} (message, created_on) VALUES ('{$message}', '{$time}') "); 
    		
}
function rpf_get_logs($page,$logs_per_page){
global $wpdb;
  	global $rpf_options;


if($page == 0) $page = 1;
$page--;
$orderby = "created_on";
$ordertype = 'ASC';
$start = $page * $logs_per_page;
$end = $start + $logs_per_page;
$limit = "LIMIT {$start}, {$end}";

  	
  	return $wpdb->get_results("SELECT * FROM {$rpf_options['db']['log']} ORDER BY $orderby $ordertype $limit");
}
function rpf_timezone_mysql($format, $time){
    return mysql2date($format, $time);    
}
//////////////////////////////////////////////
// Convert $html to UTF8
// (uses HTTP headers and HTML to find encoding)
// adapted from http://stackoverflow.com/questions/910793/php-detect-encoding-and-make-everything-utf-8
//////////////////////////////////////////////
function rpf_convert_to_utf8($html, $header=null)
{
$accept = array(
	'type' => array('application/rss+xml', 'application/xml', 'application/rdf+xml', 'text/xml', 'text/html'),
	'charset' => array_diff(mb_list_encodings(), array('pass', 'auto', 'wchar', 'byte2be', 'byte2le', 'byte4be', 'byte4le', 'BASE64', 'UUENCODE', 'HTML-ENTITIES', 'Quoted-Printable', '7bit', '8bit'))
);
$encoding = null;
if ($html || $header) {
	if (is_array($header)) $header = implode("\n", $header);
	if (!$header || !preg_match_all('/^Content-Type:\s+([^;]+)(?:;\s*charset=([^;"\'\n]*))?/im', $header, $match, PREG_SET_ORDER)) {
		// error parsing the response
	} else {
		$match = end($match); // get last matched element (in case of redirects)
		if (!in_array(strtolower($match[1]), $accept['type'])) {
			// type not accepted
			// TODO: avoid conversion
		}
		if (isset($match[2])) $encoding = trim($match[2], '"\'');
	}
	if (!$encoding) {
		if (preg_match('/^<\?xml\s+version=(?:"[^"]*"|\'[^\']*\')\s+encoding=("[^"]*"|\'[^\']*\')/s', $html, $match)) {
			$encoding = trim($match[1], '"\'');
		} elseif(preg_match('/<meta\s+http-equiv=["\']Content-Type["\'] content=["\'][^;]+;\s*charset=([^;"\'>]+)/i', $html, $match)) {
			if (isset($match[1])) $encoding = trim($match[1]);
		}
	}
	if (!$encoding) {
		$encoding = 'utf-8';
	} else {
		if (!in_array($encoding, array_map('strtolower', $accept['charset']))) {
			// encoding not accepted
			// TODO: avoid conversion
		}
		if (strtolower($encoding) != 'utf-8') {
			if (strtolower($encoding) == 'iso-8859-1') {
				// replace MS Word smart qutoes
				$trans = array();
				$trans[chr(130)] = '‚';    // Single Low-9 Quotation Mark
				$trans[chr(131)] = 'ƒ';    // Latin Small Letter F With Hook
				$trans[chr(132)] = '„';    // Double Low-9 Quotation Mark
				$trans[chr(133)] = '…';    // Horizontal Ellipsis
				$trans[chr(134)] = '†';    // Dagger
				$trans[chr(135)] = '‡';    // Double Dagger
				$trans[chr(136)] = 'ˆ';    // Modifier Letter Circumflex Accent
				$trans[chr(137)] = '‰';    // Per Mille Sign
				$trans[chr(138)] = 'Š';    // Latin Capital Letter S With Caron
				$trans[chr(139)] = '‹';    // Single Left-Pointing Angle Quotation Mark
				$trans[chr(140)] = 'Œ';    // Latin Capital Ligature OE
				$trans[chr(145)] = '‘';    // Left Single Quotation Mark
				$trans[chr(146)] = '’';    // Right Single Quotation Mark
				$trans[chr(147)] = '“';    // Left Double Quotation Mark
				$trans[chr(148)] = '”';    // Right Double Quotation Mark
				$trans[chr(149)] = '•';    // Bullet
				$trans[chr(150)] = '–';    // En Dash
				$trans[chr(151)] = '—';    // Em Dash
				$trans[chr(152)] = '˜';    // Small Tilde
				$trans[chr(153)] = '™';    // Trade Mark Sign
				$trans[chr(154)] = 'š';    // Latin Small Letter S With Caron
				$trans[chr(155)] = '›';    // Single Right-Pointing Angle Quotation Mark
				$trans[chr(156)] = 'œ';    // Latin Small Ligature OE
				$trans[chr(159)] = 'Ÿ';    // Latin Capital Letter Y With Diaeresis
				$html = strtr($html, $trans);
			}
			if(!class_exists('SimplePie_Misc'))
				require_once(RPFINC.'simplepie.class.php');

			$html = SimplePie_Misc::change_encoding($html, $encoding, 'utf-8');

			/*
			if (function_exists('iconv')) {
				// iconv appears to handle certain character encodings better than mb_convert_encoding
				$html = iconv($encoding, 'utf-8', $html);
			} else {
				$html = mb_convert_encoding($html, 'utf-8', $encoding);
			}
			*/
		}
	}
}
return $html;
}
if ( ! function_exists( 'exif_imagetype' ) ) {
    function exif_imagetype ( $filename ) {
        return @getimagesize( $filename );
    }
}
?>

So in line 229 I want to define one more value(preview) like this:

$content=rpf_parse_images($content,$item->get_base());
$meta = array(
     'rpf_feed_id' => $feed['id'],
     'rpf_sourcepermalink' => $link,
	 'preview' =>

I did it and it`s work, but the problem is that I want to insert here already existing value - from line 337 - variable $real_cachepath from functio rpf_cache_image. I have try to define it directly, but it don`t work.

Can you help me, please

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.