Index: front_page.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/front/front_page.module,v retrieving revision 1.75.2.6 diff -u -r1.75.2.6 front_page.module --- front_page.module 29 Apr 2008 08:34:08 -0000 1.75.2.6 +++ front_page.module 30 Jan 2010 17:16:47 -0000 @@ -1,5 +1,5 @@ = 3) { - krsort($roles); - $special_note = '
'. t('front page by role usage

Note:When using the front pages by role option, please note that if a user has multiple roles the first role match will determine which front page they see. Here is the order that the roles will be checked (from left to right).

') .'

'; + $special_note = '

'. t('front page by role usage

Note:When using the front pages by role option, please note that if a user has multiple roles the first role match will determine which front page they see. Here is the order that the roles will be checked (from left to right).'); + if (_front_page_is_roleweight_module_available()) { + // we can use the roleweight module to change the order of priority + $special_note .= ' Using role order specified by your roleweight settings.'; + } + $special_note .= '

'; foreach ($roles as $role_id => $role_name) { $special_note .= "$role_id $role_name | "; } @@ -59,6 +63,31 @@ } /** + * Get the roles. If the roleweight module is installed then we respect the ordering presented there + * + * @return Roles array indexed with role ID. + */ +function _front_page_get_roles() { + if (!_front_page_is_roleweight_module_available()) { + $roles = user_roles (); + krsort($roles); + return $roles; + } else { + $roles = roleweight_get_roles(); + $result = array(); + foreach ( $roles as $role ) { + $result[ $role['rid'] ] = $role['name']; + } + $result = array_reverse ($result, true); + return $result; + } +} + +function _front_page_is_roleweight_module_available () { + return function_exists('roleweight_get_roles'); +} + +/** * This function sets up the admin/build/front_page settings page. * */ @@ -74,7 +103,7 @@ ); // build the form for roles - $roles = user_roles(); + $roles = _front_page_get_roles(); foreach (element_children($roles) as $role) { $rolename = $roles[$role]; @@ -258,6 +287,7 @@ * Function to handle the display of the front page. */ function front_page() { + // Set a default value for landing zone if no front_page variables are filled. // If the module is turned on but empty in certain areas then a redirection loop will occur. // Defaulting to 'node' prevents this. @@ -286,7 +316,7 @@ } //this checks to see if you are overriding HOME links on the site - if (variable_get('front_page_breadcrumb', 0)) { + if (variable_get('front_page_breadcrumb', 0) && isset($_SERVER['HTTP_REFERER'])) { // This checks to see if the referer is an internal HOME link or not. $newhome = variable_get('front_page_breadcrumb_redirect', 'node'); $ref = $_SERVER['HTTP_REFERER']; @@ -303,6 +333,7 @@ // if the user is not logged in load up the page for anonymous users if (!$user->uid) { + $output = variable_get('front_1_text', 'drupal'); // If PHP code execution is allowed then use eval. @@ -326,10 +357,8 @@ } } - $roles = ""; //make sure the roles variable is clear - $roles = user_roles(); //load up the user roles for the site - krsort($roles); //reverse the order of role types so it checks the highest or more recent role type first. + $roles = _front_page_get_roles(); //load up the user roles for the site $siteroles = count($roles); /* this is where the front page by role stuff happens */ @@ -413,5 +442,4 @@ } } } -} - +} \ No newline at end of file