modules.php
来自「this the oscommerce 3.0 aplha 4」· PHP 代码 · 共 273 行
PHP
273 行
<?php/* $Id: $ osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright (c) 2005 osCommerce This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License v2 (1991) as published by the Free Software Foundation.*/ class osC_Modules { var $_modules, $_code, $_title, $_title_link, $_content, $_author_name, $_author_www, $_keys, $_group; function osC_Modules($group) { global $osC_Database, $osC_Template, $osC_Cache; $this->_group = $group; if ($osC_Cache->read('templates_' . $this->_group . '_layout-' . $osC_Template->getCode() . '-' . $osC_Template->getGroup() . '-' . $osC_Template->getPageContentsFilename())) { $data = $osC_Cache->getCache(); } else { $data = array(); $Qspecific = $osC_Database->query('select b2p.boxes_group, b.code from :table_templates_boxes_to_pages b2p, :table_templates_boxes b, :table_templates t where b2p.templates_id = :templates_id and b2p.page_specific = 1 and b2p.content_page in (:content_page) and b2p.templates_boxes_id = b.id and b.modules_group = :modules_group and b2p.templates_id = t.id order by b2p.boxes_group, b2p.sort_order'); $Qspecific->bindTable(':table_templates_boxes_to_pages', TABLE_TEMPLATES_BOXES_TO_PAGES); $Qspecific->bindTable(':table_templates_boxes', TABLE_TEMPLATES_BOXES); $Qspecific->bindTable(':table_templates', TABLE_TEMPLATES); $Qspecific->bindInt(':templates_id', $osC_Template->getID()); $Qspecific->bindRaw(':content_page', '"*", "' . $osC_Template->getGroup() . '/*", "' . $osC_Template->getGroup() . '/' . substr($osC_Template->getPageContentsFilename(), 0, strrpos($osC_Template->getPageContentsFilename(), '.')) . '"'); $Qspecific->bindValue(':modules_group', $this->_group); $Qspecific->execute(); if ($Qspecific->numberOfRows()) { while ($Qspecific->next()) { $data[$Qspecific->value('boxes_group')][] = $Qspecific->value('code'); } } else { $_data = array(); $Qmodules = $osC_Database->query('select b2p.boxes_group, b2p.content_page, b.code from :table_templates_boxes_to_pages b2p, :table_templates_boxes b, :table_templates t where b2p.templates_id = :templates_id and b2p.content_page in (:content_page) and b2p.templates_boxes_id = b.id and b.modules_group = :modules_group and b2p.templates_id = t.id order by b2p.boxes_group, b2p.sort_order'); $Qmodules->bindTable(':table_templates_boxes_to_pages', TABLE_TEMPLATES_BOXES_TO_PAGES); $Qmodules->bindTable(':table_templates_boxes', TABLE_TEMPLATES_BOXES); $Qmodules->bindTable(':table_templates', TABLE_TEMPLATES); $Qmodules->bindInt(':templates_id', $osC_Template->getID()); $Qmodules->bindRaw(':content_page', '"*", "' . $osC_Template->getGroup() . '/*", "' . $osC_Template->getGroup() . '/' . substr($osC_Template->getPageContentsFilename(), 0, strrpos($osC_Template->getPageContentsFilename(), '.')) . '"'); $Qmodules->bindValue(':modules_group', $this->_group); $Qmodules->execute(); while ($Qmodules->next()) { $_data[$Qmodules->value('boxes_group')][] = array('code' => $Qmodules->value('code'), 'page' => $Qmodules->value('content_page')); } foreach ($_data as $groups => $modules) { $clean = array(); foreach ($modules as $module) { if (isset($clean[$module['code']])) { if (substr_count($module['page'], '/') > substr_count($clean[$module['code']]['page'], '/')) { unset($clean[$module['code']]); } } $clean[$module['code']] = $module; } $_data[$groups] = $clean; } foreach ($_data as $groups => $modules) { foreach ($modules as $module) { $data[$groups][] = $module['code']; } } } $osC_Cache->writeBuffer($data); } $this->_modules = $data; } function getCode() { return $this->_code; } function getTitle() { return $this->_title; } function getTitleLink() { return $this->_title_link; } function hasTitleLink() { return !empty($this->_title_link); } function getContent() { return $this->_content; } function hasContent() { return !empty($this->_content); } function getAuthorName() { return $this->_author_name; } function getAuthorAddress() { return $this->_author_www; } function getGroup($group) { $modules = array(); if (isset($this->_modules[$group])) { foreach ($this->_modules[$group] as $module) { if (file_exists('includes/modules/' . $this->_group . '/' . $module . '.php')) { $class = 'osC_' . ucfirst($this->_group) . '_' . $module; if (class_exists($class) === false) { include('includes/modules/' . $this->_group . '/' . $module . '.php'); } $modules[] = $class; } } } return $modules; } function isInstalled($code = '', $group = '') { global $osC_Database; if (empty($code) && empty($group)) { static $is_installed; $code = $this->_code; $group = $this->_group; } if (isset($is_installed) === false) { $Qcheck = $osC_Database->query('select id from :table_templates_boxes where code = :code and modules_group = :modules_group'); $Qcheck->bindTable(':table_templates_boxes', TABLE_TEMPLATES_BOXES); $Qcheck->bindValue(':code', $code); $Qcheck->bindValue(':modules_group', $group); $Qcheck->execute(); $is_installed = ($Qcheck->numberOfRows()) ? true : false; } return $is_installed; } function hasKeys() { static $has_keys; if (isset($has_keys) === false) { $has_keys = (sizeof($this->getKeys()) > 0) ? true : false; } return $has_keys; } function getKeys() { if (isset($this->_keys) === false) { $this->_keys = array(); } return $this->_keys; } function isActive() { return true; } function install() { global $osC_Database, $osC_Language; $Qinstall = $osC_Database->query('insert into :table_templates_boxes (title, code, author_name, author_www, modules_group) values (:title, :code, :author_name, :author_www, :modules_group)'); $Qinstall->bindTable(':table_templates_boxes', TABLE_TEMPLATES_BOXES); $Qinstall->bindValue(':title', $this->_title); $Qinstall->bindValue(':code', $this->_code); $Qinstall->bindValue(':author_name', $this->_author_name); $Qinstall->bindValue(':author_www', $this->_author_www); $Qinstall->bindValue(':modules_group', $this->_group); $Qinstall->execute(); foreach ($osC_Language->getAll() as $key => $value) { if (file_exists(dirname(__FILE__) . '/../languages/' . $key . '/modules/' . $this->_group . '/' . $this->_code . '.xml')) { foreach ($osC_Language->extractDefinitions($key . '/modules/' . $this->_group . '/' . $this->_code . '.xml') as $def) { $Qcheck = $osC_Database->query('select id from :table_languages_definitions where definition_key = :definition_key and content_group = :content_group and languages_id = :languages_id limit 1'); $Qcheck->bindTable(':table_languages_definitions', TABLE_LANGUAGES_DEFINITIONS); $Qcheck->bindValue(':definition_key', $def['key']); $Qcheck->bindValue(':content_group', $def['group']); $Qcheck->bindInt(':languages_id', $value['id']); $Qcheck->execute(); if ($Qcheck->numberOfRows() === 1) { $Qdef = $osC_Database->query('update :table_languages_definitions set definition_value = :definition_value where definition_key = :definition_key and content_group = :content_group and languages_id = :languages_id'); } else { $Qdef = $osC_Database->query('insert into :table_languages_definitions (languages_id, content_group, definition_key, definition_value) values (:languages_id, :content_group, :definition_key, :definition_value)'); } $Qdef->bindTable(':table_languages_definitions', TABLE_LANGUAGES_DEFINITIONS); $Qdef->bindInt(':languages_id', $value['id']); $Qdef->bindValue(':content_group', $def['group']); $Qdef->bindValue(':definition_key', $def['key']); $Qdef->bindValue(':definition_value', $def['value']); $Qdef->execute(); } } } osC_Cache::clear('languages'); } function remove() { global $osC_Database, $osC_Language; $Qmodule = $osC_Database->query('select id from :table_templates_boxes where code = :code and modules_group = :modules_group'); $Qmodule->bindTable(':table_templates_boxes', TABLE_TEMPLATES_BOXES); $Qmodule->bindValue(':code', $this->_code); $Qmodule->bindValue(':modules_group', $this->_group); $Qmodule->execute(); $Qdel = $osC_Database->query('delete from :table_templates_boxes_to_pages where templates_boxes_id = :templates_boxes_id'); $Qdel->bindTable(':table_templates_boxes_to_pages', TABLE_TEMPLATES_BOXES_TO_PAGES); $Qdel->bindValue(':templates_boxes_id', $Qmodule->valueInt('id')); $Qdel->execute(); $Qdel = $osC_Database->query('delete from :table_templates_boxes where code = :code and modules_group = :modules_group'); $Qdel->bindTable(':table_templates_boxes', TABLE_TEMPLATES_BOXES); $Qdel->bindValue(':code', $this->_code); $Qdel->bindValue(':modules_group', $this->_group); $Qdel->execute(); if ($this->hasKeys()) { $Qdel = $osC_Database->query('delete from :table_configuration where configuration_key in (":configuration_key")'); $Qdel->bindTable(':table_configuration', TABLE_CONFIGURATION); $Qdel->bindRaw(':configuration_key', implode('", "', $this->getKeys())); $Qdel->execute(); } if (file_exists(dirname(__FILE__) . '/../languages/' . $osC_Language->getCode() . '/modules/' . $this->_group . '/' . $this->_code . '.xml')) { foreach ($osC_Language->extractDefinitions($osC_Language->getCode() . '/modules/' . $this->_group . '/' . $this->_code . '.xml') as $def) { $Qdel = $osC_Database->query('delete from :table_languages_definitions where definition_key = :definition_key and content_group = :content_group'); $Qdel->bindTable(':table_languages_definitions', TABLE_LANGUAGES_DEFINITIONS); $Qdel->bindValue(':definition_key', $def['key']); $Qdel->bindValue(':content_group', $def['group']); $Qdel->execute(); } osC_Cache::clear('languages'); } } }?>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?