Added custum action feature
[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['onSuccessMsgFormat']) {
46
47                   }
48                   else {
49                     LSsession :: addInfo(getFData(_('The custom action %{customAction} have been successfully execute on %{objectname}.'),array('objectname' => $objectname,'customAction' => $_GET['customAction'])));
50                   }
51                   LSsession :: redirect('view.php?LSobject='.$_GET['LSobject'].'&refresh');
52                 }
53                 else {
54                   LSerror :: addErrorCode('LSldapObject_15',$objectname);
55                 }
56               }
57               else {
58                 $objectname=$object -> getDisplayName();
59                 $question=(
60                         isset($config['question_format'])?
61                         getFData(__($config['question_format']),$objectname):
62                         getFData(
63                                 _('Do you really want to execute custom action %{customAction} on %{objectname} ?'),
64                                 array(
65                                         'objectname' => $objectname,
66                                         'customAction' => $_GET['customAction']
67                                 )
68                         )
69                 );
70                 $GLOBALS['Smarty'] -> assign('pagetitle',$title.' : '.$objectname);
71                 $GLOBALS['Smarty'] -> assign('question',$question);
72                 $GLOBALS['Smarty'] -> assign('validation_url','custom_action.php?LSobject='.$_GET['LSobject'].'&amp;dn='.$_GET['dn'].'&amp;customAction='.$_GET['customAction'].'&amp;valid');
73                 $GLOBALS['Smarty'] -> assign('validation_label',_('Validate'));
74               }
75               LSsession :: setTemplate('question.tpl');
76             }
77             else {
78               LSerror :: addErrorCode('LSsession_13');
79             }
80           }
81           else {
82             LSerror :: addErrorCode('LSsession_12');
83           }
84         }
85         else {
86           LSerror :: addErrorCode('LSsession_11');
87         }
88     }
89     else {
90       LSerror :: addErrorCode('LSldapObject_01');
91     }
92   }
93   else {
94     LSerror :: addErrorCode('LSsession_12');
95   }
96
97 }
98 else {
99   LSsession :: setTemplate('login.tpl');
100 }
101
102 // Affichage des retours d'erreurs
103 LSsession :: displayTemplate();
104 ?>