extrafieldsinexport.inc.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. if (empty($keyforselect) || empty($keyforelement) || empty($keyforaliasextra))
  3. {
  4. //print $keyforselet.' - '.$keyforelement.' - '.$keyforaliasextra;
  5. dol_print_error('', 'include of file extrafieldsinexport.inc.php was done but var $keyforselect or $keyforelement or $keyforaliasextra was not set');
  6. exit;
  7. }
  8. // Add extra fields
  9. $sql="SELECT name, label, type, param, fieldcomputed, fielddefault FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = '".$keyforselect."' AND type != 'separate' AND entity IN (0, ".$conf->entity.')';
  10. //print $sql;
  11. $resql=$this->db->query($sql);
  12. if ($resql) // This can fail when class is used on old database (during migration for example)
  13. {
  14. while ($obj=$this->db->fetch_object($resql))
  15. {
  16. $fieldname=$keyforaliasextra.'.'.$obj->name;
  17. $fieldlabel=ucfirst($obj->label);
  18. $typeFilter="Text";
  19. $typefield=preg_replace('/\(.*$/', '', $obj->type); // double(24,8) -> double
  20. switch ($typefield) {
  21. case 'int':
  22. case 'integer':
  23. case 'double':
  24. case 'price':
  25. $typeFilter="Numeric";
  26. break;
  27. case 'date':
  28. case 'datetime':
  29. case 'timestamp':
  30. $typeFilter="Date";
  31. break;
  32. case 'boolean':
  33. $typeFilter="Boolean";
  34. break;
  35. case 'sellist':
  36. $tmp='';
  37. $tmpparam=unserialize($obj->param); // $tmp ay be array 'options' => array 'c_currencies:code_iso:code_iso' => null
  38. if ($tmpparam['options'] && is_array($tmpparam['options'])) {
  39. $tmpkeys=array_keys($tmpparam['options']);
  40. $tmp=array_shift($tmpkeys);
  41. }
  42. if (preg_match('/[a-z0-9_]+:[a-z0-9_]+:[a-z0-9_]+/', $tmp)) $typeFilter="List:".$tmp;
  43. break;
  44. }
  45. if ($obj->type!='separate')
  46. {
  47. // If not a computed field
  48. if (empty($obj->fieldcomputed))
  49. {
  50. $this->export_fields_array[$r][$fieldname]=$fieldlabel;
  51. $this->export_TypeFields_array[$r][$fieldname]=$typeFilter;
  52. $this->export_entities_array[$r][$fieldname]=$keyforelement;
  53. }
  54. // If this is a computed field
  55. else
  56. {
  57. $this->export_fields_array[$r][$fieldname]=$fieldlabel;
  58. $this->export_TypeFields_array[$r][$fieldname]=$typeFilter.'Compute';
  59. $this->export_special_array[$r][$fieldname]=$obj->fieldcomputed;
  60. $this->export_entities_array[$r][$fieldname]=$keyforelement;
  61. }
  62. }
  63. }
  64. }
  65. // End add axtra fields