1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- <?php
- function _media_retrieve_xml($url, $display_errors = FALSE, $refresh = FALSE) {
- $xmls = &drupal_static(__FUNCTION__, array());
-
- if (!$refresh && isset($xmls[$url])) {
- return $xmls[$url];
- }
- elseif (!$refresh && $cache = cache_get('media:xml:' . $url, 'cache_media_xml')) {
- $xmls[$url] = $cache->data;
- return $xmls[$url];
- }
-
- libxml_use_internal_errors(TRUE);
-
- $xml = simplexml_load_file($url);
- if (!$xml) {
- foreach (libxml_get_errors() as $error) {
- $params = array('%url' => $url, '%error' => $error->message);
-
- if ($display_errors) {
- drupal_set_message(t('Error retrieving XML from %url: %error', $params), 'error');
- }
- watchdog('media', 'Error retrieving XML from %url: %error', $params, WATCHDOG_WARNING);
- }
-
- libxml_clear_errors();
-
-
- $xmls[$url] = FALSE;
- }
- else {
- $xmls[$url] = _media_unserialize_xml($xml);
- cache_set('media:xml:' . $url, $xmls[$url], 'cache_media_xml', media_variable_get('xml_cache_expire', 3600));
- }
- return $xmls[$url];
- }
- function _media_unserialize_xml($xml) {
- if ($xml instanceof SimpleXMLElement) {
- $xml = (array) $xml;
- }
- if (is_array($xml)) {
- foreach ($xml as $key => $item) {
- $xml[$key] = _media_unserialize_xml($item);
- }
- }
- return $xml;
- }
|