aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engine/lib/actions.php42
1 files changed, 28 insertions, 14 deletions
diff --git a/engine/lib/actions.php b/engine/lib/actions.php
index bdd519458..8abd03d64 100644
--- a/engine/lib/actions.php
+++ b/engine/lib/actions.php
@@ -2,10 +2,10 @@
/**
* Elgg Actions
*
- * Actions are the primary controllers (The C in MVC) in Elgg. The are
+ * Actions are the primary controllers (The C in MVC) in Elgg. They are
* registered by {@link register_elgg_action()} and are called either by URL
* http://elggsite.org/action/action_name or {@link action($action_name}. For
- * URLs, rewrite a rule in .htaccess passes the action name to
+ * URLs, a rewrite rule in .htaccess passes the action name to
* engine/handlers/action_handler.php, which dispatches the action.
*
* An action name should be registered to exactly one file in the system, usually under
@@ -34,7 +34,7 @@
* Perform an action.
*
* This function executes the action with name $action as
-* registered by {@link register_action()}.
+* registered by {@link elgg_register_action()}.
*
* The plugin hook action, $action_name will be emitted before
* the action is executed. If a handler returns false, it will
@@ -86,8 +86,8 @@ function action($action, $forwarder = "") {
}
if (isset($CONFIG->actions[$action])) {
- if ((isadminloggedin()) || (!$CONFIG->actions[$action]['admin'])) {
- if ($CONFIG->actions[$action]['public'] || get_loggedin_userid()) {
+ if (isadminloggedin() || ($CONFIG->actions[$action]['access'] !== 'admin')) {
+ if (isloggedin() || ($CONFIG->actions[$action]['access'] === 'public')) {
// Trigger action event
// @todo This is only called before the primary action is called.
@@ -140,22 +140,20 @@ function action($action, $forwarder = "") {
* <code>
* array(
* 'file' => '/location/to/file.php',
- * 'public' => BOOL If false, user must be logged in.
- * 'admin' => BOOL If true, user must be admin (implies plugin = false)
+ * 'access' => 'public', 'logged_in', or 'admin'
* )
* </code>
*
- * @param string $action The name of the action (eg "register", "account/settings/save")
- * @param boolean $public Can this action be accessed by people not logged into the system?
- * @param string $filename Optionally, the filename where this action is located
- * @param boolean $admin_only Whether this action is only available to admin users.
+ * @param string $action The name of the action (eg "register", "account/settings/save")
+ * @param string $filename Optionally, the filename where this action is located
+ * @param string $access Who is allowed to execute this action
*
* @see action()
* @see http://docs.elgg.org/Actions
*
* @return true
*/
-function register_action($action, $public = false, $filename = "", $admin_only = false) {
+function elgg_register_action($action, $filename = "", $access = 'logged_in') {
global $CONFIG;
// plugins are encouraged to call actions with a trailing / to prevent 301
@@ -177,13 +175,29 @@ function register_action($action, $public = false, $filename = "", $admin_only =
$CONFIG->actions[$action] = array(
'file' => $filename,
- 'public' => $public,
- 'admin' => $admin_only
+ 'access' => $access,
);
return true;
}
/**
+ * @deprecated 1.8 Use {@link elgg_register_action()} instead
+ */
+function register_action($action, $public = false, $filename = "", $admin_only = false) {
+ elgg_deprecated_notice("register_action() was deprecated by elgg_register_action()", 1.8);
+
+ if ($admin_only) {
+ $access = 'admin';
+ } elseif ($public) {
+ $access = 'public';
+ } else {
+ $access = 'logged_in';
+ }
+
+ return elgg_register_action($action, $filename, $access);
+}
+
+/**
* Validate an action token.
*
* Calls to actions will automatically validate tokens.