public function action_upload() { $out = array('status' => 'no'); $val = \Validation::forge(); $val->add_field('key2', 'Element id', 'required|min_length[1]|max_length[20]'); $val->add_field('key1', 'Device id', 'required|min_length[1]|max_length[20]'); $val->add_field('key3', 'Template or device', 'required|min_length[1]|max_length[20]'); if ($val->run()) { $uploaddir = DOCROOT . 'images/uploads/'; $name = basename($_FILES['image']['name']); $uploadfile = $uploaddir . $name; if (move_uploaded_file($_FILES['image']['tmp_name'], $uploadfile)) { if ($val->validated('key3') != 'true') { $this->tmpl = false; $element = Model_Device_Fieldset::find($val->validated('key2')); } else { $this->tmpl = true; $element = Model_Device_Template_Field::find($val->validated('key2')); } if ($element) { $imageOnHdd = \Image::forge()->load($uploadfile); $sizes = $imageOnHdd->sizes(); //add new image in database $props = array('name' => $name, 'elementID' => $element->id, 'type' => $this->sizeType($sizes), 'width' => 0, 'height' => 0); if ($this->tmpl) { $img = new Model_Device_Template_Image($props); $prefix = 'temp'; } else { $prefix = ''; $img = new Model_Image($props); } $new_width = $sizes->width >= 1000 ? 1000 : $sizes->width; $new_height = $sizes->height >= 750 ? 750 : $sizes->height; //resize original image 1000x1000px to folder > public/images //make thumb 135x135px to folder public/images/thumb if ($img->save()) { $imageOnHdd->resize($new_width, $new_height, true, false)->save(DOCROOT . 'images/' . $prefix . $img->id . '.png')->config('quality', 70)->crop_resize(85, 85, true, false)->save(DOCROOT . 'images/tumb/' . $prefix . $img->id . '.png'); $resized = \Image::forge()->load(DOCROOT . 'images/' . $prefix . $img->id . '.png')->sizes(); $img->width = $resized->width; $img->height = $resized->height; $img->save(); unlink($uploadfile); $out = array('id' => $img->id, 'type' => $img->type, 'status' => 'ok', 'h' => $img->height, 'w' => $img->width); } } } } echo json_encode($out); }
public function uploadfileAction($filePrefix = 'file_', $fileSize, $tmpFileName, $destinationFile, $resize_params = null, $thumbs_params = null) { if ($fileSize <= 2097152) { if (move_uploaded_file($tmpFileName, $destinationFile)) { $nufile = $filePrefix . uniqid() . '.jpg'; rename($destinationFile, UPLOADS_PATH . '/' . $nufile); $image = new Model_Image(); $image->load(UPLOADS_PATH . '/' . $nufile); if ($resize_params && !empty($resize_params)) { if (count($resize_params) == 1) { $image->resizeToHeight($resize_params[0]); } else { $image->resize($resize_params[0], $resize_params[1]); // 640 x 480 } $image->save(UPLOADS_PATH . '/' . $nufile); } //create thumbs dir if not exist if (!is_dir(UPLOADS_PATH . '/thumbs')) { mkdir(UPLOADS_PATH . '/thumbs'); } //create thumb image in thumbs dir using Model_Image if ($thumbs_params && !empty($thumbs_params)) { if (count($thumbs_params) == 1) { $image->resizeToWidth($thumbs_params[0]); } else { $image->resize($thumbs_params[0], $thumbs_params[1]); // 640 x 480 } $image->save(UPLOADS_PATH . '/thumbs/th_' . $nufile); } //create db record $nufile_id = $this->insertData("Files", array("Created" => date('Y-m-d H:i:s'), "LastEdited" => date('Y-m-d H:i:s'), "Filename" => $nufile)); } } return array('FileID' => $nufile_id, 'Filename' => $nufile); }
/** * Action: import flyers */ public function action_flyers() { $this->history = false; Permission::required(new Model_Flyer(), Model_Flyer::PERMISSION_IMPORT, self::$user); // Action if ($event_ids = (array) Arr::get($_REQUEST, 'event_id')) { foreach ($event_ids as $event_id) { /** @var Model_Event $event */ $event = Model_Event::factory($event_id); if (!$event->loaded()) { throw new Model_Exception($event, $event_id); } if ($import = Arr::get($_REQUEST, 'import')) { // Import flyer switch ($import) { case 'front': $urls = array('front' => $event->flyer_front_url); break; case 'back': $urls = array('back' => $event->flyer_back_url); break; case 'both': $urls = array('back' => $event->flyer_back_url, 'front' => $event->flyer_front_url); break; default: continue; } // Create flyers foreach ($urls as $side => $url) { if (!$url) { continue; } $image = new Model_Image(); $image->remote = $url; $image->created = time(); if ($event->author_id) { $image->author_id = $event->author_id; } try { $image->save(); // Set the image as flyer try { $flyer = new Model_Flyer(); $flyer->set_fields(array('image_id' => $image->id, 'event_id' => $event->id, 'name' => $event->name, 'stamp_begin' => $event->stamp_begin)); $flyer->save(); } catch (Kohana_Exception $e) { //$event->relate('flyers', array($image->id)); } if ($side == 'front') { $event->flyer_front_image_id = $image->id; $event->flyer_front_url = $image->get_url(); } else { if ($side == 'back') { $event->flyer_back_image_id = $image->id; $event->flyer_back_url = $image->get_url(); } } // Save event, skipping validation $event->save(false); Widget::add('main', HTML::anchor(Route::model($event), HTML::image($image->get_url('thumbnail')))); } catch (Validation_Exception $e) { Widget::add('main', Debug::dump($e->array->errors('validation'))); } catch (Kohana_Exception $e) { Widget::add('main', $e->getMessage() . '<br />'); } } } else { if ($clear = Arr::get($_REQUEST, 'clear')) { // Clear flyer if ($clear == 'front' && $event->flyer_front_url) { $event->flyer_front_url = null; $event->save(false); } else { if ($clear == 'back' && $event->flyer_back_url) { $event->flyer_back_url = null; $event->save(false); } else { if ($clear == 'both') { $event->flyer_front_url = null; $event->flyer_back_url = null; $event->save(false); } } } } } } } // Load importable flyers $events = Model_Event::factory()->load(DB::select_array(Model_Event::factory()->fields())->where_open()->where(DB::expr('CHAR_LENGTH(flyer_front_url)'), '>', 4)->and_where(DB::expr('COALESCE(flyer_front_image_id, 0)'), '=', 0)->where_close()->or_where_open()->where(DB::expr('CHAR_LENGTH(flyer_back_url)'), '>', 4)->and_where(DB::expr('COALESCE(flyer_back_image_id, 0)'), '=', 0)->where_close()->order_by('id', 'ASC'), 100); if (count($events)) { Widget::add('main', Form::open(null, array('method' => 'get'))); foreach ($events as $event) { if ($event->flyer_front_url && !$event->flyer_front_image_id) { $front = '<p style="overflow: hidden">'; $front .= HTML::anchor($event->flyer_front_url, HTML::image($event->flyer_front_url, array('width' => '100')), array('target' => '_blank')) . ' '; $front .= HTML::anchor(Route::get('events')->uri(array('action' => 'flyers')) . '?event_id=' . $event->id . '&import=front', __('Import front')) . ': ' . $event->flyer_front_url . '<br />'; $front .= HTML::anchor(Route::get('events')->uri(array('action' => 'flyers')) . '?event_id=' . $event->id . '&clear=front', __('Clear front')); $front .= '</p>'; } else { $front = ''; } if ($event->flyer_back_url && !$event->flyer_back_image_id) { $back = '<p style="overflow: hidden">'; $back .= HTML::anchor($event->flyer_back_url, HTML::image($event->flyer_back_url, array('width' => '100')), array('target' => '_blank')) . ' '; $back .= HTML::anchor(Route::get('events')->uri(array('action' => 'flyers')) . '?event_id=' . $event->id . '&import=back', __('Import back')) . ': ' . $event->flyer_back_url . '<br />'; $back .= HTML::anchor(Route::get('events')->uri(array('action' => 'flyers')) . '?event_id=' . $event->id . '&clear=back', __('Clear back')); $back .= '</p>'; } else { $back = ''; } Widget::add('main', '<h4>' . Form::checkbox('event_id[]', $event->id) . ' ' . $event->id . ': ' . HTML::anchor(Route::model($event), HTML::chars($event->name)) . '</h4>' . $front . $back); } Widget::add('main', Form::checkbox('event_id_all', null, false, array('onchange' => '$("input[type=checkbox]").attr("checked", this.checked);')) . __('Choose all') . ' ' . Form::button('clear', __('Clear'), array('type' => 'submit', 'value' => 'both')) . ' ' . Form::button('import', __('Import'), array('type' => 'submit', 'value' => 'both'))); Widget::add('main', Form::close()); } }
private function saveUploadedFile($filesize, $tmpFileName, $destinationFile, $ProductID) { $returnVal = 0; if ($filesize <= 2097152) { if (move_uploaded_file($tmpFileName, $destinationFile)) { $nufile = date('YmdHis') . '_' . uniqid() . '.jpg'; rename($destinationFile, UPLOADS_PATH . '/' . $nufile); $fin_file = $ProductID . '_' . $nufile; $image = new Model_Image(); $image->load(UPLOADS_PATH . '/' . $nufile); //$image->resize(640, 480); //$image->resizeToHeight(800); $image->save(UPLOADS_PATH . '/' . $fin_file); unlink(UPLOADS_PATH . '/' . $nufile); //delete file //create db record $generic = new Model_Generic(); $generic->insertData("ProductImages", array("ProductID" => $ProductID, "Filename" => $fin_file)); //create thumbs dir if not exist if (!is_dir(UPLOADS_PATH . '/thumbs')) { mkdir(UPLOADS_PATH . '/thumbs'); } //create thumb image in thumbs dir using Model_Image $image = new Model_Image(); $image->load(UPLOADS_PATH . '/' . $fin_file); $image_source_w = $image->getWidth(); $image_source_h = $image->getHeight(); if ($image_source_w > $image_source_h) { $image->resizeToHeight(118); $image->save(UPLOADS_PATH . '/thumbs_tmp/th_' . $fin_file); } else { $image->resizeToWidth(118); $image->save(UPLOADS_PATH . '/thumbs_tmp/th_' . $fin_file); } $image->destroyImage(); $image->load(UPLOADS_PATH . '/thumbs_tmp/th_' . $fin_file); $image_source_w = $image->getWidth(); $image_source_h = $image->getHeight(); $finalImage = new Model_Image(); $finalImage->load(UPLOADS_PATH . '/thumbs_tmp/WH118PX.JPG'); if ($image_source_w > $image_source_h) { imagecopy($finalImage->image, $image->image, 0, 0, floor(($image_source_w - 118) / 2), 0, 118, 118); } else { imagecopy($finalImage->image, $image->image, 0, 0, 0, floor(($image_source_h - 118) / 2), 118, 118); } $finalImage->save(UPLOADS_PATH . '/thumbs/th_' . $fin_file); $image->destroyImage(); $finalImage->destroyImage(); unlink(UPLOADS_PATH . '/thumbs_tmp/th_' . $fin_file); //delete file $returnVal = 1; } } return $returnVal; }
public function completepaymentAction() { $user = $this->isLoggedIn(); if (!$user) { $this->_redirect('/login/'); } $transaction_id = $this->_getParam('TransactionID'); if ($transaction_id) { $transactions = new Model_Transaction(); if (!empty($_FILES) && $_FILES["freceipt"]["error"] == 0) { if (!is_dir(UPLOADS_PATH . 'receipts')) { mkdir(UPLOADS_PATH . 'receipts'); if (!is_dir(UPLOADS_PATH . 'receipts/thumbs')) { mkdir(UPLOADS_PATH . 'receipts/thumbs'); } } $arrImgType = explode('/', $_FILES["freceipt"]["type"]); $imgType = isset($arrImgType[1]) && !empty($arrImgType[1]) ? $arrImgType[1] : 'jpg'; $md5FileName = md5($_FILES["freceipt"]["name"]) . uniqid() . '.' . $imgType; if (file_exists(UPLOADS_PATH . 'receipts/' . $md5FileName)) { unlink(UPLOADS_PATH . 'receipts/' . $md5FileName); } if (file_exists(UPLOADS_PATH . 'receipts/thumbs/th_' . $md5FileName)) { unlink(UPLOADS_PATH . 'receipts/thumbs/th_' . $md5FileName); } if (move_uploaded_file($_FILES["freceipt"]["tmp_name"], UPLOADS_PATH . 'receipts/' . $md5FileName)) { $image = new Model_Image(); $image->load(UPLOADS_PATH . 'receipts/' . $md5FileName); $image->resizeToWidth(130); $image->save(UPLOADS_PATH . 'receipts/thumbs/th_' . $md5FileName); } } $_POST['receiptFile'] = $md5FileName; $_POST['UserID'] = $user['ID']; $PaymentTime = isset($_POST['PaymentTimeHour']) && isset($_POST['PaymentTimeMinute']) ? $_POST['PaymentTimeHour'] . ':' . $_POST['PaymentTimeMinute'] . ':00' : '00:00:00'; $_POST['PaymentDate'] = $_POST['PaymentDate'] . ' ' . $PaymentTime; $data = $transactions->payTransaction($transaction_id, $_POST); } $this->_redirect('/index/myorders'); }
/** * Action: image */ public function action_image() { $this->history = false; // Load venue $venue_id = (int) $this->request->param('id'); $venue = Model_Venue::factory($venue_id); if (!$venue->loaded()) { throw new Model_Exception($venue, $venue_id); } Permission::required($venue, Model_Venue::PERMISSION_UPDATE); // Change existing if ($image_id = (int) Arr::get($_REQUEST, 'default')) { $image = Model_Image::factory($image_id); if (Security::csrf_valid() && $image->loaded() && $venue->has('images', $image->id)) { $venue->default_image_id = $image->id; $venue->save(); } $cancel = true; } // Delete existing if ($image_id = (int) Arr::get($_REQUEST, 'delete')) { $image = Model_Image::factory($image_id); if (Security::csrf_valid() && $image->loaded() && $venue->has('images', $image->id)) { if ($venue->default_image_id == $image->id) { $venue->default_image_id = null; } $venue->remove('image', $image->id); $venue->save(); $image->delete(); } $cancel = true; } // Cancel change if (isset($cancel) || isset($_REQUEST['cancel'])) { if ($this->_request_type === Controller::REQUEST_AJAX) { $this->response->body($this->section_venue_image($venue)); return; } $this->request->redirect(Route::model($venue)); } // Handle post $errors = array(); if ($_POST && $_FILES && Security::csrf_valid()) { $image = new Model_Image(); $image->author_id = Visitor::$user->id; $image->file = Arr::get($_FILES, 'file'); try { $image->save(); // Add exif, silently continue if failed - not critical try { $exif = new Model_Image_Exif(); $exif->image_id = $image->id; $exif->save(); } catch (Kohana_Exception $e) { } // Set the image as venue image $venue->relate('images', array($image->id)); $venue->default_image_id = $image->id; $venue->save(); if ($this->_request_type === Controller::REQUEST_AJAX) { $this->response->body($this->section_venue_image($venue)); return; } $this->request->redirect(Route::model($venue)); } catch (Validation_Exception $e) { $errors = $e->array->errors('validation'); } catch (Kohana_Exception $e) { $errors = array('file' => __('Failed with image')); } } $view = $this->section_image_upload($this->_request_type === Controller::REQUEST_AJAX ? Route::model($venue, 'image') . '?cancel' : Route::model($venue), $errors); if ($this->_request_type === Controller::REQUEST_AJAX) { $this->response->body($view); return; } $this->view = new View_Page($venue->name); $this->view->add(View_Page::COLUMN_CENTER, $view); }
/** * Edit event * * @param integer $event_id */ protected function _edit_event($event_id = null) { $this->history = false; if ($event_id) { // Editing old $event = Model_Event::factory($event_id); if (!$event->loaded()) { throw new Model_Exception($event, $event_id); } Permission::required($event, Model_Event::PERMISSION_UPDATE); $cancel = Request::back(Route::model($event), true); $this->view = View_Page::factory(HTML::chars($event->name)); // Set actions if (Permission::has($event, Model_Event::PERMISSION_DELETE)) { $this->view->actions[] = array('link' => Route::model($event, 'delete') . '?token=' . Security::csrf(), 'text' => '<i class="fa fa-trash-o"></i> ' . __('Delete event'), 'class' => 'btn-danger event-delete'); } $edit = true; $event->update_count++; $event->modified = time(); } else { // Creating new $event = new Model_Event(); Permission::required($event, Model_Event::PERMISSION_CREATE); $cancel = Request::back(Route::get('events')->uri(), true); $this->view = View_Page::factory(__('New event')); $event->author_id = Visitor::$user->id; $event->created = time(); $edit = false; } // Handle post if ($_POST && Security::csrf_valid()) { $preview = isset($_POST['preview']); // Handle venue if ($venue_hidden = Arr::get($_POST, 'venue_hidden')) { // Hidden events require only city } else { if ($venue_id = (int) Arr::get_once($_POST, 'venue_id')) { // Old venue $venue = Model_Venue::factory($venue_id); } else { if ($venue_name = Arr::get($_POST, 'venue_name')) { // Check for duplicate venue $venues = Model_Venue::factory()->find_by_name($venue_name); if ($venues->count()) { $city_name = strtolower(Arr::get($_POST, 'city_name')); foreach ($venues as $venue_old) { if (strtolower($venue_old->city_name) == $city_name) { $venue = $venue_old; break; } } } } } } $post = Arr::intersect($_POST, Model_Event::$editable_fields); if (isset($post['stamp_begin']['date']) && isset($post['stamp_end']['time']) && !isset($post['stamp_end']['date'])) { $post['stamp_end']['date'] = $post['stamp_begin']['date']; } $event->set_fields($post); if (Arr::get($_POST, 'free')) { $event->price = 0; } // Venue/location $event->venue_hidden = (bool) $venue_hidden; if ($venue_hidden) { // Hidden events don't have a venue $event->venue_id = null; $event->venue_name = null; } else { if (isset($venue)) { // Venue loaded $event->venue_id = $venue->id; $event->city_name = $venue->city_name; } else { if (!empty($venue_name)) { // Create new venue $venue = Model_Venue::factory(); $venue->name = Arr::get($_POST, 'venue_name'); $venue->address = Arr::get($_POST, 'address'); $venue->latitude = Arr::get($_POST, 'latitude'); $venue->longitude = Arr::get($_POST, 'longitude'); $venue->foursquare_id = Arr::get($_POST, 'foursquare_id'); $venue->event_host = true; $venue->author_id = Visitor::$user->id; $venue->city_name = $event->city_name; if (!$preview) { try { $venue->save(); $event->venue_id = $venue->id; } catch (Validation_Exception $venue_validation) { } } } } } // Validate event try { $event->is_valid(); } catch (Validation_Exception $event_validation) { } // Handle preview request if ($preview) { if ($this->ajax) { $preview = '<p>' . self::_event_subtitle($event) . '</p>'; $preview .= '<div id="main" class="col-md-8">'; $preview .= $this->section_event_main($event); $preview .= '<hr></div>'; $this->response->body($preview); } return; } // Flyer if ($flyer_url = Arr::get($_POST, 'flyer')) { $event->flyer_url = $flyer_url; $image = new Model_Image(); $image->remote = $flyer_url; $image->created = time(); $image->author_id = Visitor::$user->id; try { $image->save(); try { $flyer = new Model_Flyer(); $flyer->set_fields(array('image_id' => $image->id, 'name' => $event->name, 'stamp_begin' => $event->stamp_begin)); $flyer->save(); } catch (Validation_Exception $flyer_validation) { $flyer_error = print_r($flyer_validation->array->errors('validation'), true); } } catch (Validation_Exception $image_validation) { $flyer_error = print_r($image_validation->array->errors('validation'), true); } catch (Kohana_Exception $e) { $flyer_error = $e->getMessage(); } } // If no errors found, save if (!isset($venue_validation) && !isset($event_validation) && !isset($flyer_error)) { // Make sure end time is after start time, i.e. the next day if ($event->stamp_end < $event->stamp_begin) { $event->stamp_end += Date::DAY; } $event->save(); // Handle flyer if (isset($image) && isset($flyer) && $flyer->loaded()) { $flyer->event_id = $event->id; $flyer->save(); $event->set_flyer($flyer); $event->save(); } // Set tags $event->set_tags(Arr::get($_POST, 'tag')); if ($edit) { // Don't flood edits right after save if (time() - $event->created > 60 * 30) { NewsfeedItem_Events::event_edit(Visitor::$user, $event); } } else { NewsfeedItem_Events::event(Visitor::$user, $event); // Add to favorites $event->add_favorite(Visitor::$user); // Create forum topic if ($event->add_forum_topic()) { Visitor::$user->post_count++; Visitor::$user->save(); } } $this->request->redirect(Route::model($event)); } } // Remove orphan flyer on all errors if (isset($flyer)) { $flyer->delete(); } else { if (isset($image)) { $image->delete(); } } // Tags $tags = array(); $tag_group = new Model_Tag_Group('Music'); if ($tag_group->loaded() && count($tag_group->tags())) { foreach ($tag_group->tags() as $tag) { $tags[$tag->id()] = $tag->name(); } } // Form $section = $this->section_event_edit($event); $section->event_errors = isset($event_validation) ? $event_validation->array->errors('validation') : null; $section->flyer_error = isset($flyer_error) ? $flyer_error : null; $section->venue = isset($venue) ? $venue : $event->venue; $section->venue_errors = isset($venue_validation) ? $venue_validation->array->errors('validation') : null; $section->cancel = $cancel; $this->view->add(View_Page::COLUMN_TOP, $section); }
private function insert_template_to_device_data($field, $new_field) { #hdd element data ##################################################################################### if ($field->type == 'hdd') { //get raid data $old_raid = Model_Raid::find()->where('tempfieldID', $field->id)->get_one(); $hdd = Model_Raid::find()->where('fieldsetID', $new_field->id)->get_one(); //create new hardware_raid $hdd->raid_type = $old_raid->raid_type; $hdd->size = $old_raid->size; $hdd->total = $old_raid->total; $hdd->meta_update_time = time(); $hdd->meta_update_user = $this->user; //$hdd=new Model_Raid($prop); $hdd->save(); //get all discs from array foreach ($old_raid->rows as $disc) { $m = array('model' => $disc->model, 'size' => $disc->size, 'vport' => $disc->vport, 'serial_number' => $disc->serial_number, 'hardware_raid' => $hdd->id, 'meta_update_time' => time(), 'meta_update_user' => $this->user); $discs = new Model_Raid_Data($m); $discs->save(); } } //ram ##################################################################################### if ($field->type == 'ram') { //get ram data $old_ram = Model_Ram::find()->where('tempfieldID', $field->id)->get_one(); $ram = Model_Ram::find()->where('fieldsetID', $new_field->id)->get_one(); //create new hardware_ram $ram->ram_type = $old_ram->ram_type; $ram->size = $old_ram->size; $ram->total = $old_ram->total; $ram->meta_update_time = time(); $ram->meta_update_user = $this->user; $ram->save(); //get all modules from array foreach ($old_ram->rows as $modul) { $m = array('hardware_ram' => $ram->id, 'meta_update_time' => time(), 'meta_update_user' => $this->user, 'model' => $modul->model, 'size' => $modul->size, 'port' => $modul->port, 'serial_number' => $modul->serial_number); $rams = new Model_Ram_Data($m); $rams->save(); } } //images ##################################################################################### if ($field->type == 'img') { //get field images $temp_imags = Model_Device_Template_Image::find()->where('elementID', $field->id)->get(); foreach ($temp_imags as $img) { $props = array('name' => $img->name, 'elementID' => $new_field->id, 'type' => $img->type, 'width' => $img->width, 'height' => $img->height); $imgs = new Model_Image($props); $imgs->save(); copy(DOCROOT . 'images/temp' . $img->id . '.png', DOCROOT . 'images/' . $imgs->id . '.png'); copy(DOCROOT . 'images/tumb/temp' . $img->id . '.png', DOCROOT . 'images/tumb/' . $imgs->id . '.png'); } } //power out (PDU,ATS,UPS) ##################################################################################### if ($field->type == 'power_out') { //power is set automatic as field saved $power = Model_Device_Power::find()->where('fieldsetID', $new_field->id)->get_one(); $extra = $field->power; if ($new_field->device->meta_default_data > 0) { $max = 42; } else { $max = 24; } if ($extra->output > $max) { $extra->output = $max; } //update default data with template power data $power->input = $extra->input; $power->output = $extra->output; $power->type = $extra->type; $power->current = $extra->current; if ($power->ru == 0) { $power->ru = $extra->ru; $power->pos = $extra->pos; } $power->save(); //delete any default socket $defsockets = Model_Device_Power_Socket::find()->where('powerID', $power->id)->get(); foreach ($defsockets as $ds) { $ds->delete(); } $n = 1; foreach ($field->power->socket as $socket) { if ($n > $max) { break; } $prop = array('powerID' => $power->id, 'conn_type' => $socket->conn_type, 'type' => $socket->type); $newsocket = new Model_Device_Power_Socket($prop); $newsocket->save(); if ($socket->type == 2) { $n++; } } } //power in (Server,Switch,Router,...) ##################################################################################### if ($field->type == 'power_in') { //power is set automatic as field saved $power = Model_Device_Power::find()->where('fieldsetID', $new_field->id)->get_one(); $extra = $field->power; //update default data with template power data $power->input = $extra->input; $power->output = $extra->output; $power->type = $extra->type; $power->current = $extra->current; $power->ru = $extra->ru; $power->pos = $extra->pos; $power->save(); //delete any default socket $defsockets = Model_Device_Power_Socket::find()->where('powerID', $power->id)->get(); foreach ($defsockets as $ds) { $ds->delete(); } foreach ($field->power->socket as $socket) { $prop = array('powerID' => $power->id, 'conn_type' => $socket->conn_type, 'type' => $socket->type); $newsocket = new Model_Device_Power_Socket($prop); $newsocket->save(); } } //kvm out (KVM switch) ##################################################################################### if ($field->type == 'kvm_out') { //power is set automatic as field saved $kvm = Model_Device_Kvm::find()->where('fieldsetID', $new_field->id)->get_one(); $extra = $field->kvm; //update default data with template power data $kvm->input = $extra->input; $kvm->output = $extra->output; $kvm->type = $extra->type; $kvm->save(); //delete any default socket $defsockets = Model_Device_Kvm_Socket::find()->where('kvmID', $kvm->id)->get(); foreach ($defsockets as $ds) { $ds->delete(); } foreach ($field->kvm->socket as $socket) { $prop = array('kvmID' => $kvm->id, 'conn_type' => $socket->conn_type, 'type' => $socket->type); $newsocket = new Model_Device_Kvm_Socket($prop); $newsocket->save(); } } //KVM in (Server,Switch,Router,...) ##################################################################################### if ($field->type == 'kvm_in') { //kvm is set automatic as field saved $kvm = Model_Device_Kvm::find()->where('fieldsetID', $new_field->id)->get_one(); $extra = $field->kvm; //update default data with template kvm data $kvm->input = $extra->input; $kvm->output = $extra->output; $kvm->type = $extra->type; $kvm->save(); //delete any default socket $defsockets = Model_Device_Kvm_Socket::find()->where('kvmID', $kvm->id)->get(); foreach ($defsockets as $ds) { $ds->delete(); } foreach ($field->kvm->socket as $socket) { $prop = array('kvmID' => $kvm->id, 'conn_type' => $socket->conn_type, 'type' => $socket->type); $newsocket = new Model_Device_Kvm_Socket($prop); $newsocket->save(); } } //network ##################################################################################### if ($field->type == 'network') { //newtwork is set automatic as field saved $network = Model_Device_Network::find()->where('fieldsetID', $new_field->id)->get_one(); $extra = $field->network; //update default data with template network data $network->type = $extra->type; $network->nics = $extra->nics; $network->vports = $extra->vports; $network->ports = $extra->ports; $network->uplinks = $extra->uplinks; $network->save(); switch ($network->type) { case 1: //IP addresses foreach ($field->network->ip as $ip) { $prop = array('networkID' => $network->id, 'nic_name' => $ip->nic_name, 'ipv4' => $ip->ipv4, 'ipv6' => $ip->ipv6, 'conn_type' => $ip->conn_type, 'conn_speed' => $ip->conn_speed, 'type' => $ip->type); $ips = new Model_Network_Ip($prop); $ips->save(); } break; //MAC and VLAN //MAC and VLAN case 2: $vlan2port = array(); //if no vlan is set to mac $vlan2port[0] = 0; foreach ($field->network->vlan as $vlan) { $prop = array('networkID' => $network->id, 'name' => $vlan->name); $vlans = new Model_Network_Vlan($prop); $vlans->save(); $vlan2port[$vlan->id] = $vlans->id; } foreach ($field->network->mac as $mac) { $prop = array('networkID' => $network->id, 'mac_address' => $mac->mac_address, 'conn_device' => $mac->conn_device, 'vlan' => $vlan2port[$mac->vlan], 'type' => $mac->type); $macs = new Model_Network_Mac($prop); $macs->save(); } break; case 3: foreach ($field->network->mac as $mac) { $prop = array('networkID' => $network->id, 'mac_address' => $mac->mac_address, 'conn_device' => $mac->conn_device, 'vlan' => $mac->vlan, 'type' => $mac->type); $macs = new Model_Network_Mac($prop); $macs->save(); } break; } } }