/** * Run the upgrade process * * @return array $result Associative array containing possible errors */ public function run() { $result = array('failure' => false, 'reason' => ''); // prevent someone from running the upgrade script in parallel (see #4643) if (!$this->mutex->lock('upgrade')) { $result['failure'] = true; $result['reason'] = $this->translator->translate('upgrade:locked'); return $result; } // disable the system log for upgrades to avoid exceptions when the schema changes. $this->events->unregisterHandler('log', 'systemlog', 'system_log_default_logger'); $this->events->unregisterHandler('all', 'all', 'system_log_listener'); // turn off time limit set_time_limit(0); if ($this->getUnprocessedUpgrades()) { $this->processUpgrades(); } $this->events->trigger('upgrade', 'system', null); elgg_flush_caches(); $this->mutex->unlock('upgrade'); return $result; }