/** * Normalize the information for an SMW object (page etc.) and return * the predefined ID if any. All parameters are call-by-reference and * will be changed to perform any kind of built-in normalization that * SMW requires. This mainly applies to predefined properties that * should always use their property key as a title, have fixed * sortkeys, etc. Some very special properties also have fixed IDs that * do not require any DB lookups. In such cases, the method returns * this ID; otherwise it returns 0. * * @note This function could be extended to account for further kinds * of normalization and predefined ID. However, both getSMWPropertyID * and makeSMWPropertyID must then also be adjusted to do the same. * * @since 1.8 * @param string $title DB key * @param integer $namespace namespace * @param string $iw interwiki prefix * @param string $subobjectName * @param string $sortkey * @return integer predefined id or 0 if none */ protected function getPredefinedData(&$title, &$namespace, &$iw, &$subobjectName, &$sortkey) { if ($namespace == SMW_NS_PROPERTY && ($iw === '' || $iw == SMW_SQL3_SMWINTDEFIW) && $title != '') { // Check if this is a predefined property: if ($title[0] != '_') { // This normalization also applies to // subobjects of predefined properties. $newTitle = SMW\DIProperty::findPropertyID(str_replace('_', ' ', $title)); if ($newTitle) { $title = $newTitle; $sortkey = SMW\DIProperty::findPropertyLabel($title); if ($sortkey === '') { $iw = SMW_SQL3_SMWINTDEFIW; } } } // Check if this is a property with a fixed SMW ID: if ($subobjectName === '' && array_key_exists($title, self::$special_ids)) { return self::$special_ids[$title]; } } return 0; }