Zusätzliche Benutzerfelder per Erweiterung einfügen
Verfasst: 09.05.2016 11:55
Hallo,
ich arbeite gerade an eine Erweiterung, die alle Benutzer auflistet, aber jeweils in Form einer Visitenkarte, die ausgewählte Informationen anzeigt. An ein paar Stellen komme ich aber nicht weiter.
Dieser Code erzeugt die Template-Variablen für die besagte Liste.
ich arbeite gerade an eine Erweiterung, die alle Benutzer auflistet, aber jeweils in Form einer Visitenkarte, die ausgewählte Informationen anzeigt. An ein paar Stellen komme ich aber nicht weiter.
Code: Alles auswählen
public function __construct(\phpbb\config\config $config, \phpbb\controller\helper $helper, \phpbb\template\template $template, \phpbb\db\driver\driver_interface $db) {
$this->config = $config;
$this->helper = $helper;
$this->template = $template;
$this->db = $db;
}
public function handle($name) {
$users = $this->db->sql_query('SELECT * FROM '.USERS_TABLE);
while ($user = $this->db->sql_fetchrow($users)) {
$params = array();
if ($user['user_custom_title']) $params['name'] = $user['user_custom_title']; else $params['name'] = $user['username'];
if ($user['user_avatar']) { if (substr($user['user_avatar'], 0, 4) == 'http') $params['image'] = $user['user_avatar']; else $params['image'] = '/download/file.php?avatar='.$user['user_avatar']; }
if ($user['website']) $params['website'] = $user['website'];
$this->template->assign_block_vars('userlist', $params);
}
$this->db->sql_freeresult($users);
return $this->helper->render('userlist_body.html', $name);
}
- Die Datenbankeinträge 'username' und 'user_avatar' gehen, aber z.B. 'website' nicht. Wie komme ich an Website, Facebook, E-Mail-Adresse, usw.?
- Es müssen einige zusätzliche Informationen zu jedem Benutzer gespeichert werden (Telefonnummer, ein längerer Text, ...), im Code oben wird versucht den Eintrag 'user_custom_title' basierend auf der Erweiterung Custom User Title von David King zu importieren. Die Editbox in den Profileinstellungen wird auch schon angezeigt. Aber die Datenbankaktualisierung dud nit. Ich habe folgendes Migrationsskript versucht:
Aber es sieht nicht so aus, als häte sich an der Datenbank was geändert. Wann wird dieses Script eigentlich ausgeführt? Bei Aktivierung der Erweiterung?
Code: Alles auswählen
<?php namespace msta\publicuserlist\migrations\V1-0; if (!defined('IN_PHPBB')) exit; class db_additional_user_info extends \phpbb\db\migration\migration { static public function depends_on() { return array('\phpbb\db\migration\data\v31x\v314'); } public function update_schema() { return [ 'add_columns' => [ $this->table_prefix.'profile_fields' => [ 'user_custom_title' => ['VCHAR:255', ''], 'user_custom_phone' => ['VCHAR:255', ''], 'user_custom_phone_crypt' => ['VCHAR:255', ''], 'user_custom_email_crypt' => ['VCHAR:255', ''], 'user_custom_info' => ['VCHAR:255', ''], 'user_custom_desc' => ['VCHAR:2000', ''], ]]]; } public function revert_schema() { return ['drop_columns' => [$this->table_prefix.'profile_fields' => [ 'user_custom_title', 'user_custom_phone', 'user_custom_phone_crypt', 'user_custom_email_crypt', 'user_custom_info', 'user_custom_desc', ]]]; } }
- Das Script listet auch die ganzen automatisch erstellten Benutzer für die Suchmaschienenbots auf. Wie kann ich zwischen denen und echten Benutzern unterschieden? Sinnvoller weise sollten alle Benutzer einer Gruppe gelistet werden...