Dominique De Cooman
Published on Dominique De Cooman (https://dominiquedecooman.com)

Home > Drupal goto breaks drush

Dominique De Cooman
Friday, November 5, 2010 - 17:49
drush [1]
redirect [2]

Sometimes there is a need to make drupal redirect using drupal_goto. We had to do it in an SSO scenario. We had to make drupal goto a configurable admin page (node page) when no roles where assigned to you by the external authentication (shibboleth). So we would put a check in hook_init() to redirect drupal when our criteria where met.

This breaks drush. But, there is a solution. You can detect by who php is called using php_sapi_name(). When it is your webserver it will output:'apache2handler', when it is drush it will output 'cli'. In following snippet we check if drush is using php. You also see a check to check on which pages not to redirect, $path could be mapped to admin settings or hardcoded.

<?php
$paths
[] = $redirect;
$result = db_result(db_query("SELECT uid FROM {extranet_role_assignment} WHERE uid = %d LIMIT 1", $user->uid));
if (!
$result && 
    !
user_access('administer era settings') && 
    !
in_array($_GET['q'], $paths) && 
    
php_sapi_name() != 'cli') {    
  
drupal_goto($redirect);
}
?>


Source URL: https://dominiquedecooman.com/blog/drupal-goto-breaks-drush

Links
[1] https://dominiquedecooman.com/blog-topics/drush
[2] https://dominiquedecooman.com/blog-topics/redirect