Beispiel #1
0
 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);
 }
Beispiel #3
0
 /**
  * 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');
 }
Beispiel #6
0
 /**
  * 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);
 }
Beispiel #7
0
 /**
  * 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);
 }
Beispiel #8
0
 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;
         }
     }
 }