/** * @see AbstractLostAndFounDatabaseItem::deleteAll() */ public static function deleteAll() { $itemIDs = self::getMarkedItems('avatarsDatabase'); foreach ($itemIDs as $itemID) { $item = new AvatarsDatabaseLostAndFoundItem($itemID); $item->delete(); } }
/** * 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; } }