public function gcodedetail() { $data_json = array(); $gid = $this->input->get('id'); $array_data = array(); $check_left = NULL; $check_right = NULL; $change_left = NULL; $change_right = NULL; $enable_print = TRUE; $key_suggest_temper = 'suggest_temperature'; $bicolor = $this->config->item('nb_extruder') >= 2; $heat_bed = $this->config->item('heat_bed'); $this->load->helper(array('printerstoring', 'printerstate')); $data_json = PrinterStoring_getInfo('gcode', $gid); if (is_null($data_json)) { $this->output->set_header('Location: /printerstoring/listgcode'); return; } $this->load->library('parser'); $this->lang->load('printerstoring/gcodedetail', $this->config->item('language')); $check_left = $check_right = t('filament_ok'); $change_left = $change_right = t('change_filament'); foreach (array('r', 'l') as $abb_filament) { $data_cartridge = array(); $tmp_ret = 0; $volume_need = 0; $key_length = NULL; $key_material = NULL; if ($abb_filament == 'l') { $key_length = PRINTERSTORING_TITLE_LENG_L; $key_material = PRINTERSTORING_TITLE_MATER_L; } else { // $abb_filament == 'r' $key_length = PRINTERSTORING_TITLE_LENG_R; $key_material = PRINTERSTORING_TITLE_MATER_R; } if ($data_json[$key_length] > 0) { $volume_need = $data_json[$key_length]; // $array_need[$abb_filament] = 'true'; } else { if ($abb_filament == 'l') { $check_left = t('filament_not_need'); } else { // $abb_filament == 'r' $check_right = t('filament_not_need'); } } // check mono extruder case (normally, it's not necessary) if ($bicolor == FALSE && $abb_filament == 'l') { $tmp_ret = ERROR_MISS_LEFT_CART; } else { $tmp_ret = PrinterState_checkFilament($abb_filament, $volume_need, $data_cartridge); } if (in_array($tmp_ret, array(ERROR_OK, ERROR_MISS_LEFT_FILA, ERROR_MISS_RIGT_FILA, ERROR_LOW_LEFT_FILA, ERROR_LOW_RIGT_FILA))) { $array_data[$abb_filament] = array(PRINTERSTATE_TITLE_COLOR => $data_cartridge[PRINTERSTATE_TITLE_COLOR], PRINTERSTATE_TITLE_EXT_TEMPER => $data_cartridge[PRINTERSTATE_TITLE_EXT_TEMPER], PRINTERSTATE_TITLE_MATERIAL => $data_cartridge[PRINTERSTATE_TITLE_MATERIAL]); // set default temperature if pla if ($data_cartridge[PRINTERSTATE_TITLE_MATERIAL] == PRINTERSTATE_DESP_MATERIAL_PLA) { $array_data[$abb_filament][PRINTERSTATE_TITLE_EXT_TEMPER] = PRINTERSTATE_VALUE_FILAMENT_PLA_PRINT_TEMPER; } } else { $array_data[$abb_filament] = array(PRINTERSTATE_TITLE_COLOR => PRINTERSTATE_VALUE_DEFAULT_COLOR, PRINTERSTATE_TITLE_EXT_TEMPER => 0, PRINTERSTATE_TITLE_MATERIAL => NULL); } $array_data[$abb_filament][PRINTERSTATE_TITLE_NEED_L] = $volume_need; $array_data[$abb_filament][$key_suggest_temper] = 0; if ($volume_need > 0 && $data_json[$key_material] != $array_data[$abb_filament][PRINTERSTATE_TITLE_MATERIAL]) { $required_material = t('require_' . $data_json[$key_material]); if ($abb_filament == 'l') { $check_left = $required_material; } else { // $abb_filament == 'r' $check_right = $required_material; } $enable_print = FALSE; // disable print when material is different } else { // treat error switch ($tmp_ret) { case ERROR_OK: // do nothing if no error break; case ERROR_LOW_RIGT_FILA: $check_right = t('filament_not_enough'); break; case ERROR_MISS_RIGT_FILA: $check_right = t('filament_unloaded'); $change_right = t('load_filament'); break; case ERROR_MISS_RIGT_CART: $check_right = t('filament_empty'); $change_right = t('load_filament'); break; case ERROR_LOW_LEFT_FILA: $check_left = t('filament_not_enough'); break; case ERROR_MISS_LEFT_FILA: $check_left = t('filament_unloaded'); $change_left = t('load_filament'); break; case ERROR_MISS_LEFT_CART: $check_left = t('filament_empty'); $change_left = t('load_filament'); break; default: $this->load->helper('printerlog'); PrinterLog_logError('unexpected return when getting detail of gcode library model: ' . $cr, __FILE__, __LINE__); // assign error message if necessary if ($abb_filament == 'l') { $check_left = t('filament_error'); } else { // $abb_filament == 'r' $check_right = t('filament_error'); } break; } } // block print if ($enable_print == TRUE && $tmp_ret != ERROR_OK && $volume_need > 0) { $enable_print = FALSE; } } $template_data = array('home' => t('home'), 'back' => t('back'), 'id' => $gid, 'title' => $data_json['name'], 'photo_title' => t('photo_title'), 'title_current' => t('filament_title'), 'msg_ok' => t('filament_ok'), 'state_c_l' => $array_data['l'][PRINTERSTATE_TITLE_COLOR], 'state_c_r' => $array_data['r'][PRINTERSTATE_TITLE_COLOR], 'state_f_l' => $check_left, 'state_f_r' => $check_right, 'need_filament_l' => $array_data['l'][PRINTERSTATE_TITLE_NEED_L], 'need_filament_r' => $array_data['r'][PRINTERSTATE_TITLE_NEED_L], 'temper_filament_l' => $array_data['l'][PRINTERSTATE_TITLE_EXT_TEMPER], 'temper_filament_r' => $array_data['r'][PRINTERSTATE_TITLE_EXT_TEMPER], 'temper_suggest_l' => $array_data['l'][$key_suggest_temper], 'temper_suggest_r' => $array_data['r'][$key_suggest_temper], 'print_button' => t('print_button'), 'change_filament_l' => $change_left, 'change_filament_r' => $change_right, 'enable_print' => $enable_print ? 'true' : 'false', 'temp_adjustments_l' => t('temp_adjustments_l'), 'temp_adjustments_r' => t('temp_adjustments_r'), 'temp_adjustments' => t('temp_adjustments'), 'advanced' => t('advanced'), 'gcode_link' => t('gcode_link'), '2drender_link' => t('2drender_link'), 'temper_max' => PRINTERSTATE_TEMPER_CHANGE_MAX, 'temper_min' => PRINTERSTATE_TEMPER_CHANGE_MIN, 'temper_delta' => PRINTERSTATE_TEMPER_CHANGE_VAL, 'bicolor' => $bicolor ? 'true' : 'false', 'extrud_multiply' => t('extrud_multiply'), 'left_extrud_mult' => t('left_extrud_mult'), 'right_extrud_mult' => t('right_extrud_mult'), 'extrud_r' => PRINTERSTATE_EXT_MULTIPLY_DEFAULT, 'extrud_l' => PRINTERSTATE_EXT_MULTIPLY_DEFAULT, 'extrud_min' => PRINTERSTATE_EXT_MULTIPLY_MIN, 'extrud_max' => PRINTERSTATE_EXT_MULTIPLY_MAX, 'title_heatbed' => t('title_heatbed'), 'button_bed_off' => t('button_bed_off'), 'heat_bed' => $heat_bed ? 'true' : 'false', 'bed_temper_pla' => PRINTERSTATE_TEMPER_BED_PLA, 'bed_temper_abs' => PRINTERSTATE_TEMPER_BED_ABS, 'bed_temper_max' => PRINTERSTATE_TEMPER_MAX_H); // parse all page $this->_parseBaseTemplate(t('printerstoring_gcodedetail_pagetitle'), $this->parser->parse('printerstoring/gcodedetail', $template_data, TRUE)); return; }
public function youtube_form() { $array_status = array(); $model_displayname = NULL; $this->load->library('parser'); $this->lang->load('youtube_form', $this->config->item('language')); $this->lang->load('printdetail', $this->config->item('language')); // timelapse default model name $this->load->helper('corestatus'); if (CoreStatus_checkInIdle($status_current, $array_status) && array_key_exists(CORESTATUS_TITLE_PRINTMODEL, $array_status)) { $model_id = NULL; if (strpos($array_status[CORESTATUS_TITLE_PRINTMODEL], CORESTATUS_VALUE_MID_PREFIXGCODE) === 0) { // gcode library model $gcode_info = array(); $gid = (int) substr($array_status[CORESTATUS_TITLE_PRINTMODEL], strlen(CORESTATUS_VALUE_MID_PREFIXGCODE)); $model_displayname = t('timelapse_info_modelname_unknown'); $this->load->helper('printerstoring'); $gcode_info = PrinterStoring_getInfo("gcode", $gid); if (!is_null($gcode_info) && array_key_exists("name", $gcode_info)) { $model_displayname = $gcode_info["name"]; } } else { switch ($array_status[CORESTATUS_TITLE_PRINTMODEL]) { case CORESTATUS_VALUE_MID_SLICE: $preset_id = NULL; $model_filename = array(); $this->load->helper('slicer'); if (ERROR_OK == Slicer_getModelFile(0, $model_filename, TRUE)) { foreach ($model_filename as $model_basename) { if (strlen($model_displayname)) { $model_displayname .= ' + ' . $model_basename; } else { $model_displayname = $model_basename; } } } else { $model_displayname = t('timelapse_info_modelname_slice'); } break; default: // treat as pre-sliced model $model_data = array(); $model_displayname = ""; if (is_null($model_id)) { $this->load->helper('printlist'); $model_id = $array_status[CORESTATUS_TITLE_PRINTMODEL]; } if (ERROR_OK == ModelList__getDetailAsArray($model_id, $model_data, TRUE)) { $model_displayname = $model_data[PRINTLIST_TITLE_NAME]; } break; } } } if ($this->input->server('REQUEST_METHOD') == 'POST') { $this->load->library("session"); $title = isset($_POST['yt_title']) ? $_POST['yt_title'] : t('yt_title') . $model_displayname; $description = isset($_POST['yt_description']) ? $_POST['yt_description'] : t('yt_desc'); // $tags = explode(',', $_POST['yt_tags'] ? $_POST['yt_tags'] : t('yt_tags')); $tags = explode(',', t('yt_tags')); $tags = array_map('trim', $tags); $video_infos = array('yt_title' => $title, 'yt_tags' => $tags, 'yt_desc' => $description, 'yt_privacy' => $_POST["yt_privacy"]); $this->session->set_userdata($video_infos); $this->output->set_header("Location: /share/connect_google"); return; } $data = array('yt_title' => t('yt_title') . $model_displayname, 'yt_desc' => t('yt_desc'), 'yt_privacy_public' => t('yt_privacy_public'), 'yt_privacy_private' => t('yt_privacy_private'), 'yt_privacy_unlisted' => t('yt_privacy_unlisted'), 'upload_to_yt' => t('upload_to_yt'), 'title_label' => t('title_label'), 'desc_label' => t('desc_label'), 'tags_label' => t('tags_label'), 'privacy_label' => t('privacy_label'), 'back' => t('back')); $this->_parseBaseTemplate(t('youtube_title'), $this->parser->parse('share/youtube_form', $data, TRUE)); return; }
function PrinterStoring_deleteGcode($id) { $gcode_info = array(); $CI =& get_instance(); $model_folder = $CI->config->item('gcode_library') . sprintf('%06d', $id) . '/'; // check if library folder exist if (@is_dir($model_folder) == false) { $CI->load->helper('printerlog'); PrinterLog_logError('gcode model id not found', __FILE__, __LINE__); return ERROR_UNKNOWN_MODEL; } $gcode_info = PrinterStoring_getInfo('gcode', $id); if (is_null($gcode_info)) { return ERROR_UNKNOWN_MODEL; } else { // stats info $nb_models = 0; foreach (array(PRINTERSTORING_TITLE_LENG_R, PRINTERSTORING_TITLE_LENG_L) as $check_key) { if (isset($gcode_info[$check_key]) && $gcode_info[$check_key] > 0) { ++$nb_models; } } $CI->load->helper('printerlog'); PrinterLog_statsLibraryGcode(PRINTERLOG_STATS_LABEL_DELETE, $nb_models); } $CI->load->helper('file'); delete_files($model_folder, TRUE); //there are no folders inside normally, but we delete all if (!rmdir($model_folder)) { $CI->load->helper('printerlog'); PrinterLog_logError('could not delete the gcode model', __FILE__, __LINE__); return ERROR_INTERNAL; } return ERROR_OK; }
public function timelapse() { $template_data = array(); $array_info = array(); $status_current = NULL; $array_status = array(); $restart_url = NULL; $model_displayname = NULL; $show_storegcode = FALSE; $this->load->library('parser'); $this->load->helper('zimapi'); $this->lang->load('printdetail', $this->config->item('language')); if (CoreStatus_checkInIdle($status_current, $array_status) && array_key_exists(CORESTATUS_TITLE_PRINTMODEL, $array_status)) { $model_id = NULL; $abb_cartridge = NULL; $model_temper = NULL; if (strpos($array_status[CORESTATUS_TITLE_PRINTMODEL], CORESTATUS_VALUE_MID_PREFIXGCODE) === 0) { // gcode library model $gcode_info = array(); $gid = (int) substr($array_status[CORESTATUS_TITLE_PRINTMODEL], strlen(CORESTATUS_VALUE_MID_PREFIXGCODE)); $model_displayname = t('timelapse_info_modelname_unknown'); $this->load->helper('printerstoring'); $gcode_info = PrinterStoring_getInfo("gcode", $gid); if (!is_null($gcode_info) && array_key_exists("name", $gcode_info)) { $model_displayname = $gcode_info["name"]; } $array_info[] = array('title' => t('timelapse_info_modelname_title'), 'value' => $model_displayname); $restart_url = '/printdetail/printgcode?id=' . $gid; } else { switch ($array_status[CORESTATUS_TITLE_PRINTMODEL]) { case CORESTATUS_VALUE_MID_SLICE: $preset_id = NULL; $model_filename = array(); $preset_name = t('timelapse_info_presetname_unknown'); $this->load->helper('slicer'); if (ERROR_OK == Slicer_getModelFile(0, $model_filename, TRUE)) { foreach ($model_filename as $model_basename) { if (strlen($model_displayname)) { $model_displayname .= ' + ' . $model_basename; } else { $model_displayname = $model_basename; } } } else { $model_displayname = t('timelapse_info_modelname_slice'); } $array_info[] = array('title' => t('timelapse_info_modelname_title'), 'value' => $model_displayname); if (ZimAPI_getPreset($preset_id)) { $array_json = array(); if (ERROR_OK == ZimAPI_getPresetInfoAsArray($preset_id, $array_json)) { $preset_name = $array_json[ZIMAPI_TITLE_PRESET_NAME]; } } $array_info[] = array('title' => t('timelapse_info_presetname_title'), 'value' => $preset_name); $restart_url = '/printdetail/printslice'; $show_storegcode = TRUE; break; case CORESTATUS_VALUE_MID_PRIME_R: $abb_cartridge = 'r'; // treat priming in the same way // treat priming in the same way case CORESTATUS_VALUE_MID_PRIME_L: // never reach here normally (no timelapse for priming in principe, just for safety) $array_info[] = array('title' => t('timelapse_info_modelname_title'), 'value' => t('timelapse_info_modelname_prime')); if (is_null($abb_cartridge)) { $abb_cartridge = 'l'; } $restart_url = '/printdetail/printprime?r&v=' . $abb_cartridge; //TODO we lose callback info here break; case CORESTATUS_VALUE_MID_CALIBRATION: // never reach here normally (no timelapse for calibration model, just for safety) $this->load->helper('printlist'); $model_id = ModelList_codeModelHash(PRINTLIST_MODEL_CALIBRATION); $restart_url = '/printmodel/detail?id=calibration'; // treat as a normal pre-sliced model // treat as a normal pre-sliced model default: // treat as pre-sliced model $model_data = array(); $model_displayname = t('timelapse_info_modelname_unknown'); if (is_null($model_id)) { $this->load->helper('printlist'); $model_id = $array_status[CORESTATUS_TITLE_PRINTMODEL]; } if (ERROR_OK == ModelList__getDetailAsArray($model_id, $model_data, TRUE)) { $model_displayname = $model_data[PRINTLIST_TITLE_NAME]; } $array_info[] = array('title' => t('timelapse_info_modelname_title'), 'value' => $model_displayname); if (is_null($restart_url)) { $restart_url = '/printdetail/printmodel?id=' . $model_id; } break; } } if (array_key_exists(CORESTATUS_TITLE_ELAPSED_TIME, $array_status)) { $display_time = NULL; $this->load->helper('timedisplay'); $display_time = TimeDisplay__convertsecond($array_status[CORESTATUS_TITLE_ELAPSED_TIME], ''); $array_info[] = array('title' => t('timelapse_info_elapsedtime_title'), 'value' => $display_time); } if ($this->config->item('nb_extruder') < 2 && array_key_exists(CORESTATUS_TITLE_P_TEMPER_R, $array_status) && $array_status[CORESTATUS_TITLE_P_TEMPER_R] > 0) { $model_temper = t('timelapse_info_temperature_value_mono', array($array_status[CORESTATUS_TITLE_P_TEMPER_R])); } else { if (array_key_exists(CORESTATUS_TITLE_P_TEMPER_L, $array_status) && $array_status[CORESTATUS_TITLE_P_TEMPER_L] > 0 && array_key_exists(CORESTATUS_TITLE_P_TEMPER_R, $array_status) && $array_status[CORESTATUS_TITLE_P_TEMPER_R] > 0) { $model_temper = t('timelapse_info_temperature_values', array($array_status[CORESTATUS_TITLE_P_TEMPER_L], $array_status[CORESTATUS_TITLE_P_TEMPER_R])); } else { if (array_key_exists(CORESTATUS_TITLE_P_TEMPER_R, $array_status) && $array_status[CORESTATUS_TITLE_P_TEMPER_R] > 0) { $model_temper = t('timelapse_info_temperature_value_r', array($array_status[CORESTATUS_TITLE_P_TEMPER_R])); } else { if (array_key_exists(CORESTATUS_TITLE_P_TEMPER_L, $array_status) && $array_status[CORESTATUS_TITLE_P_TEMPER_L] > 0) { $model_temper = t('timelapse_info_temperature_value_l', array($array_status[CORESTATUS_TITLE_P_TEMPER_L])); } } } } if ($model_temper) { if (array_key_exists(CORESTATUS_TITLE_P_TEMPER_B, $array_status) && $array_status[CORESTATUS_TITLE_P_TEMPER_B] > 0) { $model_temper .= t('timelapse_info_extra_temperature_value_b', array($array_status[CORESTATUS_TITLE_P_TEMPER_B])); } $array_info[] = array('title' => t('timelapse_info_temperature_title'), 'value' => $model_temper); } } else { $this->load->helper('printerlog'); PrinterLog_logError('unintended status detected in timelapse page: ' . $status_current, __FILE__, __LINE__); $this->output->set_header('Location: /'); return; } // parse the main body $template_data = array('internet_ok' => @file_get_contents("https://sso.zeepro.com/login.ashx") === FALSE ? 'false' : 'true', 'loading_player' => t('timelapse_info'), 'finish_info' => t('Congratulation, your printing is complete!'), 'home_button' => t('Home'), 'home_popup_text' => t('home_popup_text'), 'yes' => t('Yes'), 'no' => t('No'), 'video_error' => t('video_error'), 'timelapse_title' => t('timelapse_title'), 'send_email_button' => t('send_email_button'), 'send_yt_button' => t('send_yt_button'), 'send_fb_button' => t('send_fb_button'), 'send_email_hint' => t('send_email_hint'), 'send_email_action' => t('send_email_action'), 'send_email_error' => t('send_email_error'), 'send_email_wrong' => t('send_email_wrong'), 'send_email_multi' => t('send_email_multi'), 'video_url' => '/tmp/' . ZIMAPI_FILENAME_TIMELAPSE . '?_=' . time(), 'timelapse_info_title' => t('timelapse_info_title'), 'timelapse_info' => $array_info, 'again_button' => t('Print again'), 'restart_url' => $restart_url ? $restart_url : '/', 'send_email_modelname' => $model_displayname, 'display_storegocde' => $show_storegcode ? 'true' : 'false', 'storegcode_checkbox' => t('storegcode_info'), 'storegcode_hint' => t('storegcode_name'), 'storegcode_err_cfm' => t('storegcode_err_cfm'), 'storegcode_title' => t('storegcode_title')); // parse all page $this->_parseBaseTemplate(t('ZeePro Personal Printer 21 - Printing details'), $this->parser->parse('printdetail/timelapse', $template_data, TRUE)); return; }
function Printer_getFileFromModel($type_model, $id_model, &$gcode_path, $filename = NULL, &$array_info = NULL) { $model_path = NULL; $bz2_path = NULL; $command = ''; $output = array(); $ret_val = 0; $filename_json = NULL; $filename_bz2 = NULL; $filename_gcode = NULL; $CI =& get_instance(); switch ($type_model) { case PRINTER_TYPE_MODELLIST: $CI->load->helper('printlist'); $filename_json = PRINTLIST_FILE_JSON; $filename_bz2 = PRINTLIST_FILE_GCODE_BZ2; $filename_gcode = PRINTLIST_FILE_GCODE; $model_cr = ModelList__find($id_model, $model_path); // get json info if (is_array($array_info)) { $json_data = array(); try { $json_data = json_read($model_path . $filename_json, TRUE); if ($json_data['error']) { throw new Exception('read json error'); } } catch (Exception $e) { return ERROR_INTERNAL; } $array_info = $json_data['json']; } break; case PRINTER_TYPE_GCODELIB: $CI->load->helper('printerstoring'); $tmp_array = NULL; $filename_json = PRINTERSTORING_FILE_INFO_JSON; $filename_bz2 = PRINTERSTORING_FILE_GCODE_BZ2; $filename_gcode = PRINTERSTORING_FILE_GCODE_EXT; $array_info = PrinterStoring_getInfo('gcode', $id_model, $model_path); if (is_null($array_info)) { $model_cr = ERROR_WRONG_PRM; } else { $model_cr = ERROR_OK; } } if ($model_cr == ERROR_OK && $model_path) { $ret_val = 0; // //if we don't fix the filename of gcode // try { // $json_data = json_read($model_path . PRINTLIST_FILE_JSON); // if ($json_data['error']) { // throw new Exception('read json error'); // } // } catch (Exception $e) { // return ERROR_INTERNAL; // } // $gcode_path = $json_data['json'][PRINTLIST_TITLE_GCODE]; $bz2_path = $model_path . $filename_bz2; $filename = is_null($filename) ? $filename_gcode : $filename; $gcode_path = $CI->config->item('temp') . $filename; $command = 'bzip2 -dkcf ' . $bz2_path . ' > ' . $gcode_path; @unlink($gcode_path); // delete old file exec($command, $output, $ret_val); if ($ret_val != ERROR_NORMAL_RC_OK) { return ERROR_INTERNAL; } return ERROR_OK; } else { return ERROR_UNKNOWN_MODEL; } return ERROR_OK; // never reach here }