break; case 'import_readtext': try { $import_data = import_text_to_array($import_file_content, $import_format, $import_separator); match_devicepart_names_to_ids($database, $current_user, $log, $import_data); $import_loop = build_deviceparts_import_template_loop($database, $current_user, $log, $import_data); } catch (Exception $e) { $messages[] = array('text' => nl2br($e->getMessage()), 'strong' => true, 'color' => 'red'); } break; case 'import': $only_check_data = isset($_REQUEST['check_import_data']); try { $import_data = extract_import_data_from_request($import_rowcount); $import_loop = build_deviceparts_import_template_loop($database, $current_user, $log, $import_data); import_device_parts($database, $current_user, $log, $device->get_id(), $import_data, $only_check_data); $import_data_is_valid = true; // no exception in "import_device_parts()", so the data is valid if (!$only_check_data) { // clear import variables, so the import table is no longer visible in the HTML output $import_file_content = ''; unset($import_data); unset($import_loop); } } catch (Exception $e) { $messages[] = array('text' => nl2br($e->getMessage()), 'strong' => true, 'color' => 'red'); } break; } } if (isset($reload_site) && $reload_site) {
if (!$fatal_error) { try { $order_devices = Device::get_order_devices($database, $current_user, $log); $order_devices_loop = array(); $row_odd = true; foreach ($order_devices as $device) { $too_less_parts = 0; foreach ($device->get_parts() as $devicepart) { $needed = $devicepart->get_mount_quantity() * $device->get_order_quantity(); $instock = $devicepart->get_part()->get_instock(); $mininstock = $devicepart->get_part()->get_mininstock(); if ($instock - $needed < $mininstock) { $too_less_parts++; } } $order_devices_loop[] = array('row_odd' => $row_odd, 'id' => $device->get_id(), 'name' => $device->get_name(), 'full_path' => $device->get_full_path(), 'order_quantity' => $device->get_order_quantity(), 'only_missing_parts' => $device->get_order_only_missing_parts(), 'parts_count' => $device->get_parts_count(), 'parts_count_to_order' => $too_less_parts); $row_odd = !$row_odd; } $html->set_loop('order_devices_loop', $order_devices_loop); } 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', 'validatenumber')); if (!$fatal_error) {
/** * * Enter description here ... * @param Device $d */ public static function save(Device $d) { $dbh = $GLOBALS['dbh']; if ($d->get_id()) { // Update $data = $dbh->prepare("\n\t\t\t\tUPDATE \n\t\t\t\t\tdevice\n\t\t\t\tSET \n\t\t\t\t\tuid=:uid, name=:name, cost=:cost, `range`=:range, `status`=:status\n\t\t\t\tWHERE \n\t\t\t\t\tid=:id\n\t\t\t"); $data->execute(array(':uid' => $d->get_uid(), ':name' => $d->get_name(), ':cost' => $d->get_cost(), ':range' => $d->get_range(), ':status' => $d->get_status(), ':id' => $d->get_id())); } else { // Insert $data = $dbh->prepare("\n\t\t\t\tINSERT \n\t\t\t\t\tINTO device (uid, name, cost, `range`)\n\t\t\t\tVALUES\n\t\t\t\t\t(:uid, :name, :cost, :range)\n\t\t\t"); $data->execute(array(':uid' => $d->get_uid(), ':name' => $d->get_name(), ':cost' => $d->get_cost(), ':range' => $d->get_range())); } }
/** * @brief Create a new Device as a copy from this one. All DeviceParts will be copied too. * * @param string $name The name of the new device * @param integer $parent_id The ID of the new device's parent device * @param boolean $with_subdevices If true, all subdevices will be copied too * * @throws Exception if there was an error */ public function copy($name, $parent_id, $with_subdevices = false) { try { if ($with_subdevices && $parent_id > 0) { // check if $parent_id is NOT a child of this device $parent_device = new Device($this->database, $this->current_user, $this->log, $parent_id); if ($parent_device->get_id() == $this->get_id() || $parent_device->is_child_of($this)) { throw new Exception('Eine Baugruppe kann nicht in sich selber kopiert werden!'); } } $transaction_id = $this->database->begin_transaction(); // start transaction $new_device = Device::add($this->database, $this->current_user, $this->log, $name, $parent_id); $device_parts = $this->get_parts(); foreach ($device_parts as $part) { $new_part = DevicePart::add($this->database, $this->current_user, $this->log, $new_device->get_id(), $part->get_part()->get_id(), $part->get_mount_quantity(), $part->get_mount_names()); } if ($with_subdevices) { $subdevices = $this->get_subelements(false); foreach ($subdevices as $device) { $device->copy($device->get_name(), $new_device->get_id(), true); } } $this->database->commit($transaction_id); // commit transaction } catch (Exception $e) { $this->database->rollback(); // rollback transaction throw new Exception("Die Baugruppe \"" . $this->get_name() . "\"konnte nicht kopiert werden!\nGrund: " . $e->getMessage()); } }