function quick_add_files() { if (logged_user()->isGuest()) { flash_error(lang('no access permissions')); ajx_current("empty"); return; } $file_data = array_var($_POST, 'file'); $file = new ProjectFile(); tpl_assign('file', $file); tpl_assign('file_data', $file_data); tpl_assign('genid', array_var($_GET, 'genid')); tpl_assign('object_id', array_var($_GET, 'object_id')); if (is_array(array_var($_POST, 'file'))) { //$this->setLayout("html"); $upload_option = array_var($file_data, 'upload_option'); try { DB::beginWork(); $type = array_var($file_data, 'type'); $file->setType($type); $file->setFilename(array_var($file_data, 'name')); $file->setFromAttributes($file_data); $file->setIsVisible(true); $file->save(); $file->subscribeUser(logged_user()); if($file->getType() == ProjectFiles::TYPE_DOCUMENT){ // handle uploaded file $upload_id = array_var($file_data, 'upload_id'); $uploaded_file = array_var($_SESSION, $upload_id, array()); $revision = $file->handleUploadedFile($uploaded_file, true); // handle uploaded file @unlink($uploaded_file['tmp_name']); unset($_SESSION[$upload_id]); } else if ($file->getType() == ProjectFiles::TYPE_WEBLINK) { $url = array_var($file_data, 'url', ''); if ($url && strpos($url, ':') === false) { $url = $this->protocol . $url; $file->setUrl($url); $file->save(); } $revision = new ProjectFileRevision(); $revision->setFileId($file->getId()); $revision->setRevisionNumber($file->getNextRevisionNumber()); $revision->setFileTypeId(FileTypes::getByExtension('webfile')->getId()); $revision->setTypeString($file->getUrl()); $revision->setRepositoryId('webfile'); $revision_comment = array_var($file_data, 'revision_comment', lang('initial versions')); $revision->setComment($revision_comment); $revision->save(); } $member_ids = array(); $object_controller = new ObjectController(); if(count(active_context_members(false)) > 0 ){ $object_controller->add_to_members($file, active_context_members(false)); }elseif(array_var($file_data, 'object_id')){ $object = Objects::findObject(array_var($file_data, 'object_id')); if ($object instanceof ContentDataObject) { $member_ids = $object->getMemberIds(); $object_controller->add_to_members($file, $member_ids); } else { // add only to logged_user's person member $object_controller->add_to_members($file, array()); } } else { // add only to logged_user's person member $object_controller->add_to_members($file, array()); } DB::commit(); ajx_extra_data(array("file_id" => $file->getId())); ajx_extra_data(array("file_name" => $file->getFilename())); ajx_extra_data(array("icocls" => 'ico-file ico-' . str_replace(".", "_", str_replace("/", "-", $file->getTypeString())))); if (!array_var($_POST, 'no_msg')) { flash_success(lang('success add file', $file->getFilename())); } ajx_current("empty"); } catch(Exception $e) { DB::rollback(); flash_error($e->getMessage()); ajx_current("empty"); // If we uploaded the file remove it from repository if(isset($revision) && ($revision instanceof ProjectFileRevision) && FileRepository::isInRepository($revision->getRepositoryId())) { FileRepository::deleteFile($revision->getRepositoryId()); } // if } // try } // if } // quick_add_files
function quick_add_files() { if (logged_user()->isGuest()) { flash_error(lang('no access permissions')); ajx_current("empty"); return; } $file_data = array_var($_POST, 'file'); $file = new ProjectFile(); tpl_assign('file', $file); tpl_assign('file_data', $file_data); tpl_assign('tag', array_var($_GET, 'tag')); tpl_assign('workspace', array_var($_GET, 'workspace')); tpl_assign('genid', array_var($_GET, 'genid')); if (is_array(array_var($_POST, 'file'))) { //$this->setLayout("html"); $upload_option = array_var($file_data, 'upload_option'); $skipSettings = false; try { DB::beginWork(); if ($upload_option && $upload_option != -1) { $skipSettings = true; $file = ProjectFiles::findById($upload_option); $old_subs = $file->getSubscribers(); // Mantain old subscribers foreach ($old_subs as $user) { $value = "user_" . $user->getId(); if (is_array($_POST['subscribers'])) { if (array_var($_POST['subscribers'], $value, null) != 'checked') { $_POST['subscribers'][$value] = 'checked'; } } } if ($file->isCheckedOut()) { if (!$file->canCheckin(logged_user())) { flash_error(lang('no access permissions')); ajx_current("empty"); return; } $file->setCheckedOutById(0); } else { // Check for edit permissions if (!$file->canEdit(logged_user())) { flash_error(lang('no access permissions')); ajx_current("empty"); return; } } } else { $type = array_var($file_data, 'type'); $file->setType($type); $file->setFilename(array_var($file_data, 'name')); $file->setFromAttributes($file_data); $file->setIsPrivate(false); if (!logged_user()->isMemberOfOwnerCompany()) { $file->setIsImportant(false); $file->setCommentsEnabled(true); $file->setAnonymousCommentsEnabled(false); } // if $file->setIsVisible(true); } $file->save(); if ($file->getType() == ProjectFiles::TYPE_DOCUMENT) { // handle uploaded file $upload_id = array_var($file_data, 'upload_id'); $uploaded_file = array_var($_SESSION, $upload_id, array()); $revision = $file->handleUploadedFile($uploaded_file, true); // handle uploaded file @unlink($uploaded_file['tmp_name']); unset($_SESSION[$upload_id]); } else { if ($file->getType() == ProjectFiles::TYPE_WEBLINK) { $url = array_var($file_data, 'url', ''); if ($url && strpos($url, ':') === false) { $url = "http://" . $url; $file->setUrl($url); $file->save(); } $revision = new ProjectFileRevision(); $revision->setFileId($file->getId()); $revision->setRevisionNumber($file->getNextRevisionNumber()); $revision->setFileTypeId(FileTypes::getByExtension('webfile')->getId()); $revision->setTypeString($file->getUrl()); $revision->setRepositoryId('webfile'); $revision_comment = array_var($file_data, 'revision_comment', lang('initial versions')); $revision->setComment($revision_comment); $revision->save(); } } $object_controller = new ObjectController(); //Add properties if (!$skipSettings) { $file->setTagsFromCSV(array_var($file_data, 'tags')); $object_controller->add_to_workspaces($file); } DB::commit(); ajx_extra_data(array("file_id" => $file->getId())); ajx_extra_data(array("file_name" => $file->getFilename())); ajx_extra_data(array("icocls" => 'ico-file ico-' . str_replace(".", "_", str_replace("/", "-", $file->getTypeString())))); if (!array_var($_POST, 'no_msg')) { flash_success(lang('success add file', $file->getFilename())); } ajx_current("empty"); } catch (Exception $e) { DB::rollback(); flash_error($e->getMessage()); ajx_current("empty"); // If we uploaded the file remove it from repository if (isset($revision) && $revision instanceof ProjectFileRevision && FileRepository::isInRepository($revision->getRepositoryId())) { FileRepository::deleteFile($revision->getRepositoryId()); } // if } // try } // if }