<?php /* static settings */ $user = '<github_username>' ; $repo = '<github_reponame>' ; $user_repo = $user . '/' . $repo; $tree_base_url = "http://github.com/api/v2/json/tree/show/" . $user_repo; // path on the server where your repository will go $stage_dir = $_SERVER[ 'DOCUMENT_ROOT' ] . dirname($_SERVER[ 'SCRIPT_NAME' ]); ?><?php /* static settings */ $user = '<github_username>' ; $repo = '<github_reponame>' ; $user_repo = $user . '/' . $repo; $tree_base_url = "http://github.com/api/v2/json/tree/show/" . $user_repo; // path on the server where your repository will go $stage_dir = $_SERVER[ 'DOCUMENT_ROOT' ] . dirname($_SERVER[ 'SCRIPT_NAME' ]); ?><?php /* static settings */ $user = '<github_username>' ; $repo = '<github_reponame>' ; $user_repo = $user . '/' . $repo; $tree_base_url = "http://github.com/api/v2/json/tree/show/" . $user_repo; // path on the server where your repository will go $stage_dir = $_SERVER[ 'DOCUMENT_ROOT' ] . dirname($_SERVER[ 'SCRIPT_NAME' ]); ?><?php /* static settings */ $user = '<github_username>' ; $repo = '<github_reponame>' ; $user_repo = $user . '/' . $repo; $tree_base_url = "http://github.com/api/v2/json/tree/show/" . $user_repo; // path on the server where your repository will go $stage_dir = $_SERVER[ 'DOCUMENT_ROOT' ] . dirname($_SERVER[ 'SCRIPT_NAME' ]); ?><?php /* static settings */ $user = '<github_username>' ; $repo = '<github_reponame>' ; $user_repo = $user . '/' . $repo; $tree_base_url = "http://github.com/api/v2/json/tree/show/" . $user_repo; // path on the server where your repository will go $stage_dir = $_SERVER[ 'DOCUMENT_ROOT' ] . dirname($_SERVER[ 'SCRIPT_NAME' ]); ?><?php /* static settings */ $user = '<github_username>' ; $repo = '<github_reponame>' ; $user_repo = $user . '/' . $repo; $tree_base_url = "http://github.com/api/v2/json/tree/show/" . $user_repo; // path on the server where your repository will go $stage_dir = $_SERVER[ 'DOCUMENT_ROOT' ] . dirname($_SERVER[ 'SCRIPT_NAME' ]); ?><?php /* static settings */ $user = '<github_username>' ; $repo = '<github_reponame>' ; $user_repo = $user . '/' . $repo; $tree_base_url = "http://github.com/api/v2/json/tree/show/" . $user_repo; // path on the server where your repository will go $stage_dir = $_SERVER[ 'DOCUMENT_ROOT' ] . dirname($_SERVER[ 'SCRIPT_NAME' ]); ?><?php /* static settings */ $user = '<github_username>' ; $repo = '<github_reponame>' ; $user_repo = $user . '/' . $repo; $tree_base_url = "http://github.com/api/v2/json/tree/show/" . $user_repo; // path on the server where your repository will go $stage_dir = $_SERVER[ 'DOCUMENT_ROOT' ] . dirname($_SERVER[ 'SCRIPT_NAME' ]); ?><?php /* static settings */ $user = '<github_username>' ; $repo = '<github_reponame>' ; $user_repo = $user . '/' . $repo; $tree_base_url = "http://github.com/api/v2/json/tree/show/" . $user_repo; // path on the server where your repository will go $stage_dir = $_SERVER[ 'DOCUMENT_ROOT' ] . dirname($_SERVER[ 'SCRIPT_NAME' ]); ?>
<?php /* static settings */ $user = '<github_username>' ; $repo = '<github_reponame>' ; $user_repo = $user . '/' . $repo; $tree_base_url = "http://github.com/api/v2/json/tree/show/" . $user_repo; // path on the server where your repository will go $stage_dir = $_SERVER[ 'DOCUMENT_ROOT' ] . dirname($_SERVER[ 'SCRIPT_NAME' ]); ?>
<?php/ * URLを取得* /関数 get_content_from_github($ url){$ ch = curl_init();curl_setopt($ ch、CURLOPT_URL、$ url);curl_setopt($ ch、CURLOPT_RETURNTRANSFER、1);curl_setopt($ ch、CURLOPT_CONNECTTIMEOUT、1);echo "取得:{$ url}" ;$ content = curl_exec($ ch);curl_close($ ch);$コンテンツを返します。}?>
<?php関数 get_repo_json(){グローバル$ user、$ repo、$ user_repo、$ tree_base_url、$ stage_dir;$ json = array();$ list_commits_url = 'http://github.com/api/v2/json/commits/list/' $ user_repo。 '/マスター' ;echo "マスターブランチのURL:{$ list_commits_url} \ n <br>" ;$ json [ 'commit' ] = json_decode(get_content_from_github($ list_commits_url)、 true );//最新のツリーのshaを取得します$ tree_sha = $ json [ 'commit' ] [ 'commits' ] [0] [ 'tree' ];echo "ツリーsha:{$ tree_sha} \ n <br>" ;$ cont_str = $ tree_base_url。 "/ {$ tree_sha}" ;$ base = json_decode(get_content_from_github($ cont_str)、 true );//プロジェクト構造を出力しますecho "<pre>" ;get_repo($ base [ 'tree' ]、0、$ stage_dir);echo "</ pre>" ;}?>
<?php関数 get_repo($オブジェクト、$レベル= 0、$ current_dir){グローバル$ tree_base_url、$ user_repo;chdir($ current_dir);foreach ($個のオブジェクトとして &$ object ){$ type = $ object [ 'type' ];$ sha = $ object [ 'sha' ];$ name = $ object [ 'name' ];//パディングを追加しますecho str_pad( "" 、$ level、 "\ t" );エコー$名。 "\ n" ;if (strcmp($ type、 "tree" )== 0){mkdir($ name);$ new_dir = $ current_dir。 '/' $名前;$ tree = $ tree_base_url。 '/' $ sha;$ new_objects = json_decode(get_content_from_github($ tree)、 true );get_repo($ new_objects [ 'tree' ]、$ level + 1、$ new_dir);//現在のディレクトリを元に戻すchdir($ current_dir);}他に{//ファイルのコンテンツを取得します$ blob_url = "http://github.com/api/v2/json/blob/show/" 。 $ user_repo。 「/」 。 $ sha;$ data = get_content_from_github($ blob_url);$ filename = $ current_dir。 '/' $名前;file_put_contents($ファイル名、$データ);}}}?>
<?php$ download = true ;$ unzip = true ;$ move = true ;$ stage_dir = $ _SERVER [ 'DOCUMENT_ROOT' ]。 dirname($ _ SERVER [ 'SCRIPT_NAME' ]);$ filepath = $ stage_dir。 '/' 'master.zip' ;echo "<pre>" ;?>
<?phpif ($ダウンロード){$ url = "http://github.com/ <your_github_username> / <your_github_repo_name> / zipball / master" ;$ ch = curl_init();curl_setopt($ ch、CURLOPT_URL、$ url);curl_setopt($ ch、CURLOPT_RETURNTRANSFER、1);curl_setopt($ ch、CURLOPT_CONNECTTIMEOUT、1);echo "取得:{$ url} \ n" ;$ content = curl_exec($ ch);echo "Got \" {$ content} \ "\ n" ;curl_close($ ch);$ dom = new DOMDocument();@ $ dom-> loadHTML($ content);$ xpath = new DOMXPath($ dom);$ hrefs = $ xpath-> evaluate( "/ html / body // a" );$ href = $ hrefs->アイテム(0);$ zipurl = $ href-> getAttribute( 'href' );echo "Zip url:{$ zipurl} \ n" ;$ data = http_get_file($ zipurl);if (substr($ data、 "http://" )){$ data = http_get_file($ data);}file_put_contents($ファイルパス、$データ);}?>
<?php関数 http_get_file($ url){$ url_stuff = parse_url($ url);$ port = isset($ url_stuff [ 'port' ])? $ url_stuff [ 'port' ]:80;$ path = $ url_stuff [ 'path' ];$ last = $ path [strlen($ path)-1];if (strcmp($ last、 "_" )== 0){$ path = substr_replace($ path、 "" 、-1);}$ fp = fsockopen($ url_stuff [ 'host' ]、$ port);$ query = 'GET' 。 $パス。 "HTTP / 1.0 \ n" ;$ query。= 'Host:' 。 $ url_stuff [ 'host' ];$ query。= "\ n \ n" ;fwrite($ fp、$ query);while ($ line = fread($ fp、1024)){$ buffer。= $ line;}if (preg_match( '/ ^ Location:(。+?)$ / m' 、$ buffer、$ matches)){$マッチ[1]を返します。}preg_match( '/ Content-Length:([0-9] +)/' 、$バッファー、$パーツ);return substr($バッファー、-$パーツ[1]);}?>
<?phpif ($解凍){echo "アーカイブの圧縮解除... \ n" ;$ zip = 新しい ZipArchive;$ res = $ zip-> open($ filepath);if ($ res === TRUE){$ zip-> extractTo($ stage_dir);$ zip-> close();echo "完了!\ n" ;} その他{echo "失敗\ n" ;exit(1);}}?>
<?phpif ($移動){$ files = scandir($ stage_dir);$ match_array = preg_grep( '/ <user_name> * /' 、$ files);if (is_array($ match_array)){//すべてのディレクトリがあれば削除しますdelete_directory( "code" );$ dir_name = current($ match_array);$ rep_dir = $ dir_name。 「/コード」 ;echo "{$ rep_dir}をコードに移動してみてください\ n" ;rename($ rep_dir、 "code" );rmdir($ dir_name);echo "ファイルの移動を完了しました\ n" ;}}関数 delete_directory($ dirname){if (is_dir($ dirname))$ dir_handle = opendir($ dirname);if (!$ dir_handle)falseを 返し ます 。while ($ file = readdir($ dir_handle)){if ($ file!= "。" && $ file!= ".." ){if (!is_dir($ dirname。 " /"。$ file))unlink($ dirname。 " /"。$ file);他にdelete_directory($ dirname。 ' /'。$ file);}}closedir($ dir_handle);rmdir($ dirname);}?>
<?phpcopy( "config.php" 、 "<new_path> /core.php" );echo "すべてのジョブが完了しました!\ n" ;echo "</ pre>" ;?>*このソースコードは、 ソースコードハイライターで強調表示されました。
Source: https://habr.com/ru/post/J83235/More articles:Xerox PARC世界最高峰の電話をかける準備をしている英国のクライマーコンピューターの音声制御に関する考え方グーグルとアンドロイドを使用したグローバルなインターネット化またはインターネット共産主義のクレイジーなアイデアコミュニケーターの例に関するプログラムのアーキテクチャーSamsung M100S-Android 2.1を実行するコミュニケーター重力キャップとパンツの色の区別を守るために...マイクロソフトの創造的破壊Sharepoint 2010プラットフォームで週に7つのスタートアップデザイン2.0All Articles