ILIAS  release_5-0 Revision 5.0.0-1144-gc4397b1f870
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('login');
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  if(count($cdf))
192  {
193  // add last edit
194  $fields['odf_last_update']['txt'] = $GLOBALS['lng']->txt($this->getType().'_cdf_tbl_last_edit');
195  $fields['odf_last_update']['default'] = 0;
196  }
197 
198  return $fields;
199  }
200 
208  {
209  $fields = array();
210  foreach($this->getExportableFields() as $field)
211  {
212  $fields[] = $this->lng->txt($field);
213  }
214  return implode('<br />',$fields);
215  }
216 
223  private function read()
224  {
225  include_once './Services/User/classes/class.ilUserProfile.php';
226 
227  $profile = new ilUserProfile();
228  $profile->skipGroup('settings');
229 
230  foreach($profile->getStandardFields() as $key => $data)
231  {
232  if($this->getType() == 'crs')
233  {
234  if(!$data['course_export_hide'])
235  {
236  if(isset($data['course_export_fix_value']) and $data['course_export_fix_value'])
237  {
238  $this->possible_fields[$key] = $data['course_export_fix_value'];
239  }
240  else
241  {
242  $this->possible_fields[$key] = 0;
243  }
244  }
245  }
246  elseif($this->getType() == 'grp')
247  {
248  if(!$data['group_export_hide'])
249  {
250  if(isset($data['group_export_fix_value']) and $data['group_export_fix_value'])
251  {
252  $this->possible_fields[$key] = $data['group_export_fix_value'];
253  }
254  else
255  {
256  $this->possible_fields[$key] = 0;
257  }
258  }
259  }
260  }
261  $settings_all = $this->settings->getAll();
262 
263  $field_part_limit = 5;
264  switch($this->getType())
265  {
266  case 'crs':
267  $field_prefix = 'usr_settings_course_export_';
268  $field_part_limit = 5;
269  break;
270 
271  case 'grp':
272  $field_prefix = 'usr_settings_group_export_';
273  $field_part_limit = 5;
274  break;
275  }
276 
277  foreach($settings_all as $key => $value)
278  {
279  if(stristr($key,$field_prefix) and $value)
280  {
281  // added limit for mantis 11096
282  $field_parts = explode('_',$key,$field_part_limit);
283  $field = $field_parts[count($field_parts) - 1];
284  if(array_key_exists($field,$this->possible_fields))
285  {
286  $this->possible_fields[$field] = 1;
287  }
288  }
289  }
290  return true;
291  }
292 
296  public function sortExportFields()
297  {
298 
299  $start_order = array("lastname" => array(), "firstname" => array(), "username" => array());
300 
301  foreach($start_order as $key => $value)
302  {
303  if(isset($this->possible_fields[$key]))
304  {
305  $start_order[$key] = $this->possible_fields[$key];
306  unset($this->possible_fields[$key]);
307  }else
308  {
309  unset($start_order[$key]);
310  }
311  }
312 
313  if(count($start_order) > 0)
314  {
315  $this->possible_fields = array_merge($start_order, $this->possible_fields);
316  }
317  }
318 }
319 ?>
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.
sortExportFields()
sort Exports fields User for Name Presentation Guideline
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.
global $ilSetting
Definition: privfeed.php:40
__construct($a_type)
Private Singleton Constructor.
global $ilDB
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.