/** fetch the local PECL releases of the given pkg name */ function get_local_pecl_releases($array) { static $cache = array(); $pecl_releases = get_pecl_releases_local(); $pkg = pkg_name($array); if (isset($cache[$pkg])) { return $cache[$pkg]; } $pkg_strlen = strlen($pkg); foreach ($pecl_releases as $release) { if (substr_compare($pkg, $release, 0, $pkg_strlen, true) == 0) { $cache[$pkg][] = $release; } } return $cache[$pkg]; }
sqlite_query($idx, $sql); } } $db_open = isset($idx) ? true : false; if (!$db_open && !($idx = sqlite_open('ini_changelog.sqlite', 0666, $error))) { die("Couldn't create the DB: {$error}"); } // process PHP sources foreach ($tags as $tag) { $array = $replace = array(); recurse("./sources/{$tag}", true); insert_in_db($tag); echo "{$tag}\n"; } // process PECL sources foreach (get_pecl_releases_local() as $release) { preg_match('/^(.+)-(\\d+(?:\\.\\d+)+)$/S', $release, $m); $pkg = $m[1]; $version = $m[2]; // if it has an entry already, just skip it if (sqlite_single_query($idx, "SELECT COUNT(*) FROM pecl_changelog WHERE package='" . sqlite_escape_string($pkg) . "' AND version='{$version}'") > 0) { continue; } $array = $replace = array(); recurse("./sources/{$release}", true); $sql = ''; foreach ($array as $key => $data) { $sql .= "INSERT INTO pecl_changelog (package, version, name, value) VALUES ('" . sqlite_escape_string($pkg) . "', '{$version}', '{$key}', '{$data['1']}');"; // prefer information from PHP sources if (!sqlite_single_query($idx, "SELECT name FROM changelog WHERE name='{$key}'")) { $sql .= "REPLACE INTO last_seen_values (name, defaultval, permissions) VALUES ('{$key}', '" . sqlite_escape_string(expand_macros($data[0])) . "', '{$data['1']}');";