public function prepareMediaExifData(array $media) { $media['exifData'] = @unserialize($media['media_exif_data_cache']); if (!is_array($media['exifData'])) { $media['exifData'] = array(); } if (isset($media['exifData']['Flash'])) { $media['exifData']['Flash']['value'] = new XenForo_Phrase('xengallery_exif_flash_' . $media['exifData']['Flash']['value']); } foreach ($media['exifData'] as $key => &$exifData) { $cleanKey = preg_replace('/[^a-zA-Z0-9_]+/', '', strtolower($key)); $exifData['title'] = new XenForo_Phrase('xengallery_exif_title_' . $cleanKey); if ($exifData['format']) { if (strstr($exifData['format'], 'xen:calc')) { try { $compiler = new XenForo_Template_Compiler(); $safeValue = $compiler->compileFunction('calc', array($exifData['value']), array()); $safeValue = eval("return ({$safeValue});"); $exifData['format'] = preg_replace('/{xen:calc(.*?)\'}/i', '{value}', $exifData['format']); $exifData['value'] = $safeValue; $exifData['value'] = str_replace('{value}', $exifData['value'], $exifData['format']); } catch (Exception $e) { } continue; } if (strstr($exifData['format'], 'xen:number')) { $exifData['isNumber'] = true; if (strstr($exifData['format'], 'size')) { $exifData['isSize'] = true; } continue; } if (is_array($exifData['value'])) { $exifData['value'] = @json_encode($exifData['value']); continue; } $exifData['value'] = str_replace('{value}', $exifData['value'], $exifData['format']); } } $media['exifDataFull'] = @json_decode($media['media_exif_data_cache_full'], true); if (!is_array($media['exifDataFull'])) { $media['exifDataFull'] = array(); } return $media; }