Ignore:
Timestamp:
Jul 23, 2012, 4:41:12 PM (12 years ago)
Author:
mistic100
Message:

ability to define a specific banner for an album + apply to sub-cats
(needs Piwigo 2.4.2 for tabs)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • extensions/header_manager/include/header_manager.inc.php

    r15922 r16937  
    77function header_manager_render($page_banner)
    88{
    9   global $conf, $user, $template;
     9  global $conf, $user, $template, $page;
    1010 
    11   if ($conf['header_manager']['image'] == 'random')
     11  // search banner for a specific category
     12  if (isset($page['category']))
    1213  {
    13     $banners = list_banners();
    14     if (!count($banners)) return $page_banner;
    15     $banner = $banners[ mt_rand(0, count($banners)-1) ];
     14    // we use the banner configured for this category
     15    // if no banner is configured we use the banner of the first parent category with a "deep" banner
     16    // if nothing found we use the default banner
     17    $query = '
     18SELECT *
     19  FROM '.HEADER_MANAGER_TABLE.'
     20  WHERE
     21    category_id IN ('.$page['category']['uppercats'].')
     22    AND (category_id = '.$page['category']['id'].' OR deep = 1)
     23;';
     24    $cat_banners = hash_from_query($query, 'category_id');
     25   
     26    if (count($cat_banners))
     27    {
     28      function uppercats_sort($a, $b)
     29      {
     30        global $page;
     31        $ids = explode(',', $page['category']['uppercats']);
     32        return array_search($a['category_id'], $ids) < array_search($b['category_id'], $ids);
     33      }
     34      usort($cat_banners, 'uppercats_sort');
     35     
     36      foreach ($cat_banners as $cat_banner)
     37      {
     38        $cat_banner = get_banner($cat_banner['image']);
     39        if ($cat_banner !== false)
     40        {
     41          $banner = $cat_banner;
     42          break;
     43        }
     44      }
     45    }
    1646  }
    17   else
     47 
     48  // use default banner
     49  if (!isset($banner))
    1850  {
    19     $banner = get_banner($conf['header_manager']['image']);
    20     if (!file_exists($banner['PATH'])) return $page_banner;
     51    if ($conf['header_manager']['image'] == 'random')
     52    {
     53      $banners = list_banners();
     54      if (!count($banners)) return $page_banner;
     55      $banner = $banners[ mt_rand(0, count($banners)-1) ];
     56    }
     57    else
     58    {
     59      $banner = get_banner($conf['header_manager']['image']);
     60      if ($banner === false) return $page_banner;
     61    }
    2162  }
    2263 
     
    75116}
    76117
     118/**
     119 * tab on album edition page
     120 */
     121function header_manager_tab($sheets, $id)
     122{
     123  if ($id == 'album')
     124  {
     125    load_language('plugin.lang', HEADER_MANAGER_PATH);
     126   
     127    $sheets['headermanager'] = array(
     128      'caption' => l10n('Banner'),
     129      'url' => HEADER_MANAGER_ADMIN.'-album&amp;cat_id='.$_GET['cat_id'],
     130      );
     131  }
     132 
     133  return $sheets;
     134}
     135
    77136?>
Note: See TracChangeset for help on using the changeset viewer.