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); }