ilch Forum » Ilch Clan 1.1 » Allgemein » Userupload in die Hauptgallery

Geschlossen
  1. #31
    User Pic
    lordrepha Mitglied
    Registriert seit
    11.03.2006
    Beiträge
    1.362
    Beitragswertungen
    22 Beitragspunkte
    ist zwar schon ne weile her das ganze Thema aber ich habe mich mal drangemacht eine richtige gallery aus den hier genannten scripten und vorschlägen zu machen.

    was nun möglich ist:
    • bilder können in jede kategorie die im admin Menü erstellt wurden hochgeladen werden.
    • Das Upload script von Mairu ist nun in der Gallerie immer ganz unten in jeder Kategorie sichtbar.
    • In der Kategorie in der man sich befindet wird auch das Bild hochgeladen.
    • der Name des Uploaders steht unter dem Bild


    Hier nun die dateien

    include/contents/galleryupl.php
    <?php
    defined ('main') or die ( 'no direct access' );
    
    require_once('include/includes/func/gallery.php');
    
    
    
    $kateg = $menu->get(1);
    if (loggedin()) {
    
      # Bilder in eine Kategorie hochladen
      $msg = '';  
    
      
      if (isset($_POST['hochladen']) AND $_POST['hochladen'] == 'yes') {
    
          if (!empty($_FILES['file']['name'])) {        
            $fende = preg_replace("/.+\.([a-zA-Z]+)$/", "\\1", $_FILES['file']['name']);
            $fende = $endung = strtolower($fende);
            $name = substr($_FILES['file']['name'],0,-1*(strlen($fende)+1));
    		$kateg = $kateg;
    
    
            $size = @getimagesize ($_FILES['file']['tmp_name']);
            if (!empty($_FILES['file']['name']) AND $size[0] > 10 AND $size[1] > 10 AND ($size[2] == 2 OR $size[2] == 3 OR $size[2] == 1) AND ($fende == 'gif' OR $fende == 'jpg' OR $fende == 'jpeg' OR $fende == 'png')) {
              $besch = escape($_POST['besch'],'string');
    		  $kateg1 = $_POST['kateg'];
    		  $beschname = 'von '.$_SESSION['authname']; 
              $id = db_result(db_query("SHOW TABLE STATUS FROM `". DBDATE ."` LIKE 'prefix_gallery_imgs'"),0,'Auto_increment');
              $bild_url = 'include/images/gallery/img_'.$id.'.'.$endung;
    		  
              if (@move_uploaded_file ($_FILES['file']['tmp_name'], $bild_url)) {
                db_query("INSERT INTO prefix_gallery_imgs (cat,datei_name,endung,besch,beschname) VALUES ('".$kateg1."','".$name."','".$endung."','".$besch."','".$beschname."')");
                $msg .= 'Datei '.$name.'.'.$endung.' erfolgreich hochgeladen<br />';
                $bild_thumb = 'include/images/gallery/img_thumb_'.$id.'.'.$endung;
                $bild_norm  = 'include/images/gallery/img_norm_'.$id.'.'.$endung;
                create_thumb ($bild_url, $bild_thumb, $allgAr['gallery_preview_width']);
                create_thumb ($bild_url, $bild_norm , $allgAr['gallery_normal_width']);
              } else {
                $msg .= 'Datei '.$name.'.'.$endung.' konnte nicht hochgeladen werden<br />';
              }
            }
          } else {
                $msg .= 'Datei '.$name.'.'.$endung.' konnte nicht hochgeladen werden, kein unterst&uuml;tztes Bildformat.<br />';
            }
      }
    
    
      
    }
    else {
     
      $tpl->set_out('WDLINK', 'index.php?gallery', 0);
      }
    
    ?>


    include/contents/gallery.php
    <?php
    
    
    
    
    defined ('main') or die ( 'no direct access' );
    
    # mini config
    $img_per_site = $allgAr['gallery_imgs_per_site'];
    $img_per_line = $allgAr['gallery_imgs_per_line'];
    
    function get_cats_title ( $catsar ) {
      $l = '';
    	foreach($catsar as $k => $v) {
    	  if ( $k != '' AND $v != '' ) {
    		  $l = $v.' :: '.$l;
    		}
    	}
    	return ($l);
    }
    
    function get_cats_urls ( $catsar ) {
      $l = '';
    	foreach($catsar as $k => $v) {
    	  if ( $k != '' AND $v != '' ) {
    		  $l = '<a class="smalfont" href="?gallery-'.$k.'">'.$v.'</a><b> &raquo; </b>'.$l;
    		}
    	}
    	return ($l);
    }
    
    function count_files ($cid) {
      $zges = 0;
    	$e = db_query("SELECT id FROM prefix_gallery_cats WHERE cat = ".$cid);
    	if ( db_num_rows($e) > 0 ) {
    	  while ($r = db_fetch_assoc($e) ) {
    	    $zges = $zges + count_files ( $r['id'] );
    	  }
    	}
    	$zges = $zges + db_count_query("SELECT COUNT(*) FROM prefix_gallery_imgs WHERE cat = ".$cid);
    	return ( $zges );
    }
    
    function get_cats_array ( $cid , $ar ) {
    	if ( empty($cid) ) {
    	  return ($ar);
    	} else {
    	  $erg = db_query("SELECT cat,id,name FROM prefix_gallery_cats WHERE id = ".$cid);
    		$row = db_fetch_assoc($erg);
    		$ar[$row['id']] = $row['name'];
    	  return ( get_cats_array($row['cat'],$ar) );
    	}
    	if ( $r ) {
    	  return ($l);
    	}
    }
    
    # original groesse anzeigen
    if ($menu->get(1) == 'showOrig') {
      $tpl = new tpl ('gallery_show');
      $tpl->set('id', escape($menu->get(2), 'integer'));
      $tpl->set('endung',htmlentities($menu->get(3)));
      $tpl->out(4);
    
    # normale groesse anzeigen
    } elseif ($menu->get(1) == 'show') {
      $page = ($menu->getA(3) == 'p' ? escape($menu->getE(3), 'integer') : 1 );
      $cid = escape($menu->get(2), 'integer');
      $anz = db_result(db_query("SELECT COUNT(*) FROM prefix_gallery_imgs WHERE prefix_gallery_imgs.cat = ".$cid),0);
      $erg = db_query("SELECT prefix_gallery_imgs.id,prefix_gallery_imgs.cat,datei_name,endung,prefix_gallery_imgs.`besch`,klicks,vote_wertung,vote_klicks FROM prefix_gallery_imgs LEFT JOIN prefix_gallery_cats ON prefix_gallery_imgs.cat = prefix_gallery_cats.id WHERE prefix_gallery_imgs.cat = ".$cid." AND (recht >= ".$_SESSION['authright']." OR recht IS NULL) ORDER BY id ASC LIMIT ".$page.",1");
      $row = db_fetch_assoc($erg);
      $size = getimagesize('include/images/gallery/img_'.$row['id'].'.'.$row['endung']);
    	$breite = $size[0] + 5;
      $hoehe = $size[1] + 5;
    
      # vote zahlen
      if (isset($_GET['doVote']) AND is_numeric($_GET['doVote']) AND !isset ($_SESSION['galleryDoVote'][$row['id']])) {
        $_SESSION['galleryDoVote'][$row['id']] = 'o';
        $row['vote_wertung'] = round ( ( ( $row['vote_wertung'] * $row['vote_klicks'] ) + $_GET['doVote'] ) / ( $row['vote_klicks'] + 1 ) , 3 );
        $row['vote_klicks']++;
        db_query("UPDATE prefix_gallery_imgs SET vote_wertung = ".$row['vote_wertung'].", vote_klicks = ".$row['vote_klicks']." WHERE id = ".$row['id']);
      }
    
      # klicks zaehlen
      if (!isset($_SESSION['galleryDoKlick'][$row['id']])) {
        $_SESSION['galleryDoKlick'][$row['id']] = 'o';
        db_query("UPDATE prefix_gallery_imgs SET klicks = klicks + 1 WHERE id = ".$row['id']);
      }
    
      # page vor und ruck dev
      $next = $page + 1;
      $last = $page - 1;
      if ( $next >= $anz ) { $next = 0; }
      if ( $last < 0 ) { $last = $anz -1; }
    
      # diashow einstellungen
      $diashow_html = '';
      $diashow = $next.'=0&amp;diashow=start';
      if (isset($_GET['diashow']) AND ($_GET['diashow'] == 'start' OR $_GET['diashow'] == 'shownext')) {
        $sek = 4;
        if (isset($_GET['sek'])) { $sek = $_GET['sek']; }
        $diashow_html = '<meta http-equiv="refresh" content="'.$sek.'; URL=index.php?gallery-show-'.$cid.'-p'.$next.'=0&amp;diashow=shownext&amp;sek='.$sek.'">';
        $diashow = $page.'=0&amp;diashow=stop';
      }
    
      # anzeigen
      $tpl = new tpl ('gallery_show');
      $arr = array (
        'cid' => $cid,
        'last' => $last,
        'next' => $next,
        'diashow' => $diashow,
        'diashow_html' => $diashow_html,
        'endung' => $row['endung'],
        'id' => $row['id'],
        'vote_wertung' => $row['vote_wertung'],
        'vote_klicks' => $row['vote_klicks'],
        'bildr' => $page,
        'besch' => unescape($row['besch']),
        'breite' => $breite,
        'hoehe' => $hoehe
    	
      );
      $tpl->set_ar_out($arr,0);
    
      # kommentare
      if ($allgAr['gallery_img_koms'] == 1) {
        # eintragen
        if (isset($_POST['name'])) {
          $name = escape($_POST['name'],'string');
          $text = escape($_POST['text'],'string');
          db_query("INSERT INTO prefix_koms (name,text,uid,cat) VALUES ('".$name."','".$text."',".$row['id'].",'GALLERYIMG')");
        }
    
        # loeschen
        if (isset($_GET['delete']) AND is_admin()) {
          db_query("DELETE FROM prefix_koms WHERE id = ".$_GET['delete']);
        }
    
        # zeigen
        $tpl->set('uname', $_SESSION['authname']);
        $tpl->out(1);
        $class = 'Cnorm';
        $erg = db_query("SELECT id, name, text FROM prefix_koms WHERE uid = ".$row['id']." AND cat = 'GALLERYIMG' ORDER BY id DESC");
        while ($r = db_fetch_assoc($erg)) {
          $class = ($class == 'Cmite' ? 'Cnorm' : 'Cmite');
          $r['class'] = $class;
          $r['text'] = bbcode ($r['text']);
          if (is_admin()) {
            $r['text'] .= '<a href="index.php?gallery-show-'.$cid.'-p'.$page.'=0&amp;delete='.$r['id'].'"><img src="include/images/icons/del.gif" border="0" title="l&ouml;schen" alt="l&ouml;schen" /></a>';
          }
          $tpl->set_ar_out($r,2);
        }
        $tpl->out(3);
      }
    } else {
    		$cid = ( $menu->get(1) ? escape($menu->get(1),'integer') : 0 );
    		$erg = db_query("SELECT cat,name FROM prefix_gallery_cats WHERE recht >= {$_SESSION['authright']} AND id = ".$cid);
    		$cname = 'Gallery';
        if ( db_num_rows($erg) > 0 ) {
    		  $row = db_fetch_assoc($erg);
    			$array = get_cats_array($row['cat'],'');
          $cname = $row['name'];
    			if ( !empty($array) ) {
    			  $titelzw = get_cats_title($array);
    			  $namezw = get_cats_urls($array);
    			} else {
    			  $titelzw = '';
    				$namezw = '';
    			}
    		  $cattitle = ':: '.$titelzw.$row['name'];
    			$catname = '<b> &raquo; </b>'.$namezw.$row['name'];
    		} else {
    		  $cattitle = '';
    			$catname = '';
    		}
    		$title = $allgAr['title'].' :: Gallery '.$cattitle;
        $hmenu = '<a class="smalfont" href="?gallery">Gallery</a>'.$catname;
        $design = new design ( $title , $hmenu );
    	  $design->header();
    		$tpl = new tpl ('gallery' );
        $erg = db_query("SELECT id,name,`besch` FROM prefix_gallery_cats WHERE recht >= {$_SESSION['authright']} AND cat = ".$cid." ORDER BY pos");
        if ( db_num_rows($erg) > 0 ) {
    		  $tpl->out(1); $class = 'Cnorm';
    			while ($row = db_fetch_assoc($erg) ) {
    			  $row['gallery'] = count_files($row['id']);
            $class = ( $class == 'Cmite' ? 'Cnorm' : 'Cmite' );
    				$row['class'] = $class;
    			  $tpl->set_ar_out($row,2);
          }
    		  $tpl->out(3);
    		}
        include("galleryupl.php");
        $limit = $img_per_site;
        $page = ($menu->getA(2) == 'p' ? escape($menu->getE(2), 'integer') : 1 );
        $MPL = db_make_sites ($page , '' , $limit , '?gallery-'.$cid , "gallery_imgs LEFT JOIN prefix_gallery_cats ON prefix_gallery_imgs.cat = prefix_gallery_cats.id WHERE prefix_gallery_imgs.cat = ".$cid." AND (recht >= ".$_SESSION['authright']." OR recht IS NULL)");
        $anfang = ($page - 1) * $limit;
        $erg = db_query("SELECT prefix_gallery_imgs.id,prefix_gallery_imgs.cat,datei_name,endung,beschname,prefix_gallery_imgs.`besch`,klicks,vote_wertung,vote_klicks FROM prefix_gallery_imgs LEFT JOIN prefix_gallery_cats ON prefix_gallery_imgs.cat = prefix_gallery_cats.id WHERE prefix_gallery_imgs.cat = ".$cid." AND (recht >= ".$_SESSION['authright']." OR recht IS NULL) ORDER BY id ASC LIMIT ".$anfang.",".$limit);
    		if ( db_num_rows($erg) > 0 ) {
          $tpl->set('imgperline', $allgAr['gallery_imgs_per_line']);
    		  $tpl->set('cname', $cname);
          $tpl->set('breite', $allgAr['gallery_normal_width']+30);
          $tpl->set('MPL',$MPL);
          $tpl->out(4); $class = 'Cnorm';
          $i = 0;
    			while($row = db_fetch_assoc($erg) ) {
    				$class = ( $class == 'Cmite' ? 'Cnorm' : 'Cmite' );
    				$row['class'] = $class;
            $row['anz_koms'] = db_result(db_query("SELECT COUNT(*) FROM prefix_koms WHERE uid = ".$row['id']." AND cat = 'GALLERYIMG'"),0);
            $row['besch'] = unescape($row['besch']);
            $row['width'] = round( 100 / $img_per_line );
            $row['bildr'] = $i + (($page-1) * $img_per_site);
            if ( $i <> 0 AND ($i % $img_per_line ) == 0 ) { echo '</tr><tr>'; }
    			  $tpl->set_ar_out($row,5);
            $i++;
    			}
          if ( $i % $img_per_line <> 0 ) {
          $anzahl = $img_per_line - ($i % $img_per_line);
          for($x=1;$x<=$anzahl;$x++){
            echo '<td class="'.$class.'"></td>';
          }
          }
    	  
    	
    	  
    			$tpl->out(6);
    		}
    		
    		if (loggedin()) {
    		?>
      <table border="0" cellpadding="5" cellspacing="1" class="border" width="100%">
      <tr>
        <td class="Callg"><?=$msg?>
          <form action="index.php?gallery-<?=$kateg?>" method="POST" enctype="multipart/form-data">
            <input type="hidden" name="hochladen" value="yes" />
    		
          <table border="0" cellpadding="5" cellspacing="1" class="border" width="100%">
            <tr>
              <td class="Cmite">
                <input size="55" type="file" name="file" />
                <br />Beschreibung: <input type="text" name="besch" value="" size="50" />
    			<input type="hidden" name="kateg" value="<?=$kateg?>" />
              </td>
            </tr><tr>
              <td class="Cdark">
                <input type="submit" value="Absenden" /> &nbsp;
              </td>
            </tr>
          </table>
          </form>  
        </td>
      </tr></table>
       
      <?
    		} 
    		 $tpl->out(7);
    		$design->footer();
    }
    
    ?>


    include/templates/gallery.htm
    {EXPLODE}
    <table width="100%" class="border" border="0" cellspacing="1" cellpadding="3">
      <tr class="Chead">
    		<td width="80%" align="center"><b>{_lang_category}</b></td>
        <td width="20%" align="center">{_lang_pictures}</td>
      </tr>
    	{EXPLODE}
    	<tr class="{class}">
    	  <td><a href="index.php?gallery-{id}">{name}</a><br /><span class="smalfont">&raquo;&nbsp;{besch}</span></td>
    		<td align="center">{gallery}</td>
    	</tr>
    	{EXPLODE}
    </table>
    <br /><br />
    {EXPLODE}
    <table width="100%" class="border" border="0" cellspacing="1" cellpadding="3">
      <tr class="Chead">
    		<td colspan="{imgperline}" align="center"><b>{cname}</b></td>
      </tr>
      {EXPLODE}
         <td class="{class}" width="{width}%" valign="top" align="center">
     
    <div onmouseover="hiddpos('infodiv{id}')" class="layer" id="infodiv{id}" style="position:absolute; top:50px; left:50px; display:none; width:200px; height:200px;">
    <table width="100%" class="border" border="0" cellspacing="1" cellpadding="4">
      <tr>
        <td class="{class}" align="left">
          <strong>{_lang_filename}:</strong> {datei_name}
    <br /><strong>{_lang_seen}:</strong> {klicks}
    <br /><strong>{_lang_voting}:</strong> {vote_wertung}
    <br /><strong>{_lang_comments}:</strong> {anz_koms}
    <br /><strong>{_lang_desc}:</strong> {besch}
        </td>
      </tr>
    </table>
    </div>
           <table class="border" border="0" cellspacing="1" cellpadding="0">
             <tr>
               <td onmouseout="hiddpos('infodiv{id}')" onmouseover="alertpos('infodiv{id}')"><a href="index.php?gallery-show-{cat}-p{bildr}" onClick="return oeffneFenster({bildr},{cat});" target="_blank"><img src="include/images/gallery/img_thumb_{id}.{endung}" border="0" alt="{datei_name}" title="&nbsp;" /></a></td>           
             </tr>
           </table>
           <p> <strong>{beschname}</strong> </p></td>
       {EXPLODE}
      </tr>
    </table>
    <center>{MPL}</center>
    
    <script language="JavaScript" type="text/javascript">
    <!--
      function oeffneFenster (bildr, cat) {
        var fenster = window.open ('index.php?gallery-show-'+cat+'-p'+bildr,'showBild','scrollbars=yes,height=600,width={breite},left=200,status=yes');
        fenster.focus();
        return (false);
      }
      
      // manage div ...
      document.onmousemove = checkPosition;
      function checkPosition(e) {
        if(document.all) {
          mausX = event.clientX + document.body.scrollLeft;
          mausY = event.clientY + document.body.scrollTop;
        } else {
          mausX = e.pageX;
          mausY = e.pageY;
        }
        
      }
      
      function alertpos(dname) {
      if (document.layers) {
        document.layers[0].left = mausX;
        document.layers[0].top = mausY;
      } else if (document.getElementById) {
        document.getElementById(dname).style.left = mausX + "px";
        document.getElementById(dname).style.top = mausY + "px";
      }
      document.getElementById(dname).style.display = "inline";
      }
      function hiddpos(dname) {
        document.getElementById(dname).style.display = "none";
      }
    //-->
    </script>
    {EXPLODE}


    Ausserdem muss in der Datenbank die Tabelle prefix_gallery_imgs erweitert werden um die spalte beschname natürlich so anlegen das auch ein string gespeichert werden kann.

    Wäre froh wenn es der eine oder andere Testen könnte um schwachstellen zu finden. Anregungen sind immer willkommen. Support gibt es Hier.

    Ein kleines Dankeschön für all die Jahre die Ihr mir schon geholfen habt. lächeln


    Zuletzt modifiziert von lordrepha am 25.04.2009 - 06:05:26
    0 Mitglieder finden den Beitrag gut.
  2. #32
    User Pic
    lordrepha Mitglied
    Registriert seit
    11.03.2006
    Beiträge
    1.362
    Beitragswertungen
    22 Beitragspunkte
    es gibt wohl doch noch einen bug..

    die unschöne ansicht wenn gäste draufgehen.... wurde aber oben gefixt..
    0 Mitglieder finden den Beitrag gut.
  3. #33
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Nur so ich hatte da mal ein Modul für geschrieben, was es auf meiner Seite zum Download gibt zwinker

    Ist dann etwas anders gestaltet, aber halt nur so zur Info.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  4. #34
    User Pic
    lordrepha Mitglied
    Registriert seit
    11.03.2006
    Beiträge
    1.362
    Beitragswertungen
    22 Beitragspunkte
    ahhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh



    neeeeee Spass zwinker Mairu habe ich leider nicht gewusst sonst hätte ich mir das auch sparen können....

    aber vielleicht kanns ja doch jemand brauchen....
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Allgemein

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten