categories.php
来自「this the oscommerce 3.0 aplha 4」· PHP 代码 · 共 248 行
PHP
248 行
<?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.*/ class osC_Categories_Admin { function getData($id, $language_id = null) { global $osC_Database, $osC_Language, $osC_CategoryTree; if ( empty($language_id) ) { $language_id = $osC_Language->getID(); } $Qcategories = $osC_Database->query('select c.*, cd.* from :table_categories c, :table_categories_description cd where c.categories_id = :categories_id and c.categories_id = cd.categories_id and cd.language_id = :language_id'); $Qcategories->bindTable(':table_categories', TABLE_CATEGORIES); $Qcategories->bindTable(':table_categories_description', TABLE_CATEGORIES_DESCRIPTION); $Qcategories->bindInt(':categories_id', $id); $Qcategories->bindInt(':language_id', $language_id); $Qcategories->execute(); $data = $Qcategories->toArray(); $data['childs_count'] = sizeof($osC_CategoryTree->getChildren($Qcategories->valueInt('categories_id'), $dummy = array())); $data['products_count'] = $osC_CategoryTree->getNumberOfProducts($Qcategories->valueInt('categories_id')); $Qcategories->freeResult(); return $data; } function save($id = null, $data) { global $osC_Database, $osC_Language; $category_id = ''; $error = false; $osC_Database->startTransaction(); if ( is_numeric($id) ) { $Qcat = $osC_Database->query('update :table_categories set sort_order = :sort_order, last_modified = now() where categories_id = :categories_id'); $Qcat->bindInt(':categories_id', $id); } else { $Qcat = $osC_Database->query('insert into :table_categories (parent_id, sort_order, date_added) values (:parent_id, :sort_order, now())'); $Qcat->bindInt(':parent_id', $data['parent_id']); } $Qcat->bindTable(':table_categories', TABLE_CATEGORIES); $Qcat->bindInt(':sort_order', $data['sort_order']); $Qcat->setLogging($_SESSION['module'], $id); $Qcat->execute(); if ( !$osC_Database->isError() ) { $category_id = (is_numeric($id)) ? $id : $osC_Database->nextID(); foreach ($osC_Language->getAll() as $l) { if ( is_numeric($id) ) { $Qcd = $osC_Database->query('update :table_categories_description set categories_name = :categories_name where categories_id = :categories_id and language_id = :language_id'); } else { $Qcd = $osC_Database->query('insert into :table_categories_description (categories_id, language_id, categories_name) values (:categories_id, :language_id, :categories_name)'); } $Qcd->bindTable(':table_categories_description', TABLE_CATEGORIES_DESCRIPTION); $Qcd->bindInt(':categories_id', $category_id); $Qcd->bindInt(':language_id', $l['id']); $Qcd->bindValue(':categories_name', $data['name'][$l['id']]); $Qcd->setLogging($_SESSION['module'], $category_id); $Qcd->execute(); if ( $osC_Database->isError() ) { $error = true; break; } } if ( $error === false ) { $categories_image = new upload($data['image'], realpath('../' . DIR_WS_IMAGES . 'categories')); if ( $categories_image->exists() && $categories_image->parse() && $categories_image->save() ) { $Qcf = $osC_Database->query('update :table_categories set categories_image = :categories_image where categories_id = :categories_id'); $Qcf->bindTable(':table_categories', TABLE_CATEGORIES); $Qcf->bindValue(':categories_image', $categories_image->filename); $Qcf->bindInt(':categories_id', $category_id); $Qcf->setLogging($_SESSION['module'], $category_id); $Qcf->execute(); if ( $osC_Database->isError() ) { $error = true; } } } } if ( $error === false ) { $osC_Database->commitTransaction(); osC_Cache::clear('categories'); osC_Cache::clear('category_tree'); osC_Cache::clear('also_purchased'); return true; } $osC_Database->rollbackTransaction(); return false; } function delete($id) { global $osC_Database, $osC_CategoryTree; if ( is_numeric($id) ) { $osC_CategoryTree->setBreadcrumbUsage(false); $categories = array_merge(array(array('id' => $id, 'text' => '')), $osC_CategoryTree->getTree($id)); $products = array(); $products_delete = array(); foreach ($categories as $c_entry) { $Qproducts = $osC_Database->query('select products_id from :table_products_to_categories where categories_id = :categories_id'); $Qproducts->bindTable(':table_products_to_categories', TABLE_PRODUCTS_TO_CATEGORIES); $Qproducts->bindInt(':categories_id', $c_entry['id']); $Qproducts->execute(); while ($Qproducts->next()) { $products[$Qproducts->valueInt('products_id')]['categories'][] = $c_entry['id']; } } foreach ($products as $key => $value) { $Qcheck = $osC_Database->query('select count(*) as total from :table_products_to_categories where products_id = :products_id and categories_id not in :categories_id'); $Qcheck->bindTable(':table_products_to_categories', TABLE_PRODUCTS_TO_CATEGORIES); $Qcheck->bindInt(':products_id', $key); $Qcheck->bindRaw(':categories_id', '("' . implode('", "', $value['categories']) . '")'); $Qcheck->execute(); if ($Qcheck->valueInt('total') < 1) { $products_delete[$key] = $key; } } osc_set_time_limit(0); foreach ($categories as $c_entry) { $osC_Database->startTransaction(); $Qimage = $osC_Database->query('select categories_image from :table_categories where categories_id = :categories_id'); $Qimage->bindTable(':table_categories', TABLE_CATEGORIES); $Qimage->bindInt(':categories_id', $c_entry['id']); $Qimage->execute(); $Qc = $osC_Database->query('delete from :table_categories where categories_id = :categories_id'); $Qc->bindTable(':table_categories', TABLE_CATEGORIES); $Qc->bindInt(':categories_id', $c_entry['id']); $Qc->setLogging($_SESSION['module'], $id); $Qc->execute(); if ( !$osC_Database->isError() ) { $Qcd = $osC_Database->query('delete from :table_categories_description where categories_id = :categories_id'); $Qcd->bindTable(':table_categories_description', TABLE_CATEGORIES_DESCRIPTION); $Qcd->bindInt(':categories_id', $c_entry['id']); $Qcd->setLogging($_SESSION['module'], $id); $Qcd->execute(); if ( !$osC_Database->isError() ) { $Qp2c = $osC_Database->query('delete from :table_products_to_categories where categories_id = :categories_id'); $Qp2c->bindTable(':table_products_to_categories', TABLE_PRODUCTS_TO_CATEGORIES); $Qp2c->bindInt(':categories_id', $c_entry['id']); $Qp2c->setLogging($_SESSION['module'], $id); $Qp2c->execute(); if ( !$osC_Database->isError() ) { $osC_Database->commitTransaction(); osC_Cache::clear('categories'); osC_Cache::clear('category_tree'); osC_Cache::clear('also_purchased'); if ( !osc_empty($Qimage->value('categories_image')) ) { $Qcheck = $osC_Database->query('select count(*) as total from :table_categories where categories_image = :categories_image'); $Qcheck->bindTable(':table_categories', TABLE_CATEGORIES); $Qcheck->bindValue(':categories_image', $Qimage->value('categories_image')); $Qcheck->execute(); if ( $Qcheck->numberOfRows() === 0 ) { if (file_exists(realpath('../' . DIR_WS_IMAGES . 'categories/' . $Qimage->value('categories_image')))) { @unlink(realpath('../' . DIR_WS_IMAGES . 'categories/' . $Qimage->value('categories_image'))); } } } } else { $osC_Database->rollbackTransaction(); } } else { $osC_Database->rollbackTransaction(); } } else { $osC_Database->rollbackTransaction(); } } foreach ($products_delete as $id) { osC_Products_Admin::remove($id); } osC_Cache::clear('categories'); osC_Cache::clear('category_tree'); osC_Cache::clear('also_purchased'); return true; } return false; } function move($id, $new_id) { global $osC_Database; $category_array = explode('_', $new_id); if ( in_array($id, $category_array)) { return false; } $Qupdate = $osC_Database->query('update :table_categories set parent_id = :parent_id, last_modified = now() where categories_id = :categories_id'); $Qupdate->bindTable(':table_categories', TABLE_CATEGORIES); $Qupdate->bindInt(':parent_id', end($category_array)); $Qupdate->bindInt(':categories_id', $id); $Qupdate->setLogging($_SESSION['module'], $id); $Qupdate->execute(); osC_Cache::clear('categories'); osC_Cache::clear('category_tree'); osC_Cache::clear('also_purchased'); return true; } }?>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?