diff options
Diffstat (limited to 'engine/lib')
| -rw-r--r-- | engine/lib/actions.php | 44 | ||||
| -rw-r--r-- | engine/lib/entities.php | 4 | ||||
| -rw-r--r-- | engine/lib/languages.php | 3 | 
3 files changed, 21 insertions, 30 deletions
diff --git a/engine/lib/actions.php b/engine/lib/actions.php index 3a7c02488..53b185dea 100644 --- a/engine/lib/actions.php +++ b/engine/lib/actions.php @@ -82,44 +82,28 @@ function action($action, $forwarder = "") {  	$forwarder = str_replace(elgg_get_site_url(), "", $forwarder);  	$forwarder = str_replace("http://", "", $forwarder);  	$forwarder = str_replace("@", "", $forwarder); -  	if (substr($forwarder, 0, 1) == "/") {  		$forwarder = substr($forwarder, 1);  	} -	if (isset($CONFIG->actions[$action])) { -		if (elgg_is_admin_logged_in() || ($CONFIG->actions[$action]['access'] !== 'admin')) { -			if (elgg_is_logged_in() || ($CONFIG->actions[$action]['access'] === 'public')) { - -				// Trigger action event -				// @todo This is only called before the primary action is called. -				$event_result = true; -				$event_result = elgg_trigger_plugin_hook('action', $action, null, $event_result); - -				// Include action -				// Event_result being false doesn't produce an error -				// since i assume this will be handled in the hook itself. -				// @todo make this better! -				if ($event_result) { -					if (!include($CONFIG->actions[$action]['file'])) { -						register_error(elgg_echo('actionnotfound', array($action))); -					} -				} -			} else { -				register_error(elgg_echo('actionloggedout')); +	if (!isset($CONFIG->actions[$action])) { +		register_error(elgg_echo('actionundefined', array($action))); +	} elseif (!elgg_is_admin_logged_in() && ($CONFIG->actions[$action]['access'] === 'admin')) { +		register_error(elgg_echo('actionunauthorized')); +	} elseif (!elgg_is_logged_in() && ($CONFIG->actions[$action]['access'] !== 'public')) { +		register_error(elgg_echo('actionloggedout')); +	} else { +		// Returning falsy doesn't produce an error +		// We assume this will be handled in the hook itself. +		if (elgg_trigger_plugin_hook('action', $action, null, true)) { +			if (!include($CONFIG->actions[$action]['file'])) { +				register_error(elgg_echo('actionnotfound', array($action)));  			} -		} else { -			register_error(elgg_echo('actionunauthorized'));  		} -	} else { -		register_error(elgg_echo('actionundefined', array($action)));  	} -	if (!empty($forwarder)) { -		forward($forwarder); -	} else { -		forward(REFERER); -	} +	$forwarder = empty($forwarder) ? REFERER : $forwarder; +	forward($forwarder);  }  /** diff --git a/engine/lib/entities.php b/engine/lib/entities.php index abfe07276..66c1475b7 100644 --- a/engine/lib/entities.php +++ b/engine/lib/entities.php @@ -313,6 +313,10 @@ function add_subtype($type, $subtype, $class = "") {  /**   * Removes a registered ElggEntity type, subtype, and classname.   * + * @warning You do not want to use this function. If you want to unregister + * a class for a subtype, use update_subtype(). Using this function will + * permanently orphan all the objects created with the specified subtype. + *   * @param string $type    Type   * @param string $subtype Subtype   * diff --git a/engine/lib/languages.php b/engine/lib/languages.php index 15c48f902..98006f7cd 100644 --- a/engine/lib/languages.php +++ b/engine/lib/languages.php @@ -50,8 +50,11 @@ function elgg_echo($message_key, $args = array(), $language = "") {  		$string = $CONFIG->translations[$language][$message_key];  	} else if (isset($CONFIG->translations["en"][$message_key])) {  		$string = $CONFIG->translations["en"][$message_key]; +		$lang = $CONFIG->translations["en"][$language]; +		elgg_log(sprintf('Missing %s translation for "%s" language key', $lang, $message_key), 'NOTICE');  	} else {  		$string = $message_key; +		elgg_log(sprintf('Missing English translation for "%s" language key', $message_key), 'NOTICE');  	}  	// only pass through if we have arguments to allow backward compatibility  | 
