\n"); sqlite_query ($db, "CREATE TABLE packages ( p_name varchar(50), p_version varchar(10), p_arch varchar(12), p_depends varchar(50), p_maintainer varchar(50), p_homepage varchar(100), p_section varchar(20), p_replaces varchar(50), p_provides varchar(50), p_conflicts varchar(50), p_size int(10), p_md5 char(32), p_source varchar(500), p_feed varchar(20), p_file varchar(100), p_desc varchar(1000) )"); } if (db_table_exists ($db, 'feeds') == "FALSE") { print("creating feeds table
\n"); sqlite_query ($db, "CREATE TABLE feeds ( f_name varchar(20), f_uri varchar(100), f_comments varchar(500) )"); test_insert_ipkgs ($db) ; } //close the db sqlite_close($db); $action = ''; if(isset($_GET['action'])) { $action = $_GET['action']; } switch($action) { case "details": $ipkgoutput = pkgdetails ($_GET['pnm']); break; case "package": $edit = $_POST['edit']; $searchword = $edit['searchword']; $ipkgoutput = searchpkg ("%$searchword%"); break; case "section": $ipkgoutput = searchsection($_GET['section']); break; case "letter": $letter = $_GET['g']; $ipkgoutput = searchletter ($letter); break; default: $ipkgoutput = searchletter ("a"); break; } print $ipkgoutput; print("
\n"); function db_table_exists ($db, $mytable) { if($query = sqlite_query ($db, "SELECT name FROM sqlite_master WHERE type='table'")) { $tables = sqlite_fetch_all ($query, SQLITE_ASSOC); if (!$tables) { return ("FALSE"); } else { foreach ($tables as $table) { if ($table['name'] == $mytable) { return ("TRUE"); } } } } // function which is expected to return something need to return something always return ("FALSE"); } function get_archs_fromdb() { return db_query("SELECT DISTINCT p_arch FROM packagess ORDER BY p_arch"); } function db_query($query) { $result = FALSE; $db_name = "/home/hrw/public_html/repo/feeds.db"; if($db_h = sqlite_open($db_name)) { if($query_h = sqlite_query ($db_h, $query)) { $result = sqlite_fetch_all ($query_h, SQLITE_ASSOC); } sqlite_close($db_h); } return ($result); } function test_insert_ipkgs ($db) { sqlite_query($db, "INSERT INTO feeds (f_name, f_uri) VALUES ('unstable-base', 'http://www.angstrom-distribution.org/unstable/feed/base/') "); sqlite_query($db, "INSERT INTO feeds (f_name, f_uri) VALUES ('unstable-perl', 'http://www.angstrom-distribution.org/unstable/feed/perl/') "); sqlite_query($db, "INSERT INTO feeds (f_name, f_uri) VALUES ('unstable-python', 'http://www.angstrom-distribution.org/unstable/feed/python/') "); sqlite_query($db, "INSERT INTO feeds (f_name, f_uri) VALUES ('unstable-debug', 'http://www.angstrom-distribution.org/unstable/feed/debug/') "); sqlite_query($db, "INSERT INTO feeds (f_name, f_uri) VALUES ('unstable-gstreamer', 'http://www.angstrom-distribution.org/unstable/feed/gstreamer/') "); if ($handle = opendir('/var/www/angstrom/unstable/feed/machine/')) { while (false !== ($file = readdir($handle))) { if($file != ".." && $file != ".") { sqlite_query($db, "INSERT INTO feeds (f_name, f_uri) VALUES ('unstable-machine-$file', 'http://www.angstrom-distribution.org/unstable/feed/machine/$file/') "); } } closedir($handle); } } function searchletter($searchletter) { $ipkgoutput = "
"; $alfabet = array('a','b','c','d','e','f','g','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y'); foreach($alfabet as $letter) { if($letter == $searchletter) { $ipkgoutput .= sprintf(" %s |", $letter ); } else { $ipkgoutput .= sprintf(" %s |", $letter, $letter ); } } $ipkgoutput .= " z
\n"; if(isset($searchletter)) { $ipkgoutput .= searchpkg("$searchletter%"); } return $ipkgoutput; } function searchpkg ($searchword) { $result = db_query("SELECT DISTINCT p_name,p_desc,p_section FROM packages WHERE p_name LIKE '$searchword' ORDER BY p_name ASC;"); $ipkgoutput = "

\n"; $ipkgoutput .="\n"; foreach($result as $package) { if (!strstr ($package['p_name'], 'locale')) { if(strlen($package['p_desc'])> 40) $package['p_desc'] = substr($package['p_desc'], 0, 40) . '...'; $ipkgoutput .= sprintf ("\n", urlencode($package['p_name']), $package['p_name'], $package['p_section'], $package['p_section'], $package['p_desc']); } } $ipkgoutput .= '
Package  Section  Description
%s  %s  %s
'; return $ipkgoutput; } function searchsection($section) { $result= db_query("SELECT DISTINCT p_name,p_desc,p_section FROM packages WHERE p_section like '$section%' order by p_section asc, p_name asc;"); $ipkgoutput = "

\n"; $ipkgoutput .= ""; foreach($result as $package) { if (!strstr ($package['p_name'], 'locale')) { if(strlen($package['p_desc'])> 40) { $package['p_desc'] = substr($package['p_desc'],0,40)."..."; } $ipkgoutput .= sprintf ("", urlencode($package['p_name']), $package['p_name'], $package['p_section'], $package['p_section'], $package['p_desc']); }//if strstr } $ipkgoutput .= "
Package  Section  Description
%s %s  %s
\n"; return $ipkgoutput; } function pkgdetails ($package) { $details = ""; $result = db_query("SELECT * FROM packages,feeds WHERE packages.p_name='$package' AND feeds.f_name = packages.p_feed"); // display first result if ($result[0]['packages.p_file'] != '') { $package = $result[0]; $details .= sprintf("

Package details for %s %s

\n", $package['packages.p_name'], $package['packages.p_version']); $details .= sprintf ("

\n

\n
%s
", $package['packages.p_desc']); $details .= "

\n

\n\n"; $maintainer = $package['packages.p_maintainer']; if (strpos ($maintainer, '@') !== false) { $emailstart = strpos ($maintainer, '<'); $emailend = strrpos ($maintainer, '>'); if (!(($emailstart == false) or ($emailend == false))) { $email = substr ($maintainer, $emailstart + 1, $emailend - $emailstart - 1); $email = ereg_replace ('@', ' () ', $email); $maintainer = substr ($maintainer, 0, $emailstart + 1).$email. substr ($maintainer, $emailend, count ($maintainer)); $maintainer = str_replace ('<', '<', $maintainer); $maintainer = str_replace ('\>', '>', $maintainer); } } $details .= sprintf ("\n", $maintainer); $details .= sprintf ("\n",$package['packages.p_homepage']); $details .= sprintf ("\n", $package['packages.p_section'],$package['packages.p_section']); $details .= sprintf ("\n", addlinks ($package['packages.p_depends'])); $details .= sprintf ("\n", addlinks ($package['packages.p_replaces'])); $details .= sprintf ("\n", addlinks ($package['packages.p_provides'])); $details .= sprintf ("\n", addlinks ($package['packages.p_conflicts'])); $size = $package['packages.p_size']; if(strlen($size) > 6) { $size = sprintf("%02.2f Megabytes", $size / (1024 * 1024)); } if(strlen($size) > 3 && strlen($size) < 7) { $size = sprintf("%02.2f Kilobytes", $size / (1024 )); } if(strlen($size) < 4) { $size = sprintf("%s Bytes", $size); } $details .= sprintf ("\n
Maintainer: %s
Homepage: %s
Section:%s
Depends:%s
Replaces:%s
Provides:%s
Conflicts:%s
Size:%s
", $size); $sourcearray = explode (" ", $package['packages.p_source']); $details .= "\n

Source:

\n

Available versions and architectures:

\n"; } else { $details = "

Sorry, package not found\n

return\n"; } return $details; } function addlinks ($input) { // split input elements up $elements = preg_split ('/[\s,]+/', $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; } // do we have this package in the db? $result = db_query ("SELECT DISTINCT p_name FROM packages WHERE p_name='{$element}'"); if($result[0]['p_name']) { // find position of string in line $pos = strpos ($input, $element, $offset); $link = sprintf("$element", urlencode ($element)); // replace element with a link $input = substr_replace ($input, $link, $pos, strlen ($element)); // update offset $offset = ($pos + strlen ($link)); } else { $offset += strlen ($element); } } return $input; } // add_links ?>