Example #1
0
 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;
 }