Zikula_Core
[ class tree: Zikula_Core ] [ index: Zikula_Core ] [ all elements ]

Source for file PNCategory.class.php

Documentation is available at PNCategory.class.php

  1. <?php
  2. /**
  3.  * Zikula Application Framework
  4.  *
  5.  * @copyright value4business GmbH
  6.  * @link http://www.zikula.org
  7.  * @version $Id: PNCategory.class.php 24342 2008-06-06 12:03:14Z markwest $
  8.  * @license GNU/GPL - http://www.gnu.org/copyleft/gpl.html
  9.  * @author Robert Gasch rgasch@gmail.com
  10.  * @package Zikula_Core
  11.  */
  12.  
  13.  
  14. /**
  15.  * PNCategory
  16.  *
  17.  * @package Zikula_System_Modules
  18.  * @subpackage Categories
  19.  */
  20. class PNCategory extends PNObject
  21. {
  22.     function PNCategory($init=null$key=0)
  23.     {
  24.         // ensure the language file is available
  25.         pnModLangLoad('Categories''common');
  26.  
  27.         $this->PNObject();
  28.         $this->_objType       'categories_category';
  29.         $this->_objPath       'category';
  30.  
  31.         $this->_objPermissionFilter[array('realm' => 0,
  32.                                               'component_left'   => 'Categories',
  33.                                               'component_middle' => '',
  34.                                               'component_right'  => '',
  35.                                               'instance_left'    => 'id',
  36.                                               'instance_middle'  => 'ipath',
  37.                                               'instance_right'   => 'path',
  38.                                               'level'            => ACCESS_READ);
  39.  
  40.         $this->_objValidation['name']  array ('name'true'noop'''_CATEGORIES_NAME_EMPTY);
  41.  
  42.         $this->_init($init$key);
  43.     }
  44.  
  45.     // checkbox has to be explicitly processed
  46.     function getDataFromInputPostProcess ($data=null)
  47.     {
  48.         if (!$data{
  49.             $data $this->_objData;
  50.         }
  51.         if (!$data{
  52.             return $data;
  53.         }
  54.  
  55.         if (isset($data['status'])) {
  56.             $data['status''A';
  57.         else {
  58.             $data['status''I';
  59.     }
  60.  
  61.         if (!isset($data['is_locked'])) {
  62.             $data['is_locked'0;
  63.         }
  64.  
  65.         if (!isset($data['is_leaf'])) {
  66.             $data['is_leaf'0;
  67.     }
  68.  
  69.     Loader::loadClass ('LanguageUtil');
  70.     $languages LanguageUtil::getLanguages();
  71.     foreach ($languages as $lang{
  72.             if (!isset($data['display_name'][$lang]|| !$data['display_name'][$lang]{
  73.                 $data['display_name'][$lang_CATEGORIES_LOCALNAME_UNDEFINED;
  74.             }
  75.     }
  76.  
  77.         $this->_objData $data;
  78.         return $data;
  79.     }
  80.  
  81.     // the only reason we need al this stuff beflow is the because of the serialization
  82.     function selectPostProcess ($data=null)
  83.     {
  84.         if (!$data{
  85.             $data $this->_objData;
  86.         }
  87.         if (!$data{
  88.             return $data;
  89.         }
  90.  
  91.         $data['display_name'DataUtil::formatForDisplayHTML(unserialize($data['display_name']));
  92.         $data['display_desc'DataUtil::formatForDisplayHTML(unserialize($data['display_desc']));
  93.  
  94.         $this->_objData $data;
  95.         return $data;
  96.     }
  97.  
  98.     function insertPreProcess ($data=null)
  99.     {
  100.         if (!$data{
  101.             $data =$this->_objData;
  102.         }
  103.  
  104.         if (!$data{
  105.             return $data;
  106.         }
  107.  
  108.         $data['display_name_org'$data['display_name'];
  109.         $data['display_desc_org'$data['display_desc'];
  110.         $data['display_name']     serialize($data['display_name']);
  111.         $data['display_desc']     serialize($data['display_desc']);
  112.  
  113.         // encode slash
  114.         $data['name'str_replace ('/''&#47;'$data['name']);
  115.  
  116.         $this->_objData $data;
  117.         return $data;
  118.     }
  119.  
  120.     function insertPostProcess($data=null)
  121.     {
  122.         if (!$data{
  123.             $data =$this->_objData;
  124.         }
  125.  
  126.         if (!$data{
  127.             return $data;
  128.         }
  129.  
  130.         $data['display_name'$data['display_name_org'];
  131.         $data['display_desc'$data['display_desc_org'];
  132.         unset ($data['display_name_org']);
  133.         unset ($data['display_desc_org']);
  134.         if (isset($_SESSION['Cache'])) {
  135.             unset($_SESSION['Cache']);
  136.         }
  137.  
  138.         $this->_objData $data;
  139.         return $data;
  140.     }
  141.  
  142.     function updatePreProcess ($data=null)
  143.     {
  144.         if (!$data{
  145.             $data =$this->_objData;
  146.         }
  147.  
  148.         if (!$data{
  149.             return $data;
  150.         }
  151.  
  152.         Loader::loadClass('CategoryUtil');
  153.  
  154.         $pid    = (int)$data['parent_id'];
  155.         $parent CategoryUtil::getCategoryByID ($pid);
  156.  
  157.         $this->insertPreProcess ();
  158.         $data =$this->_objData;
  159.         $data['path']  "$parent[path]/$data[name]";
  160.         $data['ipath'"$parent[ipath]/$data[id]";
  161.  
  162.         // encode slash
  163.         $data['name'str_replace ('/''&#47;'$data['name']);
  164.  
  165.         $this->_objData $data;
  166.         $this->_objData $data;
  167.         return $data;
  168.     }
  169.  
  170.     function updatePostProcess ($data=null)
  171.     {
  172.         if (!$data{
  173.             $data =$this->_objData;
  174.         }
  175.  
  176.         if (!$data{
  177.             return $data;
  178.         }
  179.  
  180.         $data['display_name'$data['display_name_org'];
  181.         $data['display_desc'$data['display_desc_org'];
  182.         unset ($data['display_name_org']);
  183.         unset ($data['display_desc_org']);
  184.         if (isset($_SESSION['Cache'])) {
  185.             unset($_SESSION['Cache']);
  186.     }
  187.  
  188.         $this->_objData $data;
  189.         return $data;
  190.     }
  191.  
  192.     function validatePostProcess ($data=null)
  193.     {
  194.         if (!$data{
  195.             $data =$this->_objData;
  196.         }
  197.  
  198.         if (!$data{
  199.             return false;
  200.     }
  201.  
  202.         Loader::loadClass('CategoryUtil');
  203.  
  204.         // ensure that the name we want to use doesn't exist already on this level
  205.         $name $data['name'];
  206.         $cats CategoryUtil::getCategoriesByParentID ($data['parent_id']''false'''''''name');
  207.  
  208.         if (isset($cats[$name]&& $cats[$name&& $cats[$name]['id'!= $data['id']{
  209.             $_SESSION['validationErrors'][$this->_objPath]['name'"Category $name must be unique under parent";
  210.             $_SESSION['validationFailedObjects'][$this->_objPath$data;
  211.             return false;
  212.         }
  213.  
  214.         return true;
  215.     }
  216.  
  217.     function deleteMoveSubcategories ($newParentID)
  218.     {
  219.         return $this->delete (false$newParentID);
  220.     }
  221.  
  222.     function delete ($deleteSubcats=false$newParentID=0)
  223.     {
  224.         $data $this->_objData;
  225.  
  226.         if (!$data{
  227.             return $data;
  228.         }
  229.  
  230.     Loader::loadClass('CategoryUtil');
  231.  
  232.         if ($deleteSubcats{
  233.             CategoryUtil::deleteCategoriesByPath ($data['ipath']);
  234.         }
  235.         elseif ($newParentID{
  236.             CategoryUtil::moveSubCategoriesByPath ($data['ipath']$newParentID);
  237.             CategoryUtil::deleteCategoryByID ($data['id']);
  238.         }
  239.         else {
  240.             exit ('Can not delete category while preserving subcategories without specifying a new parent ID');
  241.         }
  242.     }
  243.  
  244.     function move ($newParentID)
  245.     {
  246.         $data $this->_objData;
  247.  
  248.         if (!$data{
  249.             return $data;
  250.         }
  251.  
  252.     Loader::loadClass('CategoryUtil');
  253.  
  254.         CategoryUtil::moveCategoriesByPath ($data['ipath']$newParentID);
  255.     }
  256.  
  257.     function copy ($newParentID)
  258.     {
  259.         $data $this->_objData;
  260.  
  261.         if (!$data{
  262.             return $data;
  263.         }
  264.  
  265.     Loader::loadClass('CategoryUtil');
  266.  
  267.         CategoryUtil::copyCategoriesByPath ($data['ipath']$newParentID);
  268.     }
  269. }

Documentation generated on Fri, 18 Jul 2008 21:52:47 +0200 by phpDocumentor 1.4.1