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

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

Lot of optimization.
Add privacy level management.

File size: 3.0 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['additional_pages'] = @unserialize($conf['additional_pages']);
20
21if (!isset($conf['additional_pages']['level_perm']))
22  include(AP_PATH.'admin/upgrade.inc.php');
23
24function additional_pages_admin_menu($menu)
25{
26    array_push($menu, array(
27      'NAME' => 'Additional Pages',
28      'URL' => get_admin_plugin_menu_link(AP_PATH . 'admin/admin.php')));
29    return $menu;
30}
31
32function section_init_additional_page()
33{
34  global $tokens, $conf, $page;
35
36  $page['ap_homepage'] = (count($tokens) == 1 and empty($tokens[0]));
37
38  if (($tokens[0] == 'page' and !empty($tokens[1])) or ($page['ap_homepage'] and !is_null($conf['additional_pages']['homepage'])))
39    include(AP_PATH . 'additional_page.php');
40
41  if ($tokens[0] == 'additional_page' and !empty($tokens[1]))
42    redirect(make_index_url().'/page/'.$tokens[1]);
43}
44
45function register_ap_menubar_blocks($menu_ref_arr)
46{
47  $menu = & $menu_ref_arr[0];
48  if ($menu->get_id() != 'menubar') return;
49  $menu->register_block( new RegisteredBlock( 'mbAdditionalPages', 'Additional Pages', 'P@t'));
50}
51
52function ap_apply($menu_ref_arr)
53{
54  global $template, $conf, $user;
55
56  $menu = & $menu_ref_arr[0];
57 
58  if ( ($block = $menu->get_block( 'mbAdditionalPages' ) ) != null )
59  {
60    $query = 'SELECT DISTINCT id, title, permalink, GROUP_CONCAT(groups)
61FROM ' . ADD_PAGES_TABLE . '
62LEFT JOIN ' . USER_GROUP_TABLE . '
63  ON user_id = '.$user['id'].'
64WHERE (lang = "' . $user['language'] . '" OR lang IS NULL)
65  AND (users IS NULL OR users LIKE "%'.$user['status'].'%")
66  AND (groups IS NULL OR groups REGEXP CONCAT("(^|,)",group_id,"(,|$)"))
67  AND level <= '.$user['level'].'
68  AND pos >= 0
69ORDER BY pos ASC
70;';
71    $result = pwg_query($query);
72    $data = array();
73    while ($row = pwg_db_fetch_assoc($result))
74    {
75      $url = make_index_url().'/page/'.(isset($row['permalink']) ? $row['permalink'] : $row['id']);
76      array_push($data, array('URL' => $url, 'LABEL' => $row['title']));
77    }
78
79    if (!empty($data))
80    {
81      $title = isset($conf['additional_pages']['languages'][$user['language']]) ?
82        $conf['additional_pages']['languages'][$user['language']] :
83        @$conf['additional_pages']['languages']['default'];
84
85      $template->set_template_dir(AP_PATH.'template/');
86      $block->set_title($title);
87      $block->template = 'menubar_additional_pages.tpl';
88      $block->data = $data;
89    }
90  }
91}
92
93add_event_handler('get_admin_plugin_menu_links', 'additional_pages_admin_menu');
94add_event_handler('loc_end_section_init', 'section_init_additional_page');
95add_event_handler('blockmanager_register_blocks', 'register_ap_menubar_blocks');
96add_event_handler('blockmanager_apply', 'ap_apply');
97
98?>
Note: See TracBrowser for help on using the repository browser.