Ejemplo n.º 1
0
 public function permDeleteFiles($fileId)
 {
     $this->load->helper('file');
     $userPermObj = new User_Perms_Model($this->session->id);
     if (!$userPermObj->userObj->isRoot()) {
         $error = array('status' => 'error', 'msg' => 'You do not have permission to delete this file');
         return json_encode($error);
         exit;
     }
     // all ok, proceed!
     if (isset($fileId)) {
         if ($userPermObj->canAdmin($fileId)) {
             $fileObj = new Document_Model($fileId);
             $location = $fileObj->getLocation();
             // delete from db
             $data = array('id' => $fileId);
             $this->db->delete('documents', $data);
             $this->db->delete('log', $data);
             $data = array('fid' => $fileId);
             $this->db->delete('dept_perms', $data);
             $this->db->delete('user_perms', $data);
             $realName = $fileObj->getBaseName();
             $ext = $fileObj->getExt();
             if (is_file($this->config->item('archiveDir') . $location)) {
                 unlink($this->config->item('archiveDir') . $location);
             }
             if (is_file($this->config->item('dataDir') . 'pdf/' . $realName . '.pdf')) {
                 unlink($this->config->item('dataDir') . 'pdf/' . $realName . '.pdf');
             }
             if (is_file($this->config->item('dataDir') . 'thumbnails/' . $realName . '.png')) {
                 unlink($this->config->item('dataDir') . 'thumbnails/' . $realName . '.png');
             }
             if ($ext == 'docx') {
                 if (is_file($this->config->item('archiveDir') . $realName . '.odt')) {
                     unlink($this->config->item('archiveDir') . $realName . '.odt');
                 }
                 if (is_file($this->config->item('archiveDir') . $realName . '.html')) {
                     unlink($this->config->item('archiveDir') . $realName . '.html');
                 }
             }
             if (is_dir($this->config->item('revisionDir') . $fileId . '/')) {
                 delete_files($this->config->item('revisionDir') . $fileId . '/', true);
             }
             return true;
         }
     }
     return false;
 }
Ejemplo n.º 2
0
 public function getFileDetails()
 {
     if (strchr($this->requestId, '_')) {
         list($this->requestId, $revisionId) = explode('_', $this->requestId);
         $fileSize = $this->globalFunctions->displayFilesize($this->config->item('revisionDir') . $this->requestId . '/' . $this->requestId . '_' . $revisionId);
     }
     $fileDataObj = new Document_Model($this->requestId);
     $archived = $fileDataObj->isArchived();
     $publishable = $fileDataObj->isPublishable();
     $this->globalFunctions->checkUserPermission($this->requestId, $this->config->item('VIEW_RIGHT'), $fileDataObj);
     $userPermsObj = new User_Perms_Model();
     $userPermissionObj = new Userpermission_Model();
     $userObj = new User_Model($fileDataObj->getOwner());
     // display details - calls the parent function in functions.php
     $ownerId = $fileDataObj->getOwner();
     $category = $fileDataObj->getCategoryName();
     $ownerFullName = $fileDataObj->getOwnerFullName();
     $owner = $ownerFullName[1] . ', ' . $ownerFullName[0];
     $realName = $fileDataObj->getRealName();
     $created = $fileDataObj->getCreatedDate();
     $description = $fileDataObj->getDescription();
     $comment = $fileDataObj->getComment();
     $status = $fileDataObj->getStatus();
     $reviewer = $fileDataObj->getReviewerName();
     $location = $fileDataObj->getLocation();
     $fileExt = $fileDataObj->getExt();
     $file = $fileDataObj->getBaseName();
     $thumbnail = $fileDataObj->getThumbnail();
     $lmimetype = File_Model::mimeByExt($fileExt);
     $viewFileLink = $this->config->item('dataDir') . $location;
     $historyLink = 'history/' . $this->requestId;
     $viewInBrowser = null;
     $fileUnderReview = $publishable == -1 ? true : false;
     $editFileLink = null;
     if ($status == 0 && !$publishable && $userPermsObj->canView($this->requestId)) {
         $fileUnlocked = true;
     } else {
         $fileUnlocked = false;
     }
     if ($status > 0) {
         // status != 0 -> file checked out to another user. status = uid of the check-out person
         // query to find out who...
         $checkoutPersonObj = $fileDataObj->getCheckerOBJ();
         $fullName = $checkoutPersonObj->getFullName();
     }
     switch ($fileExt) {
         case 'html':
         case 'php':
             $viewInBrowser = base_url() . $this->config->item('dataDir') . 'pdf/' . $file . '.pdf';
             break;
         case 'pdf':
             $viewInBrowser = base_url() . $this->config->item('dataDir') . $location;
             break;
         case 'doc':
         case 'docx':
             $viewInBrowser = base_url() . $this->config->item('dataDir') . $file . '.pdf';
             break;
     }
     //Get the information for the files revision history
     if (!empty($revisionId)) {
         $historyResult = $fileDataObj->getRevisionHistory($revisionId);
     } else {
         $historyResult = $fileDataObj->getCurrentRevision();
     }
     //get the number of revisions.
     $rows = $historyResult->num_rows();
     (array) ($fileHistory = null);
     foreach ($historyResult->result() as $row) {
         $revision = $row->revision;
         if (is_file($this->config->item('revisionDir') . $this->requestId . '/' . $this->requestId . "_{$revision}" . '.' . $fileExt)) {
             $revision = '<a href="details/' . $this->requestId . "_{$revision}" . '"><div class="revision">' . ($revision + 1) . '</div></a>';
         }
         $fileHistory[] = array('lastName' => $row->last_name, 'firstName' => $row->first_name, 'modifiedOn' => $row->modified_on, 'note' => $row->note, 'revision' => $revision);
     }
     if (!is_array($fileHistory)) {
         $fileHistory[] = array('lastName' => 'Info', 'firstName' => 'No ', 'modifiedOn' => 'No Info', 'note' => 'No Info', 'revision' => 'No Info');
         $revision = '?';
     }
     // Lets figure out which buttons to show
     if ($status == 0 or $status == -1 && $fileDataObj->isOwner($this->session->id)) {
         // check if user has modify rights
         if ($userPermissionObj->getAuthority($this->requestId, $fileDataObj) >= $this->config->item('WRITE_RIGHT') && !isset($revisionId) && !$archived) {
             // if so, display link for checkout
             $checkOutLink = site_url() . 'checkout/downloadfile/' . $this->requestId;
             $accessRight = 'modify';
             switch ($fileExt) {
                 case 'php':
                 case 'html':
                 case 'htm':
                     $editFileLink = site_url() . 'editor/' . $this->requestId;
                     break;
                 default:
                     break;
             }
         }
         if ($userPermissionObj->getAuthority($this->requestId, $fileDataObj) >= $this->config->item('ADMIN_RIGHT') && !@isset($revisionId) && !$archived) {
             if (!$archived) {
                 $deleteLink = 1;
             } else {
                 $deleteLink = 0;
             }
             $editLink = site_url() . 'details/editFileDetails/' . $this->requestId;
         }
     }
     // corrections
     if ($description == '') {
         $description = 'No description available.';
     }
     if ($comment == '') {
         $comment = 'No author comments available.';
     }
     if ($archived) {
         $fileName = $this->config->item('revisionDir') . $location;
         $fileSize = $this->globalFunctions->displayFilesize($fileName);
     } else {
         $fileName = $this->config->item('dataDir') . $location;
         if (!isset($fileSize)) {
             $fileSize = $this->globalFunctions->displayFilesize($fileName);
         }
     }
     $fileDetail = array('fileUnlocked' => $fileUnlocked, 'realName' => $realName, 'category' => $category, 'fileSize' => $fileSize, 'created' => $this->globalFunctions->fixDate($created), 'ownerEmail' => $userObj->getEmailAddress(), 'owner' => $owner, 'ownerFullname' => $owner, 'description' => wordwrap($description, 50, '<br />'), 'comment' => wordwrap($comment, 50, '<br />'), 'revision' => $revision, 'fileUnderReview' => $fileUnderReview, 'reviewer' => $reviewer, 'status' => $status, 'location' => $location, 'fileInfo' => $lmimetype, 'file' => $file, 'ext' => $fileExt, 'checkOutLink' => $checkOutLink, 'editLink' => $editLink, 'editFileLink' => $editFileLink, 'accessRight' => $accessRight, 'fileHistory' => $fileHistory, 'deleteLink' => $deleteLink, 'viewInBrowser' => $viewInBrowser, 'thumbnail' => $thumbnail);
     return json_encode($fileDetail);
 }