Skip to content

Commit

Permalink
Merge branch 'MDL-44141-m25' of git://github.com/sammarshallou/moodle…
Browse files Browse the repository at this point in the history
… into MOODLE_25_STABLE
  • Loading branch information
marinaglancy committed Mar 19, 2014
2 parents b0eeaaa + ebf2c14 commit e8aa64f
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 10 deletions.
24 changes: 23 additions & 1 deletion backup/controller/restore_controller.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,9 @@ class restore_controller extends backup implements loggable {

protected $checksum; // Cache @checksumable results for lighter @is_checksum_correct() uses

/** @var int Number of restore_controllers that are currently executing */
protected static $executing = 0;

/**
*
* @param string $tempdir Directory under tempdir/backup awaiting restore
Expand Down Expand Up @@ -312,7 +315,26 @@ public function execute_plan() {
$this->log('notifying plan about excluded activities by type', backup::LOG_DEBUG);
$this->plan->set_excluding_activities();
}
return $this->plan->execute();
self::$executing++;
try {
$this->plan->execute();
} catch (Exception $e) {
self::$executing--;
throw $e;
}
self::$executing--;
}

/**
* Checks whether restore is currently executing. Certain parts of code that
* is called during restore, but not directly part of the restore system, may
* need to behave differently during restore (e.g. do not bother resetting a
* cache because we know it will be reset at end of operation).
*
* @return bool True if any restore is currently executing
*/
public static function is_executing() {
return self::$executing > 0;
}

/**
Expand Down
17 changes: 8 additions & 9 deletions lib/grade/grade_grade.php
Original file line number Diff line number Diff line change
Expand Up @@ -779,22 +779,21 @@ function notify_changed($deleted) {
unset($SESSION->gradescorecache[$this->itemid]);
}

// Ignore during restore
// TODO There should be a proper way to determine when we are in restore
// so that this hack looking for a $restore global is not needed.
global $restore;
if (!empty($restore->backup_unique_code)) {
return;
}

require_once($CFG->libdir.'/completionlib.php');

// Bail out immediately if completion is not enabled for site (saves loading
// grade item below)
// grade item & requiring the restore stuff).
if (!completion_info::is_enabled_for_site()) {
return;
}

// Ignore during restore, as completion data will be updated anyway and
// doing it now will result in incorrect dates (it will say they got the
// grade completion now, instead of the correct time).
if (class_exists('restore_controller', false) && restore_controller::is_executing()) {
return;
}

// Load information about grade item
$this->load_grade_item();

Expand Down

0 comments on commit e8aa64f

Please sign in to comment.