function count_list_update_file($cp_version, $cp_release, $list_version) { $sgcp = new CP_Update(); $count_files = 0; for ($i = 0; $i < count($list_version); $i++) { $load_version = $sgcp->version_data($list_version[$i], 0); $load_release = $sgcp->version_data($list_version[$i], 1); if ($load_version && cp_check_version($cp_version, $cp_release, $load_version, $load_release)) { $list_update_file = file_get_result("bin/" . $list_version[$i] . "/list.sgcp", 1); $list_update_file = $this->true_list_update_file($list_update_file); $list_download_file = $this->true_list_download_file($list_update_file, $list_version[$i]); for ($j = 0; $j < count($list_download_file); $j++) { $count_files++; } } } return $count_files; }
function do_cp_update() { global $CP; if (checkprivilege_action($CP[login_id], g_view_lastestcp)) { $sgcp = new CP_Update(); $version = cp_current_version(); $cp_version = $sgcp->version_data($version, 0); $cp_release = $sgcp->version_data($version, 1); $list_version = cp_list_version(); if (!is_dir("tmp_update")) { if (!mkdir("tmp_update")) { exit; } } $count_files = $sgcp->count_list_update_file($cp_version, $cp_release, $list_version) * 2; $date = date("Y-m-d_H_i_s"); $count_success = 0; cp_update_set_msg(0, 0); cp_update_set_msg(3, 0); for ($i = 0; $i < count($list_version); $i++) { $load_version = $sgcp->version_data($list_version[$i], 0); $load_release = $sgcp->version_data($list_version[$i], 1); if ($load_version && cp_check_version($cp_version, $cp_release, $load_version, $load_release)) { $list_update_file = file_get_result("bin/" . $list_version[$i] . "/list.sgcp", 1); $list_update_file = $sgcp->true_list_update_file($list_update_file); $list_download_file = $sgcp->true_list_download_file($list_update_file, $list_version[$i]); $tmp_list_update_file[$i] = $list_update_file; for ($j = 0; $j < count($list_download_file); $j++) { cp_update_set_msg(1, $list_download_file[$j]); if (!($tmp_update_result[$i][$j] = file_get_result($list_download_file[$j]))) { cp_update_set_msg(4, $list_download_file[$j]); exit; } else { $count_success++; $percent = $count_success / $count_files * 100; $percent = (int) $percent; cp_update_set_msg(3, $percent); } } } } for ($i = 0; $i < count($list_version); $i++) { $load_version = $sgcp->version_data($list_version[$i], 0); $load_release = $sgcp->version_data($list_version[$i], 1); if ($load_version && cp_check_version($cp_version, $cp_release, $load_version, $load_release)) { $list_update_file = $tmp_list_update_file[$i]; $list_download_file = $sgcp->true_list_download_file($list_update_file, $list_version[$i]); for ($j = 0; $j < count($list_download_file); $j++) { // Check & Create dirs $sgcp->list_create_dir($list_update_file[$j]); // Backup files backup_file($list_update_file[$j], $date); if (!($handle = fopen($list_update_file[$j], 'w+'))) { cp_update_set_msg(5, $list_update_file[$j]); exit; } else { cp_update_set_msg(2, $list_update_file[$j]); if (fwrite($handle, $tmp_update_result[$i][$j]) === FALSE) { cp_update_set_msg(5, $list_update_file[$j]); exit; } else { $count_success++; $percent = $count_success / $count_files * 100; $percent = (int) $percent; cp_update_set_msg(3, $percent); } fclose($handle); } } } } cp_update_set_msg(0, 3); } }