You are here: Is this a PHP script?? BASH?? Please review! « PHP Programming Language « IT news, forums, messages
Is this a PHP script?? BASH?? Please review!

Posted by Synapse Syndrome on 10/26/06 16:16

Hi

I've been given what I am told is a PHP script to be used on my server. I
do not know any PHP.

I am trying to use a feature of a program called ArchiCAD. This feauture
allows CAD drawing files to be published on a webpage, and viewed and
commented on using a java applet.

The problem is that with ArchiCAD v10, it now makes spaces and uses other
URL unfriendly characters in the filenames, making this feature not
properly.

This is an example of the faulty output:
http://test404.damnserver.com


Following is what I have been told is a PHP script. It is meant for a
freebsd or MacOS server. It apparently unpacks a zip file, deletes some
temp files that MacOS makes, and renames the files to make them URL
friendly. It then edits the Content.xml file with the filename changes.

First of all, is this actually a PHP script? I need it to run on a Windows
server running IIS. But someone that I gave it to look at has said that he
thinks that it does some strange functions, and he thinks it's actually a
BASH file, and I have no hope of getting it to run on Windows.

I need something that does the same thing for a Windows server running the
website linked earlier. I also do not want the unzip function, and it needs
to be taken out.

I would be grateful for any thoughts or opinion on this.

Cheers.

_____________________________________________________________________

function process_gpr($zip_file, $record_folder_location) #opens the zip,
makes it web safe
{
if(!ini_get('upload_tmp_dir')) #check php's upload_tmp_dir
{ #if it's not in the ini set it to this value
$upload_tmp_dir = '/var/tmp/';
}
else
{ #otherwise use the ini value
$upload_tmp_dir = ini_get('upload_tmp_dir');
}

$upload_tmp_dir = $upload_tmp_dir . "php/"; #make our own little folder for
unzipping
if(!file_exists($upload_tmp_dir)) { shell_exec("mkdir " .
$upload_tmp_dir); }
if(!shell_exec("rm -Rf " . $upload_tmp_dir . "*")) #clean it out; if that
went smoothly
{ #unzip the zip file
shell_exec("unzip -d " . $upload_tmp_dir . " " . $zip_file);

#zip's from osx's finder create this metadata folder
$macosx_only1 = $upload_tmp_dir . "__MACOSX"; #delete it if present
if(file_exists($macosx_only1)) { if(is_dir($macosx_only1)) {
shell_exec("rm -Rf " .
$macosx_only1); } }
$macosx_only2 = $upload_tmp_dir . ".DS_Store"; #and this file too
if(file_exists($macosx_only2)) { if(is_file($macosx_only2)) {
shell_exec("rm -Rf " .
$macosx_only2); } }

#find the Reviewer folder in the expanded tree
if(preg_match('/(\/.*\/)Reviewer/i', shell_exec("find " . $upload_tmp_dir .
" -type d -name
Reviewer"), $matches))
{ #find the enclosing folder
$gpr['path'] = $enclosing_folder = $matches[1];

if($dh = opendir($enclosing_folder)) #open the enclosing folder
{
while(($file = readdir($dh)) !== false) #read it out
{
if((filetype($enclosing_folder . $file) == "dir") && ($file !== "Reviewer")
&& ($file !==
".") && ($file !== ".."))
{ #find the data folder
$gprf = $file . "/";
}
if((filetype($enclosing_folder . $file) == "file") && (substr($file, -5) ==
".html") &&
($file !== ".") && ($file !== ".."))
{ #find the html file and rename it
preg_match("/(.+)\..*?$/i", $file, $name);
$gpr['title'] = $name[1]; #save that title for later
rename($enclosing_folder . $file, $enclosing_folder . 'gpr.html');
}
}
closedir($dh); #close the enclosing folder

#create the folder name
$gpr['file_name'] = $gpr['title'] . "-" . date("Y-m-d") . ".gpr";
#find the real filepath leading up to where we're placing it
preg_match("/(\/.*\/)rianachd\/.+\..+/i", $_SERVER['PATH_TRANSLATED'],
$project_folder_full_path);
$project_folder_full_path = $project_folder_full_path[1] .
substr($record_folder_location, 3)
.. "/" . $gpr['file_name'] . "/" . $gpr['title'] . "/";
#echo "<h6>project_folder_full_path: $project_folder_full_path</h6>";
$gprf = $enclosing_folder . $gprf; #set this to data folder
$catalog = $gprf . "Catalog.xml"; #path to catalog file
if($handle = fopen($catalog, "r"))
{ #read out contents of the catalog file
$contents = fread($handle, filesize($catalog));
#replace stupid characters in set, path, title and layout links & titles
#$contents = gpr_replacer($content, $regex, $character, $replacement);
$contents = gpr_replacer($contents, "/\<Set\>(.*?)\<\/Set\>/i", "", "_");
$contents = gpr_replacer($contents, "/\<Set\>(.*?)\<\/Set\>/i", "", "_");
$contents = preg_replace('/path="(.*?)"/i', 'path="' .
$project_folder_full_path . '"',
$contents);
# $contents = gpr_replacer($contents, "/title=\"(.*?)\"/i", "", "_");
$contents = gpr_replacer($contents, "/href=\"(.*?)\"/i", "", "_");
$contents = gpr_replacer($contents, "/\<Set\>(.*?)\<\/Set\>/i", "&amp;",
"AND");
# $contents = gpr_replacer($contents, "/title=\"(.*?)\"/i", "&amp;", "AND");
$contents = gpr_replacer($contents, "/href=\"(.*?)\"/i", "&amp;", "AND");

if($handle = fopen($catalog, "w+"))
{ #write out contents and close file
fwrite($handle, $contents);
fclose($handle);

if($handle = opendir($gprf))
{ #open the data folder
#shell_exec("mkdir " . $gprf . "/redline");
while (($file = readdir($handle)) !== false)
{
if (($file !== ".") && ($file !== "..") && (substr($file, 0, 1) !== '.') &&
(substr($file,
-4) == '.DWF'))
{ #change the characters of .DWF's here too
$newfile = gpr_replacer($file, "/(.*)/i", "", "_");
#newfile is necessary, because the name has been changed after the first
rename
rename($gprf . $file, $gprf . $newfile);
rename($gprf . $newfile, $gprf . gpr_replacer($newfile, "/(.*)/i", "&",
"AND"));
#once everything has been done, add a value to the success var
$success++;
}
} #close the data folder
closedir($handle);
}
}
}
}
}
}
#return array of file_name, title, and path
if($success) { return $gpr; } else { return false; }
}

function gpr_replacer($contents, $regex, $character, $replacement) #
{ #if no replacement string is passed, use these
if(!$character) { $character = array("'", '"', ",", "=", "/", " "); }
#match the regular expression
preg_match_all ($regex, $contents, $contents_matches, PREG_SET_ORDER);
$contents_matches_cnt = count($contents_matches);
if($contents_matches_cnt) #if matches > 0
{
for($i=0; $i<$contents_matches_cnt; $i++) #do for each match
{ #replace the found string
$insert = str_replace($character, $replacement, $contents_matches[$i][1]);
$contents = str_replace($contents_matches[$i][1], $insert, $contents);
}
}
#return results
return $contents;
}

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация