PageRenderTime 28ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/components/com_hwdmediashare/libraries/uber/ubr_finished_lib.php

https://gitlab.com/ppapadatis/Videolearn
PHP | 350 lines | 219 code | 61 blank | 70 comment | 42 complexity | a9fc2589bf1f1eea986bf88039c2120f MD5 | raw file
  1. <?php
  2. //******************************************************************************************************
  3. // ATTENTION: THIS FILE HEADER MUST REMAIN INTACT. DO NOT DELETE OR MODIFY THIS FILE HEADER.
  4. //
  5. // Name: ubr_finished_lib.php
  6. // Revision: 1.3
  7. // Date: 3/2/2008 11:23:03 AM
  8. // Link: http://uber-uploader.sourceforge.net
  9. // Initial Developer: Peter Schmandra
  10. // Description: Library for uu_finished.php
  11. //
  12. // Contributor: http://www.php.net/manual/en/function.xml-parse.php
  13. //
  14. // Licence:
  15. // The contents of this file are subject to the Mozilla Public
  16. // License Version 1.1 (the "License"); you may not use this file
  17. // except in compliance with the License. You may obtain a copy of
  18. // the License at http://www.mozilla.org/MPL/
  19. //
  20. // Software distributed under the License is distributed on an "AS
  21. // IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  22. // implied. See the License for the specific language governing
  23. // rights and limitations under the License.
  24. //
  25. //***************************************************************************************************************
  26. //error_reporting(E_ALL);
  27. /////////////////////////////////////////////////////////////////////////////
  28. // Get/Set/Store uploaded file slot name, file name, file size and file type
  29. /////////////////////////////////////////////////////////////////////////////
  30. class FileInfo{
  31. var $slot = '';
  32. var $name = '';
  33. var $size = 0;
  34. var $type = '';
  35. function getFileInfo($key){
  36. if(strcasecmp($key, 'slot') == 0){ return $this->slot; }
  37. elseif(strcasecmp($key, 'name') == 0){ return $this->name; }
  38. elseif(strcasecmp($key, 'size') == 0){ return $this->size; }
  39. elseif(strcasecmp($key, 'type') == 0){ return $this->type; }
  40. else{ print "Error: Invalid get member $key value on FileInfo object<br>\n"; }
  41. }
  42. function setFileInfo($key, $value){
  43. if(strcasecmp($key, 'slot') == 0){ $this->slot = $value; }
  44. elseif(strcasecmp($key, 'name') == 0){ $this->name = $value; }
  45. elseif(strcasecmp($key, 'size') == 0){ $this->size = $value; }
  46. elseif(strcasecmp($key, 'type') == 0){ $this->type = $value; }
  47. else{ print "Error: Invalid set member $key value on FileInfo object<br>\n"; }
  48. }
  49. }
  50. /////////////////////////////////////////////////////////////////////
  51. // XML Parser
  52. // Contributor: http://www.php.net/manual/en/function.xml-parse.php
  53. /////////////////////////////////////////////////////////////////////
  54. class XML_Parser{
  55. var $XML_Parser;
  56. var $error_msg = '';
  57. var $delete_xml_file = 1;
  58. var $in_error = 0;
  59. var $xml_file = '';
  60. var $raw_xml_data = '';
  61. var $xml_data = array();
  62. var $upload_id = '';
  63. function setXMLFileDelete($delete_xml_file){ $this->delete_xml_file = $delete_xml_file; }
  64. function setXMLFile($temp_dir, $upload_id){
  65. $this->xml_file = $temp_dir . $upload_id . ".redirect";
  66. $this->upload_id = $upload_id;
  67. }
  68. function getError(){ return $this->in_error; }
  69. function getErrorMsg(){ return $this->error_msg; }
  70. function getRawXMLData(){ return $this->raw_xml_data; }
  71. function getXMLData(){ return $this->xml_data; }
  72. function startHandler($parser, $name, $attribs){
  73. $_content = array('name' => $name);
  74. if(!empty($attribs)){ $_content['attrs'] = $attribs; }
  75. array_push($this->xml_data, $_content);
  76. }
  77. function dataHandler($parser, $data){
  78. if(count(trim($data))){
  79. $_data_idx = count($this->xml_data) - 1;
  80. if(!isset($this->xml_data[$_data_idx]['content'])){ $this->xml_data[$_data_idx]['content'] = ''; }
  81. $this->xml_data[$_data_idx]['content'] .= $data;
  82. }
  83. }
  84. function endHandler($parser, $name){
  85. if(count($this->xml_data) > 1){
  86. $_data = array_pop($this->xml_data);
  87. $_data_idx = count($this->xml_data) - 1;
  88. $this->xml_data[$_data_idx]['child'][] = $_data;
  89. }
  90. }
  91. function parseFeed(){
  92. if(is_file($this->xml_file) && is_readable($this->xml_file)){
  93. // open upload_id.redirect file
  94. $xfp = fopen($this->xml_file, "rb");
  95. if(is_resource($xfp)){
  96. $xml_post_data = null;
  97. // read upload_id.redirect file
  98. while($xml_input = fread($xfp, filesize($this->xml_file))){ $xml_post_data .= $xml_input; }
  99. fclose($xfp);
  100. // store the raw xml file
  101. $this->raw_xml_data = $xml_post_data;
  102. // format the xml data into 1 long string
  103. $xml_post_data = preg_replace('/\>(\n|\r|\r\n| |\t)*\</','><', $xml_post_data);
  104. // create the xml parser
  105. $this->XML_Parser = xml_parser_create('');
  106. // set xml parser options
  107. xml_set_object($this->XML_Parser, $this);
  108. xml_parser_set_option($this->XML_Parser, XML_OPTION_CASE_FOLDING, false);
  109. xml_set_element_handler($this->XML_Parser, "startHandler", "endHandler");
  110. xml_set_character_data_handler($this->XML_Parser, "dataHandler");
  111. // parse upload_id.redirect file
  112. if(!xml_parse($this->XML_Parser, $xml_post_data)){
  113. $this->in_error = true;
  114. $this->error_msg = sprintf("<font color='red'>XML ERROR</font>: %s at line %d", xml_error_string(xml_get_error_code($this->XML_Parser)), xml_get_current_line_number($this->XML_Parser));
  115. }
  116. xml_parser_free($this->XML_Parser);
  117. // delete upload_id.redirect file
  118. if($this->delete_xml_file){
  119. for($i = 0; $i < 3; $i++){
  120. if(@unlink($this->xml_file)){ break; }
  121. else{ sleep(1); }
  122. }
  123. }
  124. }
  125. else{
  126. $this->in_error = true;
  127. $this->error_msg = "ERROR: Failed to open file handle";
  128. }
  129. }
  130. else{
  131. $this->in_error = true;
  132. $this->error_msg = "ERROR: Failed to open redirect file " . $this->upload_id . ".redirect";
  133. }
  134. }
  135. }
  136. /////////////////////////////////////////
  137. // Parse config data out of the xml data
  138. /////////////////////////////////////////
  139. function getConfigData($_XML_DATA){
  140. $_config_data = array();
  141. //config data is assumed to be stored in $_XML_DATA[0]['child'][0]
  142. for($i = 0; $i < count($_XML_DATA[0]['child'][0]['child']); $i++){
  143. if(isset($_XML_DATA[0]['child'][0]['child'][$i]['name']) && isset($_XML_DATA[0]['child'][0]['child'][$i]['content'])){
  144. $key = $_XML_DATA[0]['child'][0]['child'][$i]['name'];
  145. $value = $_XML_DATA[0]['child'][0]['child'][$i]['content'];
  146. $_config_data[$key] = $value;
  147. }
  148. }
  149. return $_config_data;
  150. }
  151. /////////////////////////////////////////
  152. // Parse post data out of the xml data
  153. /////////////////////////////////////////
  154. function getpostData($_XML_DATA){
  155. $_post_data = array();
  156. //post data is assumed to be stored in $_XML_DATA[0]['child'][1]
  157. for($i = 0; $i < count($_XML_DATA[0]['child'][1]['child']); $i++){
  158. if(isset($_XML_DATA[0]['child'][1]['child'][$i]['name']) && isset($_XML_DATA[0]['child'][1]['child'][$i]['content'])){
  159. $key = $_XML_DATA[0]['child'][1]['child'][$i]['name'];
  160. $value = $_XML_DATA[0]['child'][1]['child'][$i]['content'];
  161. $_post_data[$key] = $value;
  162. }
  163. }
  164. return $_post_data;
  165. }
  166. /////////////////////////////////////////
  167. // Parse file data out of the xml data
  168. /////////////////////////////////////////
  169. function getFileData($_XML_DATA){
  170. $_file_data = array();
  171. //file data is assumed to be stored in $_XML_DATA[0]['child'][2]
  172. for($i = 0; $i < count($_XML_DATA[0]['child'][2]['child']); $i++){
  173. $file_info = new FileInfo;
  174. $file_info->setFileInfo($_XML_DATA[0]['child'][2]['child'][$i]['child'][0]['name'], $_XML_DATA[0]['child'][2]['child'][$i]['child'][0]['content']);
  175. $file_info->setFileInfo($_XML_DATA[0]['child'][2]['child'][$i]['child'][1]['name'], $_XML_DATA[0]['child'][2]['child'][$i]['child'][1]['content']);
  176. $file_info->setFileInfo($_XML_DATA[0]['child'][2]['child'][$i]['child'][2]['name'], $_XML_DATA[0]['child'][2]['child'][$i]['child'][2]['content']);
  177. $file_info->setFileInfo($_XML_DATA[0]['child'][2]['child'][$i]['child'][3]['name'], $_XML_DATA[0]['child'][2]['child'][$i]['child'][3]['content']);
  178. $_file_data[$i] = $file_info;
  179. }
  180. return $_file_data;
  181. }
  182. //////////////////////////////////////////////////
  183. // formatBytes($file_size) mixed file sizes
  184. // formatBytes($file_size, 0) KB file sizes
  185. // formatBytes($file_size, 1) MB file sizes etc
  186. //////////////////////////////////////////////////
  187. function formatBytes($bytes, $format=99){
  188. $byte_size = 1024;
  189. $byte_type = array(" KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB");
  190. $bytes /= $byte_size;
  191. $i = 0;
  192. if($format == 99 || $format > 7){
  193. while($bytes > $byte_size){
  194. $bytes /= $byte_size;
  195. $i++;
  196. }
  197. }
  198. else{
  199. while($i < $format){
  200. $bytes /= $byte_size;
  201. $i++;
  202. }
  203. }
  204. $bytes = sprintf("%1.2f", $bytes);
  205. $bytes .= $byte_type[$i];
  206. return $bytes;
  207. }
  208. //////////////////////////////////////////////////////////////////////
  209. // Send an email with the upload results.
  210. //////////////////////////////////////////////////////////////////////
  211. function emailUploadResults($_FILE_DATA, $_CONFIG_DATA, $_POST_DATA){
  212. $_FILE_DATA_EMAIL = getFileDataEmail($_FILE_DATA, $_CONFIG_DATA);
  213. $end_char = "\n";
  214. $headers = '';
  215. $message = '';
  216. if($_CONFIG_DATA['html_email_support']){
  217. $headers = 'Content-type: text/html; charset=utf-8; format=flowed' . "\r\n";
  218. $end_char = "<br>\n";
  219. }
  220. else{ $headers = 'Content-type: text/plain; charset=utf-8; format=flowed' . "\r\n"; }
  221. // add config data to email
  222. $headers = "From: " . $_CONFIG_DATA['from_email_address'] . "\r\n";
  223. $message = "Upload ID: ". $_CONFIG_DATA['upload_id'] . $end_char;
  224. $message .= "Start Upload: ". date("M j, Y, g:i:s", $_CONFIG_DATA['start_upload']) . $end_char;
  225. $message .= "End Upload: ". date("M j, Y, g:i:s", $_CONFIG_DATA['end_upload']) . $end_char;
  226. $message .= "Remote IP: " . $_CONFIG_DATA['remote_ip'] . $end_char;
  227. $message .= "Browser: " . $_CONFIG_DATA['user_agent'] . $end_char . $end_char;
  228. // add file upload info to email
  229. $message .= $_FILE_DATA_EMAIL;
  230. // add any post values to the email here. eg.
  231. // $message .= "The client ID is " . $_POST_DATA['client_id'] . $end_char;
  232. mail($_CONFIG_DATA['to_email_address'], $_CONFIG_DATA['email_subject'], $message, $headers);
  233. }
  234. ////////////////////////////////////////////////////////
  235. // Create a '<tr><td>' string based on file upload info
  236. ////////////////////////////////////////////////////////
  237. function getFileDataTable($_FILE_DATA, $_CONFIG_DATA){
  238. $file_list = '';
  239. $col = 0;
  240. $file_list = "<table cellpadding=\"1\" cellspacing=\"1\" width=\"800px\">\n";
  241. $file_list .= " <tr><td align=\"center\" bgcolor=\"bbbbbb\">&nbsp;&nbsp;<b>UPLOADED FILE NAME</b>&nbsp;&nbsp;</td><td align=\"center\" bgcolor=\"bbbbbb\">&nbsp;&nbsp;<b>UPLOADED FILE SIZE</b>&nbsp;&nbsp;</td></tr>\n";
  242. for($i = 0; $i < count($_FILE_DATA); $i++){
  243. $file_slot = $_FILE_DATA[$i]->getFileInfo('slot');
  244. $file_name = $_FILE_DATA[$i]->getFileInfo('name');
  245. $file_size = $_FILE_DATA[$i]->getFileInfo('size');
  246. $file_type = $_FILE_DATA[$i]->getFileInfo('type');
  247. $formatted_file_size = formatBytes($file_size);
  248. if($col%=2){ $bg_col = "cccccc"; }
  249. else{ $bg_col = "dddddd"; }
  250. if($file_size > 0){
  251. if($_CONFIG_DATA['link_to_upload'] == 1){
  252. $file_path = $_CONFIG_DATA['path_to_upload'] . $file_name;
  253. $file_list .= "<tr><td align=\"center\" bgcolor=\"$bg_col\"><a href=\"$file_path\" target=\"_blank\">$file_name</a></td><td align=\"center\" bgcolor=\"$bg_col\">$formatted_file_size</td></tr>\n";
  254. }
  255. else{ $file_list .= "<tr><td align=\"center\" bgcolor=\"$bg_col\">$file_name</td><td align=\"center\" bgcolor=\"$bg_col\">$formatted_file_size</td></tr>\n"; }
  256. }
  257. else{ $file_list .= "<tr><td align=\"center\" bgcolor=\"$bg_col\">&nbsp;$file_name&nbsp;</td><td align=\"center\" bgcolor=\"$bg_col\"><font color=\"red\">Failed To Upload</font></td></tr>\n"; }
  258. $col++;
  259. }
  260. $file_list .= "</table>\n";
  261. return $file_list;
  262. }
  263. ///////////////////////////////////////////////////////
  264. // Create an email string based on file upload data
  265. ///////////////////////////////////////////////////////
  266. function getFileDataEmail($_FILE_DATA, $_CONFIG_DATA){
  267. $email_file_list = '';
  268. $end_char = "\n";
  269. if($_CONFIG_DATA['html_email_support']){ $end_char = "<br>\n"; }
  270. for($i = 0; $i < count($_FILE_DATA); $i++){
  271. $file_slot = $_FILE_DATA[$i]->getFileInfo('slot');
  272. $file_name = $_FILE_DATA[$i]->getFileInfo('name');
  273. $file_size = $_FILE_DATA[$i]->getFileInfo('size');
  274. $file_type = $_FILE_DATA[$i]->getFileInfo('type');
  275. $formatted_file_size = formatBytes($file_size);
  276. if($file_size > 0){
  277. if($_CONFIG_DATA['link_to_upload_in_email']){ $email_file_list .= "File Name: " . $_CONFIG_DATA['path_to_upload'] . $file_name . " File Size: " . $formatted_file_size . $end_char; }
  278. else{
  279. if($_CONFIG_DATA['unique_upload_dir']){
  280. $email_file_list .= 'File Name: ' . $_CONFIG_DATA['unique_dir'] . '/' . $file_name . " File Size: " . $formatted_file_size . $end_char;
  281. }
  282. else{ $email_file_list .= 'File Name: ' . $file_name . " File Size: " . $formatted_file_size . $end_char; }
  283. }
  284. }
  285. else{ $email_file_list .= 'File Name: ' . $file_name . " File Size: Failed To Upload !" . $end_char; }
  286. }
  287. return $email_file_list;
  288. }
  289. ?>