CustomActions : Added disableOnSuccessMsg parameter
[ldapsaisie.git] / public_html / custom_action.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
27   if ((isset($_GET['LSobject'])) && (isset($_GET['dn'])) && (isset($_GET['customAction']))) {
28     
29     if (LSsession ::loadLSobject($_GET['LSobject'])) {
30         if ( LSsession :: canExecuteCustomAction($_GET['dn'],$_GET['LSobject'],$_GET['customAction']) ) {
31           $object = new $_GET['LSobject']();
32           if ($object -> loadData($_GET['dn'])) {
33             $config = LSconfig :: get('LSobjects.'.$_GET['LSobject'].'.customActions.'.$_GET['customAction']);
34             if (isset($config['function']) && is_callable($config['function'])) {
35               if (isset($config['label'])) {
36                 $title=__($config['label']);
37               }
38               else {
39                 $title=__($_GET['customAction']);
40               }
41               if (isset($_GET['valid'])) {
42                 $objectname=$object -> getDisplayName();
43                 $GLOBALS['Smarty'] -> assign('pagetitle',$title.' : '.$objectname);
44                 if ($config['function']($object)) {
45                   if ($config['disableOnSuccessMsg']!=true) {
46                     if ($config['onSuccessMsgFormat']) {
47                       LSsession :: addInfo(getFData($config['onSuccessMsgFormat'],$objectname));
48                     }
49                     else {
50                       LSsession :: addInfo(getFData(_('The custom action %{customAction} have been successfully execute on %{objectname}.'),array('objectname' => $objectname,'customAction' => $_GET['customAction'])));
51                     }
52                   }
53                   LSsession :: redirect('view.php?LSobject='.$_GET['LSobject'].'&refresh');
54                 }
55                 else {
56                   LSerror :: addErrorCode('LSldapObject_31',array('objectname' => $objectname,'customAction' => $_GET['customAction']));
57                 }
58               }
59               else {
60                 $objectname=$object -> getDisplayName();
61                 $question=(
62                         isset($config['question_format'])?
63                         getFData(__($config['question_format']),$objectname):
64                         getFData(
65                                 _('Do you really want to execute custom action %{customAction} on %{objectname} ?'),
66                                 array(
67                                         'objectname' => $objectname,
68                                         'customAction' => $_GET['customAction']
69                                 )
70                         )
71                 );
72                 $GLOBALS['Smarty'] -> assign('pagetitle',$title.' : '.$objectname);
73                 $GLOBALS['Smarty'] -> assign('question',$question);
74                 $GLOBALS['Smarty'] -> assign('validation_url','custom_action.php?LSobject='.$_GET['LSobject'].'&amp;dn='.$_GET['dn'].'&amp;customAction='.$_GET['customAction'].'&amp;valid');
75                 $GLOBALS['Smarty'] -> assign('validation_label',_('Validate'));
76               }
77               LSsession :: setTemplate('question.tpl');
78             }
79             else {
80               LSerror :: addErrorCode('LSsession_13');
81             }
82           }
83           else {
84             LSerror :: addErrorCode('LSsession_12');
85           }
86         }
87         else {
88           LSerror :: addErrorCode('LSsession_11');
89         }
90     }
91     else {
92       LSerror :: addErrorCode('LSldapObject_01');
93     }
94   }
95   else {
96     LSerror :: addErrorCode('LSsession_12');
97   }
98
99 }
100 else {
101   LSsession :: setTemplate('login.tpl');
102 }
103
104 // Affichage des retours d'erreurs
105 LSsession :: displayTemplate();
106 ?>