function uploadDocument($doc_name, $ws_id, $path) { if (str_starts_with($doc_name, "~")) { return; } try { DB::beginWork(); $project = Projects::findById($ws_id); //$file = ProjectFiles::findOne(array("conditions" => "`filename` = '$doc_name'")); $files = ProjectFiles::getAllByFilename($doc_name, $ws_id); if (is_array($files) && count($files) > 0) { $file = $files[0]; } else { $file = null; } if (!$file instanceof ProjectFile) { $file = new ProjectFile(); $file->setFilename($doc_name); $file->setIsVisible(true); $file->setIsPrivate(false); $file->setIsImportant(false); $file->setCommentsEnabled(true); $file->setAnonymousCommentsEnabled(false); //$file->setCreatedOn(new DateTimeValue(time()) ); } $sourcePath = $path . $doc_name; $handle = fopen($sourcePath, "r"); $size = filesize($sourcePath); $file_content = fread($handle, $size); fclose($handle); $file_dt['name'] = $file->getFilename(); $file_dt['size'] = strlen($file_content); $file_dt['tmp_name'] = $sourcePath; //TEMP_PATH . DIRECTORY_SEPARATOR . rand() ; $extension = trim(get_file_extension($sourcePath)); $file_dt['type'] = Mime_Types::instance()->get_type($extension); if (!trim($file_dt['type'])) { $file_dt['type'] = 'text/html'; } $file->save(); $file->removeFromAllWorkspaces(); $file->addToWorkspace($project); $old_revs = $file->getRevisions(); foreach ($old_revs as $rev) { $rev->delete(); } $revision = $file->handleUploadedFile($file_dt, true, ''); $file_date = new DateTimeValue(filemtime($sourcePath)); $revision->setCreatedOn($file_date); $revision->setUpdatedOn($file_date); $revision->save(); $file->setCreatedOn($file_date); $file->setUpdatedOn($file_date); $file->save(); $ws = $file->getWorkspaces(); ApplicationLogs::createLog($file, $ws, ApplicationLogs::ACTION_ADD); ImportLogger::instance()->log(" File: {$doc_name} [{$ws_id}]"); print " File: {$doc_name} [{$ws_id}]\r\n"; DB::commit(); } catch (Exception $e) { DB::rollback(); ImportLogger::instance()->logError("{$e}\r\n**************************************************"); print "\r\n\r\nERROR: {$e}\r\n"; } }
function fckimagesupload(){ try { if ( isset( $_FILES['NewFile'] ) && !is_null( $_FILES['NewFile']['tmp_name'] ) ) { $oFile = $_FILES['NewFile'] ; }else{ $sErrorNumber = '202'; echo $this->SendUploadResults( $sErrorNumber ) ; return; } $sErrorNumber = '0' ; $sFileName = $oFile['name'] ; $file = new ProjectFile(); $file->setFilename($sFileName); $file->setIsVisible(true); $file->setCreatedOn(new DateTimeValue(time())); DB::beginWork(); $file->save(); //FIXME $workspaces = array(personal_project()); /*FIXME if (is_array($workspaces)) { foreach ($workspaces as $ws) { $file->addToWorkspace($ws); } }*/ $revision = $file->handleUploadedFile($oFile, true, ''); ApplicationLogs::createLog($file, ApplicationLogs::ACTION_ADD); DB::commit(); echo $this->SendUploadResults( $sErrorNumber, $file->getDownloadUrl() , $file->getFilename() ) ; } catch (Exception $e) { DB::rollback(); $sErrorNumber = '202'; echo $this->SendUploadResults( $sErrorNumber ) ; } }
function uploadFile($username, $password, $workspaces, $tags, $generate_rev, $filename, $description, $do_checkin, $data) { $result = array('status' => true, 'errorid' => 0, 'message' => ''); if ($this->loginUser($username, $password)) { try { DB::beginWork(); $file = null; $files = ProjectFiles::getAllByFilename($filename, logged_user()->getWorkspacesQuery()); if (is_array($files) && count($files) > 0) { if ($generate_rev) { $file = ProjectFiles::findById($files[0]->getId()); if ($file->isCheckedOut()) { if (!$file->canCheckin(logged_user())) { $result['status'] = false; $result['errorid'] = 1004; $result['message'] = lang('no access permissions'); } $file->setCheckedOutById(0); } else { // Check for edit permissions if (!$file->canEdit(logged_user())) { $result['status'] = false; $result['errorid'] = 1004; $result['message'] = lang('no access permissions'); } } } } if ($result['status']) { $enteredWS = Projects::findByCSVIds($workspaces); $validWS = array(); foreach ($enteredWS as $ws) { if (ProjectFile::canAdd(logged_user(), $ws)) { $validWS[] = $ws; } } if (count($validWS) == 0) { $result['status'] = false; $result['errorid'] = 1005; $result['message'] = 'Invalid workspaces given. Check access permissions.'; } else { $make_revision_comment = $file != null; if ($file == null) { $file = new ProjectFile(); $file->setFilename($filename); $file->setIsVisible(true); $file->setIsPrivate(false); $file->setIsImportant(false); $file->setCommentsEnabled(true); $file->setAnonymousCommentsEnabled(false); $file->setCreatedOn(new DateTimeValue(time())); $file->setDescription($description); } $file_dt['name'] = $file->getFilename(); $file_dt['size'] = strlen($data); $file_dt['tmp_name'] = ROOT . DIRECTORY_SEPARATOR . 'tmp' . DIRECTORY_SEPARATOR . rand(); $extension = trim(get_file_extension($file->getFilename())); $file_dt['type'] = Mime_Types::instance()->get_type($extension); if (!trim($file_dt['type'])) { $file_dt['type'] = 'text/html'; } $handle = fopen($file_dt['tmp_name'], "w"); fwrite($handle, $data, $file_dt['size']); fclose($handle); $file->save(); $revision = $file->handleUploadedFile($file_dt, true, $make_revision_comment ? $description : ''); $file->setTagsFromCSV($tags); foreach ($validWS as $w) { $file->addToWorkspace($w); } foreach ($validWS as $w) { ApplicationLogs::createLog($file, $w, ApplicationLogs::ACTION_ADD); } DB::commit(); $result['message'] = 'd' . str_pad($file->getId(), 3, '0', STR_PAD_LEFT) . 'r' . $file->getRevisionNumber(); if (!$do_checkin) { $this->checkoutFile($username, $password, $file->getId()); } } } } catch (Exception $e) { DB::rollback(); $result['message'] = $e->getMessage(); $result['errorid'] = 1003; $result['status'] = false; // If we uploaded the file remove it from repository if (isset($revision) && $revision instanceof ProjectFileRevision && FileRepository::isInRepository($revision->getRepositoryId())) { FileRepository::deleteFile($revision->getRepositoryId()); } } } else { $result['status'] = false; $result['errorid'] = 1002; $result['message'] = lang('invalid login data'); } return $this->result_to_xml($result, 'result'); }