By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
435,426 Members | 2,928 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 435,426 IT Pros & Developers. It's quick & easy.

Need help with some OO php

P: n/a
Hello Everyone,

I'm trying to debug someone elses php code. I'm actually a Perl
programmer, with OO experience, but not in php.

The code is supposed to upload a photo from a form and save it both on
the file system and in a mySql database. 90% of the time it works just
fine. But for some reason, with some photos, it doesn't work. The
image never shows up on the filesystem and there is no entry in the
database. I feel it's a problem with the image because if I resave the
image in photoshop with a lower resolution -- it uploads just fine. I
don't completely understand why this resaving of the image works though
because the orriginal size of the image is still well under the
FileSize Max, which according to the code below is 3.5mb.
I'm not including all of the code because there is a lot. I believe
I've pasted the correct snips below though. If you need any more info,
please let me know.

My main quesitons are:
1. How/where in the code, is the image file being written to the disk?
I don't see the 'imagejpeg' function I am familar with.
2. I want to put in some debugging print statments to figure out what's
going on -- maybe have a log file being written to but I don't know how
to go about that in OO php? Can someone give me an example to do this?

Thanks for any help and guidance!

M

-- Snip -- This is the code in the page that accepts the photos from a
form. There are actually 7 photo fields on that page. This is just one
of them.
$this->Image2 = new clsControl(ccsImage, "Image2", "Image2", ccsText,
"", CCGetRequestParam("Image2", $Method));
$this->photo2 = new clsFileUpload("photo2", "photo2", "temp/",
"photos/", "*.jpg", "", 3500000);

-- Snip -- This is the complete clsFileUpload Class

//clsFileUpload Class @0-81C1F4F1
class clsFileUpload
{
var $Name;
var $Caption;
var $Visible;
var $Required;

var $TemporaryFolder;
var $FileFolder;
var $AllowedMask; // @deprecated , use AllowedFileMasks property
var $AllowedFileMasks;
var $DisallowedFileMasks;
var $FileSizeLimit;
var $Value;
var $Text;
var $State;

var $CCSEvents = "";
var $CCSEventResult;

function clsFileUpload($Name, $Caption, $TemporaryFolder,
$FileFolder, $AllowedFileMasks, $DisallowedFileMasks, $FileSizeLimit)
{

$this->Errors = new clsErrors;

$this->Name = $Name;
$this->Visible = true;
$this->Caption = $Caption;
if(substr($TemporaryFolder, 0, 1) == "%") {
$TemporaryFolder = substr($TemporaryFolder, 1);
$TemporaryFolder = getenv($TemporaryFolder);
}
$this->TemporaryFolder = $TemporaryFolder;
if(substr($FileFolder, 0, 1) == "%") {
$FileFolder = substr($FileFolder, 1);
$FileFolder = getenv($FileFolder);
}
$this->FileFolder = $FileFolder;
$this->AllowedFileMasks = $AllowedFileMasks;
$this->AllowedMask = & $this->AllowedFileMasks;
$this->DisallowedFileMasks = $DisallowedFileMasks;
$this->FileSizeLimit = $FileSizeLimit;
$this->Value = "";
$this->Text = "";
$this->Required = false;

$FileName = "";
$FieldName = $this->Caption;
if( !is_dir($TemporaryFolder) ) {
$this->Errors->addError("Unable to upload the file specified in "
.. $FieldName . " - temporary upload folder doesn't exist.");
} else if( !is_writable($TemporaryFolder) ) {
$this->Errors->addError("Insufficient filesystem permissions to
upload the file specified in " . $FieldName . " into temporary
folder.");
} else if( !is_dir($FileFolder) ) {
$this->Errors->addError("Unable to upload the file specified in "
.. $FieldName . " - upload folder doesn't exist.");
} else if( !is_writable($FileFolder) ) {
$this->Errors->addError("Insufficient filesystem permissions to
upload the file specified in " . $FieldName . ".");
}

}

function Validate()
{
$validation = true;
if($this->Required && $this->Value === "" && $this->Errors->Count() == 0)
{
$FieldName = $this->Caption;
$this->Errors->addError("The file attachment in field " .
$FieldName . " is required.");
}
$this->CCSEventResult = CCGetEvent($this->CCSEvents, "OnValidate");
return ($this->Errors->Count() == 0);
}
function Upload($RowNumber = "")
{
global $HTTP_POST_FILES;
$FieldName = $this->Caption;
if(strlen($RowNumber)) {
$ControlName = $this->Name . "_" . $RowNumber;
$FileControl = $this->Name . "_File_" . $RowNumber;
$DeleteControl = $this->Name . "_Delete_" . $RowNumber;
} else {
$ControlName = $this->Name;
$FileControl = $this->Name . "_File";
$DeleteControl = $this->Name . "_Delete";
}

$SessionName = CCGetParam($ControlName);
$this->State = CCGetSession($SessionName);

if (strlen(CCGetParam($DeleteControl))) {
// delete file from folder
$ActualFileName = $this->State[0];
if( file_exists($this->FileFolder . $ActualFileName) ) {
$this->CCSEventResult = CCGetEvent($this->CCSEvents,
"BeforeDeleteFile");
unlink($this->FileFolder . $ActualFileName);
$this->CCSEventResult = CCGetEvent($this->CCSEvents,
"AfterDeleteFile");
} else if ( file_exists($this->TemporaryFolder . $ActualFileName) ) {
$this->CCSEventResult = CCGetEvent($this->CCSEvents,
"BeforeDeleteFile");
unlink($this->TemporaryFolder . $ActualFileName);
$this->CCSEventResult = CCGetEvent($this->CCSEvents,
"AfterDeleteFile");
}
$this->Value = ""; $this->Text = "";
$this->State[0] = "";
} else if (isset ($HTTP_POST_FILES[$FileControl])
&& $HTTP_POST_FILES[$FileControl]["tmp_name"] != "none"
&& strlen ($HTTP_POST_FILES[$FileControl]["tmp_name"])) {
$this->Value = ""; $this->Text = "";
$FileName = $HTTP_POST_FILES[$FileControl]["name"];
$GoodFileMask = 1;
$meta_characters = array("*" =".+", "?" =".", "\\" ="\\\\",
"^" ="\\^", "\$" ="\\\$", "." ="\\.", "[" ="\\[", "]" ="\\]",
"|" ="\\|", "(" ="\\(", ")" ="\\)", "{" ="\\{", "}" ="\\}",
"+" ="\\+", "-" ="\\-");
if ($this->AllowedFileMasks != "") {
$GoodFileMask = 0;
$FileMasks=split(';', $this->AllowedFileMasks);
foreach ($FileMasks as $FileMask) {
$FileMask =
preg_replace("/(\\*|\\?|\\\\|\\^|\\\$|\\.|\\[|\\]|\\||\\(|\\)|\\{|\\}|\\+|\\-)/ei",
"\$meta_characters['\\1']", $FileMask);
if (preg_match("/^$FileMask$/i", $FileName)) {
$GoodFileMask = 1;
break;
}
}
}
if ($GoodFileMask && $this->DisallowedFileMasks != "") {
$FileMasks=split(';', $this->DisallowedFileMasks);
foreach ($FileMasks as $FileMask) {
$FileMask =
preg_replace("/(\\*|\\?|\\\\|\\^|\\\$|\\.|\\[|\\]|\\||\\(|\\)|\\{|\\}|\\+|\\-)/ei",
"\$meta_characters['\\1']", $FileMask);
if (preg_match("/^$FileMask$/i", $FileName)) {
$GoodFileMask = 0;
break;
}
}
}
if($HTTP_POST_FILES[$FileControl]["size"] $this->FileSizeLimit) {
$this->Errors->addError("The file size in field " . $FieldName
.. " is too large.");
} else if (!$GoodFileMask) {
$this->Errors->addError("The file type specified in field " .
$FieldName . " is not allowed.");
} else {
// move uploaded file to temporary folder
$file_exists = true;
$index = 0;
while($file_exists) {
$ActualFileName = date("YmdHis") . $index . "." . $FileName;
$file_exists = file_exists($ActualFileName);
$index++;
}
if( copy($HTTP_POST_FILES[$FileControl]["tmp_name"],
$this->TemporaryFolder . $ActualFileName) ) {
$this->Value = $ActualFileName;
$this->Text = $ActualFileName;
if(strlen($this->State[0])) {
if(file_exists($this->TemporaryFolder . $this->State[0])) {
$this->CCSEventResult = CCGetEvent($this->CCSEvents,
"BeforeDeleteFile");
unlink($this->TemporaryFolder . $this->State[0]);
$this->CCSEventResult = CCGetEvent($this->CCSEvents,
"AfterDeleteFile");
$this->State[0] = $ActualFileName;
} else {
if(!is_dir($this->TemporaryFolder . $this->State[1]) &&
file_exists($this->TemporaryFolder . $this->State[1])) {
$this->CCSEventResult = CCGetEvent($this->CCSEvents,
"BeforeDeleteFile");
unlink($this->TemporaryFolder . $this->State[1]);
$this->CCSEventResult = CCGetEvent($this->CCSEvents,
"AfterDeleteFile");
}
$this->State[1] = $ActualFileName;
}
} else {
$this->State[0] = $ActualFileName;
}
} else {
$this->Errors->addError("Insufficient filesystem permissions
to upload the file specified in " . $FieldName . " into temporary
folder.");
}
}
} else {
$this->SetValue(strlen($this->State[1]) ? $this->State[1] :
$this->State[0]);
}
}

function Move()
{
if (strlen($this->Value) && !file_exists($this->FileFolder .
$this->Value)) {
$this->CCSEventResult = CCGetEvent($this->CCSEvents,
"BeforeProcessFile");
$FileName = $this->GetFileName();
$FieldName = $this->Caption;
if (!file_exists($this->TemporaryFolder . $this->Value)) {
$this->Errors->addError("The file " . $FileName . " specified
in " . $FieldName . " was not found.");
} else if (!@copy($this->TemporaryFolder . $this->Value,
$this->FileFolder . $this->Value)) {
$this->Errors->addError("Insufficient filesystem permissions to
upload the file specified in " . $FieldName . ".");
} else if (strlen($this->State[1])) {
$this->CCSEventResult = CCGetEvent($this->CCSEvents,
"BeforeDeleteFile");
unlink($this->FileFolder . $this->State[0]);
$this->CCSEventResult = CCGetEvent($this->CCSEvents,
"AfterDeleteFile");
}
if($this->Errors->Count() == 0 &&
file_exists($this->TemporaryFolder . $this->Value)) {
unlink($this->TemporaryFolder . $this->Value);
}
$this->CCSEventResult = CCGetEvent($this->CCSEvents, "AfterProcessFile");
}
}

function Delete()
{
if( !is_dir($this->FileFolder . $this->State[0]) &&
file_exists($this->FileFolder . $this->State[0]) ) {
$this->CCSEventResult = CCGetEvent($this->CCSEvents, "BeforeDeleteFile");
unlink($this->FileFolder . $this->State[0]);
$this->CCSEventResult = CCGetEvent($this->CCSEvents, "AfterDeleteFile");
} else if ( !is_dir($this->TemporaryFolder . $this->State[0]) &&
file_exists($this->TemporaryFolder . $this->State[0]) ) {
$this->CCSEventResult = CCGetEvent($this->CCSEvents, "BeforeDeleteFile");
unlink($this->TemporaryFolder . $this->State[0]);
$this->CCSEventResult = CCGetEvent($this->CCSEvents, "AfterDeleteFile");
}
if( !is_dir($this->FileFolder . $this->State[1]) &&
file_exists($this->FileFolder . $this->State[1]) ) {
$this->CCSEventResult = CCGetEvent($this->CCSEvents, "BeforeDeleteFile");
unlink($this->FileFolder . $this->State[1]);
$this->CCSEventResult = CCGetEvent($this->CCSEvents, "AfterDeleteFile");
} else if ( !is_dir($this->TemporaryFolder . $this->State[1]) &&
file_exists($this->TemporaryFolder . $this->State[1]) ) {
$this->CCSEventResult = CCGetEvent($this->CCSEvents, "BeforeDeleteFile");
unlink($this->TemporaryFolder . $this->State[1]);
$this->CCSEventResult = CCGetEvent($this->CCSEvents, "AfterDeleteFile");
}
}

function Show($RowNumber = "")
{
global $Tpl;
if($this->Visible)
{
$this->CCSEventResult = CCGetEvent($this->CCSEvents, "BeforeShow");

if(!$this->Visible) {
$Tpl->setblockvar("FileUpload " . $this->Name, "");
return;
}

if(strlen($RowNumber)) {
$ControlName = $this->Name . "_" . $RowNumber;
$FileControl = $this->Name . "_File_" . $RowNumber;
$DeleteControl = $this->Name . "_Delete_" . $RowNumber;
} else {
$ControlName = $this->Name;
$FileControl = $this->Name . "_File";
$DeleteControl = $this->Name . "_Delete";
}

$SessionName = CCGetParam($ControlName);
if(!strlen($SessionName)) {
srand ((double) microtime() * 1000000);
$random_value = rand();
$SessionName = "FileUpload" . $random_value . date("dHis");
$this->State = array($this->Value, "");
}

CCSetSession($SessionName, $this->State);

$Tpl->SetVar("State", $SessionName);
$Tpl->SetVar("ControlName", $ControlName);
$Tpl->SetVar("FileControl", $FileControl);
$Tpl->SetVar("DeleteControl", $DeleteControl);
if (strlen($this->Value) ) {
$Tpl->SetVar("ActualFileName", $this->Value);
$Tpl->SetVar("FileName", $this->GetFileName());
$Tpl->SetVar("FileSize", $this->GetFileSize());
$Tpl->parse("FileUpload " . $this->Name . "/Info", false);
if($this->Required) {
$Tpl->parse("FileUpload " . $this->Name . "/Upload", false);
$Tpl->setblockvar("FileUpload " . $this->Name .
"/DeleteControl", "");
} else {
$Tpl->setblockvar("FileUpload " . $this->Name . "/Upload", "");
$Tpl->parse("FileUpload " . $this->Name . "/DeleteControl", false);
}
} else {
$Tpl->parse("FileUpload " . $this->Name . "/Upload", false);
$Tpl->setblockvar("FileUpload " . $this->Name . "/Info", "");
$Tpl->setblockvar("FileUpload " . $this->Name . "/DeleteControl", "");
}

$Tpl->Parse("FileUpload " . $this->Name, false);
}
else
{
$Tpl->setblockvar("FileUpload " . $this->Name, "");
}
}

function SetValue($Value) {
$this->Text = $Value;
$this->Value = $Value;
$this->State[0] = $Value;
if(strlen($Value)
&& !file_exists($this->TemporaryFolder . $Value)
&& !file_exists($this->FileFolder . $Value)) {
$FileName = $this->GetFileName();
$FieldName = $this->Caption;
$this->Errors->addError("The file " . $FileName . " specified
in " . $FieldName . " was not found.");
}
}

function SetText($Text) {
$this->SetValue($Text);
}

function GetValue() {
return $this->Value;
}

function GetText() {
return $this->Text;
}

function GetFileName() {
return preg_match("/^\d{14,}\./", $this->Value) ?
substr($this->Value, strpos($this->Value, ".") + 1) : $this->Value;
}

function GetFileSize() {
$filesize = 0;
if( file_exists($this->FileFolder . $this->Value) ) {
$filesize = filesize($this->FileFolder . $this->Value);
} else if ( file_exists($this->TemporaryFolder . $this->Value) ) {
$filesize = filesize($this->TemporaryFolder . $this->Value);
}
return $filesize;
}

}

//End clsFileUpload Class


May 9 '07 #1
Share this Question
Share on Google+
3 Replies


P: n/a
At Wed, 09 May 2007 11:39:43 -0400, Milagro let his monkeys type:
Hello Everyone,

I'm trying to debug someone elses php code. I'm actually a Perl
programmer, with OO experience, but not in php.

The code is supposed to upload a photo from a form and save it both on
the file system and in a mySql database. 90% of the time it works just
fine. But for some reason, with some photos, it doesn't work. The
image never shows up on the filesystem and there is no entry in the
database. I feel it's a problem with the image because if I resave the
image in photoshop with a lower resolution -- it uploads just fine. I
don't completely understand why this resaving of the image works though
because the orriginal size of the image is still well under the
FileSize Max, which according to the code below is 3.5mb.
I'm not including all of the code because there is a lot. I believe
I've pasted the correct snips below though. If you need any more info,
please let me know.

My main quesitons are:
1. How/where in the code, is the image file being written to the disk?
I don't see the 'imagejpeg' function I am familar with.
2. I want to put in some debugging print statments to figure out what's
going on -- maybe have a log file being written to but I don't know how
to go about that in OO php? Can someone give me an example to do this?

Thanks for any help and guidance!

M

-- Snip -- This is the code in the page that accepts the photos from a
form. There are actually 7 photo fields on that page. This is just one
of them.
$this->Image2 = new clsControl(ccsImage, "Image2", "Image2", ccsText,
"", CCGetRequestParam("Image2", $Method));
$this->photo2 = new clsFileUpload("photo2", "photo2", "temp/",
"photos/", "*.jpg", "", 3500000);

-- Snip -- This is the complete clsFileUpload Class

//clsFileUpload Class @0-81C1F4F1
class clsFileUpload
{
var $Name;
var $Caption;
var $Visible;
var $Required;

var $TemporaryFolder;
var $FileFolder;
var $AllowedMask; // @deprecated , use AllowedFileMasks property
var $AllowedFileMasks;
var $DisallowedFileMasks;
var $FileSizeLimit;
var $Value;
var $Text;
var $State;

var $CCSEvents = "";
var $CCSEventResult;

function clsFileUpload($Name, $Caption, $TemporaryFolder,
$FileFolder, $AllowedFileMasks, $DisallowedFileMasks, $FileSizeLimit)
{

$this->Errors = new clsErrors;

$this->Name = $Name;
$this->Visible = true;
$this->Caption = $Caption;
if(substr($TemporaryFolder, 0, 1) == "%") {
$TemporaryFolder = substr($TemporaryFolder, 1);
$TemporaryFolder = getenv($TemporaryFolder);
}
$this->TemporaryFolder = $TemporaryFolder;
if(substr($FileFolder, 0, 1) == "%") {
$FileFolder = substr($FileFolder, 1);
$FileFolder = getenv($FileFolder);
}
$this->FileFolder = $FileFolder;
$this->AllowedFileMasks = $AllowedFileMasks;
$this->AllowedMask = & $this->AllowedFileMasks;
$this->DisallowedFileMasks = $DisallowedFileMasks;
$this->FileSizeLimit = $FileSizeLimit;
$this->Value = "";
$this->Text = "";
$this->Required = false;

$FileName = "";
$FieldName = $this->Caption;
if( !is_dir($TemporaryFolder) ) {
$this->Errors->addError("Unable to upload the file specified in "
. $FieldName . " - temporary upload folder doesn't exist.");
} else if( !is_writable($TemporaryFolder) ) {
$this->Errors->addError("Insufficient filesystem permissions to
upload the file specified in " . $FieldName . " into temporary
folder.");
} else if( !is_dir($FileFolder) ) {
$this->Errors->addError("Unable to upload the file specified in "
. $FieldName . " - upload folder doesn't exist.");
} else if( !is_writable($FileFolder) ) {
$this->Errors->addError("Insufficient filesystem permissions to
upload the file specified in " . $FieldName . ".");
}

}

function Validate()
{
$validation = true;
if($this->Required && $this->Value === "" && $this->Errors->Count() == 0)
{
$FieldName = $this->Caption;
$this->Errors->addError("The file attachment in field " .
$FieldName . " is required.");
}
$this->CCSEventResult = CCGetEvent($this->CCSEvents, "OnValidate");
return ($this->Errors->Count() == 0);
}
function Upload($RowNumber = "")
{
global $HTTP_POST_FILES;
$FieldName = $this->Caption;
if(strlen($RowNumber)) {
$ControlName = $this->Name . "_" . $RowNumber;
$FileControl = $this->Name . "_File_" . $RowNumber;
$DeleteControl = $this->Name . "_Delete_" . $RowNumber;
} else {
$ControlName = $this->Name;
$FileControl = $this->Name . "_File";
$DeleteControl = $this->Name . "_Delete";
}

$SessionName = CCGetParam($ControlName);
$this->State = CCGetSession($SessionName);

if (strlen(CCGetParam($DeleteControl))) {
// delete file from folder
$ActualFileName = $this->State[0];
if( file_exists($this->FileFolder . $ActualFileName) ) {
$this->CCSEventResult = CCGetEvent($this->CCSEvents,
"BeforeDeleteFile");
unlink($this->FileFolder . $ActualFileName);
$this->CCSEventResult = CCGetEvent($this->CCSEvents,
"AfterDeleteFile");
} else if ( file_exists($this->TemporaryFolder . $ActualFileName) ) {
$this->CCSEventResult = CCGetEvent($this->CCSEvents,
"BeforeDeleteFile");
unlink($this->TemporaryFolder . $ActualFileName);
$this->CCSEventResult = CCGetEvent($this->CCSEvents,
"AfterDeleteFile");
}
$this->Value = ""; $this->Text = "";
$this->State[0] = "";
} else if (isset ($HTTP_POST_FILES[$FileControl])
&& $HTTP_POST_FILES[$FileControl]["tmp_name"] != "none"
&& strlen ($HTTP_POST_FILES[$FileControl]["tmp_name"])) {
$this->Value = ""; $this->Text = "";
$FileName = $HTTP_POST_FILES[$FileControl]["name"];
$GoodFileMask = 1;
$meta_characters = array("*" =".+", "?" =".", "\\" ="\\\\",
"^" ="\\^", "\$" ="\\\$", "." ="\\.", "[" ="\\[", "]" ="\\]",
"|" ="\\|", "(" ="\\(", ")" ="\\)", "{" ="\\{", "}" ="\\}",
"+" ="\\+", "-" ="\\-");
if ($this->AllowedFileMasks != "") {
$GoodFileMask = 0;
$FileMasks=split(';', $this->AllowedFileMasks);
foreach ($FileMasks as $FileMask) {
$FileMask =
preg_replace("/(\\*|\\?|\\\\|\\^|\\\$|\\.|\\[|\\]|\\||\\(|\\)|\\{|\\}|\\+|\\-)/ei",
"\$meta_characters['\\1']", $FileMask);
if (preg_match("/^$FileMask$/i", $FileName)) {
$GoodFileMask = 1;
break;
}
}
}
if ($GoodFileMask && $this->DisallowedFileMasks != "") {
$FileMasks=split(';', $this->DisallowedFileMasks);
foreach ($FileMasks as $FileMask) {
$FileMask =
preg_replace("/(\\*|\\?|\\\\|\\^|\\\$|\\.|\\[|\\]|\\||\\(|\\)|\\{|\\}|\\+|\\-)/ei",
"\$meta_characters['\\1']", $FileMask);
if (preg_match("/^$FileMask$/i", $FileName)) {
$GoodFileMask = 0;
break;
}
}
}
if($HTTP_POST_FILES[$FileControl]["size"] $this->FileSizeLimit) {
$this->Errors->addError("The file size in field " . $FieldName
. " is too large.");
} else if (!$GoodFileMask) {
$this->Errors->addError("The file type specified in field " .
$FieldName . " is not allowed.");
} else {
// move uploaded file to temporary folder
$file_exists = true;
$index = 0;
while($file_exists) {
$ActualFileName = date("YmdHis") . $index . "." . $FileName;
$file_exists = file_exists($ActualFileName);
$index++;
}
if( copy($HTTP_POST_FILES[$FileControl]["tmp_name"],
$this->TemporaryFolder . $ActualFileName) ) {
$this->Value = $ActualFileName;
$this->Text = $ActualFileName;
if(strlen($this->State[0])) {
if(file_exists($this->TemporaryFolder . $this->State[0])) {
$this->CCSEventResult = CCGetEvent($this->CCSEvents,
"BeforeDeleteFile");
unlink($this->TemporaryFolder . $this->State[0]);
$this->CCSEventResult = CCGetEvent($this->CCSEvents,
"AfterDeleteFile");
$this->State[0] = $ActualFileName;
} else {
if(!is_dir($this->TemporaryFolder . $this->State[1]) &&
file_exists($this->TemporaryFolder . $this->State[1])) {
$this->CCSEventResult = CCGetEvent($this->CCSEvents,
"BeforeDeleteFile");
unlink($this->TemporaryFolder . $this->State[1]);
$this->CCSEventResult = CCGetEvent($this->CCSEvents,
"AfterDeleteFile");
}
$this->State[1] = $ActualFileName;
}
} else {
$this->State[0] = $ActualFileName;
}
} else {
$this->Errors->addError("Insufficient filesystem permissions
to upload the file specified in " . $FieldName . " into temporary
folder.");
}
}
} else {
$this->SetValue(strlen($this->State[1]) ? $this->State[1] :
$this->State[0]);
}
}

function Move()
{
if (strlen($this->Value) && !file_exists($this->FileFolder .
$this->Value)) {
$this->CCSEventResult = CCGetEvent($this->CCSEvents,
"BeforeProcessFile");
$FileName = $this->GetFileName();
$FieldName = $this->Caption;
if (!file_exists($this->TemporaryFolder . $this->Value)) {
$this->Errors->addError("The file " . $FileName . " specified
in " . $FieldName . " was not found.");
} else if (!@copy($this->TemporaryFolder . $this->Value,
$this->FileFolder . $this->Value)) {
$this->Errors->addError("Insufficient filesystem permissions to
upload the file specified in " . $FieldName . ".");
} else if (strlen($this->State[1])) {
$this->CCSEventResult = CCGetEvent($this->CCSEvents,
"BeforeDeleteFile");
unlink($this->FileFolder . $this->State[0]);
$this->CCSEventResult = CCGetEvent($this->CCSEvents,
"AfterDeleteFile");
}
if($this->Errors->Count() == 0 &&
file_exists($this->TemporaryFolder . $this->Value)) {
unlink($this->TemporaryFolder . $this->Value);
}
$this->CCSEventResult = CCGetEvent($this->CCSEvents, "AfterProcessFile");
}
}

function Delete()
{
if( !is_dir($this->FileFolder . $this->State[0]) &&
file_exists($this->FileFolder . $this->State[0]) ) {
$this->CCSEventResult = CCGetEvent($this->CCSEvents, "BeforeDeleteFile");
unlink($this->FileFolder . $this->State[0]);
$this->CCSEventResult = CCGetEvent($this->CCSEvents, "AfterDeleteFile");
} else if ( !is_dir($this->TemporaryFolder . $this->State[0]) &&
file_exists($this->TemporaryFolder . $this->State[0]) ) {
$this->CCSEventResult = CCGetEvent($this->CCSEvents, "BeforeDeleteFile");
unlink($this->TemporaryFolder . $this->State[0]);
$this->CCSEventResult = CCGetEvent($this->CCSEvents, "AfterDeleteFile");
}
if( !is_dir($this->FileFolder . $this->State[1]) &&
file_exists($this->FileFolder . $this->State[1]) ) {
$this->CCSEventResult = CCGetEvent($this->CCSEvents, "BeforeDeleteFile");
unlink($this->FileFolder . $this->State[1]);
$this->CCSEventResult = CCGetEvent($this->CCSEvents, "AfterDeleteFile");
} else if ( !is_dir($this->TemporaryFolder . $this->State[1]) &&
file_exists($this->TemporaryFolder . $this->State[1]) ) {
$this->CCSEventResult = CCGetEvent($this->CCSEvents, "BeforeDeleteFile");
unlink($this->TemporaryFolder . $this->State[1]);
$this->CCSEventResult = CCGetEvent($this->CCSEvents, "AfterDeleteFile");
}
}

function Show($RowNumber = "")
{
global $Tpl;
if($this->Visible)
{
$this->CCSEventResult = CCGetEvent($this->CCSEvents, "BeforeShow");

if(!$this->Visible) {
$Tpl->setblockvar("FileUpload " . $this->Name, "");
return;
}

if(strlen($RowNumber)) {
$ControlName = $this->Name . "_" . $RowNumber;
$FileControl = $this->Name . "_File_" . $RowNumber;
$DeleteControl = $this->Name . "_Delete_" . $RowNumber;
} else {
$ControlName = $this->Name;
$FileControl = $this->Name . "_File";
$DeleteControl = $this->Name . "_Delete";
}

$SessionName = CCGetParam($ControlName);
if(!strlen($SessionName)) {
srand ((double) microtime() * 1000000);
$random_value = rand();
$SessionName = "FileUpload" . $random_value . date("dHis");
$this->State = array($this->Value, "");
}

CCSetSession($SessionName, $this->State);

$Tpl->SetVar("State", $SessionName);
$Tpl->SetVar("ControlName", $ControlName);
$Tpl->SetVar("FileControl", $FileControl);
$Tpl->SetVar("DeleteControl", $DeleteControl);
if (strlen($this->Value) ) {
$Tpl->SetVar("ActualFileName", $this->Value);
$Tpl->SetVar("FileName", $this->GetFileName());
$Tpl->SetVar("FileSize", $this->GetFileSize());
$Tpl->parse("FileUpload " . $this->Name . "/Info", false);
if($this->Required) {
$Tpl->parse("FileUpload " . $this->Name . "/Upload", false);
$Tpl->setblockvar("FileUpload " . $this->Name .
"/DeleteControl", "");
} else {
$Tpl->setblockvar("FileUpload " . $this->Name . "/Upload", "");
$Tpl->parse("FileUpload " . $this->Name . "/DeleteControl", false);
}
} else {
$Tpl->parse("FileUpload " . $this->Name . "/Upload", false);
$Tpl->setblockvar("FileUpload " . $this->Name . "/Info", "");
$Tpl->setblockvar("FileUpload " . $this->Name . "/DeleteControl", "");
}

$Tpl->Parse("FileUpload " . $this->Name, false);
}
else
{
$Tpl->setblockvar("FileUpload " . $this->Name, "");
}
}

function SetValue($Value) {
$this->Text = $Value;
$this->Value = $Value;
$this->State[0] = $Value;
if(strlen($Value)
&& !file_exists($this->TemporaryFolder . $Value)
&& !file_exists($this->FileFolder . $Value)) {
$FileName = $this->GetFileName();
$FieldName = $this->Caption;
$this->Errors->addError("The file " . $FileName . " specified
in " . $FieldName . " was not found.");
}
}

function SetText($Text) {
$this->SetValue($Text);
}

function GetValue() {
return $this->Value;
}

function GetText() {
return $this->Text;
}

function GetFileName() {
return preg_match("/^\d{14,}\./", $this->Value) ?
substr($this->Value, strpos($this->Value, ".") + 1) : $this->Value;
}

function GetFileSize() {
$filesize = 0;
if( file_exists($this->FileFolder . $this->Value) ) {
$filesize = filesize($this->FileFolder . $this->Value);
} else if ( file_exists($this->TemporaryFolder . $this->Value) ) {
$filesize = filesize($this->TemporaryFolder . $this->Value);
}
return $filesize;
}

}

//End clsFileUpload Class

But, what's important here, do you know what the accepted upload size is
in php.ini? (check using phpinfo(), variable upload_max_filesize). If
that's under the form's limit, this might explain why the uploads fail on
originals and succeed on the resized/recompressed versions.
I think the default might be 2megs.
The size specified in the form isn't a hard limit per se, the
upload_max_filesize in php.ini is.

HTH
Sh.

PS can't help but get the idea (haven't read all the posted code in
detail) the class you got is rather, errm, huge for what it's supposed to
do. And not that easy to decipher. Documenting's not the programmer's
first priority I suppose...

Good luck, let us know what you find!
Sh.
May 9 '07 #2

P: n/a
>
But, what's important here, do you know what the accepted upload size is
in php.ini? (check using phpinfo(), variable upload_max_filesize). If
that's under the form's limit, this might explain why the uploads fail on
originals and succeed on the resized/recompressed versions.
I think the default might be 2megs.
The size specified in the form isn't a hard limit per se, the
upload_max_filesize in php.ini is.

HTH
Sh.

Thanks! I think you hit the nail on the head. upload_max_filesize is
indeed set to 2mb and all the files I'm having problems with are over
2mb.

Two more questions. Is there any downside to changing this variable in
php.ini to a higher value [say 3mb] (other then it consuming more
server resources) ?
This is a dedicated server with a speedy processor and 2gb of Ram.
And if I do change the value in php.ini do I have to restart some
process or does php pick up those settings right away?

Thanks again.
M

May 9 '07 #3

P: n/a
At Wed, 09 May 2007 15:12:04 -0400, Milagro let his monkeys type:
>>
But, what's important here, do you know what the accepted upload size is
in php.ini? (check using phpinfo(), variable upload_max_filesize). If
that's under the form's limit, this might explain why the uploads fail on
originals and succeed on the resized/recompressed versions.
I think the default might be 2megs.
The size specified in the form isn't a hard limit per se, the
upload_max_filesize in php.ini is.

HTH
Sh.


Thanks! I think you hit the nail on the head. upload_max_filesize is
indeed set to 2mb and all the files I'm having problems with are over
2mb.

Two more questions. Is there any downside to changing this variable in
php.ini to a higher value [say 3mb] (other then it consuming more
server resources) ?
Not that I am aware of, no.
This is a dedicated server with a speedy processor and 2gb of Ram.
And if I do change the value in php.ini do I have to restart some
process or does php pick up those settings right away?

Thanks again.
M
It all boils down to the number of concurrent users I suppose, you could
benchmark the performance if you expect load/resource issues.

Restart apache after any change to the config files.

On linux, there probably is a script in /etc/init.d/ or /etc/rc.d/init.d/
named apache, apache2 or httpd. On my Gentoo box the proper command would
be /etc/init.d/apache2 restart.

On windows XP machines I know it's possible to restart a service in
Control Panel/Administrative Tools/Services, and perhaps from the command
line. Been too long to remember exactly.

Sh.

May 9 '07 #4

This discussion thread is closed

Replies have been disabled for this discussion.