public static function fetchReverseRelatedObjectsCount($objectID, $attributeID, $allRelations, $ignoreVisibility)
 {
     if (!is_numeric($objectID)) {
         eZDebug::writeError("\$objectID is missing or invalid", __METHOD__);
         return false;
     }
     $object = eZContentObject::fetch($objectID);
     if (!$object instanceof eZContentObject) {
         eZDebug::writeError("An error occured fetching object #{$objectID}", __METHOD__);
         return false;
     }
     $params = array();
     if (isset($ignoreVisibility)) {
         $params['IgnoreVisibility'] = $ignoreVisibility;
     }
     if (!$attributeID) {
         $attributeID = 0;
     }
     if (isset($allRelations)) {
         if ($attributeID && !$allRelations) {
             $params['AllRelations'] = eZContentFunctionCollectionNoLanguage::contentobjectRelationTypeMask(array('attribute'));
         } elseif ($allRelations === true) {
             $attributeID = false;
         } else {
             $params['AllRelations'] = eZContentFunctionCollectionNoLanguage::contentobjectRelationTypeMask($allRelations);
         }
     }
     if ($attributeID && !is_numeric($attributeID) && !is_bool($attributeID)) {
         $attributeID = eZContentObjectTreeNodeNoLanguage::classAttributeIDByIdentifier($attributeID);
         if (!$attributeID) {
             eZDebug::writeError("Can't get class attribute ID by identifier");
             return false;
         }
     }
     return array('result' => $object->reverseRelatedObjectCount(false, $attributeID, $params));
 }
 /**
  * Returns available classes as a JSON string
  *
  * @param eZContentObjectTreeNodeNoLanguage|bool $node
  * @param array|bool $includeFilter
  * @param array|bool $groupList
  * @param int|bool $fetchID
  * @param array|bool $classes
  * @return string
  */
 static function getClassesJsArray($node = false, $includeFilter = true, $groupList = false, $fetchID = false, $classes = false)
 {
     $falseValue = "''";
     // If $classes is false we should check $node and fetch class list
     if ($classes === false) {
         // If $node is object we should fetch available classes from node, from ezcontentclass otherwise
         $classes = $node instanceof eZContentObjectTreeNodeNoLanguage ? $node->canCreateClassList(false, $includeFilter, $groupList, $fetchID) : eZContentClass::canInstantiateClassList(false, $includeFilter, $groupList, $fetchID);
     }
     if (!is_array($classes)) {
         return $falseValue;
     }
     // Create javascript array
     $classList = array();
     foreach ($classes as $class) {
         if ($class instanceof eZContentClass) {
             $classID = $class->attribute('id');
             $className = $class->attribute('name');
         } elseif (is_array($class)) {
             $classID = $class['id'];
             $className = $class['name'];
         }
         $classList[] = array('classID' => (int) $classID, 'name' => $className);
     }
     if ($classList) {
         return json_encode($classList);
     }
     return $falseValue;
 }