From cbaac4bb495c61994434be49d0c754b81fe20edc Mon Sep 17 00:00:00 2001 From: Carlo Landmeter Date: Mon, 9 May 2011 16:13:56 +0000 Subject: move origin information to drupal block api --- apk_browser.module | 88 ++++++++++++++++++++++++++++++++++-------------------- 1 file 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; +} -- cgit v1.2.3