65e0edb394be1edbe4c515130dbb4a88d262925b
[ldapsaisie.git] / trunk / 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=='dn') {
117       return $this -> dn;
118     }
119     elseif ($key=='subDn' || $key=='subDnName') {
120       if ($this -> cache['subDn']) {
121         return $this -> cache['subDn'];
122       }
123       if ($this -> LSsearch -> displaySubDn) {
124         $this -> cache['subDn'] = LSldapObject::getSubDnName($this -> dn);
125         return $this -> cache['subDn'];
126       }
127     }
128     elseif ($key=='actions') {
129       if (isset($this -> cache['actions'])) {
130         return $this -> cache['actions'];
131       }
132       $this -> cache['actions'] = array (
133         array(
134           'label' => _('View'),
135           'url' =>'view.php?LSobject='.$this -> LSobject.'&amp;dn='.$this -> dn,
136           'action' => 'view'
137         )
138       );
139       
140       if (LSsession :: canEdit($this -> LSobject,$this -> dn)) {
141         $this -> cache['actions'][]=array(
142           'label' => _('Modify'),
143           'url' => 'modify.php?LSobject='.$this -> LSobject.'&amp;dn='.$this -> dn,
144           'action' => 'modify'
145         );
146       }
147       
148       if ($this -> LSsearch -> canCopy) {
149         $this -> cache['actions'][] = array(
150           'label' => _('Copy'),
151           'url' =>'create.php?LSobject='.$this -> LSobject.'&amp;load='.$this -> dn,
152           'action' => 'copy'
153         );
154       }
155       
156       if (LSsession :: canRemove($this -> LSobject,$this -> dn)) {
157         $this -> cache['actions'][] = array (
158           'label' => _('Delete'),
159           'url' => 'remove.php?LSobject='.$this -> LSobject.'&amp;dn='.$this -> dn,
160           'action' => 'delete'
161         );
162       }
163       $this -> LSsearch -> addResultToCache();
164       return $this -> cache['actions'];
165     }
166     elseif ($key=='LSselect') {
167       if (is_array($_SESSION['LSselect'][$this -> LSobject])) {
168         if(in_array($this -> dn,$_SESSION['LSselect'][$this -> LSobject])) {
169           return true;
170         }
171       }
172       return;
173     }
174     elseif (in_array($key,array_keys($this -> attrs))) {
175       return $this -> attrs[$key];
176     }
177     else {
178       return __("Unknown property !");
179     }
180   }
181
182 }
183
184 ?>