/**
  * Generate a HTML to send email (a full A tag) from one entry of an e-mail value group.
  * @param array $m the entry of the value group to use
  * @return string <a href='Firstname Lastname (label) <*****@*****.**>'>email@example.com (label)</a>
  */
 function generateEmail($m)
 {
     $ret = '<span class="emails-info">' . EmailHelper::sendEmailLink($this->rawEmail($m), $m['value']) . '</span>';
     if (!empty($m['label'])) {
         return '<span class="emails-label">' . $m['label'] . ': </span>' . $ret;
     }
     return $ret;
 }
 /**
  * create the form needed for user management
  * @return string html-content
  * @global DB used for database access
  * @global CONFIG_USER_ACCOUNT_EXPIRED_MAIL email subject and content (mailto:) for expired account message
  * @global CONFIG_USER_ACCOUNT_EXPIRED_INTERVAL SQL interval for DATE_ADD e.g. "1 MONTH" to check account expiration
  */
 function createUserManagementForm()
 {
     global $db, $CONFIG_USER_ACCOUNT_EXPIRED_MAIL, $CONFIG_USER_ACCOUNT_EXPIRED_INTERVAL;
     $cont = '<fieldset class="options-options">';
     $cont .= '<legend>User list</legend>';
     if (empty($CONFIG_USER_ACCOUNT_EXPIRED_INTERVAL)) {
         $CONFIG_USER_ACCOUNT_EXPIRED_INTERVAL = '1 MONTH';
     }
     $db->query("SELECT *, DATE_ADD(lastLogin, INTERVAL {$CONFIG_USER_ACCOUNT_EXPIRED_INTERVAL})<NOW() AS expiredLogin FROM " . TABLE_USERS . ' AS users LEFT JOIN ' . TABLE_CONTACT . ' AS contact ON users.id = contact.id ORDER BY usertype');
     $data = array();
     // collect user types in array for mailto link
     $users = array();
     $managers = array();
     $admins = array();
     while ($r = $db->next()) {
         $email = $r['firstname'] . ' ' . $r['lastname'] . ' <' . $r['reg_email'] . '>';
         $baseHref = '../contact/contact.php?id=' . $r['id'] . '&noxslt=1';
         // no stylesheet display
         $editHref = $baseHref . '&mode=edit';
         if (isset($r['lastname'])) {
             $name = '<a href="' . $baseHref . '">' . $r['lastname'] . ', ' . $r['firstname'] . '</a>&nbsp;(<a href="' . $editHref . '">edit</a>, ' . EmailHelper::sendEmailLink($email, $r['reg_email']) . ')';
         } else {
             $name = EmailHelper::sendEmailLink($email, $email);
         }
         $data[] = array('name' => $name, 'lastLogin' => $r['lastLogin'], 'loginExpired' => $r['expiredLogin'] ? "<a href='mailto:{$email}{$CONFIG_USER_ACCOUNT_EXPIRED_MAIL}'>[!]</a>" : '', 'type' => $r['usertype'], 'delete' => '<a href="javascript:deleteUser(' . $r['userid'] . ')">delete</a>');
         switch ($r['usertype']) {
             case 'admin':
                 $admins[] = $email;
                 break;
             case 'manager':
                 $managers[] = $email;
                 break;
             case 'user':
                 $users[] = $email;
                 break;
         }
     }
     $tableGen = new TableGenerator('admin-users');
     $cont .= $tableGen->generateTable($data, null, '', 'type', false);
     //group by type
     $cont .= '<div><br> Send email to: ' . EmailHelper::sendEmailLink($admins, 'administrators') . '&nbsp;&nbsp;&nbsp;&nbsp;';
     $cont .= EmailHelper::sendEmailLink($managers, 'managers') . '&nbsp;&nbsp;&nbsp;&nbsp;';
     $cont .= EmailHelper::sendEmailLink($users, 'users') . '&nbsp;&nbsp;&nbsp;&nbsp;';
     $cont .= EmailHelper::sendEmailLink(array_merge($managers, $users), 'users and managers') . '&nbsp;&nbsp;&nbsp;&nbsp;';
     $cont .= EmailHelper::sendEmailLink(array_merge($admins, $managers, $users), 'all') . '&nbsp;&nbsp;&nbsp;&nbsp; </div>';
     $cont .= '</fieldset>';
     return $cont;
 }