* @copyright Copyright (C) 2017 Uwe Steinmann * @version Release: @package_version@ */ /** * Class which outputs the html page for PaperlessViews view * * @category DMS * @package SeedDMS * @author Uwe Steinmann * @copyright Copyright (C) 2017 Uwe Steinmann * @version Release: @package_version@ */ class SeedDMS_View_PaperlessViews extends SeedDMS_Bootstrap_Style { function js() { /* {{{ */ $dms = $this->params['dms']; $user = $this->params['user']; $onepage = $this->params['onepage']; header('Content-Type: application/javascript'); parent::jsTranslations(array('cancel', 'splash_move_document', 'confirm_move_document', 'move_document', 'confirm_transfer_link_document', 'transfer_content', 'link_document', 'splash_move_folder', 'confirm_move_folder', 'move_folder')); ?> $(document).ready(function() { $('body').on('click', '.view', function(ev){ ev.preventDefault(); $('#paperless_view.ajax').trigger('update', {view: $(this).data('view')}); }); }); printClickDocumentJs(); } $this->printDeleteDocumentButtonJs(); } /* }}} */ protected function printListHeader($previewer, $order=false) { /* {{{ */ print ""; print "\n\n"; print "\n"; if($order) { $orderby = ''; //$this->params['orderby']; $orderdir = ''; //$this->params['orderdir']; print "\n"; } else print "\n"; if($order) print "\n"; else print "\n"; print "\n"; print "\n\n\n"; } /* }}} */ protected function printListFooter() { /* {{{ */ echo "\n
".getMLText("name")." ".($orderby == 'n' || $orderby == '' ? ($orderdir == 'desc' ? '' : '') : '')." · ".getMLText("last_update")." ".($orderby == 'u' ? ($orderdir == 'desc' ? '' : '') : '')." · ".getMLText("expires")." ".($orderby == 'e' ? ($orderdir == 'desc' ? '' : '') : '')."".getMLText("name")."".getMLText("status")."".($orderby == 's' ? " ".($orderdir == 'desc' ? '' : '') : '')."".getMLText("status")."".getMLText("action")."
"; } /* }}} */ private function getSearchParameter($data) { /* {{{ */ $dms = $this->params['dms']; $user = $this->params['user']; $settings = $this->params['settings']; $categories = array(); $categorynames = array(); $astart = null; $aend = null; $mstart = null; $mend = null; $startfolder = $dms->getRootFolder(); $rootfolder = $dms->getRootFolder(); $cattrs = []; $query = ''; foreach ($data['filter_rules'] as $rule) { switch ($rule['rule_type']) { case 3: $correspondent = null; if(!empty($settings->_extensions['paperless']['correspondentsattr']) && $attrdef = $dms->getAttributeDefinition($settings->_extensions['paperless']['correspondentsattr'])) { $valueset = $attrdef->getValueSetAsArray(); if(isset($valueset[$rule['value']-1])) { $correspondent = $valueset[$rule['value']-1]; $cattrs['attr_'.$attrdef->getId()] = $correspondent; } } break; case 6: $catid = (int) $rule['value']; if($catid) { if($cat = $dms->getDocumentCategory($catid)) { $categories[] = $cat; $categorynames[] = $cat->getName(); } } break; case 8: $aend = makeTsFromDate($rule['value']); break; case 9: $astart = makeTsFromDate($rule['value']); break; case 13: $aend = makeTsFromDate($rule['value']); break; case 14: $astart = makeTsFromDate($rule['value']); break; case 19: $query = $rule['value']; break; case 20: $tmp = explode(',', $rule['value']); foreach ($tmp as $t) { if (substr($t, 0, 9) == 'created:[') { $q = substr($t, 9, -1); if($x = explode(' to ', $q, 2)) { $astart = strtotime($x[0]); $aend = strtotime($x[1])+86400; } } elseif (substr($t, 0, 7) == 'added:[') { $q = substr($t, 7, -1); if($x = explode(' to ', $q, 2)) { $astart = strtotime($x[0]); $aend = strtotime($x[1])+86400; } } else { $query = $t; } } break; } } return [$query, array('record_type'=>['document'], 'status'=>[2], 'user'=>[$user->getLogin()], 'category'=>$categorynames, 'created_start'=>$astart, 'created_end'=>$aend, 'modified_start'=>$mstart, 'modified_end'=>$mend, 'startFolder'=>$startfolder, 'rootFolder'=>$rootfolder, 'attributes'=>$cattrs)]; } /* }}} */ private function printList($data, $previewer) { /* {{{ */ $dms = $this->params['dms']; $user = $this->params['user']; $settings = $this->params['settings']; $fulltextservice = $this->params['fulltextservice']; $logger = $this->params['logger']; $order = []; $order['dir'] = $data['sort_reverse'] ? 'desc' : 'asc'; $orderfield = $data["sort_field"]; if(in_array($orderfield, ['modified', 'created', 'title'])) $order['by'] = $orderfield; elseif($orderfield == 'added') $order['by'] = 'created'; elseif($orderfield == 'archive_serial_number') $order['by'] = 'id'; elseif($orderfield == 'correspondent__name') { if(!empty($settings->_extensions['paperless']['correspondentsattr']) && $attrdef = $dms->getAttributeDefinition($settings->_extensions['paperless']['correspondentsattr'])) { $order['by'] = 'attr_'.$attrdef->getId(); } } list($query, $searchparams) = $this->getSearchParameter($data); if($fulltextservice && $index = $fulltextservice->Indexer()) { $lucenesearch = $fulltextservice->Search(); $limit = 10; $offset = 0; $logger->log('Query is '.$query, PEAR_LOG_DEBUG); /* $logger->log('User is '.$userobj->getLogin(), PEAR_LOG_DEBUG); $logger->log('limit is '.$limit, PEAR_LOG_DEBUG); $logger->log('offset is '.$offset, PEAR_LOG_DEBUG); */ $searchresult = $lucenesearch->search($query, $searchparams, array('limit'=>$limit, 'offset'=>$offset), $order, array('no_facets'=>true)); if($searchresult) { $recs = array(); $facets = $searchresult['facets']; $dcount = 0; $fcount = 0; if($searchresult['hits']) { $allids = ''; $this->printListHeader($previewer); foreach($searchresult['hits'] as $hit) { if($hit['document_id'][0] == 'D') { if($document = $dms->getDocument((int) substr($hit['document_id'], 1))) { $document->verifyLastestContentExpriry(); $v = new SeedDMS_Version(); if($v->majorVersion() > 5) { $document->checkForDueRevisionWorkflow($user); } $lc = $document->getLatestContent(); if($document->getAccessMode($user) >= M_READ && $lc) { $txt = $this->callHook('documentListItem', $document, $previewer, false, 'opentasks'); if(is_string($txt)) echo $txt; else { /* $errormsg = ''; $errorcls = ''; if(!$doc['error']) { } else { $errorcls = $doc['error'] < 0 ? " error" : ($doc['error'] === 0 ? " success" : ""); $errormsg = $doc['error']; } */ $extracontent = array(); $extracontent['below_title'] = $this->getListRowPath($document); echo $this->documentListRowStart($document); echo $this->documentListRow($document, $previewer, true, 0, $extracontent); echo $this->documentListRowEnd($document); } } } } } $this->printListFooter(); $logger->log('Result is '.$allids, PEAR_LOG_DEBUG); } } } } /* }}} */ private function count($data) { /* {{{ */ $dms = $this->params['dms']; $user = $this->params['user']; $settings = $this->params['settings']; $fulltextservice = $this->params['fulltextservice']; $logger = $this->params['logger']; list($query, $searchparams) = $this->getSearchParameter($data); if($fulltextservice && $index = $fulltextservice->Indexer()) { $lucenesearch = $fulltextservice->Search(); $limit = 10; $offset = 0; $logger->log('Query is '.$query, PEAR_LOG_DEBUG); /* $logger->log('User is '.$userobj->getLogin(), PEAR_LOG_DEBUG); $logger->log('limit is '.$limit, PEAR_LOG_DEBUG); $logger->log('offset is '.$offset, PEAR_LOG_DEBUG); */ $searchresult = $lucenesearch->search($query, $searchparams, array('limit'=>0, 'offset'=>0), [], array('no_facets'=>true)); if($searchresult) { return $searchresult['count']; } } return false; } /* }}} */ public function list() { /* {{{ */ $dms = $this->params['dms']; $user = $this->params['user']; $settings = $this->params['settings']; $pview = $this->params['pview']; $cachedir = $this->params['cachedir']; $conversionmgr = $this->params['conversionmgr']; $previewwidth = $this->params['previewWidthList']; $previewconverters = $this->params['previewconverters']; $timeout = $this->params['timeout']; $previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout); if($conversionmgr) $previewer->setConversionMgr($conversionmgr); else $previewer->setConverters($previewconverters); if ($pview) { $data = $pview->getView(); $this->printList($data, $previewer); } } /* }}} */ private function getFilterValue($rule) { /* {{{ */ $dms = $this->params['dms']; $settings = $this->params['settings']; switch($rule['rule_type']) { case 13: // Added until case 14: // Added from return getReadableDate($rule['value']); case 3: // Correspondent if(!empty($settings->_extensions['paperless']['correspondentsattr']) && $attrdef = $dms->getAttributeDefinition($settings->_extensions['paperless']['correspondentsattr'])) { $valueset = $attrdef->getValueSetAsArray(); if(isset($valueset[$rule['value']-1])) { return $valueset[$rule['value']-1]; } } return '???'; break; case 6: // Category return $dms->getDocumentCategory($rule['value'])->getName(); break; default: return $rule['value']; } } /* }}} */ public function show() { /* {{{ */ $dms = $this->params['dms']; $user = $this->params['user']; $settings = $this->params['settings']; $session = $this->params['session']; $area = 'my_account'; $this->htmlStartPage(getMLText("paperless_views"), '', '../../'); $this->globalNavigation(); $this->contentStart(); $this->pageNavigation(getMLText($area), $area); $this->contentHeading(getMLText("paperless_views")); $this->rowStart(); $this->columnStart(4); $views = SeedDMS_PaperlessView::getAllInstances($user, $dms); if($views) { print ""; print "\n\n"; print "\n"; print "\n"; print "\n\n\n"; foreach($views as $view) { $data = $view->getView(); $c = $this->count($data); echo ""; echo ""; echo ""; } echo "\n
".getMLText("paperless_view_name")."".getMLText("paperless_view_rules")."
".$data['name']." (".$c.")"; echo "
".getMLText('paperless_view_sort_by').": ".$data['sort_field']; if ($data['show_on_dashboard']) { echo "
".getMLText('paperless_view_dashboard').': '; } if ($data['show_in_sidebar']) { echo "
".getMLText('paperless_view_sidebar').': '; } echo "
"; foreach ($data['filter_rules'] as $rule) { echo getMLText('paperless_view_rule_'.$rule['rule_type']).": ".$this->getFilterValue($rule)."
"; } // echo "
";
//				print_r($data);
//				echo "
"; echo "
\n"; } else { $this->infoMsg(getMLText('upload_area_no_secret_info')); } $this->columnEnd(); $this->columnStart(8); echo '
'; $this->columnEnd(); $this->rowEnd(); $this->contentEnd(); $this->htmlEndPage(); } /* }}} */ }