} else {
set_config('allow_registration', FALSE, $site->getGUID());
}
+
+ // setup walled garden
+ if (get_input('walled_garden', FALSE)) {
+ set_config('walled_garden', TRUE, $site->getGUID());
+ } else {
+ set_config('walled_garden', FALSE, $site->getGUID());
+ }
$https_login = get_input('https_login');
if ($https_login) {
set_config('language', get_input('language'), $site->getGUID());
set_config('default_access', get_input('default_access'), $site->getGUID());
set_config('allow_registration', TRUE, $site->getGUID());
+ set_config('walled_garden', FALSE, $site->getGUID());
$debug = get_input('debug');
if ($debug) {
function elgg_init() {
// Page handler for JS
register_page_handler('js','js_page_handler');
-
+
// Register an event triggered at system shutdown
register_shutdown_function('__elgg_shutdown_hook');
}
+function elgg_walled_garden_index() {
+ global $CONFIG;
+
+ $login = elgg_view('account/forms/login');
+ $layout = elgg_view_layout('one_column', $login);
+
+ echo page_draw('', $layout);
+ return TRUE;
+}
+
/**
* Boot Elgg
* @return unknown_type
*/
function elgg_boot() {
+ global $CONFIG;
+
// Actions
register_action('comments/add');
register_action('comments/delete');
elgg_view_register_simplecache('css');
elgg_view_register_simplecache('js/friendsPickerv1');
elgg_view_register_simplecache('js/initialise_elgg');
+
+ // check for external page view
+ if (isset($CONFIG->site) && $CONFIG->site instanceof ElggSite) {
+ $CONFIG->site->check_walled_garden();
+ }
}
/**
'url',
));
}
+
+ public function check_walled_garden() {
+ global $CONFIG;
+
+ if ($CONFIG->walled_garden && !isloggedin()) {
+ register_plugin_hook('index', 'system', 'elgg_walled_garden_index');
+
+ if (!$this->is_public_page()) {
+ register_error(elgg_echo('walled_garden:private_page') . current_page_url());
+ forward();
+ }
+ }
+ }
+
+ public function is_public_page($url='') {
+ global $CONFIG;
+
+ if (empty($url)) {
+ $url = current_page_url();
+
+ // do not check against URL queries
+ if ($pos = strpos($url, '?')) {
+ $url = substr($url, 0, $pos);
+ }
+ }
+
+ // default public pages
+ $public = array(
+ $CONFIG->url,
+ "{$CONFIG->url}action/login",
+ "{$CONFIG->url}upgrade.php",
+ );
+
+ // include a hook for plugin authors to include public pages
+
+ // lookup admin-specific public pages
+
+ // allow public pages
+ if (in_array($url, $public)) {
+ return TRUE;
+ }
+
+ // non-public page
+ return FALSE;
+ }
}
/**
if (is_plugin_enabled('walledgarden')) {
disable_plugin('walledgarden');
set_config('allow_registration', FALSE);
+ set_config('walled_garden', TRUE);
} else {
set_config('allow_registration', TRUE);
+ set_config('walled_garden', FALSE);
}
elgg_set_ignore_access($access);
$form_body .= elgg_view('input/pulldown', array('options_values' => $debug_options, 'internalname' => 'debug', 'value' => $vars['config']->debug));
$form_body .= '</p>';
+// control new user registration
$options = array(
'options' => array(elgg_echo('installation:registration:label')),
'internalname' => 'allow_registration',
$form_body .= '<p>' . elgg_echo('installation:registration:description');
$form_body .= '<br />' .elgg_view('input/checkboxes', $options) . '</p>';
+// control walled garden
+$options = array(
+ 'options' => array(elgg_echo('installation:walled_garden:label')),
+ 'internalname' => 'walled_garden',
+ 'value' => $vars['config']->walled_garden ? elgg_echo('installation:walled_garden:label') : '',
+);
+$form_body .= '<p>' . elgg_echo('installation:walled_garden:description');
+$form_body .= '<br />' . elgg_view('input/checkboxes', $options) . '</p>';
+
$form_body .= "<p>" . elgg_echo('installation:httpslogin') . "<br />" .elgg_view("input/checkboxes", array('options' => array(elgg_echo('installation:httpslogin:label')), 'internalname' => 'https_login', 'value' => ($vars['config']->https_login ? elgg_echo('installation:httpslogin:label') : "") )) . "</p>";
$form_body .= "<p>" . elgg_echo('installation:disableapi') . "<br />";