/** * 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; }