/**
  * Reads avatar items
  */
 public function readAvatars()
 {
     switch ($this->activeSubTabMenuItem) {
         case 'database':
             require_once WCF_DIR . 'lib/acp/admintools/lostandfound/AvatarsDatabaseLostAndFoundItem.class.php';
             $this->markedItems = intval(count(AvatarsDatabaseLostAndFoundItem::getMarkedItems('avatarsDatabase')));
             $this->classname = 'AvatarsDatabaseLostAndFoundItem';
             $sql = "SELECT avatar.*, user.username FROM wcf" . WCF_N . "_avatar avatar\n\t\t\t\t\t\tLEFT JOIN wcf" . WCF_N . "_user user\n\t\t\t\t\t\tON (user.userID = avatar.userID)";
             $result = WCF::getDB()->sendQuery($sql);
             $i = 0;
             while ($row = WCF::getDB()->fetchArray($result)) {
                 if (!is_file(WCF_DIR . 'images/avatars/avatar-' . $row['avatarID'] . '.' . $row['avatarExtension'])) {
                     if ($i < ($this->pageNo - 1) * $this->itemsPerPage || $i > $this->pageNo * $this->itemsPerPage) {
                         $i++;
                         continue;
                     }
                     $avatar = new AvatarsDatabaseLostAndFoundItem($row['avatarID']);
                     $avatar->filename = $row['avatarName'];
                     $avatar->user = $row['username'];
                     $this->itemData[] = $avatar;
                     $i++;
                 }
             }
             $this->count = $i;
             break;
         case 'filesystem':
             require_once WCF_DIR . 'lib/acp/admintools/lostandfound/AvatarsFilesystemLostAndFoundItem.class.php';
             AvatarsFilesystemLostAndFoundItem::createVirtualIDSpace();
             $this->markedItems = intval(count(AvatarsFilesystemLostAndFoundItem::getMarkedItems('avatarsFilesystem')));
             $this->classname = 'AvatarsFilesystemLostAndFoundItem';
             chdir(WCF_DIR . 'images/avatars');
             $dh = opendir(WCF_DIR . 'images/avatars');
             $avatarIDs = array();
             $avatars = array();
             while ($file = readdir($dh)) {
                 if (preg_match("/^(avatar).*/", $file) && $file != '.' && $file != '..' && $file != '.htaccess' && !preg_match("/^.*\\.php\$/", $file)) {
                     $avatarID = (int) preg_replace("/.*\\-(\\d+).*/", "\$1", $file);
                     $avatars[$avatarID] = preg_replace("/.*\\-(\\d+)(.*)/", "\$2", $file);
                     if ($avatarID > 0) {
                         $avatarIDs[] = $avatarID;
                     }
                 }
             }
             if (count($avatarIDs)) {
                 $sql = "SELECT avatarID, avatarExtension FROM wcf" . WCF_N . "_avatar WHERE avatarID IN (" . implode(',', $avatarIDs) . ")";
                 $result = WCF::getDB()->sendQuery($sql);
                 $physicalAvatars = array_flip($avatarIDs);
                 while ($row = WCF::getDB()->fetchArray($result)) {
                     unset($physicalAvatars[$row['avatarID']]);
                 }
                 $physicalAvatars = array_keys($physicalAvatars);
                 $this->count = count($physicalAvatars);
                 $i = 0;
                 foreach ($physicalAvatars as $avatarID) {
                     if ($i <= ($this->pageNo - 1) * $this->itemsPerPage) {
                         $i++;
                         continue;
                     } else {
                         if ($i > $this->pageNo * $this->itemsPerPage) {
                             break;
                         }
                     }
                     $file = WCF_DIR . 'images/avatars/avatar-' . $avatarID . $avatars[$avatarID];
                     $avatar = new AvatarsFilesystemLostAndFoundItem(AvatarsFilesystemLostAndFoundItem::getVirtualID('avatarsFilesystem', $file));
                     $avatar->filename = $file;
                     $avatar->filesize = round(filesize($file) / 1000, 2) . ' kB';
                     $avatar->fileLastModTime = filemtime($file);
                     $this->itemData[] = $avatar;
                     $i++;
                 }
             }
             closedir($dh);
             break;
     }
 }
 /**
  * @see AbstractLostAndFounDatabaseItem::deleteAll()	 
  */
 public static function deleteAll()
 {
     $itemIDs = self::getMarkedItems('avatarsFilesystem');
     foreach ($itemIDs as $itemID) {
         $item = new AvatarsFilesystemLostAndFoundItem($itemID);
         $item->delete();
     }
 }