array( "title" => "name", "label" => "Name", "mysql" => "`binary_packages`.`name`" ), "i486_version" => array( "title" => "i486 version", "label" => "i486 Version", "mysql" => "`i486_version`" ), "i686_version" => array( "title" => "i686 version", "label" => "i686 Version", "mysql" => "`i686_version`" ), "i486_repo" => array( "title" => "i486 repository", "label" => "i486 Repository", "mysql" => "`i486_repo`" ), "i686_repo" => array( "title" => "i686 repository", "label" => "i686 Repository", "mysql" => "`i686_repo`" ), "i486_last_moved" => array( "title" => "i486 last updated", "label" => "i486 Last Updated", "mysql" => "`i486_last_moved`" ), "i686_last_moved" => array( "title" => "i686 last updated", "label" => "i686 Last Updated", "mysql" => "`i686_last_moved`" ) ); $grouplist_sorts = array( "arch" => 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`" ) ); $grouplist_print_columns = array( 'arch' => array('$arch'), 'group' => array( '"', '$name', '"' ), 'move_date' => array('&move_date') ); $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`" ) ); $pkglist_print_columns = array( 'arch' => array('$arch'), 'repo' => array('$repo'), 'pkgname' => array( '"', '$pkgname', '"' ), 'version' => array('$version'), 'has_issues' => array( 'has_issues' => array( 0 => '" ', 1 => '"has open bug reports' ) ), 'build_date' => array('&build_date'), 'move_date' => array('&move_date'), 'is_to_be_deleted' => array( 'is_to_be_deleted' => array( 0 => '" ', 1 => '"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 $difflist_sorts; global $pkglist_sorts; global $grouplist_sorts; global $difflist_print_columns; global $pkglist_print_columns; global $grouplist_print_columns; switch ($list_content_type) { case 'diff': $columns = $difflist_sorts; $print_columns = $difflist_print_columns; break; case 'package': $columns = $pkglist_sorts; $print_columns = $pkglist_print_columns; break; case 'group': $columns = $grouplist_sorts; $print_columns = $grouplist_print_columns; 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"; foreach ($print_columns as $print_column) { 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 " "; foreach ($print_column as $part_key => $part_val) { if (is_array($part_val)) $part_val = $part_val[$row[$part_key]]; switch (substr($part_val, 0, 1)) { case '&': if (empty($row[substr($part_val, 1)])) { print ' '; break; } case '$': print $row[substr($part_val, 1)]; break; case '"': print substr($part_val, 1); break; default: throw_http_error(500, 'Internal Server Error', 'Unknown variable type "' . substr($part_val, 0, 1) . '"'); } } print "\n"; print "
\n"; }