Drupal-Admin

 view release on metacpan or  search on metacpan

lib/Drupal/Admin.pm  view on Meta::CPAN

  warn($msg);
}


sub _die {
  my($self,$msg) = @_;
  $self->log_fatal($msg);
  die($msg);
}


# WARNING this has a dependency on an English string
sub login {
  my($self, %params) = @_;

  $self->_die('user parameter required') unless $params{user};
  $self->_die('password parameter required') unless $params{password};

  # Retrieve the login page
  my $url = $self->baseurl . '?q=user';
  $self->mech->get($url);
  $self->_die("Failed to get login page: " . $self->mech->response->status_line) unless $self->mech->success;

  $self->_die("Access denied -- possible site misconfiguration") 
    if $self->mech->find_by_tag_name('title')->as_text =~ /Access denied/;

  $self->mech->submit_form(
			   with_fields => { name => $params{user}, pass => $params{password} }
			  );

  $self->_die("Login failed -- reason unkown") unless $self->mech->success; # FIXME
  $self->_die("Login failed -- wrong username/password")
    unless $self->mech->response->decoded_content !~ /unrecognized username or password/;
}

# WARNING this has a dependency on an English string
sub offline {
    my($self) = @_;
    my $url = $self->{baseurl} . '?q=admin/settings/site-maintenance';
    $self->mech->get($url);
    $self->mech->form_id('system-site-maintenance-settings');
    $self->mech->set_fields('site_offline',1);
    $self->mech->click_button(value => 'Save configuration');
    $self->_die("Offline failed") unless ($self->mech->success);
}

# WARNING this has a dependency on an English string
sub online {
    my($self) = @_;
    my $url = $self->{baseurl} . '?q=admin/settings/site-maintenance';
    $self->mech->get($url);
    $self->mech->form_id('system-site-maintenance-settings');
    $self->mech->set_fields('site_offline',0);
    $self->mech->click_button(value => 'Save configuration');
    $self->_die("Offline failed") unless ($self->mech->success);
}


# WARNING this has a dependency on an English string
# die()s if errors are detected
sub update {
  my($self) = @_;

  $self->log_trace("Entering update()");

  my $url = $self->{baseurl} . '/update.php';
  my $response = $self->mech->get($url);
  $self->_die('Access denied to update.php')
      if $self->mech->response->decoded_content =~ /access denied/i;
  $self->_update_check_errors;

  $self->_die('No "Continue" button on page')
    unless $self->mech->look_down('_tag', 'input', 'type', 'submit', 'value', 'Continue');
  $self->mech->click_button(value => 'Continue');
  $self->_die("Update failed on first page") unless ($self->mech->success);
  $self->_update_check_errors;

 
  $self->_die('No "Update" button on page')
    unless $self->mech->look_down('_tag', 'input', 'type', 'submit', 'value', 'Update');
  $self->mech->click_button(value => 'Update');

  $self->_die("Update failed on second page") unless ($self->mech->success);

  $self->_update_check_errors;

  $self->log_trace("Leaving update()");
}

#
# Check for update errors
#
sub _update_check_errors {
  my($self) = @_;

  $self->log_trace("Entering _update_check_errors()");

  my @errstrings;
  my @entries = $self->mech->look_down('_tag', 'div', 'class', 'messages error');

  if( @entries ){
    foreach my $errdiv (@entries) {
      my @errlistels = $errdiv->look_down('_tag', 'li');
      foreach my $li (@errlistels){
	push(@errstrings, $li->as_text);
      }
    }

    $self->_die(
		   join("\n",
			'Update errors:',
			@errstrings
		       )
		  );
  }

  $self->log_trace("Leaving _update_check_errors()");
}


#



( run in 0.807 second using v1.01-cache-2.11-cpan-d7f47b0818f )