<?PHP /* part-db version 0.1 Copyright (C) 2005 Christoph Lechner http://www.cl-projects.de/ part-db version 0.2+ Copyright (C) 2009 K. Jacobs and others (see authors.php) http://code.google.com/p/part-db/ 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 2 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 $Id: show_search_parts.php 659 2013-06-15 22:37:02Z kami89@bluewin.ch $ Changelog (sorted by date): [DATE] [NICKNAME] [CHANGES] 2012-??-?? weinbauer73 - changed to templates 2012-10-10 kami89 - changed to OOP */ include_once('start_session.php'); include_once(BASE.'/lib/lib.export.php'); $messages = array(); $fatal_error = false; // if a fatal error occurs, only the $messages will be printed, but not the site content /******************************************************************************** * * Evaluate $_REQUEST * *********************************************************************************/ $part_id = isset($_REQUEST['selected_id']) ? (integer)$_REQUEST['selected_id'] : 0; $keyword = isset($_REQUEST['keyword']) ? trim((string)$_REQUEST['keyword']) : ''; $search_name = isset($_REQUEST['search_name']); $search_category = isset($_REQUEST['search_category']); $search_description = isset($_REQUEST['search_description']); $search_comment = isset($_REQUEST['search_comment']); $search_supplier = isset($_REQUEST['search_supplier']); $search_supplierpartnr = isset($_REQUEST['search_supplierpartnr']); $search_storelocation = isset($_REQUEST['search_storelocation']); $search_footprint = isset($_REQUEST['search_footprint']); $search_manufacturer = isset($_REQUEST['search_manufacturer']); $search_last_modified = isset($_REQUEST['search_last_modified']); $table_rowcount = isset($_REQUEST['table_rowcount']) ? (integer)$_REQUEST['table_rowcount'] : 0; $export_format_id = isset($_REQUEST['export_format']) ? (integer)$_REQUEST['export_format'] : 0; $action = 'default'; if (isset($_REQUEST['export'])) {$action = 'export';} $selected_part_id = 0; for($i=0; $i<$table_rowcount; $i++) { if (isset($_REQUEST['decrement_'.$i])) { $action = 'decrement'; $selected_part_id = isset($_REQUEST['id_'.$i]) ? (integer)$_REQUEST['id_'.$i] : 0; } if (isset($_REQUEST['increment_'.$i])) { $action = 'increment'; $selected_part_id = isset($_REQUEST['id_'.$i]) ? (integer)$_REQUEST['id_'.$i] : 0; } } /******************************************************************************** * * Initialize Objects * *********************************************************************************/ $html = new HTML($config['html']['theme'], $config['html']['custom_css'], 'Suchresultate'); try { $database = new Database(); $log = new Log($database); $current_user = new User($database, $current_user, $log, 1); // admin if ($selected_part_id > 0) $part = new Part($database, $current_user, $log, $selected_part_id); else $part = NULL; } catch (Exception $e) { $messages[] = array('text' => nl2br($e->getMessage()), 'strong' => true, 'color' => 'red'); $fatal_error = true; } /******************************************************************************** * * Execute actions * *********************************************************************************/ if ( ! $fatal_error) { switch ($action) { case 'decrement': // remove one part try { if ( ! is_object($part)) throw new Exception('Es wurde keine gültige Bauteil-ID übermittelt!'); $part->set_instock($part->get_instock() - 1); $reload_site = true; } catch (Exception $e) { $messages[] = array('text' => nl2br($e->getMessage()), 'strong' => true, 'color' => 'red'); } break; case 'increment': // add one part try { if ( ! is_object($part)) throw new Exception('Es wurde keine gültige Bauteil-ID übermittelt!'); $part->set_instock($part->get_instock() + 1); $reload_site = true; } catch (Exception $e) { $messages[] = array('text' => nl2br($e->getMessage()), 'strong' => true, 'color' => 'red'); } break; case 'export': try { $parts = Part::search_parts($database, $current_user, $log, $keyword, '', $search_name, $search_description, $search_comment, $search_footprint, $search_category, $search_storelocation, $search_supplier, $search_supplierpartnr, $search_manufacturer, $search_last_modified); $export_string = export_parts($parts, 'searchparts', $export_format_id, true, 'search_parts'); } catch (Exception $e) { $messages[] = array('text' => nl2br($e->getMessage()), 'strong' => true, 'color' => 'red'); } break; } } if (isset($reload_site) && $reload_site) { // reload the site to avoid multiple actions by manual refreshing $header = 'Location: show_search_parts.php?keyword='.$keyword; if ($search_name) {$header.= '&search_name=1';} if ($search_category) {$header.= '&search_category=1';} if ($search_description) {$header.= '&search_description=1';} if ($search_comment) {$header.= '&search_comment=1';} if ($search_supplier) {$header.= '&search_supplier=1';} if ($search_supplierpartnr) {$header.= '&search_supplierpartnr=1';} if ($search_storelocation) {$header.= '&search_storelocation=1';} if ($search_footprint) {$header.= '&search_footprint=1';} if ($search_manufacturer) {$header.= '&search_manufacturer=1';} if ($search_last_modified) {$header.= '&search_last_modified=1';} header($header); } /******************************************************************************** * * Generate Table * *********************************************************************************/ if ( ! $fatal_error) { try { $category_parts = Part::search_parts($database, $current_user, $log, $keyword, 'categories', $search_name, $search_description, $search_comment, $search_footprint, $search_category, $search_storelocation, $search_supplier, $search_supplierpartnr, $search_manufacturer, $search_last_modified); $hits_count = count($category_parts, COUNT_RECURSIVE) - count($category_parts); $parts_table_loops = array(); foreach($category_parts as $category_full_path => $parts) { $parts_table_loops[$category_full_path] = Part::build_template_table_array($parts, 'search_parts'); } } catch (Exception $e) { $messages[] = array('text' => nl2br($e->getMessage()), 'strong' => true, 'color' => 'red'); $fatal_error = true; } } /******************************************************************************** * * Set the rest of the HTML variables * *********************************************************************************/ $html->use_javascript(array('popup')); $html->set_variable('keyword', $keyword, 'string'); $html->set_variable('hits_count', (isset($hits_count) ? $hits_count : 0), 'integer'); $html->set_variable('search_name', $search_name, 'boolean'); $html->set_variable('search_category', $search_category, 'boolean'); $html->set_variable('search_description', $search_description, 'boolean'); $html->set_variable('search_comment', $search_comment, 'boolean'); $html->set_variable('search_supplier', $search_supplier, 'boolean'); $html->set_variable('search_supplierpartnr', $search_supplierpartnr, 'boolean'); $html->set_variable('search_storelocation', $search_storelocation, 'boolean'); $html->set_variable('search_footprint', $search_footprint, 'boolean'); $html->set_variable('search_manufacturer', $search_manufacturer, 'boolean'); $html->set_variable('search_last_modified', $search_last_modified, 'boolean'); if ( ! $fatal_error) { // export formats $html->set_loop('export_formats', build_export_formats_loop('searchparts')); // global stuff $html->set_variable('disable_footprints', $config['footprints']['disable'], 'boolean'); $html->set_variable('disable_manufacturers', $config['manufacturers']['disable'], 'boolean'); $html->set_variable('disable_auto_datasheets', $config['auto_datasheets']['disable'], 'boolean'); $html->set_variable('use_modal_popup', $config['popup']['modal'], 'boolean'); $html->set_variable('popup_width', $config['popup']['width'], 'integer'); $html->set_variable('popup_height', $config['popup']['height'], 'integer'); } /******************************************************************************** * * Generate HTML Output * *********************************************************************************/ $html->print_header($messages); if ( ! $fatal_error) { $html->print_template('search_header'); foreach($parts_table_loops as $category_full_path => $loop) { $html->set_variable('category_full_path', $category_full_path, 'string'); $html->set_variable('table_rowcount', count($loop), 'integer'); $html->set_loop('table', $loop); $html->print_template('searched_parts_table'); } } $html->print_footer(); ?>