diff options
-rw-r--r-- | contrib/feed-browser/css/feed.css | 49 | ||||
-rw-r--r-- | contrib/feed-browser/index.php | 32 | ||||
-rw-r--r-- | contrib/feed-browser/update.php | 208 |
3 files changed, 163 insertions, 126 deletions
diff --git a/contrib/feed-browser/css/feed.css b/contrib/feed-browser/css/feed.css index b1252c4f7e..f2927f71f8 100644 --- a/contrib/feed-browser/css/feed.css +++ b/contrib/feed-browser/css/feed.css @@ -3,10 +3,34 @@ body color: #000; background-color: #fff; font-family: Sans; - padding: 0; + padding: 10px; margin: 0; } +#left +{ + position: absolute; + left:10px; + top:10px; + width:200px; + background:#fff; +} + +#right +{ + background:#fff; + margin-left: 199px; + margin-right: 0; + voice-family: "\"}\""; + voice-family: inherit; + margin-left: 201px; + margin-right:0; +} +html>body #right { + margin-left: 201px; + margin-right:0; +} + a { text-decoration: none; @@ -37,6 +61,7 @@ td h1 { + padding-top: 1em; font-size: 125%; } @@ -45,12 +70,6 @@ h2 font-size: 105%; } -#menu, #menu li -{ - display: inline; - list-style: none; -} - dt { padding-top: 0.5em; @@ -58,6 +77,7 @@ dt #sections { + padding-top: 1em; list-style: none; font-size: 0.8em; } @@ -67,18 +87,13 @@ dt list-style: none; margin-left: -1em; } - -#page -{ -} - -#left +.download:before { - float: left; - width: 20%; + content: url("http://ewi546.ewi.utwente.nl/tmp/hrw/fb/img/package-x-generic.png"); + padding: 0 2px; } -#right +#download { - width: 79%; + list-style: none; } diff --git a/contrib/feed-browser/index.php b/contrib/feed-browser/index.php index 9b612f9fd1..3b1230ce22 100644 --- a/contrib/feed-browser/index.php +++ b/contrib/feed-browser/index.php @@ -80,10 +80,11 @@ switch($action) <style type="text/css" media="all">@import "css/feed.css";</style> </head> <body > - <div id="page"> - <div id="left"><?php echo sectionslist(); ?></div> <div id="right"><?php echo searchletter(); echo $ipkgoutput; ?></div> - </div> + <div id="left"> + <h1>Sections list</h1> + <?php echo sectionslist(); ?> + </div> </body> </html> <?php @@ -287,8 +288,9 @@ function searchsection($section) function pkgdetails ($package) { $result = db_query("SELECT * FROM packages,feeds - WHERE packages.p_name='$package' AND feeds.f_name = packages.p_feed - ORDER BY packages.p_version DESC"); + WHERE (packages.p_name='$package' OR packages.p_provides='$package') + AND feeds.f_name = packages.p_feed + ORDER BY packages.p_version DESC, feeds.f_name ASC, packages.p_arch DESC "); // display first result @@ -380,18 +382,20 @@ function pkgdetails ($package) } - $details .= "\n<h2>Available versions and architectures:</h2><ul>\n"; + $details .= "\n<h2>Available versions and architectures:</h2><ul id='download'>\n"; foreach($result as $packages_a) { - $details .= sprintf("\n<li><a href='%s' title='%s %s for %s'>%s %s</a> for %s</li>\n", + $details .= sprintf("\n<li><a class='download' href='%s' title='%s %s for %s'>%s %s</a> for %s (%s feed)</li>\n", $packages_a['feeds.f_uri']."/".$packages_a['packages.p_file'], $packages_a['packages.p_name'], $packages_a['packages.p_version'], $packages_a['packages.p_arch'], $packages_a['packages.p_name'], $packages_a['packages.p_version'], - $packages_a['packages.p_arch']); + $packages_a['packages.p_arch'], + $packages_a['feeds.f_name'] + ); } $details .= "</ul>\n"; @@ -407,20 +411,17 @@ function pkgdetails ($package) function addlinks ($input) { // split input elements up - $elements = preg_split ('/[\s,]+/', $input); + $elements = explode (', ', $input); $offset = 0; foreach ($elements as $element) { - // skip version information and empty elements (shouldn't happend) - if (!eregi('^([0-9a-z\-]*)$', $element) OR empty($element)) - { - continue; - } + // strip version number + $element = ereg_replace('^(.*)( \((.*)\))+$', '\\1', $element); // do we have this package in the db? - $result = db_query ("SELECT DISTINCT p_name FROM packages WHERE p_name='{$element}'"); + $result = db_query ("SELECT DISTINCT p_name FROM packages WHERE p_name='{$element}' OR p_provides='{$element}'"); if(isset($result[0]['p_name'])) { @@ -440,7 +441,6 @@ function addlinks ($input) } } - return $input; } diff --git a/contrib/feed-browser/update.php b/contrib/feed-browser/update.php index 07f4f15bc9..1b5e7c34fc 100644 --- a/contrib/feed-browser/update.php +++ b/contrib/feed-browser/update.php @@ -35,6 +35,7 @@ Description: IPv4 link-local address allocator */ +error_reporting(E_ALL); $start = time(); $p_count = 0; @@ -45,82 +46,96 @@ $feeds = db_query("SELECT f_name, f_uri FROM feeds"); foreach($feeds as $feed) { + print("Updating {$feed['f_name']}: {$feed['f_uri']}\n"); + db_query_n("DELETE FROM packages WHERE p_feed = '{$feed['f_name']}'"); + + $count = 0; + + $packagesgz_h = fopen("compress.zlib://{$feed['f_uri']}/Packages.gz", "r"); + + if ($packagesgz_h) + { + $package_info = array( + 'name'=>'', 'version'=>'', 'arch'=>'', 'depends'=>'', + 'maintainer'=>'', 'homepage'=>'', 'section'=>'', 'replaces'=>'', + 'provides'=>'', 'recommends'=>'', 'conflicts'=>'', 'size'=>'', + 'md5sum'=>'', 'source'=>'', 'feed'=>'', 'file'=>'', 'desc'=>'' + ); + + while (!feof($packagesgz_h)) + { + $buffer = fscanf($packagesgz_h, "%[^:]: %[ -~]"); + list ($field, $value) = $buffer; + + if($field == 'Package' && $count > 0) + { + insert_ipkgs($package_info); + + $package_info = array( + 'name'=>'', 'version'=>'', 'arch'=>'', 'depends'=>'', + 'maintainer'=>'', 'homepage'=>'', 'section'=>'', 'replaces'=>'', + 'provides'=>'', 'recommends'=>'', 'conflicts'=>'', 'size'=>'', + 'md5sum'=>'', 'source'=>'', 'feed'=>'', 'file'=>'', 'desc'=>'' + ); + } + + switch($field) + { + case 'Package': + $package_info['name'] = $value; + $count++; + break; + case 'Version': + $package_info['version'] = $value; + break; + case 'Depends': + $package_info['depends'] = $value; + break; + case 'Provides': + $package_info['provides'] = $value; + break; + case 'Recommends': + $package_info['recommends'] = $value; + break; + case 'Replaces': + $package_info['replaces'] = $value; + break; + case 'Conflicts': + $package_info['conflicts'] = $value; + break; + case 'Section': + $package_info['section'] = $value; + break; + case 'Architecture': + $package_info['arch'] = $value; + break; + case 'Maintainer': + $package_info['maintainer'] = str_replace("'","\"", $value); + break; + case 'MD5sum': + $package_info['md5sum'] = $value; + break; + case 'Size': + $package_info['size'] = $value; + break; + case 'Filename': + $package_info['file'] = $value; + break; + case 'Source': + $package_info['source'] = $value; + break; + case 'Description': + $package_info['desc'] = str_replace("'","\"", $value); + break; + } - print("Updating $feed[f_name]: $feed[f_uri]\n"); - db_query_n("DELETE FROM packages WHERE p_feed = '$feed[f_name]'"); - - $count = 0; - - $packagesgz_h = fopen("compress.zlib://$feed[f_uri]/Packages.gz", "r"); - if ($packagesgz_h) { - while (!feof($packagesgz_h)) { - $buffer = fscanf($packagesgz_h, "%[^:]: %[ -~]"); - list ($field, $value) = $buffer; - - - if($field == 'Package' && $count > 0) - { - insert_ipkgs ($package, $version, $depends, $section, $arch, $maintainer, $md5sum, $size, $file, $source, $desc,$feed[f_name], $conflicts, $provides, $replaces, $recommends); - unset($package, $version, $depends, $section, $arch, $maintainer, $md5sum, $size, $file, $source, $desc, $conflicts, $provides, $replaces, $recommends); - } - - - switch($field) - { - case 'Package': - $package = $value; - $count++; - break; - case 'Version': - $version = $value; - break; - case 'Depends': - $depends = $value; - break; - case 'Provides': - $provides = $value; - break; - case 'Recommends': - $recommends = $value; - break; - case 'Replaces': - $replaces = $value; - break; - case 'Conflicts': - $conflicts = $value; - break; - case 'Section': - $section = $value; - break; - case 'Architecture': - $arch = $value; - break; - case 'Maintainer': - $maintainer = str_replace("'","\"", $value); - break; - case 'MD5sum': - $md5sum = $value; - break; - case 'Size': - $size = $value; - break; - case 'Filename': - $file = $value; - break; - case 'Source': - $source = $value; - break; - case 'Description': - $desc = str_replace("'","\"", $value); - break; - } - - } - insert_ipkgs ($package, $version, $depends, $section, $arch, $maintainer, $md5sum, $size, $file, $source, $desc,$feed[f_name], $conflicts, $provides, $replaces, $recommends); } -$p_count = $count + $p_count; -gzclose($packagesgz_h); + insert_ipkgs($package_info); + } + + $p_count = $count + $p_count; + gzclose($packagesgz_h); } //close the db @@ -141,41 +156,48 @@ $seconds = $difference; print "Added $p_count packages in $days days, $hours hours, $minutes minutes and $seconds seconds \n"; -function insert_ipkgs ($package, $version, $depends, $section, $arch, $maintainer, $md5sum, $size, $file, $source, $desc, $feed, $conflicts, $provides, $replaces, $recommends) +function insert_ipkgs(&$package_info) { - db_query_n( - "INSERT INTO packages (p_name, p_version, p_depends, p_arch, p_maintainer, p_section, p_size, p_md5, p_source, p_desc, p_feed, p_file, p_conflicts, p_provides, p_replaces, p_recommends) - VALUES ('$package', '$version', '$depends', '$arch', '$maintainer', '$section', '$size', '$md5sum', '$source', '$desc', '$feed', '$file', '$conflicts', '$provides', '$replaces', '$recommends') - "); + db_query_n("INSERT INTO packages VALUES ( + '{$package_info['name']}', '{$package_info['version']}', + '{$package_info['arch']}', '{$package_info['depends']}', + '{$package_info['maintainer']}', '{$package_info['homepage']}', + '{$package_info['section']}', '{$package_info['replaces']}', + '{$package_info['provides']}', '{$package_info['recommends']}', + '{$package_info['conflicts']}', '{$package_info['size']}', + '{$package_info['md5sum']}', '{$package_info['source']}', + '{$package_info['feed']}', '{$package_info['file']}', + '{$package_info['desc']}' + )"); } function db_query($query) { - $result = FALSE; + $result = FALSE; - if($db_h = sqlite_open(DB_FILENAME)) - { - $query_h = sqlite_query ($db_h, $query); - $result = sqlite_fetch_all ($query_h, SQLITE_ASSOC); - sqlite_close($db_h); - } + if($db_h = sqlite_open(DB_FILENAME)) + { + $query_h = sqlite_query ($db_h, $query); + $result = sqlite_fetch_all ($query_h, SQLITE_ASSOC); + sqlite_close($db_h); + } - return $result; + return $result; } function db_query_n($query) { - $result = FALSE; + $result = FALSE; - if($db_h = sqlite_open(DB_FILENAME)) - { - $query_h = sqlite_query ($db_h, $query); - sqlite_close($db_h); - } + if($db_h = sqlite_open(DB_FILENAME)) + { + $query_h = sqlite_query ($db_h, $query); + sqlite_close($db_h); + } - return $result; + return $result; } |