* @license http://opensource.org/licenses/BSD-2-Clause BSD * @link https://github.com/cfortune/PHP-Bounce-Handler/ */ $codes_1_url='http://www.iana.org/assignments/smtp-enhanced-status-codes/'. 'smtp-enhanced-status-codes-1.csv'; $codes_3_url='http://www.iana.org/assignments/smtp-enhanced-status-codes/'. 'smtp-enhanced-status-codes-3.csv'; $nl="\n"; /** * Split a line into sections to avoid going over 80 character limit * whilst preserving PEAR standards. * * @param string $describer Describer line * @param string $line Line to split * @param string $nl New line character(s) * * @return void */ function splitIt($describer,$line,$nl) { if (strlen($describer.$line)>70) { $line_start = $nl . str_repeat(' ', 7) . '"'; $line_continues = '".'; print $describer . $nl; print str_repeat(' ', 4) . '= "'; $split = chunk_split($line, 72, $line_continues . $line_start); print substr($split, 0, -strlen($line_continues . $line_start)); print '";' . $nl . $nl; } else { print $describer.'="'.$line.'";'.$nl; } } print ''.$nl; print ' * @license http://opensource.org/licenses/BSD-2-Clause BSD'.$nl; print ' * @link https://github.com/cfortune/PHP-Bounce-Handler/'.$nl; print ' */'.$nl.$nl; $fh = fopen($codes_1_url, "r"); if ($fh !== false) { $a = fgets($fh); // 1st line is titles while (!feof($fh)) { $a = fgetcsv($fh, 0, ',', '"'); if (false===isset($a[0]) || false===isset($a[1]) || false===isset($a[2]) ) { die('Unable to read CSV line: '.print_r($a, true)); } $a[0] = preg_replace('/\..*/', '', $a[0]); // 5.x.x -> 5 $a[1] = preg_replace('/\n\s*/', ' ', $a[1]); // remove line breaks $a[1] = preg_replace('/\s\s+/', ' ', $a[1]); // remove double spaces $a[1] = preg_replace('/"/', '\\"', $a[1]); // requote quotes $a[2] = preg_replace('/\n\s*/', ' ', $a[2]); // remove line breaks $a[2] = preg_replace('/\s\s+/', ' ', $a[2]); // remove double spaces $a[2] = preg_replace('/"/', '\\"', $a[2]); // requote quotes print '// '.$a[3].$nl; splitIt('$status_code_classes[\''.$a[0].'\'][\'title\']', $a[1], $nl); splitIt('$status_code_classes[\''.$a[0].'\'][\'descr\']', $a[2], $nl); } fclose($fh); } print "\n"; // X.7.17,Mailbox owner has changed,5XX,"This status code is // returned when a message is // received with a Require-Recipient-Valid-Since // field or RRVS extension and the receiving // system is able to determine that the intended // recipient mailbox has not been under // continuous ownership since the specified date.", // [RFC-ietf-appsawg-rrvs-header-field-10] (Standards Track),M. Kucherawy,IESG $fh = fopen($codes_3_url, "r"); if ($fh !== false) { $a = fgets($fh); // 1st line is titles while (!feof($fh)) { $a = fgetcsv($fh, 0, ',', '"'); $a[0] = preg_replace('/^X./i', '', $a[0]); // X.5.0 -> 5.0 $a[1] = preg_replace('/\n\s*/', ' ', $a[1]); // remove line breaks $a[1] = preg_replace('/\s\s+/', ' ', $a[1]); // remove double spaces $a[1] = preg_replace('/"/', '\\"', $a[1]); // requote quotes $a[3] = preg_replace('/\n\s*/', ' ', $a[3]); // remove line breaks $a[3] = preg_replace('/\s\s+/', ' ', $a[3]); // remove double spaces $a[3] = preg_replace('/"/', '\\"', $a[3]); // requote quotes print '// '.$a[4].$nl; splitIt('$status_code_subclasses[\''.$a[0].'\'][\'title\']', $a[1], $nl); splitIt('$status_code_subclasses[\''.$a[0].'\'][\'descr\']', $a[3], $nl); } fclose($fh); }