Hallo, Gast! (Registrieren)

Wir wünschen allen Besuchern frohe Ostern!

Letzte Ankündigung: MyBB 1.8.37 veröffentlicht (04.11.23)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
rss2post /News erscheinen mehrfach
#1
Hallo,

ich habe folgendes Problem mit dem Plugin rss2post:

Nachrichten mit langem Betreff werden immer wieder abgerufen. D.h. der Bot ruft diese Nachrichten jedes mal ab.

Gibt es eine Möglichkeit den Betreff automatisch zu kürzen?

Gruß,
Dirk
niemand eine Idee?
Gruß,
NixxusMinimax
Zitieren
#2
Ich kenne das Plugin kaum. Wie man per PHP Strings kürzst findet du z.B. in diesem Beitrag: https://www.mybb.de/forum/showthread.php...1#pid30761

Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Zitieren
#3
Ich danke dir schonmal soweit. Hab mal kurz ins Thema reingeguckt. Ich werde nachher mal testen ob ich den Code ins Plugin gebastelt kriege.

Gruß,
Dirk

/edit:
PHP-Code:
if(my_strlen($lastpost_subject) > 25)
{
    
$lastpost_subject my_substr($lastpost_subject025) . "...";


wärst du wohl so nett mir die Stelle zu zeigen?

PHP-Code:
<?php
// RSS To Post
// By DennisTT
// Version 1.1.0 - Änderungen von Michael (Zeilen 289-307)

// This plugin (C) DennisTT 2006.  You may not redistribute this plugin without the permission from DennisTT.

function rss2post_info()
{
    return array(
        
"name"            => "RSS To Post",
        
"description"    => "Analysiert RSS-Feeds und stellt neue Infos in ein spezifisches Forum.<br />==>> Credits to Vojtech Semecky for RSS parser class.",
        
"website"        => "http://www.dennistt.net",
        
"author"        => "DennisTT",
        
"authorsite"    => "http://www.dennistt.net",
        
"version"        => "1.1.0",
    );
}

/*
function rss2post_info()
{
    return array(
        "name"            => "RSS To Post",
        "description"    => "Parses RSS feeds and posts new items onto a specified forum.<br />==>> Credits to Vojtech Semecky for RSS parser class.",
        "website"        => "http://www.dennistt.net",
        "author"        => "DennisTT",
        "authorsite"    => "http://www.dennistt.net",
        "version"        => "1.1.0",
    );
}
*/

function rss2post_activate()
{
    global 
$db$cache;
    
$cache->update('rss2post'0);
    
$db->query("
        CREATE TABLE `"
.TABLE_PREFIX."rss2post` (
            `fid` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
            `url` VARCHAR( 255 ) NOT NULL ,
            `forum` INT( 10 ) UNSIGNED NOT NULL
        ) ENGINE = MYISAM ;
        "
);

    
$info rss2post_info();

    
$setting_group_array = array(
        
'name' => str_replace(' ''_''dennistt_'.strtolower($info['name'])),
        
'title' => "$info[name] (DennisTT)",
        
//'description' => "Settings for the $info[name] plugin",
        
'description' => "Einstellungen f&uuml;r das Plugin \"$info[name]\"",
        
'disporder' => 1,
        
'isdefault' => 'no',
        );
    
$db->insert_query(TABLE_PREFIX.'settinggroups'$setting_group_array);
    
$group $db->insert_id();

/*
    $setting_group_array = array(
        'name' => str_replace(' ', '_', 'dennistt_'.strtolower($info['name'])),
        'title' => "$info[name] (DennisTT)",
        'description' => "Settings for the $info[name] plugin",
        'disporder' => 1,
        'isdefault' => 'no',
        );
    $db->insert_query(TABLE_PREFIX.'settinggroups', $setting_group_array);
    $group = $db->insert_id();
*/

    
$settings = array(
        
'rss2post_auto' => array('Automatischer Scan?''Wenn \"Ja\" gew&auml;hlt ist, werden die RSS-Feeds nach einer bestimmten Zeit neu gescannt.<br />Wenn \"Nein\" gew&auml;hlt ist, werden die RSS-Feeds nur manuell &uuml;ber das Plugin-CP neu eingelesen.''yesno''yes'),
        
'rss2post_userid' => array('Benutzer-ID''ID des Benutzers, der als Autor erw&auml;nt wird.''text''1'),
        
'rss2post_interval' => array('Time-Out-Intervall''Intervall zwischen den Scans in Minuten''text''90'),
        
'rss2post_striphtml' => array('Strip HTML''Soll der Feed-Inhalt aufgel&ouml;st werden, wenn er HTML-Code enth&auml;lt?''yesno''yes'),
        
'rss2post_forcerunpw' => array('Force Run Password''Dies ist das Passwort, das via URL jedes Mal hinzugef&uuml;gt wird, wenn das Plugin "forced-run" ausgef&uuml;hrt wird. (siehe auch "RSS To Post - Konfigurationshinweise" f&uuml;r weitere Informationen &uuml;ber "force-run")''text'rand(100999)),
        );

    
$i 1;
    foreach(
$settings as $name => $sinfo)
    {
        
$db->query("INSERT INTO ".TABLE_PREFIX."settings (name,title,description,optionscode,value,gid,disporder) VALUES ('$name', '$sinfo[0]', '$sinfo[1]', '$sinfo[2]', '$sinfo[3]', $group$i)");
        
$i++;
    }
    
rebuildsettings();

    echo 
'<script type="text/javascript">parent.nav.location.href = parent.nav.location.href;</script>';

}

function 
rss2post_deactivate()
{
    global 
$db;

    
$info rss2post_info();

    
$result $db->query("SELECT gid FROM ".TABLE_PREFIX."settinggroups WHERE title = '$info[name] (DennisTT)' LIMIT 1");
    
$group $db->fetch_array($result);
    
    if(!empty(
$group['gid']))
    {
        
$db->query("DELETE FROM ".TABLE_PREFIX."settinggroups WHERE gid = $group[gid] LIMIT 1");
        
$db->query("DELETE FROM ".TABLE_PREFIX."settings WHERE gid = $group[gid]");
        
rebuildsettings();
    }

    
$db->query("DROP TABLE ".TABLE_PREFIX."rss2post");
    
$db->delete_query(TABLE_PREFIX."datacache""title='rss2post'");

    echo 
'<script type="text/javascript">parent.nav.location.href = parent.nav.location.href;</script>';

}

$plugins->add_hook("admin_index_navigation_end""rss2post_admin_menu");
function 
rss2post_admin_menu()
{
    global 
$menu$lang;
    
$menu[] = array(
        
"title" => "RSS To Post",
        
"items" => array(
            
10 => array("title" => $lang->nav_manage"url" => "index.php?".SID."&amp;plugin=rss2post&amp;pluginaction=list"),
        )
    );
}

$plugins->add_hook("admin_index_start""rss2post_admin");
function 
rss2post_admin()
{
    global 
$mybb$db$lang;
    if(isset(
$mybb->input['plugin']) && $mybb->input['plugin'] == 'rss2post')
    {
        
addacpnav("RSS To Post""index.php?".SID."&amp;plugin=rss2post&amp;pluginaction=list");
        
$action = (isset($mybb->input['pluginaction'])) ? $mybb->input['pluginaction'] : 'list';
        if(
$action == 'do_update')
        {
            
// Update existing feed info
            
if(is_array($mybb->input['url']))
            {
                foreach(
$mybb->input['url'] as $fid => $url)
                {
                    
// Delete if requested
                    
if(isset($mybb->input['delete'][$fid]) && $mybb->input['delete'][$fid] == 'true')
                    {
                        
$db->delete_query(TABLE_PREFIX."rss2post""fid='{$fid}'"1);
                        continue;
                    }

                    
// Validate variables
                    
$forum intval($mybb->input['forum'][$fid]);
                    
$query $db->simple_select(TABLE_PREFIX."forums""fid""type='f' AND fid='{$forum}'");
                    if(
$db->num_rows($query) == 0)
                    {
                        
cperror("One of the forum IDs you have provided is invalid.  Please go back and correct it.");
                    }
                    
$update_array = array(
                        
'url' => $db->escape_string($url),
                        
'forum' => $forum
                        
);
                    
$db->update_query(TABLE_PREFIX."rss2post"$update_array"fid='{$fid}'");
                    if(isset(
$mybb->input['run'][$fid]) && $mybb->input['run'][$fid] == 'true')
                    {
                        
rss2post_process_feed($url$forum);
                    }
                }
            }
            if(!empty(
$mybb->input['newurl']))
            {
                
$forum intval($mybb->input['newforum']);
                
$query $db->simple_select(TABLE_PREFIX."forums""fid""type='f' AND fid='{$forum}'");
                if(
$db->num_rows($query) == 0)
                {
                    
cperror("One of the forum IDs you have provided is invalid.  Please go back and correct it.");
                }
                
$insert_array = array(
                    
'url' => $db->escape_string($mybb->input['newurl']),
                    
'forum' => $forum
                    
);
                
$db->insert_query(TABLE_PREFIX."rss2post"$insert_array);
                if(isset(
$mybb->input['newrun']) && $mybb->input['newrun'] == 'true')
                {
                    
rss2post_process_feed($mybb->input['newurl'], $forum);
                }
            }
            
cpredirect("index.php?".SID."&plugin=rss2post&pluginaction=list""Die \"RSS To Post\"-Informationen wurden erfolgreich aktualiesiert.");
            die();
        }
        
cpheader();

        
starttable();

        
startform("index.php");
        
makehiddencode('plugin''rss2post');
        
makehiddencode('pluginaction''do_update');

        
tableheader('RSS To Post - Configuration'''4);

        
tablesubheader(array('URL''Forum-ID''L&ouml;schen''Ausf&uuml;hren'));
        
$query $db->simple_select(TABLE_PREFIX."rss2post""*");
        if(
$db->num_rows($query) > 0)
        {
            while(
$row $db->fetch_array($query))
            {
                
$bg getaltbg();
                echo 
'<tr>';
                echo 
"\n<td class=\"{$bg}\" style=\"width:70%\"><input type=\"text\" name=\"url[{$row['fid']}]\" value=\"".htmlspecialchars_uni($row['url'])."\" style=\"width:100%\" /></td>";
                echo 
"\n<td class=\"{$bg}\" style=\"width:10%\"><input type=\"text\" name=\"forum[{$row['fid']}]\" value=\"".htmlspecialchars_uni($row['forum'])."\" style=\"width:100%\" /></td>";
                echo 
"\n<td class=\"{$bg}\" style=\"width:10%; text-align:center\"><input type=\"checkbox\" name=\"delete[{$row['fid']}]\" value=\"true\" /></td>";
                echo 
"\n<td class=\"{$bg}\" style=\"width:10%; text-align:center\"><input type=\"checkbox\" name=\"run[{$row['fid']}]\" value=\"true\" /></td>";
                echo 
'</tr>';
            }
        }
        else
        {
            echo 
'<tr><td colspan="4" class="trow1">No RSS feeds to display</td></tr>';
        }

        
tablesubheader('Neuer RSS-Feed'''4);
        
$bg getaltbg();
        echo 
'<tr>';
        echo 
"\n<td class=\"{$bg}\" style=\"width:70%\"><input type=\"text\" name=\"newurl\" value=\"\" style=\"width:100%\" /></td>";
        echo 
"\n<td class=\"{$bg}\" style=\"width:10%\"><input type=\"text\" name=\"newforum\" value=\"\" style=\"width:100%\" /></td>";
        echo 
"\n<td class=\"{$bg}\" style=\"width:10%; text-align:center\"></td>";
        echo 
"\n<td class=\"{$bg}\" style=\"width:10%; text-align:center\"><input type=\"checkbox\" name=\"newrun\" value=\"true\" checked=\"checked\" /></td>";
        echo 
'</tr>';

        
endtable();

        
endform("RSS To Post-Konfiguration aktualisieren"$lang->reset_button);

        echo 
"<h3>Zus&auml;tzliche Plugin-Info:</h3><p><strong>Force Run:</strong> Wenn die M&ouml;glichkeit f&uuml;r \"cronjobs\" auf dem Server besteht, kannst du einen \"cronjob\" einrichten, der<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"{$mybb->settings['bburl']}/index.php?forcerss2post&rsspw={$mybb->settings['rss2post_forcerunpw']}\">{$mybb->settings['bburl']}/index.php?forcerss2post&rsspw={$mybb->settings['rss2post_forcerunpw']}</a><br /><br />im angegebenen Intervall ausf&uuml;hrt. Alternativ kannst du diese URL verwenden, um das Plugin manuell auszuf&uuml;hren.</p>";
        
//echo "<h3>Additional Plugin Info:</h3><p><strong>Force Run:</strong> If you have access to create cronjobs on your server, you can create a cronjob that runs <a href=\"{$mybb->settings['bburl']}/index.php?forcerss2post&rsspw={$mybb->settings['rss2post_forcerunpw']}\">{$mybb->settings['bburl']}/index.php?forcerss2post&rsspw={$mybb->settings['rss2post_forcerunpw']}</a> at the interval of your choice.  Alternatively you can use this URL to run the plugin manually whenever you choose.</p>";
        
rss2post_cpfooter();
        die();
    }
}

$plugins->add_hook("global_end""rss2post_run");
function 
rss2post_run()
{
    global 
$cache$mybb$db;

    
// Quit if automatic mode is not turned on and run isn't being forced
    
if($mybb->settings['rss2post_auto'] == 'no' && !isset($mybb->input['forcerss2post']))
    {
        return;
    }

    
// If the run isn't forced, or the password is not correct, check timeout interval
    
if(!isset($mybb->input['forcerss2post']) || $mybb->input['rsspw'] != $mybb->settings['rss2post_forcerunpw'])
    {
        
$minutes_before_next_run $mybb->settings['rss2post_interval']; // Minutes to wait before allowing another run.
    
        
$last_run $cache->read('rss2post');
        if(
$last_run > (time() - $minutes_before_next_run*60))
        {
            return;
        }
    }

    
// Clear error data cache
    
$cache->update('rss2post_errors''');

    
// Find out what feeds there are to update.
    
$query $db->simple_select(TABLE_PREFIX."rss2post");
    while(
$row $db->fetch_array($query))
    {
        
rss2post_process_feed($row['url'], $row['forum']);
    }
    
$cache->update('rss2post'time());
}

function 
rss2post_process_feed($url$forum)
{
    global 
$db$mybb$cache;

    
// Create feed reader
    
$feeder = new lastRSS;
    
$feeder->CDATA 'content';

    
$uid intval($mybb->settings['rss2post_userid']);

    
$query $db->simple_select(TABLE_PREFIX."users""username""uid='{$uid}'");
    
$user $db->fetch_array($query);

    
// Get the feed
    
if($feed $feeder->Get($url))
    {
        
$items $feed['items'];
        
// Loop through each item
        
foreach($items as $item_data)
        {
            
// Make a title if none exists
            
if(empty($item_data['title']))
            {
                
$item_data['title'] = substr($item_data['description'], 060);
                if(
strlen($item_data['description']) > 60)
                {
                    
$item_data['title'] .= '...';
                }
            }
/*            // See if title exists in posting forum
            $subject = html_entity_decode($item_data['title']);
            $subject_sql = $db->escape_string($subject);
            $query = $db->simple_select(TABLE_PREFIX."threads", "tid", "subject='{$subject_sql}' AND fid='{$forum}'");
            if($db->num_rows($query) == 0)
            {
                // Add thread to forum (code based on MyBB 1.2.1 newthread.php)
                // Set up posthandler.
                require_once MYBB_ROOT."inc/datahandlers/post.php";
                $posthandler = new PostDataHandler("insert");
                $posthandler->action = "thread";


                $message = html_entity_decode($item_data['description']);
*/
            // See if title exists in posting forum
         
$filetype ".".array_pop(explode("."$url));
            if(
$filetype == "xml") {
                
utf8_encode($subject);
            }
            
$subject html_entity_decode($item_data['title']);
            
$subject_sql $db->escape_string($subject);
            
$query $db->simple_select(TABLE_PREFIX."threads""tid""subject='{$subject_sql}' AND fid='{$forum}'");
            if(
$db->num_rows($query) == 0)
            {
                
// Add thread to forum (code based on MyBB 1.2.1 newthread.php)
                // Set up posthandler.
                
require_once MYBB_ROOT."inc/datahandlers/post.php";
                
$posthandler = new PostDataHandler("insert");
                
$posthandler->action "thread";

                if(
$filetype == "xml") {
                    
utf8_encode($item_data['description']);
                }
                
$message html_entity_decode($item_data['description']);
                
$meta_info '';

                if(!empty(
$item_data['link']))
                {
                    
$meta_info .= ''.$item_data['link'];
                }
                if(!empty(
$meta_info))
                {
                    
$message .= "\n\nQuelle: ".$meta_info;
                }
                if(!empty(
$item_data['author']))
                {
                    
$message .= "\nAuthor: {$item_data['author']}";
                }
                if(!empty(
$item_data['comments']))
                {
                    
$message .= "\nComments: {$item_data['comments']}";
                }

                
// Strip HTML tags if required
                
if($mybb->settings['rss2post_striphtml'] == 'yes')
                {
                    
$message strip_tags($message);
                }

                
// Set the thread data
                
$new_thread = array(
                    
"fid" => $forum,
                    
"subject" => $subject,
                    if(
my_strlen($subject) > 25)
          {
          
$subject my_substr($lastpost_subject025) . "...";
          } 
                    
"icon" => -1,
                    
"uid" => $uid,
                    
"username" => $user['username'],
                    
"message" => $message,
                    
"ipaddress" => '127.0.0.1',
                    
"posthash" => '',
                    
"savedraft" => 0,
                );

                
// Set up the thread options
                
$new_thread['options'] = array(
                    
"signature" => 'yes',
                    
"emailnotify" => 'no',
                    
"disablesmilies" => 'no'
                
);

                
$posthandler->set_data($new_thread);
        
                
// Now let the post handler do all the hard work.
                
if($posthandler->validate_thread())
                {
                    
$thread_info $posthandler->insert_thread();
                }
                else
                {
                    
$errors $cache->read("rss2post_errors");    
                    if(
$errors === false)
                    {
                        
$errors '';
                    }                    
                    
                    
$errors .= 'Date: ' gmdate('r') . "\n";
                    
$errors .= "URL: {$url}\n";
                    
$errors .= "Forum ID: {$forum}\n";
                    
                    
ob_start();
                    
var_dump($item_data);
                    
$errors .= ob_get_clean();
                    
                    
$datahandler_errors $posthandler->get_errors();
                    
ob_start();
                    
var_dump($datahandler_errors);
                    
$errors .= ob_get_clean();
                    
$errors .= "\n\n===========================================\n\n";
                    
                    
$cache->update('rss2post_errors'$errors);
                }
            }
        }
    }
    else
    {
        
$errors $cache->read("rss2post_errors");    
        if(
$errors === false)
        {
            
$errors '';
        }                    
        
        
$errors .= 'Date: ' gmdate('r') . "\n";
        
$errors .= "URL: {$url}\n";
        
$errors .= "Forum ID: {$forum}\n";
        
        
$errors .= "There was a problem accessing the URL.";
        
$errors .= "\n\n===========================================\n\n";
        
        
$cache->update('rss2post_errors'$errors);
    }
}

function 
rss2post_cpfooter()
{
    echo 
"<div align=\"center\">\n<br />\n<br />\n<font size=\"1\" face=\"Verdana,Arial,Helvetica\">\nRSS To Post Plugin by <a href=\"http://www.dennistt.net\">DennisTT</a>\n</font>\n</div>\n";
    
cpfooter();
}

if(!
function_exists('htmlspecialchars_decode'))
{
    
// Courtesy of people commenting @ php.net manual
    
function htmlspecialchars_decode($text)
    {
        return 
strtr($textarray_flip(get_html_translation_table(HTML_SPECIALCHARS)));
    }
}




/*
 ======================================================================
 lastRSS 0.9.1
 
 Simple yet powerfull PHP class to parse RSS files.
 
 by Vojtech Semecky, webmaster @ webdot . cz
 
 Latest version, features, manual and examples:
     http://lastrss.webdot.cz/

 ----------------------------------------------------------------------
 LICENSE

 This program is free software; you can redistribute it and/or
 modify it under the terms of the GNU General Public License (GPL)
 as published by the Free Software Foundation; either version 2
 of the License, or (at your option) any later version.

 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 GNU General Public License for more details.

 To read the license please visit http://www.gnu.org/copyleft/gpl.html
 ======================================================================
*/

/**
* lastRSS
* Simple yet powerfull PHP class to parse RSS files.
*/
class lastRSS {
    
// -------------------------------------------------------------------
    // Public properties
    // -------------------------------------------------------------------
    
var $default_cp 'UTF-8';
    var 
$CDATA 'nochange';
    var 
$cp '';
    var 
$items_limit 0;
    var 
$stripHTML False;
    var 
$date_format '';

    
// -------------------------------------------------------------------
    // Private variables
    // -------------------------------------------------------------------
    
var $channeltags = array ('title''link''description''language''copyright''managingEditor''webMaster''lastBuildDate''rating''docs');
    var 
$itemtags = array('title''link''description''author''category''comments''enclosure''guid''pubDate''source');
    var 
$imagetags = array('title''url''link''width''height');
    var 
$textinputtags = array('title''description''name''link');

    
// -------------------------------------------------------------------
    // Parse RSS file and returns associative array.
    // -------------------------------------------------------------------
    
function Get ($rss_url) {
        
// If CACHE ENABLED
        
if ($this->cache_dir != '') {
            
$cache_file $this->cache_dir '/rsscache_' md5($rss_url);
            
$timedif = @(time() - filemtime($cache_file));
            if (
$timedif $this->cache_time) {
                
// cached file is fresh enough, return cached array
                
$result unserialize(join(''file($cache_file)));
                
// set 'cached' to 1 only if cached file is correct
                
if ($result$result['cached'] = 1;
            } else {
                
// cached file is too old, create new
                
$result $this->Parse($rss_url);
                
$serialized serialize($result);
                if (
$f = @fopen($cache_file'w')) {
                    
fwrite ($f$serializedstrlen($serialized));
                    
fclose($f);
                }
                if (
$result$result['cached'] = 0;
            }
        }
        
// If CACHE DISABLED >> load and parse the file directly
        
else {
            
$result $this->Parse($rss_url);
            if (
$result$result['cached'] = 0;
        }
        
// return result
        
return $result;
    }
    
    
// -------------------------------------------------------------------
    // Modification of preg_match(); return trimed field with index 1
    // from 'classic' preg_match() array output
    // -------------------------------------------------------------------
    
function my_preg_match ($pattern$subject) {
        
// start regullar expression
        
preg_match($pattern$subject$out);

        
// if there is some result... process it and return it
        
if(isset($out[1])) {
            
// Process CDATA (if present)
            
if ($this->CDATA == 'content') { // Get CDATA content (without CDATA tag)
                
$out[1] = strtr($out[1], array('<![CDATA['=>''']]>'=>''));
            } elseif (
$this->CDATA == 'strip') { // Strip CDATA
                
$out[1] = strtr($out[1], array('<![CDATA['=>''']]>'=>''));
            }

            
// If code page is set convert character encoding to required
            
if ($this->cp != '')
                
//$out[1] = $this->MyConvertEncoding($this->rsscp, $this->cp, $out[1]);
                
$out[1] = iconv($this->rsscp$this->cp.'//TRANSLIT'$out[1]);
            
// Return result
            
return trim($out[1]);
        } else {
        
// if there is NO result, return empty string
            
return '';
        }
    }

    
// -------------------------------------------------------------------
    // Replace HTML entities &something; by real characters
    // -------------------------------------------------------------------
    
function unhtmlentities ($string) {
        
// Get HTML entities table
        
$trans_tbl get_html_translation_table (HTML_ENTITIESENT_QUOTES);
        
// Flip keys<==>values
        
$trans_tbl array_flip ($trans_tbl);
        
// Add support for &apos; entity (missing in HTML_ENTITIES)
        
$trans_tbl += array('&apos;' => "'");
        
// Replace entities by values
        
return strtr ($string$trans_tbl);
    }

    
// -------------------------------------------------------------------
    // Parse() is private method used by Get() to load and parse RSS file.
    // Don't use Parse() in your scripts - use Get($rss_file) instead.
    // -------------------------------------------------------------------
    
function Parse ($rss_url) {
        
// Open and load RSS file
        
if ($f = @fopen($rss_url'r')) {
            
$rss_content '';
            while (!
feof($f)) {
                
$rss_content .= fgets($f4096);
            }
            
fclose($f);

            
// Parse document encoding
            
$result['encoding'] = $this->my_preg_match("'encoding=[\'\"](.*?)[\'\"]'si"$rss_content);
            
// if document codepage is specified, use it
            
if ($result['encoding'] != '')
                { 
$this->rsscp $result['encoding']; } // This is used in my_preg_match()
            // otherwise use the default codepage
            
else
                { 
$this->rsscp $this->default_cp; } // This is used in my_preg_match()

            // Parse CHANNEL info
            
preg_match("'<channel.*?>(.*?)</channel>'si"$rss_content$out_channel);
            foreach(
$this->channeltags as $channeltag)
            {
                
$temp $this->my_preg_match("'<$channeltag.*?>(.*?)</$channeltag>'si"$out_channel[1]);
                if (
$temp != ''$result[$channeltag] = $temp// Set only if not empty
            
}
            
// If date_format is specified and lastBuildDate is valid
            
if ($this->date_format != '' && ($timestamp strtotime($result['lastBuildDate'])) !==-1) {
                        
// convert lastBuildDate to specified date format
                        
$result['lastBuildDate'] = date($this->date_format$timestamp);
            }

            
// Parse TEXTINPUT info
            
preg_match("'<textinput(|[^>]*[^/])>(.*?)</textinput>'si"$rss_content$out_textinfo);
                
// This a little strange regexp means:
                // Look for tag <textinput> with or without any attributes, but skip truncated version <textinput /> (it's not beggining tag)
            
if (isset($out_textinfo[2])) {
                foreach(
$this->textinputtags as $textinputtag) {
                    
$temp $this->my_preg_match("'<$textinputtag.*?>(.*?)</$textinputtag>'si"$out_textinfo[2]);
                    if (
$temp != ''$result['textinput_'.$textinputtag] = $temp// Set only if not empty
                
}
            }
            
// Parse IMAGE info
            
preg_match("'<image.*?>(.*?)</image>'si"$rss_content$out_imageinfo);
            if (isset(
$out_imageinfo[1])) {
                foreach(
$this->imagetags as $imagetag) {
                    
$temp $this->my_preg_match("'<$imagetag.*?>(.*?)</$imagetag>'si"$out_imageinfo[1]);
                    if (
$temp != ''$result['image_'.$imagetag] = $temp// Set only if not empty
                
}
            }
            
// Parse ITEMS
            
preg_match_all("'<item(| .*?)>(.*?)</item>'si"$rss_content$items);
            
$rss_items $items[2];
            
$i 0;
            
$result['items'] = array(); // create array even if there are no items
            
foreach($rss_items as $rss_item) {
                
// If number of items is lower then limit: Parse one item
                
if ($i $this->items_limit || $this->items_limit == 0) {
                    foreach(
$this->itemtags as $itemtag) {
                        
$temp $this->my_preg_match("'<$itemtag.*?>(.*?)</$itemtag>'si"$rss_item);
                        if (
$temp != ''$result['items'][$i][$itemtag] = $temp// Set only if not empty
                    
}
                    
// Strip HTML tags and other bullshit from DESCRIPTION
                    
if ($this->stripHTML && $result['items'][$i]['description'])
                        
$result['items'][$i]['description'] = strip_tags($this->unhtmlentities(strip_tags($result['items'][$i]['description'])));
                    
// Strip HTML tags and other bullshit from TITLE
                    
if ($this->stripHTML && $result['items'][$i]['title'])
                        
$result['items'][$i]['title'] = strip_tags($this->unhtmlentities(strip_tags($result['items'][$i]['title'])));
                    
// If date_format is specified and pubDate is valid
                    
if ($this->date_format != '' && ($timestamp strtotime($result['items'][$i]['pubDate'])) !==-1) {
                        
// convert pubDate to specified date format
                        
$result['items'][$i]['pubDate'] = date($this->date_format$timestamp);
                    }
                    
// Item counter
                    
$i++;
                }
            }

            
$result['items_count'] = $i;
            return 
$result;
        }
        else 
// Error in opening return False
        
{
            return 
False;
        }
    }
}


?>
Gruß,
NixxusMinimax
Zitieren
#4
Wenn ich das richtig sehe ist der Code schon enthalten und die Betreffe werden auf 60 Zeichen gekürzt. Bei Bedarf kannst du die Zahlen ändern:
PHP-Code:
$item_data['title'] = substr($item_data['description'], 060);
if(
strlen($item_data['description']) > 60)
{
    
$item_data['title'] .= '...';


Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Zitieren
#5
Oops, sollte mal ab und zu meine Brille aufsetzen.

Danke dir!
Gruß,
NixxusMinimax
Zitieren
#6
Hallo,

heute kam die nächste Nachricht mit Überlänge. Problem besteht trotz Änderung weiterhin, soll heißen: der Betreff wir nicht auf die eingestellte Anzahl Zeichen gekürzt. Hab ich evtl. noch was übersehen?
Gruß,
NixxusMinimax
Zitieren
#7
Suche nach:
PHP-Code:
if(empty($item_data['title']))
{
    
$item_data['title'] = substr($item_data['description'], 060);
    if(
strlen($item_data['description']) > 60)
    {
        
$item_data['title'] .= '...';
    }

Ersetzen durch:
PHP-Code:
if(empty($item_data['title']))
{
    
$item_data['title'] = substr($item_data['description'], 060);
    if(
strlen($item_data['description']) > 60)
    {
        
$item_data['title'] .= '...';
    }
} else {
    if(
strlen($item_data['title']) > 60)
    {
        
$item_data['title'] = substr($item_data['title'], 060).'...';
    }


Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Zitieren
#8
sehr schön, das Beschneiden des Betreffs funktioniert jetzt schonmal. Ich hoffe dass es auch daran lag.
Ich setzte das Thema mal vorsichtig auf Erledigt.

Besten Dank & Gruß
Gruß,
NixxusMinimax
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Plugin mehrfach Anzeige Virginia 1 1.526 28.06.2017, 00:30
Letzter Beitrag: hkkp
Question PlugIn "Ads after first post" soll wie ein ganz normales Posting erscheinen move 16 7.499 28.03.2014, 13:10
Letzter Beitrag: taccodip
  Gruppen mehrfach? iPlayers 5 1.942 07.08.2013, 16:30
Letzter Beitrag: Devidra
  rss2post! Namenloser ´ 14 3.735 01.11.2009, 17:19
Letzter Beitrag: StefanT
  "Antworten" Button in manchen Foren nicht erscheinen lassen Plexxart 15 5.646 11.03.2009, 19:03
Letzter Beitrag: Plexxart