getType(); $dn = LSsession :: getLSuserObjectDn(); } if ( LSsession :: loadLSobject($LSobject) ) { // Affichage d'un objet if ( $dn!='' ) { if (LSsession :: canAccess($LSobject,$dn)) { if ( LSsession :: canEdit($LSobject,$dn) ) { $LSview_actions[] = array( 'label' => _('Modifier'), 'url' =>'modify.php?LSobject='.$LSobject.'&dn='.$dn, 'action' => 'modify' ); } if (LSsession :: canCreate($LSobject)) { $LSview_actions[] = array( 'label' => _('Copier'), 'url' =>'create.php?LSobject='.$LSobject.'&load='.$dn, 'action' => 'copy' ); } if (LSsession :: canRemove($LSobject,$dn)) { $LSview_actions[] = array( 'label' => _('Supprimer'), 'url' => 'remove.php?LSobject='.$LSobject.'&dn='.$dn, 'action' => 'delete' ); } if (LSsession :: getLSuserObjectDn() != $dn) { $object = new $LSobject(); $object -> loadData($dn); $GLOBALS['Smarty'] -> assign('pagetitle',$object -> getDisplayName()); } else { $object = LSsession :: getLSuserObject(); $GLOBALS['Smarty'] -> assign('pagetitle',_('Mon compte')); } $view = $object -> getView(); $view -> displayView(); // LSrelations if (is_array($object -> config['LSrelation'])) { $LSrelations=array(); $LSrelations_JSparams=array(); foreach($object -> config['LSrelation'] as $relationName => $relationConf) { if (LSsession :: relationCanAccess($object -> getValue('dn'),$LSobject,$relationName)) { $return=array( 'label' => $relationConf['label'], 'LSobject' => $relationConf['LSobject'] ); if (isset($relationConf['emptyText'])) { $return['emptyText'] = $relationConf['emptyText']; } else { $return['emptyText'] = _('Aucun objet en relation.'); } $id=rand(); $return['id']=$id; $LSrelations_JSparams[$id]=array( 'emptyText' => $return['emptyText'] ); $_SESSION['LSrelation'][$id] = array( 'relationName' => $relationName, 'objectType' => $object -> getType(), 'objectDn' => $object -> getDn(), ); if (LSsession :: relationCanEdit($object -> getValue('dn'),$LSobject,$relationName)) { $return['actions'][] = array( 'label' => _('Modifier'), 'url' => 'select.php?LSobject='.$relationConf['LSobject'].'&multiple=1', 'action' => 'modify' ); } LSsession :: addJSscript('LSselect.js'); LSsession :: addCssFile('LSselect.css'); LSsession :: addJSscript('LSsmoothbox.js'); LSsession :: addCssFile('LSsmoothbox.css'); LSsession :: addJSscript('LSrelation.js'); LSsession :: addCssFile('LSrelation.css'); LSsession :: addJSscript('LSconfirmBox.js'); LSsession :: addCssFile('LSconfirmBox.css'); LSsession :: addJSscript('LSview.js'); if(LSsession :: loadLSobject($relationConf['LSobject'])) { if (method_exists($relationConf['LSobject'],$relationConf['list_function'])) { $objRel = new $relationConf['LSobject'](); $list = $objRel -> $relationConf['list_function']($object); if (is_array($list)) { foreach($list as $o) { $o_infos = array( 'text' => $o -> getDisplayName(NULL,true), 'dn' => $o -> getDn() ); $return['objectList'][] = $o_infos; } } else { $return['objectList']=array(); } } else { LSerror :: addErrorCode('LSrelations_01',$relationName); } $LSrelations[]=$return; } else { LSerror :: addErrorCode('LSrelations_04',array('relation' => $relationName,'LSobject' => $relationConf['LSobject'])); } } } LSsession :: addJSscript('LSconfirmBox.js'); LSsession :: addCssFile('LSconfirmBox.css'); $GLOBALS['Smarty'] -> assign('LSrelations',$LSrelations); LSsession :: addJSconfigParam('LSrelations',$LSrelations_JSparams); } $GLOBALS['Smarty'] -> assign('LSview_actions',$LSview_actions); LSsession :: addJSscript('LSsmoothbox.js'); LSsession :: addCssFile('LSsmoothbox.css'); LSsession :: setTemplate('view.tpl'); } else { LSerror :: addErrorCode('LSsession_11'); } } // Affichage d'une liste d'un type d'objet else { $objectList=array(); $object = new $LSobject(); $GLOBALS['Smarty']->assign('pagetitle',$object -> getLabel()); $GLOBALS['Smarty']->assign('LSobject_list_objectname',$object -> getLabel()); if (isset($_SESSION['LSsession']['LSsearch'][$LSobject])) { $filter = $_SESSION['LSsession']['LSsearch'][$LSobject]['filter']; $params = $_SESSION['LSsession']['LSsearch'][$LSobject]['params']; $pattern = $_SESSION['LSsession']['LSsearch'][$LSobject]['pattern']; $recur = $_SESSION['LSsession']['LSsearch'][$LSobject]['recur']; if ($recur) { $topDn = LSsession :: getTopDn(); } else { $topDn = $object -> config['container_dn'].','.LSsession :: getTopDn(); } $approx = $_SESSION['LSsession']['LSsearch'][$LSobject]['approx']; $orderby = $_SESSION['LSsession']['LSsearch'][$LSobject]['orderby']; $ordersense = $_SESSION['LSsession']['LSsearch'][$LSobject]['ordersense']; $doSubDn = $_SESSION['LSsession']['LSsearch'][$LSobject]['doSubDn']; } else { $filter = NULL; $topDn = $object -> config['container_dn'].','.LSsession :: getTopDn(); $params = array('scope' => 'one'); $pattern = false; $recur = false; $approx = false; $orderby = false; $_REQUEST['orderby']=$GLOBALS['LSobjects'][$LSobject]['orderby']; $ordersense = 'ASC'; $subDnLdapServer = LSsession :: getSubDnLdapServer(); $doSubDn = (($subDnLdapServer)&&(!LSsession :: isSubDnLSobject($LSobject))); } if (isset($_REQUEST['LSview_search_submit'])) { if (isset($_REQUEST['LSview_pattern']) && ($_REQUEST['LSview_pattern']!=$pattern)) { $pattern = $_REQUEST['LSview_pattern']; } $approx = (isset($_REQUEST['LSview_approx'])); if ($pattern && $pattern!='') { $filter=$object -> getPatternFilter($pattern,$approx); } else { $filter = NULL; } if (isset($_REQUEST['LSview_recur'])) { $recur = true; $params['scope'] = 'sub'; $topDn = LSsession :: getTopDn(); } else { $recur = false; $params['scope'] = 'one'; $topDn = $object -> config['container_dn'].','.LSsession :: getTopDn(); } } $sort=false; if ((isset($_REQUEST['orderby']))) { $possible_values= array('displayName','subDn'); if (in_array($_REQUEST['orderby'],$possible_values)) { $sort=true; if ($orderby==$_REQUEST['orderby']) { $ordersense = ($ordersense=='ASC')?'DESC':'ASC'; } else { $ordersense = 'ASC'; } $orderby=$_REQUEST['orderby']; } } $GLOBALS['Smarty']->assign('LSobject_list_subDn',$doSubDn); // Sauvegarde en Session $_SESSION['LSsession']['LSsearch'][$LSobject] = array( 'filter' => $filter, 'topDn' => $topDn, 'params' => $params, 'pattern' => $pattern, 'recur' => $recur, 'approx' => $approx, 'orderby' => $orderby, 'ordersense' => $ordersense, 'doSubDn' => $doSubDn ); $GLOBALS['Smarty']->assign('LSview_search_pattern',$pattern); if ($recur) { $GLOBALS['Smarty']->assign('LSview_search_recur',true); } if ($approx) { $GLOBALS['Smarty']->assign('LSview_search_approx',true); } // Hidden fields $GLOBALS['Smarty']->assign('LSview_search_hidden_fields',array( 'LSobject' => $LSobject, 'LSview_search_submit' => 1 )); // Hash de la recherche déterminer à partir des paramètres de la recherche $hash = mhash (MHASH_MD5, print_r( array( 'LSobject' => $LSobject, 'filter' => $filter, 'topDn' => $topDn, 'params' => $params ), true ) ); if ((LSsession :: cacheSearch()) && isset($_SESSION['LSsession']['LSsearch'][$hash]) && (!isset($_REQUEST['refresh']))) { // On affiche à partir du cache $searchData=$_SESSION['LSsession']['LSsearch'][$hash]; LSdebug('Recherche : From cache'); if(!isset($searchData['LSview_actions']['create'])) { LSdebug('Recherche : Check Create()'); if (LSsession :: canCreate($LSobject)) { $searchData['LSview_actions']['create'] = array ( 'label' => _('Nouveau'), 'url' => 'create.php?LSobject='.$LSobject, 'action' => 'create' ); } else { $searchData['LSview_actions']['create'] = false; } $_SESSION['LSsession']['LSsearch'][$hash]=$searchData; } } else { // Load LSdebug('Recherche : Load'); if (LSsession :: canCreate($LSobject)) { $LSview_actions['create'] = array ( 'label' => _('Nouveau'), 'url' => 'create.php?LSobject='.$LSobject, 'action' => 'create' ); $canCopy=true; } else { $LSview_actions['create'] = false; } $LSview_actions['refresh'] = array ( 'label' => _('Rafraîchir'), 'url' => 'view.php?LSobject='.$LSobject.'&refresh', 'action' => 'refresh' ); $list=$object -> listObjectsName($filter,$topDn,$params); $nbObjects=0; foreach($list as $objDn => $objName) { if (LSsession :: canAccess($LSobject,$objDn)) { $subDn_name=false; if ($doSubDn) { $subDn_name = $object -> getSubDnName($objDn); } $nbObjects++; $objectList[]=array( 'dn' => $objDn, 'displayName' => $objName, 'subDn' => $subDn_name ); } } $searchData['LSobject_list_nbresult']=$nbObjects; $searchData['objectList']=$objectList; $searchData['LSview_actions'] = $LSview_actions; if ($orderby) { $sort=true; } } // Fin Load if ((!isset($searchData['objectList'][0]['actions']))&&(!empty($searchData['objectList']))) { LSdebug('Load actions'); for($i=0;$i<$searchData['LSobject_list_nbresult'];$i++) { $actions=array(); $actions[] = array( 'label' => _('Voir'), 'url' =>'view.php?LSobject='.$LSobject.'&dn='.$searchData['objectList'][$i]['dn'], 'action' => 'view' ); if (LSsession :: canEdit($LSobject,$searchData['objectList'][$i]['dn'])) { $actions[]=array( 'label' => _('Modifier'), 'url' => 'modify.php?LSobject='.$LSobject.'&dn='.$searchData['objectList'][$i]['dn'], 'action' => 'modify' ); } if ($canCopy) { $actions[] = array( 'label' => _('Copier'), 'url' =>'create.php?LSobject='.$LSobject.'&load='.$searchData['objectList'][$i]['dn'], 'action' => 'copy' ); } if (LSsession :: canRemove($LSobject,$searchData['objectList'][$i]['dn'])) { $actions[] = array ( 'label' => _('Supprimer'), 'url' => 'remove.php?LSobject='.$LSobject.'&dn='.$searchData['objectList'][$i]['dn'], 'action' => 'delete' ); } $searchData['objectList'][$i]['actions']=$actions; } } $GLOBALS['Smarty']->assign('LSobject_list_nbresult',$searchData['LSobject_list_nbresult']); // Order by if $sort if ($sort) { function sortBy($a,$b) { global $ordersense; global $orderby; if ($ordersense=='ASC') { $sense = -1; } else { $sense = 1; } if ($a == $b) return 0; $sort = array($a[$orderby],$b[$orderby]); sort($sort); if ($sort[0]==$a[$orderby]) return 1*$sense; return -1*$sense; } if (!uasort($searchData['objectList'],'sortBy')) { LSdebug('Erreur durant le trie.'); } } // Fin Order by $GLOBALS['Smarty']->assign('LSobject_list_orderby',$orderby); $GLOBALS['Smarty']->assign('LSobject_list_ordersense',$ordersense); // Mise en cache if (LSsession :: cacheSearch()) { $_SESSION['LSsession']['LSsearch'][$hash]=$searchData; } // Pagination if ($searchData['LSobject_list_nbresult'] > NB_LSOBJECT_LIST) { if (isset($_REQUEST['page'])) { $searchData['objectList'] = array_slice($searchData['objectList'], ($_REQUEST['page']) * NB_LSOBJECT_LIST, NB_LSOBJECT_LIST); $GLOBALS['Smarty']->assign('LSobject_list_currentpage',$_REQUEST['page']); } else { $searchData['objectList'] = array_slice($searchData['objectList'], 0, NB_LSOBJECT_LIST); $GLOBALS['Smarty']->assign('LSobject_list_currentpage',0); } $searchData['LSobject_list_nbpage']=ceil($searchData['LSobject_list_nbresult'] / NB_LSOBJECT_LIST); $GLOBALS['Smarty']->assign('LSobject_list_nbpage',$searchData['LSobject_list_nbpage']); } // Fin Pagination LSsession :: addJSscript('LSconfirmBox.js'); LSsession :: addCssFile('LSconfirmBox.css'); LSsession :: addJSscript('LSview.js'); $GLOBALS['Smarty']->assign('LSview_search',array( 'action' => $_SERVER['PHP_SELF'], 'submit' => _('Rechercher'), 'LSobject' => $LSobject )); $GLOBALS['Smarty']->assign('LSview_search_recur_label',_('Recherche récursive')); $GLOBALS['Smarty']->assign('LSview_search_approx_label',_('Recherche approximative')); $GLOBALS['Smarty']->assign('LSobject_list_without_result_label',_("Cette recherche n'a retourné aucun résultat.")); $GLOBALS['Smarty']->assign('_Actions',_('Actions')); $GLOBALS['Smarty']->assign('_Modifier',_('Modifier')); $GLOBALS['Smarty']->assign('LSobject_list',$searchData['objectList']); $GLOBALS['Smarty']->assign('LSobject_list_objecttype',$LSobject); $GLOBALS['Smarty'] -> assign('LSview_actions',$searchData['LSview_actions']); LSsession :: setTemplate('viewList.tpl'); } } } else { LSerror :: addErrorCode('LSsession_11'); } } else { LSerror :: addErrorCode('LSsession_12'); } } else { LSsession :: setTemplate('login.tpl'); } // Affichage des retours d'erreurs LSsession :: displayTemplate(); ?>