コード例 #1
0
 /**
  * categories list
  * @global array
  * @global integer
  * @global array
  * @global object
  * @global object
  */
 private function categories()
 {
     global $_ARRAYLANG, $_LANGID, $_CONFIG, $objInit;
     $objCategory = Category::getCategory($this->parentCategoryId);
     $objFWUser = \FWUser::getFWUserObject();
     $this->_pageTitle = $_ARRAYLANG['TXT_DOWNLOADS_CATEGORIES'];
     $this->objTemplate->addBlockFile('DOWNLOADS_CATEGORY_TEMPLATE', 'module_downloads_categories', 'module_downloads_categories.html');
     // check access permission
     if (!\Permission::checkAccess(143, 'static', true) && $objCategory->getReadAccessId() && !\Permission::checkAccess($objCategory->getReadAccessId(), 'dynamic', true) && $objCategory->getOwnerId() != $objFWUser->objUser->getId()) {
         return \Permission::noAccess();
     }
     // get passed parameters
     $pos = isset($_GET['pos']) ? intval($_GET['pos']) : 0;
     $categoryLimitOffset = isset($_GET['category_pos']) ? intval($_GET['category_pos']) : $pos;
     $categoryOrderDirection = !empty($_GET['category_sort']) ? $_GET['category_sort'] : 'asc';
     $categoryOrderBy = !empty($_GET['category_by']) ? $_GET['category_by'] : '';
     $downloadLimitOffset = isset($_GET['download_pos']) ? intval($_GET['download_pos']) : $pos;
     $downloadOrderDirection = !empty($_GET['download_sort']) ? $_GET['download_sort'] : 'asc';
     $downloadOrderBy = !empty($_GET['download_by']) ? $_GET['download_by'] : '';
     $searchTerm = !empty($_GET['search_term']) ? $_GET['search_term'] : '';
     $searchTerm = $searchTerm == $_ARRAYLANG['TXT_DOWNLOADS_SEARCH_DOWNLOAD'] ? '' : $searchTerm;
     // parse categories multi action
     if (isset($_POST['downloads_category_select_action'])) {
         switch ($_POST['downloads_category_select_action']) {
             case 'order':
                 $this->updateCategoryOrder(isset($_POST['downloads_category_order']) && is_array($_POST['downloads_category_order']) ? $_POST['downloads_category_order'] : array());
                 break;
             case 'delete':
                 $this->deleteCategories(isset($_POST['downloads_category_id']) && is_array($_POST['downloads_category_id']) ? $_POST['downloads_category_id'] : array(), isset($_POST['downloads_category_delete_recursive']) && $_POST['downloads_category_delete_recursive']);
                 break;
         }
     }
     // process downloads multi action
     if (isset($_POST['downloads_download_select_action'])) {
         if (!\Permission::checkAccess(143, 'static', true) && $objCategory->getManageFilesAccessId() && !\Permission::checkAccess($objCategory->getManageFilesAccessId(), 'dynamic', true) && $objCategory->getOwnerId() != $objFWUser->objUser->getId()) {
             return \Permission::noAccess();
         }
         switch ($_POST['downloads_download_select_action']) {
             case 'order':
                 if ($objCategory->updateDownloadOrder(isset($_POST['downloads_download_order']) && is_array($_POST['downloads_download_order']) ? $_POST['downloads_download_order'] : array())) {
                     $this->arrStatusMsg['ok'][] = $_ARRAYLANG['TXT_DOWNLOADS_DOWNLOAD_ORDER_SET_SUCCESS'];
                 } else {
                     $this->arrStatusMsg['error'] = array_merge($this->arrStatusMsg['error'], $objCategory->getErrorMsg());
                 }
                 break;
             case 'unlink':
                 $this->unlinkDownloadsFromCategory($objCategory, isset($_POST['downloads_download_id']) && is_array($_POST['downloads_download_id']) ? $_POST['downloads_download_id'] : array());
                 break;
         }
     }
     $this->objTemplate->setGlobalVariable(array('TXT_DOWNLOADS_EDIT' => $_ARRAYLANG['TXT_DOWNLOADS_EDIT'], 'TXT_DOWNLOADS_DELETE' => $_ARRAYLANG['TXT_DOWNLOADS_DELETE']));
     //        // check if user is allowed to add a subcategory
     //        if (// managers are allowed to add subcategories
     //            \Permission::checkAccess(143, 'static', true)
     //            // the selected category must be valid to proceed future permission checks.
     //            // this is required to protect the overview section from non-admins
     //            || $objCategory->getId() && (
     //                // the category isn't protected => everyone is allowed to add subcategories
     //                !$objCategory->getAddSubcategoriesAccessId()
     //                // the category is protected => only those who have the sufficent permissions are allowed to add subcategories
     //                || \Permission::checkAccess($objCategory->getAddSubcategoriesAccessId(), 'dynamic', true)
     //                // the owner is allowed to add subcategories
     //                || ($objFWUser = \FWUser::getFWUserObject()) && $objFWUser->objUser->login() && $objCategory->getOwnerId() == $objFWUser->objUser->getId()
     //            )
     //        ) {
     //            $this->objTemplate->setVariable(array(
     //                'DOWNLOADS_CATEGORY_ID' => $objCategory->getId(),
     //                // TODO: rename
     //                //'TXT_ADD_CATEGORY'      => $_ARRAYLANG['TXT_ADD_CATEGORY']
     //            ));
     //            $this->objTemplate->parse('downloads_category_add_buttom');
     //        } else {
     //            $this->objTemplate->hideBlock('downloads_category_add_buttom');
     //        }
     // parse categories
     $this->parseCategories($objCategory, $downloadOrderBy, $downloadOrderDirection, $downloadLimitOffset, $categoryOrderBy, $categoryOrderDirection, $categoryLimitOffset);
     if (!$objCategory->getId()) {
         $this->objTemplate->setVariable('TXT_DOWNLOADS_ALL_CATEGORIES', $_ARRAYLANG['TXT_DOWNLOADS_ALL_CATEGORIES']);
     }
     // parse frontend preview link
     if ($objCategory->getId()) {
         $categoryFrontendURI = ASCMS_PATH_OFFSET . '/' . \FWLanguage::getLanguageCodeById(FRONTEND_LANG_ID) . '/' . CONTREXX_DIRECTORY_INDEX . '?section=Downloads&category=' . $objCategory->getId();
         $this->objTemplate->setVariable(array('TXT_DOWNLOADS_OPEN_CATEGORY_FRONTEND' => $_ARRAYLANG['TXT_DOWNLOADS_OPEN_CATEGORY_FRONTEND'], 'DOWNLOADS_CATEGORY_FRONTEND_URI' => $categoryFrontendURI));
         $this->objTemplate->parse('downloads_category_frontend_link');
     } else {
         $this->objTemplate->hideBlock('downloads_category_frontend_link');
     }
     // parse downloads
     $this->parseCategoryDownloads($objCategory, $downloadOrderBy, $downloadOrderDirection, $downloadLimitOffset, $categoryOrderBy, $categoryOrderDirection, $categoryLimitOffset, $searchTerm);
     $this->objTemplate->setVariable(array('DOWNLOADS_CONFIRM_UNLINK_DOWNLOAD_TXT' => preg_replace('#\\n#', '\\n', addslashes($_ARRAYLANG['TXT_DOWNLOADS_CONFIRM_UNLINK_DOWNLOAD']))));
     // parse add downloads buttons
     if ($objCategory->getId() && (\Permission::checkAccess(143, 'static', true) || !$objCategory->getAddFilesAccessId() || \Permission::checkAccess($objCategory->getAddFilesAccessId(), 'dynamic', true))) {
         $this->objTemplate->setVariable(array('DOWNLOADS_CATEGORY_ID' => $objCategory->getId(), 'TXT_DOWNLOADS_ADD_NEW_DOWNLOAD_TO_CATEGORY' => sprintf($_ARRAYLANG['TXT_DOWNLOADS_ADD_NEW_DOWNLOAD_TO_CATEGORY'], htmlentities($objCategory->getName(LANG_ID), ENT_QUOTES, CONTREXX_CHARSET)), 'TXT_DOWNLOADS_ADD_DOWNLOADS_TO_CATEGORY' => sprintf($_ARRAYLANG['TXT_DOWNLOADS_ADD_DOWNLOADS_TO_CATEGORY'], htmlentities($objCategory->getName(LANG_ID), ENT_QUOTES, CONTREXX_CHARSET)), 'DOWNLOADS_DOWNLOAD_CATEGORY_SORT' => $categoryOrderDirection, 'DOWNLOADS_DOWNLOAD_CATEGORY_SORT_BY' => $categoryOrderBy, 'DOWNLOADS_DOWNLOAD_DOWNLOAD_SORT' => $downloadOrderDirection, 'DOWNLOADS_DOWNLOAD_DOWNLOAD_BY' => $downloadOrderBy, 'DOWNLOADS_DOWNLOAD_CATEGORY_OFFSET' => $categoryLimitOffset, 'DOWNLOADS_DOWNLOAD_DOWNLOAD_OFFSET' => $downloadLimitOffset));
         $this->objTemplate->parse('downloads_add_downloads_button');
     } else {
         $this->objTemplate->hideBlock('downloads_add_downloads_button');
     }
     // parse category menu
     // parse category id (will be used as the parent_id when creating a new directory
     $this->objTemplate->setVariable(array('TXT_DOWNLOADS_CATEGORY' => $_ARRAYLANG['TXT_DOWNLOADS_CATEGORY'], 'DOWNLOADS_CATEGORY_ID' => $objCategory->getId(), 'DOWNLOADS_CATEGORY_MENU' => $this->getCategoryMenu('read', $objCategory->getId(), $_ARRAYLANG['TXT_DOWNLOADS_ALL_CATEGORIES']), 'DOWNLOADS_SEARCH_TERM' => !empty($_GET['search_term']) ? $_GET['search_term'] : $_ARRAYLANG['TXT_DOWNLOADS_SEARCH_DOWNLOAD'], 'TXT_DOWNLOADS_SEARCH_DOWNLOAD' => $_ARRAYLANG['TXT_DOWNLOADS_SEARCH_DOWNLOAD'], 'TXT_DOWNLOADS_FILTER' => $_ARRAYLANG['TXT_DOWNLOADS_FILTER'], 'TXT_DOWNLOADS_SEARCH' => $_ARRAYLANG['TXT_DOWNLOADS_SEARCH']));
     return true;
 }