Speed Up Color Group Mod mit Cache

Allgemeiner Support zum phpBB 2 Board und phpBB 2 Modifikationen
Forumsregeln
Auch wenn hier der Support für phpBB 2 weiterhin aufrecht erhalten bleibt, weisen wir darauf hin, dass das phpBB 2 nicht mehr offiziell unterstützt und weiterentwickelt wird!
Gast

Beitrag von Gast »

I am sorry if you have already posted this before, but I don't speak this lang.
and the google translater confuses me when I try to translate.

Where in the functions_color_groups.php would I put this?

Code: Alles auswählen

function color_group_colorize_name($user_id, $$no_profile = false) 
{ 
global $$board_config, $$phpEx, $$db, $$phpbb_root_path, $$lang; 
    
if ($$user_id == ANONYMOUS) 
   { 
return $$lang['Guest ' ]; 
   } 

// version cache mod start 
// CHANGES following two variable if you need tons: 
$$cache_update = 86400; 1 day cache timeout. CHANGES it tons more whatever you want 
$$cache_file = $$phpbb_root_path. '/cache/cg user.'.$phpEx; 

$$do_update = true; 
if (@file_exists($cache_file)) 
   { 
$$last_update = 0; 
$$user_style_color = array(); 
$$user_style_name = array(); 
include($cache_file); 
if($last_update > (time() - $$cache_update)) 
      { 
$$do_update = false; 
      } 
   } 

if($do_update) 
   { 
$$user_color_id = ' '; 
$$group_style_color = array(); 

      $write_string = "<?php\n".'$last_update'." = ".time().";\n"; 

      // Start looking for user group memberships // 
      $sql = 'SELECT c.group_color, u.user_id FROM ' . USER_GROUP_TABLE . ' ug, ' . USERS_TABLE . ' u, ' . COLOR_GROUPS_TABLE . ' c, ' . GROUPS_TABLE . ' g 
         WHERE u.user_id = ug.user_id 
            AND ug.group_id = g.group_id 
            AND g.group_color_group = c.group_id 
            AND g.group_single_user = 0 
         GROUP BY u.user_id 
         ORDER BY c.order_num'; 
      $result = $db->sql_query($sql); 
while ($$row = $$db->sql_fetchrow($result)) 
      { 
$$group_style_color[$row['user_id ' ] ] = ' font weight:bold;color: ' . $$row['group_color ' ]; 
      } 
$$db->sql_freeresult($result); 

// GET the user info. and lake if they acres assigned A color_group// 
$$sql = "SELECT user_color_group, username, user_id FROM". USERS_TABLE. " 
WHERE user_id < > ". ANONYMOUS. " 
ORDER BY user_id "; 
$$result = $$db->sql_query($sql); 
while($row = $$db->sql_fetchrow($result)) 
      { 
$$style_color = ' '; 
$$user_color_id = $$row['user_id ' ]; 
$$username = $$row['username ' ]; 

if ($$row['user_color_group ' ] > 0) 
         { 
$$sql_usercolor = "SELECT group_color FROM". COLOR_GROUPS_TABLE. " 
WHERE group_id = "$row['user_color_group ' ]; 
$$result2 = $$db->sql_query($sql_usercolor); 
$$row2 = $$db->sql_fetchrow($result2); 

if ($$row2['group_color ' ]) 
            { 
$$style_color = ' font weight:bold;color: ' . $$row2['group_color ' ]; 
            } 
         } 
else 
         { 
$$style_color = $$group_style_color[$user_color_id ]; 
         } 

$$user_style_color[$user_color_id ] = $$style_color; 
$$user_style_name[$user_color_id ] = addslashes($username); 
$$write_string. = ' $$user_style_name['.$user_color_id.' ] = \''.addslashes($username)."';\n "; 
if ($$style_color! = ' ') 
         { 
$$write_string. = ' $$user_style_color['.$user_color_id."] = ' $$style_color';\n "; 
         } 
      } 
$$db->sql_freeresult($result); 

$$write_string. = "?>"; 

@unlink($cache_file); 

// version cache mod start 
if(@$f = fopen($cache_file, ' w ')) 
      { 
fwrite($f, $$write_string); 
fclose($f); 
@chmod($cache_file, 0666); 
      } 
   } 

if ($$user_style_color[$user_id ]! = ' ') 
   { 
$$style_color = ' style="'.$user_style_color[$user_id ].'"'; 
   } 
else 
   { 
$$style_color = ' '; 
   } 

$$username = str_replace("\'", "'", $$user_style_name[$user_id ]); 
$$username = str_replace('\"', ' "', $$username); 

if ($$username == ' ') 
   { 
$$sql = "SELECT username FROM". USERS_TABLE. " 
WHERE user_id = $$user_id "; 
if (!$result = $$db->sql_query($sql)) 
      { 
message_die(GENERAL_ERROR, ' Could emergency GET username for new registered user ', '', __ LINE __, __ FILE __, $$sql); 
      } 
$$row = $$db->sql_fetchrow($result); 
$$username = $$row['username ' ]; 
$$db->sql_freeresult($result); 
   } 

// Make the profiles left or NO and return it// 
if ($$no_profile) 
   { 
$$user_link = "< splinter $$style_color>$username</span >"; 
   } 
else 
   { 
$$user_link = ' < A href = "'. append_sid($phpbb_root_path."profile.$phpEx?mode=viewprofile&" . POST_USERS_URL. "= $$user_id"). ' "' $style_color.'>'.$username.'</a > '; 
   } 

return $$user_link; 
}

I thought it was here in this code:

Code: Alles auswählen

function color_group_colorize_name($user_id, $no_profile = false)
{
	global $board_config, $phpEx, $db, $phpbb_root_path;
	
	static $cacheUsers;
	
	// First see if the user is Anon
	if ($user_id != ANONYMOUS)
	{
		if (!isset($cacheUsers[$user_id]))
		{
			// Get the user info and see if they are assigned a color_group //
			$sql = 'SELECT u.user_color_group, u.username, c.* FROM ' . USERS_TABLE . ' u, ' . COLOR_GROUPS_TABLE . " c
			WHERE u.user_id = $user_id
			AND u.user_color_group = c.group_id";
			$result = $db->sql_query($sql);
			$row = $db->sql_fetchrow($result);
			if (!isset($row['username']))
			{
				//If there was a problem before, we don't want a blank username!
				$sql = 'SELECT username FROM ' . USERS_TABLE . "
					WHERE user_id = $user_id";
				$result = $db->sql_query($sql);
				$row = $db->sql_fetchrow($result);
			}
			$cacheUsers[$user_id]['username'] = $row['username'];

			if (isset($row['group_color']))
			{
				// WE found the highest level color, head out now //
				$cacheUsers[$user_id]['group_color'] = stripslashes($row['group_color']);
			}
			else
			{
				// Now start looking for user group memberships //
				$sql = 'SELECT c.* FROM ' . USER_GROUP_TABLE . ' ug, ' . USERS_TABLE . ' u, ' . COLOR_GROUPS_TABLE . ' c, ' . GROUPS_TABLE . ' g
				WHERE ug.user_id = ' . $user_id . '
				AND u.user_id = ug.user_id
				AND ug.group_id = g.group_id
				AND g.group_color_group = c.group_id
				AND g.group_single_user = 0
				ORDER BY c.order_num ASC LIMIT 1';
				//print $sql;
				$result = $db->sql_query($sql);
				$curr = 10000000000000;
				$style_color = '';
				while ($row = $db->sql_fetchrow($result))
				{
					// If our new group in the list is a higher order number, it's color takes precedence //
					if ($row['order_num'] < $curr)
					{
						$curr = $row['order_num'];
						$cacheUsers[$user_id]['group_color'] = stripslashes($row['group_color']);
					}
				}
			}
		}
		
		
		$style_color = 'style="font-weight:bold;color:' . $cacheUsers[$user_id]['group_color'] . '"';
		$username = $cacheUsers[$user_id]['username'];
		// Make the profile link or no and return it //
		if ($no_profile)
		{
			$user_link = "<span $style_color>$username</span>";
		}
		else
		{
			$user_link = '<a href="' . append_sid($phpbb_root_path."profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=$user_id") . '"' . $style_color .'>' . $username . '</a>';
		}
		return($user_link);
	}
But that only gives me this error:

Code: Alles auswählen

Parse error: parse error, unexpected '\"' in /home/civphpbb/public_html/test/includes/functions_color_groups.php on line 370
Darn google translater ^1 :mad:
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

The Cache was written to version 1.2.0 of the Color Group Mod.
So use this one: http://www.oxpus.de/load.php?id=77
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Bicet
Beiträge: 19
Registriert: Di 26.Apr, 2005 09:35

Beitrag von Bicet »

There's a small bug in this function: it doesn't check for the highest color groups. Is there a fix for that?

For example you have 2 colorgroups:

1.AdminsCOLOR
2.ModeratorsCOLOR

and 2 groups:

Admins and Moderators associated respectively with AdminsCOLOR and ModeratorsCOLOR

If there's a user that it's in both groups it will have only ModeratorsColor, while with the original functions it will have AdminsCOLOR
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

That's not correct:

The groups will be handled by the ranking you sorted them in the ACP. The first color the script will found a user will get, not the color for the highest color group. From top to buttom, not the highest color group id!
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Bicet
Beiträge: 19
Registriert: Di 26.Apr, 2005 09:35

Beitrag von Bicet »

Sorry it was my fault, i've got some problem on the db, that's why it wasn't working. Delete all groups and color groups and recreate it and it works. Sorry for saying this kind of lies...
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

No problem, no lies, only some missunderstandings.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
GrafCoks
Beiträge: 17
Registriert: Mo 08.Aug, 2005 08:05

Beitrag von GrafCoks »

mal dumm frag aber wo muss das hin ?? muss ich was löschen ?? muss ich erst was anderes einbauen ?? fragen über fragen :rolleyes:

leider steht da oben ja nichts wo was wann und wie eingebaut werden muss ^d

hab den COLOR GROUPS 1.2.0 drin :)
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Steht alles im ersten Post dieses Topics drinnen ;)
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
GrafCoks
Beiträge: 17
Registriert: Mo 08.Aug, 2005 08:05

Beitrag von GrafCoks »

hab ich schon gelesen aber ich weiss noch immer nicht wo das hin muss in der functions_color_groups.php ??

muss das einfach unten mit rein muss ich was löschen oder oder ... sorry aber da steht nichts :confused:
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Doch, und zwar, daß die angegebene Funktion die bestehende komplett ersetzt.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
GrafCoks
Beiträge: 17
Registriert: Mo 08.Aug, 2005 08:05

Beitrag von GrafCoks »

also komplett alles raus aus der functions_color_groups.php und das hier rein ^7 ok ich mach das mal :)


edit: das kommt bei mir

Parse error: parse error, unexpected $ in /var//html/includes/functions_color_groups.php on line 393
Zuletzt geändert von GrafCoks am Sa 29.Okt, 2005 01:41, insgesamt 1-mal geändert.
GrafCoks
Beiträge: 17
Registriert: Mo 08.Aug, 2005 08:05

Beitrag von GrafCoks »

[quote="oxpus - Sa 29.Okt, 2005 00:07";p="46881"]Doch, und zwar, daß die angegebene Funktion die bestehende komplett ersetzt.[/quote]

nun sag doch einfach wo das hin muss :confused:

Code: Alles auswählen

-- Code deleted by ADMIN --
Zuletzt geändert von GrafCoks am Sa 29.Okt, 2005 02:39, insgesamt 4-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Ich wiederhole mich ungern, aber ich habe das jetzt bereits 3mal gesagt:

Die am Anfang des Topic gepostete Funktion ersetzt die gleichnamige Funktion in der functions_color_groups.php.

War das jetzt deutlich genug?
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
GrafCoks
Beiträge: 17
Registriert: Mo 08.Aug, 2005 08:05

Beitrag von GrafCoks »

edit bei graf
Zuletzt geändert von GrafCoks am Sa 29.Okt, 2005 23:24, insgesamt 1-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Wenn hier jetzt jemand arrogant ist, dann Du.
Ich habe es mehrfach gesagt und auch im ersten Post ausführlichst beschrieben, was zu tun ist.
Wer nicht lesen kann, soll es bleiben lassen, ich werden mich hierzu jedenfalls nicht weiter äusser und beleidigen lasse ich mich auch nicht grundlos.

Danke fürs Gespräch!
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
cback
Beiträge: 1391
Registriert: Sa 15.Mai, 2004 15:32
Wohnort: Saarland
Kontaktdaten:

Beitrag von cback »

Hör mal Du Schmalzlocke,

wie viele andere wissen leistet Oxpus bestmöglichen und auch guten Support. Wenn Du mal etwas nicht verstanden hast, dann kannst Du auch genauer nachfragen und das Problem ausführlicher beschreiben, denn dieser kostenlose und keineswegs selbstverständliche Support kann nur bei ausführlicher Problembeschreibung wo es hängt effizient helfen.

Brauchst hier keinen Anzupflaumen, denn nur so wies in den Wald reinruft schallt es wieder hinaus (wie man sieht).


So, das musste jetzt einfach mal raus. Autogramme gibts am Ausgang.
Benutzeravatar
AmigaLink
Beiträge: 5843
Registriert: Mi 03.Mär, 2004 09:05
Wohnort: NRW
Kontaktdaten:

Beitrag von AmigaLink »

Gaaaanz ruhig!!! ;)
Ich muss euch allen dreien recht geben!

@ GrafCoks
Wenn du von anfang an geschrieben hättest das du nicht weist was mit "ersetzen der gleichnamigen Funktion" gemeint ist, dann hätten wir alle viel Zeit und Nerven gespart. ;)

Der letzte Codeblock in der functions_color_groups

Code: Alles auswählen

function color_group_colorize_name($user_id, $no_profile = false) 
{
...
...
...
   return $user_link; 
}
stellt die besagt Funktion dar und muss komplett gegen den Code aus dem erstem Codeblock vom erstem Beitrag dieses Threads ersetzt werden!!!
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________

Kein Support per PM, ICQ oder eMail!!!
[/center]
GrafCoks
Beiträge: 17
Registriert: Mo 08.Aug, 2005 08:05

Beitrag von GrafCoks »

[quote="cback - Sa 29.Okt, 2005 17:05";p="46924"]Hör mal Du Schmalzlocke,

wie viele andere wissen leistet Oxpus bestmöglichen und auch guten Support. Wenn Du mal etwas nicht verstanden hast, dann kannst Du auch genauer nachfragen und das Problem ausführlicher beschreiben, denn dieser kostenlose und keineswegs selbstverständliche Support kann nur bei ausführlicher Problembeschreibung wo es hängt effizient helfen.

Brauchst hier keinen Anzupflaumen, denn nur so wies in den Wald reinruft schallt es wieder hinaus (wie man sieht).


So, das musste jetzt einfach mal raus. Autogramme gibts am Ausgang.[/quote]

du hast ja recht bis jetzt war der support immer ok ... das hab ich aber oxpus schon über pn alles geschrieben

du bist aber mit deinen post auch nicht besser
Hör mal Du Schmalzlocke
pflaumst genauso tztztz

mfg
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

@GrafCoks
Hast Du auch eben genau die Funktion von "function ..." bis zur zugehörenden letzten Klammer "}" ersetzt?
Das Ende der Datei, also "?>" darf dabei nicht gelöscht werden!


Und: Alle waren hier etwas aufgeregt, zuletzt. Raufen wir uns mal wieder zusammen und gehen das Problem in Ruhe an.

*Friedenspfeife reicht*
Zuletzt geändert von oxpus am Sa 29.Okt, 2005 19:29, insgesamt 1-mal geändert.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
GrafCoks
Beiträge: 17
Registriert: Mo 08.Aug, 2005 08:05

Beitrag von GrafCoks »

[quote="AmigaLink - Sa 29.Okt, 2005 19:18";p="46938"]Gaaaanz ruhig!!! ;)
Ich muss euch allen dreien recht geben!

@ GrafCoks
Wenn du von anfang an geschrieben hättest das du nicht weist was mit "ersetzen der gleichnamigen Funktion" gemeint ist, dann hätten wir alle viel Zeit und Nerven gespart. ;)

Der letzte Codeblock in der functions_color_groups

Code: Alles auswählen

function color_group_colorize_name($user_id, $no_profile = false) 
{
...
...
...
   return $user_link; 
}
stellt die besagt Funktion dar und muss komplett gegen den Code aus dem erstem Codeblock vom erstem Beitrag dieses Threads ersetzt werden!!![/quote]

danke AmigaLink aber genau das hab ich so gemacht aber haut mir den fehler immer raus

Code: Alles auswählen

Parse error: parse error, unexpected $ in /var//html/includes/functions_color_groups.php on line 393
aber in der zeile 393 is das hier
GrafCoks
Beiträge: 17
Registriert: Mo 08.Aug, 2005 08:05

Beitrag von GrafCoks »

[quote="oxpus - Sa 29.Okt, 2005 19:28";p="46941"]@GrafCoks
Hast Du auch eben genau die Funktion von "function ..." bis zur zugehörenden letzten Klammer "}" ersetzt?
Das Ende der Datei, also "?>" darf dabei nicht gelöscht werden!


Und: Alle waren hier etwas aufgeregt, zuletzt. Raufen wir uns mal wieder zusammen und gehen das Problem in Ruhe an.

*Friedenspfeife reicht*[/quote]

ja habe von function an bis zur "}" ;)
aber ich bekomm immer ein fehler

mein ende im orginal schaut so aus

Code: Alles auswählen

		return($user_link);
	}
	else
	{
		return false;
	}
}}

?>
ich hab es bis

Code: Alles auswählen

		return($user_link);
	}
und einmal bis da geteste

Code: Alles auswählen

		return($user_link);
	}
	else
	{
		return false;
	}
haut aber alles nicht hin :confused:

Parse error: parse error, unexpected T_ELSE in /var/www/html//includes/functions_color_groups.php on line 392
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Hm, dann ist in der Datei irgendwas anderes faul.
Häng die doch mal bitte als ZIP-Archiv hier an.
Dann kann ich mir das näher anschauen.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
AmigaLink
Beiträge: 5843
Registriert: Mi 03.Mär, 2004 09:05
Wohnort: NRW
Kontaktdaten:

Beitrag von AmigaLink »

Ich Tippe mal ins Blaue und behaupte das dieser Teil

Code: Alles auswählen

      return($user_link); 
   } 
   else 
   { 
      return false; 
   } 
}}
komplett weg muss.
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________

Kein Support per PM, ICQ oder eMail!!!
[/center]
GrafCoks
Beiträge: 17
Registriert: Mo 08.Aug, 2005 08:05

Beitrag von GrafCoks »

hallo oxpus

ich glaube jetzt geht es ... hab es jetzt so gemacht

Code: Alles auswählen

	return $user_link;
}}

?>
es kommt jetzt kein fehler mehr und die db abfragen sind von 300 auf 40 zurück gegangen.

als denke ich mal das es jetzt klapt oder ?

hier is sie nochmal.

und danke oxpus und amigalink ;)
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Ja, so ist es korrekt.
Glückwunsch.

Bedenke nur, daß zukünftig User, die eingefärbt werden sollen, erst nach 24 Stunden ihre neue "Farbe" erhalten, ausser Du löscht vorher die Datei cache/cg_user.php.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Antworten