summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apk_browser.module88
1 files changed, 55 insertions, 33 deletions
diff --git a/apk_browser.module b/apk_browser.module
index 33c0064..d05e294 100644
--- a/apk_browser.module
+++ b/apk_browser.module
@@ -579,44 +579,66 @@ function apk_browser_package_table($vars) {
function apk_browser_preprocess_node(&$vars) {
if ($vars['node']->type == 'apk') {
$vars['apk_table'] = apk_browser_package_table($vars);
- $vars['origin_table'] = apk_browser_origin_table($vars);
}
}
-function apk_browser_origin_table($vars) {
- $rows = db_query("
- SELECT node.title
- FROM {node}
- LEFT JOIN {field_data_apk_origin} as origin ON (node.nid = origin.entity_id)
- LEFT JOIN {field_data_taxonomy_apk_arch} as arch ON (node.nid = arch.entity_id)
- LEFT JOIN {field_data_taxonomy_apk_repo} as repo ON (node.nid = repo.entity_id)
- WHERE origin.apk_origin_value = :origin
- AND arch.taxonomy_apk_arch_tid = :arch
- AND repo.taxonomy_apk_repo_tid = :repo
- AND node.status = '1'
- LIMIT 10", array(
- ':origin' => $vars['apk_origin']['0']['value'],
- ':arch' => $vars['taxonomy_apk_arch']['0']['tid'],
- ':repo' => $vars['taxonomy_apk_repo']['0']['tid']
- )
+function apk_browser_origin_table() {
+ //Get a loaded object from a router item.
+ $node = menu_get_object();
+ //Some older packages are missing origin field.
+ if (isset($node->apk_origin)) {
+ $rows = db_query("
+ SELECT node.title
+ FROM {node}
+ LEFT JOIN {field_data_apk_origin} as origin ON (node.nid = origin.entity_id)
+ LEFT JOIN {field_data_taxonomy_apk_arch} as arch ON (node.nid = arch.entity_id)
+ LEFT JOIN {field_data_taxonomy_apk_repo} as repo ON (node.nid = repo.entity_id)
+ WHERE origin.apk_origin_value = :origin
+ AND arch.taxonomy_apk_arch_tid = :arch
+ AND repo.taxonomy_apk_repo_tid = :repo
+ AND node.status = '1'", array(
+ ':origin' => $node->apk_origin['und']['0']['value'],
+ ':arch' => $node->taxonomy_apk_arch['und']['0']['tid'],
+ ':repo' => $node->taxonomy_apk_repo['und']['0']['tid']
+ )
)->fetchCol();
- if ($rows) {
- $table['header'] = array(t('Same origin'));
- foreach ($rows as $key => $row) {
- $value = trim($row, '!');
- $value = preg_split("/[<>=]/", $value);
- $link = l($row, 'apk/' .
- $vars['taxonomy_apk_repo']['0']['taxonomy_term']->name . '/' .
- $vars['taxonomy_apk_arch']['0']['taxonomy_term']->name . '/' .
- $value[0]
- );
- $table['rows'][$key]['data'] = array($link);
+ if ($rows) {
+ foreach ($rows as $key => $row) {
+ $link = l($row, 'apk/' .
+ $node->taxonomy_apk_repo['und']['0']['taxonomy_term']->name . '/' .
+ $node->taxonomy_apk_arch['und']['0']['taxonomy_term']->name . '/' .
+ $row
+ );
+ $list['items'][]['data'] = $link;
+ }
+ $table['attributes']['id'] = 'same-origin';
+ return theme('item_list', $list);
}
- $table['attributes']['id'] = 'origin-table';
- return theme('table', $table);
- } else {
- return FALSE;
}
+ return FALSE;
}
-?>
+function apk_browser_block_info() {
+ $blocks['apk_browser_origin'] = array(
+ 'info' => t('Packages with same origin'),
+ 'visibility' => BLOCK_VISIBILITY_LISTED,
+ // This block should only display on pages starting with apk.
+ 'pages' => 'apk/*'
+ );
+ return $blocks;
+}
+
+function apk_browser_block_view($delta = '') {
+ //The $delta parameter tells us which block is being requested.
+ switch ($delta) {
+ case 'apk_browser_origin':
+ // Title of the block
+ $block['subject'] = t('Same origin');
+ // content of the block
+ $table = apk_browser_origin_table();
+ $block['content'] = ($table) ? $table : FALSE;
+ break;
+ }
+ //return FALSE will disable the block from display
+ return ($block['content']) ? $block : FALSE;
+}