Du bist nicht angemeldet.

1

Samstag, 10. Dezember 2011, 16:45

PortalBox "Abwesende Mitglieder"

Eine eigene kleine Box zur Ausgabe abwesender Mitglieder,
dieses setzt die Installation des Abwesenheitssystems von deixu voraus!



Die Box wird nur angemeldete User gefüllt. Die Abwesenheit unsichtbare Mitglieder wird nur für diejenigen angezeigt, die auch das Recht haben unsichtbare Mitglieder zu sehen - alle anderen sehen von den betroffenen Mitgliedern nix.
Ich habe die Ausgabe mal in eine kleine Tabelle gepackt, sicher gibt es bessere Möglichkeiten...
Aufgrund der Länge der Ausgabe ist wohl nur eine Ausgabe in einer mittleren Box möglich, für die linke oder rechte Box müßte die Ausgabe noch angepasst werden.

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?php
$maxItems 10;
$maxLength 30;
$userData=Array();

if (WCF::getUser()->userID) {
  $userData = array();
  $cVI=intval(WCF::getUser()->getPermission('admin.general.canViewInvisible'));
  $sql 'SELECT packageID FROM wcf'.WCF_N.'_package WHERE package="net.deixu.wcf.user.absence"';
  if ($row WCF::getDB()->getFirstRow($sql)) {
     $packageID intval($row['packageID']);
     $sql="SELECT u.userID, u.userName," 
                     ."\n o.userOption".User::getUserOptionID('invisible')." as isInvisible,"
                     ."\n o.userOption".User::getUserOptionID('absenceStart')." as absBeg,"
                     ."\n o.userOption".User::getUserOptionID('absenceEnd')." as absEnd,"
                     ."\n o.userOption".User::getUserOptionID('absenceReason')." as absReason"
             ."\n FROM wcf".WCF_N."_user u"
             ."\n LEFT JOIN  wcf".WCF_N."_user_option_value o"
             ."\n ON (u.userID = o.userID)"
             ."\n WHERE o.userOption".User::getUserOptionID('isAbsent')."<>0"
# mit Abwesenheiten in der Zukunft
#               ."\n    AND o.userOption".User::getUserOptionID('absenceStart')."<UNIX_TIMESTAMP()"
               ."\n    AND o.userOption".User::getUserOptionID('absenceEnd').">UNIX_TIMESTAMP()"
             ."\n ORDER BY absEnd ASC"
             ."\n LIMIT 0,".$maxItems;
  
       $result WBBCore::getDB()->sendQuery($sql);
       while($row WBBCore::getDB()->fetchArray($result)) {
          $row['absReason'] = StringUtil::substring(StringUtil::encodeHTML($row['absReason']), 0$maxLength);
          $userData[] = $row;
       }
      $cntUsr 0;
      foreach($userData as $k => $u) {
        if(!$u['isInvisible'] || $cVI) {
              if ($cntUsr == 0) {
                   echo '<div class="container-1 smallFont" style="float:none; margin-right:6px;">';
                   echo '<table>';
              }
              echo '<tr><td><a title="';
              echo "$u[userName]";
              echo '" href="index.php?page=User&amp;userID=';
              echo "$u[userID]";
              echo '">';
              echo "$u[userName]";
              echo '</a>';
              if ($u['isInvisible']) echo ' (unsichtbar)';
              echo '</td><td>';
              echo '<span style="padding-left:10px;">'.DateUtil::formatShortTime("%d.%m.%Y %H:%M"DateUtil::getLocalTimestamp($u['absBeg']))."&nbsp;-&nbsp;".DateUtil::formatShortTime("%d.%m.%Y %H:%M"DateUtil::getLocalTimestamp($u['absEnd'])).'</span>';
              echo '</td><td>';
              echo '<span style="padding-left:10px;">'.$u['absReason'].'</span>';
              echo '</td></tr>';
              $cntUsr++;
        }
      }
      if ($cntUsr 0) {
          echo '</table>';
          echo '</div>';
      }
   }
}
unset ($maxItems$maxLength$userData$packageID$sql$row$cVI$cntUsr);
?>


Mehr auf WBB-Basteleien...
Humor ist der Knopf, der verhindert, dass uns der Kragen platzt (Joachim Ringelnatz)
Neue Anlage - Bahnhof Wildbad - Modellbahnsteuerung - EMD MRS 1

Ähnliche Themen

Verwendete Tags

Eigene Box, Portal, WoltLab