public function prepareInit()

in pgo/cases/mediawiki/TrainingCaseHandler.php [124:147]


	public function prepareInit(Tool\PackageWorkman $pw, bool $force = false) : void
	{
		$url = $this->conf->getSectionItem($this->getName(), "mediawiki_zip_url");
		$pw->fetchAndUnzip($url, "mediawiki.zip", $this->conf->getCaseWorkDir(), $this->getName(), $force);

		$php = new PHP\CLI($this->conf);

		$lock = $this->conf->getCaseWorkDir($this->getName()) . DIRECTORY_SEPARATOR . "composer.lock";
		if (!file_exists($lock) || $force) {
			$composer = $this->conf->getToolsDir() . DIRECTORY_SEPARATOR . "composer.phar";
			$composer_cmd = file_exists($lock) ? "update" : "install";
			$cmd = $composer . " $composer_cmd --no-dev --working-dir=" . $this->conf->getCaseWorkDir($this->getName());
			$php->exec($cmd);
		}

		$skin_url = "https://github.com/wikimedia/mediawiki-skins-Vector/archive/master.zip";
		$skin_path = $this->conf->getCaseWorkDir($this->getName()) . DIRECTORY_SEPARATOR . "skins" . DIRECTORY_SEPARATOR . "Vector";
		if (!file_exists($skin_path . DIRECTORY_SEPARATOR . "SkinVector.php")) {
			if (is_dir($skin_path)) {
				rmdir($skin_path);
			}
			$pw->fetchAndUnzip($skin_url, "mediawiki_skin.zip", dirname($skin_path), "Vector", $force);
		}
	}