From 6cd8d8fa7a0e88cbf52e0ea4901ad9b4b4686cce Mon Sep 17 00:00:00 2001 From: Marcin Juszkiewicz Date: Fri, 25 Aug 2006 09:47:49 +0000 Subject: feed-browser: moved functions to include/functions.inc, updater check/create database now --- contrib/feed-browser/includes/.mtn2git_empty | 0 contrib/feed-browser/includes/functions.inc | 504 +++++++++++++++++++++++++++ contrib/feed-browser/index.php | 474 +------------------------ contrib/feed-browser/update.php | 36 +- 4 files changed, 507 insertions(+), 507 deletions(-) create mode 100644 contrib/feed-browser/includes/.mtn2git_empty create mode 100644 contrib/feed-browser/includes/functions.inc diff --git a/contrib/feed-browser/includes/.mtn2git_empty b/contrib/feed-browser/includes/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 diff --git a/contrib/feed-browser/includes/functions.inc b/contrib/feed-browser/includes/functions.inc new file mode 100644 index 0000000000..d18b129650 --- /dev/null +++ b/contrib/feed-browser/includes/functions.inc @@ -0,0 +1,504 @@ +"; + $alfabet = array('a','b','c','d','e','f','g','h','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, $letter ); + } + } + + $ipkgoutput .= " z"; + + return $ipkgoutput; +} + +function searchpkg ($searchword) +{ + if($result = db_query("SELECT DISTINCT p_name,p_desc,p_section FROM packages WHERE p_name LIKE '$searchword' ORDER BY p_name ASC")) + { + return generate_list_of_packages($result); + } +} + +function generate_list_of_packages($query_result) +{ + $ipkgoutput = "\n"; + $ipkgoutput .="\n"; + + foreach($query_result as $package) + { + if (!strstr ($package['p_name'], 'locale')) + { + if(strlen($package['p_desc']) > 40) + { + $pos = strpos($package['p_desc'],' ', 40); + + if($pos) + { + $package['p_desc'] = substr($package['p_desc'], 0, $pos) . '...'; + } + } + + $ipkgoutput .= sprintf + ("\n", + urlencode($package['p_name']), $package['p_name'], $package['p_section'], $package['p_section'], htmlentities($package['p_desc'])); + } + + } + + $ipkgoutput .= '
PackageSectionDescription
%s%s %s
'; + + return $ipkgoutput; +} + +function searchsection($section) +{ + if($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")) + { + return generate_list_of_packages($result); + } +} + +function pkgdetails ($package) +{ + $result = db_query("SELECT * FROM packages,feeds + 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 + + if ($result) + { + $package = $result[0]; + + $details = sprintf("

Package details for %s %s

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

%s

", htmlentities($package['packages.p_desc'])); + $details .= "
"; + + $details .= sprintf ("\n
Maintainer:
%s
", str_replace(array('@',', '), array(' at ', '
'), htmlentities($package['packages.p_maintainer']))); + + if($package['packages.p_homepage']) + { + $details .= sprintf ("\n
Homepage:
%s
", $package['packages.p_homepage']); + } + + if($package['packages.p_section']) + { + $details .= sprintf ("\n
Section:
%s
", $package['packages.p_section'],$package['packages.p_section']); + } + + if($package['packages.p_depends']) + { + $details .= sprintf ("\n
Depends:
%s
", addlinks ($package['packages.p_depends'])); + } + + if($package['packages.p_recommends']) + { + $details .= sprintf ("\n
Recommends:
%s
", addlinks ($package['packages.p_recommends'])); + } + + if($package['packages.p_replaces']) + { + $details .= sprintf ("\n
Replaces:
%s
", addlinks ($package['packages.p_replaces'])); + } + + if($package['packages.p_provides']) + { + $details .= sprintf ("\n
Provides:
%s
", addlinks ($package['packages.p_provides'])); + } + + if($package['packages.p_conflicts']) + { + $details .= sprintf ("\n
Conflicts:
%s
", 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
Size:
%s
", $size); + + if($package['packages.p_source']) + { + $sourcearray = explode (" ", $package['packages.p_source']); + + $details .= "\n

Source:

'; + + } + + $details .= "\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 = explode (', ', $input); + + $offset = 0; + + foreach ($elements as $element) + { + // 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}' OR p_provides='{$element}'"); + + if(isset($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; +} + +function sectionslist() +{ + $ipkgoutput = ''; + + if($result = db_query ("SELECT DISTINCT p_section FROM packages ORDER BY p_section")) + { + $ipkgoutput = "'; + } + + $ipkgoutput .= "\n"; + } + + return $ipkgoutput; +} + +function check_database() +{ + if($db = sqlite_open(DB_FILENAME)) + { + //initialize db + if (db_table_exists ($db, 'packages') === FALSE) + { + 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_recommends 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) + { + sqlite_query ($db, "CREATE TABLE feeds ( + f_name varchar(20), + f_uri varchar(100), + f_comments varchar(500))"); + + test_insert_ipkgs ($db) ; + } + + sqlite_close($db); + } +} + + + +?> diff --git a/contrib/feed-browser/index.php b/contrib/feed-browser/index.php index 3b1230ce22..b3fb41bcd8 100644 --- a/contrib/feed-browser/index.php +++ b/contrib/feed-browser/index.php @@ -30,9 +30,7 @@ * */ -error_reporting(E_ALL); - -define('DB_FILENAME', './feeds.db'); +require_once 'includes/functions.inc'; check_database(); @@ -69,7 +67,6 @@ switch($action) break; } - ?> @@ -87,472 +84,3 @@ switch($action) -"; - $alfabet = array('a','b','c','d','e','f','g','h','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, $letter ); - } - } - - $ipkgoutput .= " z"; - - return $ipkgoutput; -} - -function searchpkg ($searchword) -{ - if($result = db_query("SELECT DISTINCT p_name,p_desc,p_section FROM packages WHERE p_name LIKE '$searchword' ORDER BY p_name ASC")) - { - return generate_list_of_packages($result); - } -} - -function generate_list_of_packages($query_result) -{ - $ipkgoutput = "\n"; - $ipkgoutput .="\n"; - - foreach($query_result as $package) - { - if (!strstr ($package['p_name'], 'locale')) - { - if(strlen($package['p_desc']) > 40) - { - $pos = strpos($package['p_desc'],' ', 40); - - if($pos) - { - $package['p_desc'] = substr($package['p_desc'], 0, $pos) . '...'; - } - } - - $ipkgoutput .= sprintf - ("\n", - urlencode($package['p_name']), $package['p_name'], $package['p_section'], $package['p_section'], htmlentities($package['p_desc'])); - } - - } - - $ipkgoutput .= '
PackageSectionDescription
%s%s %s
'; - - return $ipkgoutput; -} - -function searchsection($section) -{ - if($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")) - { - return generate_list_of_packages($result); - } -} - -function pkgdetails ($package) -{ - $result = db_query("SELECT * FROM packages,feeds - 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 - - if ($result) - { - $package = $result[0]; - - $details = sprintf("

Package details for %s %s

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

%s

", htmlentities($package['packages.p_desc'])); - $details .= "
"; - - $details .= sprintf ("\n
Maintainer:
%s
", str_replace(array('@',', '), array(' at ', '
'), htmlentities($package['packages.p_maintainer']))); - - if($package['packages.p_homepage']) - { - $details .= sprintf ("\n
Homepage:
%s
", $package['packages.p_homepage']); - } - - if($package['packages.p_section']) - { - $details .= sprintf ("\n
Section:
%s
", $package['packages.p_section'],$package['packages.p_section']); - } - - if($package['packages.p_depends']) - { - $details .= sprintf ("\n
Depends:
%s
", addlinks ($package['packages.p_depends'])); - } - - if($package['packages.p_recommends']) - { - $details .= sprintf ("\n
Recommends:
%s
", addlinks ($package['packages.p_recommends'])); - } - - if($package['packages.p_replaces']) - { - $details .= sprintf ("\n
Replaces:
%s
", addlinks ($package['packages.p_replaces'])); - } - - if($package['packages.p_provides']) - { - $details .= sprintf ("\n
Provides:
%s
", addlinks ($package['packages.p_provides'])); - } - - if($package['packages.p_conflicts']) - { - $details .= sprintf ("\n
Conflicts:
%s
", 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
Size:
%s
", $size); - - if($package['packages.p_source']) - { - $sourcearray = explode (" ", $package['packages.p_source']); - - $details .= "\n

Source:

'; - - } - - $details .= "\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 = explode (', ', $input); - - $offset = 0; - - foreach ($elements as $element) - { - // 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}' OR p_provides='{$element}'"); - - if(isset($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; -} - -function sectionslist() -{ - $ipkgoutput = ''; - - if($result = db_query ("SELECT DISTINCT p_section FROM packages ORDER BY p_section")) - { - $ipkgoutput = "'; - } - - $ipkgoutput .= "\n"; - } - - return $ipkgoutput; -} - -function check_database() -{ - if($db = sqlite_open(DB_FILENAME)) - { - //initialize db - if (db_table_exists ($db, 'packages') === FALSE) - { - 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_recommends 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) - { - sqlite_query ($db, "CREATE TABLE feeds ( - f_name varchar(20), - f_uri varchar(100), - f_comments varchar(500))"); - - test_insert_ipkgs ($db) ; - } - - sqlite_close($db); - } -} - -?> diff --git a/contrib/feed-browser/update.php b/contrib/feed-browser/update.php index 2e12a0481c..ed7d6e47ef 100644 --- a/contrib/feed-browser/update.php +++ b/contrib/feed-browser/update.php @@ -16,6 +16,7 @@ * */ +require_once 'includes/functions.inc'; /* A package entry looks like this: @@ -35,13 +36,11 @@ Description: IPv4 link-local address allocator */ -error_reporting(E_ALL); +check_database(); $start = time(); $p_count = 0; -define('DB_FILENAME', './feeds.db'); - $feeds = db_query("SELECT f_name, f_uri FROM feeds"); foreach($feeds as $feed) @@ -172,35 +171,4 @@ function insert_ipkgs(&$package_info) )"); } - -function db_query($query) -{ - $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); - } - - return $result; -} - - -function db_query_n($query) -{ - $result = FALSE; - - if($db_h = sqlite_open(DB_FILENAME)) - { - $query_h = sqlite_query ($db_h, $query); - sqlite_close($db_h); - } - - return $result; -} - - - ?> -- cgit v1.2.3