/** * Caches and returns list of all possible actions */ public static function loadRoleActionList() { if (!ca_user_roles::$s_action_list) { $o_config = Configuration::load(); $o_actions_config = Configuration::load(__CA_CONF_DIR__ . '/user_actions.conf'); $vo_datamodel = Datamodel::load(); $va_raw_actions = $o_actions_config->getAssoc('user_actions'); // expand actions that need expanding foreach ($va_raw_actions as $vs_group => $va_group_info) { $va_new_actions = array(); if (!is_array($va_group_info["actions"])) { $va_group_info["actions"] = array(); } foreach ($va_group_info["actions"] as $vs_action_key => $va_action) { if (is_array($va_action["expand_types"]) && strlen($va_action["expand_types"]["table"]) > 0) { $t_instance = $vo_datamodel->getInstanceByTableName($va_action["expand_types"]["table"], true); if (method_exists($t_instance, "getTypeList")) { $va_type_list = $t_instance->getTypeList(); foreach ($va_type_list as $vn_type_id => $va_type) { $vs_descr_app = str_replace("%t", """ . $va_type["name_singular"] . """, $va_action["expand_types"]["description_appendix"]); $vs_label_app = str_replace("%t", """ . $va_type["name_singular"] . """, $va_action["expand_types"]["label_appendix"]); $va_new_actions[$vs_action_key . "_type:{$t_instance->tableName()}:{$va_type["idno"]}"] = array("description" => $va_action["description"] . " " . $vs_descr_app, "label" => $va_action["label"] . " " . $vs_label_app); } } } } $va_group_info["actions"] = array_merge($va_group_info["actions"], $va_new_actions); } if (is_array($va_raw_plugin_actions = ApplicationPluginManager::getPluginRoleActions())) { $va_raw_actions['plugins'] = array('label' => 'Plugin actions', 'description' => '', 'actions' => $va_raw_plugin_actions); } if (is_array($va_raw_widget_actions = WidgetManager::getWidgetRoleActions())) { $va_raw_actions['widgets'] = array('label' => 'Widget actions', 'description' => '', 'actions' => $va_raw_widget_actions); } $va_flattened_actions = array(); foreach ($va_raw_actions as $vs_group => $va_group_actions_info) { if (!is_array($va_group_actions_info['actions'])) { $va_group_actions_info['actions'] = array(); } $va_flattened_actions = array_merge($va_flattened_actions, $va_group_actions_info['actions']); } ca_user_roles::$s_action_list = array('raw' => $va_raw_actions, 'flattened' => $va_flattened_actions); } return ca_user_roles::$s_action_list; }