public function getFileSize($file = '/', $version = -1) { if ($version == -1 || $version > $this->actVersion) { $version = $this->actVersion; } $url = $this->cleanURL($this->_url . "/!svn/bc/" . $version . "/" . $file . "/"); $this->initQuery($args, "PROPFIND", $url); $args['Body'] = PHPSVN_GET_FILE_SIZE; $args['Headers']['Content-Length'] = strlen(PHPSVN_GET_FILE_SIZE); if (!$this->Request($args, $headers, $body)) { return false; } $xml2Array = new xml2Array(); $arrOutput = $xml2Array->xmlParse($body); if ($arrOutput) { $files = array(); foreach ($arrOutput['children'] as $key => $value) { array_walk_recursive($value, array($this, 'get_file_size_resursively')); } return $this->file_size; } }
function GetLogs($fromRev) { global $LNG; $ch = curl_init(); curl_setopt($ch, CURLOPT_AUTOREFERER, true); curl_setopt($ch, CURLOPT_URL, 'http://2moons.googlecode.com/svn/trunk/'); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type' => 'text/xml', 'Depth' => 1)); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'REPORT'); curl_setopt($ch, CURLOPT_USERAGENT, "2Moons Update API"); curl_setopt($ch, CURLOPT_CRLF, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POSTFIELDS, sprintf('<?xml version="1.0" encoding="utf-8"?> <S:log-report xmlns:S="svn:"> <S:start-revision>%d</S:start-revision><S:end-revision>%d</S:end-revision><S:path></S:path><S:discover-changed-paths/></S:log-report>', $fromRev, -1)); $DATA = curl_exec($ch); curl_close($ch); if (function_exists('xml_parser_create')) { $xml2Array = new xml2Array(); $arrOutput = $xml2Array->xmlParse($DATA); if ((array) $arrOutput['children'] === $arrOutput['children']) { $fileLogs = array(); foreach ($arrOutput['children'] as $value) { if (empty($value['children'])) { continue; } $array = array(); $array['add'] = array(); $array['edit'] = array(); $array['del'] = array(); foreach ($value['children'] as $entry) { if ($entry['name'] == 'D:VERSION-NAME') { $array['version'] = $entry['tagData']; } if ($entry['name'] == 'D:CREATOR-DISPLAYNAME') { $array['author'] = $entry['tagData']; } if ($entry['name'] == 'S:DATE') { $array['date'] = _date($LNG['php_tdformat'], strtotime($entry['tagData']), $USER['timezone']); } if ($entry['name'] == 'D:COMMENT') { $array['comment'] = makebr($entry['tagData']); } if ($entry['name'] == 'S:ADDED-PATH' || $entry['name'] == 'S:MODIFIED-PATH' || $entry['name'] == 'S:DELETED-PATH') { if (strpos($entry['tagData'], 'trunk/') === false) { continue; } else { $entry['tagData'] = substr($entry['tagData'], 7); } if ($entry['name'] == 'S:ADDED-PATH') { $array['add'][] = $entry['tagData']; } if ($entry['name'] == 'S:MODIFIED-PATH') { $array['edit'][] = $entry['tagData']; } if ($entry['name'] == 'S:DELETED-PATH') { $array['del'][] = $entry['tagData']; } } } array_push($fileLogs, $array); } } else { $fileLogs = array(array('error' => $LNG['up_offline'])); } } else { $fileLogs = array(array('error' => $LNG['up_no_xml_ext'])); } return $fileLogs; }
/** * Get changes logs of a file. * * Get repository change of a file between version * $vini and $vend. * * @param * @param integer $vini Initial Version * @param integer $vend End Version * @return Array Respository Logs */ public function getFileLogs($file, $vini = 0, $vend = -1) { $fileLogs = array(); $actVersion = $this->getVersion(); if ($vend == -1 || $vend > $actVersion) { $vend = $actVersion; } if ($vini < 0) { $vini = 0; } if ($vini > $vend) { $vini = $vend; } $url = $this->cleanURL($this->_url . "/!svn/bc/" . $actVersion . "/" . $file . "/"); $this->initQuery($args, "REPORT", $url); $args['Body'] = sprintf(PHPSVN_LOGS_REQUEST, $vini, $vend); $args['Headers']['Content-Length'] = strlen($args['Body']); $args['Headers']['Depth'] = 1; if (!$this->Request($args, $headers, $body)) { return false; } $xml2Array = new xml2Array(); $arrOutput = $xml2Array->xmlParse($body); array_shift($arrOutput['children']); foreach ($arrOutput['children'] as $value) { $array = array(); foreach ($value['children'] as $entry) { if ($entry['name'] == 'D:VERSION-NAME') { $array['version'] = $entry['tagData']; } if ($entry['name'] == 'D:CREATOR-DISPLAYNAME') { $array['author'] = $entry['tagData']; } if ($entry['name'] == 'S:DATE') { $array['date'] = $entry['tagData']; } if ($entry['name'] == 'D:COMMENT') { $array['comment'] = $entry['tagData']; } if ($entry['name'] == 'S:ADDED-PATH' || $entry['name'] == 'S:MODIFIED-PATH' || $entry['name'] == 'S:DELETED-PATH') { // For backward compatability $array['files'][] = $entry['tagData']; if ($entry['name'] == 'S:ADDED-PATH') { $array['add_files'][] = $entry['tagData']; } if ($entry['name'] == 'S:MODIFIED-PATH') { $array['mod_files'][] = $entry['tagData']; } if ($entry['name'] == 'S:DELETED-PATH') { $array['del_files'][] = $entry['tagData']; } } } array_push($fileLogs, $array); } return $fileLogs; }