/** * Prepares a table output. * * @param array $parsedMatch The parsed pattern string. * @return array The current lexer state for the match. */ function _handleTable($parsedMatch) { // get sqlite handle $sqlite = $this->hlp->_getDB(); if (!$sqlite) { return; } // further parsing of the query string $type = $parsedMatch['path']; parse_str($parsedMatch['query'], $filters); $fragment = $parsedMatch['fragment']; $users = $this->_filterUsers($filters); // get profiles foreach ($users as $current) { $profiles[] = $this->hlp->getProfile($current); } // get field headers $res = $sqlite->query("SELECT [title] FROM [fields]"); $headers = $sqlite->res2arr($res); array_unshift($headers, array('title' => $this->getLang('realname')), array('title' => $this->getLang('email'))); return array('type' => $type, 'input' => $parsedMatch, 'rows' => $profiles, 'headers' => array_values($headers)); }
/** * Output html of the admin page */ public function html() { global $ID; global $INPUT; if (is_null($this->_auth)) { print $this->lang['badauth']; return false; } $sqlite = $this->hlp->_getDB(); if (!$sqlite) { return; } $fn = $INPUT->param('fn'); if (is_array($fn)) { $cmd = key($fn); $param = is_array($fn[$cmd]) ? key($fn[$cmd]) : null; } else { $cmd = $fn; $param = null; } $user_list = $this->_auth->retrieveUsers($this->_start, $this->_pagesize, $this->_filter); echo $this->locale_xhtml('admin_intro'); $form = new Doku_Form(array('method' => 'post')); $form->addHidden('page', 'userprofile_users'); // List registered users $form->addElement('<table>' . '<tr>' . '<th>' . $this->getLang('username') . '</th>' . '<th>' . $this->getLang('realname') . '</th>' . '<th>' . $this->getLang('email') . '</th>' . '</tr>'); foreach ($user_list as $user => $userinfo) { extract($userinfo); /** * @var string $name * @var string $pass * @var string $mail * @var array $grps */ if (!in_array('noprofile', $grps)) { $form->addElement('<tr>' . '<td><a href="' . wl($ID, array('fn[edit][' . $user . ']' => 1, 'do' => 'admin', 'page' => 'userprofile_users', 'sectok' => getSecurityToken())) . '" title="' . $this->lang['edit_prompt'] . '">' . hsc($user) . '</a></td>' . '<td>' . hsc($name) . '</td>' . '<td>' . hsc($mail) . '</td>' . '</tr>'); } } $form->addElement('</table>'); // Edit table if ($cmd == "edit") { $user = $param; $profile = $this->hlp->getProfile($user); // create hidden fields $form->addHidden('up[user][user]', $user); $form->addHidden('up[user][name]', $user_list[$user]['name']); $form->addHidden('up[user][email]', $user_list[$user]['mail']); $sql = "SELECT * FROM fields"; $res = $sqlite->query($sql); $fields = $sqlite->res2arr($res); $form->addElement('<table>' . '<tr>' . '<th colspan="2">' . $this->getLang('th_edit') . '</th>' . '</tr>' . '<tr>' . '<td>' . $this->getLang('realname') . '</td>' . '<td>' . hsc($user_list[$user]['name']) . '</td>' . '</tr>' . '<tr>' . '<td>' . $this->getLang('email') . '</td>' . '<td>' . hsc($user_list[$user]['mail']) . '</td>' . '</tr>'); foreach ($fields as $field) { $form->addElement('<tr>'); $form->addElement('<td>' . hsc($field['title']) . '</td>'); $form->addElement('<td>'); $defaults_array = explode('|', $field['defaultval']); if (count($defaults_array) > 1) { // create select field $defaults_array = array_map('trim', $defaults_array); $form->addElement(form_makeMenuField('up[data][' . $field['name'] . ']', $defaults_array, $profile[$field['name']], '')); } else { // create regular text field $form->addElement(form_makeTextField('up[data][' . $field['name'] . ']', $profile[$field['name']], '')); } $form->addElement('</td>'); $form->addElement('</tr>'); } $form->addElement('<tr>' . '<td colspan="2">'); $form->addElement(form_makeButton('submit', 'admin', $this->getLang('submit'))); $form->addElement('</td>'); $form->addElement('</table>'); } $form->printForm(); }