Ejemplo n.º 1
0
 /**
  * Returns the last modification time, as a unix timestamp
  *
  * @return int
  */
 public function getLastModified()
 {
     //checks the folders and returns build time
     return \GO\Files\Model\SharedRootFolder::model()->rebuildCache(\GO::user()->id, false);
 }
Ejemplo n.º 2
0
 protected function actionTree($params)
 {
     //refresh forces sync with db
     if (!empty($params['sync_folder_id'])) {
         if ($params['sync_folder_id'] == "shared") {
             \GO\Files\Model\SharedRootFolder::model()->rebuildCache(\GO::user()->id, true);
         } else {
             if (empty(GO::config()->files_disable_filesystem_sync)) {
                 $syncFolder = \GO\Files\Model\Folder::model()->findByPk($params['sync_folder_id']);
                 if ($syncFolder) {
                     $syncFolder->syncFilesystem();
                 }
             }
         }
     }
     $response = array();
     $expandFolderIds = $this->_getExpandFolderIds($params);
     $showFiles = isset($params['showFiles']);
     switch ($params['node']) {
         case 'shared':
             $response = $this->_buildSharedTree($expandFolderIds);
             break;
         case 'root':
             if (!empty($params['root_folder_id'])) {
                 $folder = \GO\Files\Model\Folder::model()->findByPk($params['root_folder_id']);
                 //					$folder->checkFsSync();
                 $node = $this->_folderToNode($folder, $expandFolderIds, true, $showFiles);
                 $response[] = $node;
             } else {
                 $folder = \GO\Files\Model\Folder::model()->findHomeFolder(\GO::user());
                 //					$folder->checkFsSync();
                 $node = $this->_folderToNode($folder, $expandFolderIds, true, $showFiles);
                 $node['text'] = \GO::t('personal', 'files');
                 $node['iconCls'] = 'folder-home';
                 $node['path'] = $folder->path;
                 $response[] = $node;
                 $node = array('text' => \GO::t('shared', 'files'), 'id' => 'shared', 'readonly' => true, 'draggable' => false, 'allowDrop' => false, 'parent_id' => 0, 'iconCls' => 'folder-shares', 'path' => "shared");
                 //expand shares for non admins only. Admin may see too many folders.
                 if (!\GO::user()->isAdmin()) {
                     $node['expanded'] = true;
                     $node['children'] = $this->_buildSharedTree($expandFolderIds);
                 }
                 $response[] = $node;
                 if (GO::config()->files_show_addressbooks && GO::modules()->addressbook) {
                     $contactsFolder = \GO\Files\Model\Folder::model()->findByPath('addressbook');
                     if ($contactsFolder) {
                         $node = $this->_folderToNode($contactsFolder, $expandFolderIds, false, $showFiles);
                         $node['text'] = \GO::t('addressbook', 'addressbook');
                         $response[] = $node;
                     }
                 }
                 if (GO::config()->files_show_projects && GO::modules()->projects) {
                     $projectsFolder = \GO\Files\Model\Folder::model()->findByPath('projects');
                     if ($projectsFolder) {
                         $node = $this->_folderToNode($projectsFolder, $expandFolderIds, false, $showFiles);
                         $node['text'] = \GO::t('projects', 'projects');
                         $response[] = $node;
                     }
                 }
                 if (GO::config()->files_show_projects && GO::modules()->projects2) {
                     $projectsFolder = \GO\Files\Model\Folder::model()->findByPath('projects2');
                     if ($projectsFolder) {
                         $node = $this->_folderToNode($projectsFolder, $expandFolderIds, false, $showFiles);
                         $node['text'] = \GO::t('projects', 'projects2');
                         $response[] = $node;
                     }
                 }
                 if (\GO::user()->isAdmin()) {
                     $logFolder = \GO\Files\Model\Folder::model()->findByPath('log', true);
                     //						$logFolder->syncFilesystem();
                     $node = $this->_folderToNode($logFolder, $expandFolderIds, false, $showFiles);
                     $node['text'] = \GO::t('logFiles');
                     $response[] = $node;
                 }
             }
             break;
         default:
             $folder = \GO\Files\Model\Folder::model()->findByPk($params['node']);
             if (!$folder) {
                 return false;
             }
             //				$folder->checkFsSync();
             $stmt = $folder->getSubFolders(\GO\Base\Db\FindParams::newInstance()->limit(200)->order('name', 'ASC'));
             while ($subfolder = $stmt->fetch()) {
                 $response[] = $this->_folderToNode($subfolder, $expandFolderIds, false, $showFiles);
                 if ($showFiles) {
                     $response = array_merge($response, $this->_addFileNodes($subfolder->parent));
                 }
             }
             break;
     }
     return $response;
 }