ILIAS  release_4-4 Revision
All Data Structures Namespaces Files Functions Variables Modules Pages
class.ilExportFieldsInfo.php
Go to the documentation of this file.
1 <?php
2 /*
3  +-----------------------------------------------------------------------------+
4  | ILIAS open source |
5  +-----------------------------------------------------------------------------+
6  | Copyright (c) 1998-2006 ILIAS open source, University of Cologne |
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 |
10  | as published by the Free Software Foundation; either version 2 |
11  | of the License, or (at your option) any later version. |
12  | |
13  | This program is distributed in the hope that it will be useful, |
14  | but WITHOUT ANY WARRANTY; without even the implied warranty of |
15  | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
16  | GNU General Public License for more details. |
17  | |
18  | You should have received a copy of the GNU General Public License |
19  | along with this program; if not, write to the Free Software |
20  | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
21  +-----------------------------------------------------------------------------+
22 */
23 
34 {
35  private static $instance = null;
36 
37  private $settings;
38  private $db;
39  private $lng;
40 
41  private $obj_type = '';
42 
43  private $possible_fields = array();
44 
51  private function __construct($a_type)
52  {
53  global $ilDB,$ilSetting,$lng;
54 
55  $this->db = $ilDB;
56  $this->lng = $lng;
57  $this->settings = $ilSetting;
58 
59  $this->obj_type = $a_type;
60 
61  $this->read();
62  }
63 
70  public static function _getInstanceByType($a_type)
71  {
72  if(is_object(self::$instance[$a_type]))
73  {
74  return self::$instance[$a_type];
75  }
76  return self::$instance[$a_type] = new ilExportFieldsInfo($a_type);
77  }
78 
83  public function getType()
84  {
85  return $this->obj_type;
86  }
87 
96  public function isExportable($a_field_name)
97  {
98  return array_key_exists($a_field_name,$this->possible_fields);
99  }
100 
107  public function getFieldsInfo()
108  {
109  return $this->possible_fields;
110  }
111 
117  public function getExportableFields()
118  {
119  foreach($this->possible_fields as $field => $exportable)
120  {
121  if($exportable)
122  {
123  $fields[] = $field;
124  }
125  }
126  return $fields ? $fields : array();
127  }
128 
133  public function getSelectableFieldsInfo($a_obj_id)
134  {
135  global $lng;
136 
137  $fields = array();
138  foreach($this->getExportableFields() as $field)
139  {
140  switch($field)
141  {
142  case 'lastname':
143  case 'firstname':
144  break;
145 
146  case 'username':
147  $fields['login']['txt'] = $lng->txt('username');
148  $fields['login']['default'] = 1;
149  break;
150  default:
151  $fields[$field]['txt'] = $lng->txt($field);
152  $fields[$field]['default'] = 0;
153  break;
154  }
155  }
156 
157  include_once './Services/Booking/classes/class.ilBookingEntry.php';
158  if(ilBookingEntry::hasObjectBookingEntries($a_obj_id, $GLOBALS['ilUser']->getId()))
159  {
160  $GLOBALS['lng']->loadLanguageModule('dateplaner');
161  $fields['consultation_hour']['txt'] = $GLOBALS['lng']->txt('cal_ch_field_ch');
162  $fields['consultation_hour']['default'] = 0;
163  }
164 
165  include_once './Services/User/classes/class.ilUserDefinedFields.php';
166  if($this->getType() == 'crs')
167  {
168  $udf = ilUserDefinedFields::_getInstance()->getCourseExportableFields();
169  }
170  elseif($this->getType() == 'grp')
171  {
172  $udf = ilUserDefinedFields::_getInstance()->getGroupExportableFields();
173  }
174  if($udf)
175  {
176  foreach($udf as $field_id => $field)
177  {
178  $fields['udf_'.$field_id]['txt'] = $field['field_name'];
179  $fields['udf_'.$field_id]['default'] = 0;
180  }
181  }
182 
183  include_once './Modules/Course/classes/Export/class.ilCourseDefinedFieldDefinition.php';
185  foreach($cdf as $def)
186  {
187  $fields['odf_'.$def->getId()]['txt'] = $def->getName();
188  $fields['odf_'.$def->getId()]['default'] = 0;
189  }
190 
191  return $fields;
192  }
193 
201  {
202  $fields = array();
203  foreach($this->getExportableFields() as $field)
204  {
205  $fields[] = $this->lng->txt($field);
206  }
207  return implode('<br />',$fields);
208  }
209 
216  private function read()
217  {
218  include_once './Services/User/classes/class.ilUserProfile.php';
219 
220  $profile = new ilUserProfile();
221  $profile->skipGroup('settings');
222 
223  foreach($profile->getStandardFields() as $key => $data)
224  {
225  if($this->getType() == 'crs')
226  {
227  if(!$data['course_export_hide'])
228  {
229  if(isset($data['course_export_fix_value']) and $data['course_export_fix_value'])
230  {
231  $this->possible_fields[$key] = $data['course_export_fix_value'];
232  }
233  else
234  {
235  $this->possible_fields[$key] = 0;
236  }
237  }
238  }
239  elseif($this->getType() == 'grp')
240  {
241  if(!$data['group_export_hide'])
242  {
243  if(isset($data['group_export_fix_value']) and $data['group_export_fix_value'])
244  {
245  $this->possible_fields[$key] = $data['group_export_fix_value'];
246  }
247  else
248  {
249  $this->possible_fields[$key] = 0;
250  }
251  }
252  }
253  }
254  $settings_all = $this->settings->getAll();
255 
256  $field_part_limit = 5;
257  switch($this->getType())
258  {
259  case 'crs':
260  $field_prefix = 'usr_settings_course_export_';
261  $field_part_limit = 5;
262  break;
263 
264  case 'grp':
265  $field_prefix = 'usr_settings_group_export_';
266  $field_part_limit = 5;
267  break;
268  }
269 
270  foreach($settings_all as $key => $value)
271  {
272  if(stristr($key,$field_prefix) and $value)
273  {
274  // added limit for mantis 11096
275  $field_parts = explode('_',$key,$field_part_limit);
276  $field = $field_parts[count($field_parts) - 1];
277  if(array_key_exists($field,$this->possible_fields))
278  {
279  $this->possible_fields[$field] = 1;
280  }
281  }
282  }
283  return true;
284  }
285 }
286 ?>
static hasObjectBookingEntries($a_obj_id, $a_usr_id)
Check if object has assigned consultation hour appointments.
static _getInstance()
Get instance.
Class ilUserProfile.
getType()
Get object type.
exportableFieldsToInfoString()
Get exportable fields as info string.
getFieldsInfo()
Get informations (exportable) about user data profile fields.
getSelectableFieldsInfo($a_obj_id)
Get selectable fields.
$GLOBALS['ct_recipient']
isExportable($a_field_name)
Check if field is exportable.
static _getInstanceByType($a_type)
Get Singleton Instance.
while($lm_rec=$ilDB->fetchAssoc($lm_set)) $data
global $ilSetting
Definition: privfeed.php:40
__construct($a_type)
Private Singleton Constructor.
getExportableFields()
Get Exportable Fields.
read()
Read info about exportable fields.
static _getFields($a_container_id, $a_sort=IL_CDF_SORT_NAME)
Get all fields of a container.