public static function Priority($ContextType, $Extension, $MapType = NULL, $PriorityType = self::PRIORITY_TYPE_PREFER, $PriorityDuration = self::PRIORITY_ONCE) { $MapGroupIdentifier = implode('|', array($ContextType, $Extension)); $MapGroupHashes = GetValue($MapGroupIdentifier, self::$MapGroups, array()); foreach ($MapGroupHashes as $MapHash => $Trash) { $ThisMapType = self::Map($MapHash)->MapType(); // We're restricting this priority to a certain maptype, so exclude non matchers if (!is_null($MapType) && $ThisMapType != $MapType) { continue; } $PriorityHashes[$MapHash] = array('maptype' => $ThisMapType, 'duration' => $PriorityDuration, 'prioritytype' => $PriorityType); } if (!sizeof($PriorityHashes)) { return FALSE; } if (!is_array(self::$Priorities)) { self::$Priorities = array(); } if (!array_key_exists($ContextType, self::$Priorities)) { self::$Priorities[$ContextType] = array(self::PRIORITY_TYPE_RESTRICT => array(), self::PRIORITY_TYPE_PREFER => array()); } // Add new priorities to list self::$Priorities[$ContextType][$PriorityType] = array_merge(self::$Priorities[$ContextType][$PriorityType], $PriorityHashes); return TRUE; }