tra('File'), 'documentation' => 'PluginFile', 'description' => tra('Link to a file that\'s attached or in a gallery or archive'), 'prefs' => [ 'wikiplugin_file' ], 'body' => tra('Label for the link to the file (ignored if the file is a wiki attachment)'), 'iconname' => 'file', 'introduced' => 3, 'tags' => [ 'basic' ], 'params' => [ 'type' => [ 'required' => true, 'name' => tra('Type'), 'description' => tra('Indicate whether the file is in a file gallery or is a wiki page attachment'), 'since' => '6.1', 'filter' => 'alpha', 'default' => '', 'options' => [ ['text' => '', 'value' => ''], ], //rest filled in below ], 'name' => [ 'required' => true, 'name' => tra('Name'), 'description' => tra('Identify an attachment by entering its file name, which will show as a link to the file. If the page parameter is empty, it must be a file name of an attachment to the page where the plugin is used.'), 'since' => '3.0', 'default' => '', 'parentparam' => ['name' => 'type', 'value' => 'attachment'], ], 'desc' => [ 'required' => false, 'name' => tra('Custom Description'), 'description' => tra('Custom text that will be used for the link instead of the file name or file description'), 'since' => '3.0', 'parentparam' => ['name' => 'type', 'value' => 'attachment'], 'advanced' => true, 'default' => '', ], 'page' => [ 'required' => false, 'name' => tra('Page'), 'description' => tra('Name of the wiki page the file is attached to. Defaults to the wiki page where the plugin is used if empty.'), 'since' => '3.0', 'parentparam' => ['name' => 'type', 'value' => 'attachment'], 'default' => '', 'advanced' => true, 'profile_reference' => 'wiki_page', ], 'showdesc' => [ 'required' => false, 'name' => tra('Attachment Description'), 'description' => tra('Show the attachment description as the link label instead of the attachment file name.'), 'since' => '3.0', 'options' => [ ['text' => '', 'value' => ''], ['text' => tra('Yes'), 'value' => 1], ['text' => tra('No'), 'value' => 0], ], 'parentparam' => ['name' => 'type', 'value' => 'attachment'], 'default' => '', 'advanced' => true, ], 'image' => [ 'required' => false, 'name' => tra('Image'), 'description' => tra('Indicates that this attachment is an image, and should be displayed inline using the img tag'), 'since' => '3.0', 'parentparam' => ['name' => 'type', 'value' => 'attachment'], 'advanced' => true, 'default' => '', 'options' => [ ['text' => '', 'value' => ''], ['text' => tra('Yes'), 'value' => 1], ['text' => tra('No'), 'value' => 0] ], ], 'fileId' => [ 'required' => true, 'name' => tra('File ID'), 'description' => tra('File ID of a file in a file gallery or an archive.') . ' ' . tra('Example value:') . ' 42', 'since' => '5.0', 'type' => 'fileId', 'area' => 'fgal_picker_id', 'filter' => 'digits', 'default' => '', 'parentparam' => ['name' => 'type', 'value' => 'gallery'], 'profile_reference' => 'file', ], 'date' => [ 'required' => false, 'name' => tra('Date'), 'description' => tr('For an archive file, the archive created just before this date will be linked to. Special values : %0 and %1.', 'PAGE_LAST_MOD', 'PAGE_VIEW_DATE'), 'since' => '5.0', 'parentparam' => ['name' => 'type', 'value' => 'gallery'], 'default' => '', 'advanced' => true, ], 'showicon' => [ 'required' => false, 'name' => tra('Show Icon'), 'description' => tra('Show an icon version of the file or file type with the link to the file.'), 'since' => '6.1', 'filter' => 'alpha', 'parentparam' => ['name' => 'type', 'value' => 'gallery'], 'default' => '', 'options' => [ ['text' => '', 'value' => ''], ['text' => tra('Yes'), 'value' => 'y'], ['text' => tra('No'), 'value' => 'n'] ], 'advanced' => true, ], 'browserdisplay' => [ 'required' => false, 'name' => tra('Browser Display'), 'description' => tra('Display in different browser window or tab instead of downloading.'), 'since' => '18.1', 'filter' => 'alpha', 'parentparam' => ['name' => 'type', 'value' => 'gallery'], 'default' => '', 'options' => [ ['text' => '', 'value' => ''], ['text' => tra('Yes'), 'value' => 'y'], ['text' => tra('No'), 'value' => 'n'] ], 'advanced' => true, ], 'translatetitle' => [ 'required' => false, 'name' => tra('Translate File Title'), 'description' => tra('Translate, if possible, the file title using Tiki multilingual feature (you can add custom translation in Tiki)'), 'since' => '24.0', 'filter' => 'alpha', 'default' => 'n', 'advanced' => false, 'options' => [ ['text' => '', 'value' => ''], ['text' => tra('Yes'), 'value' => 'y'], ['text' => tra('No'), 'value' => 'n'] ] ], ] ]; if ($prefs['feature_file_galleries'] == 'y') { $info['params']['type']['options'][] = ['text' => tra('File Gallery File/Archive'), 'value' => 'gallery']; } if ($prefs['feature_wiki_attachments'] == 'y') { $info['params']['type']['options'][] = ['text' => tra('Wiki Page Attachment'), 'value' => 'attachment']; } return $info; } function wikiplugin_file($data, $params) { global $tikilib, $prefs, $info, $page_view_date; if (isset($params['fileId'])) { $filegallib = TikiLib::lib('filegal'); if ($prefs['feature_file_galleries'] != 'y') { return; } $fileId = $params['fileId']; if (isset($params['date'])) { static $wikipluginFileDate = 0; if (empty($params['date'])) { if (empty($wikipluginFileDate)) { return tra('The date has not been set'); } $date = $wikipluginFileDate; } else { if (strcmp($params['date'], WIKIPLUGIN_FILE_PAGE_LAST_MOD) == 0) { // Page last modification date $date = $info['lastModif']; } elseif (strcmp($params['date'], WIKIPLUGIN_FILE_PAGE_VIEW_DATE) == 0) { // Current date parameter $date = (isset($page_view_date)) ? $page_view_date : time(); } elseif (($date = strtotime($params['date'])) === false) { return tra('Incorrect date format'); } $wikipluginFileDate = $date; } $fileId = $filegallib->getArchiveJustBefore($fileId, $date); if (empty($fileId)) { return tra('No such file'); } } else { $file_info = $filegallib->get_file_info($fileId, false, false); if (empty($file_info)) { return tra('Incorrect parameter') . ' fileId'; } } if (empty($data)) { // to avoid problem with parsing $data = empty($file_info['name']) ? $file_info['filename'] : $file_info['name']; } if (isset($params['translatetitle']) && $params['translatetitle'] == 'y') { $data = tra($data); } if (isset($params['browserdisplay']) && $params['browserdisplay'] == 'y') { if (isset($params['showicon']) && $params['showicon'] == "y") { return "{img src=tiki-download_file.php?fileId=$fileId&thumbnail=y link=tiki-download_file.php?fileId=$fileId&display=y styleimage=max-width:32px;max-height:36px thumb=y responsive='n'} " . "" . $data . ""; } else { return "" . $data . ""; } } else { if (isset($params['showicon']) && $params['showicon'] == "y") { return "{img src=tiki-download_file.php?fileId=$fileId&thumbnail=y link=tiki-download_file.php?fileId=$fileId styleimage=max-width:32px responsive='n'} [tiki-download_file.php?fileId=$fileId|$data]"; } else { return "[tiki-download_file.php?fileId=$fileId|$data]"; } } } if ($prefs['feature_wiki_attachments'] != 'y') { return "" . tra("Wiki attachments are disabled.") . ""; } $filedata = []; $filedata["name"] = ''; $filedata["desc"] = ''; $filedata["showdesc"] = ''; $filedata["page"] = ''; $filedata["image"] = ''; $filedata = array_merge($filedata, $params); if (! $filedata["name"]) { return; } $forward = []; $forward['file'] = $filedata['name']; $forward['inline'] = 1; $forward['page'] = $filedata['page']; if ($filedata['showdesc']) { $forward['showdesc'] = 1; } if ($filedata['image']) { $forward['image'] = 1; } $middle = $filedata["desc"]; return TikiLib::lib('parser')->pluginExecute('attach', $middle, $forward); }