141 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			141 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| /**
 | |
|  * @package         Advanced Custom Fields
 | |
|  * @version         2.8.8 Pro
 | |
|  * 
 | |
|  * @author          Tassos Marinos <info@tassos.gr>
 | |
|  * @link            http://www.tassos.gr
 | |
|  * @copyright       Copyright © 2019 Tassos Marinos All Rights Reserved
 | |
|  * @license         GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
 | |
| */
 | |
| 
 | |
| defined('_JEXEC') or die;
 | |
| 
 | |
| if (!$value = $field->value)
 | |
| {
 | |
| 	return;
 | |
| }
 | |
| 
 | |
| require_once JPATH_SITE . '/plugins/fields/acfupload/fields/uploadhelper.php';
 | |
| 
 | |
| $limit_files = (int) $fieldParams->get('limit_files');
 | |
| 
 | |
| /**
 | |
|  * This handles backwards compatibility
 | |
|  */
 | |
| $files = is_string($value) ? json_decode($value, true) ?? [['value' => $value]] : $value;
 | |
| 
 | |
| // Handle single file
 | |
| if ($limit_files === 1 && is_array($files))
 | |
| {
 | |
| 	if (isset($files['value']))
 | |
| 	{
 | |
| 		$files = [$files];
 | |
| 	}
 | |
| 
 | |
| 	$files = [reset($files)];
 | |
| }
 | |
| 
 | |
| $layout = $fieldParams->get('layout', 'link');
 | |
| $buffer = [];
 | |
| $total_files = count($files);
 | |
| 
 | |
| $index = 1;
 | |
| foreach ($files as $value)
 | |
| {
 | |
| 	// Make sure we have a value
 | |
| 	if (!$value)
 | |
| 	{
 | |
| 		continue;
 | |
| 	}
 | |
| 
 | |
| 	$file = isset($value['value']) ? $value['value'] : $value;
 | |
| 	$title = isset($value['title']) && !empty($value['title']) ? $value['title'] : '';
 | |
| 	$description = isset($value['description']) && !empty($value['description']) ? html_entity_decode(urldecode($value['description'])) : '';
 | |
| 
 | |
| 	$file_url  = ACFUploadHelper::absURL($file);
 | |
| 
 | |
| 	switch ($layout)
 | |
| 	{
 | |
| 		// Image
 | |
| 		case 'img':
 | |
| 			$item = '<img src="' .  $file_url . '"/>';
 | |
| 			break;
 | |
| 
 | |
| 		// Custom Layout
 | |
| 		case 'custom':
 | |
| 			if (!$subject = $fieldParams->get('custom_layout'))
 | |
| 			{
 | |
| 				return;
 | |
| 			}
 | |
| 
 | |
| 			// Add the prefix "acf." to any "{file.*}" Smart Tags found
 | |
| 			$new_format = 'acf.file.';
 | |
| 			$subject = preg_replace('/{file\.([^}]*)}/', '{'.$new_format.'$1}', $subject);
 | |
| 
 | |
| 			$file_full_path = JPATH_SITE . '/' . $file;
 | |
| 			$exists = is_file($file_full_path);
 | |
| 
 | |
|             // Always use framework's pathinfo to fight issues with non latin characters.
 | |
|             $filePathInfo = NRFramework\File::pathinfo($file);
 | |
| 
 | |
| 			$st = new \NRFramework\SmartTags();
 | |
| 
 | |
| 			$file_tags = [
 | |
| 				'index' => $index,
 | |
| 				'total' => $total_files,
 | |
| 				'name' => $filePathInfo['basename'],
 | |
| 				'basename' => $filePathInfo['basename'],
 | |
| 				'filename' => $filePathInfo['filename'],
 | |
| 				'ext' => $filePathInfo['extension'],
 | |
| 				'extension' => $filePathInfo['extension'],
 | |
| 				'path' => $file,
 | |
| 				'url' => $file_url,
 | |
| 				'size' => $exists ? ACFUploadHelper::humanFilesize(filesize($file_full_path)) : 0,
 | |
| 				'title' => $title,
 | |
| 				'description' => nl2br($description)
 | |
| 			];
 | |
| 			$st->add($file_tags, 'acf.file.');
 | |
| 
 | |
| 			$item = $st->replace($subject);
 | |
| 			
 | |
| 			break;
 | |
| 
 | |
| 		// Link
 | |
| 		default:
 | |
| 			$item = '<a href="' . $file_url . '"';
 | |
| 
 | |
| 			if ($fieldParams->get('force_download', true))
 | |
| 			{
 | |
| 				$item .= ' download';
 | |
| 			}
 | |
| 
 | |
| 			$link_text = $fieldParams->get('link_text', $file);
 | |
| 
 | |
| 			$st = new \NRFramework\SmartTags();
 | |
| 
 | |
|             // Always use framework's pathinfo to fight issues with non latin characters.
 | |
|             $filePathInfo = NRFramework\File::pathinfo($file);
 | |
| 			
 | |
| 			$file_tags = [
 | |
| 				'index' => $index,
 | |
| 				'total' => $total_files,
 | |
| 				'basename' => $filePathInfo['basename'],
 | |
| 				'filename' => $filePathInfo['filename'],
 | |
| 				'extension' => $filePathInfo['extension'],
 | |
| 				'title' => $title,
 | |
| 				'description' => nl2br($description)
 | |
| 			];
 | |
| 			$st->add($file_tags, 'acf.file.');
 | |
| 
 | |
| 			$item .= '>' . $st->replace($link_text) . '</a>';
 | |
| 			break;
 | |
| 	}
 | |
| 
 | |
| 	$buffer[] = $layout === 'custom' ? $item : '<span class="acfup-item">' . $item . '</span>';
 | |
| 
 | |
| 	$index++;
 | |
| }
 | |
| 
 | |
| echo implode('', $buffer); |