source: extensions/AdditionalPages/main.inc.php @ 9345

Last change on this file since 9345 was 9345, checked in by patdenice, 13 years ago

Use ENGINE=MyISAM for table creation.
Compatibility with AMM.
Compatibility with $confrandom_index_redirect parameter.

File size: 3.3 KB
Line 
1<?php
2/*
3Plugin Name: Additional Pages
4Version: auto
5Description: Add additional pages in menubar.
6Plugin URI: http://piwigo.org/ext/extension_view.php?eid=153
7Author: P@t
8Author URI: http://www.gauchon.com
9*/
10
11if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
12
13global $prefixeTable, $conf;
14
15define('AP_DIR' , basename(dirname(__FILE__)));
16define('AP_PATH' , PHPWG_PLUGINS_PATH . AP_DIR . '/');
17define('ADD_PAGES_TABLE' , $prefixeTable . 'additionalpages');
18
19$conf['AP'] = @unserialize($conf['additional_pages']);
20
21// Need upgrade?
22if (!isset($conf['AP']['level_perm']))
23  include(AP_PATH.'admin/upgrade.inc.php');
24
25// Unset $conf['random_index_redirect'] if homepage is defined
26if (!empty($conf['random_index_redirect']) and !is_null($conf['AP']['homepage']))
27{
28  $conf['ap_random_index_redirect'] = $conf['random_index_redirect'];
29  $conf['random_index_redirect'] = array();
30}
31
32// Admin menu
33function additional_pages_admin_menu($menu)
34{
35    array_push($menu, array(
36      'NAME' => 'Additional Pages',
37      'URL' => get_admin_plugin_menu_link(AP_PATH . 'admin/admin.php')));
38    return $menu;
39}
40
41// Section init
42function section_init_additional_page()
43{
44  global $tokens, $conf, $page;
45
46  $page['ap_homepage'] = (count($tokens) == 1 and empty($tokens[0]));
47
48  if (($tokens[0] == 'page' and !empty($tokens[1])) or ($page['ap_homepage'] and !is_null($conf['AP']['homepage'])))
49    include(AP_PATH . 'additional_page.php');
50
51  if ($tokens[0] == 'additional_page' and !empty($tokens[1]))
52    redirect(make_index_url().'/page/'.$tokens[1]);
53}
54
55// Menubar
56function register_ap_menubar_blocks($menu_ref_arr)
57{
58  $menu = & $menu_ref_arr[0];
59  if ($menu->get_id() != 'menubar') return;
60  $menu->register_block( new RegisteredBlock( 'mbAdditionalPages', 'Additional Pages', 'P@t'));
61}
62
63function ap_apply($menu_ref_arr)
64{
65  global $template, $conf, $user;
66
67  $menu = & $menu_ref_arr[0];
68 
69  if ( ($block = $menu->get_block( 'mbAdditionalPages' ) ) != null )
70  {
71    $query = 'SELECT DISTINCT id, title, permalink
72FROM ' . ADD_PAGES_TABLE . '
73LEFT JOIN ' . USER_GROUP_TABLE . '
74  ON user_id = '.$user['id'].'
75WHERE (lang IS NULL OR lang = "'.$user['language'].'")
76  AND (users IS NULL OR users LIKE "%'.$user['status'].'%")
77  AND (groups IS NULL OR groups REGEXP CONCAT("(^|,)",group_id,"(,|$)"))
78  AND level <= '.$user['level'].'
79  AND pos >= 0
80ORDER BY pos ASC
81;';
82    $result = pwg_query($query);
83    $data = array();
84    while ($row = pwg_db_fetch_assoc($result))
85    {
86      $url = make_index_url().'/page/'.(isset($row['permalink']) ? $row['permalink'] : $row['id']);
87      array_push($data, array('URL' => $url, 'LABEL' => $row['title']));
88    }
89
90    if (!empty($data))
91    {
92      $title = isset($conf['AP']['languages'][$user['language']]) ?
93        $conf['AP']['languages'][$user['language']] :
94        @$conf['AP']['languages']['default'];
95
96      $template->set_template_dir(AP_PATH.'template/');
97      $block->set_title($title);
98      $block->template = 'menubar_additional_pages.tpl';
99      $block->data = $data;
100    }
101  }
102}
103
104add_event_handler('get_admin_plugin_menu_links', 'additional_pages_admin_menu');
105add_event_handler('loc_end_section_init', 'section_init_additional_page');
106add_event_handler('blockmanager_register_blocks', 'register_ap_menubar_blocks');
107add_event_handler('blockmanager_apply', 'ap_apply');
108
109?>
Note: See TracBrowser for help on using the repository browser.