1
0
mirror of https://github.com/php/web-php.git synced 2026-03-23 23:02:13 +01:00

Enhancement: Include *.inc files (with exceptions)

Closes GH-662.
This commit is contained in:
Andreas Möller
2022-07-15 13:57:08 +02:00
committed by GitHub
parent d7e1b8159c
commit b575ebd409
20 changed files with 15589 additions and 15598 deletions

View File

@@ -8,7 +8,11 @@ $finder = $config->getFinder()
->ignoreDotFiles(false)
->in(__DIR__)
->exclude('manual/en/')
->name('*.inc')
->name(__FILE__)
->notPath('include/last_updated.inc')
->notPath('include/pregen-confs.inc')
->notPath('include/pregen-news.inc')
->notPath('tests/run-tests.php');
$config->setRules([

View File

@@ -10,32 +10,32 @@ include_once __DIR__ . '/version.inc';
* - security: the end of security support (usually release + 3 years).
*/
$BRANCHES = array(
/* 3.0 is here because version_compare() can't handle the only version in
* $OLDRELEASES, and it saves another special case in
* get_branch_security_eol_date(). */
'3.0' => array(
'security' => '2000-10-20',
),
'5.3' => array(
'stable' => '2013-07-11',
'security' => '2014-08-14',
),
'5.4' => array(
'stable' => '2014-09-14',
'security' => '2015-09-03',
),
'5.5' => array(
'stable' => '2015-07-10',
'security' => '2016-07-21',
),
'5.6' => array(
'stable' => '2017-01-19',
'security' => '2018-12-31',
),
'7.0' => array(
'stable' => '2018-01-04',
'security' => '2019-01-10',
),
/* 3.0 is here because version_compare() can't handle the only version in
* $OLDRELEASES, and it saves another special case in
* get_branch_security_eol_date(). */
'3.0' => array(
'security' => '2000-10-20',
),
'5.3' => array(
'stable' => '2013-07-11',
'security' => '2014-08-14',
),
'5.4' => array(
'stable' => '2014-09-14',
'security' => '2015-09-03',
),
'5.5' => array(
'stable' => '2015-07-10',
'security' => '2016-07-21',
),
'5.6' => array(
'stable' => '2017-01-19',
'security' => '2018-12-31',
),
'7.0' => array(
'stable' => '2018-01-04',
'security' => '2019-01-10',
),
);
/* Time to keep EOLed branches in the array returned by get_active_branches(),
@@ -44,187 +44,187 @@ $BRANCHES = array(
$KEEP_EOL = new DateInterval('P28D');
function format_interval($from, $to) {
try {
$from_obj = $from instanceof DateTime ? $from : new DateTime($from);
$to_obj = $to instanceof DateTime ? $to : new DateTime($to);
$diff = $to_obj->diff($from_obj);
try {
$from_obj = $from instanceof DateTime ? $from : new DateTime($from);
$to_obj = $to instanceof DateTime ? $to : new DateTime($to);
$diff = $to_obj->diff($from_obj);
$times = array();
if ($diff->y) {
$times[] = array($diff->y,'year');
if ($diff->m) {
$times[] = array($diff->m,'month');
}
} elseif ($diff->m) {
$times[] = array($diff->m,'month');
} elseif ($diff->d) {
$times[] = array($diff->d,'day');
} else {
$eolPeriod = 'midnight';
}
if ($times) {
$eolPeriod = implode(', ',
array_map(
function($t) {
return "$t[0] $t[1]" .
($t[0] != 1 ? 's' : '');
},
$times
)
);
$times = array();
if ($diff->y) {
$times[] = array($diff->y, 'year');
if ($diff->m) {
$times[] = array($diff->m, 'month');
}
} elseif ($diff->m) {
$times[] = array($diff->m, 'month');
} elseif ($diff->d) {
$times[] = array($diff->d, 'day');
} else {
$eolPeriod = 'midnight';
}
if ($times) {
$eolPeriod = implode(', ',
array_map(
function ($t) {
return "$t[0] $t[1]" .
($t[0] != 1 ? 's' : '');
},
$times
)
);
if ($diff->invert) {
$eolPeriod = "$eolPeriod ago";
} else {
$eolPeriod = "in $eolPeriod";
}
}
} catch(Exception $e) {
$eolPeriod = 'unknown';
}
if ($diff->invert) {
$eolPeriod = "$eolPeriod ago";
} else {
$eolPeriod = "in $eolPeriod";
}
}
} catch (Exception $e) {
$eolPeriod = 'unknown';
}
return $eolPeriod;
return $eolPeriod;
}
function version_number_to_branch(string $version): ?string {
$parts = explode('.', $version);
if (count($parts) > 1) {
return "$parts[0].$parts[1]";
}
$parts = explode('.', $version);
if (count($parts) > 1) {
return "$parts[0].$parts[1]";
}
return null;
return null;
}
function get_all_branches() {
$branches = array();
$branches = array();
foreach ($GLOBALS['OLDRELEASES'] as $major => $releases) {
foreach ($releases as $version => $release) {
if ($branch = version_number_to_branch($version)) {
if (!isset($branches[$major][$branch]) || version_compare($version, $branches[$major][$branch]['version'], 'gt')) {
$branches[$major][$branch] = $release;
$branches[$major][$branch]['version'] = $version;
}
}
}
}
foreach ($GLOBALS['OLDRELEASES'] as $major => $releases) {
foreach ($releases as $version => $release) {
if ($branch = version_number_to_branch($version)) {
if (!isset($branches[$major][$branch]) || version_compare($version, $branches[$major][$branch]['version'], 'gt')) {
$branches[$major][$branch] = $release;
$branches[$major][$branch]['version'] = $version;
}
}
}
}
foreach ($GLOBALS['RELEASES'] as $major => $releases) {
foreach ($releases as $version => $release) {
if ($branch = version_number_to_branch($version)) {
if (!isset($branches[$major][$branch]) || version_compare($version, $branches[$major][$branch]['version'], 'gt')) {
$branches[$major][$branch] = $release;
$branches[$major][$branch]['version'] = $version;
}
}
}
}
foreach ($GLOBALS['RELEASES'] as $major => $releases) {
foreach ($releases as $version => $release) {
if ($branch = version_number_to_branch($version)) {
if (!isset($branches[$major][$branch]) || version_compare($version, $branches[$major][$branch]['version'], 'gt')) {
$branches[$major][$branch] = $release;
$branches[$major][$branch]['version'] = $version;
}
}
}
}
krsort($branches);
foreach ($branches as &$branch) {
krsort($branch);
}
krsort($branches);
foreach ($branches as &$branch) {
krsort($branch);
}
return $branches;
return $branches;
}
function get_active_branches($include_recent_eols = true) {
$branches = array();
$now = new DateTime;
$branches = array();
$now = new DateTime;
foreach ($GLOBALS['RELEASES'] as $major => $releases) {
foreach ($releases as $version => $release) {
if ($branch = version_number_to_branch($version)) {
$threshold = get_branch_security_eol_date($branch);
if ($threshold === null) {
// No EOL date available, assume it is ancient.
continue;
}
if ($include_recent_eols) {
$threshold->add($GLOBALS['KEEP_EOL']);
}
if ($now < $threshold) {
$branches[$major][$branch] = $release;
$branches[$major][$branch]['version'] = $version;
}
}
}
if (!empty($branches[$major])) {
ksort($branches[$major]);
}
}
foreach ($GLOBALS['RELEASES'] as $major => $releases) {
foreach ($releases as $version => $release) {
if ($branch = version_number_to_branch($version)) {
$threshold = get_branch_security_eol_date($branch);
if ($threshold === null) {
// No EOL date available, assume it is ancient.
continue;
}
if ($include_recent_eols) {
$threshold->add($GLOBALS['KEEP_EOL']);
}
if ($now < $threshold) {
$branches[$major][$branch] = $release;
$branches[$major][$branch]['version'] = $version;
}
}
}
if (!empty($branches[$major])) {
ksort($branches[$major]);
}
}
ksort($branches);
return $branches;
ksort($branches);
return $branches;
}
/* If you provide an array to $always_include, note that the version numbers
* must be in $RELEASES _and_ must be the full version number, not the branch:
* ie provide array('5.3.29'), not array('5.3'). */
function get_eol_branches($always_include = null) {
$always_include = $always_include ?: array();
$branches = array();
$now = new DateTime;
$always_include = $always_include ?: array();
$branches = array();
$now = new DateTime;
// Gather the last release on each branch into a convenient array.
foreach ($GLOBALS['OLDRELEASES'] as $major => $releases) {
foreach ($releases as $version => $release) {
if ($branch = version_number_to_branch($version)) {
if (!isset($branches[$major][$branch]) || version_compare($version, $branches[$major][$branch]['version'], 'gt')) {
$branches[$major][$branch] = array(
'date' => strtotime($release['date']),
'link' => "/releases#$version",
'version' => $version,
);
}
}
}
}
// Gather the last release on each branch into a convenient array.
foreach ($GLOBALS['OLDRELEASES'] as $major => $releases) {
foreach ($releases as $version => $release) {
if ($branch = version_number_to_branch($version)) {
if (!isset($branches[$major][$branch]) || version_compare($version, $branches[$major][$branch]['version'], 'gt')) {
$branches[$major][$branch] = array(
'date' => strtotime($release['date']),
'link' => "/releases#$version",
'version' => $version,
);
}
}
}
}
/* Exclude releases from active branches, where active is defined as "in
* the $RELEASES array and not explicitly marked as EOL there". */
foreach ($GLOBALS['RELEASES'] as $major => $releases) {
foreach ($releases as $version => $release) {
if ($branch = version_number_to_branch($version)) {
if ($now < get_branch_security_eol_date($branch)) {
/* This branch isn't EOL: remove it from our array. */
if (isset($branches[$major][$branch])) {
unset($branches[$major][$branch]);
}
} else {
/* Add the release information to the EOL branches array, since it
* should be newer than the information we got from $OLDRELEASES. */
$always_include[] = $version;
}
}
}
}
/* Exclude releases from active branches, where active is defined as "in
* the $RELEASES array and not explicitly marked as EOL there". */
foreach ($GLOBALS['RELEASES'] as $major => $releases) {
foreach ($releases as $version => $release) {
if ($branch = version_number_to_branch($version)) {
if ($now < get_branch_security_eol_date($branch)) {
/* This branch isn't EOL: remove it from our array. */
if (isset($branches[$major][$branch])) {
unset($branches[$major][$branch]);
}
} else {
/* Add the release information to the EOL branches array, since it
* should be newer than the information we got from $OLDRELEASES. */
$always_include[] = $version;
}
}
}
}
// Include any release in the always_include list that's in $RELEASES.
if ($always_include) {
foreach ($always_include as $version) {
$parts = explode('.', $version);
$major = $parts[0];
// Include any release in the always_include list that's in $RELEASES.
if ($always_include) {
foreach ($always_include as $version) {
$parts = explode('.', $version);
$major = $parts[0];
if (isset($GLOBALS['RELEASES'][$major][$version])) {
$release = $GLOBALS['RELEASES'][$major][$version];
if ($branch = version_number_to_branch($version)) {
$branches[$major][$branch] = array(
'date' => strtotime($release['source'][0]['date']),
'link' => "/downloads#v$version",
'version' => $version,
);
}
}
}
}
if (isset($GLOBALS['RELEASES'][$major][$version])) {
$release = $GLOBALS['RELEASES'][$major][$version];
if ($branch = version_number_to_branch($version)) {
$branches[$major][$branch] = array(
'date' => strtotime($release['source'][0]['date']),
'link' => "/downloads#v$version",
'version' => $version,
);
}
}
}
}
krsort($branches);
foreach ($branches as &$branch) {
krsort($branch);
}
krsort($branches);
foreach ($branches as &$branch) {
krsort($branch);
}
return $branches;
return $branches;
}
/* $branch is expected to have at least two components: MAJOR.MINOR or
@@ -232,173 +232,173 @@ function get_eol_branches($always_include = null) {
* return either null (if no release exists on the given branch), or the usual
* version metadata from $RELEASES for a single release. */
function get_initial_release($branch) {
$branch = version_number_to_branch($branch);
if (!$branch) {
return null;
}
$major = substr($branch, 0, strpos($branch, '.'));
$branch = version_number_to_branch($branch);
if (!$branch) {
return null;
}
$major = substr($branch, 0, strpos($branch, '.'));
if (isset($GLOBALS['OLDRELEASES'][$major]["$branch.0"])) {
return $GLOBALS['OLDRELEASES'][$major]["$branch.0"];
}
if (isset($GLOBALS['OLDRELEASES'][$major]["$branch.0"])) {
return $GLOBALS['OLDRELEASES'][$major]["$branch.0"];
}
/* If there's only been one release on the branch, it won't be in
* $OLDRELEASES yet, so let's check $RELEASES. */
if (isset($GLOBALS['RELEASES'][$major]["$branch.0"])) {
// Fake a date like we have on the oldreleases array.
$release = $GLOBALS['RELEASES'][$major]["$branch.0"];
$release['date'] = $release['source'][0]['date'];
return $release;
}
/* If there's only been one release on the branch, it won't be in
* $OLDRELEASES yet, so let's check $RELEASES. */
if (isset($GLOBALS['RELEASES'][$major]["$branch.0"])) {
// Fake a date like we have on the oldreleases array.
$release = $GLOBALS['RELEASES'][$major]["$branch.0"];
$release['date'] = $release['source'][0]['date'];
return $release;
}
// Shrug.
return null;
// Shrug.
return null;
}
function get_final_release($branch) {
$branch = version_number_to_branch($branch);
if (!$branch) {
return null;
}
$major = substr($branch, 0, strpos($branch, '.'));
$branch = version_number_to_branch($branch);
if (!$branch) {
return null;
}
$major = substr($branch, 0, strpos($branch, '.'));
$last = "$branch.0";
foreach ($GLOBALS['OLDRELEASES'][$major] as $version => $release) {
if (version_number_to_branch($version) == $branch && version_compare($version, $last, '>')) {
$last = $version;
}
}
$last = "$branch.0";
foreach ($GLOBALS['OLDRELEASES'][$major] as $version => $release) {
if (version_number_to_branch($version) == $branch && version_compare($version, $last, '>')) {
$last = $version;
}
}
if (isset($GLOBALS['OLDRELEASES'][$major][$last])) {
return $GLOBALS['OLDRELEASES'][$major][$last];
}
if (isset($GLOBALS['OLDRELEASES'][$major][$last])) {
return $GLOBALS['OLDRELEASES'][$major][$last];
}
/* If there's only been one release on the branch, it won't be in
* $OLDRELEASES yet, so let's check $RELEASES. */
if (isset($GLOBALS['RELEASES'][$major][$last])) {
// Fake a date like we have on the oldreleases array.
$release = $GLOBALS['RELEASES'][$major][$last];
$release['date'] = $release['source'][0]['date'];
return $release;
}
/* If there's only been one release on the branch, it won't be in
* $OLDRELEASES yet, so let's check $RELEASES. */
if (isset($GLOBALS['RELEASES'][$major][$last])) {
// Fake a date like we have on the oldreleases array.
$release = $GLOBALS['RELEASES'][$major][$last];
$release['date'] = $release['source'][0]['date'];
return $release;
}
// Shrug.
return null;
// Shrug.
return null;
}
function get_branch_bug_eol_date($branch) {
if (isset($GLOBALS['BRANCHES'][$branch]['stable'])) {
return new DateTime($GLOBALS['BRANCHES'][$branch]['stable']);
}
if (isset($GLOBALS['BRANCHES'][$branch]['stable'])) {
return new DateTime($GLOBALS['BRANCHES'][$branch]['stable']);
}
$date = get_branch_release_date($branch);
$date = get_branch_release_date($branch);
return $date ? $date->add(new DateInterval('P2Y')) : null;
return $date ? $date->add(new DateInterval('P2Y')) : null;
}
function get_branch_security_eol_date($branch) {
if (isset($GLOBALS['BRANCHES'][$branch]['security'])) {
return new DateTime($GLOBALS['BRANCHES'][$branch]['security']);
}
if (isset($GLOBALS['BRANCHES'][$branch]['security'])) {
return new DateTime($GLOBALS['BRANCHES'][$branch]['security']);
}
/* Versions before 5.3 are based solely on the final release date in
* $OLDRELEASES. */
if (version_compare($branch, '5.3', '<')) {
$release = get_final_release($branch);
/* Versions before 5.3 are based solely on the final release date in
* $OLDRELEASES. */
if (version_compare($branch, '5.3', '<')) {
$release = get_final_release($branch);
return $release ? new DateTime($release['date']) : null;
}
return $release ? new DateTime($release['date']) : null;
}
$date = get_branch_release_date($branch);
return $date ? $date->add(new DateInterval('P3Y')) : null;
$date = get_branch_release_date($branch);
return $date ? $date->add(new DateInterval('P3Y')) : null;
}
function get_branch_release_date($branch) {
$initial = get_initial_release($branch);
$initial = get_initial_release($branch);
return $initial ? new DateTime($initial['date']) : null;
return $initial ? new DateTime($initial['date']) : null;
}
function get_branch_support_state($branch) {
$initial = get_branch_release_date($branch);
$bug = get_branch_bug_eol_date($branch);
$security = get_branch_security_eol_date($branch);
$initial = get_branch_release_date($branch);
$bug = get_branch_bug_eol_date($branch);
$security = get_branch_security_eol_date($branch);
if ($initial && $bug && $security) {
$now = new DateTime;
if ($initial && $bug && $security) {
$now = new DateTime;
if ($now >= $security) {
return 'eol';
}
if ($now >= $security) {
return 'eol';
}
if ($now >= $bug) {
return 'security';
}
if ($now >= $bug) {
return 'security';
}
if ($now >= $initial) {
return 'stable';
}
if ($now >= $initial) {
return 'stable';
}
return 'future';
}
return 'future';
}
return null;
return null;
}
function compare_version(array $arrayA, string $versionB)
{
$arrayB = version_array($versionB, count($arrayA));
$arrayB = version_array($versionB, count($arrayA));
foreach ($arrayA as $index => $componentA) {
$componentA = $arrayA[$index];
$componentB = $arrayB[$index];
if ($componentA != $componentB) {
return $componentA > $componentB ? 1 : -1;
}
}
foreach ($arrayA as $index => $componentA) {
$componentA = $arrayA[$index];
$componentB = $arrayB[$index];
if ($componentA != $componentB) {
return $componentA > $componentB ? 1 : -1;
}
}
return 0;
return 0;
}
function version_array(string $version, ?int $length = null)
{
$versionArray = array_map(
'intval',
explode('.', $version)
);
$versionArray = array_map(
'intval',
explode('.', $version)
);
if (is_int($length)) {
$versionArray = count($versionArray) < $length
? array_pad($versionArray, $length, 0)
: array_slice(
$versionArray,
0,
$length
);
}
if (is_int($length)) {
$versionArray = count($versionArray) < $length
? array_pad($versionArray, $length, 0)
: array_slice(
$versionArray,
0,
$length
);
}
return $versionArray;
return $versionArray;
}
function get_current_release_for_branch(int $major, ?int $minor): ?string {
global $RELEASES, $OLDRELEASES;
global $RELEASES, $OLDRELEASES;
$prefix = "{$major}.";
if ($minor !== null) {
$prefix .= "{$minor}.";
}
$prefix = "{$major}.";
if ($minor !== null) {
$prefix .= "{$minor}.";
}
foreach (($RELEASES[$major] ?? []) as $version => $_) {
if (!strncmp($prefix, $version, strlen($prefix))) {
return $version;
}
}
foreach (($RELEASES[$major] ?? []) as $version => $_) {
if (!strncmp($prefix, $version, strlen($prefix))) {
return $version;
}
}
foreach (($OLDRELEASES[$major] ?? []) as $version => $_) {
if (!strncmp($prefix, $version, strlen($prefix))) {
return $version;
}
}
foreach (($OLDRELEASES[$major] ?? []) as $version => $_) {
if (!strncmp($prefix, $version, strlen($prefix))) {
return $version;
}
}
return NULL;
return NULL;
}

View File

@@ -35,36 +35,36 @@ function release_date($in) {
}
function changelog_makelink(string $branch): string {
return '<a href="#PHP_' . urlencode(strtr($branch, '.', '_')) . '">' . htmlentities($branch) . '</a>';
return '<a href="#PHP_' . urlencode(strtr($branch, '.', '_')) . '">' . htmlentities($branch) . '</a>';
}
function changelog_header(int $major_version, array $minor_versions): void {
site_header("PHP {$major_version} ChangeLog", [
'current' => 'docs',
'css' => ['changelog.css'],
'layout_span' => 12,
]);
echo "<h1>PHP {$major_version} ChangeLog</h1>\n";
$glue = '';
foreach($minor_versions as $branch) {
echo $glue, changelog_makelink($branch);
$glue = ' | ';
}
echo "\n";
site_header("PHP {$major_version} ChangeLog", [
'current' => 'docs',
'css' => ['changelog.css'],
'layout_span' => 12,
]);
echo "<h1>PHP {$major_version} ChangeLog</h1>\n";
$glue = '';
foreach ($minor_versions as $branch) {
echo $glue, changelog_makelink($branch);
$glue = ' | ';
}
echo "\n";
}
function changelog_footer(int $current_major, array $minor_versions): void {
$sidebar = "<div class=\"panel\">ChangeLogs<div class=\"body\"><ul>\n";
foreach ([8, 7, 5, 4] as $major) {
if ($major === $current_major) {
$sidebar .= " <li><b>PHP {$major}.x</b>\n <ul>";
foreach ($minor_versions as $branch) {
$sidebar .= " <li>" . changelog_makelink($branch) . "</li>\n";
}
$sidebar .= " </ul></li>\n";
} else {
$sidebar .= " <li><a href=\"/ChangeLog-{$major}.php\">PHP {$major}.x</a></li>\n";
}
}
site_footer(['sidebar' => "$sidebar</ul></div></div>"]);
$sidebar = "<div class=\"panel\">ChangeLogs<div class=\"body\"><ul>\n";
foreach ([8, 7, 5, 4] as $major) {
if ($major === $current_major) {
$sidebar .= " <li><b>PHP {$major}.x</b>\n <ul>";
foreach ($minor_versions as $branch) {
$sidebar .= " <li>" . changelog_makelink($branch) . "</li>\n";
}
$sidebar .= " </ul></li>\n";
} else {
$sidebar .= " <li><a href=\"/ChangeLog-{$major}.php\">PHP {$major}.x</a></li>\n";
}
}
site_footer(['sidebar' => "$sidebar</ul></div></div>"]);
}

View File

@@ -1,235 +1,235 @@
<?php
return array(
'AFG' => 'Afghanistan',
'ALB' => 'Albania',
'DZA' => 'Algeria',
'ASM' => 'American Samoa',
'AND' => 'Andorra',
'AGO' => 'Angola',
'AIA' => 'Anguilla',
'ATG' => 'Antigua and Barbuda',
'ARG' => 'Argentina',
'ARM' => 'Armenia',
'ABW' => 'Aruba',
'AUS' => 'Australia',
'AUT' => 'Austria',
'AZE' => 'Azerbaijan',
'BHS' => 'Bahamas',
'BHR' => 'Bahrain',
'BGD' => 'Bangladesh',
'BRB' => 'Barbados',
'BLR' => 'Belarus',
'BEL' => 'Belgium',
'BLZ' => 'Belize',
'BEN' => 'Benin',
'BMU' => 'Bermuda',
'BTN' => 'Bhutan',
'BOL' => 'Bolivia',
'BIH' => 'Bosnia and Herzegovina',
'BWA' => 'Botswana',
'BRA' => 'Brazil',
'VGB' => 'British Virgin Islands',
'BRN' => 'Brunei Darussalam',
'BGR' => 'Bulgaria',
'BFA' => 'Burkina Faso',
'BDI' => 'Burundi',
'KHM' => 'Cambodia',
'CMR' => 'Cameroon',
'CAN' => 'Canada',
'CPV' => 'Cape Verde',
'CYM' => 'Cayman Islands',
'CAF' => 'Central African Republic',
'TCD' => 'Chad',
'CHL' => 'Chile',
'CHN' => 'China',
'COL' => 'Colombia',
'COM' => 'Comoros',
'COG' => 'Congo',
'COK' => 'Cook Islands',
'CRI' => 'Costa Rica',
'CIV' => 'Cote d\'Ivoire',
'HRV' => 'Croatia',
'CUB' => 'Cuba',
'CYP' => 'Cyprus',
'CZE' => 'Czech Republic',
'PRK' => 'Democratic People\'s Republic of Korea',
'COD' => 'Democratic Republic of the Congo',
'DNK' => 'Denmark',
'DJI' => 'Djibouti',
'DMA' => 'Dominica',
'DOM' => 'Dominican Republic',
'ECU' => 'Ecuador',
'EGY' => 'Egypt',
'SLV' => 'El Salvador',
'GNQ' => 'Equatorial Guinea',
'ERI' => 'Eritrea',
'EST' => 'Estonia',
'ETH' => 'Ethiopia',
'EUR' => 'Europe',
'FRO' => 'Faeroe Islands',
'FLK' => 'Falkland Islands (Malvinas)',
'FJI' => 'Fiji',
'FIN' => 'Finland',
'FRA' => 'France',
'GUF' => 'French Guiana',
'PYF' => 'French Polynesia',
'GAB' => 'Gabon',
'GMB' => 'Gambia',
'GEO' => 'Georgia',
'DEU' => 'Germany',
'GHA' => 'Ghana',
'GIB' => 'Gibraltar',
'GRC' => 'Greece',
'GRL' => 'Greenland',
'GRD' => 'Grenada',
'GLP' => 'Guadeloupe',
'GUM' => 'Guam',
'GTM' => 'Guatemala',
'GIN' => 'Guinea',
'GNB' => 'Guinea-Bissau',
'GUY' => 'Guyana',
'HTI' => 'Haiti',
'VAT' => 'Holy See',
'HND' => 'Honduras',
'HKG' => 'Hong Kong',
'HUN' => 'Hungary',
'ISL' => 'Iceland',
'IND' => 'India',
'IDN' => 'Indonesia',
'IRN' => 'Iran',
'IRQ' => 'Iraq',
'IRL' => 'Ireland',
'ISR' => 'Israel',
'ITA' => 'Italy',
'JAM' => 'Jamaica',
'JPN' => 'Japan',
'JOR' => 'Jordan',
'KAZ' => 'Kazakhstan',
'KEN' => 'Kenya',
'KIR' => 'Kiribati',
'KWT' => 'Kuwait',
'KGZ' => 'Kyrgyzstan',
'LAO' => 'Lao People\'s Democratic Republic',
'LVA' => 'Latvia',
'LBN' => 'Lebanon',
'LSO' => 'Lesotho',
'LBR' => 'Liberia',
'LBY' => 'Libyan Arab Jamahiriya',
'LIE' => 'Liechtenstein',
'LTU' => 'Lithuania',
'LUX' => 'Luxembourg',
'MAC' => 'Macao Special Administrative Region of China',
'MDG' => 'Madagascar',
'MWI' => 'Malawi',
'MYS' => 'Malaysia',
'MDV' => 'Maldives',
'MLI' => 'Mali',
'MLT' => 'Malta',
'MHL' => 'Marshall Islands',
'MTQ' => 'Martinique',
'MRT' => 'Mauritania',
'MUS' => 'Mauritius',
'MEX' => 'Mexico',
'FSM' => 'Micronesia Federated States of,',
'MCO' => 'Monaco',
'MNG' => 'Mongolia',
'MSR' => 'Montserrat',
'MAR' => 'Morocco',
'MOZ' => 'Mozambique',
'MMR' => 'Myanmar',
'NAM' => 'Namibia',
'NRU' => 'Nauru',
'NPL' => 'Nepal',
'NLD' => 'Netherlands',
'ANT' => 'Netherlands Antilles',
'NCL' => 'New Caledonia',
'NZL' => 'New Zealand',
'NIC' => 'Nicaragua',
'NER' => 'Niger',
'NGA' => 'Nigeria',
'NIU' => 'Niue',
'NFK' => 'Norfolk Island',
'MNP' => 'Northern Mariana Islands',
'NOR' => 'Norway',
'PSE' => 'Occupied Palestinian Territory',
'OMN' => 'Oman',
'PAK' => 'Pakistan',
'PLW' => 'Palau',
'PAN' => 'Panama',
'PNG' => 'Papua New Guinea',
'PRY' => 'Paraguay',
'PER' => 'Peru',
'PHL' => 'Philippines',
'PCN' => 'Pitcairn',
'POL' => 'Poland',
'PRT' => 'Portugal',
'PRI' => 'Puerto Rico',
'QAT' => 'Qatar',
'KOR' => 'Republic of Korea',
'MDA' => 'Republic of Moldova',
'REU' => 'Réunion',
'ROU' => 'Romania',
'RUS' => 'Russian Federation',
'RWA' => 'Rwanda',
'SHN' => 'Saint Helena',
'KNA' => 'Saint Kitts and Nevis',
'LCA' => 'Saint Lucia',
'SPM' => 'Saint Pierre and Miquelon',
'VCT' => 'Saint Vincent and the Grenadines',
'WSM' => 'Samoa',
'SMR' => 'San Marino',
'STP' => 'Sao Tome and Principe',
'SAU' => 'Saudi Arabia',
'SEN' => 'Senegal',
'SRB' => 'Serbia',
'YUG' => 'Serbia and Montenegro',
'SYC' => 'Seychelles',
'SLE' => 'Sierra Leone',
'SGP' => 'Singapore',
'SVK' => 'Slovakia',
'SVN' => 'Slovenia',
'SLB' => 'Solomon Islands',
'SOM' => 'Somalia',
'ZAF' => 'South Africa',
'ESP' => 'Spain',
'LKA' => 'Sri Lanka',
'SDN' => 'Sudan',
'SUR' => 'Suriname',
'SJM' => 'Svalbard and Jan Mayen Islands',
'SWZ' => 'Swaziland',
'SWE' => 'Sweden',
'CHE' => 'Switzerland',
'SYR' => 'Syrian Arab Republic',
'TWN' => 'Taiwan',
'TJK' => 'Tajikistan',
'THA' => 'Thailand',
'MKD' => 'The former Yugoslav Republic of Macedonia',
'TLS' => 'Timor-Leste',
'TGO' => 'Togo',
'TKL' => 'Tokelau',
'TON' => 'Tonga',
'TTO' => 'Trinidad and Tobago',
'TUN' => 'Tunisia',
'TUR' => 'Turkey',
'TKM' => 'Turkmenistan',
'TCA' => 'Turks and Caicos Islands',
'TUV' => 'Tuvalu',
'UGA' => 'Uganda',
'UKR' => 'Ukraine',
'ARE' => 'United Arab Emirates',
'GBR' => 'United Kingdom',
'TZA' => 'United Republic of Tanzania',
'USA' => 'United States',
'VIR' => 'United States Virgin Islands',
'XXX' => 'Unknown',
'URY' => 'Uruguay',
'UZB' => 'Uzbekistan',
'VUT' => 'Vanuatu',
'VEN' => 'Venezuela',
'VNM' => 'Viet Nam',
'WLF' => 'Wallis and Futuna Islands',
'ESH' => 'Western Sahara',
'YEM' => 'Yemen',
'ZMB' => 'Zambia',
'ZWE' => 'Zimbabwe',
'AFG' => 'Afghanistan',
'ALB' => 'Albania',
'DZA' => 'Algeria',
'ASM' => 'American Samoa',
'AND' => 'Andorra',
'AGO' => 'Angola',
'AIA' => 'Anguilla',
'ATG' => 'Antigua and Barbuda',
'ARG' => 'Argentina',
'ARM' => 'Armenia',
'ABW' => 'Aruba',
'AUS' => 'Australia',
'AUT' => 'Austria',
'AZE' => 'Azerbaijan',
'BHS' => 'Bahamas',
'BHR' => 'Bahrain',
'BGD' => 'Bangladesh',
'BRB' => 'Barbados',
'BLR' => 'Belarus',
'BEL' => 'Belgium',
'BLZ' => 'Belize',
'BEN' => 'Benin',
'BMU' => 'Bermuda',
'BTN' => 'Bhutan',
'BOL' => 'Bolivia',
'BIH' => 'Bosnia and Herzegovina',
'BWA' => 'Botswana',
'BRA' => 'Brazil',
'VGB' => 'British Virgin Islands',
'BRN' => 'Brunei Darussalam',
'BGR' => 'Bulgaria',
'BFA' => 'Burkina Faso',
'BDI' => 'Burundi',
'KHM' => 'Cambodia',
'CMR' => 'Cameroon',
'CAN' => 'Canada',
'CPV' => 'Cape Verde',
'CYM' => 'Cayman Islands',
'CAF' => 'Central African Republic',
'TCD' => 'Chad',
'CHL' => 'Chile',
'CHN' => 'China',
'COL' => 'Colombia',
'COM' => 'Comoros',
'COG' => 'Congo',
'COK' => 'Cook Islands',
'CRI' => 'Costa Rica',
'CIV' => 'Cote d\'Ivoire',
'HRV' => 'Croatia',
'CUB' => 'Cuba',
'CYP' => 'Cyprus',
'CZE' => 'Czech Republic',
'PRK' => 'Democratic People\'s Republic of Korea',
'COD' => 'Democratic Republic of the Congo',
'DNK' => 'Denmark',
'DJI' => 'Djibouti',
'DMA' => 'Dominica',
'DOM' => 'Dominican Republic',
'ECU' => 'Ecuador',
'EGY' => 'Egypt',
'SLV' => 'El Salvador',
'GNQ' => 'Equatorial Guinea',
'ERI' => 'Eritrea',
'EST' => 'Estonia',
'ETH' => 'Ethiopia',
'EUR' => 'Europe',
'FRO' => 'Faeroe Islands',
'FLK' => 'Falkland Islands (Malvinas)',
'FJI' => 'Fiji',
'FIN' => 'Finland',
'FRA' => 'France',
'GUF' => 'French Guiana',
'PYF' => 'French Polynesia',
'GAB' => 'Gabon',
'GMB' => 'Gambia',
'GEO' => 'Georgia',
'DEU' => 'Germany',
'GHA' => 'Ghana',
'GIB' => 'Gibraltar',
'GRC' => 'Greece',
'GRL' => 'Greenland',
'GRD' => 'Grenada',
'GLP' => 'Guadeloupe',
'GUM' => 'Guam',
'GTM' => 'Guatemala',
'GIN' => 'Guinea',
'GNB' => 'Guinea-Bissau',
'GUY' => 'Guyana',
'HTI' => 'Haiti',
'VAT' => 'Holy See',
'HND' => 'Honduras',
'HKG' => 'Hong Kong',
'HUN' => 'Hungary',
'ISL' => 'Iceland',
'IND' => 'India',
'IDN' => 'Indonesia',
'IRN' => 'Iran',
'IRQ' => 'Iraq',
'IRL' => 'Ireland',
'ISR' => 'Israel',
'ITA' => 'Italy',
'JAM' => 'Jamaica',
'JPN' => 'Japan',
'JOR' => 'Jordan',
'KAZ' => 'Kazakhstan',
'KEN' => 'Kenya',
'KIR' => 'Kiribati',
'KWT' => 'Kuwait',
'KGZ' => 'Kyrgyzstan',
'LAO' => 'Lao People\'s Democratic Republic',
'LVA' => 'Latvia',
'LBN' => 'Lebanon',
'LSO' => 'Lesotho',
'LBR' => 'Liberia',
'LBY' => 'Libyan Arab Jamahiriya',
'LIE' => 'Liechtenstein',
'LTU' => 'Lithuania',
'LUX' => 'Luxembourg',
'MAC' => 'Macao Special Administrative Region of China',
'MDG' => 'Madagascar',
'MWI' => 'Malawi',
'MYS' => 'Malaysia',
'MDV' => 'Maldives',
'MLI' => 'Mali',
'MLT' => 'Malta',
'MHL' => 'Marshall Islands',
'MTQ' => 'Martinique',
'MRT' => 'Mauritania',
'MUS' => 'Mauritius',
'MEX' => 'Mexico',
'FSM' => 'Micronesia Federated States of,',
'MCO' => 'Monaco',
'MNG' => 'Mongolia',
'MSR' => 'Montserrat',
'MAR' => 'Morocco',
'MOZ' => 'Mozambique',
'MMR' => 'Myanmar',
'NAM' => 'Namibia',
'NRU' => 'Nauru',
'NPL' => 'Nepal',
'NLD' => 'Netherlands',
'ANT' => 'Netherlands Antilles',
'NCL' => 'New Caledonia',
'NZL' => 'New Zealand',
'NIC' => 'Nicaragua',
'NER' => 'Niger',
'NGA' => 'Nigeria',
'NIU' => 'Niue',
'NFK' => 'Norfolk Island',
'MNP' => 'Northern Mariana Islands',
'NOR' => 'Norway',
'PSE' => 'Occupied Palestinian Territory',
'OMN' => 'Oman',
'PAK' => 'Pakistan',
'PLW' => 'Palau',
'PAN' => 'Panama',
'PNG' => 'Papua New Guinea',
'PRY' => 'Paraguay',
'PER' => 'Peru',
'PHL' => 'Philippines',
'PCN' => 'Pitcairn',
'POL' => 'Poland',
'PRT' => 'Portugal',
'PRI' => 'Puerto Rico',
'QAT' => 'Qatar',
'KOR' => 'Republic of Korea',
'MDA' => 'Republic of Moldova',
'REU' => 'Réunion',
'ROU' => 'Romania',
'RUS' => 'Russian Federation',
'RWA' => 'Rwanda',
'SHN' => 'Saint Helena',
'KNA' => 'Saint Kitts and Nevis',
'LCA' => 'Saint Lucia',
'SPM' => 'Saint Pierre and Miquelon',
'VCT' => 'Saint Vincent and the Grenadines',
'WSM' => 'Samoa',
'SMR' => 'San Marino',
'STP' => 'Sao Tome and Principe',
'SAU' => 'Saudi Arabia',
'SEN' => 'Senegal',
'SRB' => 'Serbia',
'YUG' => 'Serbia and Montenegro',
'SYC' => 'Seychelles',
'SLE' => 'Sierra Leone',
'SGP' => 'Singapore',
'SVK' => 'Slovakia',
'SVN' => 'Slovenia',
'SLB' => 'Solomon Islands',
'SOM' => 'Somalia',
'ZAF' => 'South Africa',
'ESP' => 'Spain',
'LKA' => 'Sri Lanka',
'SDN' => 'Sudan',
'SUR' => 'Suriname',
'SJM' => 'Svalbard and Jan Mayen Islands',
'SWZ' => 'Swaziland',
'SWE' => 'Sweden',
'CHE' => 'Switzerland',
'SYR' => 'Syrian Arab Republic',
'TWN' => 'Taiwan',
'TJK' => 'Tajikistan',
'THA' => 'Thailand',
'MKD' => 'The former Yugoslav Republic of Macedonia',
'TLS' => 'Timor-Leste',
'TGO' => 'Togo',
'TKL' => 'Tokelau',
'TON' => 'Tonga',
'TTO' => 'Trinidad and Tobago',
'TUN' => 'Tunisia',
'TUR' => 'Turkey',
'TKM' => 'Turkmenistan',
'TCA' => 'Turks and Caicos Islands',
'TUV' => 'Tuvalu',
'UGA' => 'Uganda',
'UKR' => 'Ukraine',
'ARE' => 'United Arab Emirates',
'GBR' => 'United Kingdom',
'TZA' => 'United Republic of Tanzania',
'USA' => 'United States',
'VIR' => 'United States Virgin Islands',
'XXX' => 'Unknown',
'URY' => 'Uruguay',
'UZB' => 'Uzbekistan',
'VUT' => 'Vanuatu',
'VEN' => 'Venezuela',
'VNM' => 'Viet Nam',
'WLF' => 'Wallis and Futuna Islands',
'ESH' => 'Western Sahara',
'YEM' => 'Yemen',
'ZMB' => 'Zambia',
'ZWE' => 'Zimbabwe',
);

View File

@@ -47,60 +47,60 @@ function blacklisted($email) {
'mg-tuzi@yahoo.com.cn',
'bitlifesciences',
'bitconferences',
'grandeurhk',
'legaladvantagellc',
'sanath7285',
'omicsgroup',
'@sina.com',
'omicsonline',
'bit-ibio',
'evabrianparker',
'bitpetrobio',
'cogzidel',
'vaccinecon',
'bit-ica',
'geki@live.cl',
'wcd-bit',
'bit-pepcon',
'proformative.com',
'bitcongress',
'medifest@gmail.com',
'@sina.cn',
'wcc-congress',
'albanezi',
'supercoderarticle',
'somebody@hotmail.com',
'bit-cloudcon',
'eclinicalcentral',
'iddst.com',
'achromicpoint.com',
'wcgg-bit',
'@163.com',
'a-hassani2011@live.fr',
'analytix-congress',
'nexus-irc',
'bramyao23',
'dbmall27@gmail.com',
'robinsonm750@gmail.com',
'enu.kz',
'isim-congress',
'.*cmcb.*',
'molmedcon',
'agbtinternational',
'biosensors',
'conferenceseries.net',
'wirelesscommunication',
'clinicalpharmacy',
'antibiotics',
'globaleconomics',
'sandeepsingh.torrent117232@gmail.com',
'herbals',
'europsychiatrysummit',
'antibodies',
'graduatecentral',
'a@a.com',
'@insightconferences.com',
'@conferenceseries.com',
'grandeurhk',
'legaladvantagellc',
'sanath7285',
'omicsgroup',
'@sina.com',
'omicsonline',
'bit-ibio',
'evabrianparker',
'bitpetrobio',
'cogzidel',
'vaccinecon',
'bit-ica',
'geki@live.cl',
'wcd-bit',
'bit-pepcon',
'proformative.com',
'bitcongress',
'medifest@gmail.com',
'@sina.cn',
'wcc-congress',
'albanezi',
'supercoderarticle',
'somebody@hotmail.com',
'bit-cloudcon',
'eclinicalcentral',
'iddst.com',
'achromicpoint.com',
'wcgg-bit',
'@163.com',
'a-hassani2011@live.fr',
'analytix-congress',
'nexus-irc',
'bramyao23',
'dbmall27@gmail.com',
'robinsonm750@gmail.com',
'enu.kz',
'isim-congress',
'.*cmcb.*',
'molmedcon',
'agbtinternational',
'biosensors',
'conferenceseries.net',
'wirelesscommunication',
'clinicalpharmacy',
'antibiotics',
'globaleconomics',
'sandeepsingh.torrent117232@gmail.com',
'herbals',
'europsychiatrysummit',
'antibodies',
'graduatecentral',
'a@a.com',
'@insightconferences.com',
'@conferenceseries.com',
);
foreach ($mosquitoes as $m) {
if (preg_match('/'.preg_quote($m, '/').'/i',$email)) return true;

View File

@@ -77,34 +77,34 @@ function error_noservice()
// There is no such mirror
function error_nomirror($mirror) {
site_header("No such mirror", array("noindex"));
echo "<h1>No such mirror</h1>\n<p>The mirror you tried to access (" .
htmlspecialchars($mirror) .
") is not registered php.net mirror. Please check back later," .
" or if the problem persists, " .
"<a href=\"/contact.php\">contact the webmasters</a>.</p>\n";
site_footer();
exit;
site_header("No such mirror", array("noindex"));
echo "<h1>No such mirror</h1>\n<p>The mirror you tried to access (" .
htmlspecialchars($mirror) .
") is not registered php.net mirror. Please check back later," .
" or if the problem persists, " .
"<a href=\"/contact.php\">contact the webmasters</a>.</p>\n";
site_footer();
exit;
}
// Send out a proper status header
function status_header(int $status): bool
{
$text = [
200 => 'OK',
301 => 'Moved Permanently',
302 => 'Found',
404 => 'Not Found',
];
if (!isset($text[$status])) {
return false;
}
$text = [
200 => 'OK',
301 => 'Moved Permanently',
302 => 'Found',
404 => 'Not Found',
];
if (!isset($text[$status])) {
return false;
}
// Only respond with HTTP/1.0 for a 1.0 request specifically.
// Respond with 1.1 for anything else.
$proto = strcasecmp($_SERVER['SERVER_PROTOCOL'], 'HTTP/1.0') ? '1.1' : '1.0';
// Only respond with HTTP/1.0 for a 1.0 request specifically.
// Respond with 1.1 for anything else.
$proto = strcasecmp($_SERVER['SERVER_PROTOCOL'], 'HTTP/1.0') ? '1.1' : '1.0';
@header("HTTP/$proto $status {$text[$status]}");
@header("HTTP/$proto $status {$text[$status]}");
@header("Status: $status {$text[$status]}", true, $status);
return true;
@@ -124,381 +124,381 @@ TODO: Determine if we want to continue 301 -OR- make these official URLs.
******************************************************************************/
function is_known_ini (string $ini): ?string {
$inis = [
'engine' => 'apache.configuration.php#ini.engine',
'short-open-tag' => 'ini.core.php#ini.short-open-tag',
'asp-tags' => 'ini.core.php#ini.asp-tags',
'precision' => 'ini.core.php#ini.precision',
'y2k-compliance' => 'ini.core.php#ini.y2k-compliance',
'output-buffering' => 'outcontrol.configuration.php#ini.output-buffering',
'output-handler' => 'outcontrol.configuration.php#ini.output-handler',
'zlib.output-compression' => 'zlib.configuration.php#ini.zlib.output-compression',
'zlib.output-compression-level' => 'zlib.configuration.php#ini.zlib.output-compression-level',
'zlib.output-handler' => 'zlib.configuration.php#ini.zlib.output-handler',
'implicit-flush' => 'outcontrol.configuration.php#ini.implicit-flush',
'allow-call-time-pass-reference'=> 'ini.core.php#ini.allow-call-time-pass-reference',
'safe-mode' => 'ini.sect.safe-mode.php#ini.safe-mode',
'safe-mode-gid' => 'ini.sect.safe-mode.php#ini.safe-mode-gid',
'safe-mode-include-dir' => 'ini.sect.safe-mode.php#ini.safe-mode-include-dir',
'safe-mode-exec-dir' => 'ini.sect.safe-mode.php#ini.safe-mode-exec-dir',
'safe-mode-allowed-env-vars' => 'ini.sect.safe-mode.php#ini.safe-mode-allowed-env-vars',
'safe-mode-protected-env-vars' => 'ini.sect.safe-mode.php#ini.safe-mode-protected-env-vars',
'open-basedir' => 'ini.core.php#ini.open-basedir',
'disable-functions' => 'ini.core.php#ini.disable-functions',
'disable-classes' => 'ini.core.php#ini.disable-classes',
'zend.assertions' => 'ini.core.php#ini.zend.assertions',
'syntax-highlighting' => 'misc.configuration.php#ini.syntax-highlighting',
'ignore-user-abort' => 'misc.configuration.php#ini.ignore-user-abort',
'realpath-cache-size' => 'ini.core.php#ini.realpath-cache-size',
'realpath-cache-ttl' => 'ini.core.php#ini.realpath-cache-ttl',
'expose-php' => 'ini.core.php#ini.expose-php',
'max-execution-time' => 'info.configuration.php#ini.max-execution-time',
'max-input-time' => 'info.configuration.php#ini.max-input-time',
'max-input-nesting-level' => 'info.configuration.php#ini.max-input-nesting-level',
'memory-limit' => 'ini.core.php#ini.memory-limit',
'error-reporting' => 'errorfunc.configuration.php#ini.error-reporting',
'display-errors' => 'errorfunc.configuration.php#ini.display-errors',
'display-startup-errors' => 'errorfunc.configuration.php#ini.display-startup-errors',
'log-errors' => 'errorfunc.configuration.php#ini.log-errors',
'log-errors-max-len' => 'errorfunc.configuration.php#ini.log-errors-max-len',
'ignore-repeated-errors' => 'errorfunc.configuration.php#ini.ignore-repeated-errors',
'ignore-repeated-source' => 'errorfunc.configuration.php#ini.ignore-repeated-source',
'report-memleaks' => 'errorfunc.configuration.php#ini.report-memleaks',
'track-errors' => 'errorfunc.configuration.php#ini.track-errors',
'xmlrpc-errors' => 'errorfunc.configuration.php#ini.xmlrpc-errors',
'html-errors' => 'errorfunc.configuration.php#ini.html-errors',
'docref-root' => 'errorfunc.configuration.php#ini.docref-root',
'docref-ext' => 'errorfunc.configuration.php#ini.docref-ext',
'error-prepend-string' => 'errorfunc.configuration.php#ini.error-prepend-string',
'error-append-string' => 'errorfunc.configuration.php#ini.error-append-string',
'error-log' => 'errorfunc.configuration.php#ini.error-log',
'syslog.facility' => 'errorfunc.configuration.php#ini.syslog.facility',
'syslog.filter' => 'errorfunc.configuration.php#ini.syslog.filter',
'syslog.ident' => 'errorfunc.configuration.php#ini.syslog.ident',
'arg-separator.output' => 'ini.core.php#ini.arg-separator.output',
'arg-separator.input' => 'ini.core.php#ini.arg-separator.input',
'variables-order' => 'ini.core.php#ini.variables-order',
'request-order' => 'ini.core.php#ini.request-order',
'register-globals' => 'ini.core.php#ini.register-globals',
'register-long-arrays' => 'ini.core.php#ini.register-long-arrays',
'register-argc-argv' => 'ini.core.php#ini.register-argc-argv',
'auto-globals-jit' => 'ini.core.php#ini.auto-globals-jit',
'post-max-size' => 'ini.core.php#ini.post-max-size',
'magic-quotes-gpc' => 'info.configuration.php#ini.magic-quotes-gpc',
'magic-quotes-runtime' => 'info.configuration.php#ini.magic-quotes-runtime',
'magic-quotes-sybase' => 'sybase.configuration.php#ini.magic-quotes-sybase',
'auto-prepend-file' => 'ini.core.php#ini.auto-prepend-file',
'auto-append-file' => 'ini.core.php#ini.auto-append-file',
'default-mimetype' => 'ini.core.php#ini.default-mimetype',
'default-charset' => 'ini.core.php#ini.default-charset',
'always-populate-raw-post-data' => 'ini.core.php#ini.always-populate-raw-post-data',
'include-path' => 'ini.core.php#ini.include-path',
'doc-root' => 'ini.core.php#ini.doc-root',
'user-dir' => 'ini.core.php#ini.user-dir',
'extension-dir' => 'ini.core.php#ini.extension-dir',
'enable-dl' => 'info.configuration.php#ini.enable-dl',
'cgi.force-redirect' => 'ini.core.php#ini.cgi.force-redirect',
'cgi.redirect-status-env' => 'ini.core.php#ini.cgi.redirect-status-env',
'cgi.fix-pathinfo' => 'ini.core.php#ini.cgi.fix-pathinfo',
'fastcgi.impersonate' => 'ini.core.php#ini.fastcgi.impersonate',
'cgi.rfc2616-headers' => 'ini.core.php#ini.cgi.rfc2616-headers',
'file-uploads' => 'ini.core.php#ini.file-uploads',
'upload-tmp-dir' => 'ini.core.php#ini.upload-tmp-dir',
'upload-max-filesize' => 'ini.core.php#ini.upload-max-filesize',
'allow-url-fopen' => 'filesystem.configuration.php#ini.allow-url-fopen',
'allow-url-include' => 'filesystem.configuration.php#ini.allow-url-include',
'from' => 'filesystem.configuration.php#ini.from',
'user-agent' => 'filesystem.configuration.php#ini.user-agent',
'default-socket-timeout' => 'filesystem.configuration.php#ini.default-socket-timeout',
'auto-detect-line-endings' => 'filesystem.configuration.php#ini.auto-detect-line-endings',
'date.timezone' => 'datetime.configuration.php#ini.date.timezone',
'date.default-latitude' => 'datetime.configuration.php#ini.date.default-latitude',
'date.default-longitude' => 'datetime.configuration.php#ini.date.default-longitude',
'date.sunrise-zenith' => 'datetime.configuration.php#ini.date.sunrise-zenith',
'date.sunset-zenith' => 'datetime.configuration.php#ini.date.sunset-zenith',
'filter.default' => 'filter.configuration.php#ini.filter.default',
'filter.default-flags' => 'filter.configuration.php#ini.filter.default-flags',
'sqlite.assoc-case' => 'sqlite.configuration.php#ini.sqlite.assoc-case',
'pcre.backtrack-limit' => 'pcre.configuration.php#ini.pcre.backtrack-limit',
'pcre.recursion-limit' => 'pcre.configuration.php#ini.pcre.recursion-limit',
'pdo-odbc.connection-pooling' => 'ref.pdo-odbc.php#ini.pdo-odbc.connection-pooling',
'phar.readonly' => 'phar.configuration.php#ini.phar.readonly',
'phar.require-hash' => 'phar.configuration.php#ini.phar.require-hash',
'define-syslog-variables' => 'network.configuration.php#ini.define-syslog-variables',
'smtp' => 'mail.configuration.php#ini.smtp',
'smtp-port' => 'mail.configuration.php#ini.smtp-port',
'sendmail-from' => 'mail.configuration.php#ini.sendmail-from',
'sendmail-path' => 'mail.configuration.php#ini.sendmail-path',
'sql.safe-mode' => 'ini.core.php#ini.sql.safe-mode',
'odbc.default-db' => 'odbc.configuration.php#ini.uodbc.default-db',
'odbc.default-user' => 'odbc.configuration.php#ini.uodbc.default-user',
'odbc.default-pw' => 'odbc.configuration.php#ini.uodbc.default-pw',
'odbc.allow-persistent' => 'odbc.configuration.php#ini.uodbc.allow-persistent',
'odbc.check-persistent' => 'odbc.configuration.php#ini.uodbc.check-persistent',
'odbc.max-persistent' => 'odbc.configuration.php#ini.uodbc.max-persistent',
'odbc.max-links' => 'odbc.configuration.php#ini.uodbc.max-links',
'odbc.defaultlrl' => 'odbc.configuration.php#ini.uodbc.defaultlrl',
'odbc.defaultbinmode' => 'odbc.configuration.php#ini.uodbc.defaultbinmode',
'mysql.allow-local-infile' => 'mysql.configuration.php#ini.mysql.allow-local-infile',
'mysql.allow-persistent' => 'mysql.configuration.php#ini.mysql.allow-persistent',
'mysql.max-persistent' => 'mysql.configuration.php#ini.mysql.max-persistent',
'mysql.max-links' => 'mysql.configuration.php#ini.mysql.max-links',
'mysql.default-port' => 'mysql.configuration.php#ini.mysql.default-port',
'mysql.default-socket' => 'mysql.configuration.php#ini.mysql.default-socket',
'mysql.default-host' => 'mysql.configuration.php#ini.mysql.default-host',
'mysql.default-user' => 'mysql.configuration.php#ini.mysql.default-user',
'mysql.default-password' => 'mysql.configuration.php#ini.mysql.default-password',
'mysql.connect-timeout' => 'mysql.configuration.php#ini.mysql.connect-timeout',
'mysql.trace-mode' => 'mysql.configuration.php#ini.mysql.trace-mode',
'mysqli.allow-local-infile' => 'mysqli.configuration.php#ini.mysqli.allow-local-infile',
'mysqli.max-links' => 'mysqli.configuration.php#ini.mysqli.max-links',
'mysqli.allow-persistent' => 'mysqli.configuration.php#ini.mysqli.allow-persistent',
'mysqli.default-port' => 'mysqli.configuration.php#ini.mysqli.default-port',
'mysqli.default-socket' => 'mysqli.configuration.php#ini.mysqli.default-socket',
'mysqli.default-host' => 'mysqli.configuration.php#ini.mysqli.default-host',
'mysqli.default-user' => 'mysqli.configuration.php#ini.mysqli.default-user',
'mysqli.default-pw' => 'mysqli.configuration.php#ini.mysqli.default-pw',
'oci8.privileged-connect' => 'oci8.configuration.php#ini.oci8.privileged-connect',
'oci8.max-persistent' => 'oci8.configuration.php#ini.oci8.max-persistent',
'oci8.persistent-timeout' => 'oci8.configuration.php#ini.oci8.persistent-timeout',
'oci8.ping-interval' => 'oci8.configuration.php#ini.oci8.ping-interval',
'oci8.statement-cache-size' => 'oci8.configuration.php#ini.oci8.statement-cache-size',
'oci8.default-prefetch' => 'oci8.configuration.php#ini.oci8.default-prefetch',
'oci8.old-oci-close-semantics' => 'oci8.configuration.php#ini.oci8.old-oci-close-semantics',
'opcache.preload' => 'opcache.configuration.php#ini.opcache.preload',
'pgsql.allow-persistent' => 'pgsql.configuration.php#ini.pgsql.allow-persistent',
'pgsql.auto-reset-persistent' => 'pgsql.configuration.php#ini.pgsql.auto-reset-persistent',
'pgsql.max-persistent' => 'pgsql.configuration.php#ini.pgsql.max-persistent',
'pgsql.max-links' => 'pgsql.configuration.php#ini.pgsql.max-links',
'pgsql.ignore-notice' => 'pgsql.configuration.php#ini.pgsql.ignore-notice',
'pgsql.log-notice' => 'pgsql.configuration.php#ini.pgsql.log-notice',
'sqlite3.extension-dir' => 'sqlite3.configuration.php#ini.sqlite3.extension-dir',
'sybct.allow-persistent' => 'sybase.configuration.php#ini.sybct.allow-persistent',
'sybct.max-persistent' => 'sybase.configuration.php#ini.sybct.max-persistent',
'sybct.max-links' => 'sybase.configuration.php#ini.sybct.max-links',
'sybct.min-server-severity' => 'sybase.configuration.php#ini.sybct.min-server-severity',
'sybct.min-client-severity' => 'sybase.configuration.php#ini.sybct.min-client-severity',
'sybct.timeout' => 'sybase.configuration.php#ini.sybct.timeout',
'bcmath.scale' => 'bc.configuration.php#ini.bcmath.scale',
'browscap' => 'misc.configuration.php#ini.browscap',
'session.save-handler' => 'session.configuration.php#ini.session.save-handler',
'session.save-path' => 'session.configuration.php#ini.session.save-path',
'session.use-cookies' => 'session.configuration.php#ini.session.use-cookies',
'session.cookie-secure' => 'session.configuration.php#ini.session.cookie-secure',
'session.use-only-cookies' => 'session.configuration.php#ini.session.use-only-cookies',
'session.name' => 'session.configuration.php#ini.session.name',
'session.auto-start' => 'session.configuration.php#ini.session.auto-start',
'session.cookie-lifetime' => 'session.configuration.php#ini.session.cookie-lifetime',
'session.cookie-path' => 'session.configuration.php#ini.session.cookie-path',
'session.cookie-domain' => 'session.configuration.php#ini.session.cookie-domain',
'session.cookie-httponly' => 'session.configuration.php#ini.session.cookie-httponly',
'session.serialize-handler' => 'session.configuration.php#ini.session.serialize-handler',
'session.gc-probability' => 'session.configuration.php#ini.session.gc-probability',
'session.gc-divisor' => 'session.configuration.php#ini.session.gc-divisor',
'session.gc-maxlifetime' => 'session.configuration.php#ini.session.gc-maxlifetime',
'session.bug-compat-42' => 'session.configuration.php#ini.session.bug-compat-42',
'session.bug-compat-warn' => 'session.configuration.php#ini.session.bug-compat-warn',
'session.referer-check' => 'session.configuration.php#ini.session.referer-check',
'session.entropy-length' => 'session.configuration.php#ini.session.entropy-length',
'session.entropy-file' => 'session.configuration.php#ini.session.entropy-file',
'session.cache-limiter' => 'session.configuration.php#ini.session.cache-limiter',
'session.cache-expire' => 'session.configuration.php#ini.session.cache-expire',
'session.sid-length' => 'session.configuration.php#ini.session.sid-length',
'session.use-trans-sid' => 'session.configuration.php#ini.session.use-trans-sid',
'session.hash-function' => 'session.configuration.php#ini.session.hash-function',
'session.hash-bits-per-character' => 'session.configuration.php#ini.session.hash-bits-per-character',
'session.upload-progress.enabled' => 'session.configuration.php#ini.session.upload-progress.enabled',
'session.upload-progress.cleanup' => 'session.configuration.php#ini.session.upload-progress.cleanup',
'session.upload-progress.prefix' => 'session.configuration.php#ini.session.upload-progress.prefix',
'session.upload-progress.name' => 'session.configuration.php#ini.session.upload-progress.name',
'session.upload-progress.freq' => 'session.configuration.php#ini.session.upload-progress.freq',
'session.upload-progress.min-freq' => 'session.configuration.php#ini.session.upload-progress.min-freq',
'url-rewriter.tags' => 'session.configuration.php#ini.url-rewriter.tags',
'assert.active' => 'info.configuration.php#ini.assert.active',
'assert.exception' => 'info.configuration.php#ini.assert.exception',
'assert.warning' => 'info.configuration.php#ini.assert.warning',
'assert.bail' => 'info.configuration.php#ini.assert.bail',
'assert.callback' => 'info.configuration.php#ini.assert.callback',
'assert.quiet-eval' => 'info.configuration.php#ini.assert.quiet-eval',
'zend.enable-gc' => 'info.configuration.php#ini.zend.enable-gc',
'com.typelib-file' => 'com.configuration.php#ini.com.typelib-file',
'com.allow-dcom' => 'com.configuration.php#ini.com.allow-dcom',
'com.autoregister-typelib' => 'com.configuration.php#ini.com.autoregister-typelib',
'com.autoregister-casesensitive'=> 'com.configuration.php#ini.com.autoregister-casesensitive',
'com.autoregister-verbose' => 'com.configuration.php#ini.com.autoregister-verbose',
'mbstring.language' => 'mbstring.configuration.php#ini.mbstring.language',
'mbstring.internal-encoding' => 'mbstring.configuration.php#ini.mbstring.internal-encoding',
'mbstring.http-input' => 'mbstring.configuration.php#ini.mbstring.http-input',
'mbstring.http-output' => 'mbstring.configuration.php#ini.mbstring.http-output',
'mbstring.encoding-translation' => 'mbstring.configuration.php#ini.mbstring.encoding-translation',
'mbstring.detect-order' => 'mbstring.configuration.php#ini.mbstring.detect-order',
'mbstring.substitute-character' => 'mbstring.configuration.php#ini.mbstring.substitute-character',
'mbstring.func-overload' => 'mbstring.configuration.php#ini.mbstring.func-overload',
'gd.jpeg-ignore-warning' => 'image.configuration.php#ini.image.jpeg-ignore-warning',
'exif.encode-unicode' => 'exif.configuration.php#ini.exif.encode-unicode',
'exif.decode-unicode-motorola' => 'exif.configuration.php#ini.exif.decode-unicode-motorola',
'exif.decode-unicode-intel' => 'exif.configuration.php#ini.exif.decode-unicode-intel',
'exif.encode-jis' => 'exif.configuration.php#ini.exif.encode-jis',
'exif.decode-jis-motorola' => 'exif.configuration.php#ini.exif.decode-jis-motorola',
'exif.decode-jis-intel' => 'exif.configuration.php#ini.exif.decode-jis-intel',
'tidy.default-config' => 'tidy.configuration.php#ini.tidy.default-config',
'tidy.clean-output' => 'tidy.configuration.php#ini.tidy.clean-output',
'soap.wsdl-cache-enabled' => 'soap.configuration.php#ini.soap.wsdl-cache-enabled',
'soap.wsdl-cache-dir' => 'soap.configuration.php#ini.soap.wsdl-cache-dir',
'soap.wsdl-cache-ttl' => 'soap.configuration.php#ini.soap.wsdl-cache-ttl',
];
$inis = [
'engine' => 'apache.configuration.php#ini.engine',
'short-open-tag' => 'ini.core.php#ini.short-open-tag',
'asp-tags' => 'ini.core.php#ini.asp-tags',
'precision' => 'ini.core.php#ini.precision',
'y2k-compliance' => 'ini.core.php#ini.y2k-compliance',
'output-buffering' => 'outcontrol.configuration.php#ini.output-buffering',
'output-handler' => 'outcontrol.configuration.php#ini.output-handler',
'zlib.output-compression' => 'zlib.configuration.php#ini.zlib.output-compression',
'zlib.output-compression-level' => 'zlib.configuration.php#ini.zlib.output-compression-level',
'zlib.output-handler' => 'zlib.configuration.php#ini.zlib.output-handler',
'implicit-flush' => 'outcontrol.configuration.php#ini.implicit-flush',
'allow-call-time-pass-reference'=> 'ini.core.php#ini.allow-call-time-pass-reference',
'safe-mode' => 'ini.sect.safe-mode.php#ini.safe-mode',
'safe-mode-gid' => 'ini.sect.safe-mode.php#ini.safe-mode-gid',
'safe-mode-include-dir' => 'ini.sect.safe-mode.php#ini.safe-mode-include-dir',
'safe-mode-exec-dir' => 'ini.sect.safe-mode.php#ini.safe-mode-exec-dir',
'safe-mode-allowed-env-vars' => 'ini.sect.safe-mode.php#ini.safe-mode-allowed-env-vars',
'safe-mode-protected-env-vars' => 'ini.sect.safe-mode.php#ini.safe-mode-protected-env-vars',
'open-basedir' => 'ini.core.php#ini.open-basedir',
'disable-functions' => 'ini.core.php#ini.disable-functions',
'disable-classes' => 'ini.core.php#ini.disable-classes',
'zend.assertions' => 'ini.core.php#ini.zend.assertions',
'syntax-highlighting' => 'misc.configuration.php#ini.syntax-highlighting',
'ignore-user-abort' => 'misc.configuration.php#ini.ignore-user-abort',
'realpath-cache-size' => 'ini.core.php#ini.realpath-cache-size',
'realpath-cache-ttl' => 'ini.core.php#ini.realpath-cache-ttl',
'expose-php' => 'ini.core.php#ini.expose-php',
'max-execution-time' => 'info.configuration.php#ini.max-execution-time',
'max-input-time' => 'info.configuration.php#ini.max-input-time',
'max-input-nesting-level' => 'info.configuration.php#ini.max-input-nesting-level',
'memory-limit' => 'ini.core.php#ini.memory-limit',
'error-reporting' => 'errorfunc.configuration.php#ini.error-reporting',
'display-errors' => 'errorfunc.configuration.php#ini.display-errors',
'display-startup-errors' => 'errorfunc.configuration.php#ini.display-startup-errors',
'log-errors' => 'errorfunc.configuration.php#ini.log-errors',
'log-errors-max-len' => 'errorfunc.configuration.php#ini.log-errors-max-len',
'ignore-repeated-errors' => 'errorfunc.configuration.php#ini.ignore-repeated-errors',
'ignore-repeated-source' => 'errorfunc.configuration.php#ini.ignore-repeated-source',
'report-memleaks' => 'errorfunc.configuration.php#ini.report-memleaks',
'track-errors' => 'errorfunc.configuration.php#ini.track-errors',
'xmlrpc-errors' => 'errorfunc.configuration.php#ini.xmlrpc-errors',
'html-errors' => 'errorfunc.configuration.php#ini.html-errors',
'docref-root' => 'errorfunc.configuration.php#ini.docref-root',
'docref-ext' => 'errorfunc.configuration.php#ini.docref-ext',
'error-prepend-string' => 'errorfunc.configuration.php#ini.error-prepend-string',
'error-append-string' => 'errorfunc.configuration.php#ini.error-append-string',
'error-log' => 'errorfunc.configuration.php#ini.error-log',
'syslog.facility' => 'errorfunc.configuration.php#ini.syslog.facility',
'syslog.filter' => 'errorfunc.configuration.php#ini.syslog.filter',
'syslog.ident' => 'errorfunc.configuration.php#ini.syslog.ident',
'arg-separator.output' => 'ini.core.php#ini.arg-separator.output',
'arg-separator.input' => 'ini.core.php#ini.arg-separator.input',
'variables-order' => 'ini.core.php#ini.variables-order',
'request-order' => 'ini.core.php#ini.request-order',
'register-globals' => 'ini.core.php#ini.register-globals',
'register-long-arrays' => 'ini.core.php#ini.register-long-arrays',
'register-argc-argv' => 'ini.core.php#ini.register-argc-argv',
'auto-globals-jit' => 'ini.core.php#ini.auto-globals-jit',
'post-max-size' => 'ini.core.php#ini.post-max-size',
'magic-quotes-gpc' => 'info.configuration.php#ini.magic-quotes-gpc',
'magic-quotes-runtime' => 'info.configuration.php#ini.magic-quotes-runtime',
'magic-quotes-sybase' => 'sybase.configuration.php#ini.magic-quotes-sybase',
'auto-prepend-file' => 'ini.core.php#ini.auto-prepend-file',
'auto-append-file' => 'ini.core.php#ini.auto-append-file',
'default-mimetype' => 'ini.core.php#ini.default-mimetype',
'default-charset' => 'ini.core.php#ini.default-charset',
'always-populate-raw-post-data' => 'ini.core.php#ini.always-populate-raw-post-data',
'include-path' => 'ini.core.php#ini.include-path',
'doc-root' => 'ini.core.php#ini.doc-root',
'user-dir' => 'ini.core.php#ini.user-dir',
'extension-dir' => 'ini.core.php#ini.extension-dir',
'enable-dl' => 'info.configuration.php#ini.enable-dl',
'cgi.force-redirect' => 'ini.core.php#ini.cgi.force-redirect',
'cgi.redirect-status-env' => 'ini.core.php#ini.cgi.redirect-status-env',
'cgi.fix-pathinfo' => 'ini.core.php#ini.cgi.fix-pathinfo',
'fastcgi.impersonate' => 'ini.core.php#ini.fastcgi.impersonate',
'cgi.rfc2616-headers' => 'ini.core.php#ini.cgi.rfc2616-headers',
'file-uploads' => 'ini.core.php#ini.file-uploads',
'upload-tmp-dir' => 'ini.core.php#ini.upload-tmp-dir',
'upload-max-filesize' => 'ini.core.php#ini.upload-max-filesize',
'allow-url-fopen' => 'filesystem.configuration.php#ini.allow-url-fopen',
'allow-url-include' => 'filesystem.configuration.php#ini.allow-url-include',
'from' => 'filesystem.configuration.php#ini.from',
'user-agent' => 'filesystem.configuration.php#ini.user-agent',
'default-socket-timeout' => 'filesystem.configuration.php#ini.default-socket-timeout',
'auto-detect-line-endings' => 'filesystem.configuration.php#ini.auto-detect-line-endings',
'date.timezone' => 'datetime.configuration.php#ini.date.timezone',
'date.default-latitude' => 'datetime.configuration.php#ini.date.default-latitude',
'date.default-longitude' => 'datetime.configuration.php#ini.date.default-longitude',
'date.sunrise-zenith' => 'datetime.configuration.php#ini.date.sunrise-zenith',
'date.sunset-zenith' => 'datetime.configuration.php#ini.date.sunset-zenith',
'filter.default' => 'filter.configuration.php#ini.filter.default',
'filter.default-flags' => 'filter.configuration.php#ini.filter.default-flags',
'sqlite.assoc-case' => 'sqlite.configuration.php#ini.sqlite.assoc-case',
'pcre.backtrack-limit' => 'pcre.configuration.php#ini.pcre.backtrack-limit',
'pcre.recursion-limit' => 'pcre.configuration.php#ini.pcre.recursion-limit',
'pdo-odbc.connection-pooling' => 'ref.pdo-odbc.php#ini.pdo-odbc.connection-pooling',
'phar.readonly' => 'phar.configuration.php#ini.phar.readonly',
'phar.require-hash' => 'phar.configuration.php#ini.phar.require-hash',
'define-syslog-variables' => 'network.configuration.php#ini.define-syslog-variables',
'smtp' => 'mail.configuration.php#ini.smtp',
'smtp-port' => 'mail.configuration.php#ini.smtp-port',
'sendmail-from' => 'mail.configuration.php#ini.sendmail-from',
'sendmail-path' => 'mail.configuration.php#ini.sendmail-path',
'sql.safe-mode' => 'ini.core.php#ini.sql.safe-mode',
'odbc.default-db' => 'odbc.configuration.php#ini.uodbc.default-db',
'odbc.default-user' => 'odbc.configuration.php#ini.uodbc.default-user',
'odbc.default-pw' => 'odbc.configuration.php#ini.uodbc.default-pw',
'odbc.allow-persistent' => 'odbc.configuration.php#ini.uodbc.allow-persistent',
'odbc.check-persistent' => 'odbc.configuration.php#ini.uodbc.check-persistent',
'odbc.max-persistent' => 'odbc.configuration.php#ini.uodbc.max-persistent',
'odbc.max-links' => 'odbc.configuration.php#ini.uodbc.max-links',
'odbc.defaultlrl' => 'odbc.configuration.php#ini.uodbc.defaultlrl',
'odbc.defaultbinmode' => 'odbc.configuration.php#ini.uodbc.defaultbinmode',
'mysql.allow-local-infile' => 'mysql.configuration.php#ini.mysql.allow-local-infile',
'mysql.allow-persistent' => 'mysql.configuration.php#ini.mysql.allow-persistent',
'mysql.max-persistent' => 'mysql.configuration.php#ini.mysql.max-persistent',
'mysql.max-links' => 'mysql.configuration.php#ini.mysql.max-links',
'mysql.default-port' => 'mysql.configuration.php#ini.mysql.default-port',
'mysql.default-socket' => 'mysql.configuration.php#ini.mysql.default-socket',
'mysql.default-host' => 'mysql.configuration.php#ini.mysql.default-host',
'mysql.default-user' => 'mysql.configuration.php#ini.mysql.default-user',
'mysql.default-password' => 'mysql.configuration.php#ini.mysql.default-password',
'mysql.connect-timeout' => 'mysql.configuration.php#ini.mysql.connect-timeout',
'mysql.trace-mode' => 'mysql.configuration.php#ini.mysql.trace-mode',
'mysqli.allow-local-infile' => 'mysqli.configuration.php#ini.mysqli.allow-local-infile',
'mysqli.max-links' => 'mysqli.configuration.php#ini.mysqli.max-links',
'mysqli.allow-persistent' => 'mysqli.configuration.php#ini.mysqli.allow-persistent',
'mysqli.default-port' => 'mysqli.configuration.php#ini.mysqli.default-port',
'mysqli.default-socket' => 'mysqli.configuration.php#ini.mysqli.default-socket',
'mysqli.default-host' => 'mysqli.configuration.php#ini.mysqli.default-host',
'mysqli.default-user' => 'mysqli.configuration.php#ini.mysqli.default-user',
'mysqli.default-pw' => 'mysqli.configuration.php#ini.mysqli.default-pw',
'oci8.privileged-connect' => 'oci8.configuration.php#ini.oci8.privileged-connect',
'oci8.max-persistent' => 'oci8.configuration.php#ini.oci8.max-persistent',
'oci8.persistent-timeout' => 'oci8.configuration.php#ini.oci8.persistent-timeout',
'oci8.ping-interval' => 'oci8.configuration.php#ini.oci8.ping-interval',
'oci8.statement-cache-size' => 'oci8.configuration.php#ini.oci8.statement-cache-size',
'oci8.default-prefetch' => 'oci8.configuration.php#ini.oci8.default-prefetch',
'oci8.old-oci-close-semantics' => 'oci8.configuration.php#ini.oci8.old-oci-close-semantics',
'opcache.preload' => 'opcache.configuration.php#ini.opcache.preload',
'pgsql.allow-persistent' => 'pgsql.configuration.php#ini.pgsql.allow-persistent',
'pgsql.auto-reset-persistent' => 'pgsql.configuration.php#ini.pgsql.auto-reset-persistent',
'pgsql.max-persistent' => 'pgsql.configuration.php#ini.pgsql.max-persistent',
'pgsql.max-links' => 'pgsql.configuration.php#ini.pgsql.max-links',
'pgsql.ignore-notice' => 'pgsql.configuration.php#ini.pgsql.ignore-notice',
'pgsql.log-notice' => 'pgsql.configuration.php#ini.pgsql.log-notice',
'sqlite3.extension-dir' => 'sqlite3.configuration.php#ini.sqlite3.extension-dir',
'sybct.allow-persistent' => 'sybase.configuration.php#ini.sybct.allow-persistent',
'sybct.max-persistent' => 'sybase.configuration.php#ini.sybct.max-persistent',
'sybct.max-links' => 'sybase.configuration.php#ini.sybct.max-links',
'sybct.min-server-severity' => 'sybase.configuration.php#ini.sybct.min-server-severity',
'sybct.min-client-severity' => 'sybase.configuration.php#ini.sybct.min-client-severity',
'sybct.timeout' => 'sybase.configuration.php#ini.sybct.timeout',
'bcmath.scale' => 'bc.configuration.php#ini.bcmath.scale',
'browscap' => 'misc.configuration.php#ini.browscap',
'session.save-handler' => 'session.configuration.php#ini.session.save-handler',
'session.save-path' => 'session.configuration.php#ini.session.save-path',
'session.use-cookies' => 'session.configuration.php#ini.session.use-cookies',
'session.cookie-secure' => 'session.configuration.php#ini.session.cookie-secure',
'session.use-only-cookies' => 'session.configuration.php#ini.session.use-only-cookies',
'session.name' => 'session.configuration.php#ini.session.name',
'session.auto-start' => 'session.configuration.php#ini.session.auto-start',
'session.cookie-lifetime' => 'session.configuration.php#ini.session.cookie-lifetime',
'session.cookie-path' => 'session.configuration.php#ini.session.cookie-path',
'session.cookie-domain' => 'session.configuration.php#ini.session.cookie-domain',
'session.cookie-httponly' => 'session.configuration.php#ini.session.cookie-httponly',
'session.serialize-handler' => 'session.configuration.php#ini.session.serialize-handler',
'session.gc-probability' => 'session.configuration.php#ini.session.gc-probability',
'session.gc-divisor' => 'session.configuration.php#ini.session.gc-divisor',
'session.gc-maxlifetime' => 'session.configuration.php#ini.session.gc-maxlifetime',
'session.bug-compat-42' => 'session.configuration.php#ini.session.bug-compat-42',
'session.bug-compat-warn' => 'session.configuration.php#ini.session.bug-compat-warn',
'session.referer-check' => 'session.configuration.php#ini.session.referer-check',
'session.entropy-length' => 'session.configuration.php#ini.session.entropy-length',
'session.entropy-file' => 'session.configuration.php#ini.session.entropy-file',
'session.cache-limiter' => 'session.configuration.php#ini.session.cache-limiter',
'session.cache-expire' => 'session.configuration.php#ini.session.cache-expire',
'session.sid-length' => 'session.configuration.php#ini.session.sid-length',
'session.use-trans-sid' => 'session.configuration.php#ini.session.use-trans-sid',
'session.hash-function' => 'session.configuration.php#ini.session.hash-function',
'session.hash-bits-per-character' => 'session.configuration.php#ini.session.hash-bits-per-character',
'session.upload-progress.enabled' => 'session.configuration.php#ini.session.upload-progress.enabled',
'session.upload-progress.cleanup' => 'session.configuration.php#ini.session.upload-progress.cleanup',
'session.upload-progress.prefix' => 'session.configuration.php#ini.session.upload-progress.prefix',
'session.upload-progress.name' => 'session.configuration.php#ini.session.upload-progress.name',
'session.upload-progress.freq' => 'session.configuration.php#ini.session.upload-progress.freq',
'session.upload-progress.min-freq' => 'session.configuration.php#ini.session.upload-progress.min-freq',
'url-rewriter.tags' => 'session.configuration.php#ini.url-rewriter.tags',
'assert.active' => 'info.configuration.php#ini.assert.active',
'assert.exception' => 'info.configuration.php#ini.assert.exception',
'assert.warning' => 'info.configuration.php#ini.assert.warning',
'assert.bail' => 'info.configuration.php#ini.assert.bail',
'assert.callback' => 'info.configuration.php#ini.assert.callback',
'assert.quiet-eval' => 'info.configuration.php#ini.assert.quiet-eval',
'zend.enable-gc' => 'info.configuration.php#ini.zend.enable-gc',
'com.typelib-file' => 'com.configuration.php#ini.com.typelib-file',
'com.allow-dcom' => 'com.configuration.php#ini.com.allow-dcom',
'com.autoregister-typelib' => 'com.configuration.php#ini.com.autoregister-typelib',
'com.autoregister-casesensitive'=> 'com.configuration.php#ini.com.autoregister-casesensitive',
'com.autoregister-verbose' => 'com.configuration.php#ini.com.autoregister-verbose',
'mbstring.language' => 'mbstring.configuration.php#ini.mbstring.language',
'mbstring.internal-encoding' => 'mbstring.configuration.php#ini.mbstring.internal-encoding',
'mbstring.http-input' => 'mbstring.configuration.php#ini.mbstring.http-input',
'mbstring.http-output' => 'mbstring.configuration.php#ini.mbstring.http-output',
'mbstring.encoding-translation' => 'mbstring.configuration.php#ini.mbstring.encoding-translation',
'mbstring.detect-order' => 'mbstring.configuration.php#ini.mbstring.detect-order',
'mbstring.substitute-character' => 'mbstring.configuration.php#ini.mbstring.substitute-character',
'mbstring.func-overload' => 'mbstring.configuration.php#ini.mbstring.func-overload',
'gd.jpeg-ignore-warning' => 'image.configuration.php#ini.image.jpeg-ignore-warning',
'exif.encode-unicode' => 'exif.configuration.php#ini.exif.encode-unicode',
'exif.decode-unicode-motorola' => 'exif.configuration.php#ini.exif.decode-unicode-motorola',
'exif.decode-unicode-intel' => 'exif.configuration.php#ini.exif.decode-unicode-intel',
'exif.encode-jis' => 'exif.configuration.php#ini.exif.encode-jis',
'exif.decode-jis-motorola' => 'exif.configuration.php#ini.exif.decode-jis-motorola',
'exif.decode-jis-intel' => 'exif.configuration.php#ini.exif.decode-jis-intel',
'tidy.default-config' => 'tidy.configuration.php#ini.tidy.default-config',
'tidy.clean-output' => 'tidy.configuration.php#ini.tidy.clean-output',
'soap.wsdl-cache-enabled' => 'soap.configuration.php#ini.soap.wsdl-cache-enabled',
'soap.wsdl-cache-dir' => 'soap.configuration.php#ini.soap.wsdl-cache-dir',
'soap.wsdl-cache-ttl' => 'soap.configuration.php#ini.soap.wsdl-cache-ttl',
];
return $inis[$ini] ?? null;
return $inis[$ini] ?? null;
}
function is_known_variable(string $variable): ?string {
$variables = [
// Variables
'globals' => 'reserved.variables.globals.php',
'-server' => 'reserved.variables.server.php',
'-get' => 'reserved.variables.get.php',
'-post' => 'reserved.variables.post.php',
'-files' => 'reserved.variables.files.php',
'-request' => 'reserved.variables.request.php',
'-session' => 'reserved.variables.session.php',
'-cookie' => 'reserved.variables.cookies.php',
'-env' => 'reserved.variables.environment.php',
'this' => 'language.oop5.basic.php',
'php-errormsg' => 'reserved.variables.phperrormsg.php',
'argv' => 'reserved.variables.argv.php',
'argc' => 'reserved.variables.argc.php',
'http-raw-post-data' => 'reserved.variables.httprawpostdata.php',
'http-response-header' => 'reserved.variables.httpresponseheader.php',
'http-server-vars' => 'reserved.variables.server.php',
'http-get-vars' => 'reserved.variables.get.php',
'http-post-vars' => 'reserved.variables.post.php',
'http-session-vars' => 'reserved.variables.session.php',
'http-post-files' => 'reserved.variables.files.php',
'http-cookie-vars' => 'reserved.variables.cookies.php',
'http-env-vars' => 'reserved.variables.env.php',
];
$variables = [
// Variables
'globals' => 'reserved.variables.globals.php',
'-server' => 'reserved.variables.server.php',
'-get' => 'reserved.variables.get.php',
'-post' => 'reserved.variables.post.php',
'-files' => 'reserved.variables.files.php',
'-request' => 'reserved.variables.request.php',
'-session' => 'reserved.variables.session.php',
'-cookie' => 'reserved.variables.cookies.php',
'-env' => 'reserved.variables.environment.php',
'this' => 'language.oop5.basic.php',
'php-errormsg' => 'reserved.variables.phperrormsg.php',
'argv' => 'reserved.variables.argv.php',
'argc' => 'reserved.variables.argc.php',
'http-raw-post-data' => 'reserved.variables.httprawpostdata.php',
'http-response-header' => 'reserved.variables.httpresponseheader.php',
'http-server-vars' => 'reserved.variables.server.php',
'http-get-vars' => 'reserved.variables.get.php',
'http-post-vars' => 'reserved.variables.post.php',
'http-session-vars' => 'reserved.variables.session.php',
'http-post-files' => 'reserved.variables.files.php',
'http-cookie-vars' => 'reserved.variables.cookies.php',
'http-env-vars' => 'reserved.variables.env.php',
];
return $variables[ltrim($variable, '$')] ?? null;
return $variables[ltrim($variable, '$')] ?? null;
}
function is_known_term (string $term): ?string {
$terms = [
'<>' => 'language.operators.comparison.php',
'<=>' => 'language.operators.comparison.php',
'spaceship' => 'language.operators.comparison.php',
'==' => 'language.operators.comparison.php',
'===' => 'language.operators.comparison.php',
'@' => 'language.operators.errorcontrol.php',
'apache' => 'install.php',
'array' => 'language.types.array.php',
'arrays' => 'language.types.array.php',
'case' => 'control-structures.switch.php',
'catch' => 'language.exceptions.php',
'checkbox' => 'faq.html.php',
'class' => 'language.oop5.basic.php',
'classes' => 'language.oop5.basic.php',
'closures' => 'functions.anonymous.php',
'cookie' => 'features.cookies.php',
'date' => 'function.date.php',
'exception' => 'language.exceptions.php',
'extends' => 'language.oop5.basic.php#language.oop5.basic.extends',
'file' => 'function.file.php',
'finally' => 'language.exceptions.php',
'fopen' => 'function.fopen.php',
'for' => 'control-structures.for.php',
'foreach' => 'control-structures.foreach.php',
'form' => 'language.variables.external.php',
'forms' => 'language.variables.external.php',
'function' => 'language.functions.php',
'gd' => 'book.image.php',
'get' => 'reserved.variables.get.php',
'global' => 'language.variables.scope.php',
'globals' => 'language.variables.scope.php',
'header' => 'function.header.php',
'heredoc' => 'language.types.string.php#language.types.string.syntax.heredoc',
'nowdoc' => 'language.types.string.php#language.types.string.syntax.nowdoc',
'htaccess' => 'configuration.file.php',
'if' => 'control-structures.if.php',
'include' => 'function.include.php',
'int' => 'language.types.integer.php',
'ip' => 'reserved.variables.server.php',
'iterable' => 'language.types.iterable.php',
'juggling' => 'language.types.type-juggling.php',
'location' => 'function.header.php',
'mail' => 'function.mail.php',
'modulo' => 'language.operators.arithmetic.php',
'mysql' => 'mysql.php',
'new' => 'language.oop5.basic.php#language.oop5.basic.new',
'null' => 'language.types.null.php',
'object' => 'language.types.object.php',
'operator' => 'language.operators.php',
'operators' => 'language.operators.php',
'or' => 'language.operators.logical.php',
'php.ini' => 'configuration.file.php',
'php-mysql.dll' => 'book.mysql.php',
'php-self' => 'reserved.variables.server.php',
'query-string' => 'reserved.variables.server.php',
'redirect' => 'function.header.php',
'reference' => 'index.php',
'referer' => 'reserved.variables.server.php',
'referrer' => 'reserved.variables.server.php',
'remote-addr' => 'reserved.variables.server.php',
'request' => 'reserved.variables.request.php',
'session' => 'features.sessions.php',
'smtp' => 'book.mail.php',
'ssl' => 'book.openssl.php',
'static' => 'language.oop5.static.php',
'stdin' => 'wrappers.php.php',
'string' => 'language.types.string.php',
'superglobal' => 'language.variables.superglobals.php',
'superglobals' => 'language.variables.superglobals.php',
'switch' => 'control-structures.switch.php',
'timestamp' => 'function.time.php',
'try' => 'language.exceptions.php',
'upload' => 'features.file-upload.php',
];
$terms = [
'<>' => 'language.operators.comparison.php',
'<=>' => 'language.operators.comparison.php',
'spaceship' => 'language.operators.comparison.php',
'==' => 'language.operators.comparison.php',
'===' => 'language.operators.comparison.php',
'@' => 'language.operators.errorcontrol.php',
'apache' => 'install.php',
'array' => 'language.types.array.php',
'arrays' => 'language.types.array.php',
'case' => 'control-structures.switch.php',
'catch' => 'language.exceptions.php',
'checkbox' => 'faq.html.php',
'class' => 'language.oop5.basic.php',
'classes' => 'language.oop5.basic.php',
'closures' => 'functions.anonymous.php',
'cookie' => 'features.cookies.php',
'date' => 'function.date.php',
'exception' => 'language.exceptions.php',
'extends' => 'language.oop5.basic.php#language.oop5.basic.extends',
'file' => 'function.file.php',
'finally' => 'language.exceptions.php',
'fopen' => 'function.fopen.php',
'for' => 'control-structures.for.php',
'foreach' => 'control-structures.foreach.php',
'form' => 'language.variables.external.php',
'forms' => 'language.variables.external.php',
'function' => 'language.functions.php',
'gd' => 'book.image.php',
'get' => 'reserved.variables.get.php',
'global' => 'language.variables.scope.php',
'globals' => 'language.variables.scope.php',
'header' => 'function.header.php',
'heredoc' => 'language.types.string.php#language.types.string.syntax.heredoc',
'nowdoc' => 'language.types.string.php#language.types.string.syntax.nowdoc',
'htaccess' => 'configuration.file.php',
'if' => 'control-structures.if.php',
'include' => 'function.include.php',
'int' => 'language.types.integer.php',
'ip' => 'reserved.variables.server.php',
'iterable' => 'language.types.iterable.php',
'juggling' => 'language.types.type-juggling.php',
'location' => 'function.header.php',
'mail' => 'function.mail.php',
'modulo' => 'language.operators.arithmetic.php',
'mysql' => 'mysql.php',
'new' => 'language.oop5.basic.php#language.oop5.basic.new',
'null' => 'language.types.null.php',
'object' => 'language.types.object.php',
'operator' => 'language.operators.php',
'operators' => 'language.operators.php',
'or' => 'language.operators.logical.php',
'php.ini' => 'configuration.file.php',
'php-mysql.dll' => 'book.mysql.php',
'php-self' => 'reserved.variables.server.php',
'query-string' => 'reserved.variables.server.php',
'redirect' => 'function.header.php',
'reference' => 'index.php',
'referer' => 'reserved.variables.server.php',
'referrer' => 'reserved.variables.server.php',
'remote-addr' => 'reserved.variables.server.php',
'request' => 'reserved.variables.request.php',
'session' => 'features.sessions.php',
'smtp' => 'book.mail.php',
'ssl' => 'book.openssl.php',
'static' => 'language.oop5.static.php',
'stdin' => 'wrappers.php.php',
'string' => 'language.types.string.php',
'superglobal' => 'language.variables.superglobals.php',
'superglobals' => 'language.variables.superglobals.php',
'switch' => 'control-structures.switch.php',
'timestamp' => 'function.time.php',
'try' => 'language.exceptions.php',
'upload' => 'features.file-upload.php',
];
return $terms[$term] ?? null;
return $terms[$term] ?? null;
}
/*
Search snippet provider: A dirty proof-of-concept:
This will probably live in sqlite one day, and be more intelligent (tagging?)
This is a 100% hack currently, and let's hope temporary does not become permanent (Hello year 2014!)
And this is English only today... we should add translation support via the manual, generated by PhD
This will probably live in sqlite one day, and be more intelligent (tagging?)
This is a 100% hack currently, and let's hope temporary does not become permanent (Hello year 2014!)
And this is English only today... we should add translation support via the manual, generated by PhD
This really is a proof-of-concept, where the choices below are the most popular searched terms at php.net
It should also take into account vague searches, such as 'global' and 'str'. The search works well enough for,
most terms, so something like $_SERVER isn't really needed but it's defined below anyways...
This really is a proof-of-concept, where the choices below are the most popular searched terms at php.net
It should also take into account vague searches, such as 'global' and 'str'. The search works well enough for,
most terms, so something like $_SERVER isn't really needed but it's defined below anyways...
*/
function is_known_snippet(string $term): ?string {
$snippets = [
'global' => '
$snippets = [
'global' => '
The <b>global</b> keyword is used to manipulate <a href="/language.variables.scope">variable scope</a>, and
there is also the concept of <a href="/language.variables.superglobals">super globals</a> in PHP,
which are special variables with a global scope.',
'string' => '
'string' => '
There is the <a href="/language.types.string">string type</a>, which is a scalar,
and also many <a href="/ref.strings">string functions.</a>',
'str' => '
'str' => '
Many <a href="/ref.strings">string functions</a> begin with <b>str</b>,
and there is also the <a href="/language.types.string">string type</a>.',
'_server' => '
'_server' => '
<a href="/reserved.variables.server">$_SERVER</a>
is a <a href="/language.variables.superglobals">super global</a>,
and is home to many predefined variables that are typically provided by a web server',
'class' => '
'class' => '
A <a href="/language.oop5">class</a> is an OOP (Object Oriented Programming) concept,
and PHP is both a procedural and OOP friendly language.',
'function' => '
'function' => '
PHP contains thousands of functions. You might be interested in how a
<a href="/language.functions">function is defined</a>, or
<a href="/about.prototypes">how to read a function prototype</a>.
See also the list of <a href="/extensions">PHP extensions</a>',
];
];
$term = ltrim(strtolower(trim($term)), '$');
return $snippets[$term] ?? null;
$term = ltrim(strtolower(trim($term)), '$');
return $snippets[$term] ?? null;
}
/**

View File

@@ -135,24 +135,24 @@ function gpg_key_get(string $rm): ?string {
function gpg_key_get_branches(bool $activeOnly): array {
$branches = [
'8.2' => [ 'pierrick', 'ramsey', 'sergey' ],
'8.1' => [ 'krakjoe', 'ramsey', 'patrickallaert' ],
'8.0' => [ 'pollita', 'carusogabriel' ],
'7.4' => [ 'derick', 'petk' ],
'7.3' => [ 'cmb', 'stas' ],
'7.2' => [ 'pollita', 'remi', 'cmb' ],
'7.1' => [ 'davey', 'krakjoe', 'pollita' ],
'7.0' => [ 'ab', 'tyrael' ],
'5.6' => [ 'tyrael', 'jpauli' ],
'5.5' => [ 'jpauli', 'dsp', 'stas' ],
'5.4' => [ 'stas' ],
'5.3' => [ 'dsp', 'johannes' ],
'8.2' => ['pierrick', 'ramsey', 'sergey'],
'8.1' => ['krakjoe', 'ramsey', 'patrickallaert'],
'8.0' => ['pollita', 'carusogabriel'],
'7.4' => ['derick', 'petk'],
'7.3' => ['cmb', 'stas'],
'7.2' => ['pollita', 'remi', 'cmb'],
'7.1' => ['davey', 'krakjoe', 'pollita'],
'7.0' => ['ab', 'tyrael'],
'5.6' => ['tyrael', 'jpauli'],
'5.5' => ['jpauli', 'dsp', 'stas'],
'5.4' => ['stas'],
'5.3' => ['dsp', 'johannes'],
];
if (!$activeOnly) { return $branches; }
$active = get_active_branches();
return array_filter($branches, function($branch) use ($active) {
return array_filter($branches, function ($branch) use ($active) {
[$major] = explode('.', $branch, 2);
return isset($active[$major][$branch]);
}, ARRAY_FILTER_USE_KEY);
@@ -161,8 +161,8 @@ function gpg_key_get_branches(bool $activeOnly): array {
function gpg_key_show_keys(bool $activeOnly): void {
foreach (gpg_key_get_branches($activeOnly) as $branch => $rms) {
$keys = array_filter(
array_map(function($rm) { return gpg_key_get($rm); }, $rms),
function($key) { return $key !== null; });
array_map(function ($rm) { return gpg_key_get($rm); }, $rms),
function ($key) { return $key !== null; });
if (empty($keys)) { continue; }
$branch = htmlentities($branch, ENT_QUOTES, 'UTF-8');

View File

@@ -23,7 +23,6 @@ foreach($css_files as $filename) {
$CSS[$filename] = @filemtime($path);
}
if (isset($shortname) && $shortname) {
header("Link: <$shorturl>; rel=shorturl");
}

View File

@@ -1,89 +1,89 @@
<?php
$historical_mirrors = array(
array("ARG", "ar2.php.net", "XMundo Hosting Solutions", "http://www.xmundo.net"),
array("ARM", "am1.php.net", "ARMINCO Global Telecommunications", "http://www.arminco.com/"),
array("AUS", "au1.php.net", "Melbourne IT Pty Ltd", "https://www.melbourneit.com.au/"),
array("AUS", "au2.php.net", "Servers Australia Pty. Ltd.", "http://www.serversaustralia.com.au/"),
array("AUT", "at1.php.net", "Goodie Domain Service", "http://www.gdsw.at/"),
array("AUT", "at2.php.net", "Yalwa Local Directory Services Austria", "http://www.yalwa.at/"),
array("BGD", "bd1.php.net", "IS Pros Limited", "http://www.ispros.com.bd"),
array("BEL", "be2.php.net", "Cu.be Solutions", "http://www.cu.be/"),
array("BIH", "ba1.php.net", "BHTelecom", "https://www.bhtelecom.ba/"),
array("BRA", "br1.php.net", "HostNet Internet", "http://www.hostnet.com.br"),
array("BRA", "br2.php.net", "Umbler", "http://umbler.com"),
array("BGR", "bg2.php.net", "Data.BG", "http://www.data.bg"),
array("CAN", "ca1.php.net", "easyDNS", "http://www.easydns.com/"),
array("CAN", "ca2.php.net", "Parasane, LLC", "http://www.parasane.net/"),
array("CAN", "ca3.php.net", "egateDOMAINS", "http://www.egatedomains.ca/?RP=DJFEIWHFEWQ"),
array("CHL", "cl1.php.net", "Caos Consultores", "http://www.caos.cl"),
array("CHN", "cn2.php.net", "Sina App Engine (SAE)", "http://sae.sina.com.cn/"),
array("CZE", "cz1.php.net", "Czech Technical University in Prague", "http://www.cvut.cz/"),
array("CZE", "cz2.php.net", "Softaculous Ltd.", "http://www.softaculous.com/"),
array("DNK", "dk1.php.net", "Siminn Denmark", "http://www.siminn.dk"),
array("DNK", "dk2.php.net", "Kobalt", "http://kobalt.dk/"),
array("EST", "ee1.php.net", "Zone Media LLC", "https://www.zone.ee/"),
array("FIN", "fi1.php.net", "Avenla Oy", "http://www.avenla.fi/"),
array("FIN", "fi2.php.net", "Planeetta Internet OY", "http://www.planeetta.net/"),
array("FRA", "fr2.php.net", "Crihan", "http://www.crihan.fr/"),
array("DEU", "de1.php.net", "@GLOBE GmbH", "http://www.globe.de/"),
array("DEU", "de2.php.net", "Locanto Kleinanzeigen", "http://www.locanto.de/"),
array("HKG", "hk1.php.net", "Nethub Online Limited", "http://www.nethub.com.hk/"),
array("HKG", "hk2.php.net", "Website Solution Web Hosting", "http://www.website-solution.net/"),
array("ISL", "is1.php.net", "Hýsingarfélagið ehf", "http://www.hysingar.is/"),
array("ISL", "is2.php.net", "Dotgeek", "http://dotgeek.org/"),
array("IND", "in1.php.net", "Directi Web Hosting", "http://www.directi.com"),
array("IND", "in3.php.net", "IndiaLinks Web Hosting Pvt Ltd", "http://www.indialinks.com"),
array("IDN", "id1.php.net", "PT Pasifik Satelit Nusantara", "http://www.pesat.net.id"),
array("IRN", "ir1.php.net", "Golha.IR", "http://www.golha.ir/"),
array("IRN", "ir2.php.net", "ParsPack.com", "http://parspack.com/"),
array("IRL", "ie1.php.net", "Yalwa - Local Directory Services Ireland", "http://www.yalwa.ie/"),
array("IRL", "ie2.php.net", "Hosting Ireland", "http://www.hostingireland.ie/"),
array("ISR", "il1.php.net", "SPD HOSTING LTD", "http://www.spd.co.il/"),
array("ITA", "it1.php.net", "Register.it", "http://www.register.it/"),
array("ITA", "it2.php.net", "Interalta", "https://www.interalta.com/"),
array("JAM", "jm2.php.net", "Teamopolis Sports Websites Inc.", "http://www.teamopolis.com/"),
array("JPN", "jp1.php.net", "PacketBusiness, Inc.", "http://www.packetbusiness.com/"),
array("JPN", "jp2.php.net", "snotch", "http://bloggers.ja.bz/sunouchi/"),
array("KOR", "kr1.php.net", "ask.sarang.net", "http://ask.sarang.net"),
array("LIE", "li1.php.net", "Telecom Liechtenstein AG", "http://www.telecom.li/"),
array("LTU", "lt1.php.net", "UAB \"Interneto vizija\"", "http://serveriai.lt/"),
array("LUX", "lu1.php.net", "root eSolutions ISP", "http://www.root.lu"),
array("LVA", "lv1.php.net", "Māris Ozoliņš", "http://netparks.lv/"),
array("LVA", "lv1.php.net", "Kaspars Foigts", "https://laacz.lv/"),
array("MYS", "my1.php.net", "MaxDedicated", "http://www.maxdedicated.com/"),
array("MEX", "mx1.php.net", "uServers Mexico", "http://www.uservers.net/?in=php"),
array("MEX", "mx2.php.net", "Universidad Autónoma Metropolitana Azcapotzalco", "http://www.azc.uam.mx"),
array("MDA", "md1.php.net", "dev.md", "http://www.dev.md/"),
array("NCL", "nc1.php.net", "Nautile", "http://www.nautile.nc/"),
array("NLD", "nl1.php.net", "Stream Service", "http://www.streamservice.nl/"),
array("NLD", "nl3.php.net", "Computel Standby BV", "http://www.computel.nl/"),
array("NZL", "nz2.php.net", "Catalyst IT Ltd", "http://catalyst.net.nz/"),
array("NOR", "no1.php.net", "Pål Sollie", "https://sparkz.no/"),
array("NOR", "no2.php.net", "Verdens Gang AS", "http://www.vg.no"),
array("PAN", "pa1.php.net", "Unidominios", "http://www.unidominios.com/"),
array("POL", "pl1.php.net", "WEBdev", "http://webdev.pl/"),
array("ROU", "ro1.php.net", "SpiderVPS", "http://www.spidervps.com/"),
array("RUS", "ru2.php.net", "Cronyx Plus LLC", "http://isp.rinet.ru/"),
array("SGP", "sg2.php.net", "Xssist Group (Singapore) Pte Ltd", "http://www.xssist.com/"),
array("ESP", "es1.php.net", "GRN Serveis Telematics", "http://www.grn.es/classic"),
array("SVN", "si1.php.net", "DOMENAR.net", "http://www.domenar.net/"),
array("SVN", "si2.php.net", "Domene in gostovanje NEOSERV", "http:///www.neoserv.si"),
array("SWE", "se1.php.net", "Portlane AB", "http://www.portlane.com/"),
array("SWE", "se2.php.net", "SpaceDump IT AB", "http://www.spacedump.se/"),
array("ZAF", "za1.php.net", "AfriCC", "https://www.afri.cc/"),
array("CHE", "ch1.php.net", "ComunidadHosting", "http://www.comunidadhosting.com/"),
array("TWN", "tw1.php.net", "twemail.com", "http://twemail.com/"),
array("TWN", "tw2.php.net", "www.mirror.tw", "http://www.mirror.tw/"),
array("THA", "th1.php.net", "THAIWEB.network", "http://www.thaiweb.net"),
array("TUR", "tr1.php.net", "İstanbul Teknik Üniversitesi Bilgi İşlem Daire Başkanlığı", "http://www.itu.edu.tr/"),
array("TUR", "tr2.php.net", "DGN Teknoloji", "http://www.dgn.net.tr/"),
array("TZA", "tz1.php.net", "Aptus Solutions", "http://aptus.co.tz"),
array("UKR", "ua1.php.net", "ELRO Corporation", "http://elro.com"),
array("UKR", "ua2.php.net", "Max Khaikin", "http://www.masterlogic.net/"),
array("GBR", "uk1.php.net", "Camel Network", "http://camelnetwork.com/"),
array("GBR", "uk3.php.net", "CatN PHP Hosting", "http://www.catn.com/"),
array("USA", "us1.php.net", "NEXCESS.NET", "http://www.nexcess.net/"),
array("USA", "us2.php.net", "Hurricane Electric", "http://he.net/"),
array("USA", "us3.php.net", "C7 Data Centers", "https://www.c7.com/"),
array("VNM", "vn1.php.net", "DigiStar Co., Ltd", "http://www.digistar.vn/"),
array("ARG", "ar2.php.net", "XMundo Hosting Solutions", "http://www.xmundo.net"),
array("ARM", "am1.php.net", "ARMINCO Global Telecommunications", "http://www.arminco.com/"),
array("AUS", "au1.php.net", "Melbourne IT Pty Ltd", "https://www.melbourneit.com.au/"),
array("AUS", "au2.php.net", "Servers Australia Pty. Ltd.", "http://www.serversaustralia.com.au/"),
array("AUT", "at1.php.net", "Goodie Domain Service", "http://www.gdsw.at/"),
array("AUT", "at2.php.net", "Yalwa Local Directory Services Austria", "http://www.yalwa.at/"),
array("BGD", "bd1.php.net", "IS Pros Limited", "http://www.ispros.com.bd"),
array("BEL", "be2.php.net", "Cu.be Solutions", "http://www.cu.be/"),
array("BIH", "ba1.php.net", "BHTelecom", "https://www.bhtelecom.ba/"),
array("BRA", "br1.php.net", "HostNet Internet", "http://www.hostnet.com.br"),
array("BRA", "br2.php.net", "Umbler", "http://umbler.com"),
array("BGR", "bg2.php.net", "Data.BG", "http://www.data.bg"),
array("CAN", "ca1.php.net", "easyDNS", "http://www.easydns.com/"),
array("CAN", "ca2.php.net", "Parasane, LLC", "http://www.parasane.net/"),
array("CAN", "ca3.php.net", "egateDOMAINS", "http://www.egatedomains.ca/?RP=DJFEIWHFEWQ"),
array("CHL", "cl1.php.net", "Caos Consultores", "http://www.caos.cl"),
array("CHN", "cn2.php.net", "Sina App Engine (SAE)", "http://sae.sina.com.cn/"),
array("CZE", "cz1.php.net", "Czech Technical University in Prague", "http://www.cvut.cz/"),
array("CZE", "cz2.php.net", "Softaculous Ltd.", "http://www.softaculous.com/"),
array("DNK", "dk1.php.net", "Siminn Denmark", "http://www.siminn.dk"),
array("DNK", "dk2.php.net", "Kobalt", "http://kobalt.dk/"),
array("EST", "ee1.php.net", "Zone Media LLC", "https://www.zone.ee/"),
array("FIN", "fi1.php.net", "Avenla Oy", "http://www.avenla.fi/"),
array("FIN", "fi2.php.net", "Planeetta Internet OY", "http://www.planeetta.net/"),
array("FRA", "fr2.php.net", "Crihan", "http://www.crihan.fr/"),
array("DEU", "de1.php.net", "@GLOBE GmbH", "http://www.globe.de/"),
array("DEU", "de2.php.net", "Locanto Kleinanzeigen", "http://www.locanto.de/"),
array("HKG", "hk1.php.net", "Nethub Online Limited", "http://www.nethub.com.hk/"),
array("HKG", "hk2.php.net", "Website Solution Web Hosting", "http://www.website-solution.net/"),
array("ISL", "is1.php.net", "Hýsingarfélagið ehf", "http://www.hysingar.is/"),
array("ISL", "is2.php.net", "Dotgeek", "http://dotgeek.org/"),
array("IND", "in1.php.net", "Directi Web Hosting", "http://www.directi.com"),
array("IND", "in3.php.net", "IndiaLinks Web Hosting Pvt Ltd", "http://www.indialinks.com"),
array("IDN", "id1.php.net", "PT Pasifik Satelit Nusantara", "http://www.pesat.net.id"),
array("IRN", "ir1.php.net", "Golha.IR", "http://www.golha.ir/"),
array("IRN", "ir2.php.net", "ParsPack.com", "http://parspack.com/"),
array("IRL", "ie1.php.net", "Yalwa - Local Directory Services Ireland", "http://www.yalwa.ie/"),
array("IRL", "ie2.php.net", "Hosting Ireland", "http://www.hostingireland.ie/"),
array("ISR", "il1.php.net", "SPD HOSTING LTD", "http://www.spd.co.il/"),
array("ITA", "it1.php.net", "Register.it", "http://www.register.it/"),
array("ITA", "it2.php.net", "Interalta", "https://www.interalta.com/"),
array("JAM", "jm2.php.net", "Teamopolis Sports Websites Inc.", "http://www.teamopolis.com/"),
array("JPN", "jp1.php.net", "PacketBusiness, Inc.", "http://www.packetbusiness.com/"),
array("JPN", "jp2.php.net", "snotch", "http://bloggers.ja.bz/sunouchi/"),
array("KOR", "kr1.php.net", "ask.sarang.net", "http://ask.sarang.net"),
array("LIE", "li1.php.net", "Telecom Liechtenstein AG", "http://www.telecom.li/"),
array("LTU", "lt1.php.net", "UAB \"Interneto vizija\"", "http://serveriai.lt/"),
array("LUX", "lu1.php.net", "root eSolutions ISP", "http://www.root.lu"),
array("LVA", "lv1.php.net", "Māris Ozoliņš", "http://netparks.lv/"),
array("LVA", "lv1.php.net", "Kaspars Foigts", "https://laacz.lv/"),
array("MYS", "my1.php.net", "MaxDedicated", "http://www.maxdedicated.com/"),
array("MEX", "mx1.php.net", "uServers Mexico", "http://www.uservers.net/?in=php"),
array("MEX", "mx2.php.net", "Universidad Autónoma Metropolitana Azcapotzalco", "http://www.azc.uam.mx"),
array("MDA", "md1.php.net", "dev.md", "http://www.dev.md/"),
array("NCL", "nc1.php.net", "Nautile", "http://www.nautile.nc/"),
array("NLD", "nl1.php.net", "Stream Service", "http://www.streamservice.nl/"),
array("NLD", "nl3.php.net", "Computel Standby BV", "http://www.computel.nl/"),
array("NZL", "nz2.php.net", "Catalyst IT Ltd", "http://catalyst.net.nz/"),
array("NOR", "no1.php.net", "Pål Sollie", "https://sparkz.no/"),
array("NOR", "no2.php.net", "Verdens Gang AS", "http://www.vg.no"),
array("PAN", "pa1.php.net", "Unidominios", "http://www.unidominios.com/"),
array("POL", "pl1.php.net", "WEBdev", "http://webdev.pl/"),
array("ROU", "ro1.php.net", "SpiderVPS", "http://www.spidervps.com/"),
array("RUS", "ru2.php.net", "Cronyx Plus LLC", "http://isp.rinet.ru/"),
array("SGP", "sg2.php.net", "Xssist Group (Singapore) Pte Ltd", "http://www.xssist.com/"),
array("ESP", "es1.php.net", "GRN Serveis Telematics", "http://www.grn.es/classic"),
array("SVN", "si1.php.net", "DOMENAR.net", "http://www.domenar.net/"),
array("SVN", "si2.php.net", "Domene in gostovanje NEOSERV", "http:///www.neoserv.si"),
array("SWE", "se1.php.net", "Portlane AB", "http://www.portlane.com/"),
array("SWE", "se2.php.net", "SpaceDump IT AB", "http://www.spacedump.se/"),
array("ZAF", "za1.php.net", "AfriCC", "https://www.afri.cc/"),
array("CHE", "ch1.php.net", "ComunidadHosting", "http://www.comunidadhosting.com/"),
array("TWN", "tw1.php.net", "twemail.com", "http://twemail.com/"),
array("TWN", "tw2.php.net", "www.mirror.tw", "http://www.mirror.tw/"),
array("THA", "th1.php.net", "THAIWEB.network", "http://www.thaiweb.net"),
array("TUR", "tr1.php.net", "İstanbul Teknik Üniversitesi Bilgi İşlem Daire Başkanlığı", "http://www.itu.edu.tr/"),
array("TUR", "tr2.php.net", "DGN Teknoloji", "http://www.dgn.net.tr/"),
array("TZA", "tz1.php.net", "Aptus Solutions", "http://aptus.co.tz"),
array("UKR", "ua1.php.net", "ELRO Corporation", "http://elro.com"),
array("UKR", "ua2.php.net", "Max Khaikin", "http://www.masterlogic.net/"),
array("GBR", "uk1.php.net", "Camel Network", "http://camelnetwork.com/"),
array("GBR", "uk3.php.net", "CatN PHP Hosting", "http://www.catn.com/"),
array("USA", "us1.php.net", "NEXCESS.NET", "http://www.nexcess.net/"),
array("USA", "us2.php.net", "Hurricane Electric", "http://he.net/"),
array("USA", "us3.php.net", "C7 Data Centers", "https://www.c7.com/"),
array("VNM", "vn1.php.net", "DigiStar Co., Ltd", "http://www.digistar.vn/"),
);

View File

@@ -210,8 +210,8 @@ function i2c_realip()
// 192.168.0.0/16
// Also skip RFC 6598 IP's
if (!preg_match('/^(?:10|100\.(?:6[4-9]|[7-9]\d|1[01]\d|12[0-7])|172\.(?:1[6-9]|2\d|3[01])|192\.168)\./', $ips[$i]) && ip2long($ips[$i])) {
$ip = $ips[$i];
break;
$ip = $ips[$i];
break;
}
}
}

View File

@@ -121,7 +121,7 @@ function language_choose_code()
foreach ($browser_langs as $langdata) {
// Translation table for accept-language codes and phpdoc codes
switch($langdata[0]) {
switch ($langdata[0]) {
case "pt-br" : $langdata[0] = 'pt_br'; break;
case "zh-cn" : $langdata[0] = 'zh'; break;
case "zh-hk" : $langdata[0] = 'hk'; break;
@@ -163,7 +163,6 @@ function language_choose_code()
return array($selected, $explicitly_specified, $parsed_langs);
}
// Add a language to the possible languages' list
function language_add($langcode, &$langs)
{

View File

@@ -83,7 +83,7 @@ $INACTIVE_ONLINE_LANGUAGES = array(
'sl' => 'Slovenian',
'sv' => 'Swedish',
'uk' => 'Ukrainian',
);
);
$ACTIVE_ONLINE_LANGUAGES = array_diff($LANGUAGES, $INACTIVE_ONLINE_LANGUAGES);

View File

@@ -15,9 +15,9 @@ function highlight_php($code, $return = FALSE)
$highlighted = highlight_string($code, TRUE);
// Use this ugly hack for now to avoid code snippets with bad syntax screwing up the highlighter
if(strstr($highlighted, "include/layout.inc</b>")) {
$highlighted = '<span class="html">'. nl2br(htmlentities($code, ENT_HTML5), FALSE) ."</span>";
}
if (strstr($highlighted, "include/layout.inc</b>")) {
$highlighted = '<span class="html">'. nl2br(htmlentities($code, ENT_HTML5), FALSE) ."</span>";
}
// Fix output to use CSS classes and wrap well
$highlighted = '<div class="phpcode">' . str_replace(
@@ -62,7 +62,6 @@ function highlight_php_trimmed($code, $return = false)
// Stats pages still need this
function commonHeader($title) { site_header($title); }
// Stats pages still need this
function commonFooter() { site_footer(); }
@@ -206,7 +205,7 @@ function download_link($file, $title)
$local_file = "distributions/$file";
}
if(@file_exists($local_file.".asc")) {
if (@file_exists($local_file.".asc")) {
echo " ";
$sig_link = "/distributions/$file.asc";
print_link($sig_link, "(sig)");
@@ -235,10 +234,10 @@ function sect_to_file($string) {
$chap = "ref.$string.php";
$feat = "features.$string.php";
$struct = "control-structures.$string.php";
if(@is_file($func)) return $func;
else if(@is_file($chap)) return $chap;
else if(@is_file($feat)) return $feat;
else if(@is_file($struct)) return $struct;
if (@is_file($func)) return $func;
else if (@is_file($chap)) return $chap;
else if (@is_file($feat)) return $feat;
else if (@is_file($struct)) return $struct;
else return "$string.php";
}
@@ -293,10 +292,10 @@ function display_event($event, $include_date = 1)
// Recurring possibilities
$re = array(
1 => 'First',
2 => 'Second',
3 => 'Third',
4 => 'Fourth',
1 => 'First',
2 => 'Second',
3 => 'Third',
4 => 'Fourth',
-1 => 'Last',
-2 => '2nd Last',
-3 => '3rd Last'
@@ -351,7 +350,7 @@ function display_event($event, $include_date = 1)
}
// Event category
if(isset($event['category']) && $event['category']) {
if (isset($event['category']) && $event['category']) {
$cat = array("unknown", "User Group Event", "Conference", "Training");
echo ' [' . $cat[$event['category']] . '] ';
}
@@ -397,12 +396,12 @@ function print_news($news, $dog, $max = 5, $onlyyear = null, $return = false) {
$retval = array();
$count = 0;
$news = $news ?: array(); // default to empty array (if no news)
foreach($news as $item) {
foreach ($news as $item) {
$ok = false;
// Only print entries in the provided s/dog/cat/ egory
// If $dog is null, everything matches
foreach($item["category"] as $category) {
foreach ($item["category"] as $category) {
if (is_null($dog) || in_array($category["term"], (array)$dog)) {
$ok = true;
++$count;
@@ -417,7 +416,7 @@ function print_news($news, $dog, $max = 5, $onlyyear = null, $return = false) {
}
$image = "";
if(isset($item["newsImage"])) {
if (isset($item["newsImage"])) {
$image = news_image($item["newsImage"]["link"], $item["newsImage"]["content"], $item["newsImage"]["title"], false);
}
@@ -425,7 +424,7 @@ function print_news($news, $dog, $max = 5, $onlyyear = null, $return = false) {
$id = $id["fragment"];
// Find the permlink
foreach($item["link"] as $link) {
foreach ($item["link"] as $link) {
if ($link["rel"] === "via") {
$permlink = $link["href"];
break;
@@ -471,9 +470,6 @@ EOT;
return $retval;
}
function site_header($title = '', $config = array())
{
global $MYSITE;
@@ -488,10 +484,8 @@ function site_header($title = '', $config = array())
"headsup" => "",
);
$config = array_merge($defaults, $config);
$config["headsup"] = get_news_changes();
$lang = language_convert($config["lang"]);
@@ -564,7 +558,7 @@ function news_toc($sections = null) {
),
);
foreach($items as $section => $menu) {
foreach ($items as $section => $menu) {
// only print requested sections.
if (is_array($sections) && !in_array($section, $sections)) {
@@ -572,7 +566,7 @@ function news_toc($sections = null) {
}
echo "<dt><a href='{$menu["link"]}'>{$menu["title"]}</a></dt>\n";
foreach($menu["children"] as $child) {
foreach ($menu["children"] as $child) {
echo "<dd><a href='{$child["permlink"]}'>{$child["title"]}</a></dd>\n";
}
}
@@ -628,12 +622,12 @@ function doc_toc_list($lang, $index, $file) {
include __DIR__ . "/../manual/$lang/toc/$file.inc";
doc_toc_title($lang, $index, $file);
foreach($TOC as $entry) {
foreach ($TOC as $entry) {
echo "\t<dd><a href='/manual/$lang/{$entry[0]}'>{$entry[1]}</a></dd>\n";
}
}
function doc_toc_title($lang, $index, $file, $elm = "dt") {
foreach($index as $entry) {
foreach ($index as $entry) {
if ($entry[0] == "$file.php") {
$link = $entry[0];
$title = $entry[1];

View File

@@ -110,7 +110,7 @@ function find_manual_page($lang, $keyword)
if (in_array('sqlite', PDO::getAvailableDrivers())) {
if (file_exists($_SERVER['DOCUMENT_ROOT'] . '/backend/manual-lookup.sqlite')) {
try {
$dbh = new PDO( 'sqlite:' . $_SERVER['DOCUMENT_ROOT'] . '/backend/manual-lookup.sqlite', '', '', array( PDO::ATTR_PERSISTENT => TRUE, PDO::ATTR_EMULATE_PREPARES => TRUE) );
$dbh = new PDO( 'sqlite:' . $_SERVER['DOCUMENT_ROOT'] . '/backend/manual-lookup.sqlite', '', '', array(PDO::ATTR_PERSISTENT => TRUE, PDO::ATTR_EMULATE_PREPARES => TRUE) );
} catch (PDOException $e) {
return find_manual_page_slow($lang, $keyword);
}
@@ -196,13 +196,12 @@ function find_manual_page($lang, $keyword)
$r = $stm->fetch(PDO::FETCH_NUM);
if (isset($r[0])) {
if(isset($r[1]) && $r[1] > 10 && strlen($keyword) < 4) {
if (isset($r[1]) && $r[1] > 10 && strlen($keyword) < 4) {
// "Match" found, but the keyword is so short
// its probably bogus. Skip it
continue;
}
// Match found
// But does the file really exist?
// @todo consider redirecting here, instead of including content within the 404

View File

@@ -15,7 +15,7 @@ header("Content-type: text/html; charset=utf-8");
header("Permissions-Policy: interest-cohort=()");
/* Fix Silly Same Origin Policies */
(function() {
(function () {
if (!isset($_SERVER["HTTP_ORIGIN"])) {
return;
}
@@ -49,7 +49,6 @@ if (ini_get("date.timezone") === "" && function_exists("date_default_timezone_se
date_default_timezone_set("UTC");
}
/* Compatibility with the PHP webserver.. */
if (!isset($_SERVER["SERVER_ADDR"])) {
$_SERVER["SERVER_ADDR"] = "127.0.0.1";

File diff suppressed because it is too large Load Diff

View File

@@ -1,94 +1,94 @@
<?php
function search_results($res, $q, $profile='all', $per_page=10, $s=0, $l='en', $show_title=true, $show_foot=true, $show_attrib=true) {
$start_result = $s;
$end_result = $s + $res['ResultSet']['totalResultsReturned'] -1;
$start_result = $s;
$end_result = $s + $res['ResultSet']['totalResultsReturned'] -1;
$results_count = ($res['ResultSet']['totalResultsAvailable'] < 100 ? $res['ResultSet']['totalResultsAvailable'] : 'more than 100');
$results_count = ($res['ResultSet']['totalResultsAvailable'] < 100 ? $res['ResultSet']['totalResultsAvailable'] : 'more than 100');
$disp_start_result = $start_result + 1;
$disp_end_result = $end_result + 1;
if($show_title) echo "<h2>Showing results $disp_start_result to $disp_end_result of $results_count</h2>\n";
echo '<ul id="search-results">'."\n";
$pos = $res['ResultSet']['firstResultPosition'];
$disp_start_result = $start_result + 1;
$disp_end_result = $end_result + 1;
if($show_title) echo "<h2>Showing results $disp_start_result to $disp_end_result of $results_count</h2>\n";
echo '<ul id="search-results">'."\n";
$pos = $res['ResultSet']['firstResultPosition'];
$php_img_dir = 'http://www.php.net/images';
$types = array(
'pear' => '<img src="'. $php_img_dir .'/pear_item.gif" height="19" width="17" style="float:left; margin-left:-30px;"/>',
'pecl' => '<img src="'. $php_img_dir .'/pecl_item.gif" height="19" width="17" style="float:left; margin-left:-30px;"/>',
'pecl4win' => '<img src="'. $php_img_dir .'/pecl_item_win.gif" height="22" width="21" style="float:left; margin-left:-31px;"/>',
'peclbugs' => '<img src="'. $php_img_dir .'/pecl_item_bug.gif" height="19" width="17" style="float:left; margin-left:-30px;"/>',
'pearbugs' => '<img src="'. $php_img_dir .'/pear_item_bug.gif" height="19" width="17" style="float:left; margin-left:-30px;"/>',
'talks' => '<img src="'. $php_img_dir .'/ele-icon.gif" height="20" width="32" style="float:left; margin-left:-40px;"/>',
'snaps' => '<img src="'. $php_img_dir .'/logos/php_xpstyle_ico.png" height="32" width="32" style="float:left; margin-left:-40px;"/>',
'cvsweb' => '<img src="'. $php_img_dir .'/logos/php_script_ico.png" height="32" width="32" style="float:left; margin-left:-40px;"/>',
'viewcvs' => '<img src="'. $php_img_dir .'/logos/php_script_ico.png" height="32" width="32" style="float:left; margin-left:-40px;"/>',
'news' => '<img src="'. $php_img_dir .'/logos/php-icon-white.gif" height="32" width="32" style="float:left; margin-left:-40px;"/>',
'php' => '<img src="'. $php_img_dir .'/logos/php-icon-white.gif" height="32" width="32" style="float:left; margin-left:-40px;"/>',
'doc' => '<img src="'. $php_img_dir .'/logos/php-icon-white.gif" height="32" width="32" style="float:left; margin-left:-40px;"/>',
'bugs' => '<img src="'. $php_img_dir .'/php_bug.gif" height="32" width="32" style="float:left; margin-left:-40px;"/>',
'gtk' => '<img src="'. $php_img_dir .'/logos/php-gtk-white.gif" height="26" width="32" style="float:left; margin-left:-40px;"/>'
);
$php_img_dir = 'http://www.php.net/images';
$types = array(
'pear' => '<img src="'. $php_img_dir .'/pear_item.gif" height="19" width="17" style="float:left; margin-left:-30px;"/>',
'pecl' => '<img src="'. $php_img_dir .'/pecl_item.gif" height="19" width="17" style="float:left; margin-left:-30px;"/>',
'pecl4win' => '<img src="'. $php_img_dir .'/pecl_item_win.gif" height="22" width="21" style="float:left; margin-left:-31px;"/>',
'peclbugs' => '<img src="'. $php_img_dir .'/pecl_item_bug.gif" height="19" width="17" style="float:left; margin-left:-30px;"/>',
'pearbugs' => '<img src="'. $php_img_dir .'/pear_item_bug.gif" height="19" width="17" style="float:left; margin-left:-30px;"/>',
'talks' => '<img src="'. $php_img_dir .'/ele-icon.gif" height="20" width="32" style="float:left; margin-left:-40px;"/>',
'snaps' => '<img src="'. $php_img_dir .'/logos/php_xpstyle_ico.png" height="32" width="32" style="float:left; margin-left:-40px;"/>',
'cvsweb' => '<img src="'. $php_img_dir .'/logos/php_script_ico.png" height="32" width="32" style="float:left; margin-left:-40px;"/>',
'viewcvs' => '<img src="'. $php_img_dir .'/logos/php_script_ico.png" height="32" width="32" style="float:left; margin-left:-40px;"/>',
'news' => '<img src="'. $php_img_dir .'/logos/php-icon-white.gif" height="32" width="32" style="float:left; margin-left:-40px;"/>',
'php' => '<img src="'. $php_img_dir .'/logos/php-icon-white.gif" height="32" width="32" style="float:left; margin-left:-40px;"/>',
'doc' => '<img src="'. $php_img_dir .'/logos/php-icon-white.gif" height="32" width="32" style="float:left; margin-left:-40px;"/>',
'bugs' => '<img src="'. $php_img_dir .'/php_bug.gif" height="32" width="32" style="float:left; margin-left:-40px;"/>',
'gtk' => '<img src="'. $php_img_dir .'/logos/php-gtk-white.gif" height="26" width="32" style="float:left; margin-left:-40px;"/>'
);
foreach($res['ResultSet']['Result'] as $i => $hit) {
$cnt = $pos + $i;
foreach($res['ResultSet']['Result'] as $i => $hit) {
$cnt = $pos + $i;
$d = date('j M Y', $hit['ModificationDate']);
$cachelink = '';
if (isset($hit['Cache'])) {
$cachelink = " - <a href=\"{$hit['Cache']}\">Cached</a>";
}
$d = date('j M Y', $hit['ModificationDate']);
$cachelink = '';
if (isset($hit['Cache'])) {
$cachelink = " - <a href=\"{$hit['Cache']}\">Cached</a>";
}
// rewrite mirrors urls (\w\w\d? or www, but not qa, doc, gtk and ~/user)
$real_url = preg_replace('@^http://(?!doc|qa|gtk)\w{2,3}\.php\.net(?!/~)(.*)$@', '$1', $hit['Url']);
$displayurl = preg_replace('@^http://(?:(?!doc|qa|php|gtk)\w{2,3}\.)?(.+[^/])/?$@', '$1', $hit['Url']);
$type = substr($displayurl,0,strpos($displayurl,'.'));
if($type=='pecl' && strstr($displayurl,"/bugs/")) $type = "peclbugs";
if($type=='pear' && strstr($displayurl,"/bugs/")) $type = "pearbugs";
if($type=='smarty') continue;
$display_title = str_replace(array('PHP:', '&amp;'), array('', '&'), $hit['Title']);
// rewrite mirrors urls (\w\w\d? or www, but not qa, doc, gtk and ~/user)
$real_url = preg_replace('@^http://(?!doc|qa|gtk)\w{2,3}\.php\.net(?!/~)(.*)$@', '$1', $hit['Url']);
$displayurl = preg_replace('@^http://(?:(?!doc|qa|php|gtk)\w{2,3}\.)?(.+[^/])/?$@', '$1', $hit['Url']);
$type = substr($displayurl,0,strpos($displayurl,'.'));
if($type=='pecl' && strstr($displayurl,"/bugs/")) $type = "peclbugs";
if($type=='pear' && strstr($displayurl,"/bugs/")) $type = "pearbugs";
if($type=='smarty') continue;
$display_title = str_replace(array('PHP:', '&amp;'), array('', '&'), $hit['Title']);
// Fall back to the PHP logo for unknown hits
if (!isset($types[$type])) {
$type = "php";
}
// Fall back to the PHP logo for unknown hits
if (!isset($types[$type])) {
$type = "php";
}
// Fix &amp;gt; double escaping
$summary = str_replace('&amp;', '&', $hit['Summary']);
$summary = htmlspecialchars($summary, ENT_QUOTES, 'UTF-8');
echo <<<EOB
// Fix &amp;gt; double escaping
$summary = str_replace('&amp;', '&', $hit['Summary']);
$summary = htmlspecialchars($summary, ENT_QUOTES, 'UTF-8');
echo <<<EOB
<li>
<p class="result">{$types[$type]}<a href="{$real_url}">{$display_title}</a></p>
<p class="summary">{$summary}</p>
<p class="meta">{$displayurl} - {$d} {$cachelink}</p>
</li>
EOB;
}
echo "</ul>\n";
if($show_attrib):
echo <<<EOB
}
echo "</ul>\n";
if($show_attrib):
echo <<<EOB
<span style="margin-left: 3em; margin-top: 1em; float: right; font-family: Verdana, Tahoma, Helvetica, Arial;
font-size: 11px; color:#555;">results by <img style="margin-bottom:4px;" src="/images/bing.png" align="center"/></span>
EOB;
endif;
if($show_foot):
echo <<<EOB
endif;
if($show_foot):
echo <<<EOB
<div id="results_nav"><h4>Results Page:</h4>
<ul id="results_nav_list">
EOB;
$start = 0;
for($z=1; $z < 11; $z++) {
if($start > $res['ResultSet']['totalResultsAvailable']) {
break;
}
$start = 0;
for($z=1; $z < 11; $z++) {
if($start > $res['ResultSet']['totalResultsAvailable']) {
break;
}
$class = '';
if ($start == $start_result) {
$class = 'current';
}
printf('<li class="%s"><a href="/results.php?q=%s&start=%d&p=%s&l=%s">%d</a></li>', $class, urlencode($q), $start, $profile, urlencode($l), $z);
$start += $per_page;
}
echo '</ul></div>';
endif;
printf('<li class="%s"><a href="/results.php?q=%s&start=%d&p=%s&l=%s">%d</a></li>', $class, urlencode($q), $start, $profile, urlencode($l), $z);
$start += $per_page;
}
echo '</ul></div>';
endif;
}

View File

@@ -18,7 +18,6 @@ include_once __DIR__ . '/prepend.inc';
// Set variable defaults
$PGI = array(); $SIDEBAR_DATA = '';
// =============================================================================
// User note display functions
// =============================================================================
@@ -68,7 +67,7 @@ END_USERNOTE_HEADER;
} else {
// If we have notes, print them out
echo '<div id="allnotes">';
foreach($notes as $note) {
foreach ($notes as $note) {
manual_note_display(
$note['xwhen'], $note['user'], $note['note'], $note['id'], $note['votes']
);
@@ -113,7 +112,7 @@ function manual_notes_load($id)
}
// Print out one user note entry
function manual_note_display($date, $name, $text, $id, $votes = array('up'=>0,'down'=>0), $voteOption = true)
function manual_note_display($date, $name, $text, $id, $votes = array('up'=>0, 'down'=>0), $voteOption = true)
{
if ($name) {
$name = "\n <strong class=\"user\"><em>" . htmlspecialchars($name) . "</em></strong>";
@@ -197,10 +196,9 @@ USER_NOTE_TEXT;
}
function manual_navigation_breadcrumbs(array $setup) {
$menu = array();
foreach(array_reverse($setup["parents"]) as $parent) {
foreach (array_reverse($setup["parents"]) as $parent) {
$menu[] = array(
"title" => $parent[1],
"link" => $parent[0],
@@ -220,7 +218,7 @@ function manual_navigation_breadcrumbs(array $setup) {
function manual_navigation_related(array $setup) {
$siblings = array();
foreach($setup['toc'] as $entry) {
foreach ($setup['toc'] as $entry) {
$siblings[] = array(
"title" => manual_navigation_methodname($entry[1]),
"link" => $entry[0],
@@ -241,7 +239,7 @@ function manual_navigation_related(array $setup) {
function manual_navigation_deprecated(array $setup) {
$methods = array();
foreach((array)$setup['toc_deprecated'] as $entry) {
foreach ((array)$setup['toc_deprecated'] as $entry) {
$methods[] = array(
"title" => manual_navigation_methodname($entry[1]),
"link" => $entry[0],
@@ -260,7 +258,7 @@ function manual_navigation_methodname($methodname) {
}
// Add zero-width spaces to allow line-breaks at various characters
return str_replace(array('-','_'), array('-&#8203;','_&#8203;'), $methodname);
return str_replace(array('-', '_'), array('-&#8203;', '_&#8203;'), $methodname);
}
// Set up variables important for this page
@@ -407,12 +405,12 @@ function relTime(DateTime $date) {
$current = new DateTime;
$diff = $current->diff($date);
$units = array("year" => $diff->format("%y"),
"month" => $diff->format("%m"),
"day" => $diff->format("%d"),
"hour" => $diff->format("%h"),
"minute" => $diff->format("%i"),
"second" => $diff->format("%s"),
);
"month" => $diff->format("%m"),
"day" => $diff->format("%d"),
"hour" => $diff->format("%h"),
"minute" => $diff->format("%i"),
"second" => $diff->format("%s"),
);
$out = "just now...";
foreach ($units as $unit => $amount) {
if (empty($amount)) {

View File

@@ -15,9 +15,9 @@ const MIRROR_DOESNOTWORK = 3;
$MIRRORS = array(
"https://www.php.net/" => array(
"DEU", "MyraCloud", FALSE,
"https://myracloud.com/en/", MIRROR_SPECIAL, TRUE,
"en", MIRROR_OK),
"DEU", "MyraCloud", FALSE,
"https://myracloud.com/en/", MIRROR_SPECIAL, TRUE,
"en", MIRROR_OK),
);
/**
@@ -166,28 +166,28 @@ function header_nocache()
function get_available_sqlites() {
$allsqlites = array(1 => 'sqlite', 2 => 'sqlite3', 4 => 'pdo_sqlite', 8 => 'pdo_sqlite2');
$avail = 0;
$allsqlites = array(1 => 'sqlite', 2 => 'sqlite3', 4 => 'pdo_sqlite', 8 => 'pdo_sqlite2');
$avail = 0;
if (function_exists('sqlite_open')) {
$avail += 1;
}
if (class_exists('sqlite3')) {
$avail += 2;
}
if (method_exists('PDO', 'getavailabledrivers')) {
foreach (PDO::getavailabledrivers() as $driver) {
switch ($driver) {
case 'sqlite':
$avail += 4;
break;
case 'sqlite2':
$avail += 8;
break;
}
}
}
return $avail;
if (function_exists('sqlite_open')) {
$avail += 1;
}
if (class_exists('sqlite3')) {
$avail += 2;
}
if (method_exists('PDO', 'getavailabledrivers')) {
foreach (PDO::getavailabledrivers() as $driver) {
switch ($driver) {
case 'sqlite':
$avail += 4;
break;
case 'sqlite2':
$avail += 8;
break;
}
}
}
return $avail;
}
// Get all manual prefix search sections
@@ -217,7 +217,7 @@ function get_shortname($page) {
// We can atleast remove manual/xx/
$shorturl = substr($page, strrpos($page, "/")+1);
foreach($sections as $section) {
foreach ($sections as $section) {
// If we know this section
if (strpos($shorturl, $section) === 0) {
// We can make it even shorter
@@ -248,7 +248,7 @@ if (!isset($_SERVER["HTTPS"]) || $_SERVER["HTTPS"] != "on") {
$proto = "https";
}
if($_SERVER["SERVER_PORT"] != '80' && $_SERVER["SERVER_PORT"] != 443) {
if ($_SERVER["SERVER_PORT"] != '80' && $_SERVER["SERVER_PORT"] != 443) {
$MYSITE = $proto . '://' . $_SERVER["SERVER_NAME"] . ':' . (int)$_SERVER["SERVER_PORT"] . '/';
$msite = 'http://' . $_SERVER["SERVER_NAME"] . ':' . (int)$_SERVER["SERVER_PORT"] . '/';
} else {
@@ -256,7 +256,6 @@ if($_SERVER["SERVER_PORT"] != '80' && $_SERVER["SERVER_PORT"] != 443) {
$msite = 'https://' . $_SERVER["SERVER_NAME"] . '/';
}
// If the mirror is not registered with this name, provide defaults
// (no country code, no search, no stats, English default language ...)
if (!isset($MIRRORS[$MYSITE])) {

View File

@@ -15,7 +15,7 @@
* ),
* );
*/
$RELEASES = (function() {
$RELEASES = (function () {
$data = [];
/* PHP 8.1 Release */
@@ -93,5 +93,5 @@ function release_get_latest() {
}
}
return [ $version, $current ];
return [$version, $current];
}