<?php 
/** 
 * Implements FILEATTRIBUTE qtag. 
 * 
 * Renders an attribute of a file. 
 * 
 * @param Environment $env 
 *   The Environment. 
 * 
 * @param string $target 
 *   The qtag's target. 
 * 
 * @param array $attributes 
 *   The qtag's attributes. 
 * 
 * @return string 
 *   The rendered qtag. 
 */ 
function qtag_FILEATTRIBUTE($env, $target, $attributes) { 
  $node = empty($attributes['node']) ? NodeFactory::current($env) : NodeFactory::load($env, $attributes['node']); 
  $file = new File($env, $target, $node); 
  $string = NULL; 
 
  // Check which file attribute is requested, and provide it. 
  switch($attributes['name']) { 
 
    case 'name': 
      $string = $file->getName(); 
      break; 
 
    case 'path': 
      $string = $file->getFullPath(); 
      break; 
 
    case 'type': 
      $string = $file::getFileType($file->getExtension()); 
      break; 
 
    case 'size': 
      $string = $file->getFileSize(); 
      break; 
  } 
 
  return $string; 
} 
 
/** 
 * Implements FILE qtag. 
 * 
 * Render a file item. 
 * 
 * @param Environment $env 
 *   The Environment. 
 * 
 * @param string $target 
 *   The qtag's target. 
 * 
 * @param array $attributes 
 *   The qtag's attributes. 
 * 
 * @return string 
 *   The rendered qtag. 
 */ 
function qtag_FILE($env, $target, $attributes) { 
  $node = empty($attributes['node']) ? NodeFactory::current($env) : NodeFactory::load($env, $attributes['node']); 
 
  $file = new File($env, $target, $node, $attributes['title']); 
  // Return the rendered file, if exists. 
  if ($file->exists) { 
    return $file->render(); 
  } 
  else { 
    return NULL; 
  } 
} 
 
 
/** 
 * Implements PREVIEW qtag. 
 * 
 * Render a preview of a file. 
 * 
 * @param Environment $env 
 *   The Environment. 
 * 
 * @param string $target 
 *   The qtag's target. 
 * 
 * @param array $attributes 
 *   The qtag's attributes. 
 * 
 * @return string 
 *   The rendered qtag. 
 */ 
function qtag_FILE_PREVIEW($env, $target, $attributes) { 
  $node = empty($attributes['node']) ? NodeFactory::current($env) : NodeFactory::load($env, $attributes['node']); 
  if (isset($attributes['tmp_path'])) { 
    $target = $env->dir['tmp'] . '/files/' . $attributes['tmp_path'] . '/' . $target; 
    $node->setName(NODE_NEW); 
  } 
 
  $file = new File($env, $target, NODE_NEW); 
  $preview = ''; 
  switch($file->getType()) { 
    case 'image': 
      $attributes['150x150'] = TRUE; 
      $attributes['node'] = $node->getName(); 
      $preview = qtag_IMGTHUMB($env, $target, $attributes); 
      break; 
 
    default: 
      break; 
  } 
 
  return '<div class="file-preview-item file-' . $file->getType() . '">' . $preview . '</div>'; 
} 
 
/** 
 * Implements FILE_QTAG_SUGGESTION qtag. 
 * 
 * Provides a "suggested qtag" for rendering a file. 
 * 
 * @param Environment $env 
 *   The Environment. 
 * 
 * @param string $target 
 *   The qtag's target. 
 * 
 * @param array $attributes 
 *   The qtag's attributes. 
 * 
 * @return string 
 *   The rendered qtag. 
 */ 
function qtag_FILE_QTAG_SUGGESTION($env, $target, $attributes) { 
  $node = empty($attributes['node']) ? NodeFactory::current($env) : NodeFactory::load($env, $attributes['node']); 
  if (isset($attributes['tmp_path'])) { 
    $file = new File($env, $env->dir['tmp'] . '/files/' . $attributes['tmp_path'] . '/' . $target, NODE_NEW); 
  } 
  else { 
    $file = new File($env, $target, $node); 
  } 
 
  switch($file->getType()) { 
    case 'image': 
      $suggestion = '[IMG|showtag:' . $target . ']'; 
      break; 
 
    default: 
      $suggestion = '[FILE|showtag:' . $target . ']'; 
      break; 
  } 
 
  return $suggestion; 
} 
 
 
 |