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