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
Gekürzte Beitrage nur in Startpost
#1
Moin zusammen,
ich habe mir damals das Plugin von MrBrechreiz für gekürzte Beiträge installiert, da es noch ein paar Bugs hatte und dann nicht komplett fertig wurde habe ich es nicht für allgemeine Foren benutzt. Ich möchte es nun aber doch in 2 meiner Foren nutzen, dabei soll das Plugin aber nur den ersten Beitrag kürzen. 
Gibt es da eine Möglichkeit das in der Plugin php zu definieren? Hier der Code der php jemand mit geschulten php Kenntnissen blickt da wahrscheinlich schneller durch als ich Smile



PHP-Code:
<?php

if(!defined("IN_MYBB"))
{
   die("Direct initialization of this file is not allowed.");
}

function 
shortmessage_info()
{
global 
$db$lang;

shortmessage_lang();
   return array(
       "name" => $db->escape_string($lang->shortmessage),
       "description" => $db->escape_string($lang->shortmessage_description),
"website" => "http://freemybb.de",
       "author" => "MrBrechreiz",
       "authorwebsite" => "http://freemybb.de",
       "version" => "1.0",
       "compatibility" => "18*"
   );
}

function 
shortmessage_lang()
{
global 
$lang;

$lang->load('shortmessage',false,true);
$l['shortmessage'] = "Gekürzte Beiträge";
$l['shortmessage_description'] = "Hiermit werden Beiträge für die Gäste gekürzt.";
$l['plugin_status'] = "Plugin Status";
$l['plugin_status_desc'] = "Plugin ein, oder ausschalten ?";
$l['lenght'] = "Zeichenlänge";
$l['lenght_desc'] = "Trage die Anzahl der sichtbaren Zeichen ein, die ein Gast sehen darf.";
$l['forum'] = "Foren ausschließen";
$l['forum_desc'] = "In welchem Forum soll die maximale Zeichenlänge für Gäste nicht beschränkt sein ? Trage die Foren-ID ein. Mehrere mit einem Komma (,) trennen.";

foreach(
$l as $key=>$val)
{
if(!
$lang->$key)
{
$lang->$key=$val;
}
}
}

function 
shortmessage_activate()
{
   global $db$mybb$lang;

shortmessage_lang();

   $setting_group = array(
       'name' => 'shortmessage',
       'title' => $db->escape_string($lang->shortmessage),
       'description' => $db->escape_string($lang->shortmessage_description),
       'disporder' => 102,
       'isdefault' => 0
   
);
   $gid $db->insert_query("settinggroups"$setting_group);

$setting_array = array(
"name" => "shortmessage_status",
"title" => $db->escape_string($lang->plugin_status),
"description" => $db->escape_string($lang->plugin_status_desc),
"optionscode" => "onoff",
"value" => "1",
"disporder" => "1",
"gid" => (int)$gid
);
$db->insert_query('settings'$setting_array);

   $setting_array = array(
"name" => "shortmessage_lenght",
       "title" => $db->escape_string($lang->lenght),
       "description" => $db->escape_string($lang->lenght_desc),
       "optionscode" => "text",
       "value" => "300",
       "disporder" => "2",
"gid" => (int)$gid
   
);
$db->insert_query('settings'$setting_array);

$setting_array = array(
"name" => "shortmessage_forum",
       "title" => $db->escape_string($lang->forum),
       "description" => $db->escape_string($lang->forum_desc),
       "optionscode" => "forumselect",
       "value" => "",
       "disporder" => "2",
"gid" => (int)$gid
   
);
$db->insert_query('settings'$setting_array);

   rebuild_settings();
}

function 
shortmessage_deactivate()
{
   global $db;

$db->query("DELETE FROM ".TABLE_PREFIX."settinggroups WHERE name='shortmessage'");
$db->query("DELETE FROM ".TABLE_PREFIX."settings WHERE name='shortmessage_status'");
$db->query("DELETE FROM ".TABLE_PREFIX."settings WHERE name='shortmessage_lenght'");
$db->query("DELETE FROM ".TABLE_PREFIX."settings WHERE name='shortmessage_forum'");

rebuild_settings();
}

$plugins->add_hook("postbit""shortmessage_run");
function 
shortmessage_run(&$post)
{
global 
$mybb$fid$lang$parser$message;

$lang->load('index');

if(
$mybb->settings['shortmessage_status'] != && $mybb->settings['shortmessage_forum'] != -&& $mybb->user['uid'] == 0)
{
if(!empty(
$mybb->settings['shortmessage_forum']))
{
require_once 
MYBB_ROOT.'inc/class_parser.php';
$parser = new postParser;

$parser_options = array(
"allow_html" => 1,
"allow_mycode" => 1,
"allow_smilies" => 1,
"allow_imgcode" => 1,
"allow_videocode" => 1,
"filter_badwords" => 1
);

if(!
in_array($fidexplode(','$mybb->settings['shortmessage_forum'])) && $mybb->settings['shortmessage_lenght'] < strlen(trim($post['message'])))
{
$post['message'] = substr(trim($post['message']), 0$mybb->settings['shortmessage_lenght'])."..." " <br /><br />[b]...mehr lesen ? Dann bitte <a href=\"{$mybb->settings['bburl']}/member.php?action=login\" class=\"login\">{$lang->welcome_login}</a>  oder <a href=\"{$mybb->settings['bburl']}/member.php?action=register\" class=\"register\">{$lang->welcome_register}</a> ! [/b]";

if(!empty(
$parser_options['allow_mycode']) && $mybb->settings['allowcodemycode'] == 1)
{
// This code is reserved and could break codes
$message str_replace("<mybb-code>\n""<mybb_code>\n"$message);

preg_match_all("#\[(code|php)\](.*?)\[/\\1\](\r\n?|\n?)#si"$message$code_matchesPREG_SET_ORDER);
$message preg_replace("#\[(code|php)\](.*?)\[/\\1\](\r\n?|\n?)#si""<mybb-code>\n"$message);
}

if(empty(
$parser_options['allow_html']))
{
$message $parser->parse_html($message);
$message str_replace("&lt;mybb-code&gt;\n""<mybb-code>\n"$message);
}
else
{
// Replace base, meta,script and style tags in our post - these are > dangerous <
$message preg_replace('#<(/?)(base|meta|script|style)([^>]*)>#i''&lt;$1$2$3&gt;'$message);
$message $parser->fix_javascript($message);

$find = array("<br />\n""<br>\n");
$replace = array("\n""\n");
$message str_replace($find$replace$message);
}

$post['message'] = $parser->parse_message($post['message'], $parser_options);
}
return 
$post;
}
}
}
?>
Zitieren
#2
hm... vielleicht funktioniert sowas? 

Zeile 113 (in deinem geposteten Script) ändern in

PHP-Code:
global $mybb$fid$lang$parser$message$thread

Zeile 133 ändern in

PHP-Code:
if (!in_array($fidexplode(','$mybb->settings['shortmessage_forum'])) && $mybb->settings['shortmessage_lenght'] < strlen(trim($post['message'])) && $post['pid'] == $thread['firstpost']) { 

ist jetzt ausm Kopf und nicht getestet, könnte aber klappen
Zitieren
#3
(19.05.2019, 15:30)itsmeJAY schrieb: hm... vielleicht funktioniert sowas? 

Zeile 113 (in deinem geposteten Script) ändern in

PHP-Code:
global $mybb$fid$lang$parser$message$thread

Zeile 133 ändern in

PHP-Code:
if (!in_array($fidexplode(','$mybb->settings['shortmessage_forum'])) && $mybb->settings['shortmessage_lenght'] < strlen(trim($post['message'])) && $post['pid'] == $thread['firstpost']) { 

ist jetzt ausm Kopf und nicht getestet, könnte aber klappen

Herzlichen dank scheint zu funktioniern  Cool
Zitieren
#4
dann hat mein Kopf mich doch nicht getäuscht 😁 Big Grin
Zitieren
#5
Sieht ganz so aus Big Grin
Zitieren
#6
(19.05.2019, 11:27)lenox schrieb: Moin zusammen,
ich habe mir damals das Plugin von MrBrechreiz für gekürzte Beiträge installiert, da es noch ein paar Bugs hatte und dann nicht komplett fertig wurde habe ich es nicht für allgemeine Foren benutzt.

Hi Lenox,

würdest Du mir bitte ein paar Infos zu diesem Plugin geben. Das Plugin hört sich für mich interessant an.
Was heißt in dem Falle "Bugs" oder "nicht komplett fertig"?

Danke vorab!
Zitieren
#7
Hi Schnapsnase,
die Bugs waren unter anderem https://www.mybb.de/forum/thread-35098-p...#pid231667
ehrlich gesagt weiß ich gar nicht mehr welcher Bug noch vorhanden war.

Ich nutze das Plugin nur in 4 Foren im Startpost und habe da keine Probleme mehr bemerkt
hier ist die aktuellste Version von bv64.

Wenn du noch was zum Plugin wissen willst gib bescheid
Zitieren
#8
Hi Lenox,

danke erstmal. Ich hab`s getestet und es tut erstmal, was es soll.
Ein paar Ecken und Kanten hat die Version von bv64 aber trotzdem.
Mal sehen, ob ich da noch ein paar Kleinigkeiten bereinigt bekomme. Wink
Zitieren