| // +---------------------------------------------------------------------------+ // $Id$ require_once SGL_CORE_DIR . '/Category.php'; require_once SGL_MOD_DIR . '/navigation/classes/MenuBuilder.php'; /** * For performing operations on Category objects. * * @package publisher * @author Demian Turner * @version $Revision: 1.27 $ */ class CategoryMgr extends SGL_Manager { var $_redirectCatId = 1; var $_category = null; function CategoryMgr() { SGL::logMessage(null, PEAR_LOG_DEBUG); parent::SGL_Manager(); $this->aggregateOutput = true; $this->pageTitle = 'Category Manager'; $this->template = 'categoryMgr.html'; $this->_aActionsMapping = array( 'insert' => array('insert', 'redirectToDefault'), 'update' => array('update', 'redirectToDefault'), 'delete' => array('delete', 'redirectToDefault'), 'list' => array('list'), 'reorder' => array('reorder'), 'reorderUpdate' => array('reorderUpdate', 'reorder'), ); $this->_category = & new SGL_Category(); } function validate($req, &$input) { SGL::logMessage(null, PEAR_LOG_DEBUG); $this->validated = true; $input->error = array(); $input->pageTitle = $this->pageTitle; $input->masterTemplate = 'masterLeftCol.html'; $input->template = $this->template; // form vars $input->submitted = $req->get('submitted'); $input->action = ($req->get('action')) ? $req->get('action') : 'list'; $input->category = $req->get('category'); $input->move = $req->get('move'); $input->targetId = $req->get('targetId'); $input->aDelete = $req->get('frmDelete'); $input->fromPublisher = $req->get('frmFromPublisher'); if ($input->action == 'update') { $input->category_id = $input->category['category_id']; $input->label = $input->category['label']; $input->parent_id = $input->category['parent_id']; $input->perms = $input->category['perms']; $input->orginial_parent_id = $input->category['original_parent_id']; } elseif ($input->action =='insert') { $input->category['parent_id'] = $req->get('frmCatID'); } else { $input->category_id = ($req->get('frmCatID') == '') ? 1 : $req->get('frmCatID'); } } function _cmd_insert(&$input, &$output) { SGL::logMessage(null, PEAR_LOG_DEBUG); $values = (array) $input->category; $this->_redirectCatId = $this->_category->create($values); } function _cmd_list(&$input, &$output) { SGL::logMessage(null, PEAR_LOG_DEBUG); // load category if (!$this->_category->load($input->category_id)) { $output->noEditForm = 1; return; } $output->category = $this->_category->getValues(); $output->breadCrumbs = $this->_category->getBreadCrumbs($output->category['category_id']); $output->perms = $this->_category->getPerms(); // categories select box $options = array('exclude' => $output->category['category_id']); $menu = & new MenuBuilder('SelectBox', $options); $aCategories = $menu->toHtml(); $output->aCategories = $aCategories; } function _cmd_update(&$input, &$output) { SGL::logMessage(null, PEAR_LOG_DEBUG); $values = (array) $input->category; $message = $this->_category->update($input->category_id, $values); if ($message != '') { SGL::raiseMsg($message, true, SGL_MESSAGE_INFO); $this->_redirectCatId = $input->category_id; } else { SGL::raiseError('Problem updating category', SGL_ERROR_NOAFFECTEDROWS); } } function _cmd_delete(&$input, &$output) { SGL::logMessage(null, PEAR_LOG_DEBUG); // do not allow deletion of root category if ($input->category_id == 1) { SGL::raiseMsg('do not delete root category', true, SGL_MESSAGE_WARNING); $aParams = array( 'moduleName' => 'navigation', 'managerName' => 'category', 'action' => 'list', ); SGL_HTTP::redirect($aParams); } // delete categories $this->_category->delete($input->aDelete); $output->category_id = 0; SGL::raiseMsg('The category has successfully been deleted', true, SGL_MESSAGE_INFO); } function _cmd_reorder(&$input, &$output) { SGL::logMessage(null, PEAR_LOG_DEBUG); $output->template = 'categoryReorder.html'; $output->categoryTree = $this->_category->getTree(); $output->addOnLoadEvent("switchRowColorOnHover()"); } function _cmd_reorderUpdate(&$input, &$output) { SGL::logMessage(null, PEAR_LOG_DEBUG); $aMoveTo = array('BE' => 'up', 'AF' => 'down'); if (isset($input->category_id, $input->targetId) && ($pos = array_search($input->move, $aMoveTo))) { $this->_category->move($input->category_id, $input->targetId, $pos); SGL::raiseMsg('Categories reordered successfully', true, SGL_MESSAGE_INFO); } else { SGL::raiseError("Incorrect parameter passed to " . __CLASS__ . '::' . __FUNCTION__, SGL_ERROR_INVALIDARGS); } } function _cmd_redirectToDefault(&$input, &$output) { SGL::logMessage(null, PEAR_LOG_DEBUG); // if no errors have occured, redirect if (!SGL_Error::count()) { SGL_HTTP::redirect(array('frmCatID' => $this->_redirectCatId)); // else display error with blank template } else { $output->template = 'error.html'; } } } ?>