function flag_actions_get_actions in Flag 7.3
Same name and namespace in other branches
- 5 flag_actions.module \flag_actions_get_actions()
- 6.2 flag_actions.module \flag_actions_get_actions()
- 6 flag_actions.module \flag_actions_get_actions()
- 7.2 flag_actions.module \flag_actions_get_actions()
3 calls to flag_actions_get_actions()
- flag_actions_do in ./
flag_actions.module - Perform flag actions.
- flag_actions_get_action in ./
flag_actions.module - flag_actions_page in ./
flag_actions.module - Menu callback for FLAG_ADMIN_PATH/actions.
File
- ./
flag_actions.module, line 86 - Actions support for the Flag module.
Code
function flag_actions_get_actions($flag_name = NULL, $reset = FALSE) {
$flag_actions =& drupal_static(__FUNCTION__);
module_load_include('inc', 'flag', 'includes/flag.actions');
// Get a list of all possible actions defined by modules.
$actions = module_invoke_all('action_info');
// Retrieve the list of user-defined flag actions.
if (!isset($flag_actions) || $reset) {
$flag_actions = array();
$query = db_select('flag_actions', 'a');
$query
->innerJoin('flag', 'f', 'a.fid = f.fid');
$query
->addField('f', 'name', 'flag');
$result = $query
->fields('a')
->execute();
foreach ($result as $action) {
if (!isset($actions[$action->callback])) {
$actions[$action->callback] = array(
'description' => t('Missing action "@action-callback". Module providing it was either uninstalled or disabled.', array(
'@action-callback' => $action->callback,
)),
'configurable' => FALSE,
'type' => 'node',
'missing' => TRUE,
);
}
$action->parameters = unserialize($action->parameters);
$action->label = $actions[$action->callback]['label'];
$action->configurable = $actions[$action->callback]['configurable'];
$action->behavior = isset($actions[$action->callback]['behavior']) ? $actions[$action->callback]['behavior'] : array();
$action->type = $actions[$action->callback]['type'];
$action->missing = !empty($actions[$action->callback]['missing']);
$flag_actions[$action->aid] = $action;
}
}
// Filter actions to a specified flag.
if (isset($flag_name)) {
$specific_flag_actions = array();
foreach ($flag_actions as $aid => $action) {
if ($action->flag == $flag_name) {
$specific_flag_actions[$aid] = $action;
}
}
return $specific_flag_actions;
}
return $flag_actions;
}