All pastes #123788 Raw Edit

Mine

public php v1 · immutable
·published 2006-08-09 16:02 UTC
rendered paste body
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>The Angstrom Distribution | Embedded power</title><meta http-equiv="Content-Style-Type" content="text/css" /><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><style type="text/css" media="all">@import "/misc/drupal.css";</style><link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://www.angstrom-distribution.org/blogapi/rsd" /><style type="text/css" media="all">@import "/themes/connections/style.css";</style><link rel="stylesheet" type="text/css" href="foo.css"/><body ><div id="page"><?php// (c) Koen Kooi 2006// (c) Marcin Juszkiewicz 2006/* This php script is intended to do the following: * o have searchable webfronted for the feed like packages.ubuntu.com * o provide feed-management functionality * o allow uploading of new software */error_reporting(E_ALL);$db_name = "/home/hrw/public_html/repo/feeds.db";$db = sqlite_open($db_name);//initialiaze dbif (db_table_exists ($db, 'packages') == "FALSE"){      print("creating packages table<br>\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<br>\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 dbsqlite_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("</div></body></html>\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 = "<center>";    $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(" <a href='?action=letter&g=%s'>%s</a> |", $letter, $letter );        }    }        $ipkgoutput .= " <a href='?action=letter&g=z'>z</a></center>\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 = "<p><p><table border=0>\n";    $ipkgoutput .="<tr><td><b>Package</b></td><td><b>&nbsp Section</b></td><td><b>&nbsp Description</b></td>\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                ("<tr><td valign='top'><a href='?action=details&pnm=%s'>%s</a></td><td valign='top'>&nbsp <a href=\"?action=section&section=%s\">%s</a></td><td>&nbsp %s</td>\n",                 urlencode($package['p_name']), $package['p_name'], $package['p_section'], $package['p_section'], $package['p_desc']);        }    }    $ipkgoutput .= '</table>';    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 = "<p><p><table border=0>\n";    $ipkgoutput .= "<tr><td><b>Package</b></td><td><b>&nbsp Section</b></td><td><b>&nbsp Description</b></td>";    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 ("<tr><td valign='top'><a href='?action=details&pnm=%s'>%s</a></td><td valign='top'>&nbsp<a href=\"?action=section&section=%s\">%s</a></td><td>&nbsp %s</td>",                    urlencode($package['p_name']),                    $package['p_name'],                    $package['p_section'], $package['p_section'],                    $package['p_desc']);        }//if strstr    }    $ipkgoutput .= "</table>\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("<p><h2>Package details for %s %s</h2>\n",                $package['packages.p_name'],                $package['packages.p_version']);        $details .= sprintf ("<p>\n<p>\n<table><td>%s</td></table>", $package['packages.p_desc']);        $details .= "<p>\n<p>\n<table border=0>\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 ('<', '&lt;', $maintainer);                $maintainer = str_replace ('\>', '&gt;', $maintainer);            }        }        $details .= sprintf ("\n<tr><td><b>Maintainer: </b></td><td>%s</td>", $maintainer);        $details .= sprintf ("\n<tr><td><b>Homepage: </b></td><td>%s</td>",$package['packages.p_homepage']);        $details .= sprintf ("\n<tr><td><b>Section:</b></td><td><a href='?action=section&section=%s'>%s</td>", $package['packages.p_section'],$package['packages.p_section']);        $details .= sprintf ("\n<tr><td valign='top'><b>Depends:</b></td><td>%s</td>", addlinks ($package['packages.p_depends']));        $details .= sprintf ("\n<tr><td><b>Replaces:</b></td><td>%s</td>", addlinks ($package['packages.p_replaces']));        $details .= sprintf ("\n<tr><td><b>Provides:</b></td><td>%s</td>", addlinks ($package['packages.p_provides']));        $details .= sprintf ("\n<tr><td><b>Conflicts:</b></td><td>%s</td>", 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<tr><td><b>Size:</b></td><td>%s</td></tr></table>", $size);        $sourcearray = explode (" ", $package['packages.p_source']);                $details .= "\n<p><b>Source:</b></p><ul>";        foreach ($sourcearray as $key => $source_url)        {            if (substr ($source_url, 0, 4) == "http" || substr ($source_url, 0, 3) == "ftp")            {                $url_parts = parse_url($source_url);                $details .= sprintf ("<li><a href='%s'>%s</a></li>", $source_url, array_pop(explode('/', $url_parts['path'])));            }            else            {                $details .= sprintf ("<li>%s</li>", $source_url);            }        }                $details .= "</ul>\n<p><b>Available versions and architectures:</b></p><ul>\n";        foreach($result as $packages_a)        {            $details .= sprintf("\n<li><a href='%s'>%s %s</a> for %s</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']);        }        $details .= "</ul>\n";    }    else    {        $details = "<h3>Sorry, package not found\n</h3><a href='/repo/repo.php'>return</a>\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("<a href=\"?action=details&pnm=%s\">$element</a>", 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?>