Jump to content

I need help with this code


Divvy

Recommended Posts

Hello guys,

 

I have a forum in MyBB and Im using this plugin to auto post content:

http://mods.mybb.com/view/rss-feed-poster

 

But I need a little change and I dont know how to do It...

 

This is an example of one of my auto posts:

EbT8t.png

 

I want to change the source link http:// with "Read More...".

I think that we need to modify ['link'] in task rssfeedposter.php file, but dont know how to do It...

Can someone please help me?

Thank you!

 

rssfeedposter.php code:

<?php
/*
RSS Feed Poster
by: vbgamer45
http://www.mybbhacks.com
Copyright 2010  MyBBHacks.com

############################################
License Information:

Links to http://www.mybbhacks.com must remain unless
branding free option is purchased.
#############################################
*/

$feedcount = 0;
$maxitemcount = 0;
$tag = '';
$tag_attrs = '';
$insideitem = false;
$depth = array();



function verify_rss_url($url)
{
global $txt, $depth;

// Rss Data storage
$finalrss = '';
$failed = true;

	$fp2 = @fopen($url, "r");
	if ($fp2)
	{
		$failed = false;
		$contents = '';
		while (!feof($fp2))
		{
		  $contents .= fread($fp2, 8192);
		}

		fclose($fp2);

		$finalrss = $contents;
	}




	if($failed == true)
	{
		$url_array = parse_url($url);

		$fp = @fsockopen($url_array['host'], 80, $errno, $errstr, 30);
		if (!$fp)
		{

		}
		else
		{
			$failed = false;

		   $out = "GET " . $url_array['path'] . (@$url_array['query'] != '' ? '?' . $url_array['query'] : '') . "  HTTP/1.1\r\n";
		   $out .= "Host: " . $url_array['host'] . "\r\n";
		   $out .= "Connection: Close\r\n\r\n";

		   fwrite($fp, $out);

		   $rssdata = '';
		   
	   $header = '';
	   // Remove stupid headers.
	   	do 
		{
			$header .= fgets ($fp, 128 );

	 	 } while ( strpos($header, "\r\n\r\n" ) === false );

		   while (!feof($fp))
		   {
		       $rssdata .= fgets($fp, 128);
		   }
		   fclose($fp);

		   @$finalrss = @$rssdata;

		}
	}


// Use cURL

	if($failed == true)
	{
		if(function_exists("curl_init"))
		{
			$failed = false;
			// Last but not least try cUrl
			$ch = curl_init();

			// set URL and other appropriate options
			curl_setopt($ch, CURLOPT_URL, $url);
			curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

			// grab URL, and return output
			$output = curl_exec($ch);

			// close curl resource, and free up system resources
			curl_close($ch);
			return $output;
		}
	}




// XML Parser functions to verify the XML Feed
if($failed == false)
{
	$depth = array();

	$xml_parser = xml_parser_create();
	xml_set_element_handler($xml_parser, "startElement2", "endElement2");


	   if (!xml_parse($xml_parser, $finalrss)) {
	      fatal_error(sprintf($txt['feedposter_err_xmlerror'],
	                   xml_error_string(xml_get_error_code($xml_parser)),
	                   xml_get_current_line_number($xml_parser)), false);
	   }

	xml_parser_free($xml_parser);
}
else
{
	// We were not able to download the feed 

}


}


function startElement2($parser, $name, $attrs)
{
   global $depth;
   $depth[$parser]++;
}

function endElement2($parser, $name)
{
   global $depth;
   $depth[$parser]--;
}

function UpdateRSSFeedBots($task)
{
global $db, $context, $feedcount, $maxitemcount, $insideitem, $tag, $tag_attrs;

// First get all the enabled bots
$context['feeds'] = array();
$request = $db->write_query("
		SELECT
			ID_FEED, fid, feedurl, title, postername, updatetime, enabled, html,
			uid, locked, articlelink, topicprefix, numbertoimport, importevery, markasread 
		FROM ".TABLE_PREFIX."feedbot
		WHERE enabled = 1");

while ($row = $db->fetch_array($request))
{
	$context['feeds'][] = $row;
}



require_once MYBB_ROOT."inc/datahandlers/post.php";


// Check if a field expired
foreach ($context['feeds'] as $key => $feed)
{

	$current_time = time();


	// If the feedbot time to next import has expired
	//add_task_log($task, "Check " . ($current_time + (60 * $feed['importevery'])) . " :" . $feed['updatetime']);

	if ($current_time > $feed['updatetime'])
	{

		$feeddata = GetRSSData($feed['feedurl']);



		if ($feeddata != false)
		{

			// Process the XML
				$xml_parser = xml_parser_create();
				$context['feeditems'] = array();
				$feedcount = 0;
				$maxitemcount = $feed['numbertoimport'];
				$tag = '';
				$tag_attrs = '';
				$insideitem = false;
				$context['feeditems'][0] = array();
				$context['feeditems'][0][] = array();
				$context['feeditems'][0]['title'] = '';
				$context['feeditems'][0]['description'] = '';
				$context['feeditems'][0]['link'] = '';



				xml_set_element_handler($xml_parser, "startElement1", "endElement1");
				xml_set_character_data_handler($xml_parser, "characterData1");

				if (!xml_parse($xml_parser, $feeddata))
				 {
					// Error reading xml data

				     xml_parser_free($xml_parser);
				 }
				else
				{
				   	// Data must be valid lets extra some information from it
				   	// RSS Feeds are a list of items that might contain title, description, and link


				   	// Free the xml parser memory
					xml_parser_free($xml_parser);

					// Loop though all the items
					$myfeedcount = 0;

					for ($i = 0; $i < ($feedcount); $i++)
					{


						if ($myfeedcount >= $maxitemcount)
						{
							continue;
						}

						//add_task_log($task, "NotSkip: $myfeedcount : $maxitemcount : $feedcount  T:" . $context['feeditems'][$i]['title']);


						// Check feed Log
						// Generate the hash for the log
						if(!isset($context['feeditems'][$i]['title']) || !isset($context['feeditems'][$i]['description']))
							continue;

						if(empty($context['feeditems'][$i]['title']) && empty($context['feeditems'][$i]['description']))
							continue;	



						$itemhash = md5($context['feeditems'][$i]['title'] . $context['feeditems'][$i]['description']);
						$request = $db->write_query("
						SELECT
							feedtime
						FROM ".TABLE_PREFIX."feedbot_log
						WHERE feedhash = '$itemhash'");


						// If no has has found that means no duplicate entry
						if ($db->num_rows($request) == 0)
						{

							// Create the Post
							$msg_title = ($feed['html'] ? $context['feeditems'][$i]['title'] : strip_tags($context['feeditems'][$i]['title']));

							$msg_body =  ($feed['html'] ? $context['feeditems'][$i]['description'] . "\n\n" . $context['feeditems'][$i]['link']  : strip_tags($context['feeditems'][$i]['description'] .  "\n\n" . $context['feeditems'][$i]['link']));


							$posthandler = new PostDataHandler("insert");
							$posthandler->action = "thread";

							if (strlen($msg_title) > 120)
								$msg_title = substr($msg_title,0,115);

							$msg_title = trim($msg_title);


							$new_thread = array(
								"fid" => $feed['fid'],
								"subject" => $feed['topicprefix'] . $msg_title,
								"icon" => '',
								"uid" => $feed['uid'],
								"username" => $feed['postername'],
								"message" => '[b]' . $msg_title . "[/b]\n\n" . $msg_body,
								"ipaddress" => '127.0.0.1',
								"posthash" => ''
							);

							$new_thread['modoptions']  = array('closethread' => $feed['locked']);

							$posthandler->set_data($new_thread);
							$valid_thread = $posthandler->validate_thread();

							if(!$valid_thread)
							{
								$post_errors = $posthandler->get_friendly_errors();
							}
							else 
								$thread_info = $posthandler->insert_thread();


							$tid = (int) $thread_info['tid'];
							$pid = (int)  $thread_info['pid'];

							if ($feed['markasread'])
							{
								// Mark thread as read
								require_once MYBB_ROOT."inc/functions_indicators.php";
								mark_thread_read($tid, $feed['fid']);
							}

							// Add Feed Log
							$fid = $feed['ID_FEED'];
							$ftime = time();

							$db->write_query("
							INSERT INTO ".TABLE_PREFIX."feedbot_log
								(ID_FEED, feedhash, feedtime, tid, pid)
							VALUES
								($fid,'$itemhash',$ftime,$tid,$pid)");

							$myfeedcount++;

						}
					}

				 } // End valid XML check



		}  // End get feed data



		// Set the RSS Feed Update time
		$updatetime = time() +  (60 * $feed['importevery']);


		$db->write_query("
		UPDATE ".TABLE_PREFIX."feedbot 
		SET 
			updatetime = '$updatetime'

		WHERE ID_FEED = " . $feed['ID_FEED']);

	} // End expire check


} // End for each feed

}

function GetRSSData($url)
{
$url_array = parse_url($url);


	$fp2 = @fopen($url, "r");
	if ($fp2)
	{
		$contents = '';
		while (!feof($fp2))
		{
		  $contents .= fread($fp2, 8192);
		}

		fclose($fp2);

		return $contents;
	}



	$fp = fsockopen($url_array['host'], 80, $errno, $errstr, 30);
	if (!$fp)
	{

	}
	else
	{


	   $out = "GET " . $url_array['path'] . (@$url_array['query'] != '' ? '?' . $url_array['query'] : '') . "  HTTP/1.1\r\n";
	   $out .= "Host: " . $url_array['host'] . "\r\n";
	   $out .= "Connection: Close\r\n\r\n";

	   fwrite($fp, $out);

	   $rssdata = '';
	   
	   $header = '';
	   // Remove stupid headers.
	   	do 
		{
			$header .= fgets ($fp, 128 );

	 	 } while ( strpos($header, "\r\n\r\n" ) === false );

	   while (!feof($fp))
	   {
	       $rssdata .= fgets($fp, 128);
	   }
	   fclose($fp);

	   $finalrss = $rssdata;

	   return  $finalrss;
	}



	if(function_exists("curl_init"))
	{
		// Last but not least try cUrl
		$ch = curl_init();

		// set URL and other appropriate options
		curl_setopt($ch, CURLOPT_URL, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

		// grab URL, and return output
		$output = curl_exec($ch);

		// close curl resource, and free up system resources
		curl_close($ch);

		return $output;
	}



// Failure return false
return false;

}

function startElement1($parser, $name, $attrs)
{
global $insideitem, $tag, $tag_attrs;
if ($insideitem)
{
	$tag = $name;
	$tag_attrs =  $attrs;
}
elseif ($name == "ITEM"  || $name == "ENTRY")
{
	$insideitem = true;
}
}

function endElement1($parser, $name)
{
global $insideitem, $tag, $feedcount, $context, $tag_attrs;

if ($name == "ITEM" || $name == "ENTRY")
{
	$feedcount++;
	$context['feeditems'][$feedcount] = array();
	$context['feeditems'][$feedcount][] = array();
	$context['feeditems'][$feedcount]['title'] = '';
	$context['feeditems'][$feedcount]['description'] = '';
	$context['feeditems'][$feedcount]['link'] = '';
	$tag_attrs = '';
	$insideitem = false;
}
}

function characterData1($parser, $data)
{
global $insideitem, $tag,  $feedcount, $context, $maxitemcount, $tag_attrs;

if ($insideitem )
	{
	switch ($tag)
	{
		case "TITLE":
			$context['feeditems'][$feedcount]['title'] .= $data;
		break;

		case "DESCRIPTION":
			$context['feeditems'][$feedcount]['description'] .= $data;

		break;

		case "LINK":
			$context['feeditems'][$feedcount]['link'] .= $data;
		break;

		case "SUMMARY":
		$context['feeditems'][$feedcount]['description'] .= $data;

		break;
		case "CONTENT":
		$context['feeditems'][$feedcount]['description'] .= $data;

		break;

		case "LINK":
			$data = trim($data);
			$context['feeditems'][$feedcount]['link'] .= $data;
			IF (empty($data) && isset($tag_attrs['HREF']))
				$context['feeditems'][$feedcount]['link'] .= $tag_attrs['HREF'];


		break;

	}
}
}



function task_rssfeedposter($task)
{
global $lang;

$lang->load('rssfeedposter');

UpdateRSSFeedBots($task);

add_task_log($task, $lang->rssfeedposter_taskran);
}
?>

 

Can someone please help me?

Thank you! :)

Link to comment
https://forums.phpfreaks.com/topic/254958-i-need-help-with-this-code/
Share on other sites

You show A LOT OF CODE. For me it's not interesting to go through this code and look for the point where you output this link. It seems that a lot of people are thinking in the same way :)

 

Just a small question. Do you know <a> tag and it's structure? If you know it you know the answer to your question. Look for info about this tag anywhere in the internet.

  Quote

Noticed quite a lot of stubborn people on this website who think they know it all and have a problem helping others.

It seems you are talking about many people including me :) Yes, you are right - I don't like to write a code for people who don't like to think. From my point of view, I'm 'helping' a man when pointing him to find a correct solution.

Of course I can write some lines of code - but it possible just in one case. When the man is trying to think and write a code. If he fails - I can correct his code or write a new one. I like to help such people - because I see that they are able to think.

 

But if you wish... You may write a code for anyone :) You see - here there are some (not too much) people who are waiting for such a man like you :) They don't like to think, they like that you think instead of them.

Archived

This topic is now archived and is closed to further replies.

×
×
  • 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.