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

/library/UrlTube/Parse.php

https://bitbucket.org/baruffaldi/webapp-urltube
PHP | 255 lines | 200 code | 53 blank | 2 comment | 25 complexity | c9de89d339e4f016ef3fcc5529198d3c MD5 | raw file
Possible License(s): BSD-3-Clause, LGPL-2.0, MIT
  1. <?php
  2. class UrlTube_Parse
  3. {
  4. public $patterns = array( 'uri' => '^([a-zA-Z]+)\:\/\/([a-zA-Z0-9\-\_\.]+)\.([a-zA-Z]+)((\/.*)|)^',
  5. 'services' => '^([a-zA-Z]+)\:\/\/(.*)\.(.*)^',
  6. 'mimetype' => '^.*\/.*^' );
  7. public function setPattern( $type, $pattern )
  8. {
  9. $this->patterns[$type] = $pattern;
  10. }
  11. public function getDataByMimetype( $mimetype )
  12. {
  13. @preg_match( $this->patterns['mimetype'], $mimetype, $mime );
  14. if ( empty( $mime[1] ) )
  15. {
  16. $mime = explode( '/', $mimetype );
  17. return array( 1 => $mime[0], 2 => $mime[1] );
  18. }
  19. if ( ! empty( $mime[1] ) ) return $mime;
  20. else return FALSE;
  21. }
  22. public function getDataByURI( $uri )
  23. {
  24. @preg_match( $this->patterns['uri'], $uri, $host );
  25. if ( ! empty( $host[1] ) ) return $host;
  26. else return FALSE;
  27. }
  28. public function getServiceByURI( $url )
  29. {
  30. @preg_match( $this->patterns['uri'], $url, $return );
  31. if ( empty( $return[1] ) ) return FALSE;
  32. $proto = $return[1];
  33. $host = $return[2];
  34. $tld = $return[3];
  35. $domain = array_pop( explode( '.', $host ) );
  36. if ( stristr( $host, 'maps.' ) ) return 'maps';
  37. if ( $proto == 'rtsp' || $proto == 'ftp' ) return $proto;
  38. switch( $domain )
  39. {
  40. default:
  41. return 'web';
  42. break;
  43. case 'google':
  44. return 'google';
  45. break;
  46. case 'facebook':
  47. return 'facebook';
  48. break;
  49. case 'youtube':
  50. return 'youtube';
  51. break;
  52. case 'flickr':
  53. return 'flickr';
  54. break;
  55. }
  56. }
  57. public function getProtocolByURI( $uri )
  58. {
  59. @preg_match( $this->patterns['uri'], $uri, $host );
  60. if ( ! empty( $host[1] ) ) return $host[1];
  61. else return FALSE;
  62. }
  63. public function getCategoryName( $mimetype, $url = NULL )
  64. {
  65. global $_SITE;
  66. $mime = $_SITE['UrlTube']['Parser']->getDataByMimetype( $mimetype );
  67. switch( $mime[2] )
  68. {
  69. case 'x-flv':
  70. case 'x-shockwave-flash':
  71. case 'futuresplash':
  72. case 'flash':
  73. return 'flash';
  74. break;
  75. case 'xml':
  76. case 'xhtml':
  77. case 'html':
  78. case 'wml':
  79. if ( ! is_null( $url ) )
  80. return $_SITE['UrlTube']['Parser']->getServiceByURI( $url );
  81. else return 'web';
  82. break;
  83. case 'pdf':
  84. return $mime[2];
  85. break;
  86. case 'quicktime':
  87. return $mime[2];
  88. break;
  89. }
  90. switch( $mime[1] )
  91. {
  92. default:
  93. return 'web';
  94. break;
  95. case 'text':
  96. return $mime[1];
  97. break;
  98. case 'audio':
  99. return $mime[1];
  100. break;
  101. case 'video':
  102. return $mime[1];
  103. break;
  104. case 'image':
  105. return $mime[1];
  106. break;
  107. }
  108. }
  109. public function getImageByMimetype( $mimetype, $url = NULL )
  110. {
  111. return UrlTube_Parse::getCategoryName( $mimetype, $url ) . '.png';
  112. }
  113. public function getMimetypeByCategory( $category )
  114. {
  115. switch( $category )
  116. {
  117. default:
  118. return NULL;
  119. break;
  120. case 'ftp':
  121. case 'rtsp':
  122. return array( '*/*' );
  123. break;
  124. case 'flash':
  125. return array( '*/x-flv', '*/x-shockwave-flash', '*/futuresplash', '*/flash' );
  126. break;
  127. case 'web':
  128. return array( '*/xml', '*/xhtml', '*/html' );
  129. break;
  130. case 'pdf':
  131. return array( '*/pdf' );
  132. break;
  133. case 'quicktime':
  134. return array( 'video/quicktime' );
  135. break;
  136. case 'text':
  137. return array( 'text/plain' );
  138. break;
  139. case 'audio':
  140. return array( 'audio/*' );
  141. break;
  142. case 'video':
  143. return array( 'video/*' );
  144. break;
  145. case 'image':
  146. return array( 'image/*' );
  147. break;
  148. case 'facebook':
  149. return array( '*/xml', '*/xhtml', '*/html' );
  150. break;
  151. case 'flickr':
  152. return array( '*/xml', '*/xhtml', '*/html' );
  153. break;
  154. case 'google':
  155. return array( '*/xml', '*/xhtml', '*/html' );
  156. break;
  157. case 'maps':
  158. return array( '*/xml', '*/xhtml', '*/html' );
  159. break;
  160. }
  161. }
  162. public function cleanUrlResults( $url )
  163. {
  164. foreach( $url as $key => $value )
  165. {
  166. switch ( $key )
  167. {
  168. default:
  169. $url[$key] = ( substr( $key, strlen( $key ) - 4 ) == 'date' && $value != '0' )
  170. ? date( 'y.m.d H:i', $value ) : $value;
  171. if ( is_null( $value ) ) $url[$key] = __LANG_NOT_AVAILABLE__;
  172. break;
  173. case 'ip':
  174. $url[$key] = explode( '.', $url[$key] );
  175. $url[$key] = "{$url[$key][0]}.x.x.{$url[$key][3]}";
  176. break;
  177. case 'max_visits':
  178. $url[$key] = ( $value != 0 ) ? $value : __LANG_ADDURLTUBE_INFVISITS__;
  179. break;
  180. case 'visits_counter':
  181. $url[$key] = ( $value != 0 ) ? $value : __LANG_NO_ONE_F__;
  182. break;
  183. case 'title':
  184. $url[$key] = $value;
  185. //$url[$key] = ( ! empty( $value ) ) ? wordwrap( $value, 25, '<br />', true ) : __LANG_NO_TITLE__;
  186. break;
  187. case 'description':
  188. $url[$key] = $value;
  189. //$url[$key] = ( ! empty( $value ) ) ? wordwrap( $value, 40, '<br />', true ) : __LANG_NO_DESCRIPTION__;
  190. break;
  191. case 'image':
  192. $category = UrlTube_Parse::getCategoryName( $url['mimetype'], $url['url'] );
  193. if ( $category == 'web' ) $url[$key] = 'http://images.websnapr.com/?url=' . urlencode( $url['url'] ) . '&amp;size=s&amp;nocache=58';
  194. elseif ( file_exists( $_SERVER['DOCUMENT_ROOT'] . "public/images/thumbnails/".md5( $url['id_url'] ).".jpg" ) ) $url[$key] = "/public/images/thumbnails/".md5( $url['id_url'] ).".jpg";
  195. else $url[$key] = '/public/images/categories/' . UrlTube_Parse::getImageByMimetype( $url['mimetype'] );
  196. break;
  197. }
  198. }
  199. return $url;
  200. }
  201. }
  202. $_SITE['UrlTube']['Parser'] = new UrlTube_Parse();