Extension talk:CustomUserCreateForm/de
Anmerkung
editDie beiden Klassen Usercreate und Userlogin wurden in 2 Dateien aufgeteilt und heißen jetzt: Usercreate.php und Userlogin.php
Wie ein benutzerdefiniertes Feld hinzu gefügt wird
editZunächst wurde dies durch Mediawiki 1.17.0 und CustomUserCreateForm möglich gemacht.
Lasse uns starten.
Vorbereitung
editAlle Arbeiten nach Extension:CustomUserCreateForm wurden durchgeführt.
Felder zum Anmeldeformular hinzufügen
editDatei: extensions/customUserCreateForm/templates/customUsercreate.php
Process:
- Füge folgende Zeilen irgendwo in der Mitte der Execute Methode der
customUsercreateTemplate
Klasse ein.
$this->addInputItem('fieldname', 'default value', 'input type', 'Left column message');
Beispiel:
function execute() {
$this->addInputItem ('user_street', '', 'text', 'Strasse:');
$this->addInputItem ('user_city', '', 'text', 'Wohnort:');
if( $this->data['message'] ) {
Die durch die neuen Felder erzeugt Daten, in die Datenbank speichern
editDatei: extensions/customUserCreateForm/customUserCreateForm.php
Prozess:
- Ein neuen
AddNewAccount
Anker am Anfang der Datei einfügen: - Eine neue Funktion einfügen mit dem Namen von der
AddNewAccount
Anker Registrierung. Alle Daten der zusätzlichen Felder werden über der globalen VariablewgRequest
eingelesen. - Aktuelle User ID mit
$user->getID()
einlesen. - Mit der Funktion
wfGetDB (DB_MASTER)
wird ein Objekt$dbw
für die Datenbank geholt. $dbw->insert( 'user_properties'
speichert die Daten in die Tabelleuser_properties
.- Die Tabelle besteht aus den Feldern
up_user, up_property, up_value
und werden mit einem Array übergeben.
Beispiel:
$wgHooks['AddNewAccount'][] = 'customUserSaveToDB';
function customUserSaveToDB( $user, $byuser)
{
global $wgRequest;
$user_id = $user->getID();
$dbw = wfGetDB( DB_MASTER );
$dbw->insert( 'user_properties', array(
'up_user' => $user_id,
'up_property' => 'user_street',
'up_value' => $wgRequest->getText( 'user_street')
));
$dbw->insert( 'user_properties', array(
'up_user' => $user_id,
'up_property' => 'user_city',
'up_value' => $wgRequest->getText( 'user_city')
));
return true;
}
Add new data to Special:Preferences page
editFile: templates/customUserCreateForm.php
Process: q
- Add a new
GetPreferences
hook at the top of the file: - Create a new function that will handle the custom user preferences section with the same name as stated on the
GetPreferences
hook registration. - Call the data in the user_properties table by using the preferences variable
Example:
$wgHooks['GetPreferences'][] = 'customUserPreferences';
function customUserPreferences ($user, &$preferences)
{
$preferences['city'] = array(
'type' => 'text',
'label-message' => 'customUserCity', // a system message
'section' => 'personal/info',
);
// Required return value of a hook function.
return true;
}
Create the custom system messages for the new fields
edit- For each new property in the preferences, visit the MediaWiki:systemMessageForTheProperty article of your wiki and edit it by adding the name of the field you wish to appear next to the preferences box field.
Get data from the database
editThe SQL query for getting the data from the database should go as following:
SELECT user_name, user_email, up_user, up_property, CONVERT(up_value USING utf8) AS yourFieldName FROM user_properties
JOIN user ON user.user_id=user_properties.up_user
WHERE up_property IN ('field1','field2',...) AND (up_value IS NOT NULL AND (TRIM(up_value) != ''))
ORDER BY user_name DESC
That should be all! Enjoy your new customized registration tool
--Fladei (talk) 20:01, 15 April 2012 (UTC)
If you wish to inject text into the UI this DOES NOT WORK. FIX IS INCLUDED
editThe function prototype needs to be:
function customUserCreateForm(&$template) {
NOT
function customUserCreateForm($template) {
$template needs to be passed by reference because the execute() function that renders the content is call after the hooks are exected.
-Michael Lapinski
-mtl[attt]mit[dot]edu
Extension NOT clear
editCan you please provide more about how does this extension work and how to create new columns in database if i want to add birth date and country ' ANY ADVICE PLEASE
Is this extension still supported
editIs this extension still supported please let us know
Übersetzt: Gieselkalk (talk) 23:16, 18 July 2012 (UTC)