in pgo/cases/joomla/TrainingCaseHandler.php [102:149]
public function setupUrls()
{
$this->maria->up();
$this->nginx->up();
$url = "http://" . $this->getHttpHost() . ":" . $this->getHttpPort();
$s = file_get_contents($url);
$this->nginx->down(true);
$this->maria->down(true);
echo "Generating training urls.\n";
$lst = array();
if (preg_match_all(", href=\"([^\"]+)\",", $s, $m)) {
foreach ($m[1] as $u) {
$h = parse_url($u, PHP_URL_HOST);
$s = parse_url($u, PHP_URL_SCHEME);
if ($h && $s) {
if ($this->getHttpHost() != $h) {
continue;
}
if (!in_array($u, $lst)) {
$lst[] = $u;
}
continue;
}
$p = parse_url($u, PHP_URL_PATH);
if (strlen($p) >= 2 && "/" == $p[0] && "/" != $p[1] && !in_array(substr($p, -3), array("css", "xml", "ico")) &&
"/using-joomla/extensions/components/news-feeds-component/single-news-feed" != $p) {
$ur = "http://" . $this->getHttpHost() . ":" . $this->getHttpPort() . $u;
if (!in_array($ur, $lst)) {
$lst[] = $ur;
}
}
}
}
if (empty($lst)) {
printf("\033[31m WARNING: Training URL list is empty, check the regex and the possible previous error messages!\033[0m\n");
}
$fn = $this->getJobFilename();
$s = implode("\n", $lst);
if (strlen($s) !== file_put_contents($fn, $s)) {
throw new Exception("Couldn't write '$fn'.");
}
}