/** * экспортирует HTML и список используемых файлов (картинок, стилей и скриптов) из Тильды * @param integer $page_id код страницы в Тильде * @param integer $project_id код проекта в Тильде * @param integer $post_id код страницы или поста на Вордпрессе * * @return array $arDownload - список файлов для закачки (откуда и куда сохранить, в случае ошибки возвращает WP_Error) */ public static function export_tilda_page($page_id, $project_id, $post_id) { $project = Tilda::get_local_project($project_id); /* если проекта нет, или у него устаревший формат, то запросим его с Тильды */ if (!$project || !isset($project->css) || !isset($project->css[0]) || !isset($project->css[0]->to)) { $project = self::update_project($project_id); } if (is_wp_error($project)) { return $project; //$arResult['error'] = __("Error. Can't find project with this 'projectid' parameter"); //echo json_encode($arResult); //wp_die(); } $tildapage = Tilda::get_pageexport($page_id); if (is_wp_error($tildapage)) { return $tildapage; //$arResult['error'] = __("Error. Can't find page with this 'pageid' parameter"); //echo json_encode($arResult); //wp_die(); } $tildapage->html = htmlspecialchars_decode($tildapage->html); self::update_maps($page_id, $post_id); $tildapage = Tilda_Admin::replace_outer_image_to_local($tildapage, $project->export_imgpath); $meta = get_post_meta($post_id, '_tilda', true); $meta['export_imgpath'] = $project->export_imgpath; $meta['export_csspath'] = $project->export_csspath; $meta['export_jspath'] = $project->export_jspath; $meta['page_id'] = $tildapage->id; $meta['project_id'] = $tildapage->projectid; $meta['post_id'] = $post_id; $arDownload = array(); $tildapage->css = array(); $upload_path = Tilda::get_upload_path() . $project->id . '/'; $upload_dir = Tilda::get_upload_dir() . $project->id . '/'; if (!is_dir($upload_dir)) { mkdir($upload_dir, 0755); } if (!is_dir($upload_dir . 'pages/')) { mkdir($upload_dir . 'pages/', 0755); } if (!is_dir($upload_dir . 'css/')) { mkdir($upload_dir . 'css/', 0755); } if (!is_dir($upload_dir . 'js/')) { mkdir($upload_dir . 'js/', 0755); } foreach ($project->css as $file) { $tildapage->css[] = $upload_path . 'css/' . $file->to; $arDownload[] = array('from_url' => $file->from, 'to_dir' => $upload_dir . 'css/' . $file->to); } $tildapage->js = array(); foreach ($project->js as $file) { $tildapage->js[] = $upload_path . 'js/' . $file->to; $arDownload[] = array('from_url' => $file->from, 'to_dir' => $upload_dir . 'js/' . $file->to); } $post = get_post($post_id); $post->post_content = 'Страница синхронизирована с Tilda.cc и вносить правки нужно там'; //$tildapage->html; wp_update_post($post); $tildapage->sync_time = current_time('mysql'); $meta['current_page'] = $tildapage; //unset($meta['current_page']->html); update_post_meta($post_id, '_tilda', $meta); $upload_dir = Tilda::get_upload_dir() . $project->id . '/pages/' . $tildapage->id . '/'; if (!is_dir($upload_dir)) { mkdir($upload_dir, 0755); } foreach ($tildapage->images as $file) { $arDownload[] = array('from_url' => $file->from, 'to_dir' => $upload_dir . $file->to); } return $arDownload; }