<?
// сервис скачивает и распакоывавает обновления по ссылкам, переданных в настройках
include('c_services_aspmo_setting_upload_zip.php') ;
class c_services_aspmo_setting_upload_git extends c_services_aspmo_setting_upload_zip
{
	function exec()
    { ob_start() ;
       if (_sizeof($this->setting['files'])) foreach($this->setting['files'] as $fname)
       {   $arr=parse_url($GLOBALS['LS_update_git_server_url']) ;
          // В 60-esmo.ini уже прописано 512 Мб. К тому же в .htaccess прописано 1024 Мб
          //  ini_set("memory_limit", "256M"); //Скрипту не хватало выделенной памяти, т.к. архив весит около 70 Мбайт и упирается в ограничение. Установил в 256 Мб.

          //  Установил таймаут в 700 сек, т.к. по умолчанию установлены 3 секунды, при которых постоянно обрыв и почему-то ошибка об отсутствии прав на директорию в окне обновления.
           FILE_LOG()->append('Загружаем пакет '.$fname) ;
           echo 'Загружаем пакет '.$arr['scheme'].'://',$arr['host'].$arr['path'].$GLOBALS['LS_update_git_branch'].'/'.$fname.'<br>' ;
           $result=IO()->doPut_v2($arr['scheme'].'://',$arr['host'],$arr['path'].$GLOBALS['LS_update_git_branch'].'/'.$fname,'','',
                                    array('basic_login'=>$GLOBALS['LS_update_git_login'],
                                          'basic_pass'=>$GLOBALS['LS_update_git_password'],
                                          'save_content_to_file'=>_DIR_TO_ROOT.'/updates/'.$fname,
                                          "timeout" => 700,
                                          'CURLOPT_NOPROGRESS'=>0,
                                          'CURLOPT_PROGRESSFUNCTION'=>array($this, 'curl_progress_callback')
                                          )
                                         ) ;
           if ($result['status']!=200) {?><div class="alert">Не удалось получить пакет <?echo $fname?> с сервера, код ошибки: <?echo $result['status']?></div><?}
           elseif ($result['content_save_fsize']!=$result['length'])  {?><div class="alert">Не удалось сохранить пакет <?echo $fname?> с сервера, проверьте права доступа к директрии <?echo _DIR_TO_ROOT.'/temp/uploads/'?></div><?}
           else
           {   FILE_LOG()->append('Пакет '.$fname.' успешно загружен') ;
               echo 'Пакет <strong>'.$fname.'</strong> успешно загружен<br>' ;
               $this->upload_from_zip($fname) ;
           }
       }


      FILE_LOG()->append('END') ;
      $text=ob_get_clean() ;
      LOGS()->reg_log('system_update','update from git links',array('data'=>$this->setting['files'],'save_to_file'=>$text)) ;
      echo $text ;
    }

    function curl_progress_callback($resource,$dltotal, $dlnow, $ultotal, $ulnow)
    {
           if ($dltotal>0) FILE_LOG()->append('Скачано: '.round($dlnow/$dltotal*100).'% ('.show_size($dlnow).' из '.show_size($dltotal).')') ;
    }



}

?>
