Added custum action feature
[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'])?$_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='.$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='.$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='.$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                     'url' => 'custom_action.php?LSobject='.$LSobject.'&amp;dn='.$dn.'&amp;customAction='.$name,
73                     'action' => ((isset($config['icon']))?$config['icon']:'generate')
74                   );
75                 }
76               }
77             }
78             
79             if (LSsession :: getLSuserObjectDn() != $dn) {
80               $object = new $LSobject();
81               $object -> loadData($dn);
82               $GLOBALS['Smarty'] -> assign('pagetitle',$object -> getDisplayName());
83             }
84             else {
85               $object = LSsession :: getLSuserObject();
86               $GLOBALS['Smarty'] -> assign('pagetitle',_('My account'));
87             }
88             
89             $view = $object -> getView();
90             $view -> displayView();
91             
92             // LSrelations
93             if (LSsession :: loadLSclass('LSrelation')) {
94               LSrelation :: displayInLSview($object);
95             }
96             
97             $GLOBALS['Smarty'] -> assign('LSview_actions',$LSview_actions);
98             LSsession :: setTemplate('view.tpl');
99           }
100           else {
101             LSerror :: addErrorCode('LSsession_11');
102           }
103         }
104         // Affichage d'une liste d'un type d'objet
105         elseif (LSsession :: loadLSclass('LSsearch')) {
106           $object = new $LSobject();
107           $GLOBALS['Smarty']->assign('pagetitle',$object -> getLabel());
108           
109           $LSsearch = new LSsearch($LSobject,'LSview');
110           $LSsearch -> setParamsFormPostData();
111           
112           $searchForm = array (
113             'action' => $_SERVER['PHP_SELF'],
114             'recursive' => (! LSsession :: isSubDnLSobject($LSobject) && LSsession :: subDnIsEnabled() ),
115             'labels' => array (
116               'submit' => _('Search'),
117               'approx' => _('Approximative search'),
118               'recursive' => _('Recursive search')
119             ),
120             'values' => array (
121               'pattern' => $LSsearch->getParam('pattern'),
122               'approx' => $LSsearch->getParam('approx'),
123               'recursive' => $LSsearch->getParam('recursive')
124             ),
125             'names' => array (
126               'submit' => 'LSsearch_submit'
127             ),
128             'hiddenFields' => $LSsearch -> getHiddenFieldForm(),
129             'predefinedFilter' => $LSsearch->getParam('predefinedFilter')
130           );
131           $GLOBALS['Smarty']->assign('searchForm',$searchForm);
132           
133           $LSview_actions=array();
134           if(LSsession :: canCreate($LSobject)) {
135             $LSview_actions['create'] = array (
136               'label' => 'New',
137               'url' => 'create.php?LSobject='.$LSobject,
138               'action' => 'create'
139             );
140           }
141           $LSview_actions['refresh'] = array (
142             'label' => 'Refresh',
143             'url' => 'view.php?LSobject='.$LSobject.'&amp;refresh',
144             'action' => 'refresh'
145           );
146           /*$LSview_actions['purge'] = array (
147             'label' => 'Purge the cache',
148             'url' => 'view.php?LSobject='.$LSobject.'&amp;LSsearchPurgeSession',
149             'action' => 'delete'
150           );*/
151           $GLOBALS['Smarty']->assign('LSview_actions',$LSview_actions);
152           
153           $LSsearch -> run();
154           
155           $LSsearch -> redirectWhenOnlyOneResult();
156           
157           $page=(isset($_REQUEST['page'])?(int)$_REQUEST['page']:0);
158           $page = $LSsearch -> getPage($page);
159           $GLOBALS['Smarty']->assign('page',$page);
160           $GLOBALS['Smarty']->assign('LSsearch',$LSsearch);
161           
162           if (LSsession :: loadLSclass('LSform')) {
163             LSform :: loadDependenciesDisplayView();
164           }
165           
166           LSsession :: setTemplate('viewSearch.tpl');
167         }
168         else {
169           LSsession :: addErrorCode('LSsession_05','LSsearch');
170         }
171       }
172     }
173     else {
174       LSerror :: addErrorCode('LSsession_11');
175     }
176   }
177   else {
178     LSerror :: addErrorCode('LSsession_12');
179   }
180 }
181 else {
182   LSsession :: setTemplate('login.tpl');
183 }
184 // Affichage des retours d'erreurs
185 LSsession :: displayTemplate();
186
187 if (isset($LSsearch)) {
188   $LSsearch->afterUsingResult();
189 }
190
191 ?>