diff --git a/SourceGitlab/README.txt b/SourceGitlab/README.txt
index 1eb47e6..d2e86ea 100644
--- a/SourceGitlab/README.txt
+++ b/SourceGitlab/README.txt
@@ -1,12 +1,12 @@
-array(5) {
- ["hub_root"]=>
- string(27) "https://gitlab.server.intra"
- ["hub_repoid"]=>
- string(1) "5"
- ["hub_reponame"]=>
- string(30) "dispora/dispora"
- ["hub_app_secret"]=>
- string(20) "abcde-api-key-ihifk"
- ["master_branch"]=>
- string(1) "*"
+array(5) {
+ ["hub_root"]=>
+ string(27) "https://gitlab.server.intra"
+ ["hub_repoid"]=>
+ string(1) "5"
+ ["hub_reponame"]=>
+ string(30) "dispora/dispora"
+ ["hub_app_secret"]=>
+ string(20) "abcde-api-key-ihifk"
+ ["master_branch"]=>
+ string(1) "*"
}
\ No newline at end of file
diff --git a/SourceGitlab/SourceGitlab.php b/SourceGitlab/SourceGitlab.php
index ee59fbf..4dc793b 100644
--- a/SourceGitlab/SourceGitlab.php
+++ b/SourceGitlab/SourceGitlab.php
@@ -1,385 +1,385 @@
-name = plugin_lang_get( 'title' );
- $this->description = plugin_lang_get( 'description' );
-
- $this->version = '1.0';
- $this->requires = array(
- 'MantisCore' => '1.2.0',
- 'Source' => '0.16',
- );
-
- $this->author = 'Johannes Goehr';
- $this->contact = 'johannes.goehr@mobilexag.de';
- $this->url = 'http://www.mobilexag.de';
- }
-
- public $type = 'gitlab';
-
- public function show_type() {
- return plugin_lang_get( 'gitlab' );
- }
-
- public function show_changeset( $p_repo, $p_changeset ) {
- $t_ref = substr( $p_changeset->revision, 0, 8 );
- $t_branch = $p_changeset->branch;
-
- return "$t_branch $t_ref";
- }
-
- public function show_file( $p_repo, $p_changeset, $p_file ) {
- return "$p_file->action - $p_file->filename";
- }
-
- public function url_repo( $p_repo, $p_changeset=null ) {
- $t_root = $p_repo->info['hub_root'];
- $t_reponame = $p_repo->info['hub_reponame'];
- $t_ref = "";
-
- if ( !is_null( $p_changeset ) ) {
- $t_ref = "/$p_changeset->revision";
- }
- if ( !is_null( $t_ref)){
- return "$t_root/$t_reponame/";
- }
- return "$t_root/$t_reponame/tree/$t_ref";
- }
-
- public function url_changeset( $p_repo, $p_changeset ) {
- $t_root = $p_repo->info['hub_root'];
- $t_reponame = $p_repo->info['hub_reponame'];
- $t_ref = $p_changeset->revision;
-
- return "$t_root/$t_reponame/commit/$t_ref";
- }
-
- public function url_file( $p_repo, $p_changeset, $p_file ) {
- $t_root = $p_repo->info['hub_root'];
- $t_reponame = $p_repo->info['hub_reponame'];
- $t_ref = $p_changeset->revision;
- $t_filename = $p_file->filename;
-
- return "$t_root/$t_reponame/blob/$t_ref/$t_filename";
- }
-
- public function url_diff( $p_repo, $p_changeset, $p_file ) {
- $t_root = $p_repo->info['hub_root'];
- $t_reponame = $p_repo->info['hub_reponame'];
- $t_ref = $p_changeset->revision;
- $t_filename = $p_file->filename;
-
- return "t_root/$t_reponame/commit/$t_ref?view=parallel";
- }
-
-public function update_repo_form( $p_repo ) {
- $t_hub_root = null;
- $t_hub_repoid = null;
- $t_hub_app_secret = null;
-
- if ( isset( $p_repo->info['hub_root'] ) ) {
- $t_hub_root = $p_repo->info['hub_root'];
- }
- if ( isset( $p_repo->info['hub_repoid'] ) ) {
- $t_hub_repoid = $p_repo->info['hub_repoid'];
- }
- if ( isset( $p_repo->info['hub_reponame'] ) ) {
- $t_hub_reponame = $p_repo->info['hub_reponame'];
- }
- if ( isset( $p_repo->info['hub_app_secret'] ) ) {
- $t_hub_app_secret = $p_repo->info['hub_app_secret'];
- }
- if ( isset( $p_repo->info['master_branch'] ) ) {
- $t_master_branch = $p_repo->info['master_branch'];
- } else {
- $t_master_branch = 'master';
- }
-?>
-
>
- |
- |
-
->
- |
- |
-
->
- |
- |
-
->
- |
- |
-
->
- |
- |
-
-api_uri( $p_repo, "projects" );
- $t_member = null;
- $t_json = json_url( $t_uri, $t_member );
-
- $f_hub_repoid='RepoName is invalid';
- if ( !is_null( $t_json ) ) {
- foreach($t_json as $project)
- {
- if ( property_exists( $project, 'path_with_namespace' ) and ($project->path_with_namespace == $f_hub_reponame) and property_exists( $project, 'id' ) )
- {
- $f_hub_repoid = (string)$project ->id;
- }
- }
- }
- }
- $f_hub_app_secret = gpc_get_string( 'hub_app_secret' );
- $f_master_branch = gpc_get_string( 'master_branch' );
-
- if ( !preg_match( '/\*|^[a-zA-Z0-9_\., -]*$/', $f_master_branch ) ) {
- echo 'Invalid parameter: \'Primary Branch\'';
- trigger_error( ERROR_GENERIC, ERROR );
- }
-
- $p_repo->info['hub_root'] = $f_hub_root;
- $p_repo->info['hub_repoid'] = $f_hub_repoid;
- $p_repo->info['hub_reponame'] = $f_hub_reponame;
- $p_repo->info['hub_app_secret'] = $f_hub_app_secret;
- $p_repo->info['master_branch'] = $f_master_branch;
-
- return $p_repo;
- }
-
- private function api_uri( $p_repo, $p_path ) {
- $t_root = $p_repo->info['hub_root'];
- $t_uri = $t_root . '/api/v3/' . $p_path;
-
- if( isset( $p_repo->info['hub_app_secret'] ) ) {
- $t_access_token = $p_repo->info['hub_app_secret'];
- if ( !is_blank( $t_access_token ) ) {
- $t_uri .= '?private_token=' . $t_access_token;
- }
- }
-
- return $t_uri;
- }
-
- public function precommit() {
- $f_payload = file_get_contents("php://input");
- if ( is_null( $f_payload ) ) {
- return;
- }
-
- $t_data = json_decode($f_payload,true);
-
- $t_repoid = $t_data['project_id'];
- $t_repo_table = plugin_table( 'repository', 'Source' );
-
- $t_query = "SELECT * FROM $t_repo_table WHERE info LIKE " . db_param();
- $t_result = db_query_bound( $t_query, array( '%' . $t_repoid . '%' ) );
-
- if ( db_num_rows( $t_result ) < 1 ) {
- return;
- }
- while ( $t_row = db_fetch_array( $t_result ) ) {
- $t_repo = new SourceRepo( $t_row['type'], $t_row['name'], $t_row['url'], $t_row['info'] );
- $t_repo->id = $t_row['id'];
- if ( $t_repo->info['hub_repoid'] == $t_repoid ) {
- return array( 'repo' => $t_repo, 'data' => $t_data );
- }
- }
- return;
- }
-
- public function commit( $p_repo, $p_data ) {
- $t_commits = array();
- foreach( $p_data['commits'] as $t_commit ) {
- $t_commits[] = $t_commit['id'];
- }
-
- $t_refData = split('/',$p_data['ref']);
- $t_branch = $t_refData[2];
-
- return $this->import_commits( $p_repo, $t_commits, $t_branch );
- }
-
- public function import_full( $p_repo ) {
- echo '';
-
- $t_branch = $p_repo->info['master_branch'];
- if ( is_blank( $t_branch ) ) {
- $t_branch = 'master';
- }
-
- # if we're not allowed everything, populate an array of what we are allowed
- if ($t_branch != '*')
- {
- $t_branches_allowed = array_map( 'trim', explode( ',', $t_branch ) );
- }
-
- # Always pull back full list of repos
- $t_repoid = $p_repo->info['hub_repoid'];
- $t_uri = $this->api_uri( $p_repo, "projects/$t_repoid/repository/branches" );
-
- $t_member = null;
- $t_json = json_url( $t_uri, $t_member );
- $t_branches = array();
- foreach ($t_json as $t_branch)
- {
- if(empty($t_branches_allowed) or in_array($t_branch->name, $t_branches_allowed))
- $t_branches[] = $t_branch;
- }
-
- $t_changesets = array();
-
- $t_changeset_table = plugin_table( 'changeset', 'Source' );
-
- foreach( $t_branches as $t_branch ) {
- $t_query = "SELECT parent FROM $t_changeset_table
- WHERE repo_id=" . db_param() . ' AND branch=' . db_param() .
- ' ORDER BY timestamp ASC';
- $t_result = db_query_bound( $t_query, array( $p_repo->id, $t_branch->name ), 1 );
-
- $t_commits = array( $t_branch->commit->id );
- if ( db_num_rows( $t_result ) > 0 ) {
- $t_parent = db_result( $t_result );
- echo "Oldest '$t_branch->name' branch parent: '$t_parent'\n";
-
- if ( !empty( $t_parent ) ) {
- $t_commits[] = $t_parent;
- echo "Parents not empty";
- }
- echo "Parents empty";
- }
-
- $t_changesets = array_merge( $t_changesets, $this->import_commits( $p_repo, $t_commits, $t_branch->name ) );
- }
-
- echo '
';
-
- return $t_changesets;
- }
-
- public function import_latest( $p_repo ) {
- return $this->import_full( $p_repo );
- }
-
- public function import_commits( $p_repo, $p_commit_ids, $p_branch='' ) {
- static $s_parents = array();
- static $s_counter = 0;
- $t_repoid = $p_repo->info['hub_repoid'];
-
- if ( is_array( $p_commit_ids ) ) {
- $s_parents = array_merge( $s_parents, $p_commit_ids );
- } else {
- $s_parents[] = $p_commit_ids;
- }
-
- $t_changesets = array();
-
- while( count( $s_parents ) > 0 && $s_counter < 200 ) {
- $t_commit_id = array_shift( $s_parents );
- echo "Retrieving $t_commit_id ...
";
- $t_uri = $this->api_uri( $p_repo, "projects/$t_repoid/repository/commits/$t_commit_id" );
- $t_member = null;
- $t_json = json_url( $t_uri, $t_member );
- if ( false === $t_json || is_null( $t_json ) ) {
- # Some error occured retrieving the commit
- echo "failed.\n";
- continue;
- } else if ( !property_exists( $t_json, 'id' ) ) {
- echo "failed ($t_json->message).\n";
- continue;
- }
-
- list( $t_changeset, $t_commit_parents ) = $this->json_commit_changeset( $p_repo, $t_json, $p_branch );
- if ( $t_changeset ) {
- $t_changesets[] = $t_changeset;
- }
-
- $s_parents = array_merge( $s_parents, $t_commit_parents );
- }
-
- $s_counter = 0;
- return $t_changesets;
- }
-
- private function json_commit_changeset( $p_repo, $p_json, $p_branch='' ) {
- echo "processing $p_json->id ... ";
- if ( !SourceChangeset::exists( $p_repo->id, $p_json->id ) ) {
- $t_parents = array();
- foreach( $p_json->parent_ids as $t_parent ) {
- $t_parents[] = $t_parent;
- }
-
- $t_changeset = new SourceChangeset(
- $p_repo->id,
- $p_json->id,
- $p_branch,
- date( 'Y-m-d H:i:s', strtotime( $p_json->authored_date ) ),
- $p_json->author_name,
- $p_json->message
- );
-
- if ( count( $p_json->parents ) > 0 ) {
- $t_parent = $p_json->parents[0];
- $t_changeset->parent = $t_parent->id;
- }
-
- $t_changeset->author_email = $p_json->author_email;
- $t_changeset->save();
-
- echo "saved.\n";
- return array( $t_changeset, $t_parents );
- } else {
- echo "already exists.\n";
- return array( null, array() );
- }
- }
-
-
-
- public static function url_post( $p_url, $p_post_data ) {
- $t_post_data = http_build_query( $p_post_data );
-
- # Use the PHP cURL extension
- if( function_exists( 'curl_init' ) ) {
- $t_curl = curl_init( $p_url );
- curl_setopt( $t_curl, CURLOPT_RETURNTRANSFER, true );
- curl_setopt( $t_curl, CURLOPT_POST, true );
- curl_setopt( $t_curl, CURLOPT_POSTFIELDS, $t_post_data );
-
- $t_data = curl_exec( $t_curl );
- curl_close( $t_curl );
-
- return $t_data;
- } else {
- # Last resort system call
- $t_url = escapeshellarg( $p_url );
- $t_post_data = escapeshellarg( $t_post_data );
- return shell_exec( 'curl ' . $t_url . ' -d ' . $t_post_data );
- }
- }
-
-}
+name = plugin_lang_get( 'title' );
+ $this->description = plugin_lang_get( 'description' );
+
+ $this->version = '1.0';
+ $this->requires = array(
+ 'MantisCore' => '1.2.0',
+ 'Source' => '0.16',
+ );
+
+ $this->author = 'Johannes Goehr';
+ $this->contact = 'johannes.goehr@mobilexag.de';
+ $this->url = 'http://www.mobilexag.de';
+ }
+
+ public $type = 'gitlab';
+
+ public function show_type() {
+ return plugin_lang_get( 'gitlab' );
+ }
+
+ public function show_changeset( $p_repo, $p_changeset ) {
+ $t_ref = substr( $p_changeset->revision, 0, 8 );
+ $t_branch = $p_changeset->branch;
+
+ return "$t_branch $t_ref";
+ }
+
+ public function show_file( $p_repo, $p_changeset, $p_file ) {
+ return "$p_file->action - $p_file->filename";
+ }
+
+ public function url_repo( $p_repo, $p_changeset=null ) {
+ $t_root = $p_repo->info['hub_root'];
+ $t_reponame = $p_repo->info['hub_reponame'];
+ $t_ref = "";
+
+ if ( !is_null( $p_changeset ) ) {
+ $t_ref = "/$p_changeset->revision";
+ }
+ if ( !is_null( $t_ref)){
+ return "$t_root/$t_reponame/";
+ }
+ return "$t_root/$t_reponame/tree/$t_ref";
+ }
+
+ public function url_changeset( $p_repo, $p_changeset ) {
+ $t_root = $p_repo->info['hub_root'];
+ $t_reponame = $p_repo->info['hub_reponame'];
+ $t_ref = $p_changeset->revision;
+
+ return "$t_root/$t_reponame/commit/$t_ref";
+ }
+
+ public function url_file( $p_repo, $p_changeset, $p_file ) {
+ $t_root = $p_repo->info['hub_root'];
+ $t_reponame = $p_repo->info['hub_reponame'];
+ $t_ref = $p_changeset->revision;
+ $t_filename = $p_file->filename;
+
+ return "$t_root/$t_reponame/blob/$t_ref/$t_filename";
+ }
+
+ public function url_diff( $p_repo, $p_changeset, $p_file ) {
+ $t_root = $p_repo->info['hub_root'];
+ $t_reponame = $p_repo->info['hub_reponame'];
+ $t_ref = $p_changeset->revision;
+ $t_filename = $p_file->filename;
+
+ return "t_root/$t_reponame/commit/$t_ref?view=parallel";
+ }
+
+public function update_repo_form( $p_repo ) {
+ $t_hub_root = null;
+ $t_hub_repoid = null;
+ $t_hub_app_secret = null;
+
+ if ( isset( $p_repo->info['hub_root'] ) ) {
+ $t_hub_root = $p_repo->info['hub_root'];
+ }
+ if ( isset( $p_repo->info['hub_repoid'] ) ) {
+ $t_hub_repoid = $p_repo->info['hub_repoid'];
+ }
+ if ( isset( $p_repo->info['hub_reponame'] ) ) {
+ $t_hub_reponame = $p_repo->info['hub_reponame'];
+ }
+ if ( isset( $p_repo->info['hub_app_secret'] ) ) {
+ $t_hub_app_secret = $p_repo->info['hub_app_secret'];
+ }
+ if ( isset( $p_repo->info['master_branch'] ) ) {
+ $t_master_branch = $p_repo->info['master_branch'];
+ } else {
+ $t_master_branch = 'master';
+ }
+?>
+>
+ |
+ |
+
+>
+ |
+ |
+
+>
+ |
+ |
+
+>
+ |
+ |
+
+>
+ |
+ |
+
+api_uri( $p_repo, "projects" );
+ $t_member = null;
+ $t_json = json_url( $t_uri, $t_member );
+
+ $f_hub_repoid='RepoName is invalid';
+ if ( !is_null( $t_json ) ) {
+ foreach($t_json as $project)
+ {
+ if ( property_exists( $project, 'path_with_namespace' ) and ($project->path_with_namespace == $f_hub_reponame) and property_exists( $project, 'id' ) )
+ {
+ $f_hub_repoid = (string)$project ->id;
+ }
+ }
+ }
+ }
+ $f_hub_app_secret = gpc_get_string( 'hub_app_secret' );
+ $f_master_branch = gpc_get_string( 'master_branch' );
+
+ if ( !preg_match( '/\*|^[a-zA-Z0-9_\., -]*$/', $f_master_branch ) ) {
+ echo 'Invalid parameter: \'Primary Branch\'';
+ trigger_error( ERROR_GENERIC, ERROR );
+ }
+
+ $p_repo->info['hub_root'] = $f_hub_root;
+ $p_repo->info['hub_repoid'] = $f_hub_repoid;
+ $p_repo->info['hub_reponame'] = $f_hub_reponame;
+ $p_repo->info['hub_app_secret'] = $f_hub_app_secret;
+ $p_repo->info['master_branch'] = $f_master_branch;
+
+ return $p_repo;
+ }
+
+ private function api_uri( $p_repo, $p_path ) {
+ $t_root = $p_repo->info['hub_root'];
+ $t_uri = $t_root . '/api/v3/' . $p_path;
+
+ if( isset( $p_repo->info['hub_app_secret'] ) ) {
+ $t_access_token = $p_repo->info['hub_app_secret'];
+ if ( !is_blank( $t_access_token ) ) {
+ $t_uri .= '?private_token=' . $t_access_token;
+ }
+ }
+
+ return $t_uri;
+ }
+
+ public function precommit() {
+ $f_payload = file_get_contents("php://input");
+ if ( is_null( $f_payload ) ) {
+ return;
+ }
+
+ $t_data = json_decode($f_payload,true);
+
+ $t_repoid = $t_data['project_id'];
+ $t_repo_table = plugin_table( 'repository', 'Source' );
+
+ $t_query = "SELECT * FROM $t_repo_table WHERE info LIKE " . db_param();
+ $t_result = db_query_bound( $t_query, array( '%' . $t_repoid . '%' ) );
+
+ if ( db_num_rows( $t_result ) < 1 ) {
+ return;
+ }
+ while ( $t_row = db_fetch_array( $t_result ) ) {
+ $t_repo = new SourceRepo( $t_row['type'], $t_row['name'], $t_row['url'], $t_row['info'] );
+ $t_repo->id = $t_row['id'];
+ if ( $t_repo->info['hub_repoid'] == $t_repoid ) {
+ return array( 'repo' => $t_repo, 'data' => $t_data );
+ }
+ }
+ return;
+ }
+
+ public function commit( $p_repo, $p_data ) {
+ $t_commits = array();
+ foreach( $p_data['commits'] as $t_commit ) {
+ $t_commits[] = $t_commit['id'];
+ }
+
+ $t_refData = split('/',$p_data['ref']);
+ $t_branch = $t_refData[2];
+
+ return $this->import_commits( $p_repo, $t_commits, $t_branch );
+ }
+
+ public function import_full( $p_repo ) {
+ echo '';
+
+ $t_branch = $p_repo->info['master_branch'];
+ if ( is_blank( $t_branch ) ) {
+ $t_branch = 'master';
+ }
+
+ # if we're not allowed everything, populate an array of what we are allowed
+ if ($t_branch != '*')
+ {
+ $t_branches_allowed = array_map( 'trim', explode( ',', $t_branch ) );
+ }
+
+ # Always pull back full list of repos
+ $t_repoid = $p_repo->info['hub_repoid'];
+ $t_uri = $this->api_uri( $p_repo, "projects/$t_repoid/repository/branches" );
+
+ $t_member = null;
+ $t_json = json_url( $t_uri, $t_member );
+ $t_branches = array();
+ foreach ($t_json as $t_branch)
+ {
+ if(empty($t_branches_allowed) or in_array($t_branch->name, $t_branches_allowed))
+ $t_branches[] = $t_branch;
+ }
+
+ $t_changesets = array();
+
+ $t_changeset_table = plugin_table( 'changeset', 'Source' );
+
+ foreach( $t_branches as $t_branch ) {
+ $t_query = "SELECT parent FROM $t_changeset_table
+ WHERE repo_id=" . db_param() . ' AND branch=' . db_param() .
+ ' ORDER BY timestamp ASC';
+ $t_result = db_query_bound( $t_query, array( $p_repo->id, $t_branch->name ), 1 );
+
+ $t_commits = array( $t_branch->commit->id );
+ if ( db_num_rows( $t_result ) > 0 ) {
+ $t_parent = db_result( $t_result );
+ echo "Oldest '$t_branch->name' branch parent: '$t_parent'\n";
+
+ if ( !empty( $t_parent ) ) {
+ $t_commits[] = $t_parent;
+ echo "Parents not empty";
+ }
+ echo "Parents empty";
+ }
+
+ $t_changesets = array_merge( $t_changesets, $this->import_commits( $p_repo, $t_commits, $t_branch->name ) );
+ }
+
+ echo '
';
+
+ return $t_changesets;
+ }
+
+ public function import_latest( $p_repo ) {
+ return $this->import_full( $p_repo );
+ }
+
+ public function import_commits( $p_repo, $p_commit_ids, $p_branch='' ) {
+ static $s_parents = array();
+ static $s_counter = 0;
+ $t_repoid = $p_repo->info['hub_repoid'];
+
+ if ( is_array( $p_commit_ids ) ) {
+ $s_parents = array_merge( $s_parents, $p_commit_ids );
+ } else {
+ $s_parents[] = $p_commit_ids;
+ }
+
+ $t_changesets = array();
+
+ while( count( $s_parents ) > 0 && $s_counter < 200 ) {
+ $t_commit_id = array_shift( $s_parents );
+ echo "Retrieving $t_commit_id ...
";
+ $t_uri = $this->api_uri( $p_repo, "projects/$t_repoid/repository/commits/$t_commit_id" );
+ $t_member = null;
+ $t_json = json_url( $t_uri, $t_member );
+ if ( false === $t_json || is_null( $t_json ) ) {
+ # Some error occured retrieving the commit
+ echo "failed.\n";
+ continue;
+ } else if ( !property_exists( $t_json, 'id' ) ) {
+ echo "failed ($t_json->message).\n";
+ continue;
+ }
+
+ list( $t_changeset, $t_commit_parents ) = $this->json_commit_changeset( $p_repo, $t_json, $p_branch );
+ if ( $t_changeset ) {
+ $t_changesets[] = $t_changeset;
+ }
+
+ $s_parents = array_merge( $s_parents, $t_commit_parents );
+ }
+
+ $s_counter = 0;
+ return $t_changesets;
+ }
+
+ private function json_commit_changeset( $p_repo, $p_json, $p_branch='' ) {
+ echo "processing $p_json->id ... ";
+ if ( !SourceChangeset::exists( $p_repo->id, $p_json->id ) ) {
+ $t_parents = array();
+ foreach( $p_json->parent_ids as $t_parent ) {
+ $t_parents[] = $t_parent;
+ }
+
+ $t_changeset = new SourceChangeset(
+ $p_repo->id,
+ $p_json->id,
+ $p_branch,
+ date( 'Y-m-d H:i:s', strtotime( $p_json->authored_date ) ),
+ $p_json->author_name,
+ $p_json->message
+ );
+
+ if ( count( $p_json->parents ) > 0 ) {
+ $t_parent = $p_json->parents[0];
+ $t_changeset->parent = $t_parent->id;
+ }
+
+ $t_changeset->author_email = $p_json->author_email;
+ $t_changeset->save();
+
+ echo "saved.\n";
+ return array( $t_changeset, $t_parents );
+ } else {
+ echo "already exists.\n";
+ return array( null, array() );
+ }
+ }
+
+
+
+ public static function url_post( $p_url, $p_post_data ) {
+ $t_post_data = http_build_query( $p_post_data );
+
+ # Use the PHP cURL extension
+ if( function_exists( 'curl_init' ) ) {
+ $t_curl = curl_init( $p_url );
+ curl_setopt( $t_curl, CURLOPT_RETURNTRANSFER, true );
+ curl_setopt( $t_curl, CURLOPT_POST, true );
+ curl_setopt( $t_curl, CURLOPT_POSTFIELDS, $t_post_data );
+
+ $t_data = curl_exec( $t_curl );
+ curl_close( $t_curl );
+
+ return $t_data;
+ } else {
+ # Last resort system call
+ $t_url = escapeshellarg( $p_url );
+ $t_post_data = escapeshellarg( $t_post_data );
+ return shell_exec( 'curl ' . $t_url . ' -d ' . $t_post_data );
+ }
+ }
+
+}