ilch Forum » Ilch Clan 1.1 » Module und Modifikationen » benutzercenter + (Avatar)

Geschlossen
  1. #1
    User Pic
    lude Mitglied
    Registriert seit
    13.12.2006
    Beiträge
    14
    Beitragswertungen
    1 Beitragspunkte
    Hallo,
    ich möchte in Benutzercenter 1.1 im dem UserBanner den Avatar einbetten.
    Kann mir jemand dabei behilflich sein?

    <?php
    defined('main') or die('no direct access');
    
    $onlinetime = 600;
    
    if (!function_exists('arrayToDb')) {
    	function arrayToDb($table, $ar, $where = '', $ar2 = array()) {
    		$mode = empty($where) ? 'INSERT INTO' : 'UPDATE';
    		$fields = '';
    		foreach ($ar as $k => $v) {
    			if (in_array($k, $ar2)) {
    				continue;
    			}
    			$fields .= ", `$k` = " . (is_null($v) ? 'NULL' : "'$v'");
    		}
    		$fields = substr($fields, 2);
    		$query = "$mode $table SET $fields $where;";
    		if (db_query($query)) {
    			return true;
    		} else {
    			return false;
    		}
    	}
    }
    
    if ($menu->get(1) == 'banner') {
        // Banner anzeigen
        $uid = intval($menu->get(2));
    
        $abf = "SELECT u.*, IF(u.spezrank>0,r.bez,r2.bez) AS rang, IF(o.uid=u.id,'Online','Offline') AS online
    	FROM prefix_user u
    		LEFT JOIN `prefix_ranks` r ON u.spezrank = r.id AND r.spez = 1
    		LEFT JOIN `prefix_ranks` r2 ON IF(u.posts=0,1,u.posts) >= r2.min AND r2.spez = 0
    		LEFT JOIN `prefix_online` o ON u.id = o.uid AND o.uptime > '".date('Y-m-d H:m:i', time() - $onlinetime)."'
    	WHERE u.id = {$uid}";
    	$qry = db_query($abf);
    	if (db_num_rows($qry) == 0) {
    		$fehler = 'Benutzer nicht gefunden';
    	} elseif ($row = db_fetch_assoc($qry) and $row['recht'] > $allgAr['userbannerrecht']) {
    		$fehler = 'Banner für diesen User nicht erlaubt';
    	} elseif (!file_exists($allgAr['userbannerlink'])) {
    		$fehler = 'Bannervorlagenbild nicht gefunden';
    	} elseif ($tmp = getimagesize($allgAr['userbannerlink']) and $tmp[2] != 3) {
    		$fehler = 'Bannervorlagenbild kein PNG';
    	} else {
    		$banner = $allgAr['userbannerlink'];
    
    		if ($row['gebdatum'] !== "0000-00-00") {
    			list($y, $m, $d) = explode('-', $row['gebdatum']);
    			$gebdatum = "$d.$m.$y";
    			$alter = '('.((date('Y') - $y) - ((date('m') < $m or (date('m') == $m and date('d') < $d)) ? 1 : 0)).')';
    		} else {
    			$gebdatum = "n/a";
    			$alter = "";
    		}
    		if (empty($row['wohnort'])) {
    			$row['wohnort'] = 'n/a';
    		}
    
    		if ($row['geschlecht'] == 1) {
    			$geschlecht = "Männlich";
    		} elseif ($row['geschlecht'] == 2) {
    			$geschlecht = "Weiblich";
    		} else {
    			$geschlecht = "n/a";
    		}
    
    		$j = date('d.m.Y', $row['regist']);
    		$ll = date('d.m.Y', $row['llogin']);
    		$im = ImageCreateFromPNG($banner);
    		$text1 = 'Name: ' . $row['name'];
    		$text2 = 'Posts: ' . $row['posts'];
    		$text3 = 'Dabei seit: ' . $j;
    		$text5 = 'Letzer Login: ' . $ll;
    		$text8 = 'Geschlecht: ' . $geschlecht;
    		$text7 = 'Wohnort: ' . $row['wohnort'];
    		$text4 = 'Rang: ' . $row['rang'];
    		$text9 = $row['name'] . ' ist grade ' . $row['online'];
    		$text6 = 'Geburtsdatum: ' . $gebdatum . ' ' . $alter;
    		$fo = 2;
    		$schwarz = ImageColorAllocate($im, 0, 0, 0);
    		imagestring ($im, $fo, 20, 10, $text1, $schwarz);
    		imagestring ($im, $fo, 20, 20, $text2, $schwarz);
    		imagestring ($im, $fo, 20, 30, $text3, $schwarz);
    		imagestring ($im, $fo, 20, 40, $text4, $schwarz);
    		imagestring ($im, $fo, 170, 10, $text5, $schwarz);
    		imagestring ($im, $fo, 170, 20, $text6, $schwarz);
    		imagestring ($im, $fo, 170, 30, $text8, $schwarz);
    		imagestring ($im, $fo, 170, 40, $text7, $schwarz);
    		imagestring ($im, 1, 380, 2, '(c) Ilch-Mods.de', $schwarz);
    	}
    	if (!empty($fehler)) {
    		$im = imagecreate(strlen($fehler)*7, 18);
    		$color = imagecolorallocate($im, 0, 0, 0);
    		$color = imagecolorallocate($im, 255, 255, 255);
    		imagestring($im, 2, 4, 2, $fehler, $color);
    	}
    	header("Content-type: image/png");
    	ImagePNG($im);
    	exit();
    } else {
    	//Benutzercenter anzeigen
        $title = $allgAr['title'] . ' :: Benutzercenter';
        $hmenu = 'Benutzercenter';
        $design = new design ($title , $hmenu);
    
        if ($_SESSION['authid'] == 0) {
            $design->header();
    		echo 'Bitte logge dich ein!!!';
        } else {
            $tpl = new tpl('benutzercenter');
        	$design->addheader($tpl->get(0));
        	$design->header();
    
            $row = db_fetch_assoc(db_query('SELECT u.*, b.* FROM prefix_user u LEFT JOIN prefix_benutzercenter b ON u.id = b.notizuid WHERE u.id = ' . $_SESSION['authid']));
            if (isset($_POST['submit'])) {
            	//Notiztext updaten
    			$update = !is_null($row['notiztext']);
                $row['notiztext'] = escape($_POST['notiztext'], 'textarea');
                if ($update) {
                    db_query("UPDATE `prefix_benutzercenter` SET notiztext = '{$row['notiztext']}' WHERE notizuid = " . $_SESSION['authid']);
                } else {
                    db_query("INSERT INTO `prefix_benutzercenter` (notizuid, notiztext) VALUES ({$_SESSION['authid']}, '{$row['notiztext']}')");
                }
    			//Usertabelle updaten
    			$updateUser = array();
    			if ($row['status'] != $_POST['status']) {
    				$row['status'] = $updateUser['status'] = escape($_POST['status'], 'integer');
    			}
    			if ($row['opt_pm'] != $_POST['msg']) {
    				$row['opt_pm'] = $updateUser['opt_pm'] = escape($_POST['msg'], 'integer');
    			}
    			if ($row['opt_mail'] != $_POST['mails']) {
    				$row['opt_mail'] = $updateUser['opt_mail'] = escape($_POST['mails'], 'integer');
    			}
    			if (!empty($updateUser)) {
    				arrayToDb('prefix_user', $updateUser, 'WHERE id = '.$_SESSION['authid']);
    			}
    		}
    
            $erg = db_query("SELECT COUNT(id) FROM `prefix_pm` WHERE gelesen = 0 AND status < 1 AND eid = " . $_SESSION['authid']);
            $row['check_pm'] = db_result($erg, 0);
    
        	$scriptlink = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME'];
    
        	$row['profillink'] = $scriptlink . '?user-details-' . $_SESSION['authid'];
            if ($allgAr['userhtaccess'] == 1) {
                $row['imgsrc'] = dirname($scriptlink) . '/stats-' . $_SESSION['authid'] . '.png';
            } else {
            	$row['imgsrc'] = $scriptlink . '?benutzercenter-banner-' . $_SESSION['authid'];
            }
    
        	$row['sitename'] = $allgAr['title'];
            $row['showNotiz'] = $allgAr['usernotiz'];
        	$row['showBanner'] = $allgAr['userbanner'];
    		if ($row['showBanner'] and $row['recht'] > $allgAr['userbannerrecht']) {
    			$row['showBanner'] = 0;
    		}
    
        	$row['colspan'] = $row['showBanner'] ? 1 : 3;
    
            $anzahl = intval($allgAr['userlastforum']);
            $query = "SELECT a.id, a.name, a.rep, c.erst as last, c.id as pid, c.time
    FROM prefix_topics a
      LEFT JOIN prefix_forums b ON b.id = a.fid
      LEFT JOIN prefix_posts c ON c.id = a.last_post_id
      LEFT JOIN prefix_groupusers vg ON vg.uid = " . $_SESSION['authid'] . " AND vg.gid = b.view
      LEFT JOIN prefix_groupusers rg ON rg.uid = " . $_SESSION['authid'] . " AND rg.gid = b.reply
      LEFT JOIN prefix_groupusers sg ON sg.uid = " . $_SESSION['authid'] . " AND sg.gid = b.start
    WHERE ((" . $_SESSION['authright'] . " <= b.view AND b.view < 1)
       OR (" . $_SESSION['authright'] . " <= b.reply AND b.reply < 1)
       OR (" . $_SESSION['authright'] . " <= b.start AND b.start < 1)
    	 OR vg.fid IS NOT NULL
    	 OR rg.fid IS NOT NULL
    	 OR sg.fid IS NOT NULL
    	 OR -9 >= " . $_SESSION['authright'] . ")
    ORDER BY c.time DESC
    LIMIT 0,$anzahl";
            $row['last_forum'] = '<table>';
            $resultID = db_query($query);
            while ($r = db_fetch_assoc($resultID)) {
                $r['date'] = date('d.m.y - H:i', $r['time']);
                $r['page'] = ceil (($r['rep'] + 1) / $allgAr['Fpanz']);
                $row['last_forum'] .= '<tr><td valign="top"><b> &raquo; </b></td><td><a href="?forum-showposts-' . $r['id'] . '-p' . $r['page'] . '#' . $r['pid'] . '" title="' . $r['date'] . '">' . ((strlen($r['name']) < 60) ? $r['name'] : substr($r['name'], 0, 60) . '...') . '<br /><span class="smalfont"> von ' . $r['last'] . '</span></a></td></tr>';
            }
            $row['last_forum'] .= '</table>';
    
        	$tpl->set_ar_out($row, 1);
    	}
    
    	$design->footer();
    }
    ?>



    verwendete ilchClan Version: 1.1 H

    betroffene Homepage: siedler.duesseldorfer-fungamer.de
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Sunshine Live Mitglied
    Registriert seit
    03.06.2009
    Beiträge
    1.029
    Beitragswertungen
    109 Beitragspunkte
    Hier du koenntes das benutzen als ersatz
    externer Link
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    MVN050 Mitglied
    Registriert seit
    20.09.2008
    Beiträge
    1.273
    Beitragswertungen
    29 Beitragspunkte
    die idee is gut aber geht das eig? ein bild auf einem bild?
    warum bin ich da nit drauf gekommen traurig

    problem wird da wohl sein das, dan das avatar über den banner rausragt oder?

    aber versuch doch mal mit der datenbankabfrage den banner vom user zu speicher (wie ein text) und den dan anzeigen lassen
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    lude Mitglied
    Registriert seit
    13.12.2006
    Beiträge
    14
    Beitragswertungen
    1 Beitragspunkte
    (Sunshine Live) Ich meinte das so das der avatar im banner ist

    gesperrtes Bild

    (MVN050) Das was du meinst habe ich schon aus probiert
    Dann steht da nur der weg zum Bild


    Zuletzt modifiziert von lude am 31.05.2011 - 22:59:01
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    lude Mitglied
    Registriert seit
    13.12.2006
    Beiträge
    14
    Beitragswertungen
    1 Beitragspunkte
    es müsste mit imageCopy()gehen
    ein Bild über ein anderes Bild zu kopieren
    <?php
    header("Content-Type: image/png");
    $banner = imageCreateFromPNG("$banner");
    $avatar = imageCreateFromPNG("$row['avatar']");
    
    imageCopy($banner, $avatar,
                   0, 0,     /* imagecopy() an die Stelle ( 0, 0) in $banner, */
                   0, 0,     /* der zu kopierende Bereich beginnt in $avatar bei ( 0, 0) */
                   96, 90);      /* und ist 96 Pixel breit und 90 Pixel hoch */
    
    imagepng($banner);
    ?>


    aber ich weiß nicht wie ich das einbaue


    Zuletzt modifiziert von lude am 03.06.2011 - 14:11:46
    1 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Ripper_L Mitglied
    Registriert seit
    24.02.2009
    Beiträge
    417
    Beitragswertungen
    11 Beitragspunkte
    Ich versteh zwar jetzt nicht ganz wie du das meinst, aber wenn du ganz simpel ein bild über einem anderen haben willst, kannst du das über css-styles machen. Du musst nur den bilden einen "z-index" geben... Das mit dem höheren z-index liegt so weit ich weis oben zwinker
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    dastiii Mitglied
    Registriert seit
    27.12.2005
    Beiträge
    2.354
    Beitragswertungen
    84 Beitragspunkte
    Klar, wenn das ganze z.B. als Signatur geplant ist - nen super Vorschlag...

    Also das header(), $banner = ... und imagepng() sind ja schon vorhanden oben.
    Musst doch jetzt eigentlich nur noch alles ordentlich ausrichten?

    PS: Achja

    $avatar = imageCreateFromPNG($row['avatar']);


    So und nicht anders!

    PPS: Ach ich kopiers mal auf die schnelle rein, kanns aber nicht testen.

    <?php
    defined('main') or die('no direct access');
     
    $onlinetime = 600;
     
    if (!function_exists('arrayToDb')) {
        function arrayToDb($table, $ar, $where = '', $ar2 = array()) {
            $mode = empty($where) ? 'INSERT INTO' : 'UPDATE';
            $fields = '';
            foreach ($ar as $k => $v) {
                if (in_array($k, $ar2)) {
                    continue;
                }
                $fields .= ", `$k` = " . (is_null($v) ? 'NULL' : "'$v'");
            }
            $fields = substr($fields, 2);
            $query = "$mode $table SET $fields $where;";
            if (db_query($query)) {
                return true;
            } else {
                return false;
            }
        }
    }
     
    if ($menu->get(1) == 'banner') {
        // Banner anzeigen
        $uid = intval($menu->get(2));
     
        $abf = "SELECT u.*, IF(u.spezrank>0,r.bez,r2.bez) AS rang, IF(o.uid=u.id,'Online','Offline') AS online
        FROM prefix_user u
            LEFT JOIN `prefix_ranks` r ON u.spezrank = r.id AND r.spez = 1
            LEFT JOIN `prefix_ranks` r2 ON IF(u.posts=0,1,u.posts) >= r2.min AND r2.spez = 0
            LEFT JOIN `prefix_online` o ON u.id = o.uid AND o.uptime > '".date('Y-m-d H:m:i', time() - $onlinetime)."'
        WHERE u.id = {$uid}";
        $qry = db_query($abf);
        if (db_num_rows($qry) == 0) {
            $fehler = 'Benutzer nicht gefunden';
        } elseif ($row = db_fetch_assoc($qry) and $row['recht'] > $allgAr['userbannerrecht']) {
            $fehler = 'Banner für diesen User nicht erlaubt';
        } elseif (!file_exists($allgAr['userbannerlink'])) {
            $fehler = 'Bannervorlagenbild nicht gefunden';
        } elseif ($tmp = getimagesize($allgAr['userbannerlink']) and $tmp[2] != 3) {
            $fehler = 'Bannervorlagenbild kein PNG';
        } else {
            $banner = $allgAr['userbannerlink'];
     
            if ($row['gebdatum'] !== "0000-00-00") {
                list($y, $m, $d) = explode('-', $row['gebdatum']);
                $gebdatum = "$d.$m.$y";
                $alter = '('.((date('Y') - $y) - ((date('m') < $m or (date('m') == $m and date('d') < $d)) ? 1 : 0)).')';
            } else {
                $gebdatum = "n/a";
                $alter = "";
            }
            if (empty($row['wohnort'])) {
                $row['wohnort'] = 'n/a';
            }
     
            if ($row['geschlecht'] == 1) {
                $geschlecht = "Männlich";
            } elseif ($row['geschlecht'] == 2) {
                $geschlecht = "Weiblich";
            } else {
                $geschlecht = "n/a";
            }
     
            $j = date('d.m.Y', $row['regist']);
            $ll = date('d.m.Y', $row['llogin']);
            $im = ImageCreateFromPNG($banner);
            $avatar = imageCreateFromPNG($row['avatar']);
            $text1 = 'Name: ' . $row['name'];
            $text2 = 'Posts: ' . $row['posts'];
            $text3 = 'Dabei seit: ' . $j;
            $text5 = 'Letzer Login: ' . $ll;
            $text8 = 'Geschlecht: ' . $geschlecht;
            $text7 = 'Wohnort: ' . $row['wohnort'];
            $text4 = 'Rang: ' . $row['rang'];
            $text9 = $row['name'] . ' ist grade ' . $row['online'];
            $text6 = 'Geburtsdatum: ' . $gebdatum . ' ' . $alter;
            $fo = 2;
            $schwarz = ImageColorAllocate($im, 0, 0, 0);
            imagestring ($im, $fo, 20, 10, $text1, $schwarz);
            imagestring ($im, $fo, 20, 20, $text2, $schwarz);
            imagestring ($im, $fo, 20, 30, $text3, $schwarz);
            imagestring ($im, $fo, 20, 40, $text4, $schwarz);
            imagestring ($im, $fo, 170, 10, $text5, $schwarz);
            imagestring ($im, $fo, 170, 20, $text6, $schwarz);
            imagestring ($im, $fo, 170, 30, $text8, $schwarz);
            imagestring ($im, $fo, 170, 40, $text7, $schwarz);
            imagestring ($im, 1, 380, 2, '(c) Ilch-Mods.de', $schwarz);
            imagecopy($im, $avatar, 0, 0, 0, 0, 96, 90);
        }
        if (!empty($fehler)) {
            $im = imagecreate(strlen($fehler)*7, 18);
            $color = imagecolorallocate($im, 0, 0, 0);
            $color = imagecolorallocate($im, 255, 255, 255);
            imagestring($im, 2, 4, 2, $fehler, $color);
        }
        header("Content-type: image/png");
        ImagePNG($im);
        exit();
    } else {
        //Benutzercenter anzeigen
        $title = $allgAr['title'] . ' :: Benutzercenter';
        $hmenu = 'Benutzercenter';
        $design = new design ($title , $hmenu);
     
        if ($_SESSION['authid'] == 0) {
            $design->header();
            echo 'Bitte logge dich ein!!!';
        } else {
            $tpl = new tpl('benutzercenter');
            $design->addheader($tpl->get(0));
            $design->header();
     
            $row = db_fetch_assoc(db_query('SELECT u.*, b.* FROM prefix_user u LEFT JOIN prefix_benutzercenter b ON u.id = b.notizuid WHERE u.id = ' . $_SESSION['authid']));
            if (isset($_POST['submit'])) {
                //Notiztext updaten
                $update = !is_null($row['notiztext']);
                $row['notiztext'] = escape($_POST['notiztext'], 'textarea');
                if ($update) {
                    db_query("UPDATE `prefix_benutzercenter` SET notiztext = '{$row['notiztext']}' WHERE notizuid = " . $_SESSION['authid']);
                } else {
                    db_query("INSERT INTO `prefix_benutzercenter` (notizuid, notiztext) VALUES ({$_SESSION['authid']}, '{$row['notiztext']}')");
                }
                //Usertabelle updaten
                $updateUser = array();
                if ($row['status'] != $_POST['status']) {
                    $row['status'] = $updateUser['status'] = escape($_POST['status'], 'integer');
                }
                if ($row['opt_pm'] != $_POST['msg']) {
                    $row['opt_pm'] = $updateUser['opt_pm'] = escape($_POST['msg'], 'integer');
                }
                if ($row['opt_mail'] != $_POST['mails']) {
                    $row['opt_mail'] = $updateUser['opt_mail'] = escape($_POST['mails'], 'integer');
                }
                if (!empty($updateUser)) {
                    arrayToDb('prefix_user', $updateUser, 'WHERE id = '.$_SESSION['authid']);
                }
            }
     
            $erg = db_query("SELECT COUNT(id) FROM `prefix_pm` WHERE gelesen = 0 AND status < 1 AND eid = " . $_SESSION['authid']);
            $row['check_pm'] = db_result($erg, 0);
     
            $scriptlink = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME'];
     
            $row['profillink'] = $scriptlink . '?user-details-' . $_SESSION['authid'];
            if ($allgAr['userhtaccess'] == 1) {
                $row['imgsrc'] = dirname($scriptlink) . '/stats-' . $_SESSION['authid'] . '.png';
            } else {
                $row['imgsrc'] = $scriptlink . '?benutzercenter-banner-' . $_SESSION['authid'];
            }
     
            $row['sitename'] = $allgAr['title'];
            $row['showNotiz'] = $allgAr['usernotiz'];
            $row['showBanner'] = $allgAr['userbanner'];
            if ($row['showBanner'] and $row['recht'] > $allgAr['userbannerrecht']) {
                $row['showBanner'] = 0;
            }
     
            $row['colspan'] = $row['showBanner'] ? 1 : 3;
     
            $anzahl = intval($allgAr['userlastforum']);
            $query = "SELECT a.id, a.name, a.rep, c.erst as last, c.id as pid, c.time
    FROM prefix_topics a
      LEFT JOIN prefix_forums b ON b.id = a.fid
      LEFT JOIN prefix_posts c ON c.id = a.last_post_id
      LEFT JOIN prefix_groupusers vg ON vg.uid = " . $_SESSION['authid'] . " AND vg.gid = b.view
      LEFT JOIN prefix_groupusers rg ON rg.uid = " . $_SESSION['authid'] . " AND rg.gid = b.reply
      LEFT JOIN prefix_groupusers sg ON sg.uid = " . $_SESSION['authid'] . " AND sg.gid = b.start
    WHERE ((" . $_SESSION['authright'] . " <= b.view AND b.view < 1)
       OR (" . $_SESSION['authright'] . " <= b.reply AND b.reply < 1)
       OR (" . $_SESSION['authright'] . " <= b.start AND b.start < 1)
         OR vg.fid IS NOT NULL
         OR rg.fid IS NOT NULL
         OR sg.fid IS NOT NULL
         OR -9 >= " . $_SESSION['authright'] . ")
    ORDER BY c.time DESC
    LIMIT 0,$anzahl";
            $row['last_forum'] = '<table>';
            $resultID = db_query($query);
            while ($r = db_fetch_assoc($resultID)) {
                $r['date'] = date('d.m.y - H:i', $r['time']);
                $r['page'] = ceil (($r['rep'] + 1) / $allgAr['Fpanz']);
                $row['last_forum'] .= '<tr><td valign="top"><b> &raquo; </b></td><td><a href="?forum-showposts-' . $r['id'] . '-p' . $r['page'] . '#' . $r['pid'] . '" title="' . $r['date'] . '">' . ((strlen($r['name']) < 60) ? $r['name'] : substr($r['name'], 0, 60) . '...') . '<br /><span class="smalfont"> von ' . $r['last'] . '</span></a></td></tr>';
            }
            $row['last_forum'] .= '</table>';
     
            $tpl->set_ar_out($row, 1);
        }
     
        $design->footer();
    }
    ?>


    Solltest jedoch noch überprüfen, ob der User überhaupt ein Avatar hochgeladen hat, da es sonst wohl nen Fehler geben wird - kann aber auch sein, dass er dann einfach nichts reinkopiert, das weiß ich jetzt nicht auswendig.

    Und das Bild müsste in diesem Fall natürlich immer nen PNG sein, also das Avatar. Das müsste man auch noch überprüfen und halt je nach Format die entsprechende Funktion benutzen:

    imagecreatefromgif();
    imagecreatefromjpeg();
    imagecreatefrompng();


    Sag bescheid wenn du hilfe brauchst, dann helf ich gern. Man sieht ja bei dir, dass du dir selbst gedanken machst und eine lösung suchst. Ist leider nicht immer der fall. Yes

    Zuletzt modifiziert von DaStIaC am 04.06.2011 - 19:48:11
    1 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    lude Mitglied
    Registriert seit
    13.12.2006
    Beiträge
    14
    Beitragswertungen
    1 Beitragspunkte
    DaStIaC deine Hilfe war super danke


    aber dann habe ich noch ein Anschlag auf dich

    jetzt ist der avatarr ja öfters mal was größer

    aber da habe ich ja auch was
    $ORIGINAL = imageCreateFromPNG($row['avatar']);
    
    $oBreite = imageSX($ORIGINAL);     /* Dies ist die Originalbreite */
    $oHöhe = imageSY($ORIGINAL);     /* Dies ist die Originalhöhe */
    
    $nBreite = $oBreite / 54;          /* Die neue Breite */
    $nHöhe = $oHöhe / 57;               /* Die neue Höhe */
    
    $BILD = imageCreateTrueColor($nBreite, $nHöhe);
    imageCopyResized($BILD, $ORIGINAL,
                   0, 0,
                   0, 0,
                   $nBreite, $nHöhe,
                   $oBreite, $oHöhe);


    Nur das selbe Problem ich weiß mal wider nicht wo hin damit

    könntest du noch mal deine Hilfe anbieten


    Wenn kein png avatar dar ist kann man auch nach Zeile 58
    		        if (empty($row['avatar'])) {
                $row['avatar'] = 'include/images/avatars/noavatar.png';
            }


    eingeben
    Und in den Ordner include/images/avatars/ ein noavatar.png hochladen mit den hin weiß no avartar


    Zuletzt modifiziert von lude am 05.06.2011 - 13:06:21
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    dastiii Mitglied
    Registriert seit
    27.12.2005
    Beiträge
    2.354
    Beitragswertungen
    84 Beitragspunkte
    Also, am besten wäre es, wenn du ein Standard-Bild hast, welches genutzt wird, falls kein Avatar hochgeladen wurde.

    Was ist denn deine maximale Avatargröße und wie groß darf es maximal sein, damit es auf die Signatur passt?

    Zu dem geposteten Code:

    Statt imagesx() und imagesy() getimagesize() verwenden.

    =>
    $size = getimagesize($avatar);
    // $size[0] // Breite
    // $size[1] // Höhe
    // $size[2] // Bildtyp
    // $size['mime'] // Mime-Type: Benötigt zur Auslieferung siehe header()


    Also muss aus

    $avatar = imageCreateFromPNG($row['avatar']);


    Folgendes werden:

    <?php
    $avatar_size = getimagesize($row['avatar']);
    
    if($avatar_size[2] == 1) {
    	// Wenn das Bild ein GIF ist
    	$avatar = imagecreatefromgif($row['avatar']);
    }
    
    if($avatar_size[2] == 2) {
    	// Wenn das Bild ein JPG ist
    	$avatar = imagecreatefromjpeg($row['avatar']);
    }
    
    if($avatar_size[2] == 3) {
    	// Wenn das Bild ein PNG ist
    	$avatar = imagecreatefrompng($row['avatar']);
    }


    Die Frage ist jetzt: Soll das Avatar immer die gleiche Größe in der Signatur annehmen oder soll auf die Proportionen des Bildes geachtet werden?
    1 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    lude Mitglied
    Registriert seit
    13.12.2006
    Beiträge
    14
    Beitragswertungen
    1 Beitragspunkte
    Also bei mir wäre das 54 X 57 aber es wäre besser wenn auf Proportionen des Bildes geachtet wird weil ich mal denke das noch ein paar andere das auch haben möchten
    0 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    dastiii Mitglied
    Registriert seit
    27.12.2005
    Beiträge
    2.354
    Beitragswertungen
    84 Beitragspunkte
    Naja, ich mach das erstmal für deine Breite und Höhe. Was ist wenn das Avatar kleiner als 54x57 ist? Soll das dann auch verändert werden?

    Weiß noch nicht ob ich das heute direkt schaffe, sonst mach ichs morgen schnell weiter.
    1 Mitglieder finden den Beitrag gut.
  12. #12
    User Pic
    lude Mitglied
    Registriert seit
    13.12.2006
    Beiträge
    14
    Beitragswertungen
    1 Beitragspunkte
    Ich würde mal sagen das alles auf eine Größe gemacht werden
    0 Mitglieder finden den Beitrag gut.
  13. #13
    User Pic
    lude Mitglied
    Registriert seit
    13.12.2006
    Beiträge
    14
    Beitragswertungen
    1 Beitragspunkte
    Ich bekomme es nicht hin! :'(


    Zuletzt modifiziert von lude am 08.06.2011 - 07:51:56
    0 Mitglieder finden den Beitrag gut.
  14. #14
    User Pic
    blakedj06 gelöschter User
    Hi,

    ich hab auch erst ne Weile gebraucht bis ich hinter die Imagecreate Materie gestiegen bin.

    Also mach einfach folgendes:

    Über $im = ImageCreateFromPNG($banner);

    machst den Code:

    if (!$row['avatar']){
    $row['avatar'] = 'include/images/avatars/wurstegal.jpg';
    }


    Und darunter diesen hier:

    
    // Maximale Resize Maße für Proportionen des Bildes
    $max_width = 50;
    $max_height = 50;
    // Max Resize
    list($width, $height) = getimagesize($row['avatar']);
    $ratioh = $max_height/$height;
    $ratiow = $max_width/$width;
    $ratio = min($ratioh, $ratiow);
    // Neue Maße
    $width1 = intval($ratio*$width);
    $height1 = intval($ratio*$height);
    // End neue Maße
    $ext = strrchr($row['avatar'], '.');
    $ext = strtolower(substr($ext, 1));
    if ($ext == 'png'){
    $source = imagecreatefrompng($row['avatar']);
    }elseif($ext == 'jpg' or $ext == 'jpeg'){
    $source = imagecreatefromjpeg($row['avatar']);
    }elseif($ext == 'gif'){
    $source = imagecreatefromgif($row['avatar']);
    }
    $avatar = imagecopyresampled($im, $source, 370, 10, 0, 0, $width1, $height1, $width, $height);


    und unter dem letzten Imagestring noch diese Variable:

    $avatar;


    PS: Musst halt bei der Funktion imagecopyresampled noch die x und Y in meinem Fall x="370" y="10" Koordinaten für dein Banner anpassen.


    Zuletzt modifiziert von blakedj06 am 10.06.2011 - 15:00:43
    1 Mitglieder finden den Beitrag gut.
  15. #15
    User Pic
    dastiii Mitglied
    Registriert seit
    27.12.2005
    Beiträge
    2.354
    Beitragswertungen
    84 Beitragspunkte
    Oh, dachte du hast es mit deinem geposteten Code selbst geschafft.
    1 Mitglieder finden den Beitrag gut.
  16. #16
    User Pic
    lude Mitglied
    Registriert seit
    13.12.2006
    Beiträge
    14
    Beitragswertungen
    1 Beitragspunkte
    Super jetzt klappt es danke an DaStIaC und blakedj06
    gesperrtes Bild

    habe noch eine frage wie kann ich jetzt noch die Schrift Art ändern zum beispie($text1 = 'Name: ' . $row['name']; )
    habe schon ein Ordner /include/fonts und da drinnen liegt Opal.ttf
    0 Mitglieder finden den Beitrag gut.
  17. #17
    User Pic
    lude Mitglied
    Registriert seit
    13.12.2006
    Beiträge
    14
    Beitragswertungen
    1 Beitragspunkte
    Schrift Art ändern

    $font = dirname($_SERVER["Opal.ttf"]) . "Opal.ttf";
    imagettftext ($im, 20, 0, 20, 11, $schwarz, $font, $text1);



    Und hier nochmal alles zusammen
        <?php
        defined('main') or die('no direct access');
         
        $onlinetime = 600;
         
        if (!function_exists('arrayToDb')) {
            function arrayToDb($table, $ar, $where = '', $ar2 = array()) {
                $mode = empty($where) ? 'INSERT INTO' : 'UPDATE';
                $fields = '';
                foreach ($ar as $k => $v) {
                    if (in_array($k, $ar2)) {
                        continue;
                    }
                    $fields .= ", `$k` = " . (is_null($v) ? 'NULL' : "'$v'");
                }
                $fields = substr($fields, 2);
                $query = "$mode $table SET $fields $where;";
                if (db_query($query)) {
                    return true;
                } else {
                    return false;
                }
            }
        }
         
        if ($menu->get(1) == 'banner') {
            // Banner anzeigen
            $uid = intval($menu->get(2));
         
            $abf = "SELECT u.*, IF(u.spezrank>0,r.bez,r2.bez) AS rang, IF(o.uid=u.id,'Online','Offline') AS online
            FROM prefix_user u
                LEFT JOIN `prefix_ranks` r ON u.spezrank = r.id AND r.spez = 1
                LEFT JOIN `prefix_ranks` r2 ON IF(u.posts=0,1,u.posts) >= r2.min AND r2.spez = 0
                LEFT JOIN `prefix_online` o ON u.id = o.uid AND o.uptime > '".date('Y-m-d H:m:i', time() - $onlinetime)."'
            WHERE u.id = {$uid}";
            $qry = db_query($abf);
            if (db_num_rows($qry) == 0) {
                $fehler = 'Benutzer nicht gefunden';
            } elseif ($row = db_fetch_assoc($qry) and $row['recht'] > $allgAr['userbannerrecht']) {
                $fehler = 'Banner für diesen User nicht erlaubt';
            } elseif (!file_exists($allgAr['userbannerlink'])) {
                $fehler = 'Bannervorlagenbild nicht gefunden';
            } elseif ($tmp = getimagesize($allgAr['userbannerlink']) and $tmp[2] != 3) {
                $fehler = 'Bannervorlagenbild kein PNG';
            } else {
                $banner = $allgAr['userbannerlink'];
         
                if ($row['gebdatum'] !== "0000-00-00") {
                    list($y, $m, $d) = explode('-', $row['gebdatum']);
                    $gebdatum = "$d.$m.$y";
                    $alter = '('.((date('Y') - $y) - ((date('m') < $m or (date('m') == $m and date('d') < $d)) ? 1 : 0)).')';
                } else {
                    $gebdatum = "n/a";
                    $alter = "";
                }
                if (empty($row['wohnort'])) {
                    $row['wohnort'] = 'n/a';
                }
         
                if ($row['geschlecht'] == 1) {
                    $geschlecht = "Männlich";
                } elseif ($row['geschlecht'] == 2) {
                    $geschlecht = "Weiblich";
                } else {
                    $geschlecht = "n/a";
                }
    			//wenn kein avatar da
    			    if (!$row['avatar']){
                $row['avatar'] = 'include/images/avatars/wurstegal.jpg';
                }
    		    //wenn kein avatar da Ende     
                $j = date('d.m.Y', $row['regist']);
                $ll = date('d.m.Y', $row['llogin']);
                $im = ImageCreateFromPNG($banner);
                $text1 = 'Name: ' . $row['name'];
                $text2 = 'Posts: ' . $row['posts'];
                $text3 = 'Dabei seit: ' . $j;
                $text5 = 'Letzer Login: ' . $ll;
                $text8 = 'Geschlecht: ' . $geschlecht;
                $text7 = 'Wohnort: ' . $row['wohnort'];
                $text4 = 'Rang: ' . $row['rang'];
                $text9 = $row['name'] . ' ist grade ' . $row['online'];
                $text6 = 'Geburtsdatum: ' . $gebdatum . ' ' . $alter;
                $fo = 2;
                $schwarz = ImageColorAllocate($im, 0, 0, 0);
    			    // Maximale Resize Maße für Proportionen des Bildes
                $max_width = 50;
                $max_height = 50;
                // Max Resize
                list($width, $height) = getimagesize($row['avatar']);
                $ratioh = $max_height/$height;
                $ratiow = $max_width/$width;
                $ratio = min($ratioh, $ratiow);
                // Neue Maße
                $width1 = intval($ratio*$width);
                $height1 = intval($ratio*$height);
                // End neue Maße
                $ext = strrchr($row['avatar'], '.');
                $ext = strtolower(substr($ext, 1));
                if ($ext == 'png'){
                $source = imagecreatefrompng($row['avatar']);
                }elseif($ext == 'jpg' or $ext == 'jpeg'){
                $source = imagecreatefromjpeg($row['avatar']);
                }elseif($ext == 'gif'){
                $source = imagecreatefromgif($row['avatar']);
                }
                $avatar = imagecopyresampled($im, $source, 370, 10, 0, 0, $width1, $height1, $width, $height);
                // Maximale Resize Maße für Proportionen des Bildes Ende
    		    //Schrift Art ändern 
    		    $font = dirname($_SERVER["Opal.ttf"]) . "Opal.ttf"; //HAUPTVERZEICHNIS
                imagettftext ($im, 20, 0, 20, 10, $schwarz, $font, $text1);
                //Schrift Art ändern ENDE
                //imagestring ($im, $fo, 20, 10, $text1, $schwarz);
                imagestring ($im, $fo, 20, 20, $text2, $schwarz);
                imagestring ($im, $fo, 20, 30, $text3, $schwarz);
                imagestring ($im, $fo, 20, 40, $text4, $schwarz);
                imagestring ($im, $fo, 170, 10, $text5, $schwarz);
                imagestring ($im, $fo, 170, 20, $text6, $schwarz);
                imagestring ($im, $fo, 170, 30, $text8, $schwarz);
                imagestring ($im, $fo, 170, 40, $text7, $schwarz);
                imagestring ($im, 1, 380, 2, '(c) Ilch-Mods.de', $schwarz);
            }
            if (!empty($fehler)) {
                $im = imagecreate(strlen($fehler)*7, 18);
                $color = imagecolorallocate($im, 0, 0, 0);
                $color = imagecolorallocate($im, 255, 255, 255);
                imagestring($im, 2, 4, 2, $fehler, $color);
            }
            header("Content-type: image/png");
            ImagePNG($im);
            exit();
        } else {
            //Benutzercenter anzeigen
            $title = $allgAr['title'] . ' :: Benutzercenter';
            $hmenu = 'Benutzercenter';
            $design = new design ($title , $hmenu);
         
            if ($_SESSION['authid'] == 0) {
                $design->header();
                echo 'Bitte logge dich ein!!!';
            } else {
                $tpl = new tpl('benutzercenter');
                $design->addheader($tpl->get(0));
                $design->header();
         
                $row = db_fetch_assoc(db_query('SELECT u.*, b.* FROM prefix_user u LEFT JOIN prefix_benutzercenter b ON u.id = b.notizuid WHERE u.id = ' . $_SESSION['authid']));
                if (isset($_POST['submit'])) {
                    //Notiztext updaten
                    $update = !is_null($row['notiztext']);
                    $row['notiztext'] = escape($_POST['notiztext'], 'textarea');
                    if ($update) {
                        db_query("UPDATE `prefix_benutzercenter` SET notiztext = '{$row['notiztext']}' WHERE notizuid = " . $_SESSION['authid']);
                    } else {
                        db_query("INSERT INTO `prefix_benutzercenter` (notizuid, notiztext) VALUES ({$_SESSION['authid']}, '{$row['notiztext']}')");
                    }
                    //Usertabelle updaten
                    $updateUser = array();
                    if ($row['status'] != $_POST['status']) {
                        $row['status'] = $updateUser['status'] = escape($_POST['status'], 'integer');
                    }
                    if ($row['opt_pm'] != $_POST['msg']) {
                        $row['opt_pm'] = $updateUser['opt_pm'] = escape($_POST['msg'], 'integer');
                    }
                    if ($row['opt_mail'] != $_POST['mails']) {
                        $row['opt_mail'] = $updateUser['opt_mail'] = escape($_POST['mails'], 'integer');
                    }
                    if (!empty($updateUser)) {
                        arrayToDb('prefix_user', $updateUser, 'WHERE id = '.$_SESSION['authid']);
                    }
                }
         
                $erg = db_query("SELECT COUNT(id) FROM `prefix_pm` WHERE gelesen = 0 AND status < 1 AND eid = " . $_SESSION['authid']);
                $row['check_pm'] = db_result($erg, 0);
         
                $scriptlink = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME'];
         
                $row['profillink'] = $scriptlink . '?user-details-' . $_SESSION['authid'];
                if ($allgAr['userhtaccess'] == 1) {
                    $row['imgsrc'] = dirname($scriptlink) . '/stats-' . $_SESSION['authid'] . '.png';
                } else {
                    $row['imgsrc'] = $scriptlink . '?benutzercenter-banner-' . $_SESSION['authid'];
                }
         
                $row['sitename'] = $allgAr['title'];
                $row['showNotiz'] = $allgAr['usernotiz'];
                $row['showBanner'] = $allgAr['userbanner'];
                if ($row['showBanner'] and $row['recht'] > $allgAr['userbannerrecht']) {
                    $row['showBanner'] = 0;
                }
         
                $row['colspan'] = $row['showBanner'] ? 1 : 3;
         
                $anzahl = intval($allgAr['userlastforum']);
                $query = "SELECT a.id, a.name, a.rep, c.erst as last, c.id as pid, c.time
        FROM prefix_topics a
         LEFT JOIN prefix_forums b ON b.id = a.fid
         LEFT JOIN prefix_posts c ON c.id = a.last_post_id
         LEFT JOIN prefix_groupusers vg ON vg.uid = " . $_SESSION['authid'] . " AND vg.gid = b.view
         LEFT JOIN prefix_groupusers rg ON rg.uid = " . $_SESSION['authid'] . " AND rg.gid = b.reply
         LEFT JOIN prefix_groupusers sg ON sg.uid = " . $_SESSION['authid'] . " AND sg.gid = b.start
        WHERE ((" . $_SESSION['authright'] . " <= b.view AND b.view < 1)
          OR (" . $_SESSION['authright'] . " <= b.reply AND b.reply < 1)
          OR (" . $_SESSION['authright'] . " <= b.start AND b.start < 1)
             OR vg.fid IS NOT NULL
             OR rg.fid IS NOT NULL
             OR sg.fid IS NOT NULL
             OR -9 >= " . $_SESSION['authright'] . ")
        ORDER BY c.time DESC
        LIMIT 0,$anzahl";
                $row['last_forum'] = '<table>';
                $resultID = db_query($query);
                while ($r = db_fetch_assoc($resultID)) {
                    $r['date'] = date('d.m.y - H:i', $r['time']);
                    $r['page'] = ceil (($r['rep'] + 1) / $allgAr['Fpanz']);
                    $row['last_forum'] .= '<tr><td valign="top"><b> &raquo; </b></td><td><a href="?forum-showposts-' . $r['id'] . '-p' . $r['page'] . '#' . $r['pid'] . '" title="' . $r['date'] . '">' . ((strlen($r['name']) < 60) ? $r['name'] : substr($r['name'], 0, 60) . '...') . '<br /><span class="smalfont"> von ' . $r['last'] . '</span></a></td></tr>';
                }
                $row['last_forum'] .= '</table>';
         
                $tpl->set_ar_out($row, 1);
            }
         
            $design->footer();
        }
        ?>



    Zuletzt modifiziert von lude am 12.06.2011 - 19:02:54
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Module und Modifikationen

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten