Пример #1
0
function xhelpDirsize($dirName = '.', $getResolved = false)
{
    $dir = dir($dirName);
    $size = 0;
    if ($getResolved) {
        $hTicket =& xhelpGetHandler('ticket');
        $hFile =& xhelpGetHandler('file');
        $tickets =& $hTicket->getObjectsByState(1);
        $aTickets = array();
        foreach ($tickets as $ticket) {
            $aTickets[$ticket->getVar('id')] = $ticket->getVar('id');
        }
        // Retrieve all unresolved ticket attachments
        $crit = new Criteria('ticketid', "(" . implode($aTickets, ',') . ")", "IN");
        $files = $hFile->getObjects($crit);
        $aFiles = array();
        foreach ($files as $f) {
            $aFiles[$f->getVar('id')] = $f->getVar('filename');
        }
    }
    while ($file = $dir->read()) {
        if ($file != '.' && $file != '..') {
            if (is_dir($file)) {
                $size += dirsize($dirName . '/' . $file);
            } else {
                if ($getResolved) {
                    if (!in_array($file, $aFiles)) {
                        // Skip unresolved files
                        $size += filesize($dirName . '/' . $file);
                    }
                } else {
                    $size += filesize($dirName . '/' . $file);
                }
            }
        }
    }
    $dir->close();
    return xhelpPrettyBytes($size);
}
Пример #2
0
function manageFiles()
{
    global $oAdminButton, $aSortBy, $aOrderBy, $aLimitBy, $order, $limit, $start, $sort;
    $xhelpUploadDir = XHELP_UPLOAD_PATH;
    $dir_status =& xhelp_admin_getPathStatus($xhelpUploadDir, true);
    if ($dir_status == -1) {
        $can_upload = xhelp_admin_mkdir($xhelpUploadDir);
    }
    $hFile =& xhelpGetHandler('file');
    if (isset($_POST['deleteFiles'])) {
        // Delete all selected files
        $aFiles = $_POST['files'];
        $crit = new Criteria('id', "(" . implode($aFiles, ',') . ")", "IN");
        if ($hFile->deleteAll($crit)) {
            header("Location: " . XHELP_ADMIN_URL . "/file.php?op=manageFiles");
        }
        redirect_header(XHELP_ADMIN_URL . "/file.php?op=manageFiles", 3, _XHELP_MESSAGE_DELETE_FILE_ERR);
    }
    xoops_cp_header();
    echo $oAdminButton->renderButtons('manFiles');
    echo '<script type="text/javascript" src="' . XOOPS_URL . '/modules/xhelp/include/functions.js"></script>';
    echo "<form method='post' action='" . XHELP_ADMIN_URL . "/file.php?op=manageFiles'>";
    echo "<table width='100%' cellspacing='1' class='outer'>\r\n          <tr><th colspan='2'><label>" . _AM_XHELP_TEXT_TOTAL_USED_SPACE . "</label></th></tr>";
    echo "<tr><td class='head' width='20%'>" . _AM_XHELP_TEXT_ALL_ATTACH . "</td>\r\n              <td class='even'>" . xhelpDirsize($xhelpUploadDir) . "\r\n              </td>\r\n          </tr>";
    $resolvedSize = xhelpDirsize($xhelpUploadDir, true);
    echo "<tr><td class='head'>" . _AM_XHELP_TEXT_RESOLVED_ATTACH . "</td>\r\n              <td class='even'>";
    if ($resolvedSize > 0) {
        echo $resolvedSize . " <b>(" . _AM_XHELP_TEXT_DELETE_RESOLVED . "\r\n                  <a href='" . XHELP_ADMIN_URL . "/file.php?op=deleteResolved'><img src='" . XHELP_IMAGE_URL . "/button_delete.png' title='" . _AM_XHELP_TEXT_DELETE . "' name='deleteFile' /></a>)</b>";
    } else {
        echo $resolvedSize;
    }
    echo "</td>\r\n          </tr>";
    echo "</table></form>";
    $crit = new Criteria('', '');
    $crit->setOrder($order);
    $crit->setSort($sort);
    $crit->setLimit($limit);
    $crit->setStart($start);
    $files =& $hFile->getObjects($crit);
    $total = $hFile->getCount($crit);
    $nav = new XoopsPageNav($total, $limit, $start, 'start', "op=manageFiles&amp;limit={$limit}");
    echo "<form action='" . XHELP_ADMIN_URL . "/file.php?op=manageFiles' style='margin:0; padding:0;' method='post'>";
    echo "<table width='100%' cellspacing='1' class='outer'>";
    echo "<tr><td align='right'>" . _AM_XHELP_TEXT_SORT_BY . "\r\n                  <select name='sort'>";
    foreach ($aSortBy as $value => $text) {
        $sort == $value ? $selected = "selected='selected'" : ($selected = '');
        echo "<option value='{$value}' {$selected}>{$text}</option>";
    }
    echo "</select>\r\n                &nbsp;&nbsp;&nbsp;\r\n                  " . _AM_XHELP_TEXT_ORDER_BY . "\r\n                  <select name='order'>";
    foreach ($aOrderBy as $value => $text) {
        $order == $value ? $selected = "selected='selected'" : ($selected = '');
        echo "<option value='{$value}' {$selected}>{$text}</option>";
    }
    echo "</select>\r\n                  &nbsp;&nbsp;&nbsp;\r\n                  " . _AM_XHELP_TEXT_NUMBER_PER_PAGE . "\r\n                  <select name='limit'>";
    foreach ($aLimitBy as $value => $text) {
        $limit == $value ? $selected = "selected='selected'" : ($selected = '');
        echo "<option value='{$value}' {$selected}>{$text}</option>";
    }
    echo "</select>\r\n                  <input type='submit' name='file_sort' id='file_sort' value='" . _AM_XHELP_BUTTON_SUBMIT . "' />\r\n              </td>\r\n          </tr>";
    echo "</table></form>";
    echo "<form method='post' action='" . XHELP_ADMIN_URL . "/file.php?op=manageFiles'>";
    echo "<table width='100%' cellspacing='1' class='outer'>\r\n          <tr><th colspan='6'><label>" . _AM_XHELP_TEXT_MANAGE_FILES . "</label></th></tr>";
    if ($total != 0) {
        echo "<tr class='head'>\r\n                  <td>" . _AM_XHELP_TEXT_ID . "</td>\r\n                  <td>" . _AM_XHELP_TEXT_TICKETID . "</td>\r\n                  <td>" . _AM_XHELP_TEXT_FILENAME . "</td>\r\n                  <td>" . _AM_XHELP_TEXT_SIZE . "</td>\r\n                  <td>" . _AM_XHELP_TEXT_MIMETYPE . "</td>\r\n                  <td>" . _AM_XHELP_TEXT_ACTIONS . "</td>\r\n              </tr>";
        foreach ($files as $file) {
            $filepath = XHELP_BASE_URL . '/viewFile.php?id=' . $file->getVar('id');
            $ticketpath = XHELP_BASE_URL . '/ticket.php?id=' . $file->getVar('ticketid');
            $filesize = filesize($xhelpUploadDir . '/' . $file->getVar('filename'));
            echo "<tr class='even'>\r\n                      <td><input type='checkbox' name='files[]' value='" . $file->getVar('id') . "' /> " . $file->getVar('id') . "</td>\r\n                      <td><a href='" . $ticketpath . "' target='_BLANK'>" . $file->getVar('ticketid') . "</a></td>\r\n                      <td><a href='" . $filepath . "'>" . $file->getVar('filename') . "</a></td>\r\n                      <td>" . xhelpPrettyBytes($filesize) . "</td>\r\n                      <td>" . $file->getVar('mimetype') . "</td>\r\n                      <td>\r\n                          <a href='" . XHELP_ADMIN_URL . "/file.php?op=deleteFile&amp;fileid=" . $file->getVar('id') . "'><img src='" . XOOPS_URL . "/modules/xhelp/images/button_delete.png' title='" . _AM_XHELP_TEXT_DELETE . "' name='deleteFile' /></a>\r\n                      </td>\r\n                 </tr>";
        }
        echo "<tr class='foot'><td colspan='6'>\r\n                                   <input type='checkbox' name='checkAllFiles' value='0' onclick='selectAll(this.form,\"files[]\",this.checked);' />\r\n                                   <input type='submit' name='deleteFiles' id='deleteFiles' value='" . _AM_XHELP_BUTTON_DELETE . "' /></td></tr>";
        echo "</table></form>";
        echo "<div id='status_nav'>" . $nav->renderNav() . "</div>";
    } else {
        echo "<tr class='even'<td colspan='6'>" . _AM_XHELP_TEXT_NO_FILES . "</td></tr>";
        echo "</table></form>";
    }
    xhelpAdminFooter();
    xoops_cp_footer();
}