Files
crm.e5.pl/modules/EcmDocuments/ListView.php
2024-04-27 09:23:34 +02:00

239 lines
12 KiB
PHP
Executable File

<?php
/*****************************************************************************
* The contents of this file are subject to the RECIPROCAL PUBLIC LICENSE
* Version 1.1 ("License"); You may not use this file except in compliance
* with the License. You may obtain a copy of the License at
* http://opensource.org/licenses/rpl.php. Software distributed under the
* License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND,
* either express or implied.
*
* You may:
* a) Use and distribute this code exactly as you received without payment or
* a royalty or other fee.
* b) Create extensions for this code, provided that you make the extensions
* publicly available and document your modifications clearly.
* c) Charge for a fee for warranty or support or for accepting liability
* obligations for your customers.
*
* You may NOT:
* a) Charge for the use of the original code or extensions, including in
* electronic distribution models, such as ASP (Application Service
* Provider).
* b) Charge for the original source code or your extensions other than a
* nominal fee to cover distribution costs where such distribution
* involves PHYSICAL media.
* c) Modify or delete any pre-existing copyright notices, change notices,
* or License text in the Licensed Software
* d) Assert any patent claims against the Licensor or Contributors, or
* which would in any way restrict the ability of any third party to use the
* Licensed Software.
*
* You must:
* a) Document any modifications you make to this code including the nature of
* the change, the authors of the change, and the date of the change.
* b) Make the source code for any extensions you deploy available via an
* Electronic Distribution Mechanism such as FTP or HTTP download.
* c) Notify the licensor of the availability of source code to your extensions
* and include instructions on how to acquire the source code and updates.
* d) Grant Licensor a world-wide, non-exclusive, royalty-free license to use,
* reproduce, perform, modify, sublicense, and distribute your extensions.
*
* The Original Code is: CommuniCore
* Olavo Farias
* 2006-04-7 olavo.farias@gmail.com
*
* The Initial Developer of the Original Code is CommuniCore.
* Portions created by CommuniCore are Copyright (C) 2005 CommuniCore Ltda
* All Rights Reserved.
********************************************************************************/
if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
require_once ('XTemplate/xtpl.php');
require_once ("data/Tracker.php");
require_once ('modules/EcmDocuments/EcmDocument.php');
require_once ('themes/'.$theme.'/layout_utils.php');
require_once ('log4php/LoggerManager.php');
require_once('include/ListView/ListViewSmarty.php');
require_once('modules/Currencies/Currency.php');
if(file_exists('custom/modules/EcmDocuments/metadata/listviewdefs.php')){
require_once('custom/modules/EcmDocuments/metadata/listviewdefs.php');
}else{
require_once('modules/EcmDocuments/metadata/listviewdefs.php');
}
require_once('modules/SavedSearch/SavedSearch.php');
require_once('include/SearchForm/SearchForm.php');
$header_text = '';
global $app_strings;
global $mod_strings;
global $app_list_strings;
global $current_language;
$current_module_strings = return_module_language($current_language, 'EcmDocuments');
global $urlPrefix;
global $currentModule;
global $theme;
global $current_user;
// FOCUS_LIST IS THE MEANS OF PASSING DATA TO A LISTVIEW.
global $focus_list;
// SETUP QUICKSEARCH
require_once('include/QuickSearchDefaults.php');
$qsd = new QuickSearchDefaults();
// CLEAR THE DISPLAY COLUMNS BACK TO DEFAULT WHEN CLEAR QUERY IS CALLED
if(!empty($_REQUEST['clear_query']) && $_REQUEST['clear_query'] == 'true')
$current_user->setPreference('ListViewDisplayColumns', array(), 0, $currentModule);
$savedDisplayColumns = $current_user->getPreference('ListViewDisplayColumns', $currentModule); // GET USER DEFINED DISPLAY COLUMNS
$json = getJSONobj();
$seedEcmDocument = new EcmDocument(); // SEED BEAN
$searchForm = new SearchForm('EcmDocuments', $seedEcmDocument); // NEW SEARCHFORM INSTANCE
// SETUP LISTVIEW SMARTY
$lv = new ListViewSmarty();
$displayColumns = array();
// CHECK $_REQUEST IF NEW DISPLAY COLUMNS FROM POST
if (!empty($_REQUEST['displayColumns'])) {
foreach (explode('|', $_REQUEST['displayColumns']) as $num => $col) {
if (!empty($listViewDefs['EcmDocuments'][$col]))
$displayColumns[$col] = $listViewDefs['EcmDocuments'][$col];
}
}elseif(!empty($savedDisplayColumns)) { // USE USER DEFINED DISPLAY COLUMNS FROM PREFERENCES
$displayColumns = $savedDisplayColumns;
}else { // USE COLUMNS DEFINED IN LISTVIEWDEFS FOR DEFAULT DISPLAY COLUMNS
foreach($listViewDefs['EcmDocuments'] as $col => $params) {
if(!empty($params['default']) && $params['default'])
$displayColumns[$col] = $params;
}
}
$params = array('massupdate' => true); // SETUP LISTVIEWSMARTY PARAMS
if(!empty($_REQUEST['orderBy'])) { // ORDER BY COMING FROM $_REQUEST
$params['orderBy'] = $_REQUEST['orderBy'];
$params['overrideOrder'] = true;
if(!empty($_REQUEST['sortOrder'])) $params['sortOrder'] = $_REQUEST['sortOrder'];
}
$lv->displayColumns = $displayColumns;
if(!empty($_REQUEST['search_form_only']) && $_REQUEST['search_form_only']) { // HANDLE AJAX REQUESTS FOR SEARCH FORMS ONLY
switch($_REQUEST['search_form_view']) {
case 'basic_search':
$searchForm->setup();
$searchForm->displayBasic(false);
break;
case 'advanced_search':
$searchForm->setup();
$searchForm->displayAdvanced(false);
break;
case 'saved_views':
echo $searchForm->displaySavedViews($listViewDefs, $lv, false);
break;
}
return;
}
// USE THE STORED QUERY IF THERE IS ONE
$z="select * from ecmdocuments_permissions where ecmdocuments_permissions.iddir='1' and ecmdocuments_permissions.userid='".$current_user->id."'";
$w=$GLOBALS['db']->query($z);
$r=$GLOBALS['db']->fetchByAssoc($w);
$read[0]=$r['read'];
$ids[0]=$r['iddir'];
$z="select * from ecmdocuments_permissions where ecmdocuments_permissions.iddir='64' and ecmdocuments_permissions.userid='".$current_user->id."'";
$w=$GLOBALS['db']->query($z);
$r=$GLOBALS['db']->fetchByAssoc($w);
$read[1]=$r['read'];
$ids[1]=$r['iddir'];
if((int)$read[0]==1)$or="and ecmdocuments.id='".$ids[0]."'";
if((int)$read[1]==1)$or="and ecmdocuments.id='".$ids[1]."'";
if((int)$read[0]==1 && (int)$read[1]==1)$or="and (ecmdocuments.id='".$ids[0]."' or ecmdocuments.id='".$ids[1]."')";
if(is_admin($current_user))$or="";
if (!isset($where)) $where = " ecmdocuments.iddir='0' ".$or;
if($_GET['record']!="")$where=" ecmdocuments.iddir='".$_GET['record']."' ";
require_once('modules/MySettings/StoreQuery.php');
$storeQuery = new StoreQuery();
if(!isset($_REQUEST['query'])){
$storeQuery->loadQuery($currentModule);
$storeQuery->populateRequest();
}else{
$storeQuery->saveFromGet($currentModule);
}
if(isset($_REQUEST['query'])){
// WE HAVE A QUERY
// FIRST SAVE COLUMNS
$current_user->setPreference('ListViewDisplayColumns', $displayColumns, 0, $currentModule);
$searchForm->populateFromRequest(); // GATHERS SEARCH FIELD INPUTS FROM $_REQUEST
$where_clauses = $searchForm->generateSearchWhere(true, "EcmDocument"); // BUILDS THE WHERE CLAUSE FROM SEARCH FIELD INPUTS
if (count($where_clauses) > 0 )$where = implode(' and ', $where_clauses);
$GLOBALS['log']->info("Here is the where clause for the list view: $where");
}
$r=$GLOBALS['db']->fetchByAssoc($GLOBALS['db']->query("select treesearch from users where id='".$_SESSION['authenticated_user_id']."'"));
$treesearch=$r['treesearch'];
if($treesearch==1 || is_admin($current_user))
{
print '<form action="index.php?module=EcmDocuments&action=SearchDir&record='.$_REQUEST['record'].'" enctype="multipart/form-data" method="post">
<ul class="tablist">
<li class="active"><a class="current" href="index.php?module=EcmDocuments&action=DetailView&record='.$_GET['record'].'&tab=Tree">Tree</a></li>
<li><a href="index.php?module=EcmDocuments&action=SearchProjects&record='.$_GET['record'].'&tab=All&start=1">All</a></li>
<li><a href="index.php?module=EcmDocuments&action=SearchProjects&record='.$_GET['record'].'&tab=EcmDocs&start=1">EcmFiles</a></li>
<li><a href="index.php?module=EcmDocuments&action=SearchProjects&record='.$_GET['record'].'&tab=EcmCorrespondenceIns&start=1">Correspondence In</a></li>
<li><a href="index.php?module=EcmDocuments&action=SearchProjects&record='.$_GET['record'].'&tab=EcmCorrespondenceOuts&start=1">Correspondence Out</a></li>
<li><a href="index.php?module=EcmDocuments&action=SearchProjects&record='.$_GET['record'].'&tab=EcmContracts&start=1">Contracts</a></li>
<li><a href="index.php?module=EcmDocuments&action=SearchProjects&record='.$_GET['record'].'&tab=EcmInvoiceIns&start=1">Invoice In</a></li>
<li><a href="index.php?module=EcmDocuments&action=SearchProjects&record='.$_GET['record'].'&tab=EcmInvoiceOuts&start=1">Invoice Out</a>
</ul>
<table width="100%" border="0" cellspacing="0" cellpadding="0" style="border-top: 0px none; margin-bottom: 4px" class="tabForm">
<tr>
<td>
<table width="100%" border="0" cellspacing="0" cellpadding="3">
<tr>
<td width="20%" valign="top" class="dataLabel"><span sugar="slot1">Go To File/Dir</span sugar="slot"></td>
<td width="30%" valign="top" class="dataField"><span sugar="slot1b"><input type="text" name="searchdir" value="'.$_SESSION['searchdir'].'"></span sugar="slot"></td>
<td width="20%" valign="top" class="dataLabel"><span sugar="slot`3`"></span sugar="slot"></td>
<td width="30%" valign="top" class="dataField"><span sugar="slot`3`b">
</span sugar="slot"></td>
</tr>
</table>
</td>
</tr>
</table><input type="submit" name="searchdirsubmit" value="Search" class="button">
</form>
<br>';
}
// START DISPLAY
// WHICH TAB OF SEARCH FORM TO DISPLAY
/*
if(!isset($_REQUEST['search_form']) || $_REQUEST['search_form'] != 'false') {
$searchForm->setup();
if(isset($_REQUEST['searchFormTab']) && $_REQUEST['searchFormTab'] == 'advanced_search') {
$searchForm->displayAdvanced();
}elseif(isset($_REQUEST['searchFormTab']) && $_REQUEST['searchFormTab'] == 'saved_views'){
$searchForm->displaySavedViews($listViewDefs, $lv);
}else {
$searchForm->displayBasic();
}
}
echo $qsd->GetQSScripts();*/
$lv->setup($seedEcmDocument, 'include/ListView/ListViewGeneric.tpl', $where, $params);
$savedSearchName = empty($_REQUEST['saved_search_select_name']) ? '' : (' - ' . $_REQUEST['saved_search_select_name']);
echo get_form_header($current_module_strings['LBL_LIST_FORM_TITLE'] . $savedSearchName, '', false);
echo $lv->display();
$savedSearch = new SavedSearch();
$json = getJSONobj();
// FILLS IN SAVED VIEWS SELECT BOX ON SHORTCUT MENU
$savedSearchSelects = $json->encode(array($GLOBALS['app_strings']['LBL_SAVED_SEARCH_SHORTCUT'] . '<br>' . $savedSearch->getSelect('EcmDocuments')));
$str = "<script>
YAHOO.util.Event.addListener(window, 'load', SUGAR.util.fillShortcuts, $savedSearchSelects);
</script>";
echo $str;
?>