Modul: Forum

bipi
Beiträge: 130
Registriert: So 12. Jun 2005, 07:23
Kontaktdaten:

Re: Modul: Forum

Beitrag von bipi » Sa 3. Jul 2010, 10:55

Wie könnte ich es noch schreiben?

bipi
Beiträge: 130
Registriert: So 12. Jun 2005, 07:23
Kontaktdaten:

Re: Modul: Forum

Beitrag von bipi » Mi 7. Jul 2010, 22:17

Niemand eine Idee?

bipi
Beiträge: 130
Registriert: So 12. Jun 2005, 07:23
Kontaktdaten:

Re: Modul: Forum

Beitrag von bipi » Fr 3. Sep 2010, 19:17

Ich verwende das Forum Modul und es läuft super soweit, ich möchte es gerne ein wenig erweitern und zwar dass alle FE-Users eine Email bekommen wenn jemand einen Thread schreibt.
ich poste mal den Code und hoffe es kann mir jemand dabei helfen.

Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname  :      Forum Anzeige
* Version    :      0.9
* Created    :      17.09.2009
* Author     :      Andreas Dinkelacker
* Copyright  :      Andreas Dinkelacker
************************************************/

$username=$auth->auth['uname'];
$userid=$auth->auth['uid'];
$settings=mysql_fetch_assoc(mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_forum_settings"));
if ($settings[allow_guest_post]=="true" || $username!="nobody" || $userid!="nobody") $allowPost="true";
$catSitenav=$settings[cat_sitenav];
$threadSitenav=$settings[thread_sitenav];
$postSitenav=$settings[post_sitenav];

echo '<script language="javascript" type="text/javascript" src="'.$cfg['path']['wysiwyg_html'].'jscripts/tiny_mce/tiny_mce.js"></script>
<link rel="stylesheet" href="css/forum.css" type="text/css" media="all" />

<script language="javascript" type="text/javascript">
    tinyMCE.init({
    mode : "exact",
    elements: "post_message",
    language : "de",
    width : "'.$settings[tinymce_width].'",
    height : "'.$settings[tinymce_height].'",
    theme : "advanced",
    force_br_newlines : "true",
    forced_root_block : "",
    force_p_newlines : "false",
    plugins : "safari,table,save,advhr,advimage,advlink,pagebreak,style,layer,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,visualchars,nonbreaking,xhtmlxtras,template,inlinepopups",
    theme_advanced_buttons1 : "'.$settings[tinymce1].'",
    theme_advanced_buttons2 : "'.$settings[tinymce2].'",
    theme_advanced_buttons3 : "",
    theme_advanced_toolbar_align : "left",
    theme_advanced_toolbar_location : "top",
    valid_elements : "*[*]",
    extended_valid_elements : "*[*]",
    content_css : "css/forum.css",
    verify_css_classes : "false"
    });
</script>';

// Check if mod_rewrite may be active
if (substr_count($_SERVER[REQUEST_URI],"front_content.php")==0) {
    $modRewrite=1;
    $modRewriteFiller="?";
    $phpSelf=str_replace("?".$_SERVER[QUERY_STRING],"",$_SERVER[REQUEST_URI]);
} else {
    $modRewrite=0;
    $modRewriteFiller="&";
    $idcat=strip_tags($_GET[idcat]);
    $idart=strip_tags($_GET[idart]);
    $idcatart=strip_tags($_GET[idcatart]);
    if ($idcat!="" && $idcat!=0) {
        $artCat='idcat='.$idcat;
    } elseif ($idart!="" && $idart!=0) {
        $artCat='idart='.$idart;
    } elseif ($idcatart!="" && $idcatart!=0) {
        $artCat='idcatart='.$idcatart;
    }
    $phpSelf=$_SERVER[PHP_SELF].'?'.$artCat;
}

if (isset($_POST['new_thread'])) {
    $forum_id=strip_tags($_POST[forum_id]);
    // Neuen Thread schreiben
    echo '<form name=post" action="" method="post">';
    echo '<table cellspacing="0" cellpadding="0" class="forum-catTable" style="width;:'.$settings[forum_width].'px;">
    <tr>
    <td colspan="2" class="forum-header"><b>'.mi18n("Neuen Thread verfassen").'</b></td>
    </tr>
    <tr>
    <td width="75">Titel</td>
    <td><input type="text" name="post_subject" maxlength="255" style="width:200px;" /></td>
    </tr>
    <tr>
    <td class="forum-header" valign="top">'.mi18n("Text").'</td>
    <td class="forum-header"><textarea style="word-break:break-all;" rows="20" cols="45" name="post_message"></textarea></td>
    </tr>';
    $modArr=mysql_fetch_assoc(mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_forum_forums WHERE forum_id='".$forum_id."'"));
    $treffer_mod = substr_count($modArr['forum_mods'], $userid);
    if (substr_count($modArr['forum_mods'], $userid)!=0) {
        $modIDs=$userid;
    }
    if (substr_count($settings['forum_admins'], $userid)!=0) {
        $adminIDs=$userid;
    }
    if ($modIDs==$userid || $adminIDs==$userid) {
        echo '<tr>
        <td class="forum-header">&nbsp;</td>
        <td class="forum-header"><input type="checkbox" value="1" name="sticky" />&nbsp;'.mi18n("Thread pinnen").'</td>
        </tr>';
            echo '<tr>
            <td class="forum-header">&nbsp;</td>
            <td class="forum-header"><input type="checkbox" value="true" name="locked" />&nbsp;'.mi18n("Thread sperren").'</td>
            </tr>';
    }
    echo '<tr>
    <td colspan="2" align="center"><input type="hidden" value="'.$forum_id.'" name="forum_id" /><input type="submit" value="'.mi18n("Speichern").'" class="forum-button" name="save_new_thread" /></td>
    </tr>
    </table></form>';
} elseif (isset($_POST['save_new_thread'])) {
    if ($_POST['post_subject']=="") {
        echo mi18n("Der Thread hat keinen Betreff.");
        echo '<br/><a href="javascript:history.back()" target="_self">'.mi18n("zur&uuml;ck").'</a>';
    } elseif ($_POST['post_message']=="") {
        echo mi18n("Der Thread hat keinen Text.");
        echo '<br/><a href="javascript:history.back()" target="_self">'.mi18n("zur&uuml;ck").'</a>';
    } else {
        $forum_id=strip_tags($_POST[forum_id]);
        $post_subject=$_POST['post_subject'];
        $post_text=str_replace("<a href","<a target=\"_blank\" href",$_POST['post_message']);
        $post_author=$userid;
        $post_time=date('Y-m-d H:i:s');
        $isSticky=strip_tags($_POST[sticky]);
        if ($isSticky!="1") $isSticky="0";
        $isLocked=strip_tags($_POST[locked]);
        if ($isLocked!="true") $isLocked="false";

        $qry=mysql_query("INSERT INTO ".$cfg['sql']['sqlprefix']."_forum_threads VALUES ('', '".$forum_id."', '0', '".$isLocked."', '".$isSticky."', '', '', '".$post_time."')");
        $thread_id=mysql_insert_id();

        $qry=mysql_query("INSERT INTO ".$cfg['sql']['sqlprefix']."_forum_posts VALUES ('', '".$thread_id."', '".$_POST['forum_id']."', '".$post_subject."', '".$post_text."', '".$post_author."', '".$post_time."', '', '', '')");

        $post_id=mysql_insert_id();

        $qry=mysql_query("UPDATE ".$cfg['sql']['sqlprefix']."_forum_threads SET thread_firstpost='".$post_id."' WHERE thread_id='".$thread_id."'");

        header('Location: '.$phpSelf.$modRewriteFiller.'thread_id='.$thread_id);
    }
} elseif (isset($_POST['new_post']) || isset($_POST['quote_post'])) {
    $post_id=strip_tags($_POST[post_id]);
    // Post-Antwort schreiben
    echo '<form name=post" action="" method="post">';
    echo '<table cellspacing="0" cellpadding="0" style="width:'.$settings[forum_width].'px;">
    <tr>
    <td class="forum-header" colspan="2"><b>'.mi18n("Post-Antwort schreiben").'</b></td>
    </tr>
    <tr>
    <td width="75">'.mi18n("Titel").'</td>
    <td><input type="text" name="post_subject" value="" maxlength="255" style="width:200px;" /></td>
    </tr>
    <tr><td valign="top" class="forum-header">'.mi18n("Text").'</td>';
    // quote post?
    if (isset($_POST[quote_post])) {
        $arrGetThreadId=mysql_fetch_assoc(mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_forum_posts WHERE post_id='".$post_id."'"));
        $thread_id=$arrGetThreadId[thread_id];
        $quoteArr=mysql_fetch_assoc(mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_forum_posts WHERE post_id='".$post_id."'"));
        $postMessage=$quoteArr[post_message];
        $postMessage=str_replace('class="forum-quote4"','class="forum-quote5"',$postMessage);
        $postMessage=str_replace('class="forum-quote3"','class="forum-quote4"',$postMessage);
        $postMessage=str_replace('class="forum-quote2"','class="forum-quote3"',$postMessage);
        $postMessage=str_replace('class="forum-quote1"','class="forum-quote2"',$postMessage);
        $quoteAuthorArr=mysql_fetch_assoc(mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_frontendusers WHERE idfrontenduser='".$quoteArr[post_author]."'"));
        $quoteAuthor=$quoteAuthorArr[username];
        $quoteText='<br/><center><div class="forum-quote1"><b>'.mi18n("Zitat von").'&nbsp;'.$quoteAuthor.'&nbsp;'.mi18n("vom").'&nbsp;'.date($settings[dateformat],strtotime($quoteArr[post_time])).':</b><br/>'.$postMessage.'</div></center><br/>';
        echo '<td class="forum-header">'.$quoteText.'<input type="hidden" value="'.urlencode($quoteText).'" name="quoteText" /></td></tr>';
        echo '<tr><td class="forum-header">&nbsp;</td>';
    }
    echo '<td><textarea style="word-break:break-all;" rows="20" cols="45" name="post_message"></textarea></td>
    </tr>
    <tr>
    <td colspan="2" align="center"><input type="hidden" value="'.$thread_id.'" name="thread_id" /><input type="submit" value="'.mi18n("Speichern").'" class="forum-button" name="save_new_post" /></td>
    </tr>
    </table></form>';
} elseif (isset($_POST['save_new_post'])) {
    if ($_POST['post_message']=="") {
        echo mi18n("Bitte einen Text eingeben.");
        echo '<br/><a href="javascript:history.back()" target="_self">'.mi18n("zur&uuml;ck").'</a>';
    } else {
        $thread_id=strip_tags($_POST[thread_id]);
        $arr1=mysql_fetch_assoc(mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_forum_threads WHERE thread_id='".$thread_id."'"));
        $postArr=mysql_fetch_assoc(mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_forum_posts WHERE post_id='".$arr1[thread_firstpost]."'"));
        if ($post_subject=="") {
            $post_subject=mi18n("RE:").'&nbsp;'.$postArr[post_subject];
        } else {
            $post_subject=$_POST['post_subject'];
        }
        $post_message=str_replace("target=\"_self\"","target=\"_blank\"",str_replace("<a href","<a target=\"_blank\" href",$_POST['post_message']));
        if ($_POST[quoteText]!="") $post_message=urldecode($_POST[quoteText]).$post_message;
        $post_author=$userid;
        $post_time=date('Y-m-d H:i:s');

        $qry=mysql_query("INSERT INTO ".$cfg['sql']['sqlprefix']."_forum_posts VALUES ('', '$arr1[thread_id]', '$arr1[forum_id]', '$post_subject', '$post_message', '$post_author', '$post_time', '', '', '')");
        $post_id=mysql_insert_id();
        $qry=mysql_query("UPDATE ".$cfg['sql']['sqlprefix']."_forum_threads SET thread_lastpost_time='".$post_time."' WHERE thread_id='".$arr1[thread_id]."'");
        //echo mi18n("Der Post wurde gespeichert.");
        header("Location: ".$phpSelf.$modRewriteFiller."thread_id=".$thread_id."&post_id=".$post_id."&show=last#".$post_id);
    }
} elseif (isset($_POST['edit_post'])) {
    // Post editieren
    $post_id=strip_tags($_POST[post_id]);
    $arr1 = mysql_fetch_assoc(mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_forum_posts WHERE post_id='".$post_id."'"));
    echo '<form name=post" action="" method="post">';
    echo '<table cellspacing="0" cellpadding="0" class="forum-catTable" style="width:'.$settings[forum_width].'px;">
    <tr>
    <td class="forum-header" colspan="2"><b>'.mi18n("Post bearbeiten").'</b></td>
    </tr>
    <tr>
    <td width="75">'.mi18n("Titel").'</td>
    <td><input type="text" name="post_subject" value="'.$arr1[post_subject].'" maxlength="255" style="width:200px;" /></td>
    </tr>
    <tr>
    <td class="forum-header" valign="top">'.mi18n("Text").'</td>
    <td class="forum-header"><textarea name="post_message" style="word-break:break-all;" rows="20" cols="45">'.$arr1[post_message].'</textarea></td>
    </tr>';
    $row1=mysql_num_rows(mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_forum_threads WHERE thread_firstpost='".$post_id."'"));
    if ($row1==0 && $settings[delete_post]=="true") {
        echo '<tr>
        <td class="forum-header">&nbsp;</td>
        <td class="forum-header"><input type="checkbox" value="1" name="del_post" />&nbsp;'.mi18n("Post l&ouml;schen").'</td>
        </tr>';
    }
   // if ($row0==0) {
   //    if ($row0==0 && $settings[delete_post]=="true") {
     //   echo '<tr>
       // <td class="forum-header">&nbsp;</td>
    //    <td class="forum-header"><input type="checkbox" value="1" name="del_threads" />&nbsp;'.mi18n("Ganzen Thread l&ouml;schen").'</td>
    //    </tr>';
 //   }

    
    $rowThread=mysql_num_rows(mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_forum_threads WHERE thread_firstpost='".$arr1[post_id]."'"));
    if ($rowThread==1) {
        $modArr=mysql_fetch_assoc(mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_forum_forums WHERE forum_id='".$arr1[forum_id]."'"));
        $treffer_mod = substr_count($modArr['forum_mods'], $userid);
        if (substr_count($modArr['forum_mods'], $userid)!=0) {
            $modIDs=$userid;
        }
        if (substr_count($settings['forum_admins'], $userid)!=0) {
            $adminIDs=$userid;
        }
        $arrThread=mysql_fetch_assoc(mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_forum_threads WHERE thread_firstpost='".$arr1[post_id]."'"));
        if ($arrThread[thread_locked]=="true") $chkLocked=" checked";
        if ($arrThread[thread_sticky]=="1") $chkSticky=" checked";
        if ($modIDs==$userid || $adminIDs==$userid) {
            echo '<tr>
            <td class="forum-header">&nbsp;</td>
            <td class="forum-header"><input type="checkbox" value="1" name="sticky"'.$chkSticky.' />&nbsp;'.mi18n("Thread pinnen").'</td>
            </tr>';
            echo '<tr>
            <td class="forum-header">&nbsp;</td>
            <td class="forum-header"><input type="checkbox" value="true" name="locked"'.$chkLocked.' />&nbsp;'.mi18n("Thread sperren").'</td>
            </tr>';
        }
    }
    echo '<tr>
    <td colspan="2" align="center"><input type="hidden" value="'.$_POST[post_id].'" name="post_id" /><input type="submit" value="'.mi18n("Speichern").'" class="forum-button" name="save_edit_post" /></td>
    </tr>
    </table></form>';
} elseif (isset($_POST['save_edit_post'])) {
    if ($_POST['del_post']==1) {
        $qry=mysql_query("DELETE FROM ".$cfg['sql']['sqlprefix']."_forum_posts WHERE post_id='$_POST[post_id]'");
        echo mi18n("Der Post wurde erfolgreich gel&ouml;scht.").'<br/><br/><a href="'.$phpSelf.'" target="_self">'.mi18n("zum &Uuml;bersicht").'</a>';
    } else if ($_POST['del_threads']==1) {
      $qry=mysql_query("DELETE FROM ".$cfg['sql']['sqlprefix']."_forum_threads WHERE thread_id='".$_POST[thread_id]."'");
 //  $qry=mysql_query("DELETE FROM ".$cfg['sql']['sqlprefix']."_forum_threads WHERE thread_id='$_POST[thread_id]'");
         
        echo mi18n("Der Beitrag wurde erfolgreich gel&ouml;scht.").'<br/><br/><a href="'.$phpSelf.'" target="_self">'.mi18n("zum &Uuml;bersicht").'</a>';
    }  else {
        $postId=$_POST['post_id'];
        $isSticky="0";
        if (strip_tags($_POST[sticky])=="1") $isSticky="1";
        $isLocked="false";
        if (strip_tags($_POST[locked])=="true") $isLocked="true";
        $qry1=mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_forum_threads WHERE thread_firstpost='".$post_id."'");
        $qry2=mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_forum_posts WHERE post_id='".$post_id."'");
        $arr22=mysql_fetch_assoc($qry2);
        $row1=mysql_num_rows($qry1);
        if ($_POST['post_subject']=="" && $row1==1) {
            echo mi18n("Dieser Post muss einen Betreff haben, da es der erste in einem Thread ist.");
        } elseif ($_POST['post_message']=="") {
            echo mi18n("Der Post hat keinen Text.");
            echo '<br/><a href="javascript:history.back()" target="_self">'.mi18n("zur&uuml;ck").'</a>';
        } else {
            $postArr=mysql_fetch_assoc(mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_forum_posts WHERE post_id='".$post_id."'"));
            if ($post_subject=="") {
                $post_subject=mi18n("RE:").'&nbsp;'.$postArr[post_subject];
            } else {
                $post_subject=$_POST['post_subject'];
            }
            $post_text=str_replace("<a href","<a target=\"_blank\" href",$_POST['post_message']);
            $edit_user=$userid;

            $qry=mysql_query("UPDATE ".$cfg['sql']['sqlprefix']."_forum_posts SET post_subject='$post_subject', post_message='$post_text', post_edittime='".date('Y-m-d H:i:s')."', post_edituser='$edit_user' WHERE post_id='".$postId."'");
            $arr1=mysql_fetch_assoc($qry1);
            if ($arr1[thread_firstpost]==$post_id) $qry=mysql_query("UPDATE ".$cfg['sql']['sqlprefix']."_forum_threads SET thread_sticky='".$isSticky."', thread_locked='".$isLocked."' WHERE thread_id='".$postArr[thread_id]."'");
            header('Location: '.$phpSelf.$modRewriteFiller.'thread_id='.$arr22[thread_id]);
        }
    }
} elseif (isset($_POST['open_thread']) || ($_GET['post_id']!="" || $_GET['thread_id']!="")) {
    if ($_GET['post_id']!="" && $_GET['post_id']!="0") {
        $post_id=addslashes($_GET[post_id]);
        $arr=mysql_fetch_assoc(mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_forum_posts WHERE post_id='$post_id'"));
        $thread_id=$arr[thread_id];
    } elseif ($_GET['thread_id']!="" && $_GET['thread_id']!=0) {
        $thread_id=addslashes($_GET['thread_id']);
    } else {
        $thread_id=$_POST['thread_id'];
    }
    // Posts im Thread anzeigen
    if (!$show || !$_GET[show]) $show=0;

    $rowsNavi=mysql_num_rows(mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_forum_posts WHERE thread_id='".$thread_id."' ORDER BY post_time"));
    if ($postSitenav==0) $postSitenav=$rowsNavi;
    if (strip_tags($_GET[show])=="last") $show=(ceil($rowsNavi/$postSitenav)-1)*$postSitenav;
    
    if ($rowsNavi>$postSitenav) {
        $show2 = ceil($rowsNavi/$postSitenav);
        $show2 = "&show=".(($show2-1)*$postSitenav);
    } else {
        $show2 = "";
    }

    $qry1 = mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_forum_posts WHERE thread_id='".$thread_id."' ORDER BY post_time LIMIT ".$show.",".$postSitenav);

    $arr11 = mysql_fetch_assoc(mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_forum_posts WHERE thread_id='".$thread_id."'"));
    $arr12 = mysql_fetch_assoc(mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_forum_forums WHERE forum_id='".$arr11['forum_id']."'"));

    $arr13=mysql_fetch_assoc(mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_forum_threads WHERE thread_id='".$thread_id."'"));
    $arr14=mysql_fetch_assoc(mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_forum_posts WHERE post_id='".$arr13['thread_firstpost']."'"));

    $modpool=$arr12['forum_mods'];;
    $treffer_mod = substr_count($modpool, $userid);
    if ($treffer_mod!=0) $modIDs=$userid;

    echo '<table cellspacing="0" cellpadding="0" class="forum-catTable" style="border:0px;width:'.$settings[forum_width].'px;">';
    echo '<tr><td colspan="2"><a href="'.$phpSelf.'">'.mi18n("&Uuml;bersicht").'</a> > <a href="'.$phpSelf.$modRewriteFiller.'forum_id='.$arr12[forum_id].'">'.$arr12[forum_name].'</a> > '.$arr14[post_subject].'</td>
    <td align="right" colspan="2"><br/>';
    echo makeNavi($show,$postSitenav,$rowsNavi,ceil($rowsNavi/$postSitenav),$phpSelf.$modRewriteFiller."thread_id=".$thread_id);
    echo '<br/><br/></td></tr>';
    echo '<tr><td colspan="4" align="right">';
    if ($allowPost=="true") echo '<form action="" method="post" margin="0"><input type="hidden" value="'.$thread_id.'" name="thread_id" /><input type="hidden" value="'.$arr12[forum_id].'" name="forum_id" />';
    if ($arr13[thread_locked]!="true") {
        echo '<input type="submit" name="new_post" class="forum-button" value="'.mi18n("Antworten").'" />';
    } else {
        echo '&nbsp;';
    }
    echo '<input type="submit" name="new_thread" class="forum-button" value="'.mi18n("Neuer Thread").'" /></form>';
    echo '</td></tr>';
    echo '</tr><tr><td colspan="4" style="height:3px;"></td></tr>';
    while ($arr1=mysql_fetch_assoc($qry1)) {
        $thisAuthorArr=mysql_fetch_assoc(mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_frontendusers WHERE idfrontenduser='".$arr1[post_author]."'"));
        $thisAuthor=$thisAuthorArr[username];
        echo '<tr>
        <td class="forum-header" width="10%"><a name="'.$arr1[post_id].'"></a>'.mi18n("Autor:").'<br/>'.$thisAuthor.'</td>
        <td class="forum-header" width="75%" style="padding-left:2px;"><b><a href="'.$phpSelf.$modRewriteFiller.'thread_id='.$arr1[thread_id].'&show='.$show.'#'.$arr1[post_id].'" target="_self">'.$arr1[post_subject].'</a></b><br/>'.date($settings[dateformat],strtotime($arr1[post_time])).'</td>
        <td class="forum-header" width="15%" colspan="2" align="right"><form margin="0" action="" method="post"><input type="hidden" value="'.$arr1[post_id].'" name="post_id" />';
        if (($userid==$arr1['post_author'] || $userid==$adminIDs || $userid==$modIDs) && $allowPost=="true") echo '<input type="submit" class="forum-button" name="edit_post" value="'.mi18n("editieren").'" />';
        if ($allowPost=="true") echo '<input type="submit" class="forum-button" name="quote_post" value="'.mi18n("zitieren").'" />';
        echo '</form></td>
        </tr>
        <tr>
        <td colspan="4" class="forum-postContent">'.nl2br($arr1[post_message]).'</td>';
        if ($arr1['post_edituser']!="" && $arr1['post_edittime']!=0) echo '<tr><td colspan="4" style="border:1px solid #eee;border-top:0px;" align="right"><small><i>'.mi18n("zuletzt editiert am").'&nbsp;'.date($settings[dateformat],strtotime($arr1[post_edittime])).'&nbsp;'.mi18n("von").'&nbsp;'.$arr1[post_edituser].'</i></small></td>';
        echo '</tr><tr><td colspan="4" style="height:3px;"></td></tr>';
    }
    echo '<tr><td colspan="4" align="right">';
    if ($allowPost=="true") echo '<form action="" method="post" margin="0"><input type="hidden" value="'.$thread_id.'" name="thread_id" /><input type="hidden" value="'.$arr12[forum_id].'" name="forum_id" />';
    if ($arr13[thread_locked]!="true") {
        echo '<input type="submit" name="new_post" class="forum-button" value="'.mi18n("Antworten").'" />';
    } else {
        echo '&nbsp;';
    }
    echo '<input type="submit" name="new_thread" class="forum-button" value="'.mi18n("Neuer Thread").'" /></form>';
    echo '</td></tr>
    <tr><td colspan="2"><a href="'.$phpSelf.'">'.mi18n("&Uuml;bersicht").'</a> > <a href="'.$phpSelf.$modRewriteFiller.'forum_id='.$arr12[forum_id].'">'.$arr12[forum_name].'</a> > '.$arr14[post_subject].'</td>
    <td colspan="2" align="right"><br/><br/>';
    echo makeNavi($show,$postSitenav,$rowsNavi,ceil($rowsNavi/$postSitenav),$phpSelf.$modRewriteFiller."thread_id=".$thread_id);
    echo '</td></tr>';
    echo '</table></form>';
} elseif (isset($_POST['open_forum']) || ($_GET['forum_id']!="" || $_GET['forum_id']!=0)) {
    // Threads im Forum anzeigen
    if ($_GET['forum_id']!="" && $_GET['forum_id']!=0) {
        $forum_id=strip_tags($_GET['forum_id']);
    } else {
        $forum_id=$_POST['forum_id'];
    }

    if (!$show || !$_GET[show]) $show=0;

    $rowsNavi=mysql_num_rows(mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_forum_threads WHERE forum_id='".$forum_id."' ORDER BY thread_lastpost_time DESC"));
    if ($threadSitenav==0) $threadSitenav=$rowsNavi;
    if (strip_tags($_GET[show])=="last") $show=(ceil($rowsNavi/$threadSitenav)-1)*$threadSitenav;
    
    if ($rowsNavi>$threadSitenav) {
        $show2 = ceil($rowsNavi/$threadSitenav);
        $show2 = "&show=".(($show2-1)*$threadSitenav);
    } else {
        $show2 = "";
    }

    $qry1=mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_forum_threads WHERE forum_id='".$forum_id."' ORDER BY thread_sticky DESC,thread_lastpost_time DESC LIMIT ".$show.",".$threadSitenav);
    $qryThreads=mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_forum_threads WHERE forum_id='".$forum_id."' ORDER BY thread_lastpost_time DESC");
    $arr12=mysql_fetch_assoc($qryThreads);
    $arr13=mysql_fetch_assoc(mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_forum_forums WHERE forum_id='".$forum_id."'"));
    echo '<table style="width:'.$settings[forum_width].'px;" cellspacing="0" cellpadding="0">';
    echo '<tr><td colspan="3"><a href="'.$phpSelf.'">'.mi18n("&Uuml;bersicht").'</a> > '.$arr13[forum_name].'</td>
    <td colspan="2" align="right"><br/>';
    echo makeNavi($show,$threadSitenav,$rowsNavi,ceil($rowsNavi/$threadSitenav),$phpSelf.$modRewriteFiller."forum_id=".$forum_id);
    echo '<br/><br/></td></tr>';
    echo '<tr><td colspan="5" align="right">';
    if ($allowPost=="true") { echo '<form action="" method="post" margin="0"><input type="hidden" value="'.$forum_id.'" name="forum_id" /><input type="submit" name="new_thread" class="forum-button" value="'.mi18n("Neuer Thread").'" /></form>'; } else { echo '&nbsp;'; }
    echo '</td></tr><tr><td style="height:3px">&nbsp;</tr>';
    echo '<tr>
        <td class="forum-table-header-1" width="50%" colspan="2">'.mi18n("Thread").'</td>
        <td class="forum-table-header-2" width="10%">'.mi18n("Posts").'</td>
        <td class="forum-table-header-3" width="15%">'.mi18n("erstellt von").'</td>
        <td class="forum-table-header-4" width="25%" align="center">'.mi18n("neuster Post").'</td>
    </tr>';
    $i=0;
    while ($arr1=mysql_fetch_assoc($qry1)) {
        $back="forum-threadLine1";
        if ($i%2) $back="forum-threadLine2";
        $posts=mysql_num_rows(mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_forum_posts WHERE thread_id='".$arr1[thread_id]."'"));
        $lastpost=mysql_fetch_assoc(mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_forum_posts WHERE thread_id='".$arr1[thread_id]."' ORDER BY post_id DESC LIMIT 1"));
        $arr11=mysql_fetch_assoc(mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_forum_threads WHERE thread_id='".$arr1['thread_id']."'"));
        $arr12=mysql_fetch_assoc(mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_forum_posts WHERE thread_id='".$arr1['thread_id']."' AND post_id='".$arr11['thread_firstpost']."'"));

        echo '<tr><td class="'.$back.'-1" width="20">';
            if ($arr1[thread_sticky]=="1") echo '<img style="padding-right:3px;" src="images/but_warn.gif" alt="!" title="sticky" />';
            if ($arr1[thread_sticky]=="0" && $arr1[thread_locked]=="false") echo '&nbsp;';
            echo '</td><td class="'.$back.'-2" width="60%">';
            if ($arr1[thread_locked]=="true") echo '<img style="padding-right:3px;" src="images/lock_closed.gif" alt="x" title="closed" />';
            echo '<a href="'.$phpSelf.$modRewriteFiller.'thread_id='.$arr1[thread_id].'" target="_self">'.$arr12[post_subject].'</a>
            </td>';
            echo '<td class="'.$back.'-2">'.$posts.'</td>';
            $thisAuthorArr=mysql_fetch_assoc(mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_frontendusers WHERE idfrontenduser='".$arr12[post_author]."'"));
            $thisAuthor=$thisAuthorArr[username];
            echo '<td class="'.$back.'-3">'.$thisAuthor.'</td>';
            $lastAuthorArr=mysql_fetch_assoc(mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_frontendusers WHERE idfrontenduser='".$lastpost[post_author]."'"));
            $lastAuthor=$lastAuthorArr[username];
            echo '<td class="'.$back.'-4" width="25%" align="right" valign="top">'.$lastAuthor.'&nbsp;<a href="'.$phpSelf.$modRewriteFiller.'thread_id='.$lastpost[thread_id].'&show=last#'.$lastpost[post_id].'"><img src="images/arrows.gif" border="0" alt="&raquo;"></a>&nbsp;<br/>'.date($settings[dateformat],strtotime($lastpost[post_time])).'</td>';
        echo '</tr>';
        $i++;
    }
    echo '<tr><td colspan="5" align="right">';
    if ($allowPost=="true") { echo '<form action="" method="post" margin="0"><input type="hidden" value="'.$forum_id.'" name="forum_id" /><input type="submit" name="new_thread" class="forum-button" value="'.mi18n("Neuer Thread").'" /></form>'; } else { echo '&nbsp;'; }
    echo '</td></tr><tr><td colspan="5" style="height:3px;"></td></tr>';
    echo '<tr><td colspan="3"><a href="'.$phpSelf.'">'.mi18n("&Uuml;bersicht").'</a> > '.$arr13[forum_name].'</td>
    <td colspan="2" align="right">';
    echo makeNavi($show,$threadSitenav,$rowsNavi,ceil($rowsNavi/$threadSitenav),$phpSelf.$modRewriteFiller."forum_id=".$forum_id);
    echo '</td></tr></table>';
} else {
    // Kategorien und Foren auflisten
    if (!$show || !$_GET[show]) $show=0;

    $rowsNavi=mysql_num_rows(mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_forum_cats"));
    if ($catSitenav==0) $catSitenav=$rowsNavi;
    if ($rowsNavi==0) {
        mi18n("Noch keine Kategorien und Foren angelegt.");
        die();
    }
    
    if (strip_tags($_GET[show])=="last") $show=(ceil($rowsNavi/$catSitenav)-1)*$catSitenav;
    
    if ($rowsNavi>$catSitenav) {
        $show2 = ceil($rowsNavi/$catSitenav);
        $show2 = "&show=".(($show2-1)*$catSitenav);
    } else {
        $show2 = "";
    }

    echo '<div style="text-align:right;width:'.$settings[forum_width].'px;">'.makeNavi($show,$catSitenav,$rowsNavi,ceil($rowsNavi/$catSitenav),$phpSelf.$modRewriteFiller).'</div><br/>';
    $qry=mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_forum_cats LIMIT ".$show.",".$catSitenav);
    while ($arr=mysql_fetch_assoc($qry)) {
        $accessIDs="";
        if ($arr['cat_access']!="") {
            $treffer_access = substr_count($arr['cat_access'], $userid);
            if ($treffer_access!=0) {
                $accessIDs=$userid;
            }

        } else {
            $accessIDs=$userid;
        }
        if ($accessIDs==$userid  || $adminIDs==$userid) {
            echo '<table class="forum-catTable" style="width:'.$settings[forum_width].'px;" cellspacing="0" cellpadding="0">';

            echo '<tr>
            <td colspan="4" class="forum-catHeader"><b>'.$arr[cat_name].'</b></td></tr>';
            $qry1 = mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_forum_forums WHERE cat_id='".$arr[cat_id]."' AND forum_status='1'");
            echo '<tr>
            <td class="forum-table-header" width="50%">'.mi18n("Forum").'</td>
            <td class="forum-table-header" width="10%" align="center">'.mi18n("Threads").'</td>
            <td class="forum-table-header" width="15%" align="center">'.mi18n("Posts").'</td>
            <td class="forum-table-header" width="25%" align="right">'.mi18n("neuster Post").'</td>
            </tr>';
            $i=0;
            while ($arr1=mysql_fetch_assoc($qry1)) {
                $forumAccessIDs="";
                $modIDs="";
                if ($arr1['forum_access']!="") {
                    $forum_access = substr_count($arr1['forum_access'], $userid);
                    if ($forum_access!=0) {
                        $forumAccessIDs=$userid;
                    }
                } else {
                    $forumAccessIDs=$userid;
                }

                $treffer_mod = substr_count($arr1['forum_mods'], $userid);
                if ($treffer_mod!=0) {
                    $modIDs=$userid;
                }
                if ($forumAccessIDs==$userid || $adminIDs==$userid || $modIDs==$userid) {
                    $back="forum-catLine1";
                    if ($i%2) $back="forum-catLine2";

                    $threads=mysql_num_rows(mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_forum_threads WHERE forum_id='$arr1[forum_id]'"));
                    $posts=mysql_num_rows(mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_forum_posts WHERE forum_id='$arr1[forum_id]'"));
                    $lastpost=mysql_fetch_assoc(mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_forum_posts WHERE forum_id='$arr1[forum_id]' ORDER BY post_id DESC LIMIT 1"));

                    $cut_val=strrpos($arr1[forum_mods], ', ');

                    echo '<tr>';
                    echo '<td class="'.$back.'"><form action="" method="post" margin="0">
                        <input type="hidden" value="'.$arr1[forum_id].'" name="forum_id" />
                        <a href="'.$phpSelf.$modRewriteFiller.'forum_id='.$arr1[forum_id].'" target="_self">'.$arr1[forum_name].'</a>
                        <br/><small>'.$arr1[forum_description].'</small>
                    </form></td>';

                    echo '<td class="'.$back.'" align="center">'.$threads.'</td>';
                    echo '<td class="'.$back.'" align="center">'.$posts.'</td>';
                    if ($threads==0 && $posts==0) {
                        echo '<td class="'.$back.'" align="right">'.mi18n("keine Posts").'</td>';
                    } else {
                        $thisAuthorArr=mysql_fetch_assoc(mysql_query("SELECT * FROM ".$cfg['sql']['sqlprefix']."_frontendusers WHERE idfrontenduser='".$lastpost[post_author]."'"));
                        $thisAuthor=$thisAuthorArr[username];
                        echo '<td class="'.$back.'" align="right" valign="top">'.$thisAuthor.'&nbsp;<a href="'.$phpSelf.$modRewriteFiller.'thread_id='.$lastpost[thread_id].'&show=last#'.$lastpost[post_id].'"><img src="images/arrows.gif" border="0" alt="&raquo;"></a>&nbsp;<br/>'.date($settings[dateformat],strtotime($lastpost[post_time])).'</td>';
                    }
                    echo '</tr>';
                    $i++;
                }
            }
            echo '</table><div style="padding-top:5px;text-align:right;width:'.$settings[forum_width].'px;">';
            echo makeNavi($show,$catSitenav,$rowsNavi,ceil($rowsNavi/$catSitenav),$phpSelf.$modRewriteFiller);
            echo '</div>';
        }
    }
}

function cut($text, $length) {
    $dec = array("\"", "'", "\\", '\"', "\'", "<", ">");
    $enc = array(""", "'", "&#92;", """, "'", "<", ">");
    $text = str_replace($enc, $dec, $text);
    $text = str_replace($dec, $enc, $text);
    if (strlen($text) > $length) {
        $text = substr($text, 0, ($length-3)."...");
    }
    return $text;

}
function makeNavi($start,$count,$total,$range,$link){
    $link=$link.'&show=';
    $res="";

    $pg_cnt=ceil($total / $count);
    $pg_cnt_abs=$pg_cnt;
    $cur_page=ceil(($start + 1) / $count);
    if ($start>0) {
        $thisRange=$start;
    } else {
        $thisRange=$range;
    }

    if ($pg_cnt>10) {
        if ($thisRange==$start) {
            if ($start>bcdiv($total,2,0)) {
                $middleRange=bcdiv(bcadd($thisRange,1,0),2,0);
            } else {
                $middleRange=$thisRange + 1;
            }
        } else {
            $middleRange=bcdiv($thisRange,2,0);
        }
        $middleRangeSub=bcsub($middleRange,1,0);
        $middleRangeSubSub=bcsub($middleRangeSub,1,0);
        $middleRangeAdd=bcadd($middleRange,1,0);
        $middleRangeAddAdd=bcadd($middleRangeAdd,1,0);
        $lastRangeSub=bcsub($range,1,0);
        $lastRangeSubSub=bcsub($lastRangeSub,1,0);
        $pg_cnt_abs=$range;

        // The first three sites
        $validSites=array('1','2','3');

        if ($cur_page==3 || $cur_page==4 || $cur_page==5) array_push($validSites,'4');
        if ($cur_page==4 || $cur_page==5) array_push($validSites,'5');
        if ($cur_page==5) array_push($validSites,'6');
        array_push($validSites,'...');
        if (!in_array($cur_page,$validSites) && $cur_page>5 && $cur_page<bcsub($pg_cnt,2,0)) array_push($validSites,bcsub($cur_page,1,0),$cur_page);
        if ($cur_page>5 && $cur_page<bcsub($pg_cnt,3,0)) array_push($validSites,bcadd($cur_page,1,0));
        if ($cur_page>5 && $cur_page<bcsub($pg_cnt,4,0)) array_push($validSites,'...');
        if ($cur_page>5 && $cur_page>bcsub($pg_cnt,3,0) && $cur_page<bcsub($pg_cnt,1,0)) array_push($validSites,bcsub($cur_page,1,0));

        // The last three sites
        array_push($validSites,bcsub($pg_cnt,2,0),bcsub($pg_cnt,1,0),$pg_cnt);
    }
    if($pg_cnt > 1) {
        $idx_back = $start - $count;
        $idx_next = $start + $count;
        $cur_page=ceil(($start + 1) / $count);
        $res.="<span class='small'>".mi18n("Seite")."&nbsp;".$cur_page."&nbsp;".mi18n("von")."&nbsp;".$pg_cnt_abs."&nbsp;&nbsp;&nbsp;&nbsp;</span>";
        if($idx_back >= 0) {
            $res.="<a class='small' href='".$link."0'>&laquo;</a>&nbsp;";

            $res.="<a class='small' href='".$link.bcsub($start,$count,0)."'>&lsaquo;</a>&nbsp;";
        }
        $idx_fst=max($cur_page - $range, 1);
        $idx_lst=min($cur_page + $range, $pg_cnt);
        if($range==0){
            $idx_fst = 1;
            $idx_lst=$pg_cnt;
        }
        if ($pg_cnt>10) {
            foreach ($validSites as $thisSite) {
                if ($thisSite!="...") $offset_page=($thisSite - 1) * $count;
                if($thisSite==$cur_page || $thisSite=="..."){
                    $res.="<span class='small'><b>$thisSite</b>&nbsp;</span>";
                }else{

                    $res.="<a class='small' href='".$link.$offset_page."'><b>$thisSite</b></a>&nbsp;";
                }
            }
        } else {
            for($i=$idx_fst;$i<=$idx_lst;$i++){
                $offset_page=($i - 1) * $count;
                if($i==$cur_page){

                    $res.="<span class='small'><b>$i</b>&nbsp;</span>";
                }else{
                    $res.="<a class='small' href='".$link.$offset_page."'><b>$i</b></a>&nbsp;";
                }
            }
        }
        if($idx_next < $total) {
            $res.="<a class='small' href='".$link.bcadd($start,$count,0)."'>&rsaquo;</a>&nbsp;";
            $res.="<a class='small' href='".$link.$offset_page."'>&raquo;</a>&nbsp;";
        }
    }
    return $res;
}
?>
vielen vielen Dank

bipi
Beiträge: 130
Registriert: So 12. Jun 2005, 07:23
Kontaktdaten:

Re: Modul: Forum

Beitrag von bipi » So 5. Sep 2010, 07:27

welche funktion ist zuständig fürs speichern?

bipi
Beiträge: 130
Registriert: So 12. Jun 2005, 07:23
Kontaktdaten:

Re: Modul: Forum

Beitrag von bipi » Mo 6. Sep 2010, 06:19

Niemand eine Idee?

i-fekt
Beiträge: 1520
Registriert: Mo 3. Jan 2005, 02:15
Wohnort: Chemnitz
Kontaktdaten:

Re: Modul: Forum

Beitrag von i-fekt » Mo 6. Sep 2010, 09:36

^_^
Zuletzt geändert von i-fekt am Do 21. Okt 2010, 12:15, insgesamt 1-mal geändert.
Gruss,
Michael

"Keep on riding this Bike!" (Jackson Mulham)

bipi
Beiträge: 130
Registriert: So 12. Jun 2005, 07:23
Kontaktdaten:

Re: Modul: Forum

Beitrag von bipi » Mo 6. Sep 2010, 18:00

Da i-fekt seine Idee nicht preis gibt, ersuche ich jemand anderen mir einen kleinen gedanklichen Anstoß zu geben.
vielen lieben Dank

bipi
Beiträge: 130
Registriert: So 12. Jun 2005, 07:23
Kontaktdaten:

Re: Modul: Forum

Beitrag von bipi » Do 9. Sep 2010, 07:02

mir würde es schon genügen wenn bei jedem speichern an alle FE-user eine email geschickt wird mit der Info dass es einen neuen Beitrag gibt.

bipi
Beiträge: 130
Registriert: So 12. Jun 2005, 07:23
Kontaktdaten:

Re: Modul: Forum

Beitrag von bipi » Sa 11. Sep 2010, 16:58

wenn ich wüßte wo ich ansetzen soll, bitte bitte bitte

Dinkel
Beiträge: 565
Registriert: Di 22. Mär 2005, 14:52
Kontaktdaten:

Re: Modul: Forum

Beitrag von Dinkel » Di 14. Sep 2010, 11:52

sorry, ich hab auch keine konkrete Idee
selbstentwickelte Module:
Downloads und Infos zu den Modulen: gibt es hier.
Modul: Forum | Version 0.9 | getestet: 4.6.24 MR, 4.8.11, 4.8.11 AMR
Modul: Galleriffic | Version: 0.3.4 BETA | getestet: 4.8.11, 4.8.11 AMR, 4.8.12, 4.8.12 AMR
Modul: Metadata | Version: 2.0 | getestet: 4.9.7, 4.9.7 AMR
Modul: Slider Gallery | Version: 1.0 | getestet: 4.9.12 AMR
Modul: Up- & Download | Version: 4.1 | getestet: 4.9.12 AMR

booker
Beiträge: 18
Registriert: Mi 18. Apr 2007, 11:43
Kontaktdaten:

Re: Modul: Forum

Beitrag von booker » Sa 2. Okt 2010, 09:40

Hi,
Gibt es eigentlich eine möglichkeit die Volltextsuche dazu zu bringen auch forenbeiträge zu durchsuchen ?
THX
dennis

i-fekt
Beiträge: 1520
Registriert: Mo 3. Jan 2005, 02:15
Wohnort: Chemnitz
Kontaktdaten:

Re: Modul: Forum

Beitrag von i-fekt » Sa 2. Okt 2010, 13:23

^_^
Zuletzt geändert von i-fekt am Do 21. Okt 2010, 12:15, insgesamt 1-mal geändert.
Gruss,
Michael

"Keep on riding this Bike!" (Jackson Mulham)

booker
Beiträge: 18
Registriert: Mi 18. Apr 2007, 11:43
Kontaktdaten:

Re: Modul: Forum

Beitrag von booker » Sa 2. Okt 2010, 20:40

Hi,

Danke für die Info, könntest du mir sagen was genau zu machen ist?
THX
Booker

Thi_Sch
Beiträge: 4
Registriert: Mo 9. Nov 2009, 13:53
Kontaktdaten:

Re: Modul: Forum

Beitrag von Thi_Sch » So 31. Okt 2010, 19:22

Hallo ZUsammen,

das Modul Forum ist eine prima Sache.

Habe aber folgendes Verhalten festgestellt:
FE-User #1 kann alles administrieren obwohl er im Admin-Bereich unter "Einstellungen"->Administratoren nicht ausgewählt ist, sondern nur FE-User #2 ausgewählt ist.

Ist das Verhalten so gewollt?
Falls es ein Bug ist, hat jemand bereits eine LÖsung, bevor ich mich auf die Suche mache?

Danke - und frohes Hacken.
- Alles ist gut, jetzt ist es besser, es wäre noch besser wenn alles wieder gut wäre -
Thi_Sch

20082009
Beiträge: 116
Registriert: So 5. Okt 2008, 09:58
Kontaktdaten:

Re: Modul: Forum

Beitrag von 20082009 » Mo 1. Aug 2011, 08:50

Hallo,
ich habe das Modul in Contenido 4.8.12 im Einsatz.
Soweit alles gut. Danke.
Allerdings kann ich im Adminbereich die Einstellung "Dürfen Gäste posten" nicht auf "ja" stellen. Ich klicke das an, wenn ich dann abspeicher springt die Eingabe wieder auf "nein".
Wo kann da der Fehler liegen??


Beste Grüße

Gesperrt