class RulesUICategory
Class holding category related methods.
Hierarchy
- class \RulesUICategory
Expanded class hierarchy of RulesUICategory
File
-
ui/
ui.core.inc, line 1238
View source
class RulesUICategory {
/**
* Gets info about all available categories, or about a specific category.
*
* @return array
*/
public static function getInfo($category = NULL) {
$data = rules_fetch_data('category_info');
if (isset($category)) {
return $data[$category];
}
return $data;
}
/**
* Returns a group label, e.g. as usable for opt-groups in a select list.
*
* @param array $item_info
* The info-array of an item, e.g. an entry of hook_rules_action_info().
* @param bool $in_category
* (optional) Whether group labels for grouping inside a category should be
* return. Defaults to FALSE.
*
* @return string|bool
* The group label to use, or FALSE if none can be found.
*/
public static function getItemGroup($item_info, $in_category = FALSE) {
if (isset($item_info['category']) && !$in_category) {
return self::getCategory($item_info, 'label');
}
elseif (!empty($item_info['group'])) {
return $item_info['group'];
}
return FALSE;
}
/**
* Gets the category for the given item info array.
*
* @param array $item_info
* The info-array of an item, e.g. an entry of hook_rules_action_info().
* @param string|null $key
* (optional) The key of the category info to return, e.g. 'label'. If none
* is given the whole info array is returned.
*
* @return array|mixed|false
* Either the whole category info array or the value of the given key. If
* no category can be found, FALSE is returned.
*/
public static function getCategory($item_info, $key = NULL) {
if (isset($item_info['category'])) {
$info = self::getInfo($item_info['category']);
return isset($key) ? $info[$key] : $info;
}
return FALSE;
}
/**
* Returns an array of options to use with a select.
*
* Returns an array of options to use with a selectfor the items specified
* in the given hook.
*
* @param string $item_type
* The item type to get options for. One of 'data', 'event', 'condition' and
* 'action'.
* @param array|null $items
* (optional) An array of items to restrict the options to.
*
* @return array
* An array of options.
*/
public static function getOptions($item_type, $items = NULL) {
$sorted_data = array();
$ungrouped = array();
$data = $items ? $items : rules_fetch_data($item_type . '_info');
foreach ($data as $name => $info) {
// Verify the current user has access to use it.
if (!user_access('bypass rules access') && !empty($info['access callback']) && !call_user_func($info['access callback'], $item_type, $name)) {
continue;
}
if ($group = RulesUICategory::getItemGroup($info)) {
$sorted_data[drupal_ucfirst($group)][$name] = drupal_ucfirst($info['label']);
}
else {
$ungrouped[$name] = drupal_ucfirst($info['label']);
}
}
asort($ungrouped);
foreach ($sorted_data as $key => $choices) {
asort($choices);
$sorted_data[$key] = $choices;
}
// Sort the grouped data by category weights, defaulting to weight 0 for
// groups without a respective category.
$sorted_groups = array();
foreach (array_keys($sorted_data) as $label) {
$sorted_groups[$label] = array(
'weight' => 0,
'label' => $label,
);
}
// Add in category weights.
foreach (RulesUICategory::getInfo() as $info) {
if (isset($sorted_groups[$info['label']])) {
$sorted_groups[$info['label']] = $info;
}
}
uasort($sorted_groups, '_rules_ui_sort_categories');
// Now replace weights with group content.
foreach ($sorted_groups as $group => $weight) {
$sorted_groups[$group] = $sorted_data[$group];
}
return $ungrouped + $sorted_groups;
}
}
Members
Title Sort descending | Modifiers | Object type | Summary |
---|---|---|---|
RulesUICategory::getCategory | public static | function | Gets the category for the given item info array. |
RulesUICategory::getInfo | public static | function | Gets info about all available categories, or about a specific category. |
RulesUICategory::getItemGroup | public static | function | Returns a group label, e.g. as usable for opt-groups in a select list. |
RulesUICategory::getOptions | public static | function | Returns an array of options to use with a select. |