Example #1
0
// | Render                                                               |
// +----------------------------------------------------------------------+
$dialog = new CMS_dialog();
$content = '';
$dialog->setTitle($cms_language->getMessage(MESSAGE_PAGE_TITLE_MODULE, array($cms_module->getLabel($cms_language))) . " :: " . $cms_language->getMessage(MESSAGE_PAGE_TITLE, false, MOD_CMS_FORMS_CODENAME));
$dialog->setBacklink("items.php?item=" . $item->getId());
if ($cms_message) {
    $dialog->setActionMessage($cms_message);
}
// Insert prefered text editor for textarea field
$toolbarset = !$cms_module->getParameters("editor_toolbar") ? 'Basic' : $cms_module->getParameters("editor_toolbar");
$attrs = array('form' => 'frmitem', 'field' => 'source_' . $item->getID(), 'value' => $item->getAttribute('source'), 'language' => $cms_language, 'width' => 600, 'height' => 600, 'rows' => 8, 'toolbarset' => $toolbarset);
$text_editor = CMS_textEditor::getEditorFromParams($attrs);
$dialog->setJavascript($text_editor->getJavascript());
// Get listboxes for categories
$a_all_categories = CMS_moduleCategories_catalog::getAllCategoriesAsArray($cms_user, $cms_module->getCodename(), $cms_language);
if (!sizeof($a_all_categories)) {
    //user has no right on categories so he can't edit/create items
    header("Location: " . $cms_module->getAdminFrontendPath(PATH_RELATIVETO_WEBROOT) . "?cms_message_id=65&" . session_name() . "=" . session_id());
    exit;
}
$s_categories_listboxes = CMS_moduleCategories_catalog::getListBoxes(array('field_name' => 'ids', 'items_possible' => $a_all_categories, 'items_selected' => $item_relations->getCategoriesIds(), 'select_width' => '250px', 'select_height' => '120px', 'form_name' => 'frmitem'));
// Default check statuses for radios
$public = array();
$public[1] = $item->getAttribute('public') === true ? ' checked="checked"' : '';
$public[0] = $item->getAttribute('public') === false ? ' checked="checked"' : '';
$content = '
	<table border="0" cellpadding="3" cellspacing="2">
	<form name="frmitem" action="' . $_SERVER["SCRIPT_NAME"] . '" method="post" enctype="multipart/form-data" onSubmit="getSelectedOptionsInField_ids();">
	<input type="hidden" name="cms_action" value="validate" />
	<input type="hidden" name="language" value="' . CMS_session::getSessionVar("items_language") . '" />
 /**
  * Returns each category ID and label in a module given user can see
  *
  * @param CMS_language $cms_language, the language of the labels
  * @param boolean $restrictToUsedCat, restrict returned categories to used ones only (default false)
  * @param string $cms_module, the module codename (optional)
  * @param boolean $editableOnly, return only user editable categories (default false : viewvable ones)
  * @param mixed $clearanceLevel 
  * - false : CLEARANCE_MODULE_VIEW
  * - true : CLEARANCE_MODULE_EDIT
  * - constant value : clearanceLevel value
  * @param mixed $categoriesRoot, root category ID to use (default : false : the field root category)
  * @param boolean $strict, return strict categories available for user for this field (without the parent tree). default false
  * @param mixed (boolean or array) $usedByItemsIds, This parameters is used only if $restrictToUsedCat is used. False to restrict to only used categories (default)
  * @return array(string) the statements or false if profile hasn't any access to any categories
  * @access public
  */
 function getAllCategoriesAsArray($language = false, $restrictToUsedCat = false, $module = false, $clearanceLevel = false, $categoriesRoot = false, $strict = false, $usedByItemsIds = false, $crossLanguage = false)
 {
     global $cms_user;
     $params = $this->getParamsValues();
     $categoriesRoot = $categoriesRoot ? $categoriesRoot : $params['rootCategory'];
     //check category root
     if ($categoriesRoot) {
         $cat = CMS_moduleCategories_catalog::getByID($categoriesRoot);
         if (!$cat || $cat->hasError()) {
             $categoriesRoot = false;
         }
     }
     //get module if none passed
     if (!$module) {
         $module = CMS_poly_object_catalog::getModuleCodenameForField($this->_field->getID());
     }
     if (APPLICATION_ENFORCES_ACCESS_CONTROL && !is_object($cms_user)) {
         $this->raiseError("Valid user missing");
         return false;
     }
     if (!is_object($cms_user)) {
         //TODO : ugly but missing time (need to redo the getAllCategoriesAsArray to accept no valid cms_user : append only in frontend without APPLICATION_ENFORCES_ACCESS_CONTROL. Medias module already doing something like this)
         $user = new CMS_profile_user(ROOT_PROFILEUSER_ID);
         $categories = CMS_moduleCategories_catalog::getAllCategoriesAsArray($user, $module, $language, $categoriesRoot, -1, $clearanceLevel, $strict, $crossLanguage);
     } else {
         $user = $cms_user;
         $categories = CMS_moduleCategories_catalog::getAllCategoriesAsArray($user, $module, $language, $categoriesRoot, -1, $clearanceLevel, $strict, $crossLanguage);
     }
     if ($restrictToUsedCat) {
         //pr($usedCategories);
         //filter categories by items ids
         if (is_array($usedByItemsIds)) {
             //Get all used categories IDS for this object field and givens items ids
             $usedCategories = $this->getAllUsedCategoriesForField($usedByItemsIds);
         } else {
             //Get all used categories IDS for this object field
             $usedCategories = $this->getAllUsedCategoriesForField();
         }
         if (is_array($usedCategories) && $usedCategories) {
             //get all categories lineage
             $catArbo = CMS_moduleCategories_catalog::getViewvableCategoriesForProfile($user, $module, true, $clearanceLevel, $strict);
             //pr($catArbo);
             //need to remove all unused categories from list
             $categoriesToKeep = array();
             foreach ($usedCategories as $catID) {
                 $cats = isset($catArbo[$catID]) ? explode(';', $catArbo[$catID]) : array();
                 foreach ($cats as $aCat) {
                     $categoriesToKeep[$aCat] = $aCat;
                 }
             }
             //pr($categoriesToKeep);
             //then remove unused categories from initial list
             if (is_array($categories)) {
                 foreach (array_keys($categories) as $catID) {
                     if (!isset($categoriesToKeep[$catID])) {
                         unset($categories[$catID]);
                     }
                 }
             }
             //pr($categories);
         } else {
             //no categories used
             $categories = array();
         }
         if (!$categories) {
             return array();
         }
     }
     return $categories;
 }
Example #3
0
 /**
  * Returns each category ID and label in a module given user can see
  *
  * @access public
  * @param CMS_language $cms_language, the language of the labels
  * @param boolean $restrictToUsedCat, restrict returned categories to used ones only (default false)
  * @return array(string) the statements or false if profile hasn't any access to any categories
  */
 function getAllCategoriesAsArray($language = false, $restrictToUsedCat = false)
 {
     global $cms_user;
     $categories = CMS_moduleCategories_catalog::getAllCategoriesAsArray($cms_user, MOD_CMS_FORMS_CODENAME, $language);
     //pr($categories);
     if (!$restrictToUsedCat) {
         return $categories;
     } else {
         //Get all used categories IDS for this object field
         $usedCategories = CMS_forms_formularCategories::getAllUsedCategoriesForField($language);
         if (sizeof($usedCategories)) {
             //get all categories lineage
             $catArbo = CMS_moduleCategories_catalog::getViewvableCategoriesForProfile($cms_user, MOD_CMS_FORMS_CODENAME, true);
             //pr($catArbo);
             //need to remove all unused categories from list
             $categoriesToKeep = array();
             foreach ($usedCategories as $catID) {
                 $cats = explode(';', $catArbo[$catID]);
                 foreach ($cats as $aCat) {
                     $categoriesToKeep[$aCat] = $aCat;
                 }
             }
             //pr($categoriesToKeep);
             //then remove unused categories from initial list
             foreach ($categories as $catID => $catLabel) {
                 if (!isset($categoriesToKeep[$catID])) {
                     unset($categories[$catID]);
                 }
             }
             //pr($categories);
             return $categories;
         } else {
             //no categories used
             return array();
         }
     }
 }