'image/gif',
'image/png',
);
+ protected $fileMimeTypes = array(
+ 'application/pdf',
+ 'application/msword',
+ 'application/force-download'
+ );
// }}}
// {{{ __construct()
'name' => 'image',
'display' => 'Upload a Course Photo / Image',
);
+ $e[] = array(
+ 'type' => 'checkbox',
+ 'req' => false,
+ 'name' => 'remove_file_rmv',
+ 'display' => 'Remove File',
+ );
+ $e[] = array(
+ 'type' => 'static',
+ 'req' => false,
+ 'name' => 'curr_file',
+ 'display' => 'Current File',
+ );
+ $e[] = array(
+ 'type' => 'hidden',
+ 'req' => false,
+ 'name' => 'curr_file_rmv',
+ );
+ $e[] = array(
+ 'type' => 'file',
+ 'req' => false,
+ 'name' => 'file',
+ 'display' => 'Upload a Course File',
+ );
$e[] = array(
'type' => 'header',
'req' => false,
{
$r = array();
- $checkDate = create_function('$d', '$d = implode("-", $d); return Validate::date($d, array("format" => "%n-%j-%Y"));');
$r[] = array(
'element' => 'image',
'message' => 'ERROR: Incorrect File Type (.gif, .png, .jpg) only!',
'reset' => false,
'force' => false
);
+ $r[] = array(
+ 'element' => 'file_rmv',
+ 'message' => 'ERROR: Incorrect File Type (.pdf, .doc) only!',
+ 'type' => 'mimetype',
+ 'format' => $this->fileMimeTypes,
+ 'validation' => $this->validationType,
+ 'reset' => false,
+ 'force' => false
+ );
$this->setupRules($r);
}
// }}}
+ protected function deleteFile($file)
+ {
+ $fs = new Toolkit_FileServer_FileAdapter();
+ return $fs->delete($file);
+ }
// {{{ insertData()
/**
$values['pos'] = $courses->getListSize() + 1;
$values['image'] = $e->getValue('curr_image_rmv');
+ $e =& $this->getElement('curr_file_rmv');
+ $values['file'] = $e->getValue('curr_file_rmv');
$values['member_id'] = $_GET['id'];
$values['pending'] = 0;
unset($values['MAX_FILE_SIZE'],
$values['curr_image_rmv'],
+ $values['curr_file_rmv'],
$values['remove_img_rmv'],
$values['add_rmv']);
+ //echo '<pre>'.print_r($values, true).'</pre>';
+ //exit;
$this->tableMetaData = Toolkit_Common::getTableMetaData(
$this->dbh,
}
// }}}
+ function validNewFile(array $newFile)
+ {
+ return ( is_numeric($newFile['size'])
+ && $newFile['size'] > 0
+ && in_array($newFile['type'], $this->fileMimeTypes));
+ }
// {{{ removeOldImage()
/**
}
// }}}
+ protected function syncCurrFile()
+ {
+ $is = new Toolkit_Image_Server();
+
+ $delFile = $this->getSubmitValue('remove_file_rmv');
+ $oldFile = $this->getSubmitValue('curr_file_rmv');
+ $newFile = $this->getSubmitValue('file');
+
+ if ($delFile && $oldFile) {
+ $this->removeOldFile($is, $oldFile);
+ unset($oldFile);
+ } elseif ($oldFile && $this->validNewFile($newFile)) {
+ $this->removeOldFile($is, $oldFile);
+ unset($oldFile);
+ }
+
+ if ($this->validNewFile($newFile)) {
+ $fileData = $this->uploadFile('file');
+ $file = ($fileData['name']) ? $fileData['name']: null;
+ } else {
+ $file = $oldFile;
+ }
+
+ if ($file) {
+ $this->updateFileElements($file);
+ $this->showCurrFile = true;
+ }
+ }
// {{{ toHtml()
/**
// their uploaded image in the form
if ($this->isSubmitted()) {
$this->syncCurrImage();
+ $this->syncCurrFile();
}
$this->setupRenderers($tEngine);
// {{{ updatePhotoElements()
+ public function updateFileElements($file)
+ {
+ // Get the dimensions of the image
+ $s = MEMBER_ORIGINAL . $file;
+
+ // Set the image to show in the element
+ $e =& $this->getElement('curr_file');
+ $e->setText('<a href="'.$s.'"></a>');
+
+ // updated the hidden elements value to make sure it
+ // holds the most up-to-date image name
+ $e =& $this->getElement('curr_file_rmv');
+ $e->setValue($file);
+ }
/**
* Short description for function
*
}
// }}}
+ protected function uploadFile($field)
+ {
+ $fs = new Toolkit_FileServer_FileAdapter();
+ try {
+ return $fs->upload($field);
+ } catch (Toolkit_FileServer_Exception $e) {
+ return;
+ }
+ }
// {{{ uploadImage()
/**
'image/gif',
'image/png',
);
+ protected $fileMimeTypes = array(
+ 'application/pdf',
+ 'application/msword',
+ 'application/force-download'
+ );
// }}}
// {{{ __construct()
$defaults['curr_image_rmv'] = $defaults['image'];
$img = '<img src="%s">';
$defaults['curr_image'] = sprintf($img, MEMBER_PHOTOS . $defaults['image']);
- $this->showCurrImg = $defaults['image'];
+ $this->showCurrImg = $defaults['image'];
+
+ $defaults['curr_file_rmv'] = $defaults['file'];
+ $file = '<a href="%s">File</a>';
+ $defaults['curr_file'] = sprintf($file, MEMBER_ORIGINAL . $defaults['file']);
+ $this->showCurrFile = $defaults['file'];
$this->setupDefaults($defaults);
}
'name' => 'image',
'display' => 'Upload a Course Photo / Image',
);
+ $e[] = array(
+ 'type' => 'checkbox',
+ 'req' => false,
+ 'name' => 'remove_file_rmv',
+ 'display' => 'Remove File',
+ );
+ $e[] = array(
+ 'type' => 'static',
+ 'req' => false,
+ 'name' => 'curr_file',
+ 'display' => 'Current File',
+ );
+ $e[] = array(
+ 'type' => 'hidden',
+ 'req' => false,
+ 'name' => 'curr_file_rmv',
+ );
+ $e[] = array(
+ 'type' => 'file',
+ 'req' => false,
+ 'name' => 'file',
+ 'display' => 'Upload a Course File',
+ );
$e[] = array(
'type' => 'text',
'req' => false,
{
$r = array();
- $checkDate = create_function('$d', '$d = implode("-", $d); return Validate::date($d, array("format" => "%n-%j-%Y"));');
$r[] = array(
- 'element' => 'sdate',
- 'message' => 'ERROR: Invalid Date!',
- 'type' => 'callback',
- 'format' => $checkDate,
- 'validation' => $this->validationType,
- 'reset' => false,
- 'force' => false
- );
- $r[] = array(
- 'element' => 'edate',
- 'message' => 'ERROR: Invalid Date!',
- 'type' => 'callback',
- 'format' => $checkDate,
+ 'element' => 'image',
+ 'message' => 'ERROR: Incorrect File Type (.gif, .png, .jpg) only!',
+ 'type' => 'mimetype',
+ 'format' => $this->mimeTypes,
'validation' => $this->validationType,
'reset' => false,
'force' => false
);
$r[] = array(
- 'element' => 'image',
- 'message' => 'ERROR: Incorrect File Type (.gif, .png, .jpg) only!',
+ 'element' => 'file_rmv',
+ 'message' => 'ERROR: Incorrect File Type (.pdf, .doc) only!',
'type' => 'mimetype',
- 'format' => $this->mimeTypes,
+ 'format' => $this->fileMimeTypes,
'validation' => $this->validationType,
'reset' => false,
'force' => false
// }}}
+ protected function deleteFile($file)
+ {
+ $fs = new Toolkit_FileServer_FileAdapter();
+ return $fs->delete($file);
+ }
// {{{ processData()
/**
$cache->remove("Member-{$_GET['id']}", 'Profile');
$e =& $this->getElement('curr_image_rmv');
-
$values['image'] = $e->getValue('curr_image_rmv');
- unset($values['MAX_FILE_SIZE'],
- $values['curr_image_rmv'],
- $values['remove_img_rmv'],
- $values['add_rmv']);
+
+ $e =& $this->getElement('curr_file_rmv');
+ $values['file'] = $e->getValue('curr_file_rmv');
+
+ unset(
+ $values['MAX_FILE_SIZE'],
+ $values['curr_image_rmv'],
+ $values['remove_img_rmv'],
+ $values['curr_file_rmv'],
+ $values['remove_file_rmv'],
+ $values['add_rmv']
+ );
+
+ //echo '<pre>'.print_r($values, true).'</pre>';
+ //exit;
$this->tableMetaData = Toolkit_Common::getTableMetaData(
$this->dbh,
$renderer = new HTML_QuickForm_Renderer_ObjectFlexy($tEngine);
$this->accept($renderer);
- $this->view = new stdClass();
- $this->view->courseId = $this->courseId;
- $this->view->showCurrImg = $this->showCurrImg;
- $this->view->form = $renderer->toObject();
+ $this->view = new stdClass();
+ $this->view->courseId = $this->courseId;
+ $this->view->showCurrImg = $this->showCurrImg;
+ $this->view->showCurrFile = $this->showCurrFile;
+ $this->view->form = $renderer->toObject();
$tEngine->compile($this->formTemplate);
}
}
// }}}
+ function validNewFile(array $newFile)
+ {
+ return ( is_numeric($newFile['size'])
+ && $newFile['size'] > 0
+ && in_array($newFile['type'], $this->fileMimeTypes));
+ }
// {{{ removeOldImage()
/**
}
// }}}
+ function removeOldFile(Toolkit_Image_Server $is, $oldFile)
+ {
+ $this->deleteFile($oldFile);
+ if ($this->elementExists('curr_file_rmv')) {
+ $e =& $this->getElement('curr_file_rmv');
+ $e->setValue(null);
+ $this->_submitValues['curr_file_rmv'] = null;
+ }
+ }
// {{{ syncCurrImage()
/**
// }}}
+ /**
+ * Short description for function
+ *
+ * Long description (if any) ...
+ *
+ * @return void
+ * @access protected
+ */
+ protected function syncCurrFile()
+ {
+ $is = new Toolkit_Image_Server();
+
+ $delFile = $this->getSubmitValue('remove_file_rmv');
+ $oldFile = $this->getSubmitValue('curr_file_rmv');
+ $newFile = $this->getSubmitValue('file');
+
+ if ($delFile && $oldFile) {
+ $this->removeOldFile($is, $oldFile);
+ unset($oldFile);
+ } elseif ($oldFile && $this->validNewFile($newFile)) {
+ $this->removeOldFile($is, $oldFile);
+ unset($oldFile);
+ }
+
+ if ($this->validNewFile($newFile)) {
+ $fileData = $this->uploadFile('file');
+ $file = ($fileData['name']) ? $fileData['name']: null;
+ } else {
+ $file = $oldFile;
+ }
+
+ if ($file) {
+ $this->updateFileElements($file);
+ $this->showCurrFile = true;
+ }
+ }
// {{{ toHtml()
/**
// their uploaded image in the form
if ($this->isSubmitted()) {
$this->syncCurrImage();
+ $this->syncCurrFile();
}
$this->setupRenderers($tEngine);
}
// }}}
+ public function updateFileElements($file)
+ {
+ // Get the dimensions of the image
+ $s = MEMBER_ORIGINAL . $file;
+
+ // Set the image to show in the element
+ $e =& $this->getElement('curr_file');
+ $e->setText('<a href="'.$s.'"></a>');
+
+ // updated the hidden elements value to make sure it
+ // holds the most up-to-date image name
+ $e =& $this->getElement('curr_file_rmv');
+ $e->setValue($file);
+ }
// {{{ uploadImage()
/**
}
// }}}
+ protected function uploadFile($field)
+ {
+ $fs = new Toolkit_FileServer_FileAdapter();
+ try {
+ return $fs->upload($field);
+ } catch (Toolkit_FileServer_Exception $e) {
+ return;
+ }
+ }
}
?>