array( "title" => "architecture", "label" => "Arch", "mysql" => "`architectures`.`name`" ), "groupname" => array( "title" => "group name", "label" => "Group Name", "mysql" => "`install_targets`.`name`" ), "count" => array( "title" => "package count", "label" => "Package Count", "mysql" => "`count`" ), "last_moved" => array( "title" => "last update", "label" => "Last Updated", "mysql" => "`last_moved`" ) ); $pkglist_sorts = array( "arch" => array( "title" => "architecture", "label" => "Arch", "mysql" => "`architectures`.`name`" ), "repo" => array( "title" => "repository", "label" => "Repo", "mysql" => "CONCAT(`r_a`.`name`,\"/\",`repositories`.`name`)" ), "pkgname" => array( "title" => "package name", "label" => "Name", "mysql" => "`binary_packages`.`pkgname`" ), "pkgver" => array( "title" => "package version", "label" => "Version", "mysql" => mysql_query_package_version("binary_packages") ), "bugs" => array( "title" => "bug status", "label" => "Bugs", "mysql" => "NOT `binary_packages`.`has_issues`" ), "build_date" => array( "title" => "build date", "label" => "Build Date", "mysql" => "IFNULL(`build_assignments`.`return_date`,\"00-00-0000 00:00:00\")" ), "move_date" => array( "title" => "last update", "label" => "Last Updated", "mysql" => "IFNULL(`binary_packages_in_repositories`.`last_moved`,\"00-00-0000 00:00:00\")" ), "del" => array( "title" => "to be deleted", "label" => "Delete", "mysql" => "`binary_packages_in_repositories`.`is_to_be_deleted`" ) ); function query_package_listing($filter, $limit, $float_columns, $count_only, $extract_order_by_from_get) { global $pkglist_sorts; $sort = ''; if ($extract_order_by_from_get && array_key_exists('sort', $_GET)) { $criterium = $_GET['sort']; if ( array_key_exists($criterium, $pkglist_sorts) && array_key_exists('mysql', $pkglist_sorts[$criterium]) ) $sort = $pkglist_sorts[$criterium]['mysql'] . ','; elseif (substr($criterium, 0, 1) == '-') { $criterium = substr($criterium, 1); if ( array_key_exists($criterium, $pkglist_sorts) && array_key_exists('mysql', $pkglist_sorts[$criterium]) ) $sort = $pkglist_sorts[$criterium]['mysql'] . ' DESC,'; } } if ($count_only) $columns = "COUNT(DISTINCT `binary_packages`.`id`)"; else $columns = "DISTINCT " . "`binary_packages`.`pkgname`," . "`package_sources`.`pkgbase`," . "CONCAT(`r_a`.`name`,\"/\",`repositories`.`name`) AS `repo`," . "`architectures`.`name` AS `arch`," . mysql_query_package_version("binary_packages") . " AS `version`," . "IF(`binary_packages`.`has_issues`,1,0) AS `has_issues`," . "`build_assignments`.`return_date` AS `build_date`," . "`binary_packages_in_repositories`.`last_moved` AS `move_date`," . "IF(`binary_packages_in_repositories`.`is_to_be_deleted`,1,0) AS `is_to_be_deleted`"; $result = mysql_run_query( "SELECT " . $columns . " FROM `binary_packages`" . mysql_join_binary_packages_architectures() . mysql_join_binary_packages_binary_packages_in_repositories() . mysql_join_binary_packages_in_repositories_repositories() . " AND `repositories`.`is_on_master_mirror`" . mysql_join_repositories_architectures("","r_a") . mysql_join_binary_packages_build_assignments() . mysql_join_build_assignments_package_sources() . $filter . " ORDER BY " . $sort . "`binary_packages`.`pkgname`,`repositories`.`stability`,`repositories`.`name`,`architectures`.`name`" . $limit ); if ($count_only) return implode($result -> fetch_assoc()); else { $return = array(); while ($row = $result -> fetch_assoc()) { foreach ($float_columns as $float_column) $row[$float_column] = floatval($row[$float_column]); $return[] = $row; } return $return; } } function print_listing($list, $print_order_links, $list_content_type) { global $pkglist_sorts; global $grouplist_sorts; switch ($list_content_type) { case 'package': $columns = $pkglist_sorts; break; case 'group': $columns = $grouplist_sorts; break; default: throw_http_error(500,'Internal Server Error','invalit list type "' . $list_content_type . '"' . "\n"); die(); } print " \n"; print " \n"; print " \n"; foreach ($columns as $get => $sort) { print " \n"; } print " \n"; print " \n"; print " \n"; $oddity = "odd"; foreach ($list as $row) { print " \n"; print " \n"; if ($list_content_type == 'package') { print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; } if ($list_content_type == 'group') { print " \n"; print " "; } print " \n"; if ($list_content_type == 'package') { print " \n"; } print " \n"; if ($oddity == "odd" ) $oddity = "even"; else $oddity = "odd"; } print " \n"; print "
\n"; if ($print_order_links) { print " " . $sort["label"] . "\n"; } else print " " . $sort["label"] . "\n"; print "
\n"; print " " . $row["arch"] . "\n"; print " \n"; print " " . $row["repo"] . "\n"; print " \n"; print " " . $row["pkgname"] . "\n"; print " \n"; print " " . $row["version"] . "\n"; print " \n"; print " "; if ($row["has_issues"]) print "has open bug reports"; else print " "; print "\n"; print " \n"; print " "; if (isset($row["build_date"])) print $row["build_date"]; else print " "; print "\n"; print " \n"; print " " . $row["name"] . "\n"; print " \n"; print " " . $row["count"] . "\n"; print " \n"; print " "; if (isset($row["move_date"])) print $row["move_date"]; else print " "; print "\n"; print " \n"; print " "; if ($row["is_to_be_deleted"]) print "to be deleted"; else print " "; print "\n"; print "
\n"; }