LSselect : Added feature to filter object selection that can't be modified by user
[ldapsaisie.git] / trunk / select.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     
29     if ( LSsession ::loadLSobject($LSobject) ) {
30       if (LSsession :: loadLSclass('LSsearch')) {
31         $object = new $LSobject();
32         $GLOBALS['Smarty']->assign('pagetitle',$object -> getLabel());
33         
34         $LSsearch = new LSsearch($LSobject,'LSselect');
35         $LSsearch -> setParamsFormPostData();
36         $LSsearch -> setParam('nbObjectsByPage',NB_LSOBJECT_LIST_SELECT);
37         
38         $selectablly=((isset($_REQUEST['selectablly']))?$_REQUEST['selectablly']:0);
39         
40         if (is_string($_REQUEST['editableAttr'])) {
41           $LSsearch -> setParam(
42             'customInfos',
43             array (
44               'selectablly' => array (
45                 'function' => array('LSselect','selectablly'),
46                 'args' => $_REQUEST['editableAttr']
47               )
48             )
49           );
50           $selectablly=1;
51         }
52         $multiple = ((isset($_REQUEST['multiple']))?1:0);
53         
54         $searchForm = array (
55           'action' => $_SERVER['PHP_SELF'],
56           'recursive' => (! LSsession :: isSubDnLSobject($LSobject) && LSsession :: subDnIsEnabled() ),
57           'multiple' => $multiple,
58           'selectablly' => $selectablly,
59           'labels' => array (
60             'submit' => _('Search'),
61             'approx' => _('Approximative search'),
62             'recursive' => _('Recursive search'),
63             'level' => _('Level')
64           ),
65           'values' => array (
66             'pattern' => $LSsearch->getParam('pattern'),
67             'approx' => $LSsearch->getParam('approx'),
68             'recursive' => $LSsearch->getParam('recursive'),
69             'basedn' => $LSsearch->getParam('basedn')
70           ),
71           'names' => array (
72             'submit' => 'LSsearch_submit'
73           ),
74           'hiddenFields' => array_merge(
75             $LSsearch -> getHiddenFieldForm(),
76             array(
77               'ajax' => 1,
78               'selectablly' => $selectablly,
79               'multiple' => $multiple
80             )
81           )
82         );
83         $GLOBALS['Smarty']->assign('searchForm',$searchForm);
84         
85         $LSview_actions=array(
86           array (
87             'label' => 'Refresh',
88             'url' => 'view.php?LSobject='.$LSobject.'&amp;refresh',
89             'action' => 'refresh'
90           )
91         );
92         $GLOBALS['Smarty']->assign('LSview_actions',$LSview_actions);
93         
94         $LSsearch -> run();
95         $page=(int)$_REQUEST['page'];
96         $page = $LSsearch -> getPage($page);
97         $GLOBALS['Smarty']->assign('page',$page);
98         $GLOBALS['Smarty']->assign('LSsearch',$LSsearch);
99
100         $GLOBALS['Smarty']->assign('LSobject_list_objectname',$object -> getLabel());
101         
102         if (isset($_REQUEST['ajax'])) {
103           LSsession :: setTemplate('select_table.tpl');
104         }
105         else {
106           LSsession :: setTemplate('select.tpl');
107         }
108         
109         LSsession :: setAjaxDisplay();
110       }
111       else {
112         LSsession :: addErrorCode('LSsession_05','LSsearch');
113       }
114     }
115   }
116   else {
117     LSerror :: addErrorCode('LSsession_12');
118   }
119 }
120 else {
121   LSsession :: setTemplate('login.tpl');
122 }
123
124 // Affichage des retours d'erreurs
125 LSsession :: displayTemplate();
126
127 if (isset($LSsearch)) {
128   $LSsearch->afterUsingResult();
129 }
130 ?>