administrators.php
来自「this the oscommerce 3.0 aplha 4」· PHP 代码 · 共 279 行
PHP
279 行
<?php/* $Id: $ osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright (c) 2007 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.*/ define('OSC_ADMINISTRATORS_ACCESS_MODE_ADD', 'add'); define('OSC_ADMINISTRATORS_ACCESS_MODE_SET', 'set'); define('OSC_ADMINISTRATORS_ACCESS_MODE_REMOVE', 'remove'); class osC_Administrators_Admin { function getData($id) { global $osC_Database; $Qadmin = $osC_Database->query('select id, user_name from :table_administrators where id = :id'); $Qadmin->bindTable(':table_administrators', TABLE_ADMINISTRATORS); $Qadmin->bindInt(':id', $id); $Qadmin->execute(); $modules = array( 'access_modules' => array() ); $Qaccess = $osC_Database->query('select module from :table_administrators_access where administrators_id = :administrators_id'); $Qaccess->bindTable(':table_administrators_access', TABLE_ADMINISTRATORS_ACCESS); $Qaccess->bindInt(':administrators_id', $id); $Qaccess->execute(); while ( $Qaccess->next() ) { $modules['access_modules'][] = $Qaccess->value('module'); } $data = array_merge($Qadmin->toArray(), $modules); unset($modules); $Qaccess->freeResult(); $Qadmin->freeResult(); return $data; } function save($id = null, $data, $modules = null) { global $osC_Database; $error = false; $Qcheck = $osC_Database->query('select id from :table_administrators where user_name = :user_name'); if ( is_numeric($id) ) { $Qcheck->appendQuery('and id != :id'); $Qcheck->bindInt(':id', $id); } $Qcheck->appendQuery('limit 1'); $Qcheck->bindTable(':table_administrators', TABLE_ADMINISTRATORS); $Qcheck->bindValue(':user_name', $data['username']); $Qcheck->execute(); if ($Qcheck->numberOfRows() < 1) { $osC_Database->startTransaction(); if ( is_numeric($id) ) { $Qadmin = $osC_Database->query('update :table_administrators set user_name = :user_name'); if ( isset($data['password']) && !empty($data['password']) ) { $Qadmin->appendQuery(', user_password = :user_password'); $Qadmin->bindValue(':user_password', osc_encrypt_string(trim($data['password']))); } $Qadmin->appendQuery('where id = :id'); $Qadmin->bindInt(':id', $id); } else { $Qadmin = $osC_Database->query('insert into :table_administrators (user_name, user_password) values (:user_name, :user_password)'); $Qadmin->bindValue(':user_password', osc_encrypt_string(trim($data['password']))); } $Qadmin->bindTable(':table_administrators', TABLE_ADMINISTRATORS); $Qadmin->bindValue(':user_name', $data['username']); $Qadmin->setLogging($_SESSION['module'], $id); $Qadmin->execute(); if ( !$osC_Database->isError() ) { if ( !is_numeric($id) ) { $id = $osC_Database->nextID(); } } else { $error = true; } if ( $error === false ) { if ( !empty($modules) ) { if ( in_array('*', $modules) ) { $modules = array('*'); } foreach ($modules as $module) { $Qcheck = $osC_Database->query('select administrators_id from :table_administrators_access where administrators_id = :administrators_id and module = :module limit 1'); $Qcheck->bindTable(':table_administrators_access', TABLE_ADMINISTRATORS_ACCESS); $Qcheck->bindInt(':administrators_id', $id); $Qcheck->bindValue(':module', $module); $Qcheck->execute(); if ( $Qcheck->numberOfRows() < 1 ) { $Qinsert = $osC_Database->query('insert into :table_administrators_access (administrators_id, module) values (:administrators_id, :module)'); $Qinsert->bindTable(':table_administrators_access', TABLE_ADMINISTRATORS_ACCESS); $Qinsert->bindInt(':administrators_id', $id); $Qinsert->bindValue(':module', $module); $Qinsert->setLogging($_SESSION['module'], $id); $Qinsert->execute(); if ( $osC_Database->isError() ) { $error = true; break; } } } } } if ( $error === false ) { $Qdel = $osC_Database->query('delete from :table_administrators_access where administrators_id = :administrators_id'); if ( !empty($modules) ) { $Qdel->appendQuery('and module not in (":module")'); $Qdel->bindRaw(':module', implode('", "', $modules)); } $Qdel->bindTable(':table_administrators_access', TABLE_ADMINISTRATORS_ACCESS); $Qdel->bindInt(':administrators_id', $id); $Qdel->setLogging($_SESSION['module'], $id); $Qdel->execute(); if ( $osC_Database->isError() ) { $error = true; } } if ( $error === false ) { $osC_Database->commitTransaction(); return 1; } else { $osC_Database->rollbackTransaction(); return -1; } } else { return -2; } } function delete($id) { global $osC_Database; $osC_Database->startTransaction(); $Qdel = $osC_Database->query('delete from :table_administrators_access where administrators_id = :administrators_id'); $Qdel->bindTable(':table_administrators_access', TABLE_ADMINISTRATORS_ACCESS); $Qdel->bindInt(':administrators_id', $id); $Qdel->setLogging($_SESSION['module'], $id); $Qdel->execute(); if ( !$osC_Database->isError() ) { $Qdel = $osC_Database->query('delete from :table_administrators where id = :id'); $Qdel->bindTable(':table_administrators', TABLE_ADMINISTRATORS); $Qdel->bindInt(':id', $id); $Qdel->setLogging($_SESSION['module'], $id); $Qdel->execute(); if ( !$osC_Database->isError() ) { $osC_Database->commitTransaction(); return true; } } $osC_Database->rollbackTransaction(); return false; } function setAccessLevels($id, $modules, $mode = OSC_ADMINISTRATORS_ACCESS_MODE_ADD) { global $osC_Database; $error = false; if ( in_array('*', $modules) ) { $modules = array('*'); } $osC_Database->startTransaction(); if ( ($mode == OSC_ADMINISTRATORS_ACCESS_MODE_ADD) || ($mode == OSC_ADMINISTRATORS_ACCESS_MODE_SET) ) { foreach ($modules as $module) { $execute = true; if ( $module != '*' ) { $Qcheck = $osC_Database->query('select administrators_id from :table_administrators_access where administrators_id = :administrators_id and module = :module limit 1'); $Qcheck->bindTable(':table_administrators_access', TABLE_ADMINISTRATORS_ACCESS); $Qcheck->bindInt(':administrators_id', $id); $Qcheck->bindValue(':module', '*'); $Qcheck->execute(); if ( $Qcheck->numberOfRows() === 1 ) { $execute = false; } } if ( $execute === true ) { $Qcheck = $osC_Database->query('select administrators_id from :table_administrators_access where administrators_id = :administrators_id and module = :module limit 1'); $Qcheck->bindTable(':table_administrators_access', TABLE_ADMINISTRATORS_ACCESS); $Qcheck->bindInt(':administrators_id', $id); $Qcheck->bindValue(':module', $module); $Qcheck->execute(); if ( $Qcheck->numberOfRows() < 1 ) { $Qinsert = $osC_Database->query('insert into :table_administrators_access (administrators_id, module) values (:administrators_id, :module)'); $Qinsert->bindTable(':table_administrators_access', TABLE_ADMINISTRATORS_ACCESS); $Qinsert->bindInt(':administrators_id', $id); $Qinsert->bindValue(':module', $module); $Qinsert->setLogging($_SESSION['module'], $id); $Qinsert->execute(); if ( $osC_Database->isError() ) { $error = true; break; } } } } } if ( $error === false ) { if ( ($mode == OSC_ADMINISTRATORS_ACCESS_MODE_REMOVE) || ($mode == OSC_ADMINISTRATORS_ACCESS_MODE_SET) || in_array('*', $modules) ) { if ( !empty($modules) ) { $Qdel = $osC_Database->query('delete from :table_administrators_access where administrators_id = :administrators_id'); if ( $mode == OSC_ADMINISTRATORS_ACCESS_MODE_REMOVE ) { if ( !in_array('*', $modules) ) { $Qdel->appendQuery('and module in (":module")'); $Qdel->bindRaw(':module', implode('", "', $modules)); } } else { $Qdel->appendQuery('and module not in (":module")'); $Qdel->bindRaw(':module', implode('", "', $modules)); } $Qdel->bindTable(':table_administrators_access', TABLE_ADMINISTRATORS_ACCESS); $Qdel->bindInt(':administrators_id', $id); $Qdel->setLogging($_SESSION['module'], $id); $Qdel->execute(); if ( $osC_Database->isError() ) { $error = true; break; } } } } if ( $error === false ) { $osC_Database->commitTransaction(); return true; } $osC_Database->rollbackTransaction(); return false; } }?>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?