Seite 1 von 1

"Geworben von"-Feld beim Registrieren

Verfasst: 02.09.2004 21:24
von Provokatiker
Hallo alle,
ich weiss nich, ob es sowas schon gibt, sorry falls ja und ich es nicht gefunden hab...
Also wie man ein neues Feld usw. zum Reg-Forumlar (und damit zum Profil) hinzufügt weiss ich ja...Im Prinzip brächte ich aber eine Erweiterung dafür:
Eine DropDown-Liste mit allen bereits registrierten Benutzern und einem Default-Feld für "Keiner".

Damit können neue Benutzer dann angeben, von jemandem geworben worden zu sein (ich brauche das, weil ich dafür ne satte Cash-Belohnung gebe in meinem Forum...).

Hat jemand ne Idee, wie ich folgenden Code zum einfügen einer DropDown-Liste modifizieren muss, damit die Benutzer angezeigt werden?

Code: Alles auswählen

################################################################################### 
## 
## Hack Titel:      Neues Feld in Profil einfügen
## Hack Version:    1.2.1
## optionaler Teil: Dropdown Menü anstatt Eingabefeld 1.0.2
## Author           Acid
## Support:	    http://www.phpbbhacks.com/forums oder http://www.phpbb.de/
##
## Beschreibung:   Wenn man ein Dropdown Menü anstatt eines Eingabefeldes einstellen will..
##		   Wenn man mehr als ein neues Feld hinzugefügt hast, muss man die
##		   folgenden Schritte duplizieren und dabei jeweils "music" ändern
##		   (auf Schreibweise achten).
##
## Benötigt:       addfield_german.txt
##
## Dateien zu ändern:     2
##			  language/lang_german/lang_main.php
##			  admin/admin_users.php
##			  includes/usercp_register.php
##	                  templates/xxx/admin/user_edit_body.tpl
##      	          templates/xxx/profile_add_body.tpl
##
################################################################################### 
## 
## Installationsnotiz: 
## Vor jeglichen Änderungen an Dateien oder Datenbank, solltest Du diese vorher
## sichern.
## 
################################################################################### 
##
## Versionen:
##
## 1.0.2  - Fehler bei $lang['Music_choice'] (lang_main.php) behoben
## 1.0.1  - Anleitung für admin_users.php und user_edit_body.tpl hinzugefügt
## 1.0    - optionalen Teil hinzugefügt
##
################################################################################### 
# 
#-----[ ÖFFNEN ]------------------------------------------
# templates/lang_german/lang_main.php
# 
#-----[ FINDE (wenn bereits hinzugefügt) ]---------------------------------------------------
# 
$lang['Music'] = 'Music';

# 
#-----[ DARUNTER EINFÜGEN ]---------------------------------------------------
# 
## wenn man diesen Teil ändern will, darf man nicht die Anführungsstriche (') und
## den ersten Eintrag (leer) löschen. "leer" kann natürlich geändert werden.

$lang['Music_choice'] = array('(leer)','Techno','Pop','Funk','Rock','Beat','RockSteady','Classic');



# 
#-----[ ÖFFNEN ]------------------------------------------
#  
# includes/usercp_register.php
# 
#-----[ FINDE (nur ein Auszug) ]---------------------------------------------------
# 
			$sql = "UPDATE " . USERS_TABLE . "
# 
#-----[ DAVOR EINFÜGEN ]---------------------------------------------------
# 
               		$music = ($music == $lang['Music_choice']['0']) ? '' : $music;

# 
#-----[ FINDE (nur ein Auszug) ]---------------------------------------------------
# 
			$sql = "INSERT INTO " . USERS_TABLE . "
# 
#-----[ DAVOR EINFÜGEN ]---------------------------------------------------
# 
               		$music = ($music == $lang['Music_choice']['0']) ? '' : $music;

# 
#-----[ FINDE ]---------------------------------------------------
# 
	$template->set_filenames(array(
		'body' => 'profile_add_body.tpl')
	);

# 
#-----[ DARUNTER EINFÜGEN ]---------------------------------------------------
# 
	$s_music = '<select name="music">';
	for($i = 0; $i < count($lang['Music_choice']); $i++ )
	{
	        $s_music .= '<option value="' . $lang['Music_choice'][$i] . '">' . $lang['Music_choice'][$i]. '</option>';
	}
	$s_music .= '</select>'; 
	$s_music = str_replace("value=\"".$music."\">", "value=\"".$music."\" SELECTED>" ,$s_music);


# 
#-----[ FINDE ]---------------------------------------------------
# 
		'MUSIC' => $music,
# 
#-----[ MIT FOLGENDEM ERSETZEN (wenn bereits hinzugefügt) ]---------------------------------------------------
# 
		'S_MUSIC' => $s_music,



# 
#-----[ ÖFFNEN ]------------------------------------------
#  
# admin/admin_users.php
# 
#-----[ FINDE (nur ein Auszug) ]---------------------------------------------------
# 
			$sql = "UPDATE " . USERS_TABLE . "
# 
#-----[ DAVOR EINFÜGEN ]---------------------------------------------------
# 
               		$music = ($music == $lang['Music_choice']['0']) ? '' : $music;

# 
#-----[ FINDE ]---------------------------------------------------
# 
		$template->set_filenames(array(
			"body" => "admin/user_edit_body.tpl")
		);

# 
#-----[ DARUNTER EINFÜGEN ]---------------------------------------------------
# 
		$s_music = '<select name="music">';
		for($i = 0; $i < count($lang['Music_choice']); $i++ )
		{
		        $s_music .= '<option value="' . $lang['Music_choice'][$i] . '">' . $lang['Music_choice'][$i]. '</option>';
		}
		$s_music .= '</select>'; 
		$s_music = str_replace("value=\"".$music."\">", "value=\"".$music."\" SELECTED>" ,$s_music);


# 
#-----[ FINDE ]---------------------------------------------------
# 
			'MUSIC' => $music, 
# 
#-----[ MIT FOLGENDEM ERSETZEN (wenn bereits hinzugefügt) ]---------------------------------------------------
# 
			'S_MUSIC' => $s_music, 



# 
#-----[ ÖFFNEN ]------------------------------------------
#  
# templates/xxx/profile_add_body.tpl
# 
#-----[ FINDE ]---------------------------------------------------
# 
          <td class="row2"> <input class="post" type="text" name="music" size="35" maxlength="50" value="{MUSIC}" /> /td> 
# 
#-----[ MIT FOLGENDEM ERSETZEN (wenn bereits hinzugefügt) ]---------------------------------------------------
# 
	  <td class="row2"> {S_MUSIC}  </td>



# 
#-----[ ÖFFNEN ]------------------------------------------
#  
# templates/xxx/admin/user_edit_body.tpl
# 
#-----[ FINDE ]---------------------------------------------------
# 
          <td class="row2"> <input class="post" type="text" name="music" size="35" maxlength="50" value="{MUSIC}" /> /td> 
# 
#-----[ MIT FOLGENDEM ERSETZEN (wenn bereits hinzugefügt) ]---------------------------------------------------
# 
	  <td class="row2"> {S_MUSIC}  </td>


################################################################################### 
################################################################################### 
###################################################################################

Verfasst: 02.09.2004 22:18
von Acid
Also ein Dropdownmenü mit allen Usernamen ist eigentlich nicht ratsam, da´s unübersichtlich ist (und ab >1.000 Usern auch unbrauchbar).

Vielleicht einfach ein <input>Feld, wo man den Namen eingibt ?

Verfasst: 02.09.2004 22:26
von Provokatiker
Naja, mit so vielen Usern rechne ich nicht in meinem Board ;)
Aber man könnte das ja alphabetisch sortieren, dann wäre es einfacher, nen Benutzer zu finden.

Verfasst: 03.09.2004 12:38
von Provokatiker
Acid, könntest du mir mit der DropDown-Liste helfen? Kannst das ja dann auch als neuen Hack veröffentlichen :wink:

Verfasst: 03.09.2004 14:38
von Tuxman
Auch für dich gilt der kleine phpBB.de-Knigge, insbesondere was das "Topic-Bumping" betrifft. ;)

Verfasst: 03.09.2004 22:26
von Provokatiker
Hups, sorry, war mir neu *g*

Verfasst: 04.09.2004 09:28
von Acid

Code: Alles auswählen

#
#-----[ FINDE ]-----------------------------------------------
#
      $s_music = '<select name="music">';
      for($i = 0; $i < count($lang['Music_choice']); $i++ )
      {
              $s_music .= '<option value="' . $lang['Music_choice'][$i] . '">' . $lang['Music_choice'][$i]. '</option>';
      }
      $s_music .= '</select>';
      $s_music = str_replace("value=\"".$music."\">", "value=\"".$music."\" SELECTED>" ,$s_music); 

#
#-----[ MIT FOLGENDEM ERSETZEN ]---------------------------------------
#
	$sql = "SELECT user_id, username FROM ". USERS_TABLE ." WHERE user_id NOT IN (". ANONYMOUS .", ". $userdata['user_id'] .") ORDER BY username";
	if( !$result = $db->sql_query($sql) )
	{
		message_die(GENERAL_ERROR, 'error fetching forums.', '', __LINE__, __FILE__, $sql);
	}
	$s_music = '<select name="music">';
	while( $row = $db->sql_fetchrow($result) )
	{
		$selected = ( $row['user_id'] == $userdata['user_music'] ) ? 'selected="selected"' : '';
		$s_music .= '<option value="'. $row['user_id'] .'" '. $selected .'>'. $row['username'] .'</option>';
	}
	$s_music .= '</select>';
Wenn du "music" in den Codes mit "irgendwas" ersetzt hast, muss dies auch in diesem Code angepasst werden.

Verfasst: 05.09.2004 10:13
von Provokatiker
Cool, danke, werde das, sobald ich wieder Zeit finde, sofort ausprobieren! Wie gesagt, ich denke dass das sogar nen extra-Mod wert wäre, mach ruhig :wink:

Verfasst: 06.09.2004 21:35
von Provokatiker
Muss ich den obigen Code in der usercp_register.php oder in der admin_users.php einfügen? Kommt in der install.txt zweimal vor...Oder beidesmal?

Gibt es eigentlich schon ne Erweiterung, dass man ne E-Mail bekommt, wenn sich jemand in seinem Forum registriert? Wäre ganz geschickt...Aber wollt nur mal fragen ;)

Eigentlich is es ja blöd, wenn dieses geworben von dann im Profil usw. steht, es würde ja eigentlich langen, wenn die Admins ne PN oderE-Mail bekommen würden, mit dem Inhalt dieses Feldes...

Verfasst: 07.09.2004 00:18
von Acid
admin_users.php/usercp_register.php ..je nachdem, ob Admins dies im Profil eines Users im Adminbereich ändern können sollten oder ob´s der User in seinem eigenen Profil angeben kann (oder halt beides).

Eine email bei Neuregistrierungen bekommt man, wenn man die Aktivierungsmethode in der Konfiguration auf "admin" stellt (du müsstest diese User dann aber erst freischalten) oder wenn man sich einen MOD dazu installiert (suche nach "email" und "admin" hier auf phpbb.de, k/A wie der Name des MODs lautet).
Eigentlich is es ja blöd, wenn dieses geworben von dann im Profil usw. steht, es würde ja eigentlich langen, wenn die Admins ne PN oderE-Mail bekommen würden, mit dem Inhalt dieses Feldes...
Irgendwo wird man es aber eintragen müssen. Damit es nicht in den Profilen der User angezeigt wird, müsste man nur die Änderungen an usercp_viewprofile.php/profile_view_body.tpl auslassen.
Damit´s in jeweiligen Benachrichtigungs-Mails angezeigt wird, müsste dies noch angepasst werden.