public static function priority($ContextType, $Extension, $MapType = null, $PriorityType = self::PRIORITY_TYPE_PREFER, $PriorityDuration = self::PRIORITY_ONCE) { $MapGroupIdentifier = implode('|', array($ContextType, $Extension)); $MapGroupHashes = val($MapGroupIdentifier, self::$mapGroups, array()); $PriorityHashes = array(); $PriorityHashes = array(); foreach ($MapGroupHashes as $MapHash => $Trash) { $ThisMapType = self::map($MapHash)->mapType(); // We're restricting this priority to a certain map type, so exclude non-matches. 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; }