/** * Return a list of all primary items which uses a secondary item * * @param integer $secondaryItemId : the secondary item used * @param boolean $returnObject : does the method return array of object ? (default : true) * @param boolean $public are the needed datas public ? (default false) * @return array(CMS_poly_object) * @access public */ static function getPrimaryItemsWhichUsesSecondaryItem($secondaryItemId, $returnObject = true, $public = false) { //get secondary item module $codename = CMS_poly_object_catalog::getModuleCodenameForObject($secondaryItemId); if (!$codename) { CMS_grandFather::raiseError("No module codename found for secondary resource item : " . $secondaryItemId); return false; } $primaryResourceType = CMS_poly_object_catalog::getPrimaryResourceObjectType($codename); if (!$primaryResourceType) { // no primary resource found for module so return nothing return array(); } //get secondary item type $secondaryItemType = CMS_poly_object_catalog::getObjectDefinitionByID($secondaryItemId, false); //get all primary items which use secondary item $statusSuffix = $public ? "_public" : "_edited"; $sql = "\n\t\t\tselect\n\t\t\t\tobjectID\n\t\t\tfrom\n\t\t\t\tmod_object_field,\n\t\t\t\tmod_subobject_integer" . $statusSuffix . "\n\t\t\twhere\n\t\t\t\tobject_id_mof='" . sensitiveIO::sanitizeSQLString($primaryResourceType) . "'\n\t\t\t\tand (type_mof = '" . sensitiveIO::sanitizeSQLString($secondaryItemType) . "' \n\t\t\t\t\tor type_mof = 'multi|" . sensitiveIO::sanitizeSQLString($secondaryItemType) . "')\n\t\t\t\tand objectFieldID=id_mof\n\t\t\t\tand value='" . sensitiveIO::sanitizeSQLString($secondaryItemId) . "'\n\t\t"; $q = new CMS_query($sql); $results = array(); if (!$q->getNumRows()) { return array(); } while ($r = $q->getArray()) { $results[$r['objectID']] = $r['objectID']; } if (!$returnObject) { return $results; } return CMS_poly_object_catalog::getAllObjects($primaryResourceType, $public, array('items' => $results), true); }