/**
  * метод вызывается ajax-запросом из админки (hook)
  *  http://example.com/wp-admin/admin-ajax.php?action=tilda_admin_sync
  *
  */
 public static function ajax_sync()
 {
     $arResult = array();
     if (empty($_REQUEST['page_id']) || empty($_REQUEST['project_id']) || empty($_REQUEST['post_id'])) {
         $arResult['error'] = __('Bad request line. Missing parameter: projectid', 'tilda');
         echo json_encode($arResult);
         wp_die();
     }
     $project_id = intval($_REQUEST['project_id']);
     $page_id = intval($_REQUEST['page_id']);
     $post_id = intval($_REQUEST['post_id']);
     // запускаем экспорт
     $arDownload = self::export_tilda_page($page_id, $project_id, $post_id);
     if (is_wp_error($arDownload)) {
         echo Tilda::json_errors($arDownload);
         wp_die();
     }
     if (!session_id()) {
         session_start();
     }
     $_SESSION['tildaexport'] = array('arDownload' => $arDownload, 'downloaded' => 0, 'total' => sizeof($arDownload));
     $arResult['total_download'] = $_SESSION['tildaexport']['total'];
     $arResult['need_download'] = $arResult['total_download'];
     $arResult['count_downloaded'] = 0;
     $arResult['page_id'] = $page_id;
     $arResult['project_id'] = $project_id;
     $arResult['post_id'] = $post_id;
     //$arResult['dump'] = $arDownload;
     echo json_encode($arResult);
     wp_die();
 }
 /**
  * метод вызывается ajax-запросом из админки
  *  http://example.com/wp-admin/admin-ajax.php?action=tilda_admin_export_file
  *  закачивает файлы порциями
  *
  */
 public static function ajax_export_file()
 {
     if (empty(self::$ts_start_plugin)) {
         self::$ts_start_plugin = time();
     }
     if (!session_id()) {
         session_start();
         /*if (session_status() != PHP_SESSION_ACTIVE) {
               Tilda::$errors->add( 'no_start_session', 'Cannoyt start session.');
               echo Tilda::json_errors();
               wp_die();
           }*/
     }
     $arResult = array();
     if (empty($_SESSION['tildaexport']['arDownload'])) {
         $arResult['error'] = 'Error! All downloads';
         $arResult['dump'] = $_SESSION['tildaexport'];
         echo json_encode($arResult);
         die(0);
     }
     $arDownload = $_SESSION['tildaexport']['arDownload'];
     $arTmp = array();
     $downloaded = 0;
     foreach ($arDownload as $file) {
         if (time() - self::$ts_start_plugin > 20) {
             $arTmp[] = $file;
         } else {
             if (!file_exists($file['to_dir']) || strpos($file['to_dir'], '/pages/') === false) {
                 $content = Tilda::getRemoteFile($file['from_url']);
                 if (is_wp_error($content)) {
                     echo Tilda::json_errors();
                     wp_die();
                 }
                 /* replace  short jQuery function $(...) to jQuery(...) */
                 if (strpos($file['to_dir'], 'tilda-blocks-') > 0 && strpos($file['to_dir'], '.js') > 0) {
                     $content = str_replace('$(', 'jQuery(', $content);
                     $content = str_replace('$.', 'jQuery.', $content);
                 }
                 if (file_put_contents($file['to_dir'], $content) === false) {
                     Tilda::$errors->add('error_download', 'Cannot save file to [' . $file['to_dir'] . '].');
                     echo Tilda::json_errors();
                     wp_die();
                 }
             }
             $downloaded++;
         }
     }
     $arDownload = $arTmp;
     $_SESSION['tildaexport']['arDownload'] = $arDownload;
     $_SESSION['tildaexport']['downloaded'] += $downloaded;
     $arResult['total_download'] = $_SESSION['tildaexport']['total'];
     $arResult['need_download'] = sizeof($arDownload);
     //$arResult['total_download'] - $_SESSION['tildaexport']['downloaded'];
     $arResult['count_downloaded'] = $_SESSION['tildaexport']['downloaded'];
     if ($arResult['need_download'] > 0) {
         $arResult['message'] = __("Sync worked more 30 sec and not all files download. Please, click button Synchronization for continue download files from Tilda.cc", 'tilda');
     }
     echo json_encode($arResult);
     wp_die();
 }