1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: 230: 231: 232: 233: 234: 235: 236: 237: 238: 239: 240: 241: 242: 243: 244: 245: 246: 247: 248: 249: 250: 251: 252: 253: 254: 255: 256: 257: 258: 259: 260: 261: 262: 263: 264: 265: 266: 267: 268: 269: 270: 271: 272: 273: 274: 275: 276: 277: 278: 279: 280: 281: 282: 283: 284: 285: 286: 287: 288: 289: 290: 291: 292: 293: 294: 295: 296: 297: 298: 299: 300: 301: 302: 303: 304: 305: 306: 307: 308: 309: 310: 311: 312: 313: 314: 315: 316: 317: 318: 319: 320: 321: 322: 323: 324: 325: 326: 327: 328: 329: 330: 331: 332: 333: 334: 335: 336: 337: 338: 339: 340: 341: 342: 343: 344: 345: 346: 347: 348: 349: 350: 351: 352: 353: 354: 355: 356: 357: 358: 359: 360: 361: 362: 363: 364: 365: 366: 367: 368: 369: 370: 371: 372: 373: 374: 375: 376: 377: 378: 379: 380: 381: 382: 383: 384: 385:
<?php
defined('ICMS_ROOT_PATH') or die('ImpressCMS root path is not defined');
class icms_module_Object extends icms_core_Object {
public $config = NULL;
public $modinfo;
public $adminmenu;
public $adminheadermenu;
public $messages;
public function __construct() {
parent::__construct();
$this->initVar('mid', XOBJ_DTYPE_INT, null, false);
$this->initVar('name', XOBJ_DTYPE_TXTBOX, null, true, 150);
$this->initVar('version', XOBJ_DTYPE_TXTBOX, null, false);
$this->initVar('last_update', XOBJ_DTYPE_INT, null, false);
$this->initVar('weight', XOBJ_DTYPE_INT, 0, false);
$this->initVar('isactive', XOBJ_DTYPE_INT, 1, false);
$this->initVar('dirname', XOBJ_DTYPE_OTHER, null, true);
$this->initVar('hasmain', XOBJ_DTYPE_INT, 0, false);
$this->initVar('hasadmin', XOBJ_DTYPE_INT, 0, false);
$this->initVar('hassearch', XOBJ_DTYPE_INT, 0, false);
$this->initVar('hasconfig', XOBJ_DTYPE_INT, 0, false);
$this->initVar('hascomments', XOBJ_DTYPE_INT, 0, false);
$this->initVar('hasnotification', XOBJ_DTYPE_INT, 0, false);
$this->initVar('dbversion', XOBJ_DTYPE_INT, 0, false);
$this->initVar('modname', XOBJ_DTYPE_OTHER, null, true);
$this->initVar('ipf', XOBJ_DTYPE_INT, 0, false);
}
public function launch() {}
public function registerClassPath($isactive = NULL) {
if ($this->getVar("dirname") == "system") return;
$class_path = ICMS_ROOT_PATH . "/modules/" . $this->getVar("dirname") . "/class";
if (!is_dir($class_path)) return;
if ($isactive !== NULL && $this->getVar("isactive") != (int) $isactive) return;
if ($this->getVar("ipf")) {
$modname = ($this->getVar("modname") != "") ? $this->getVar("modname") : $this->getVar("dirname");
icms_Autoloader::register($class_path, "mod_" . $modname);
} else {
icms_Autoloader::register($class_path);
}
}
public function loadInfoAsVar($dirname, $verbose = true) {
if (!isset($this->modinfo)) {
$this->loadInfo($dirname, $verbose);
}
$this->setVar('name', $this->modinfo['name'], true);
$this->setVar('version', $this->modinfo['version'], true);
$this->setVar('dirname', $this->modinfo['dirname'], true);
$hasmain = (isset($this->modinfo['hasMain']) && $this->modinfo['hasMain'] == 1) ? 1 : 0;
$hasadmin = (isset($this->modinfo['hasAdmin']) && $this->modinfo['hasAdmin'] == 1) ? 1 : 0;
$hassearch = (isset($this->modinfo['hasSearch']) && $this->modinfo['hasSearch'] == 1) ? 1 : 0;
$hasconfig = ((isset($this->modinfo['config']) && is_array($this->modinfo['config'])) || !empty($this->modinfo['hasComments'])) ? 1 : 0;
$hascomments = (isset($this->modinfo['hasComments']) && $this->modinfo['hasComments'] == 1) ? 1 : 0;
$hasnotification = (isset($this->modinfo['hasNotification']) && $this->modinfo['hasNotification'] == 1) ? 1 : 0;
$this->setVar('hasmain', $hasmain);
$this->setVar('hasadmin', $hasadmin);
$this->setVar('hassearch', $hassearch);
$this->setVar('hasconfig', $hasconfig);
$this->setVar('hascomments', $hascomments);
$this->setVar('hasnotification', $hasnotification);
$this->setVar('modname', isset($this->modinfo['modname']) ? $this->modinfo['modname'] : "", true);
$ipf = (isset($this->modinfo['object_items']) && is_array($this->modinfo['object_items'])) ? 1 : 0;
$this->setVar('ipf', $ipf);
}
public function &getInfo($name = null) {
if (!isset($this->modinfo)) {
$this->loadInfo($this->getVar('dirname'));
}
if (isset($name)) {
if (isset($this->modinfo[$name])) {
return $this->modinfo[$name];
}
$return = false;
return $return;
}
return $this->modinfo;
}
public function getDBVersion() {
$ret = $this->getVar('dbversion');
return $ret;
}
public function mainLink() {
if ($this->getVar('hasmain') == 1) {
$ret = '<a href="' . ICMS_URL . '/modules/' . $this->getVar('dirname') . '/">' . $this->getVar('name') . '</a>';
return $ret;
}
return false;
}
public function subLink() {
$ret = array();
if ($this->getInfo('sub') && is_array($this->getInfo('sub'))) {
foreach ($this->getInfo('sub') as $submenu) {
$ret[] = array('name' => $submenu['name'], 'url' => $submenu['url']);
}
}
return $ret;
}
public function loadAdminMenu() {
if ($this->getInfo('adminmenu') && $this->getInfo('adminmenu') != '' && file_exists(ICMS_ROOT_PATH . '/modules/' . $this->getVar('dirname') . '/' . $this->getInfo('adminmenu'))) {
include_once ICMS_ROOT_PATH . '/modules/' . $this->getVar('dirname') . '/' . $this->getInfo('adminmenu');
$this->adminmenu = &$adminmenu;
if (isset($headermenu)) {
$this->adminheadermenu = &$headermenu;
}
}
}
public function &getAdminMenu() {
if (!isset($this->adminmenu)) {
$this->loadAdminMenu();
}
return $this->adminmenu;
}
public function &getAdminHeaderMenu() {
if (!isset($this->adminheadermenu)) {
$this->loadAdminMenu();
}
return $this->adminheadermenu;
}
public function loadInfo($dirname, $verbose = true) {
global $icmsConfig;
icms_loadLanguageFile($dirname, 'modinfo');
if (file_exists(ICMS_ROOT_PATH . '/modules/' . $dirname . '/icms_version.php')) {
include ICMS_ROOT_PATH . '/modules/' . $dirname . '/icms_version.php';
} elseif (file_exists(ICMS_ROOT_PATH . '/modules/' . $dirname . '/xoops_version.php')) {
include ICMS_ROOT_PATH . '/modules/' . $dirname . '/xoops_version.php';
} else {
if (false != $verbose) {
echo "Module File for $dirname Not Found!";
}
return false;
}
$this->modinfo = &$modversion;
return true;
}
public function search($term = '', $andor = 'AND', $limit = 0, $offset = 0, $userid = 0) {
if ($this->getVar('hassearch') != 1) {
return false;
}
$search = &$this->getInfo('search');
if ($this->getVar('hassearch') != 1 || !isset($search['file']) || !isset($search['func']) || $search['func'] == '' || $search['file'] == '') {
return false;
}
if (file_exists(ICMS_ROOT_PATH . '/modules/' . $this->getVar('dirname') . '/' . $search['file'])) {
include_once ICMS_ROOT_PATH . '/modules/' . $this->getVar('dirname') . '/' . $search['file'];
} else {
return false;
}
if (function_exists($search['func'])) {
$func = $search['func'];
return $func($term, $andor, $limit, $offset, $userid);
}
return false;
}
public function displayAdminMenu($currentoption = 0, $breadcrumb = '', $submenus = false, $currentsub = -1) {
if(!is_array($submenus))
{
$submenus=[];
}
icms_loadLanguageFile(icms::$module->getVar('dirname'), 'modinfo');
icms_loadLanguageFile(icms::$module->getVar('dirname'), 'admin');
$tpl = new icms_view_Tpl();
$tpl->assign(array(
'headermenu' => $this->getAdminHeaderMenu(),
'adminmenu' => $this->getAdminMenu(),
'current' => $currentoption,
'breadcrumb' => $breadcrumb,
'headermenucount' => count($this->getAdminHeaderMenu()),
'submenus' => $submenus,
'currentsub' => $currentsub,
'submenuscount' => count($submenus)));
$tpl->display('db:system_adm_modulemenu.html');
}
function setMessage($msg, $title = '', $render = false) {
$ret = '<div class="moduleMsg">';
if ($title != '') {
$ret .= '<h4>' . $title . '</h4>';
}
if (is_array($msg)) {
foreach ($msg as $m) {
$ret .= $m . '<br />';
}
} else {
$ret .= $msg;
}
$ret .= '</div>';
if ($render) {
echo $ret;
} else {
return $ret;
}
}
}