private function _processFileUploads($files, $uid, $pid) { //Import filesystem libraries. jimport('joomla.filesystem.file'); $errors = array(); $config = $this->_umodel->getFileUploadCfg(); $max = $config['max_filesize'] * 1024 * 1024; require_once JPATH_COMPONENT_ADMINISTRATOR . DS . 'helpers' . DS . 'jobboard_file.php'; $filetypes = JobBoardFileHelper::getValidFtypes(); $component_folder = JPATH_BASE . DS . 'images' . DS . 'com_jobboard'; if (!JFolder::exists($component_folder)) { $component_folder_created = JFolder::create($component_folder); if ($component_folder_created == false) { $errors[] = JText::_('COM_JOBBOARD_USERFOLDER_CREATE_ERR'); } } $sec_file = $component_folder . DS . 'index.html'; if (!JFile::exists($sec_file)) { $_html = '<!DOCTYPE html><title></title>'; JFile::write($sec_file, $_html); } $users_folder = $component_folder . DS . 'users'; if (!JFolder::exists($users_folder)) { $users_folder_created = JFolder::create($users_folder); if ($users_folder_created == false) { $errors[] = JText::_('COM_JOBBOARD_USERFOLDER_CREATE_ERR'); } } $sec_file = $users_folder . DS . 'index.html'; if (!JFile::exists($sec_file)) { $_html = '<!DOCTYPE html><title></title>'; JFile::write($sec_file, $_html); } foreach ($files as $file) { $file_name_title = $file["title"] == '' ? $file["name"] . '(' . JText::_('COM_JOBBOARD_FILE_NOTITLE') . ')' : $file["name"] . '(' . $file["title"] . ')'; if ($file['size'] > $max) { $errors[] = JText::sprintf('COM_JOBBOARD_MAX_FILESIZE_ERR', $file_name_title, $config["max_filesize"]); } elseif (!in_array($file['type'], $filetypes)) { $errors[] = JText::sprintf('COM_JOBBOARD_FILENOTPERM', $file_name_title, $file["type"]); } else { //Clean up filename $filename = JFile::makeSafe($file['name']); $filename = str_replace(" ", "_", $filename); $file['name'] = $filename; //Set up the source and destination of the file $src = $file['tmp_name']; $user_folder = $users_folder . DS . $uid; if (!JFolder::exists($user_folder)) { $user_folder_created = JFolder::create($user_folder); if ($user_folder_created == false) { $errors[] = JText::_('COM_JOBBOARD_USERFOLDER_CREATE_ERR'); } } $sec_file = $user_folder . DS . 'index.html'; if (!JFile::exists($sec_file)) { $_html = '<!DOCTYPE html><title></title>'; JFile::write($sec_file, $_html); } $user_files_folder = $user_folder . DS . 'files'; if (!JFolder::exists($user_files_folder)) { $user_files_folder_created = JFolder::create($user_files_folder); if ($user_files_folder_created == false) { $errors[] = JText::_('COM_JOBBOARD_USERFOLDER_CREATE_ERR'); } } $sec_file = $user_files_folder . DS . 'index.html'; if (!JFile::exists($sec_file)) { $_html = '<!DOCTYPE html><title></title>'; JFile::write($sec_file, $_html); } $new_files_folder = $user_files_folder . DS . $pid; if (!JFolder::exists($new_files_folder)) { $new_files_folder_created = JFolder::create($new_files_folder); if ($new_files_folder_created == false) { $errors[] = JText::_('COM_JOBBOARD_USERFOLDER_CREATE_ERR'); } } $sec_file = $new_files_folder . DS . 'index.html'; if (!JFile::exists($sec_file)) { $_html = '<!DOCTYPE html><title></title>'; JFile::write($sec_file, $_html); } $dest = $new_files_folder . DS . $file['name']; if (!JFile::upload($src, $dest)) { $errors[] = JText::_('COM_JOBBOARD_FILE_UPLDERR') . ' - ' . $file_name_title; } else { unset($file['tmp_name'], $file['error']); //convert to generic MS-Office filetypes if ($file['type'] == $filetypes[6] || $file['type'] == $filetypes[7]) { $file['type'] = "application/msword"; } if ($file['type'] == $filetypes[9] || $file['type'] == $filetypes[10]) { $file['type'] = "application/msexcel"; } //save to db if ($this->_umodel->saveCvFile($uid, $pid, $file, $new_files_folder) == false) { $errors[] = JText::_('COM_JOBBOARD_FILE_UPLDERR') . ' - ' . $file_name_title; } } } } if (count($errors) <= 0) { return true; } else { return $errors; } }
function uploadCv() { jimport('joomla.filesystem.file'); jimport('joomla.filesystem.folder'); require_once JPATH_COMPONENT_ADMINISTRATOR . DS . 'helpers' . DS . 'jobboard_file.php'; require_once JPATH_COMPONENT_ADMINISTRATOR . DS . 'helpers' . DS . 'jobboard_guest.php'; $filetypes = JobBoardFileHelper::getMinValidFtypes(); $file_errors = false; $upload_msg = ''; $upload_file = JRequest::getVar('cv', null, 'files', 'array'); //Clean up filename $this->_filename = JFile::makeSafe($upload_file['name']); $this->_filename = str_replace(" ", "_", $this->_filename); // Check valid file format for Upload if ($upload_file["size"] > 0) { if ($upload_file["size"] > JobBoardGuestHelper::getMaxFilesizeBytes()) { $upload_msg = '<li>' . JText::_('MAX_CVSIZE_ERR') . '</li>'; $file_errors = true; } if (!in_array($upload_file['type'], $filetypes)) { $upload_msg .= '<li>' . JText::_('CV_FILEFORMAT_MSG') . '</li>'; $file_errors = true; } } else { if (strlen($this->_filename) <= 0 || $upload_file["size"] <= 0) { $upload_msg = '<li>' . JText::_('CV_FILE_ERR') . '</li>'; $file_errors = true; } } $cv_folder = JPATH_COMPONENT_ADMINISTRATOR . DS . 'cv'; if (!JFolder::exists($cv_folder)) { $upload_msg = '<li>' . JText::_('COM_JOBBOARD_FILE_NOFOLDER') . '</li>'; $file_errors = true; } if ($file_errors) { $corrections = new JObject(); $corrections->errors = true; $corrections->msg = $upload_msg; return $corrections; } $file_hash = strtolower($this->randId()); $hashed_file = strtolower($file_hash . '_' . $this->_filename); //Set up the source and destination of the file $src = $upload_file['tmp_name']; $dest = $cv_folder . DS . $hashed_file; if (!JFile::upload($src, $dest)) { $upload_msg = '<li>' . JText::_('COM_JOBBOARD_FILE_UPLDERR') . ' - ' . $file_name_title . '</li>'; $file_errors = true; } else { unset($upload_file['tmp_name'], $upload_file['error']); //convert to generic MS-Office filetypes if ($upload_file['type'] == $filetypes[3] || $upload_file['type'] == $filetypes[4]) { $upload_file['type'] = "application/msword"; } } if ($file_errors) { $corrections = new JObject(); $corrections->errors = true; $corrections->msg = $upload_msg; return $corrections; } return array(strtolower($this->_filename), $file_hash, $upload_file['type']); }