piwigo/plugins/AMenuManager/amm_root.class.inc.php
rvelices abb2f22b2e - based on test_menu by grum (thanks to you) - integration of dynamic menu bar to pwg
- the menubar is composed now of dynamic blocks that can be ordered/hidden
- plugins can add their own blocks 


git-svn-id: http://piwigo.org/svn/trunk@2488 68402e56-0260-453c-a942-63ccdbb3a9ee
2008-08-28 00:32:39 +00:00

193 lines
5 KiB
PHP

<?php
/* -----------------------------------------------------------------------------
Plugin : Advanced Menu Manager
Author : Grum
email : grum@grum.dnsalias.com
website : http://photos.grum.dnsalias.com
PWG user : http://forum.phpwebgallery.net/profile.php?id=3706
<< May the Little SpaceFrog be with you ! >>
------------------------------------------------------------------------------
See main.inc.php for release information
AMM_root : root classe for plugin
--------------------------------------------------------------------------- */
if (!defined('PHPWG_ROOT_PATH')) { die('Hacking attempt!'); }
include_once(PHPWG_PLUGINS_PATH.'grum_plugins_classes-2/common_plugin.class.inc.php');
class AMM_root extends common_plugin
{
function AMM_root($prefixeTable, $filelocation)
{
$this->plugin_name="Advanced Menu Manager";
$this->plugin_name_files="amm";
parent::__construct($prefixeTable, $filelocation);
$list=array('urls', 'personalised');
$this->set_tables_list($list);
}
/* ---------------------------------------------------------------------------
common AIP & PIP functions
--------------------------------------------------------------------------- */
/* this function initialize var $my_config with default values */
public function init_config()
{
$this->my_config=array(
'amm_links_show_icons' => 'y',
'amm_links_title' => array(),
'amm_randompicture_showname' => 'n', //n:no, o:over, u:under
'amm_randompicture_showcomment' => 'n', //n:no, o:over, u:under
'amm_randompicture_title' => array(),
'amm_sections_modspecials' => array(
'favorites' => 'y',
'most_visited' => 'y',
'best_rated' => 'y',
'random' => 'y',
'recent_pics' => 'y',
'recent_cats' => 'y',
'calendar' => 'y'
),
'amm_sections_modmenu' => array(
'qsearch' => 'y',
'tags' => 'y',
'search' => 'y',
'comments' => 'y',
'about' => 'y',
'notification' => 'y'
)
);
$languages=get_languages();
foreach($languages as $key => $val)
{
if($key=='fr_FR')
{
$this->my_config['amm_links_title'][$key]=base64_encode('Liens');
$this->my_config['amm_randompicture_title'][$key]=base64_encode('Une image au hasard');
}
else
{
$this->my_config['amm_links_title'][$key]=base64_encode('Links');
$this->my_config['amm_randompicture_title'][$key]=base64_encode('A random picture');
}
}
}
public function load_config()
{
parent::load_config();
}
public function init_events()
{
add_event_handler('blockmanager_register_blocks', array(&$this, 'register_blocks') );
}
public function register_blocks( $menu_ref_arr )
{
$menu = & $menu_ref_arr[0];
if ($menu->get_id() != 'menubar')
return;
$menu->register_block( new RegisteredBlock( 'mbAMM_randompict', 'Random pictures', 'AMM'));
$menu->register_block( new RegisteredBlock( 'mbAMM_links', 'Links', 'AMM'));
$sections=$this->get_sections(true);
if(count($sections))
{
$id_done=array();
foreach($sections as $key => $val)
{
if(!isset($id_done[$val['id']]))
{
$menu->register_block( new RegisteredBlock( 'mbAMM_personalised'.$val['id'], $val['title'], 'AMM'));
$id_done[$val['id']]="";
}
}
}
}
// return an array of urls (each url is an array)
protected function get_urls($only_visible=false)
{
$returned=array();
$sql="SELECT * FROM ".$this->tables['urls'];
if($only_visible)
{
$sql.=" WHERE visible = 'y' ";
}
$sql.=" ORDER BY position";
$result=pwg_query($sql);
if($result)
{
while($row=mysql_fetch_array($result))
{
$row['label']=stripslashes($row['label']);
$returned[]=$row;
}
}
return($returned);
}
//return number of url
protected function get_count_url($only_visible=false)
{
$returned=0;
$sql="SELECT count(id) FROM ".$this->tables['urls'];
if($only_visible)
{
$sql.=" WHERE visible = 'y' ";
}
$result=pwg_query($sql);
if($result)
{
$tmp=mysql_fetch_row($result);
$returned=$tmp[0];
}
return($returned);
}
// return an array of sections (each section is an array)
protected function get_sections($only_visible=false, $lang="", $only_with_content=true)
{
global $user;
if($lang=="")
{
$lang=$user['language'];
}
$returned=array();
$sql="SELECT * FROM ".$this->tables['personalised']."
WHERE (lang = '*' OR lang = '".$lang."') ";
if($only_visible)
{
$sql.=" AND visible = 'y' ";
}
if($only_with_content)
{
$sql.=" AND content != '' ";
}
$sql.=" ORDER BY id, lang DESC ";
$result=pwg_query($sql);
if($result)
{
while($row=mysql_fetch_array($result))
{
$returned[]=$row;
}
}
return($returned);
}
} // amm_root class
?>