[aur-dev] [PATCH] Added license search
Signed-off-by: Alexander Rødseth <rodseth@gmail.com> --- web/lib/pkgfuncs.inc.php | 49 ++++++++++++++++++++++++++++++++++++++ web/template/pkg_search_form.php | 21 ++++++++++++++++ 2 files changed, 70 insertions(+), 0 deletions(-) diff --git a/web/lib/pkgfuncs.inc.php b/web/lib/pkgfuncs.inc.php index 3e89fa3..9a2074e 100644 --- a/web/lib/pkgfuncs.inc.php +++ b/web/lib/pkgfuncs.inc.php @@ -92,6 +92,40 @@ function pkgCategories($dbh=NULL) { return $cats; } +# grab the current list of distinct licenses +# +# "fromdb" is boolean and decides if the list of licenses +# should be fetched from the available licenses in the database +# or from a predefined list. Set to true or false here to make +# either one the default. Set to false if the database load is too high. +# +function package_licenses($dbh=NULL, $fromdb=true) { + $lics = array(); + if ($fromdb != false) { + if(!$dbh) { + $dbh = db_connect(); + } + $q = "SELECT DISTINCT License FROM Packages WHERE License != '' "; + $q.= "ORDER BY License ASC"; + $result = db_query($q, $dbh); + if ($result) { + while ($row = mysql_fetch_row($result)) { + $lics[] = $row[0]; + } + } + } else { + // All possible licenses from + // https://wiki.archlinux.org/index.php/PKGBUILD#license + $lics = array("AGPL", "AGPL3", "APACHE", "Apache", "Artistic2.0", + "BSD", "CCPL", "CDDL", "CPL", "custom", "EPL", "FDL", + "FDL1.2", "FDL1.3", "GPL", "GPL2", "GPL3", "LGPL", + "LGPL2.1", "LGPL3", "LPPL", "MIT", "MPL", "PHP", "PSF", + "PerlArtistic", "Python", "RUBY", "ZLIB", "ZPL"); + // sort($lics); + } + return $lics; +} + # check to see if the package name exists # function pkgid_from_name($name="", $dbh=NULL) { @@ -370,6 +404,9 @@ function package_details($id=0, $SID="", $dbh=NULL) { * s - package submitter's username * do_Orphans - boolean. whether to search packages * without a maintainer + * outdated - if the package is flagged: "on" or "off" + * license - the license ID, where 0 is "Any" + * license ID may change at any time * * * These two are actually handled in packages.php. @@ -396,6 +433,8 @@ function pkg_search_page($SID="", $dbh=NULL) { $myuid = uid_from_sid($SID, $dbh); // get a list of package categories $cats = pkgCategories($dbh); //meow + // get a list of licenses + $lics = package_licenses($dbh); // :-a // sanitize paging variables // @@ -494,6 +533,16 @@ function pkg_search_page($SID="", $dbh=NULL) { $q_where .= "AND OutOfDateTS IS NULL "; } } + + if (isset($_GET['license'])) { + // List ID ($lid) starts with 0 for "Any" and then enumerates the + // licenses from 1, which explains the "-1" below + $lid = intval($_GET["license"]); + if ($lid != 0) { + // Make the query select on licenses too + $q_where .= "AND Packages.License = '".$lics[$lid-1]."' "; + } + } $order = (isset($_GET["SO"]) && $_GET["SO"] == 'd') ? 'DESC' : 'ASC'; diff --git a/web/template/pkg_search_form.php b/web/template/pkg_search_form.php index 53d34fe..8c82859 100644 --- a/web/template/pkg_search_form.php +++ b/web/template/pkg_search_form.php @@ -119,6 +119,27 @@ ?> </select> </li> + <li> + <label><?php print __("License"); ?></label> + <select name='license'> + <option value='0'><?php print __("Any"); ?></option> + <?php + $lics = package_licenses(); + for($id = 0; $id < sizeof($lics); ++$id): + $lic = $lics[$id]; + // "Any" occupies slot 0 + $lid = $id+1; + if (isset($_REQUEST['license']) && $_REQUEST['license'] == $lid): + ?> + <option value="<?php print $lid ?>" selected="selected"><?php print $lic; ?></option> + <?php else: ?> + <option value="<?php print $lid ?>"><?php print $lic; ?></option> + <?php + endif; + endfor; + ?> + </select> + </li> </ul> </div> <?php endif; ?> -- 1.7.7
On Fri, Oct 21, 2011 at 03:38:02PM +0200, Alexander Rødseth wrote:
Signed-off-by: Alexander Rødseth <rodseth@gmail.com> --- web/lib/pkgfuncs.inc.php | 49 ++++++++++++++++++++++++++++++++++++++ web/template/pkg_search_form.php | 21 ++++++++++++++++ 2 files changed, 70 insertions(+), 0 deletions(-)
I'm not sure about the rationale behind this one. Is there any use case for this? Any other opinions?
diff --git a/web/lib/pkgfuncs.inc.php b/web/lib/pkgfuncs.inc.php index 3e89fa3..9a2074e 100644 --- a/web/lib/pkgfuncs.inc.php +++ b/web/lib/pkgfuncs.inc.php @@ -92,6 +92,40 @@ function pkgCategories($dbh=NULL) { return $cats; }
+# grab the current list of distinct licenses +# +# "fromdb" is boolean and decides if the list of licenses +# should be fetched from the available licenses in the database +# or from a predefined list. Set to true or false here to make +# either one the default. Set to false if the database load is too high. +# +function package_licenses($dbh=NULL, $fromdb=true) { + $lics = array(); + if ($fromdb != false) {
Indentation.. :)
+ if(!$dbh) { + $dbh = db_connect(); + } + $q = "SELECT DISTINCT License FROM Packages WHERE License != '' "; + $q.= "ORDER BY License ASC"; + $result = db_query($q, $dbh); + if ($result) { + while ($row = mysql_fetch_row($result)) { + $lics[] = $row[0]; + } + } + } else { + // All possible licenses from + // https://wiki.archlinux.org/index.php/PKGBUILD#license + $lics = array("AGPL", "AGPL3", "APACHE", "Apache", "Artistic2.0", + "BSD", "CCPL", "CDDL", "CPL", "custom", "EPL", "FDL", + "FDL1.2", "FDL1.3", "GPL", "GPL2", "GPL3", "LGPL", + "LGPL2.1", "LGPL3", "LPPL", "MIT", "MPL", "PHP", "PSF", + "PerlArtistic", "Python", "RUBY", "ZLIB", "ZPL"); + // sort($lics);
I don't think we really need that choice here... Either fetch licenses from the database or hardcode them.
+ } + return $lics; +} + # check to see if the package name exists # function pkgid_from_name($name="", $dbh=NULL) { @@ -370,6 +404,9 @@ function package_details($id=0, $SID="", $dbh=NULL) { * s - package submitter's username * do_Orphans - boolean. whether to search packages * without a maintainer + * outdated - if the package is flagged: "on" or "off" + * license - the license ID, where 0 is "Any" + * license ID may change at any time * * * These two are actually handled in packages.php. @@ -396,6 +433,8 @@ function pkg_search_page($SID="", $dbh=NULL) { $myuid = uid_from_sid($SID, $dbh); // get a list of package categories $cats = pkgCategories($dbh); //meow + // get a list of licenses + $lics = package_licenses($dbh); // :-a
// sanitize paging variables // @@ -494,6 +533,16 @@ function pkg_search_page($SID="", $dbh=NULL) { $q_where .= "AND OutOfDateTS IS NULL "; } } + + if (isset($_GET['license'])) { + // List ID ($lid) starts with 0 for "Any" and then enumerates the + // licenses from 1, which explains the "-1" below + $lid = intval($_GET["license"]); + if ($lid != 0) { + // Make the query select on licenses too + $q_where .= "AND Packages.License = '".$lics[$lid-1]."' "; + } + }
$order = (isset($_GET["SO"]) && $_GET["SO"] == 'd') ? 'DESC' : 'ASC';
diff --git a/web/template/pkg_search_form.php b/web/template/pkg_search_form.php index 53d34fe..8c82859 100644 --- a/web/template/pkg_search_form.php +++ b/web/template/pkg_search_form.php @@ -119,6 +119,27 @@ ?> </select> </li> + <li> + <label><?php print __("License"); ?></label> + <select name='license'> + <option value='0'><?php print __("Any"); ?></option> + <?php + $lics = package_licenses(); + for($id = 0; $id < sizeof($lics); ++$id): + $lic = $lics[$id];
We usually use foreach loops to iterate over arrays :)
+ // "Any" occupies slot 0 + $lid = $id+1; + if (isset($_REQUEST['license']) && $_REQUEST['license'] == $lid): + ?> + <option value="<?php print $lid ?>" selected="selected"><?php print $lic; ?></option>
Please use htmlspecialchars() to escape the license description here. Printing the description shouldn't cause any issues yet but it's cleaner to do it right in the first place...
+ <?php else: ?> + <option value="<?php print $lid ?>"><?php print $lic; ?></option> + <?php + endif; + endfor; + ?> + </select> + </li> </ul> </div> <?php endif; ?> -- 1.7.7
participants (2)
-
Alexander Rødseth
-
Lukas Fleischer