<?php
// (c) Copyright by authors of the Tiki Wiki CMS Groupware Project
//
// All Rights Reserved. See copyright.txt for details and a complete list of authors.
// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details.
// $Id: wikiplugin_files.php 67203 2018-08-15 07:47:58Z kroky6 $

function wikiplugin_files_info()
{
	global $prefs;
	return [
		'name' => tra('Files'),
		'documentation' => 'PluginFiles',
		'description' => tra('List files by ID, gallery or category, or show a slideshow of image files.'),
		'prefs' => [ 'feature_file_galleries', 'wikiplugin_files' ],
		'body' => tr('Title for the file listing, or the link text when %0', '<code>slideshow="y"</code>'),
		'iconname' => 'copy',
		'introduced' => 3,
		'tags' => [ 'basic' ],
		'params' => [
			'galleryId' => [
				'required' => false,
				'name' => tra('File Galleries IDs'),
				'description' => tra('To list only files contained in these file galleries (multiple IDs separated by
					colon)') . ($prefs['feature_use_fgal_for_user_files'] === 'y' ? '.<br> ' . tr('Or enter a username
					for user files (hint: enter %0 for current logged-in user).', '<code>{{user}}</code>')
					: ''),
				'since' => '3.0',
				'default' => null,
				'separator' => ':',
				'profile_reference' => 'file_gallery',
			],
			'categId' => [
				'required' => false,
				'name' => tra('Category ID'),
				'description' => tra('To restrict files listed to those belonging to one or more categories. Enter a
					single category or ID or list of them separated by colon'),
				'since' => '3.0',
				'default' => null,
				'filter' => 'text',
				'accepted' => tra('Valid category IDs separated by colons'),
				'advanced' => true,
				'profile_reference' => 'category',
			],
			'fileId' => [
				'required' => false,
				'name' => tra('File ID'),
				'description' => tra('To list only specified files, enter their file IDs separated by colon. If File
					IDs are specified here then the Gallery ID field above should be empty.'),
				'since' => '5.0',
				'type' => 'fileId',
				'area' => 'fgal_picker_id',
				'accepted' => tra('Valid file IDs separated by colons'),
				'default' => null,
				'filter' => 'text',
				'separator' => ':',
				'profile_reference' => 'file',
			],
			'sort' => [
				'required' => false,
				'name' => tra('Sort order'),
				'description' => tr('Order ascending (_asc), descending (_desc) or random based on any field in the
					file gallery table. Default is %0', '<code>name_asc</code>'),
				'since' => '3.0',
				'default' => 'name_asc',
				'filter' => 'text',
				'options' => [
					['text' => tra(''), 'value' => ''],
					['text' => tra('Name Ascending'), 'value' => 'name_asc'],
					['text' => tra('Name Descending'), 'value' => 'name_desc'],
					['text' => tra('Created Ascending'), 'value' => 'created_asc'],
					['text' => tra('Created Descending'), 'value' => 'created_desc'],
					['text' => tra('Last modified Ascending'), 'value' => 'lastModif_asc'],
					['text' => tra('Last modified Descending'), 'value' => 'lastModif_desc'],
					['text' => tra('File Name Ascending'), 'value' => 'filename_asc'],
					['text' => tra('File Name Descending'), 'value' => 'filename_desc'],
					['text' => tra('File Size Ascending'), 'value' => 'filesize_asc'],
					['text' => tra('File Size Descending'), 'value' => 'filesize_desc'],
					['text' => tra('File Type Ascending'), 'value' => 'filetype_asc'],
					['text' => tra('File Type Descending'), 'value' => 'filetype_desc'],
					['text' => tra('Last Download Ascending'), 'value' => 'lastDownload_asc'],
					['text' => tra('Last Download Descending'), 'value' => 'lastDownload_desc'],
					['text' => tra('Random'), 'value' => 'random'],
				],
			],
			'showaction' => [
				'required' => false,
				'name' => tra('Show Action'),
				'description' => tra('Show a column with icons for the various actions the user can take with each file
					(shown by default)'),
				'since' => '3.0',
				'filter' => 'alpha',
				'default' => 'n',
				'advanced' => true,
				'options' => [
					['text' => '', 'value' => ''],
					['text' => tra('Yes'), 'value' => 'y'],
					['text' => tra('No'), 'value' => 'n']
				]
			],
			'showfind' => [
				'required' => false,
				'name' => tra('Show Find'),
				'description' => tra('Show a search box above the list (not shown by default)'),
				'since' => '3.0',
				'filter' => 'alpha',
				'default' => 'n',
				'advanced' => true,
				'options' => [
					['text' => '', 'value' => ''],
					['text' => tra('Yes'), 'value' => 'y'],
					['text' => tra('No'), 'value' => 'n']
				]
			],
			'showfindisrecursive' => [
				'required' => false,
				'name' => tra('Show Find is recursive'),
				'description' => tra('The search box digs recursively in sub-galleries (by default)'),
				'filter' => 'alpha',
				'default' => 'y',
				'advanced' => true,
				'options' => [
					['text' => '', 'value' => ''],
					['text' => tra('Yes'), 'value' => 'y'],
					['text' => tra('No'), 'value' => 'n']
				],
				'parentparam' => ['name' => 'showfind', 'value' => 'y'],
			],
			'showtitle' => [
				'required' => false,
				'name' => tra('Show Title'),
				'description' => tra('Show the title of the file gallery (shown by default). Also shown on slide show
					pop up window if a single galleryId is used.'),
				'filter' => 'alpha',
				'default' => 'y',
				'since' => '5.0',
				'options' => [
					['text' => '', 'value' => ''],
					['text' => tra('Yes'), 'value' => 'y'],
					['text' => tra('No'), 'value' => 'n']
				]
			],
			'showid' => [
				'required' => false,
				'name' => tra('Show ID'),
				'description' => tra('Show the ID number of each file (shown by default)'),
				'since' => '3.0',
				'default' => 'y',
				'advanced' => true,
				'options' => [
					['text' => '', 'value' => ''],
					['text' => tra('Yes'), 'value' => 'y'],
					['text' => tra('No'), 'value' => 'n']
				]
			],
			'showicon' => [
				'required' => false,
				'name' => tra('Show Icon'),
				'description' => tra('Show the file-type icon for each file'),
				'since' => '3.0',
				'filter' => 'alpha',
				'default' => 'n',
				'options' => [
					['text' => '', 'value' => ''],
					['text' => tra('Yes'), 'value' => 'y'],
					['text' => tra('No'), 'value' => 'n']
				]
			],
			'showname' => [
				'required' => false,
				'name' => tra('Show Name'),
				'description' => tr('Show the name given to the file upon upload into the file gallery (shown by
					default). Set to Yes (%0) to show as a caption in a slide show.', '<code>y</code>'),
				'since' => '3.0',
				'default' => 'y',
				'filter' => 'alpha',
				'options' => [
					['text' => '', 'value' => ''],
					['text' => tra('Yes'), 'value' => 'y'],
					['text' => tra('No'), 'value' => 'n']
				]
			],
			'showfilename' => [
				'required' => false,
				'name' => tra('Show Filename'),
				'description' => tr('Show each file\'s filename (shown by default except in slide show). Set to Yes
					(%0) to show as a caption in a slide show.', '<code>y</code>'),
				'since' => '3.0',
				'filter' => 'alpha',
				'default' => 'y',
				'options' => [
					['text' => '', 'value' => ''],
					['text' => tra('Yes'), 'value' => 'y'],
					['text' => tra('No'), 'value' => 'n']
				]
			],
			'showsize' => [
				'required' => false,
				'name' => tra('Show Size'),
				'description' => tra('Show the size of each file in kilobytes (shown by default except in slide show)'),
				'since' => '3.0',
				'default' => 'y',
				'filter' => 'alpha',
				'options' => [
					['text' => '', 'value' => ''],
					['text' => tra('Yes'), 'value' => 'y'],
					['text' => tra('No'), 'value' => 'n']
				]
			],
			'showdescription' => [
				'required' => false,
				'name' => tra('Show Description'),
				'description' => tr('Show the description of the file given upon upload into the file gallery (shown
					by default except in slide show). Set to Yes (%0) to show as a caption in a slide show.', '<code>y</code>'),
				'since' => '3.0',
				'filter' => 'alpha',
				'default' => 'y',
				'options' => [
					['text' => '', 'value' => ''],
					['text' => tra('Yes'), 'value' => 'y'],
					['text' => tra('No'), 'value' => 'n']
				]
			],
			'showcreated' => [
				'required' => false,
				'name' => tra('Show Creation Date'),
				'description' => tra('Show the date each file was created (not shown by default)'),
				'since' => '3.0',
				'filter' => 'alpha',
				'default' => 'n',
				'advanced' => true,
				'options' => [
					['text' => '', 'value' => ''],
					['text' => tra('Yes'), 'value' => 'y'],
					['text' => tra('No'), 'value' => 'n']
				]
			],
			'showmodified' => [
				'required' => false,
				'name' => tra('Show Last Modification Date'),
				'description' => tra('Show the date each file was last modified (shown by default)'),
				'since' => '3.0',
				'default' => 'y',
				'filter' => 'alpha',
				'options' => [
					['text' => '', 'value' => ''],
					['text' => tra('Yes'), 'value' => 'y'],
					['text' => tra('No'), 'value' => 'n']
				]
			],
			'showmodtimedate' => [
				'required' => false,
				'name' => tra('Show Last Modification Time as well as Date'),
				'description' => tra('if showmodified is set to y then this will show both the date and time that each file was last modified (not shown by default)'),
				'since' => '16.0',
				'default' => 'n',
				'filter' => 'alpha',
				'options' => [
					['text' => '', 'value' => ''],
					['text' => tra('Yes'), 'value' => 'y'],
					['text' => tra('No'), 'value' => 'n']
				]
			],
			'showhits' => [
				'required' => false,
				'name' => tra('Show Hits'),
				'description' => tra('Show the number of hits each file has received (not shown by default)'),
				'since' => '3.0',
				'filter' => 'alpha',
				'default' => 'n',
				'advanced' => true,
				'options' => [
					['text' => '', 'value' => ''],
					['text' => tra('Yes'), 'value' => 'y'],
					['text' => tra('No'), 'value' => 'n']
				]
			],
			'showlockedby' => [
				'required' => false,
				'name' => tra('Show Locked By'),
				'description' => tra('For locked files, show the username of the user who locked it (not shown by default)'),
				'since' => '3.0',
				'filter' => 'alpha',
				'default' => 'n',
				'advanced' => true,
				'options' => [
					['text' => '', 'value' => ''],
					['text' => tra('Yes'), 'value' => 'y'],
					['text' => tra('No'), 'value' => 'n']
				]
			],
			'showauthor' => [
				'required' => false,
				'name' => tra('Show author'),
				'description' => tra('Show the username of the user who is the author of the file (not shown by default)'),
				'since' => '3.0',
				'filter' => 'alpha',
				'default' => 'n',
				'advanced' => true,
				'options' => [
					['text' => '', 'value' => ''],
					['text' => tra('Yes'), 'value' => 'y'],
					['text' => tra('No'), 'value' => 'n']
				]
			],
			'showcreator' => [
				'required' => false,
				'name' => tra('Show Creator'),
				'description' => tra('Show the username of the user who is the creator of the file (not shown by default)'),
				'since' => '3.0',
				'default' => 'n',
				'advanced' => true,
				'options' => [
					['text' => '', 'value' => ''],
					['text' => tra('Yes'), 'value' => 'y'],
					['text' => tra('No'), 'value' => 'n']
				]
			],
			'showgallery' => [
				'required' => false,
				'name' => tra('Show Parent Gallery Name'),
				'description' => tra('Show the name of the parent gallery'),
				'since' => '3.0',
				'filter' => 'alpha',
				'default' => 'n',
				'options' => [
					['text' => '', 'value' => ''],
					['text' => tra('Yes'), 'value' => 'y'],
					['text' => tra('No'), 'value' => 'n']
				]
			],
			'showfiles' => [
				'required' => false,
				'name' => tra('Show File Count'),
				'description' => tra('For galleries included in the list (where the file gallery includes other
					galleries), show the number of files in each of those galleries (not shown by default)'),
				'since' => '3.0',
				'filter' => 'alpha',
				'default' => 'n',
				'advanced' => true,
				'options' => [
					['text' => '', 'value' => ''],
					['text' => tra('Yes'), 'value' => 'y'],
					['text' => tra('No'), 'value' => 'n']
				]
			],
			'showsource' => [
				'required' => false,
				'name' => tra('Show Source'),
				'description' => tra('Show the source (shown by default).'),
				'filter' => 'alpha',
				'default' => 'n',
				'advanced' => true,
				'since' => '10.0',
				'options' => [
					['text' => '', 'value' => ''],
					['text' => tra('Yes'), 'value' => 'y'],
					['text' => tra('No'), 'value' => 'n']
				]
			],
			'slideshow' => [
				'required' => false,
				'name' => tra('Show Slideshow'),
				'description' => tra('Show a link that produces a popup slideshow when clicked (not set by default)'),
				'since' => '3.0',
				'filter' => 'alpha',
				'default' => 'n',
				'advanced' => true,
				'options' => [
					['text' => '', 'value' => ''],
					['text' => tra('Yes'), 'value' => 'y'],
					['text' => tra('No'), 'value' => 'n']
				]
			],
			'slidewidth' => [
				'required' => false,
				'name' => tra('Slideshow Width'),
				'description' => tra('Set width of slideshow popup.'),
				'filter' => 'digits',
				'default' => 600,
				'since' => '9.0',
				'advanced' => true,
				'parentparam' => ['name' => 'slideshow', 'value' => 'y'],
			],
			'slideheight' => [
				'required' => false,
				'name' => tra('Slideshow Height'),
				'description' => tra('Set height of slideshow popup.'),
				'filter' => 'digits',
				'default' => 500,
				'since' => '9.0',
				'advanced' => true,
				'parentparam' => ['name' => 'slideshow', 'value' => 'y'],
			],
			'showcomment' => [
				'required' => false,
				'name' => tra('Show Comments'),
				'description' => tra('Show comments for each file (not shown by default)'),
				'since' => '5.0',
				'filter' => 'alpha',
				'default' => 'n',
				'options' => [
					['text' => '', 'value' => ''],
					['text' => tra('Yes'), 'value' => 'y'],
					['text' => tra('No'), 'value' => 'n']
				],
				'advanced' => true,
			],
			'showlasteditor' => [
				'required' => false,
				'name' => tra('Show Last Editor'),
				'description' => tra('Show the username of the user who last modified the file (shown by default)'),
				'since' => '5.0',
				'default' => 'y',
				'filter' => 'alpha',
				'options' => [
					['text' => '', 'value' => ''],
					['text' => tra('Yes'), 'value' => 'y'],
					['text' => tra('No'), 'value' => 'n']
				]
			],
			'showthumb' => [
				'required' => false,
				'name' => tra('Show image thumbnail'),
				'description' => tra('Show Image thumb'),
				'since' => '8.0',
				'default' => 'n',
				'filter' => 'alpha',
				'options' => [
					['text' => '', 'value' => ''],
					['text' => tra('Yes'), 'value' => 'y'],
					['text' => tra('No'), 'value' => 'n']
				]
			],
			'creator' => [
				'required' => false,
				'name' => tra('Creator'),
				'description' => tra('Show only files created by this user'),
				'since' => '5.0',
				'default' => '',
				'advanced' => true,
			],
			'showupload' => [
				'required' => false,
				'name' => tra('Show Upload'),
				'description' => tra('Show a simple form to upload files to the gallery (not shown by default)'),
				'since' => '6.0',
				'filter' => 'alpha',
				'default' => 'n',
				'advanced' => true,
				'options' => [
					['text' => '', 'value' => ''],
					['text' => tra('Yes'), 'value' => 'y'],
					['text' => tra('No'), 'value' => 'n']
				]
			],
			'max' => [
				'required' => false,
				'name' => tra('Max'),
				'description' => tra('Number of rows (default: -1 = all)'),
				'since' => '7.1',
				'default' => -1,
				'filter' => 'int',
				'advanced' => true,
			],
			'recursive' => [
				'required' => false,
				'name' => tra('Recursive'),
				'description' => tra('Recursive'),
				'since' => '8.0',
				'filter' => 'alpha',
				'default' => 'y',
				'options' => [
					['text' => '', 'value' => ''],
					['text' => tra('Yes'), 'value' => 'y'],
					['text' => tra('No'), 'value' => 'n']
				]
			],
			'withsubgals' => [
				'required' => false,
				'name' => tra('With subgalleries'),
				'description' => tra('With subgalleries'),
				'since' => '8.0',
				'filter' => 'alpha',
				'default' => 'y',
				'advanced' => true,
				'options' => [
					['text' => '', 'value' => ''],
					['text' => tra('Yes'), 'value' => 'y'],
					['text' => tra('No'), 'value' => 'n']
				]
			],	 	]
	 ];
}
function wikiplugin_files($data, $params)
{
	global $prefs, $tiki_p_admin, $tiki_p_admin_files_galleries, $user;
	if ($prefs['feature_file_galleries'] != 'y') {
		return('');
	}
	$filegallib = TikiLib::lib('filegal');
	$tikilib = TikiLib::lib('tiki');
	$smarty = TikiLib::lib('smarty');

	// set defaults for all params
	$plugininfo = wikiplugin_files_info();
	$default = [];
	foreach ($plugininfo['params'] as $key => $param) {
		$default["$key"] = $param['default'];
	}
	$params = array_merge($default, $params);
	$filter = '';
	extract($params, EXTR_SKIP);

	if ($prefs['feature_categories'] != 'y') {
		if (isset($categId)) {
			unset($categId);
		}
	} else {
		$categlib = TikiLib::lib('categ');
	}

	$files = [];
	if (isset($categId) && strstr($categId, ':')) {
		$categId = explode(':', $categId);
	}
	static $iplugin = 0;
	++$iplugin;
	if (isset($_REQUEST["wp_files_sort_mode$iplugin"])) {
		$sort = $_REQUEST["wp_files_sort_mode$iplugin"];
	}
	if (empty($showgallery)) {
		$show_parentName = empty($galleryId) ? 'y' : 'n';
	} else {
		$show_parentName = $showgallery;
	}
	$smarty->assign('show_parentName', $show_parentName);
	$smarty->assign('show_thumb', $showthumb);

	$filter = empty($creator) ? '' : ['creator' => $creator];
	if (! isset($sort)) {
		$sort = 'name_asc';
	}
	if (isset($galleryId)) {
		$galId = $galleryId[0];
		if ($prefs['feature_use_fgal_for_user_files'] === 'y' && ! is_numeric($galId)) {	// if not number could be a userfiles gallery
			$galId = $filegallib->get_user_file_gallery($galId);
			$galleryId = [$galId];
		}
		$gal_info = $filegallib->get_file_gallery($galId);
		$gal_info['name'] = $filegallib->get_user_gallery_name($gal_info, $user);

		if ($tiki_p_admin != 'y' && $tiki_p_admin_files_galleries != 'y' && $gal_info['user'] != $user) {
			if ($showupload == 'y' && $tikilib->user_has_perm_on_object($user, $galId, 'file gallery', 'tiki_p_upload_files')) {
				$params['showupload'] = 'y';
			}
		} else {
			if ($showupload == 'y') {
				$params['showupload'] = 'y';
			}
		}
		if (! empty($slideshow) && $slideshow == 'y') {
			if ($prefs['javascript_enabled'] != 'y') {
				return;
			}
			if (empty($data)) {
				$data = tra('Slideshow');
			}
			// set caption field indicator for images in slide show
			if (isset($showdescription) && $showdescription == 'y') {
				$caption = 'd';
			} elseif (isset($showname) && $showname == 'y') {
				$caption = 'n';
			} elseif (isset($showfilename) && $showfilename == 'y') {
				$caption = 'f';
			} else {
				$caption = false;
			}
			// set title indicator for slideshow popup window
			// only shows a title if a single galleryId is used
			$windowtitle = "&amp;windowtitle=";
			$windowtitle .= $showtitle == 'n' || empty($galleryId) || count($galleryId) > 1 ? 'none' : urlencode($gal_info['name']);

			$creatorparam = empty($creator) ? '' : "&amp;find_creator=" . urlencode($creator);
			return "~np~<a onclick=\"javascript:window.open('tiki-list_file_gallery.php?galleryId=$galleryId[0]&amp;sort_mode=" . $sort . "&amp;caption=" . $caption . $creatorparam . $windowtitle . "&amp;slideshow','','menubar=no,width=" . $slidewidth . ",height=" . $slideheight . ",resizable=yes'); return false\" href=\"#\">" . tra($data) . '</a>~/np~';
		}
		$find = isset($_REQUEST['find']) ? $_REQUEST['find'] : '';
		// If we have set recursive == y, then always look recursively
		// Otherwise, we still want to search recursively when showfindisrecursive == y
		if ($recursive == 'y') {
			$look_recursively = true;
		} elseif ($showfindisrecursive == 'y' && ! empty($find)) {
			$look_recursively = true;
		} else {
			$look_recursively = false;
		}
		$fs = $filegallib->get_files(0, $max, $sort, $find, $galleryId, false, $withsubgals == 'y', false, true, false, $show_parentName == 'y', true, $look_recursively, '', false, false, false, $filter);
		if (isset($categId)) {
			$objects = $categlib->list_category_objects($categId, 0, -1, 'itemId_asc', 'file');
			$objects_in_categs = [];
			foreach ($objects['data'] as $o) {
				$objects_in_categs[] = $o['itemId'];
			}
		}
		for ($i = 0, $count_fs_data = count($fs['data']); $i < $count_fs_data; ++$i) {
			if (isset($categId)) { // filter the files
				if (! in_array($fs['data'][$i]['fileId'], $objects_in_categs)) {
					continue;
				}
			}
			$fs['data'][$i]['p_download_files'] = $fs['data'][$i]['perms']['tiki_p_download_files'];
			$fs['data'][$i]['p_view_file_gallery'] = $fs['data'][$i]['perms']['tiki_p_view_file_gallery'];
			$fs['data'][$i]['p_admin_file_galleries'] = $fs['data'][$i]['perms']['tiki_p_admin_file_galleries'];
			$fs['data'][$i]['p_edit_gallery_file'] = $fs['data'][$i]['perms']['tiki_p_edit_gallery_file'];
			$fs['data'][$i]['galleryType'] = $gal_info['type'];
			$fs['data'][$i]['lockable'] = $gal_info['lockable'];
			$files[] = $fs['data'][$i];
		}
	} elseif (isset($categId)) {
		// galls of this category
		$objects = $categlib->list_category_objects($categId, 0, -1, 'itemId_asc', 'file gallery');
		// get the files of the gallery
		foreach ($objects['data'] as $og) {
			$gal_info = $filegallib->get_file_gallery($og['itemId']);
			$fs = $filegallib->get_files(0, $max, $sort, '', $og['itemId'], false, $withsubgals == 'y', false, true, false, $show_parentName == 'y', true, $recursive, '', false, false, false, $filter);
			if ($fs['cant']) {
				for ($i = 0, $count_fs_data = count($fs['data']); $i < $count_fs_data; ++$i) {
					$fs['data'][$i]['gallery'] = $gal_info['name'];
					$fs['data'][$i]['galleryId'] = $gal_info['galleryId'];
					$fs['data'][$i]['p_download_files'] = $fs['data'][$i]['perms']['tiki_p_download_files'];
					$fs['data'][$i]['p_view_file_gallery'] = $fs['data'][$i]['perms']['tiki_p_view_file_gallery'];
					$fs['data'][$i]['p_admin_file_galleries'] = $fs['data'][$i]['perms']['tiki_p_admin_file_galleries'];
					$fs['data'][$i]['galleryType'] = $gal_info['type'];
					$fs['data'][$i]['lockable'] = $gal_info['lockable'];
					$fs['data'][$i]['p_edit_gallery_file'] = $fs['data'][$i]['perms']['tiki_p_edit_gallery_file'];
				}
				$files = array_merge($files, $fs['data']);
			}
		}
		// files from this categ
		$objects = $categlib->list_category_objects($categId, 0, -1, 'itemId_asc', 'file');
		foreach ($objects['data'] as $of) {
			if ($info = wikiplugin_files_check_perm_file($of['itemId'])) {
				$files[] = $info;
			}
		}
		$gal_info = $filegallib->default_file_gallery();
	} elseif (isset($fileId)) {
		foreach ($fileId as $id) {
			if ($info = wikiplugin_files_check_perm_file($id)) {
				$files[] = $info;
			}
		}
		$gal_info = $filegallib->default_file_gallery();
	}
	$smarty->assign_by_ref('files', $files);
	if (isset($data)) {
		$smarty->assign_by_ref('data', $data);
	} else {
		$smarty->assign('data', '');
	}
	include_once('fgal_listing_conf.php');
	$gal_info['show_checked' ] = 'n'; // the multiple action will not work
	if (! empty($showid)) {
		$gal_info['show_id'] = $showid;
	}
	if (! empty($showicon)) {
		$gal_info['show_icon'] = $showicon;
	}
	if (! empty($showsize)) {
		$gal_info['show_size'] = $showsize;
	}
	if (! empty($showdescription)) {
		$gal_info['show_description'] = $showdescription;
	}
	if (! empty($showcreated)) {
		$gal_info['show_created'] = $showcreated;
	}
	if (! empty($showcreator)) {
		$gal_info['show_creator'] = $showcreator;
	}
	if (! empty($showauthor)) {
		$gal_info['show_author'] = $showauthor;
	}
	if (! empty($showmodified)) {
		$gal_info['show_lastmodif'] = $gal_info['show_modified'] = $showmodified;
	}
	if (! empty($showmodtimedate)) {
		$gal_info['show_modtimedate'] = $showmodtimedate;
	}
	if (! empty($showlockedby)) {
		$gal_info['show_lockedby'] = $showlockedby;
	}
	if (! empty($showhits)) {
		$gal_info['show_hits'] = $showhits;
	}
	if (! empty($showfiles)) {
		$gal_info['show_files'] = $showfiles;
	}
	if (! empty($showdeleteafter)) {
		$gal_info['show_deleteAfter'] = $showdeleteafter;
	}
	if (! empty($showchecked)) {
		$gal_info['show_checked'] = $showchecked;
	}
	if (! empty($showshare)) {
		$gal_info['show_share'] = $showshare;
	}
	if (! empty($showaction)) {
		$gal_info['show_action'] = $showaction;
	}
	if (! empty($showcomment)) {
		$gal_info['show_comment'] = $showcomment;
	}
	if (! empty($showlasteditor)) {
		$gal_info['show_last_user'] = $showlasteditor;
	}
	if (! empty($showsource)) {
		$gal_info['show_source'] = $showsource;
	}
	if (! empty($showname) && $showname == 'y' && ! empty($showfilename) && $showfilename == 'y') {
		$gal_info['show_name'] = 'a';
	}
	if (! empty($showname) && $showname == 'y' && ! empty($showfilename) && $showfilename == 'n') {
		$gal_info['show_name'] = 'n';
	}
	if (! empty($showname) && $showname == 'n' && ! empty($showfilename) && $showfilename == 'y') {
		$gal_info['show_name'] = 'f';
	}
	if (! empty($showname) && $showname == 'n' && ! empty($showfilename) && $showfilename == 'n') {
		$gal_info['show_name'] = '';
	}
	$gal_info['show_parentName'] = $show_parentName;
	$smarty->assign_by_ref('gal_info', $gal_info);

	if (isset($categId)) {
		if (is_array($categId)) {
			foreach ($categId as $cat) {
				$category[] = $categlib->get_category_name($cat);
			}
		} else {
			$category = $categlib->get_category_name($categId);
		}
		$smarty->assign_by_ref('category', $category);
	} else {
		$smarty->assign('category', '');
	}
	$smarty->assign_by_ref('params', $params);
	$smarty->assign('sort_arg', "wp_files_sort_mode$iplugin");
	return '~np~' . $smarty->fetch('wiki-plugins/wikiplugin_files.tpl') . '~/np~';
}
function wikiplugin_files_check_perm_file($fileId)
{
		global $tiki_p_admin, $user, $tiki_p_admin_files_galleries;
		$tikilib = TikiLib::lib('tiki');
		$filegallib = TikiLib::lib('filegal');

		$info = $filegallib->get_file_info($fileId, false, false);
		$gal_info = $filegallib->get_file_gallery($info['galleryId']);
	if ($tiki_p_admin != 'y' && $tiki_p_admin_files_galleries != 'y' && $gal_info['user'] != $user) {
		$info['p_view_file_gallery'] = $tikilib->user_has_perm_on_object($user, $info['fileId'], 'file', 'tiki_p_view_file_gallery') ? 'y' : 'n';
		if ($info['p_view_file_gallery'] != 'y') {
			return false;
		}
		$info['p_download_files'] = $tikilib->user_has_perm_on_object($user, $info['fileId'], 'file', 'tiki_p_download_files') ? 'y' : 'n';
		$info['p_admin_file_galleries'] = $tikilib->user_has_perm_on_object($user, $info['galleryId'], 'file gallery', 'tiki_p_admin_file_galleries') ? 'y' : 'n';
		$info['p_edit_gallery_file'] = $tikilib->user_has_perm_on_object($user, $info['fileId'], 'file', 'tiki_p_edit_gallery_file') ? 'y' : 'n';
	} else {
		$info['p_download_files'] = 'y';
		$info['p_view_file_gallery'] = 'y';
		$info['p_admin_file_galleries'] = 'y';
		$info['p_edit_gallery_file'] = 'y';
	}
		$info['gallery'] = $gal_info['name'];
		$info['galleryType'] = $gal_info['type'];
		$info['lockable'] = $gal_info['lockable'];
		$info['id'] = $info['fileId'];
		$info['parentName'] = $gal_info['name'];
		$info['size'] = $info['filesize'];
		return $info;
}
