Created
February 13, 2021 05:14
-
-
Save drajathasan/f2ec5907dca70a48cceaa1f49384f368 to your computer and use it in GitHub Desktop.
File agar list plugins custom dapat muncul di user non super admin. Download file ini lalu simpan di folder lib/ (Jangan lupa backup file sebelumnya)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* module class | |
* Application modules related class | |
* | |
* Copyright (C) 2010 Arie Nugraha ([email protected]) | |
* | |
* This program is free software; you can redistribute it and/or modify | |
* it under the terms of the GNU General Public License as published by | |
* the Free Software Foundation; either version 3 of the License, or | |
* (at your option) any later version. | |
* | |
* This program is distributed in the hope that it will be useful, | |
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
* GNU General Public License for more details. | |
* | |
* You should have received a copy of the GNU General Public License | |
* along with this program; if not, write to the Free Software | |
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |
* | |
*/ | |
// be sure that this file not accessed directly | |
if (!defined('INDEX_AUTH')) { | |
die("can not access this file directly"); | |
} elseif (INDEX_AUTH != 1) { | |
die("can not access this file directly"); | |
} | |
class module extends simbio | |
{ | |
private $modules_dir = 'modules'; | |
private $module_table = 'mst_module'; | |
public $module_list = array(); | |
public $appended_first; | |
public $appended_last; | |
public function __construct() { | |
$this->appended_first = '<li><a class="menu home#replaced#" href="index.php"><span>' . __('Home') . '</a></li><li><a class="menu opac" href="../index.php" title="' . __('View OPAC in New Window') . '" target="_blank"><span>' . __('OPAC') . '</span></a></li>'; | |
$this->appended_last = '<li><a class="menu logout" href="logout.php"><span>' . __('Logout') . '</span></a></li>'; | |
} | |
/** | |
* Method to set modules directory | |
* | |
* @param string $str_modules_dir | |
* @return void | |
*/ | |
public function setModulesDir($str_modules_dir) | |
{ | |
$this->modules_dir = $str_modules_dir; | |
} | |
/** | |
* Method to generate a list of module menu | |
* | |
* @param object $obj_db | |
* @return string | |
*/ | |
public function generateModuleMenu($obj_db) | |
{ | |
// create the HTML Hyperlinks | |
$_menu = '<ul id="menuList">'; | |
$_menu .= !isset($_GET['mod'])?str_replace('#replaced#', ' menuCurrent',$this->appended_first):str_replace('#replaced#', '',$this->appended_first); | |
// sort modules | |
if ($this->module_list = $this->getModuleMainMenu($obj_db)) { | |
foreach ($this->module_list as $_module) { | |
$_formated_module_name = ucwords(str_replace('_', ' ', $_module['name'])); | |
$_mod_dir = $_module['path']; | |
$_menu .= '<li><a class="menu '.$_module['name'].( (isset($_GET['mod']) && $_GET['mod']==$_module['path'])?' menuCurrent':'' ).'" title="'.$_module['desc'].'" href="index.php?mod='.$_mod_dir.'"><span>'.__($_formated_module_name).'</span></a></li>'; | |
} | |
} | |
$_menu .= $this->appended_last; | |
$_menu .= '</ul>'; | |
return $_menu; | |
} | |
/** | |
* Method to get a list of module menu | |
* | |
* @param object $obj_db | |
* @param boolean $also_get_childs | |
* @return array | |
*/ | |
public function getModuleMainMenu($obj_db, $also_get_childs = false) | |
{ | |
$_menu = array(); | |
$module_list = array(); | |
// get module data from database | |
$_mods_q = $obj_db->query('SELECT * FROM '.$this->module_table); | |
while ($_mods_d = $_mods_q->fetch_assoc()) { | |
$module_list[] = array('name' => $_mods_d['module_name'], 'path' => $_mods_d['module_path'], 'desc' => $_mods_d['module_desc']); | |
} | |
// sort modules | |
if ($module_list) { | |
foreach ($module_list as $_id => $_module) { | |
$_mod_dir = $_module['path']; | |
if (isset($_SESSION['priv'][$_module['path']]['r']) && $_SESSION['priv'][$_module['path']]['r'] && file_exists($this->modules_dir.$_mod_dir)) { | |
$_menu[$_id] = $_module; | |
if ($also_get_childs) { | |
$_menu[$_id]['childs'] = $this->getSubMenuItems($_module['name']); | |
} | |
} | |
} | |
} | |
return $_menu; | |
} | |
/** | |
* Method to generate a list of module submenu | |
* | |
* @param string $str_module | |
* @return string | |
*/ | |
public function generateSubMenu($str_module = '') | |
{ | |
global $dbs; | |
$_submenu = ''; | |
$_submenu_current = 'curModuleLink'; | |
$i=0; | |
$menu = $this->getSubMenuItems($str_module); | |
// iterate menu array | |
foreach ($menu as $_list) { | |
if ($_list[0] == 'Header') { | |
$_submenu .= '<div class="subMenuHeader">'.$_list[1].'</div>'; | |
} else { | |
if($i > 1) $_submenu_current = ''; | |
$_submenu .= '<a class="subMenuItem '.$_submenu_current.'" ' | |
.' href="'.$_list[1].'"' | |
.' title="'.( isset($_list[2])?$_list[2]:$_list[0] ).'" href="#"><span>'.$_list[0].'</span></a>'; | |
} | |
$i++; | |
} | |
$_submenu .= ' '; | |
return $_submenu; | |
} | |
/** | |
* Method to get a list of module submenu | |
* | |
* @param string $str_module | |
* @return array | |
*/ | |
public function getSubMenuItems($str_module = '') | |
{ | |
global $dbs; | |
$_submenu_file = $this->modules_dir.$str_module.DIRECTORY_SEPARATOR.'submenu.php'; | |
// get menus from plugins | |
$plugin_menus = \SLiMS\Plugins::getInstance()->getMenus($str_module); | |
if (file_exists($_submenu_file)) { | |
include $_submenu_file; | |
$menu = array_merge($menu ?? [], $plugin_menus); | |
if ($_SESSION['uid'] > 1) { | |
$tmp_menu = []; | |
if (isset($menu) && count($menu) > 0) { | |
foreach ($menu as $item) { | |
if (in_array(md5($item[1]), $_SESSION['priv'][$str_module]['menus'])) $tmp_menu[] = $item; | |
} | |
} | |
$menu = array_merge($menu, $plugin_menus); | |
} | |
} else { | |
include 'default/submenu.php'; | |
foreach ($this->get_shortcuts_menu($dbs) as $key => $value) { | |
$link = explode('|', $value); | |
$menu[$link[0]] = array(__($link[0]), MWB.$link[1]); | |
} | |
} | |
return $menu; | |
} | |
/** | |
* Method to get a list of shortcut submenu | |
* | |
* @param object $obj_db | |
* @return array | |
*/ | |
function get_shortcuts_menu() | |
{ | |
global $dbs; | |
$shortcuts = array(); | |
$shortcuts_q = $dbs->query('SELECT * FROM setting WHERE setting_name LIKE \'shortcuts_'.$dbs->escape_string($_SESSION['uid']).'\''); | |
$shortcuts_d = $shortcuts_q->fetch_assoc(); | |
if ($shortcuts_q->num_rows > 0) { | |
$shortcuts = unserialize($shortcuts_d['setting_value']); | |
} | |
return $shortcuts; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment