Added urlencode() of object's DN in modify link URL
[ldapsaisie.git] / public_html / includes / class / class.LSsearchEntry.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 /**
24  * Object LSsearchEntry
25  *
26  * @author Benjamin Renard <brenard@easter-eggs.com>
27  */
28 class LSsearchEntry { 
29   
30   // The LSsearch object
31   private $LSsearch=NULL;
32   
33   // The LdapObject type of search
34   private $LSobject=NULL;
35   
36   // DN
37   private $dn;
38   
39   // The parameters of the search
40   private $params=array ();
41   
42   // The hash of the search parameters
43   private $hash = NULL;
44   
45   // The attributes values
46   private $attrs=array();
47   
48   // Cache
49   private $cache=array();
50   
51   /**
52    * Constructor
53    * 
54    * @param[in] $LSobject string The LdapObject type of search
55    * @param[in] $params array Parameters of search
56    * @param[in] $hash array Parameters of search
57    * @param[in] $resultEntry array The data of the result entry
58    * 
59    **/
60   function LSsearchEntry(&$LSsearch,$LSobject,$params,$hash,&$result,$id) {
61     if (!LSsession :: loadLSobject($LSobject)) {
62       return;
63     }
64     $this -> LSsearch = $LSsearch;
65     $this -> LSobject = $LSobject;
66     $this -> params = $params;
67     $this -> id = $id;
68     $this -> dn =& $result[$id]['dn'];
69     $this -> attrs =& $result[$id]['attrs'];
70     $this -> cache =& $result[$id]['cache'];
71   }
72   
73   /**
74    * Get text value of entry
75    * 
76    * @param[in] $key string The name of the value
77    * 
78    * @retval mixed The value
79    **/
80   public function get($key) {
81     if (in_array($key,array_keys($this -> attrs))) {
82       return $this -> attrs[$key];
83     }
84     elseif ($key=='subDn' || $key=='subDnName') {
85       return $this -> subDn;
86     }
87   }
88
89   /**
90    * Get formated text value of entry
91    * 
92    * @param[in] $format string The format of the value
93    * 
94    * @retval mixed The formated value
95    **/  
96   public function getFData($format) {
97     return getFData($format,$this,'get');
98   }
99   
100   
101   /**
102    * Access to infos of the entry
103    * 
104    * @param[in] $key string The name of the value
105    * 
106    * @retval mixed The value
107    **/
108   public function __get($key) {
109     if ($key=='displayName') {
110       if (isset($this -> cache['displayName'])) {
111         return $this -> cache['displayName'];
112       }
113       $this -> cache['displayName'] = $this -> getFData($this -> params['displayFormat']);
114       return $this -> cache['displayName'];
115     }
116     elseif ($key=='LSobject'||$key=='type_name'||$key=='type') {
117       return $this -> LSobject;
118     }
119     elseif ($key=='dn') {
120       return $this -> dn;
121     }
122     elseif ($key=='subDn' || $key=='subDnName') {
123       if ($this -> cache['subDn']) {
124         return $this -> cache['subDn'];
125       }
126       if ($this -> LSsearch -> displaySubDn) {
127         $this -> cache['subDn'] = LSldapObject::getSubDnName($this -> dn);
128         return $this -> cache['subDn'];
129       }
130     }
131     elseif ($key=='actions') {
132       if (isset($this -> cache['actions'])) {
133         return $this -> cache['actions'];
134       }
135       $this -> cache['actions'] = array (
136         array(
137           'label' => _('View'),
138           'url' =>'view.php?LSobject='.$this -> LSobject.'&amp;dn='.urlencode($this -> dn),
139           'action' => 'view'
140         )
141       );
142       
143       if (LSsession :: canEdit($this -> LSobject,$this -> dn)) {
144         $this -> cache['actions'][]=array(
145           'label' => _('Modify'),
146           'url' => 'modify.php?LSobject='.$this -> LSobject.'&amp;dn='.urlencode($this -> dn),
147           'action' => 'modify'
148         );
149       }
150       
151       if ($this -> LSsearch -> canCopy) {
152         $this -> cache['actions'][] = array(
153           'label' => _('Copy'),
154           'url' =>'create.php?LSobject='.$this -> LSobject.'&amp;load='.$this -> dn,
155           'action' => 'copy'
156         );
157       }
158       
159       if (LSsession :: canRemove($this -> LSobject,$this -> dn)) {
160         $this -> cache['actions'][] = array (
161           'label' => _('Delete'),
162           'url' => 'remove.php?LSobject='.$this -> LSobject.'&amp;dn='.$this -> dn,
163           'action' => 'delete'
164         );
165       }
166       $this -> LSsearch -> addResultToCache();
167       return $this -> cache['actions'];
168     }
169     elseif ($key=='LSselect') {
170       if (is_array($_SESSION['LSselect'][$this -> LSobject])) {
171         if(in_array($this -> dn,$_SESSION['LSselect'][$this -> LSobject])) {
172           return true;
173         }
174       }
175       return;
176     }
177     elseif (in_array($key,array_keys($this -> attrs))) {
178       return $this -> attrs[$key];
179     }
180     elseif (array_key_exists($key,$this->params['customInfos'])) {
181       if(isset($this -> cache['customInfos'][$key])) {
182         return $this -> cache['customInfos'][$key];
183       }
184       if(is_array($this->params['customInfos'][$key]['function']) && is_string($this->params['customInfos'][$key]['function'][0])) {
185         LSsession::loadLSclass($this->params['customInfos'][$key]['function'][0]);
186       }
187       if(is_callable($this->params['customInfos'][$key]['function'])) {
188         $this -> cache['customInfos'][$key]=call_user_func($this->params['customInfos'][$key]['function'],$this,$this->params['customInfos'][$key]['args']);
189         return $this -> cache['customInfos'][$key];
190       }
191     }
192     else {
193       LSlog('LSsearchEntry : '.$this -> dn.' => Unknown property '.$key.' !');
194       return __("Unknown property !");
195     }
196   }
197
198 }
199
200 ?>