Add documentation
[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     if ( $LSobject == 'SELF' ) {
29       $LSobject = LSsession :: getLSuserObject() -> getType();
30       $dn = LSsession :: getLSuserObjectDn();
31     }
32     else {
33       $dn = isset($_REQUEST['dn'])?urldecode($_REQUEST['dn']):null;
34     }
35     
36     if (LSsession :: in_menu($LSobject) || LSsession :: canAccess($LSobject,$dn)) {
37     
38       if ( LSsession :: loadLSobject($LSobject) ) {
39         // Affichage d'un objet
40         if ( $dn!='' ) {
41           if (LSsession :: canAccess($LSobject,$dn)) {
42             if ( LSsession :: canEdit($LSobject,$dn) ) {
43               $LSview_actions[] = array(
44                 'label' => _('Modify'),
45                 'url' =>'modify.php?LSobject='.$LSobject.'&amp;dn='.urlencode($dn),
46                 'action' => 'modify'
47               );
48             }
49             
50             if (LSsession :: canCreate($LSobject)) {
51               $LSview_actions[] = array(
52                 'label' => _('Copy'),
53                 'url' =>'create.php?LSobject='.$LSobject.'&amp;load='.urlencode($dn),
54                 'action' => 'copy'
55               );
56             }
57             
58             if (LSsession :: canRemove($LSobject,$dn)) {
59               $LSview_actions[] = array(
60                 'label' => _('Delete'),
61                 'url' => 'remove.php?LSobject='.$LSobject.'&amp;dn='.urlencode($dn),
62                 'action' => 'delete'
63               );
64             }
65
66             // Custum Actions
67             $customActionsConfig = LSconfig :: get('LSobjects.'.$LSobject.'.customActions');
68             if (is_array($customActionsConfig)) {
69               foreach($customActionsConfig as $name => $config) {
70                 if (LSsession :: canExecuteCustomAction($dn,$LSobject,$name)) {
71                   $LSview_actions[] = array (
72                     'label' => ((isset($config['label']))?__($config['label']):__($name)),
73                     'hideLabel' => ((isset($config['hideLabel']))?$config['hideLabel']:False),
74                     'helpInfo' => ((isset($config['helpInfo']))?__($config['helpInfo']):False),
75                     'url' => 'custom_action.php?LSobject='.$LSobject.'&amp;dn='.urlencode($dn).'&amp;customAction='.$name,
76                     'action' => ((isset($config['icon']))?$config['icon']:'generate'),
77                     'class' => 'LScustomActions'.(($config['noConfirmation'])?' LScustomActions_noConfirmation':'')
78                   );
79                 }
80               }
81             }
82             
83             if (LSsession :: getLSuserObjectDn() != $dn) {
84               $object = new $LSobject();
85               $object -> loadData($dn);
86               LStemplate :: assign('pagetitle',$object -> getDisplayName());
87             }
88             else {
89               $object = LSsession :: getLSuserObject();
90               LStemplate :: assign('pagetitle',_('My account'));
91             }
92
93             LStemplate :: assign('LSldapObject',$object);
94             
95             $view = $object -> getView();
96             $view -> displayView();
97             
98             // LSrelations
99             if (LSsession :: loadLSclass('LSrelation')) {
100               LSrelation :: displayInLSview($object);
101             }
102             
103             LStemplate :: assign('LSview_actions',$LSview_actions);
104             LSsession :: setTemplate('view.tpl');
105           }
106           else {
107             LSerror :: addErrorCode('LSsession_11');
108           }
109         }
110         // Affichage d'une liste d'un type d'objet
111         elseif (LSsession :: loadLSclass('LSsearch')) {
112           $object = new $LSobject();
113           LStemplate :: assign('pagetitle',$object -> getLabel());
114           
115           $LSsearch = new LSsearch($LSobject,'LSview');
116           $LSsearch -> setParam('extraDisplayedColumns',True);
117           $LSsearch -> setParamsFormPostData();
118           
119           $searchForm = array (
120             'action' => $_SERVER['PHP_SELF'],
121             'recursive' => (! LSsession :: isSubDnLSobject($LSobject) && LSsession :: subDnIsEnabled() ),
122             'labels' => array (
123               'submit' => _('Search'),
124               'approx' => _('Approximative search'),
125               'recursive' => _('Recursive search')
126             ),
127             'values' => array (
128               'pattern' => $LSsearch->getParam('pattern'),
129               'approx' => $LSsearch->getParam('approx'),
130               'recursive' => $LSsearch->getParam('recursive')
131             ),
132             'names' => array (
133               'submit' => 'LSsearch_submit'
134             ),
135             'hiddenFields' => $LSsearch -> getHiddenFieldForm(),
136             'predefinedFilter' => $LSsearch->getParam('predefinedFilter')
137           );
138           LStemplate :: assign('searchForm',$searchForm);
139           
140           $LSview_actions=array();
141           if(LSsession :: canCreate($LSobject)) {
142             $LSview_actions['create'] = array (
143               'label' => 'New',
144               'url' => 'create.php?LSobject='.$LSobject,
145               'action' => 'create'
146             );
147             if ($object -> listValidIOformats()) {
148               $LSview_actions['import'] = array (
149                 'label' => 'Import',
150                 'url' => 'import.php?LSobject='.$LSobject,
151                 'action' => 'import'
152               );
153             }
154           }
155           $LSview_actions['refresh'] = array (
156             'label' => 'Refresh',
157             'url' => 'view.php?LSobject='.$LSobject.'&amp;refresh',
158             'action' => 'refresh'
159           );
160           /*$LSview_actions['purge'] = array (
161             'label' => 'Purge the cache',
162             'url' => 'view.php?LSobject='.$LSobject.'&amp;LSsearchPurgeSession',
163             'action' => 'delete'
164           );*/
165
166           // Custum Actions
167           $customActionsConfig = LSconfig :: get('LSobjects.'.$LSobject.'.LSsearch.customActions');
168           if (is_array($customActionsConfig)) {
169             foreach($customActionsConfig as $name => $config) {
170               if (LSsession :: canExecuteLSsearchCustomAction($LSsearch,$name)) {
171                 $LSview_actions[] = array (
172                   'label' => ((isset($config['label']))?__($config['label']):__($name)),
173                   'hideLabel' => ((isset($config['hideLabel']))?$config['hideLabel']:False),
174                   'helpInfo' => ((isset($config['helpInfo']))?__($config['helpInfo']):False),
175                   'url' => 'custom_search_action.php?LSobject='.$LSobject.'&amp;customAction='.$name,
176                   'action' => ((isset($config['icon']))?$config['icon']:'generate'),
177                   'class' => 'LScustomActions'.(($config['noConfirmation'])?' LScustomActions_noConfirmation':'')
178                 );
179               }
180             }
181           }
182
183           LStemplate :: assign('LSview_actions',$LSview_actions);
184           
185           $LSsearch -> run();
186           
187           $LSsearch -> redirectWhenOnlyOneResult();
188           
189           $page=(isset($_REQUEST['page'])?(int)$_REQUEST['page']:0);
190           $page = $LSsearch -> getPage($page);
191           LStemplate :: assign('page',$page);
192           LStemplate :: assign('LSsearch',$LSsearch);
193           
194           if (LSsession :: loadLSclass('LSform')) {
195             LSform :: loadDependenciesDisplayView();
196           }
197           
198           LSsession :: setTemplate('viewSearch.tpl');
199         }
200         else {
201           LSsession :: addErrorCode('LSsession_05','LSsearch');
202         }
203       }
204     }
205     else {
206       LSerror :: addErrorCode('LSsession_11');
207     }
208   }
209   else {
210     LSerror :: addErrorCode('LSsession_12');
211   }
212 }
213 else {
214   LSsession :: setTemplate('login.tpl');
215 }
216 // Affichage des retours d'erreurs
217 LSsession :: displayTemplate();
218
219 if (isset($LSsearch)) {
220   $LSsearch->afterUsingResult();
221 }
222
223 ?>