PageRenderTime 43ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/OCSNG_UNIX_SERVER-2.0.5/ocsreports/plugins/main_sections/ms_export/ms_csv.php

#
PHP | 165 lines | 107 code | 11 blank | 47 comment | 26 complexity | 3dd1cac60409ea0985ddae223bb8623d MD5 | raw file
Possible License(s): GPL-2.0
  1. <?php
  2. //====================================================================================
  3. // OCS INVENTORY REPORTS
  4. // Copyleft Erwan GOALOU 2010 (erwan(at)ocsinventory-ng(pt)org)
  5. // Web: http://www.ocsinventory-ng.org
  6. //
  7. // This code is open source and may be copied and modified as long as the source
  8. // code is always made freely available.
  9. // Please refer to the General Public Licence http://www.gnu.org/ or Licence.txt
  10. //====================================================================================
  11. $values=look_config_default_values(array('EXPORT_SEP'));
  12. if (isset($values['tvalue']['EXPORT_SEP']) and $values['tvalue']['EXPORT_SEP'] != '')
  13. $separator=$values['tvalue']['EXPORT_SEP'];
  14. else
  15. $separator=';';
  16. $link=$_SESSION['OCS']["readServer"];
  17. $toBeWritten = "";
  18. //log directory
  19. if (isset($protectedGet['log']) and !preg_match("/([^A-Za-z0-9.])/",$protectedGet['log'])){
  20. $Directory=$_SESSION['OCS']['LOG_DIR']."/";
  21. }
  22. if (isset($Directory) and file_exists($Directory.$protectedGet['log'])){
  23. $tab = file($Directory.$protectedGet['log']);
  24. while(list($cle,$val) = each($tab)) {
  25. $toBeWritten .= $val."\r\n";
  26. }
  27. $filename=$protectedGet['log'];
  28. }
  29. //gestion par valeur en cache (LIMITE A 200)
  30. /*elseif (!isset($_SESSION['OCS']['DATA_CACHE'][$protectedGet['tablename']][199])
  31. and isset($_SESSION['OCS']['DATA_CACHE'][$protectedGet['tablename']])){
  32. $filename="cache.csv";
  33. //gestion des entetes
  34. if (is_array($_SESSION['OCS']['col_tab'][$protectedGet['tablename']]))
  35. foreach ($_SESSION['OCS']['col_tab'][$protectedGet['tablename']] as $name){
  36. if ($name != 'SUP' and $name != 'CHECK' and $name != 'NAME' and $name != $l->g(23)){
  37. if ($_SESSION['OCS']['list_fields'][$protectedGet['tablename']][$name]{1} == ".")
  38. $lbl=substr(strrchr($_SESSION['OCS']['list_fields'][$protectedGet['tablename']][$name], "."), 1);
  39. else
  40. $lbl=$_SESSION['OCS']['list_fields'][$protectedGet['tablename']][$name];
  41. $col[$lbl]=$name;
  42. $toBeWritten .=$name.";";
  43. }elseif($name == 'NAME' or $name == $l->g(23)){
  44. $col['name_of_machine']="name_of_machine";
  45. $toBeWritten .="machine".$separator;
  46. }
  47. }
  48. $i=0;
  49. while ($_SESSION['OCS']['DATA_CACHE'][$protectedGet['tablename']][$i]){
  50. $toBeWritten .="\r\n";
  51. foreach ($col as $lbl => $name){
  52. if ($lbl == "name_of_machine"){
  53. $lbl='name';
  54. }
  55. if ($_SESSION['OCS']['DATA_CACHE'][$protectedGet['tablename']][$i][$lbl])
  56. $toBeWritten .=$_SESSION['OCS']['DATA_CACHE'][$protectedGet['tablename']][$i][$lbl].$separator;
  57. }
  58. $i++;
  59. }
  60. }*/
  61. elseif (isset($_SESSION['OCS']['csv']['SQL'][$protectedGet['tablename']])){
  62. $toBeWritten="";
  63. //gestion des entetes
  64. foreach ($_SESSION['OCS']['col_tab'][$protectedGet['tablename']] as $name){
  65. if ($name != 'SUP' and $name != 'CHECK' and $name != 'NAME'){
  66. if ($_SESSION['OCS']['list_fields'][$protectedGet['tablename']][$name]{1} == ".")
  67. $lbl=substr(strrchr($_SESSION['OCS']['list_fields'][$protectedGet['tablename']][$name], "."), 1);
  68. else
  69. $lbl=$_SESSION['OCS']['list_fields'][$protectedGet['tablename']][$name];
  70. $col[$lbl]=$name;
  71. $toBeWritten .=$name.$separator;
  72. }elseif($name == 'NAME' or $name == $l->g(23)){
  73. $col['name_of_machine']="name_of_machine";
  74. $toBeWritten .=$l->g(23).$separator;
  75. }
  76. }
  77. //data fixe
  78. if (isset($_SESSION['OCS']['SQL_DATA_FIXE'][$protectedGet['tablename']])){
  79. $i=0;
  80. while($_SESSION['OCS']['SQL_DATA_FIXE'][$protectedGet['tablename']][$i]){
  81. $result=mysql_query($_SESSION['OCS']['SQL_DATA_FIXE'][$protectedGet['tablename']][$i], $link) or die(mysql_error($link));
  82. while( $cont = mysql_fetch_array($result,MYSQL_ASSOC) ) {
  83. //print_r($cont);
  84. foreach ($col as $field => $lbl){
  85. if (array_key_exists($lbl,$cont)){
  86. $data_fixe[$cont['HARDWARE_ID']][$field]=$cont[$lbl];
  87. }
  88. }
  89. }
  90. $i++;
  91. }
  92. }
  93. if ($_SESSION['OCS']['csv']['ARG'][$protectedGet['tablename']])
  94. $arg=$_SESSION['OCS']['csv']['ARG'][$protectedGet['tablename']];
  95. else
  96. $arg='';
  97. $result=mysql2_query_secure($_SESSION['OCS']['csv']['SQL'][$protectedGet['tablename']], $link,$arg);
  98. $i=0;
  99. require_once('require/function_admininfo.php');
  100. $inter=interprete_accountinfo($col,array());
  101. while( $cont = mysql_fetch_array($result,MYSQL_ASSOC) ) {
  102. foreach ($col as $field => $lbl){
  103. if ($lbl == "name_of_machine" and !isset($cont[$field])){
  104. $field='name';
  105. }
  106. if (isset($cont[$field])){
  107. if ($field == 'TAG' or substr($field,0,7) == 'fields_'){
  108. if (isset($inter['TAB_OPTIONS']['REPLACE_VALUE'][$lbl])){
  109. $data[$i][$lbl]=$inter['TAB_OPTIONS']['REPLACE_VALUE'][$lbl][$cont[$field]];
  110. }else
  111. $data[$i][$lbl]=$cont[$field];
  112. }else
  113. $data[$i][$lbl]=$cont[$field];
  114. }elseif (isset($data_fixe[$cont['ID']][$field])){
  115. $data[$i][$lbl]=$data_fixe[$cont['ID']][$field];
  116. }else{
  117. $data[$i][$lbl]="";
  118. }
  119. }
  120. $i++;
  121. }
  122. $i=0;
  123. while ($data[$i]){
  124. $toBeWritten .="\r\n";
  125. foreach ($data[$i] as $field_name=>$donnee){
  126. $toBeWritten .=$donnee.$separator;
  127. }
  128. $i++;
  129. }
  130. $filename="export.csv";
  131. }
  132. if ($toBeWritten != ""){
  133. // iexplorer problem
  134. if( ini_get("zlib.output-compression"))
  135. ini_set("zlib.output-compression","Off");
  136. header("Pragma: public");
  137. header("Expires: 0");
  138. header("Cache-control: must-revalidate, post-check=0, pre-check=0");
  139. header("Cache-control: private", false);
  140. header("Content-type: application/force-download");
  141. header("Content-Disposition: attachment; filename=\"".$filename."\"");
  142. header("Content-Transfer-Encoding: binary");
  143. header("Content-Length: ".strlen($toBeWritten));
  144. echo $toBeWritten,
  145. die();
  146. }else{
  147. $ban_head='no';
  148. require_once (HEADER_HTML);
  149. msg_error($l->g(920));
  150. require_once(FOOTER_HTML);
  151. die();
  152. }
  153. ?>