public static function fetchSameClassAttributeNodeList($contentclassattributeID, $value, $datatype)
 {
     if ($datatype == "int") {
         $type = "data_int";
     } else {
         if ($datatype == "float") {
             $type = "data_float";
         } else {
             if ($datatype == "text") {
                 $type = "data_text";
             } else {
                 eZDebug::writeError("DatatypeString not supported in fetch same_classattribute_node, use int, float or text");
                 return false;
             }
         }
     }
     $db = eZDB::instance();
     $contentclassattributeID = (int) $contentclassattributeID;
     $value = $db->escapeString($value);
     if ($datatype != "text") {
         settype($value, $datatype);
     }
     $resultNodeArray = array();
     $nodeList = $db->arrayQuery("SELECT ezcontentobject_tree.node_id, ezcontentobject.name, ezcontentobject_tree.parent_node_id\n                                            FROM ezcontentobject_tree, ezcontentobject, ezcontentobject_attribute\n                                           WHERE ezcontentobject_attribute.{$type}='{$value}'\n                                             AND ezcontentobject_attribute.contentclassattribute_id='{$contentclassattributeID}'\n                                             AND ezcontentobject_attribute.contentobject_id=ezcontentobject.id\n                                             AND ezcontentobject_attribute.version=ezcontentobject.current_version\n                                             AND ezcontentobject_tree.contentobject_version=ezcontentobject.current_version\n                                             AND ezcontentobject_tree.contentobject_id=ezcontentobject.id\n                                        ORDER BY ezcontentobject.name");
     foreach ($nodeList as $nodeObject) {
         $nodeID = $nodeObject['node_id'];
         $node = eZContentObjectTreeNodeNoLanguage::fetch($nodeID);
         $resultNodeArray[] = $node;
     }
     return array('result' => $resultNodeArray);
 }
 /**
  * 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);
 }