Находим актуальную версию Flashphoner WebSDK 2.0
, МихаилСложно найти в этом огромном списке актуальную версию сборки. Теперь с помощью небольшого парсера получаем свежую дату и название файла для скачивания.
Результат можно посмотреть тут
<?php
public function getListUpdates() {
$html = file_get_contents('https://flashphoner.com/downloads/builds/flashphoner_client/wcs_api-2.0/');
$build = [];
$doc = new DOMDocument();
$doc->loadHTML($html);
$xpath = new DOMXpath($doc);
$xPathText = $xpath->query('//table//tr');
foreach ($xPathText as $row) {
$a = $xpath->query('.//td[2]/a', $row);
$date = $xpath->query('.//td[3]', $row);
if (trim($a->item(0)->nodeValue) != "Parent Directory" && trim($date->item(0)->nodeValue) != "") {
$build[trim($date->item(0)->nodeValue)] = trim($a->item(0)->nodeValue);
}
}
uksort($build, "cmpDate");
reset($build);
return ["date" => key($build), "file" => current($build)];
}
?>
И функция для сравнения двух дат
<?php
function cmpDate($a, $b) {
$cA = strtotime($a);
$cB = strtotime($b);
if ($cA == $cB) {
return 0;
} else {
return ($cA < $cB) ? 1 : -1;
}
}
?>
Потом скачиваем и распаковываем наш архив, выбираем файлы для обновления - копируем в рабочую папку.
<?php
file_put_contents($this->updateFile, file_get_contents($this->urlUpdate . $this->freshBuild['file']));
// Распаковываем обновления
exec("tar -zxvf {$this->updateFile} -C {$this->archive_dir}");
// Определяем набор файлов для обновления
$findFirst = glob($this->archive_dir . "/*", GLOB_ONLYDIR);
reset($findFirst);
$unpackedDir = current($findFirst);
$filesUpdate = [
"$unpackedDir/examples/demo/dependencies/websocket-player/video-worker2.js" => "$this->pathToUpdate/video-worker2.js",
"$unpackedDir/examples/demo/dependencies/websocket-player/WSReceiver2.js" => "$this->pathToUpdate/WSReceiver2.js",
"$unpackedDir/examples/demo/dependencies/js/utils.js" => "$this->pathToUpdate/utils.js",
"$unpackedDir/media-provider.swf" => "$this->pathToUpdate/media-provider.swf",
"$unpackedDir/flashphoner.min.js" => "$this->pathToUpdate/flashphoner.min.js",
"$unpackedDir/flashphoner.js" => "$this->pathToUpdate/flashphoner.js",
// С player.js осторожнее, т.к. в нём изменения, потом сравниваем в редакторе
"$unpackedDir/examples/demo/streaming/embed_player/player.js" => "$this->pathToUpdate/player.upd.js",
];
// Копируем обновлённые файлы
foreach ($filesUpdate as $fileFrom => $fileTo) {
copy($fileFrom, $fileTo);
}
?>