ilch Forum » Ilch Clan 1.1 » Allgemein » PM bei neuer News

Geschlossen
  1. #1
    User Pic
    TheRipper Mitglied
    Registriert seit
    09.01.2008
    Beiträge
    147
    Beitragswertungen
    1 Beitragspunkte
    Das Thema wurde zwar schon mal besprochen aber nicht ausführlich genug^^

    Ich weiß das man das in die include/admin/news.php ändern muss!

    Aber nicht mit welchen Daten.

    Und ich weiß das dieser Code zwischen #insertund #insertmuss!

    #PM an alle Member bei neuer News 
     
    $recht = -3; 
    $abs = USER-ID; 
    $betr = 'Neue News'; 
    $pmtxt = 'Bitte Lesen! Unter News'; 
     
    $abf1 = db_query("SELECT `id` FROM prefix_user WHERE `recht` <= ".$recht); 
    while ($r = db_fetch_assoc($abf1)) { 
      sendpm($abs,$r['id'],$betr,$pmtxt); 
    }


    Das ist meine news.php
    Vllt kann mir ja jemand die Datei so schreiben, das mir bei neuer News die PM geschickt wird mit, Nachrichten Titel und Verfasser!

    <?php
    #   Copyright by: Manuel Staechele
    #   Support: www.ilch.de
    #   Modded by Mairu für News Extended
    
    defined ('main') or die ( 'no direct access' );
    defined ('admin') or die ( 'only admin access' );
    
    if ($menu->get(1) != 'ajax') {
        $design = new design ( 'Admins Area', 'Admins Area', 2 );
        $design->header();
    }
    
    //-----------------------------------------------------------|
    
    ##
    ###
    ####
    ##### F u n k t i o n e n
    
    function dz_timestamp($d,$t = '00:00')
    {
        $d = trim($d);
        $t = trim($t);
        if (preg_match('/^\d{1,2}.\d{1,2}.(\d{2}|\d{4})$/',$d) == false OR preg_match('/^\d{1,2}:\d\d$/',$t) == false) {
            return false;
        }
        $d = explode('.',$d);
        $t = explode(':',$t);
        if ($o = mktime($t[0],$t[1],0,$d[1],$d[0],$d[2])) {
            return $o;
        } else {
            return false;
        }
    }
    
    function getKats ( $akt , $addkat='', $self = false) {
      $katAr = array();
      if ($self) {
        $katAr['#0#'] = 'selbst w&auml;hlen';
      }
      $katAr['Allgemein'] = 'Allgemein';
    
    	$kats = '';
    	$erg = db_query("SELECT DISTINCT news_kat FROM `prefix_news`");
    	while ($row = db_fetch_object($erg)) {
    		$katAr[$row->news_kat] = $row->news_kat;
    	}
      if (!empty($addkat) AND $addkat != '#0#') {
    	  $katAr[$addkat] = $addkat;
      }
    	$katAr = array_unique($katAr);
    
    	foreach($katAr as $k => $a) {
    	  if (trim($k) == trim($akt)) {
    		  $sel = 'selected="selected"';
    		} else {
    		  $sel = '';
    		}
    	  $kats .= '<option value="'.$k.'" '.$sel.'>'.$a.'</option>';
    	}
      return ($kats);
    }
    
    function vorschau($form) {
        global $info;
        $resp = new xajaxResponse();
        $txt = utf8_decode($form['txt']);
        $txt = bbcode($txt);
        $resp->assign('vorschau_td','innerHTML' ,$txt );
        $resp->script("document.getElementById('vorschau').style.display = 'block';");
        if (isset($info['ImgMaxBreite'])) {
            $resp->script("ResizeBBCodeImages()");
        }
        return $resp;
    }
    
    function vorschau_id($id) {
        global $info;
        $resp = new xajaxResponse();
        $txt = @db_result($q = db_query("SELECT news_text, html FROM prefix_news WHERE news_id = '$id'"),0,0);//utf8_decode($form['txt']);
        if (@db_result($q,0,1) == 0) {
            $txt = bbcode($txt);
        }
        $resp->assign('vorschau_td','innerHTML' ,$txt );
        $resp->script("document.getElementById('vorschau').style.display = 'block';");
        if (isset($info['ImgMaxBreite'])) {
            $resp->script("ResizeBBCodeImages()");
        }
        return $resp;
    }
    
    function tn_koms() {
        $resp = new xajaxResponse();
        $now = @db_result(db_query('SELECT v2 FROM prefix_allg WHERE k = "news"'),0);
        db_query('UPDATE prefix_allg SET v2 = IF(v2=1,0,1) WHERE k = "news"');
        $linktxt = $now == '0' ? 'ja' : 'nein';
        $resp->assign('tn_koms','innerHTML' ,$linktxt );
        return $resp;
    }
    
    function saveopts($newsempf,$kat){
        $resp = new xajaxResponse();
        if (!db_query("UPDATE prefix_allg SET v3 = '$newsempf', v4 = '$kat' WHERE k = 'News'")) {
            $resp->alert("Fehler aufgetreten:\n".mysql_error());
        }
        return $resp;
    }
    
    function setArchiv($id,$old){
        $resp = new xajaxResponse();
        $new = $old == 'A' ? 0 : 1;
        if (db_query("UPDATE prefix_news SET archiv = $new WHERE news_id = '$id'")) {
            $resp->assign('archiv_link_'.$id,'innerHTML' , $old == 'A' ? 'N' : 'A');
        } else {
            $resp->alert("Fehler:\n".mysql_error());
        }
        return $resp;
    }
    
    //xajax für vorschau
    $xajax = new xajax('admin.php?news-ajax');
    $xajax->registerFunction('vorschau');
    $xajax->registerFunction('vorschau_id');
    $xajax->registerFunction('tn_koms');
    $xajax->registerFunction('saveopts');
    $xajax->registerFunction('setArchiv');
    $xajax->processRequest();
    
    ##### F u n k t i o n
    ####
    ###
    ##
    #
    ##
    ###
    ####
    ##### A k t i o n e n
    
    if ( !empty($_REQUEST['um']) ) {
      $um = $_REQUEST['um'];
    
      $archiv = 0;
      //Sperre
      if ($_POST['gesperrt'] != 'on') {
        $show = dz_timestamp($_POST['datum'], $_POST['zeit']);
        if (!$show) {
          $show = 1;
        }
      } else {
        $show = 0;
      }
    
      //Enddatum
      if ($_POST['close'] == '0') {
        $endtime = 'NULL';
      } elseif ($_POST['close'] == '1') {
        $endtime = dz_timestamp($_POST['cdatum'],$_POST['czeit']);
      } else {
        $endtime = dz_timestamp($_POST['cdatum'],$_POST['czeit']);
        $archiv  = 2;
      }
    
      if ( $um == 'insert' ) {
    
    # insert
    		$text  = escape($_POST['txt'], 'textarea');
    		if ( $_POST['katLis'] == 'neu' ) {
    		  $_POST['katLis'] = $_POST['kat'];
    		}
    		db_query("INSERT INTO `prefix_news` (news_title,user_id,news_time,news_recht,news_kat,news_text,html,`show`,archiv,endtime)
    		VALUES ('".$_POST['titel']."',".$_SESSION['authid'].",NOW(),".$_POST['grecht'].",'".$_POST['katLis']."','".$text."','".$_POST['html']."',$show,$archiv,$endtime)");
    		
    		#PM an alle Member bei neuer News 
     
    $recht = -3; 
    $abs = USER-ID; 
    $betr = 'Neue News'; 
    $pmtxt = 'Bitte Lesen! Unter News'; 
     
    $abf1 = db_query("SELECT `id` FROM prefix_user WHERE `recht` <= ".$recht); 
    while ($r = db_fetch_assoc($abf1)) { 
      sendpm($abs,$r['id'],$betr,$pmtxt); 
    }
    # insert
    
    
    	} elseif ( $um == 'change' ) {
    
    # edit
    	  $text  = escape($_POST['txt'],'textarea');
    
    		if ( $_POST['katLis'] == 'neu' ) {
    		  $_POST['katLis'] = $_POST['kat'];
    		}
    		db_query('UPDATE `prefix_news` SET
    				news_title = "'.escape($_POST['titel'],'string').'",
    				editor_id  = "'.$_SESSION['authid'].'",
    				edit_time  = NOW(),
    				news_recht = "'.$_POST['grecht'].'",
    				news_kat   = "'.$_POST['katLis'].'",
    				html       = "'.$_POST['html'].'",
    				`show`     = '.$show.',
    				archiv     = '.$archiv.',
    				endtime     = '.$endtime.',
                    news_text  = "'.$text.'" WHERE news_id = "'.$_POST['newsID'].'" LIMIT 1');
    	  $edit = $_POST['newsID'];
      }
    }
    # edit
    
    
    # del
    if ( $menu->get(1) == 'del' ) {
      db_query('DELETE FROM `prefix_news` WHERE news_id = "'.$menu->get(2).'" LIMIT 1');
    }
    #del
    
    # Sperren/Freischalten
    if ( $menu->getA(1) == 's' ) {
      db_query('UPDATE `prefix_news` SET `show` = IF(`show`>0,0,1) WHERE news_id = "'.$menu->getE(1).'" LIMIT 1');
    }
    # Sperren/Freischalten
    
    # Topnews
    if ( $menu->getA(1) == 't' ) {
      db_query('UPDATE `prefix_allg` SET `v1` = "'.$menu->getE(1).'" WHERE k = "news" LIMIT 1');
    }
    # Topnews
    
    ##### A k t i o n e n
    ####
    ###
    ##
    #
    ##
    ###
    ####
    ##### h t m l   E i n g a b e n
    
    
    
    
    if ( empty ($doNoIn) ) {
    
    	$limit = 20;  // Limit
      $page = ($menu->getA(1) == 'p' ? $menu->getE(1) : 1 );
      $MPL = db_make_sites ($page , '' , $limit , "?news" , 'news' );
      $anfang = ($page - 1) * $limit;
    	if ( $menu->get(1) != 'edit' ) {
    	  $FnewsID = '';
    		$Faktion = 'insert';
    		$Fueber  = '';
    		$Fstext  = '';
    		$Ftxt    = '';
    		$Fgrecht = '';
    		$FkatLis = '';
    		$Fsub    = 'Eintragen';
    		$Fhtml   = '';
    		$sel0    = 'checked="checked"';
    		$sel1    = '';
    		$sel_show = 'checked="checked"';
    		$datum   = date('d.m.Y');
    		$zeit    = date('H:i');
    		$csel0    = 'checked="checked"';
    		$csel1    = '';
            $csel2    = '';
    		$cdatum   = date('d.m.Y',time()+604800);
    		$czeit    = date('H:i');
    	} else {
    	    $row = db_fetch_object(db_query("SELECT * FROM `prefix_news` WHERE news_id = ".$menu->get(2)));
    	    $FnewsID = $row->news_id;
    		$Faktion = 'change';
    		$Fueber  = str_replace('"','&quot;',$row->news_title);
    		$Ftxt    = stripslashes($row->news_text);
    		$Fgrecht = $row->news_recht;
    		$FkatLis = $row->news_kat;
    		$Fsub    = '&Auml;ndern';
    		$Fhtml   = $row->html == 1 ? 'switch_html();' : '';
    		if ($row->show == 0) {
        		$sel_gesperrt = 'checked="checked"';
        		$datum    = '';
        		$zeit     = '';
    		} else {
        		$sel_gesperrt = '';
        		$row->show = $row->show  < 10000 ? time() : $row->show;
        		$datum    = date('d.m.Y',$row->show);
        		$zeit     = date('H:i',$row->show);
        }
        $sel0 = $sel1 = '';
    		if ($row->html) {
    		    $sel1 = 'checked="checked"';
    		} else {
                $sel0 = 'checked="checked"';
        }
        $csel0 = $csel1 = $csel2 = '';
        if ($row->archiv == 1) {
            $csel2 = 'checked="checked"';
            $row->endtime = time()-1000;
        } elseif (is_null($row->endtime)) {
            $csel0 = 'checked="checked"';
            $row->endtime = time()+604800;
        } elseif ($row->archiv == 2) {
            $csel2 = 'checked="checked"';
        } else {
            $csel1 = 'checked="checked"';
        }
    		$cdatum   = date('d.m.Y',$row->endtime);
    		$czeit    = date('H:i',$row->endtime);
    	}
    $tpl = new tpl ( 'news', 1);
    
      $ar = array (
            'NEWSID' => $FnewsID,
            'AKTION' => $Faktion,
            'MPL'    => $MPL,
            'UEBER'  => $Fueber,
            'txt'    => $Ftxt,
            'SMILIS' => getsmilies(),
            'grecht' => dbliste($Fgrecht,$tpl,'grecht',"SELECT id,name FROM prefix_grundrechte ORDER BY id DESC"),
            'KATS'   => getKats($FkatLis),
            'FSUB'   => $Fsub,
            'sel0'   => $sel0,
            'sel1'   => $sel1,
            'sel_gesperrt' => $sel_gesperrt,
            'datum'  => $datum,
            'zeit'   => $zeit,
            'csel0'  => $csel0,
            'csel1'  => $csel1,
            'csel2'  => $csel2,
            'cdatum' => $cdatum,
            'czeit'  => $czeit,
    	    'xajax'  => $xajax->printJavascript()
    	   );
    
    		$tpl->set_ar_out($ar,0);
    		if (isset($info['ImgMaxBreite'])) {
    		    $tpl->out(2); //BBCode 2.0 Modul
    		} else {
                $tpl->out(1); //BBCode vom Ilchscript
            }
    		$tpl->set_ar_out($ar,3);
    
    	# e d i t , d e l e t e
      $abf = 'SELECT *
    	        FROM `prefix_news`
    					ORDER BY news_time DESC
    					LIMIT '.$anfang.','.$limit;
    
      $erg = db_query($abf);
      $class = '';
      $opts = db_fetch_object(db_query("SELECT v1 as topnews, v2 as koms,v3 as pmempf,v4 as kat FROM prefix_allg WHERE k = 'news'"));
    
    
    	while ($row = db_fetch_object($erg) ) {
        $class = ($class == 'Cmite' ? 'Cnorm' : 'Cmite' );
    
    
            $tpl->set_ar_out( array ( 'ID' => $row->news_id,
                'class' => $class,
                'TITEL' => $row->news_title,
                'sperre' => $row->show >= 1 ? 'jep' : 'nop',
                'sperren' => $row->show >= 1 ? 'Sperren' : 'Freischalten',
                'title' => "Ersteller: ".get_n($row->user_id)." ($row->news_time)".(is_null($row->editor_id) ? '' : "\nGe&auml;ndert von: ".get_n($row->editor_id)." ($row->edit_time)"),
                'topnews' => $row->news_id == $opts->topnews ? 'ok' : 'leer',
                'archiv' => (($row->archiv == 1) OR ($row->archiv == 2 AND $row->endtime < time())) ? 'A' : 'N'
                ) , 4 );
    	}
      # e d i t , d e l e t e
    
      //Mögliche PM-Empfänger
      $pmq = db_query("SELECT a.id, a.name FROM prefix_user a LEFT JOIN prefix_modulerights b ON b.mid = 2 AND b.uid = a.id WHERE a.recht <= -8 OR b.mid IS NOT NULL");
      $pmempf = '';
      $pmar = explode('#',$opts->pmempf);
      while($r = db_fetch_object($pmq)) {
          $sel = in_array($r->id,$pmar) ? 'selected="selected"' : '';
          $pmempf .= "<option value=\"$r->id\" $sel>$r->name</option>";
      } // while
    
      $tpl->set_ar_out( array (
                            'MPL' => $MPL,
                            'html' => $Fhtml,
                            'tn_koms' => $opts->koms == '1' ? 'ja' : 'nein',
                            'nadd_kat' => getKats($opts->kat, $opts->kat , true),
                            'pmempf' => $pmempf
                       ) , 5 );
    
    }
    
    $design->footer();
    ?>


    Schon mal vielen Dank!

    betroffene Homepage: sourceclub.de
    Wer kämpft kann verlieren, wer nicht kämpft, hat schon verloren!
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.638
    Beitragswertungen
    1193 Beitragspunkte
    mach mal aus dem:
    $abs = USER-ID;


    das hier:
    $abs = $_SESSION['authid'];
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    TheRipper Mitglied
    Registriert seit
    09.01.2008
    Beiträge
    147
    Beitragswertungen
    1 Beitragspunkte
    Super vielen Dank!

    Wenn es noch einer braucht hier der komplette Code!!

    #PM an alle Member bei neuer News 
     
    $recht = $_POST['grecht']; 
    $abs = $_SESSION['authid']; 
    $betr = $_POST['titel']; 
    $pmtxt = $text; 
     
    $abf1 = db_query("SELECT `id` FROM prefix_user WHERE `recht` <= ".$recht); 
    while ($r = db_fetch_assoc($abf1)) { 
      sendpm($abs,$r['id'],$betr,$pmtxt); 
    }
    Wer kämpft kann verlieren, wer nicht kämpft, hat schon verloren!
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    TheRipper Mitglied
    Registriert seit
    09.01.2008
    Beiträge
    147
    Beitragswertungen
    1 Beitragspunkte
    Kann man das vielleicht noch so machen das statt dem text bei $pmtxt
    ein Link angezeigt wird zu den neuen News??

    Also quasi^^:
    Wenn man auf Posteingang geht und die neue news öffnet das dann dort der Newstitel steht als Linkformat und wenn man drauf klickt soll man dann zu den news kommen!


    Zuletzt modifiziert von TheRipper am 20.06.2010 - 17:17:30
    Wer kämpft kann verlieren, wer nicht kämpft, hat schon verloren!
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.638
    Beitragswertungen
    1193 Beitragspunkte
    Probier mal ob es funktioniert!

    #PM an alle Member bei neuer News 
     
    $recht = $_POST['grecht']; 
    $abs = $_SESSION['authid']; 
    $betr = $_POST['titel'];
    $news_id = db_result(db_query('SELECT news_id FROM `ic1_news` ORDER BY `news_id` DESC LIMIT 0 , 1'),0);
    $news_link = 'http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/index.php?newsextended-'.$news_id; //EXTENDED News
    //$news_link = 'http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/index.php?news-'.$news_id; //ILCH News
    
    $pmtxt = 'Ich habe eine News eingestellt! Bitte [url='.$news_link.']hier[/url] klicken um diese News zu lesen!';
    
    $abf1 = db_query("SELECT `id` FROM prefix_user WHERE `recht` <= ".$recht); 
    while ($r = db_fetch_assoc($abf1)) { 
      sendpm($abs,$r['id'],$betr,$pmtxt); 
    }



    Zuletzt modifiziert von Lord|Schirmer am 21.06.2010 - 08:16:55
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.638
    Beitragswertungen
    1193 Beitragspunkte
    ... und wie sieht es aus, hatte noch etwas verändert!
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    TheRipper Mitglied
    Registriert seit
    09.01.2008
    Beiträge
    147
    Beitragswertungen
    1 Beitragspunkte
    Sehr Geil vielen vielen Dank!!!!

    Hab den Code noch was verändert und wollte fragen ob es geht das der Link Intern geöffnet werden kann und nicht in einer neue Registerkarte?

    #PM an alle Member bei neuer News 
     
    $recht = $_POST['grecht']; 
    $abs = $_SESSION['authid'];
    $kat =  $_POST['katLis'];
    $betr = $_POST['titel'];
    $news_id = db_result(db_query('SELECT news_id FROM `ic1_news` ORDER BY `news_id` DESC LIMIT 0 , 1'),0);
    $news_link = 'http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/index.php?newsextended-'.$news_id; //EXTENDED News
    //$news_link = 'http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/index.php?news-'.$news_id; //ILCH News
     
    $pmtxt = 'Es wurde eine neue News unter der Kategorie '.$kat.' mit dem Titel '.$betr.' verfasst! Klicke [url='.$news_link.']HIER[/url] um diese News zu lesen!';
     
    $abf1 = db_query("SELECT `id` FROM prefix_user WHERE `recht` <= ".$recht); 
    while ($r = db_fetch_assoc($abf1)) { 
      sendpm($abs,$r['id'],$betr,$pmtxt); 
    }
    Wer kämpft kann verlieren, wer nicht kämpft, hat schon verloren!
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.638
    Beitragswertungen
    1193 Beitragspunkte
    Probier mal!

    #PM an alle Member bei neuer News 
     
    $recht = $_POST['grecht']; 
    $abs = $_SESSION['authid'];
    $kat =  $_POST['katLis'];
    $betr = $_POST['titel'];
    $news_id = db_result(db_query('SELECT news_id FROM `ic1_news` ORDER BY `news_id` DESC LIMIT 0 , 1'),0);
    $news_link = '/index.php?newsextended-'.$news_id; //EXTENDED News
    //$news_link = '/index.php?news-'.$news_id; //ILCH News
    $pmtxt = 'Es wurde eine neue News unter der Kategorie '.$kat.' mit dem Titel '.$betr.' verfasst! Klicke [url='.$news_link.']HIER[/url] um diese News zu lesen!';
     
    $abf1 = db_query("SELECT `id` FROM prefix_user WHERE `recht` <= ".$recht); 
    while ($r = db_fetch_assoc($abf1)) { 
      sendpm($abs,$r['id'],$betr,$pmtxt); 
    }
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    TheRipper Mitglied
    Registriert seit
    09.01.2008
    Beiträge
    147
    Beitragswertungen
    1 Beitragspunkte
    Klasse, das funktioniert super! Nochmals Vielen vielen Dank! Du hast mi echt super geholfen!
    Wer kämpft kann verlieren, wer nicht kämpft, hat schon verloren!
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    TheRipper Mitglied
    Registriert seit
    09.01.2008
    Beiträge
    147
    Beitragswertungen
    1 Beitragspunkte
    Ich habe gerade gemerkt wenn sich ein neuer User bei uns registriert, steht bei ihm standardmäßig im Profil die Option Popup bei neuer PN? auf nein!
    Kann man das auf standard Ja umstellen?

    Und ein neuer User kann desweiteren nicht den Posteingang öffnen! Dann kommt folgender Satz!
    Du hast leider nicht die nötigen Rechte... :-S

    Wo muss man das ändern?
    Wer kämpft kann verlieren, wer nicht kämpft, hat schon verloren!
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Allgemein

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten