8429108ab6a8efd0c6bc8a8632bae7d14b21b782
[ldapsaisie.git] / public_html / view.php
1 <?php
2 /*******************************************************************************
3  * Copyright (C) 2007 Easter-eggs
4  * http://ldapsaisie.labs.libre-entreprise.org
5  *
6  * Author: See AUTHORS file in top-level directory.
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License version 2
10  * as published by the Free Software Foundation.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
20
21 ******************************************************************************/
22
23 require_once 'core.php';
24
25 if(LSsession :: startLSsession()) {
26   if (isset($_REQUEST['LSobject'])) {
27     $LSobject = $_REQUEST['LSobject'];
28     $dn = isset($_REQUEST['dn'])?urldecode($_REQUEST['dn']):null;
29     
30     if (LSsession :: in_menu($LSobject)) {
31     
32       if ( $LSobject == 'SELF' ) {
33         $LSobject = LSsession :: getLSuserObject() -> getType();
34         $dn = LSsession :: getLSuserObjectDn();
35       }
36       
37       if ( LSsession :: loadLSobject($LSobject) ) {
38         // Affichage d'un objet
39         if ( $dn!='' ) {
40           if (LSsession :: canAccess($LSobject,$dn)) {
41             if ( LSsession :: canEdit($LSobject,$dn) ) {
42               $LSview_actions[] = array(
43                 'label' => _('Modify'),
44                 'url' =>'modify.php?LSobject='.$LSobject.'&amp;dn='.urlencode($dn),
45                 'action' => 'modify'
46               );
47             }
48             
49             if (LSsession :: canCreate($LSobject)) {
50               $LSview_actions[] = array(
51                 'label' => _('Copy'),
52                 'url' =>'create.php?LSobject='.$LSobject.'&amp;load='.urlencode($dn),
53                 'action' => 'copy'
54               );
55             }
56             
57             if (LSsession :: canRemove($LSobject,$dn)) {
58               $LSview_actions[] = array(
59                 'label' => _('Delete'),
60                 'url' => 'remove.php?LSobject='.$LSobject.'&amp;dn='.urlencode($dn),
61                 'action' => 'delete'
62               );
63             }
64
65             // Custum Actions
66             $customActionsConfig = LSconfig :: get('LSobjects.'.$LSobject.'.customActions');
67             if (is_array($customActionsConfig)) {
68               foreach($customActionsConfig as $name => $config) {
69                 if (LSsession :: canExecuteCustomAction($dn,$LSobject,$name)) {
70                   $LSview_actions[] = array (
71                     'label' => ((isset($config['label']))?__($config['label']):__($name)),
72                     'hideLabel' => ((isset($config['hideLabel']))?$config['hideLabel']:False),
73                     'helpInfo' => ((isset($config['helpInfo']))?__($config['helpInfo']):False),
74                     'url' => 'custom_action.php?LSobject='.$LSobject.'&amp;dn='.urlencode($dn).'&amp;customAction='.$name,
75                     'action' => ((isset($config['icon']))?$config['icon']:'generate'),
76                     'class' => 'LScustomActions'.(($config['noConfirmation'])?' LScustomActions_noConfirmation':'')
77                   );
78                 }
79               }
80             }
81             
82             if (LSsession :: getLSuserObjectDn() != $dn) {
83               $object = new $LSobject();
84               $object -> loadData($dn);
85               LStemplate :: assign('pagetitle',$object -> getDisplayName());
86             }
87             else {
88               $object = LSsession :: getLSuserObject();
89               LStemplate :: assign('pagetitle',_('My account'));
90             }
91
92             LStemplate :: assign('LSldapObject',$object);
93             
94             $view = $object -> getView();
95             $view -> displayView();
96             
97             // LSrelations
98             if (LSsession :: loadLSclass('LSrelation')) {
99               LSrelation :: displayInLSview($object);
100             }
101             
102             LStemplate :: assign('LSview_actions',$LSview_actions);
103             LSsession :: setTemplate('view.tpl');
104           }
105           else {
106             LSerror :: addErrorCode('LSsession_11');
107           }
108         }
109         // Affichage d'une liste d'un type d'objet
110         elseif (LSsession :: loadLSclass('LSsearch')) {
111           $object = new $LSobject();
112           LStemplate :: assign('pagetitle',$object -> getLabel());
113           
114           $LSsearch = new LSsearch($LSobject,'LSview');
115           $LSsearch -> setParam('extraDisplayedColumns',True);
116           $LSsearch -> setParamsFormPostData();
117           
118           $searchForm = array (
119             'action' => $_SERVER['PHP_SELF'],
120             'recursive' => (! LSsession :: isSubDnLSobject($LSobject) && LSsession :: subDnIsEnabled() ),
121             'labels' => array (
122               'submit' => _('Search'),
123               'approx' => _('Approximative search'),
124               'recursive' => _('Recursive search')
125             ),
126             'values' => array (
127               'pattern' => $LSsearch->getParam('pattern'),
128               'approx' => $LSsearch->getParam('approx'),
129               'recursive' => $LSsearch->getParam('recursive')
130             ),
131             'names' => array (
132               'submit' => 'LSsearch_submit'
133             ),
134             'hiddenFields' => $LSsearch -> getHiddenFieldForm(),
135             'predefinedFilter' => $LSsearch->getParam('predefinedFilter')
136           );
137           LStemplate :: assign('searchForm',$searchForm);
138           
139           $LSview_actions=array();
140           if(LSsession :: canCreate($LSobject)) {
141             $LSview_actions['create'] = array (
142               'label' => 'New',
143               'url' => 'create.php?LSobject='.$LSobject,
144               'action' => 'create'
145             );
146             if ($object -> listValidIOformats()) {
147               $LSview_actions['import'] = array (
148                 'label' => 'Import',
149                 'url' => 'import.php?LSobject='.$LSobject,
150                 'action' => 'import'
151               );
152             }
153           }
154           $LSview_actions['refresh'] = array (
155             'label' => 'Refresh',
156             'url' => 'view.php?LSobject='.$LSobject.'&amp;refresh',
157             'action' => 'refresh'
158           );
159           /*$LSview_actions['purge'] = array (
160             'label' => 'Purge the cache',
161             'url' => 'view.php?LSobject='.$LSobject.'&amp;LSsearchPurgeSession',
162             'action' => 'delete'
163           );*/
164
165           // Custum Actions
166           $customActionsConfig = LSconfig :: get('LSobjects.'.$LSobject.'.LSsearch.customActions');
167           if (is_array($customActionsConfig)) {
168             foreach($customActionsConfig as $name => $config) {
169               if (LSsession :: canExecuteLSsearchCustomAction($LSsearch,$name)) {
170                 $LSview_actions[] = array (
171                   'label' => ((isset($config['label']))?__($config['label']):__($name)),
172                   'hideLabel' => ((isset($config['hideLabel']))?$config['hideLabel']:False),
173                   'helpInfo' => ((isset($config['helpInfo']))?__($config['helpInfo']):False),
174                   'url' => 'custom_search_action.php?LSobject='.$LSobject.'&amp;customAction='.$name,
175                   'action' => ((isset($config['icon']))?$config['icon']:'generate'),
176                   'class' => 'LScustomActions'.(($config['noConfirmation'])?' LScustomActions_noConfirmation':'')
177                 );
178               }
179             }
180           }
181
182           LStemplate :: assign('LSview_actions',$LSview_actions);
183           
184           $LSsearch -> run();
185           
186           $LSsearch -> redirectWhenOnlyOneResult();
187           
188           $page=(isset($_REQUEST['page'])?(int)$_REQUEST['page']:0);
189           $page = $LSsearch -> getPage($page);
190           LStemplate :: assign('page',$page);
191           LStemplate :: assign('LSsearch',$LSsearch);
192           
193           if (LSsession :: loadLSclass('LSform')) {
194             LSform :: loadDependenciesDisplayView();
195           }
196           
197           LSsession :: setTemplate('viewSearch.tpl');
198         }
199         else {
200           LSsession :: addErrorCode('LSsession_05','LSsearch');
201         }
202       }
203     }
204     else {
205       LSerror :: addErrorCode('LSsession_11');
206     }
207   }
208   else {
209     LSerror :: addErrorCode('LSsession_12');
210   }
211 }
212 else {
213   LSsession :: setTemplate('login.tpl');
214 }
215 // Affichage des retours d'erreurs
216 LSsession :: displayTemplate();
217
218 if (isset($LSsearch)) {
219   $LSsearch->afterUsingResult();
220 }
221
222 ?>