diff options
| -rw-r--r-- | engine/lib/admin.php | 32 | ||||
| -rw-r--r-- | engine/lib/users.php | 16 | ||||
| -rw-r--r-- | install/ElggInstaller.php | 51 | 
3 files changed, 36 insertions, 63 deletions
diff --git a/engine/lib/admin.php b/engine/lib/admin.php index 71bf8fe12..876af307b 100644 --- a/engine/lib/admin.php +++ b/engine/lib/admin.php @@ -278,6 +278,9 @@ function admin_init() {  		);  	} +	// automatic adding of widgets for admin +	elgg_register_event_handler('make_admin', 'user', 'elgg_add_admin_widgets'); +  	elgg_register_page_handler('admin', 'admin_settings_page_handler');  	elgg_register_page_handler('admin_plugin_screenshot', 'admin_plugin_screenshot_page_handler');  } @@ -459,5 +462,34 @@ function admin_plugin_screenshot_page_handler($pages) {  	return true;  } +/** + * Adds default admin widgets to the admin dashboard. + */ +function elgg_add_admin_widgets($event, $type, $user) { +	elgg_set_ignore_access(true); + +	// check if the user already has widgets +	if (elgg_get_widgets($user->getGUID(), 'admin')) { +		return true; +	} + +	// In the form column => array of handlers in order, top to bottom +	$adminWidgets = array( +		1 => array('online_users', 'new_users', 'content_stats'), +		2 => array('admin_welcome'), +	); +	 +	foreach ($adminWidgets as $column => $handlers) { +		foreach ($handlers as $position => $handler) { +			$guid = elgg_create_widget($user->getGUID(), $handler, 'admin'); +			if ($guid) { +				$widget = get_entity($guid); +				$widget->move($column, $position); +			} +		} +	} +	elgg_set_ignore_access(false); +} +  elgg_register_event_handler('init', 'system', 'admin_init');  elgg_register_event_handler('pagesetup', 'system', 'admin_pagesetup', 1000); diff --git a/engine/lib/users.php b/engine/lib/users.php index 55bacdcb2..6733c9d3e 100644 --- a/engine/lib/users.php +++ b/engine/lib/users.php @@ -1001,22 +1001,6 @@ $allow_multiple_emails = false, $friend_guid = 0, $invitecode = '') {  		}  	} -	// Check to see if we've registered the first admin yet. -	// If not, this is the first admin user! -	$have_admin = datalist_get('admin_registered'); - -	if (!$have_admin) { -		// makeAdmin() calls ElggUser::canEdit(). -		// right now no one is logged in and so canEdit() returns false. -		// instead of making an override for this one instance that is called on every -		// canEdit() call, just override the access system to set the first admin user. -		// @todo remove this when Cash merges in the new installer -		$ia = elgg_set_ignore_access(TRUE); -		$user->makeAdmin(); -		datalist_set('admin_registered', 1); -		elgg_set_ignore_access($ia); -	} -  	// Turn on email notifications by default  	set_user_notification_setting($user->getGUID(), 'email', true); diff --git a/install/ElggInstaller.php b/install/ElggInstaller.php index a62ba2bc4..6e946f0d0 100644 --- a/install/ElggInstaller.php +++ b/install/ElggInstaller.php @@ -29,16 +29,6 @@ class ElggInstaller {  	protected $autoLogin = TRUE;  	/** -	 * @var array An array of widgets to add to the admin dashboard. -	 * -	 * In the form column => array of handlers in order, top to bottom -	 */ -	protected $adminWidgets = array( -		1 => array('online_users', 'new_users', 'content_stats'), -		2 => array('admin_welcome'), -	); - -	/**  	 * Constructor bootstraps the Elgg engine  	 */  	public function __construct() { @@ -178,8 +168,6 @@ class ElggInstaller {  		if (!$this->createAdminAccount($params)) {  			throw new InstallationException(elgg_echo('install:admin:cannot_create'));  		} - -		$this->addAdminWidgets();  	}  	/** @@ -496,7 +484,6 @@ class ElggInstaller {  	 * @return void  	 */  	protected function complete() { -		$this->addAdminWidgets();  		$params = array();  		if ($this->autoLogin) { @@ -746,7 +733,8 @@ class ElggInstaller {  				'private_settings.php', 'relationships.php', 'river.php',  				'sites.php', 'statistics.php', 'tags.php', 'user_settings.php',  				'users.php', 'version.php', 'web_services.php', -				'widgets.php', 'xml.php', 'xml-rpc.php' +				'widgets.php', 'xml.php', 'xml-rpc.php', 'deprecated-1.7.php', +				'deprecated-1.8.php',  			);  			foreach ($lib_files as $file) { @@ -1365,39 +1353,6 @@ class ElggInstaller {  	}  	/** -	 * Adds default admin widgets to the admin dashboard. -	 * -	 * @return bool -	 */ -	protected function addAdminWidgets() { -		elgg_set_ignore_access(true); -		// should only be one. -		$users = elgg_get_entities(array( -			'type' => 'user', -			'limit' => 1, -		)); - -		if ($users) { -			if ($users[0]->isAdmin()) { -				$admin = $users[0]; -			} -		} else { -			return false; -		} - -		foreach ($this->adminWidgets as $column => $handlers) { -			foreach ($handlers as $position => $handler) { -				$guid = elgg_create_widget($admin->getGUID(), $handler, 'admin'); -				if ($guid) { -					$widget = get_entity($guid); -					$widget->move($column, $position); -				} -			} -		} -		elgg_set_ignore_access(false); -	} - -	/**  	 * Admin account support methods  	 */ @@ -1477,6 +1432,8 @@ class ElggInstaller {  		elgg_set_ignore_access(TRUE);  		if ($user->makeAdmin() == FALSE) {  			register_error(elgg_echo('install:error:adminaccess')); +		} else { +			datalist_set('admin_registered', 1);  		}  		elgg_set_ignore_access(FALSE);  | 
