/**
  * Returns available classes as Js array.
  * Checks for ini settings.
  *
  * @param array|bool $parameters
  * @return string
  */
 static function availableClassListJsArray($parameters = false)
 {
     $iniMenu = eZINI::instance('contentstructuremenu.ini');
     $falseValue = "''";
     if ($iniMenu->hasVariable('TreeMenu', 'CreateHereMenu')) {
         $createHereMenu = $iniMenu->variable('TreeMenu', 'CreateHereMenu');
     } else {
         $createHereMenu = 'simplified';
     }
     if ($createHereMenu != 'simplified' and $createHereMenu != 'full') {
         return $falseValue;
     }
     $ini = eZINI::instance('content.ini');
     list($usersClassGroupID, $setupClassGroupID) = $ini->variableMulti('ClassGroupIDs', array('Users', 'Setup'));
     $userRootNode = $ini->variable('NodeSettings', 'UserRootNode');
     $groupIDs = false;
     $filterType = 'include';
     if (!is_array($parameters)) {
         return $falseValue;
     }
     $node = isset($parameters['node']) ? $parameters['node'] : false;
     if (is_object($node)) {
         if ($createHereMenu == 'full' and !$node->canCreate()) {
             return $falseValue;
         }
         $obj = $node->object();
         $contentClass = $obj->attribute('content_class');
         if (!$contentClass->attribute('is_container')) {
             return $falseValue;
         }
         $pathArray = $node->pathArray();
     } else {
         // If current object is not container we should not return class list, should not display "create here" menu.
         if (isset($parameters['is_container']) and !$parameters['is_container']) {
             return $falseValue;
         }
         // Check if current user can create under this node
         if ($createHereMenu == 'full' and isset($parameters['node_id'])) {
             $node = eZContentObjectTreeNodeNoLanguage::fetch($parameters['node_id']);
             if (is_object($node) and !$node->canCreate()) {
                 return $falseValue;
             }
         }
         $pathString = isset($parameters['path_string']) ? $parameters['path_string'] : false;
         if (!$pathString) {
             return $falseValue;
         }
         $pathItems = explode('/', $pathString);
         $pathArray = array();
         foreach ($pathItems as $pathItem) {
             if ($pathItem != '') {
                 $pathArray[] = (int) $pathItem;
             }
         }
     }
     if (in_array($userRootNode, $pathArray)) {
         $groupIDs = array($usersClassGroupID);
     } else {
         $groupIDs = array($usersClassGroupID, $setupClassGroupID);
         $filterType = 'exclude';
     }
     if ($createHereMenu == 'simplified') {
         $classes = eZContentClass::fetchAllClasses(false, $filterType == 'include', $groupIDs);
         return eZContentObjectTreeNodeNoLanguage::getClassesJsArray(false, $filterType == 'include', $groupIDs, false, $classes);
     }
     return eZContentObjectTreeNodeNoLanguage::getClassesJsArray($node, $filterType == 'include', $groupIDs);
 }