mirror of
https://github.com/fusionpbx/fusionpbx.git
synced 2025-12-30 00:53:50 +00:00
Still cleaning.
This commit is contained in:
@@ -1,296 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
FusionPBX
|
||||
Version: MPL 1.1
|
||||
|
||||
The contents of this file are subject to the Mozilla Public License Version
|
||||
1.1 (the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
http://www.mozilla.org/MPL/
|
||||
|
||||
Software distributed under the License is distributed on an "AS IS" basis,
|
||||
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
for the specific language governing rights and limitations under the
|
||||
License.
|
||||
|
||||
The Original Code is FusionPBX
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2012
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
/*
|
||||
$mtime = microtime();
|
||||
$mtime = explode(" ",$mtime);
|
||||
$mtime = $mtime[1] + $mtime[0];
|
||||
$start_time = $mtime;
|
||||
*/
|
||||
|
||||
include "root.php";
|
||||
require_once "includes/require.php";
|
||||
require_once "includes/phpsvnclient/phpsvnclient.php";
|
||||
|
||||
if (!isset($display_results)) {
|
||||
$display_results = true;
|
||||
}
|
||||
|
||||
if (strlen($_SERVER['HTTP_USER_AGENT']) > 0) {
|
||||
require_once "includes/checkauth.php";
|
||||
if (permission_exists('upgrade_svn') || if_group("superadmin")) {
|
||||
//echo "access granted";
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
}
|
||||
else {
|
||||
$display_results = false; //true false
|
||||
//$display_type = 'csv'; //html, csv
|
||||
}
|
||||
|
||||
ini_set('display_errors', '0');
|
||||
ini_set(max_execution_time,3600);
|
||||
clearstatcache();
|
||||
|
||||
if ($display_results) {
|
||||
require_once "includes/header.php";
|
||||
}
|
||||
|
||||
$svn_url = 'http://fusionpbx.googlecode.com/svn/';
|
||||
$svn_path = '/trunk/fusionpbx/';
|
||||
|
||||
//set path_array
|
||||
$sql = "";
|
||||
$sql .= "select * from v_src ";
|
||||
$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
|
||||
foreach ($result as &$row) {
|
||||
$path = trim($row["path"]);
|
||||
$path_array[$path][type] = $row["type"];
|
||||
$path_array[$path][last_mod] = $row["last_mod"];
|
||||
}
|
||||
unset ($prep_statement);
|
||||
|
||||
$svn = new phpsvnclient($svn_url);
|
||||
//$svn_version = $svn->getVersion();
|
||||
$svn_directory_tree = $svn->getDirectoryTree($svn_path);
|
||||
|
||||
if ($display_results) {
|
||||
echo "<table width='100%' border='0' cellpadding='20' cellspacing='0'>\n";
|
||||
echo "<tr>\n";
|
||||
echo "<th>Type</th>\n";
|
||||
echo "<th>Last Modified</th>\n";
|
||||
echo "<th>Path</th>\n";
|
||||
echo "<th>Status/Size</th>\n";
|
||||
echo "<th>MD5 file</th>\n";
|
||||
echo "<th>MD5 xml</th>\n";
|
||||
echo "<th>Action</th>\n";
|
||||
echo "<tr>\n";
|
||||
}
|
||||
|
||||
//$db->beginTransaction();
|
||||
foreach ($svn_directory_tree as &$row) {
|
||||
$md5_match = false;
|
||||
$xml_type = $row[type];
|
||||
$xml_relative_path = trim(str_replace(trim($svn_path,'/'),"",$row[path]));
|
||||
$xml_last_mod = $row[last_mod];
|
||||
$new_path = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH . $xml_relative_path;
|
||||
|
||||
if (file_exists($new_path)) {
|
||||
$exists = true;
|
||||
}
|
||||
else {
|
||||
$exists = false;
|
||||
}
|
||||
|
||||
if ( $xml_type == 'file' ) {
|
||||
$xml_file_path = trim($row[path]); //we need this to download the file from svn
|
||||
$md5_xml = $row[md5];
|
||||
if ($exists) {
|
||||
$md5_file = md5_file($new_path);
|
||||
if ($md5_xml == $md5_file){
|
||||
$md5_match = true;
|
||||
}
|
||||
}
|
||||
else {
|
||||
$md5_match = false;//???
|
||||
$md5_file = '';
|
||||
}
|
||||
}
|
||||
else {
|
||||
$md5_xml = '';//directory has no md5
|
||||
}
|
||||
|
||||
if (strlen($xml_relative_path) > 0) {
|
||||
if ($display_results) {
|
||||
if ($xml_type == 'file' && !$md5_match) {
|
||||
echo "<tr>\n";
|
||||
echo "<td class='row_style1'>$xml_type</td>\n";
|
||||
echo "<td class='row_style1'>$xml_last_mod</td>\n";
|
||||
echo "<td class='row_style1'>$xml_relative_path</td>\n";
|
||||
echo "<td class='row_style1'>$exists</td>\n";
|
||||
//echo "<td class='row_style1'>$xml_size</td>\n";
|
||||
echo "<td class='row_style1'>$md5_file</td>\n";
|
||||
echo "<td class='row_style1'>$md5_xml</td>\n";
|
||||
echo "<td class='row_style1'>$md5_match </td>\n";
|
||||
//file_get_contents($svn_url.$svn_path.$xml_relative_path);</td>\n";
|
||||
echo "<td class='row_style1'>\n";
|
||||
}
|
||||
}
|
||||
|
||||
//update the v_scr data
|
||||
if ($xml_type=='file' && strlen($path_array[$xml_relative_path]['type']) == 0) {
|
||||
//insert a new record into the src table
|
||||
$sql ="";
|
||||
$sql .= "insert into v_src ";
|
||||
$sql .= "(";
|
||||
$sql .= "domain_uuid, ";
|
||||
$sql .= "type, ";
|
||||
$sql .= "last_mod, ";
|
||||
$sql .= "path ";
|
||||
$sql .= ")";
|
||||
$sql .= "values ";
|
||||
$sql .= "(";
|
||||
$sql .= "'$domain_uuid', ";
|
||||
$sql .= "'$xml_type', ";
|
||||
$sql .= "'$xml_last_mod', ";
|
||||
$sql .= "'$xml_relative_path' ";
|
||||
$sql .= ")";
|
||||
//echo "$sql<br />\n";
|
||||
}
|
||||
else {
|
||||
if ($xml_type=='file' && !$md5_match) {//update changed files
|
||||
//update the src table
|
||||
$sql ="";
|
||||
$sql .= "update v_src set ";
|
||||
$sql .= "type = '$xml_type', ";
|
||||
$sql .= "last_mod = '$xml_last_mod' ";
|
||||
$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
$sql .= "and path = '$xml_relative_path' ";
|
||||
}
|
||||
}
|
||||
//if the path exists and is a file
|
||||
if ($exists && $xml_type == 'file') {
|
||||
//the md5 of the xml file and the local file do not match
|
||||
if ($md5_match) {
|
||||
if ($display_results) {
|
||||
//echo "current "; //the file is up to date
|
||||
}
|
||||
}
|
||||
else {
|
||||
/* if ($xml_file_path == '/core/upgrade/upgrade_svn.php' ) {
|
||||
if ($display_results) {
|
||||
echo "white list"; //the file is up to date
|
||||
}
|
||||
continue;
|
||||
}
|
||||
*/ //get the remote file contents
|
||||
$file_content = $svn->getFile($xml_file_path);
|
||||
|
||||
//the md5 of the local file and the remote content match
|
||||
if (md5_file($new_path) == md5($file_content)) {
|
||||
if ($display_results) {
|
||||
//echo "current 2 "; //the file is up to date
|
||||
}
|
||||
}
|
||||
else {
|
||||
//make sure the string matches the file md5 that was recorded.
|
||||
if (strlen($file_content) > 0) {
|
||||
$tmp_fh = fopen($new_path, 'w');
|
||||
fwrite($tmp_fh, $file_content);
|
||||
fclose($tmp_fh);
|
||||
}
|
||||
|
||||
//display the results
|
||||
if ($display_results) {
|
||||
echo "<strong style='color: #FF0000;'> ";
|
||||
if (is_writable($new_path)) {
|
||||
echo "updated ";
|
||||
}
|
||||
else {
|
||||
echo "not writable ";
|
||||
}
|
||||
echo "</strong>";
|
||||
}
|
||||
}
|
||||
}
|
||||
//unset the variable
|
||||
unset($file_content);
|
||||
}
|
||||
else {
|
||||
|
||||
//if the path does not exist create it and then add it to the database
|
||||
//echo "file is missing |";
|
||||
if ($xml_type == 'directory' && !$exists) {
|
||||
//make sure the directory exists
|
||||
mkdir (dirname($new_path), 0755, true);
|
||||
}
|
||||
if ($xml_type == 'file') {
|
||||
//make sure the directory exists
|
||||
if (!is_dir(dirname($new_path))){
|
||||
mkdir (dirname($new_path), 0755, true);
|
||||
}
|
||||
|
||||
//get the remote file contents
|
||||
$file_content = $svn->getFile($xml_file_path);
|
||||
|
||||
//make sure we got some data.
|
||||
if (strlen($file_content) > 0) {
|
||||
$tmp_fh = fopen($new_path, 'w');
|
||||
fwrite($tmp_fh, $file_content);
|
||||
fclose($tmp_fh);
|
||||
}
|
||||
|
||||
if ($display_results) {
|
||||
echo "<strong style='color: #FF0000;'> ";
|
||||
if (is_writable($new_path)) {
|
||||
echo "added/restored";
|
||||
}
|
||||
else {
|
||||
echo "not writable ";
|
||||
}
|
||||
echo "</strong>";
|
||||
//echo "<br />\n";
|
||||
}
|
||||
//unset the variable
|
||||
unset($file_content);
|
||||
}
|
||||
}
|
||||
|
||||
if ($display_results) {
|
||||
if ($xml_type == 'file' && !$md5_match) {
|
||||
echo " ";
|
||||
echo "</td>\n";
|
||||
echo "<tr>\n";
|
||||
}
|
||||
}
|
||||
//update the database
|
||||
if (strlen($sql) > 0) {
|
||||
$db->exec(check_sql($sql));
|
||||
//echo "$sql<br />\n";
|
||||
}
|
||||
unset($sql);
|
||||
}
|
||||
}
|
||||
//$db->commit();
|
||||
//clearstatcache();
|
||||
if ($display_results) {
|
||||
echo "</table>\n";
|
||||
require_once "includes/footer.php";
|
||||
}
|
||||
/*
|
||||
$mtime = microtime();
|
||||
$mtime = explode(" ",$mtime);
|
||||
$mtime = $mtime[1] + $mtime[0];
|
||||
$end_time = $mtime;
|
||||
$total_time = ($end_time - $start_time);
|
||||
echo "This page was created in ".$total_time." seconds";
|
||||
*/
|
||||
?>
|
||||
Reference in New Issue
Block a user