예제 #1
0
 public function getFolders($type)
 {
     javascript('jquery');
     $src = PHPWS_SOURCE_HTTP . 'mod/filecabinet/javascript/folder_options/folders.js';
     \Layout::addJSHeader("<script type='text/javascript' src='{$src}'></script>", 'folder-options');
     PHPWS_Core::initCoreClass('DBPager.php');
     $folder = new Folder();
     $folder->ftype = $type;
     $folder->loadDirectory();
     $pagetags['MODAL'] = $this->getModal();
     if (Current_User::allow('filecabinet')) {
         if (!is_dir($folder->_base_directory)) {
             $this->cabinet->message = dgettext('filecabinet', "Directory {$folder->_base_directory} does not exist.");
         } else {
             if (!is_writable($folder->_base_directory)) {
                 switch ($folder->ftype) {
                     case IMAGE_FOLDER:
                         $this->cabinet->message = dgettext('filecabinet', 'Your images directory is not writable.');
                         break;
                     case DOCUMENT_FOLDER:
                         $this->cabinet->message = dgettext('filecabinet', 'Your documents directory is not writable.');
                         break;
                     case MULTIMEDIA_FOLDER:
                         $this->cabinet->message = dgettext('filecabinet', 'Your multimedia directory is not writable.');
                         break;
                 }
             } else {
                 if (Current_User::allow('filecabinet', 'edit_folders')) {
                     $authkey = \Current_User::getAuthKey();
                     $pagetags['ADMIN_LINKS'] = "<button class='btn btn-success show-modal' data-operation='aop' data-command='add_folder' data-folder_id='0' data-ftype='{$folder->ftype}'><i class='fa fa-plus'></i> Add Folder</button>";
                     //$pagetags['ADMIN_LINKS'] = $folder->editLink();
                 }
             }
         }
     }
     switch ($folder->ftype) {
         case IMAGE_FOLDER:
             $aop = 'image';
             $table = 'images';
             break;
         case DOCUMENT_FOLDER:
             $aop = 'document';
             $table = 'documents';
             break;
         case MULTIMEDIA_FOLDER:
             $table = $aop = 'multimedia';
             break;
     }
     $pagetags['ITEM_LABEL'] = dgettext('filecabinet', 'Items');
     $form = new PHPWS_Form('folder-search');
     $form->setMethod('get');
     $form->addHidden('module', 'filecabinet');
     $form->addHidden('aop', $aop);
     $form->addHidden('ftype', $folder->ftype);
     $folder_search = isset($_GET['folder_search']) ? $_GET['folder_search'] : null;
     $form->addText('folder_search', $folder_search);
     $form->addSubmit(dgettext('filecabinet', 'Search folders for file'));
     $search_tpl = $form->getTemplate();
     $pagetags['FILE_SEARCH'] = $search_tpl['START_FORM'] . $search_tpl['FOLDER_SEARCH'] . $search_tpl['SUBMIT'] . $search_tpl['END_FORM'];
     $pager = new DBPager('folders', 'Folder');
     if (!empty($_GET['folder_search'])) {
         $pl = UTF8_MODE ? '\\pL' : null;
         $search = preg_replace("/[^\\w\\s\\-{$pl}]/", '', $_GET['folder_search']);
         if (!empty($search)) {
             $pager->addWhere("{$table}.file_name", $search, 'REGEXP', 'or', 'g1');
             $pager->addWhere("{$table}.title", $search, 'REGEXP', 'or', 'g1');
             $pager->addWhere('folders.id', "{$table}.folder_id");
         }
     }
     $pager->addSortHeader('title', dgettext('filecabinet', 'Title'));
     $pager->addSortHeader('public_folder', dgettext('filecabinet', 'Public'));
     $pager->setModule('filecabinet');
     $pager->setTemplate('Forms/folder_list.tpl');
     $pager->addPageTags($pagetags);
     $pager->addRowTags('rowTags');
     $pager->setEmptyMessage(dgettext('filecabinet', 'No folders found.'));
     $pager->addWhere('ftype', $type);
     $pager->setDefaultOrder('title');
     $pager->setAutoSort(false);
     $this->cabinet->content = $pager->get();
 }