Skip to content

Commit

Permalink
Merge pull request #11819 from jeabakker/walled-garden-public-access
Browse files Browse the repository at this point in the history
fix(walled_garden): register plugin hook during init
  • Loading branch information
jdalsem committed Mar 21, 2018
2 parents 48abf6c + f9880cb commit d14ef5e
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 25 deletions.
37 changes: 16 additions & 21 deletions engine/classes/ElggSite.php
Expand Up @@ -461,32 +461,27 @@ public function getDomain() {
* @since 1.8.0
*/
public function checkWalledGarden() {
global $CONFIG;

// command line calls should not invoke the walled garden check
if (PHP_SAPI === 'cli') {
return;
}

if ($CONFIG->walled_garden) {
if ($CONFIG->default_access == ACCESS_PUBLIC) {
$CONFIG->default_access = ACCESS_LOGGED_IN;
}
_elgg_services()->hooks->registerHandler(
'access:collections:write',
'all',
'_elgg_walled_garden_remove_public_access',
9999);

if (!_elgg_services()->session->isLoggedIn()) {
// override the front page
elgg_register_page_handler('', '_elgg_walled_garden_index');

if (!$this->isPublicPage()) {
_elgg_services()->redirects->setLastForwardFrom();
register_error(_elgg_services()->translator->translate('loggedinrequired'));
forward('', 'walled_garden');
}
if (!elgg_get_config('walled_garden')) {
return;
}

if (elgg_get_config('default_access') == ACCESS_PUBLIC) {
elgg_set_config('default_access', ACCESS_LOGGED_IN);
}

if (!_elgg_services()->session->isLoggedIn()) {
// override the front page
elgg_register_page_handler('', '_elgg_walled_garden_index');

if (!$this->isPublicPage()) {
_elgg_services()->redirects->setLastForwardFrom();
register_error(_elgg_services()->translator->translate('loggedinrequired'));
forward('', 'walled_garden');
}
}
}
Expand Down
17 changes: 13 additions & 4 deletions engine/lib/elgglib.php
Expand Up @@ -1983,16 +1983,23 @@ function _elgg_walled_garden_init() {
/**
* Remove public access for walled gardens
*
* @param string $hook
* @param string $type
* @param array $accesses
* @return array
* @param string $hook 'access:collections:write'
* @param string $type 'all'
* @param array $accesses current access list
*
* @return void|array
* @access private
*/
function _elgg_walled_garden_remove_public_access($hook, $type, $accesses) {

if (!elgg_get_config('walled_garden')) {
return;
}

if (isset($accesses[ACCESS_PUBLIC])) {
unset($accesses[ACCESS_PUBLIC]);
}

return $accesses;
}

Expand Down Expand Up @@ -2031,6 +2038,8 @@ function _elgg_init() {

return $result;
});

elgg_register_plugin_hook_handler('access:collections:write', 'all', '_elgg_walled_garden_remove_public_access', 9999);

if (_elgg_services()->config->getVolatile('enable_profiling')) {
/**
Expand Down

0 comments on commit d14ef5e

Please sign in to comment.