Divvy Posted January 13, 2012 Share Posted January 13, 2012 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: 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! Quote Link to comment Share on other sites More sharing options...
Muddy_Funster Posted January 13, 2012 Share Posted January 13, 2012 wrong section Quote Link to comment Share on other sites More sharing options...
SergeiSS Posted January 13, 2012 Share Posted January 13, 2012 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 Link to comment Share on other sites More sharing options...
adi123 Posted January 17, 2012 Share Posted January 17, 2012 Noticed quite a lot of stubborn people on this website who think they know it all and have a problem helping others. I think this is the answer to your problem. <a href="your link">some text</a> Quote Link to comment Share on other sites More sharing options...
SergeiSS Posted January 18, 2012 Share Posted January 18, 2012 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. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.