Source for file PNCategory.class.php
Documentation is available at PNCategory.class.php
* Zikula Application Framework
* @copyright value4business GmbH
* @link http://www.zikula.org
* @version $Id: PNCategory.class.php 24342 2008-06-06 12:03:14Z markwest $
* @license GNU/GPL - http://www.gnu.org/copyleft/gpl.html
* @author Robert Gasch rgasch@gmail.com
* @package Zikula_System_Modules
// ensure the language file is available
$this->_objType = 'categories_category';
$this->_objPath = 'category';
$this->_objPermissionFilter[] = array('realm' => 0,
'component_left' => 'Categories',
'component_middle' => '',
'instance_middle' => 'ipath',
'instance_right' => 'path',
$this->_init($init, $key);
// checkbox has to be explicitly processed
if (isset ($data['status'])) {
if (!isset ($data['is_locked'])) {
if (!isset ($data['is_leaf'])) {
foreach ($languages as $lang) {
if (!isset ($data['display_name'][$lang]) || !$data['display_name'][$lang]) {
// the only reason we need al this stuff beflow is the because of the serialization
$data = & $this->_objData;
$data['display_name_org'] = $data['display_name'];
$data['display_desc_org'] = $data['display_desc'];
$data['display_name'] = serialize($data['display_name']);
$data['display_desc'] = serialize($data['display_desc']);
$data['name'] = str_replace ('/', '/', $data['name']);
$data = & $this->_objData;
$data['display_name'] = $data['display_name_org'];
$data['display_desc'] = $data['display_desc_org'];
unset ($data['display_name_org']);
unset ($data['display_desc_org']);
if (isset ($_SESSION['Cache'])) {
unset ($_SESSION['Cache']);
$data = & $this->_objData;
$pid = (int) $data['parent_id'];
$data = & $this->_objData;
$data['path'] = "$parent[path]/$data[name]";
$data['ipath'] = "$parent[ipath]/$data[id]";
$data['name'] = str_replace ('/', '/', $data['name']);
$data = & $this->_objData;
$data['display_name'] = $data['display_name_org'];
$data['display_desc'] = $data['display_desc_org'];
unset ($data['display_name_org']);
unset ($data['display_desc_org']);
if (isset ($_SESSION['Cache'])) {
unset ($_SESSION['Cache']);
$data = & $this->_objData;
// ensure that the name we want to use doesn't exist already on this level
if (isset ($cats[$name]) && $cats[$name] && $cats[$name]['id'] != $data['id']) {
$_SESSION['validationErrors'][$this->_objPath]['name'] = "Category $name must be unique under parent";
$_SESSION['validationFailedObjects'][$this->_objPath] = $data;
return $this->delete (false, $newParentID);
function delete ($deleteSubcats= false, $newParentID= 0)
exit ('Can not delete category while preserving subcategories without specifying a new parent ID');
function move ($newParentID)
function copy ($newParentID)
|