// All rights reserved.
This script is part of PHPWCMS. The PHPWCMS web content management system is
free software; you can redistribute it and/or modify it under the terms of
the GNU General Public License as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later version.
The GNU General Public License can be found at http://www.gnu.org/copyleft/gpl.html
A copy is found in the textfile GPL.txt and important notices to the license
from the author is found in LICENSE.txt distributed with these scripts.
This script is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU General Public License for more details.
This copyright notice MUST APPEAR in all copies of the script!
*************************************************************************************/
// ----------------------------------------------------------------
// obligate check for phpwcms constants
if (!defined('PHPWCMS_ROOT')) {
die("You Cannot Access This Script Directly, Have a Nice Day.");
}
// ----------------------------------------------------------------
//file list
// if $IS_NEWS_CP = true then file list content part rendere is
// included by news content part
// default cp rendering
if( empty($IS_NEWS_CP) ) {
$crow["acontent_files"] = explode(':', $crow["acontent_files"]);
$crow["acontent_text"] = explode("\n", $crow["acontent_text"]);
$crow["acontent_form"] = unserialize($crow["acontent_form"]);
$crow['file_cp_title'] = $crow['acontent_title'];
$crow['file_cp_subtitle'] = $crow['acontent_subtitle'];
$content['files_direct'] = empty($crow["acontent_form"]['direct_download']) ? 0 : 1;
} else {
// news cp rendering
// take some default values by news
$crow["acontent_files"] = $value['cnt_object']['cnt_files']['id'];
$crow["acontent_text"] = explode("\n", $value['cnt_object']['cnt_files']['caption']);
$content['files_direct'] = $value['files_direct_download'];
$crow["acontent_template"] = $value['files_template'];
$crow["acontent_html"] = '';
$crow['file_cp_title'] = '';
$crow['file_cp_subtitle'] = '';
}
$content['files'] = array();
$content['files_sql'] = array();
// build file id query first
foreach($crow["acontent_files"] as $fkey => $value) {
$value = intval($value);
if($value) {
$content['files'][$fkey]['file_id'] = $value;
$content['files'][$fkey]['file_info'] = empty($crow["acontent_text"][$fkey]) ? '' : trim($crow["acontent_text"][$fkey]);
$content['files_sql'][$fkey] = $value;
}
}
// create where query part for file ID
$content['files_sql'] = is_array($content['files_sql']) && count($content['files_sql']) ? 'f_id IN(' . implode(',', $content['files_sql']).')' : '';
// if $content['files_sql'] is empty makes no sense to continue
if($content['files_sql']) {
if(empty($content['file_static_result'][0])) {
$content['files_sql'] = "SELECT * FROM ".DB_PREPEND."phpwcms_file WHERE f_public=1 AND f_aktiv=1 AND f_kid=1 AND f_trash=0 AND " . $content['files_sql'];
if( !FEUSER_LOGIN_STATUS ) {
$content['files_sql'] .= ' AND f_granted=0';
}
$content['files_result'] = _dbQuery($content['files_sql']);
} else {
$content['files_result'] = $content['file_static_result'];
}
if(is_array($content['files_result']) && count($content['files_result'])) {
// get filelist template
if(empty($crow["acontent_template"]) && is_file(PHPWCMS_TEMPLATE.'inc_default/filelist.tmpl')) {
$crow["acontent_template"] = render_device( @file_get_contents(PHPWCMS_TEMPLATE.'inc_default/filelist.tmpl') );
} elseif(is_file(PHPWCMS_TEMPLATE.'inc_cntpart/filelist/'.$crow["acontent_template"])) {
$crow["acontent_template"] = render_device( @file_get_contents(PHPWCMS_TEMPLATE.'inc_cntpart/filelist/'.$crow["acontent_template"]) );
} else {
$crow["acontent_template"] = '[TITLE]
{TITLE}
[/TITLE][SUBTITLE]{SUBTITLE}
[/SUBTITLE][TEXT]{TEXT}[/TEXT]'.LF;
$crow["acontent_template"] .= '' . LF . '' . LF;
$crow["acontent_template"] .= ' - {FILE_NAME}
' . LF;
$crow["acontent_template"] .= '' . LF . '
' . LF;
}
$_files_settings = get_tmpl_section('FILE_SETTINGS', $crow["acontent_template"]);
$_files_settings = parse_ini_str($_files_settings, false);
$_files_settings = array_merge( array( 'icon_path' => 'img/icons/',
'icon_name' => 'small_icon_{FILE_EXT}.gif',
'thumbnail' => 0,
'thumbnail_width' => 50,
'thumbnail_height' => 50,
'thumbnail_crop' => 1,
'lightbox_init' => 0,
'file_size_round' => 3,
'file_size_space' => ' ',
'date_format' => "%m/%d/%y",
'set_locale' => '')
, $_files_settings );
$crow["acontent_template"] = replace_tmpl_section('FILE_SETTINGS', $crow["acontent_template"]);
$content['template_file'] = get_tmpl_section('FILE_ENTRY', $crow["acontent_template"]);
if($_files_settings['set_locale']) {
$_files_old_locale = setlocale(LC_ALL, "0");
setlocale(LC_ALL, $_files_settings['set_locale']);
}
if(!empty($_files_settings['lightbox_init'])) {
initSlimbox();
}
$_files_count = count($content['files_result']);
$_files_entries = array();
$_files_get_imagesize = strpos($content['template_file'], '{FILE_IMAGE_') === FALSE ? false : true; // check if necessary to check for image type and sizes
foreach($content['files'] as $fkey => $value) {
for($_files_x = 0; $_files_x < $_files_count; $_files_x++) {
$_file_current = PHPWCMS_ROOT.$phpwcms["file_path"].$content['files_result'][ $_files_x ]['f_hash'];
if($content['files_result'][ $_files_x ]['f_ext']) {
$_file_current .= '.'.$content['files_result'][ $_files_x ]['f_ext'];
}
// compare query result against content part file IDs
if($content['files_result'][ $_files_x ]['f_id'] == $value['file_id'] && is_file($_file_current) ) {
// check if info for the file is available
// [0] = normal file description like before
// [1] = name the file (it's not the file name)
// [2] = title
// [3] = target (where to open a new file -> default is _blank even if empty
// [4] = if it is an image try to show a thumbnail instead of the file icon -> here thumbnail WIDTHxHEIGHT
// [5] = copyright information
if($value['file_info']) {
$_file_info = explode('|', $value['file_info']);
$_file_info[0] = trim($_file_info[0]);
$_file_info[1] = empty($_file_info[1]) ? '' : trim($_file_info[1]);
$_file_info[2] = empty($_file_info[2]) ? '' : trim($_file_info[2]);
$_file_info[3] = ' target="'.( empty($_file_info[3]) ? '_blank' : trim($_file_info[3]) ) .'"';
// only when height/width is given
if(empty($_file_info[4])) {
$_file_info[4] = '';
} else {
$_file_info[4] = explode('x', $_file_info[4]);
$_file_info[4][0] = intval($_file_info[4][0]);
if(empty($_file_info[4][0])) $_file_info[4][0] = '';
if(empty($_file_info[4][1])) {
$_file_info[4][1] = '';
} else {
$_file_info[4][1] = intval($_file_info[4][1]);
if(empty($_file_info[4][1])) $_file_info[4][1] = '';
}
$_file_info[4][2] = empty($_file_info[4][2]) ? 0 : 1;
if(!($_file_info[4][0].$_file_info[4][1])) $_file_info[4] = '';
}
} else {
$_file_info = array(0 => '', 1 => '', 2 => '', 3 => ' target="_blank"', 4 => '');
}
if(empty($_file_info[4]) && $_files_settings['thumbnail'] == 1) {
$_file_info[4] = array( 0 => intval($_files_settings['thumbnail_width']),
1 => intval($_files_settings['thumbnail_height']),
2 => intval($_files_settings['thumbnail_crop']) ? 1 : 0
);
}
$_file_info[5] = empty($_file_info[5]) ? $content['files_result'][ $_files_x ]['f_copyright'] : trim($_file_info[5]);
$_files_entries[$fkey] = $content['template_file'];
$_files_entries[$fkey] = str_replace('{FILE_ID}', $content['files_result'][ $_files_x ]['f_id'], $_files_entries[$fkey]);
$_files_entries[$fkey] = str_replace('{FILE_TARGET}', $_file_info[3], $_files_entries[$fkey]);
$_files_entries[$fkey] = render_cnt_template($_files_entries[$fkey], 'FILE_EXT', $content['files_result'][ $_files_x ]['f_ext']);
$_files_entries[$fkey] = str_replace('{FILE_DOWNLOADS}', $content['files_result'][ $_files_x ]['f_dlfinal'], $_files_entries[$fkey]);
$_files_entries[$fkey] = str_replace('{FILE_SIZE}', return_bytes_shorten($content['files_result'][ $_files_x ]['f_size'], $_files_settings['file_size_round'], $_files_settings['file_size_space']), $_files_entries[$fkey]);
$content['files_result'][ $_files_x ]['f_created'] = intval($content['files_result'][ $_files_x ]['f_created']);
if($content['files_result'][ $_files_x ]['f_created'] <= 0) {
$content['files_result'][ $_files_x ]['f_created'] = filectime($_file_current);
}
$_files_entries[$fkey] = str_replace('{FILE_DATE}', strftime($_files_settings['date_format'], $content['files_result'][ $_files_x ]['f_created']), $_files_entries[$fkey]);
if($content['files_direct'] && $content['files_result'][ $_files_x ]['f_ext']) {
$_files_entries[$fkey] = str_replace('{FILE_LINK}', 'download.php?f='.$content['files_result'][ $_files_x ]['f_hash'].'&countonly=1', $_files_entries[$fkey]);
} else {
$_files_entries[$fkey] = str_replace('{FILE_LINK}', 'download.php?f='.$content['files_result'][ $_files_x ]['f_hash'], $_files_entries[$fkey]);
}
if($_file_info[1]) {
$_files_entries[$fkey] = str_replace('{FILE_NAME}', html_specialchars($_file_info[1]), $_files_entries[$fkey]);
} else {
$_files_entries[$fkey] = str_replace('{FILE_NAME}', html_specialchars($content['files_result'][ $_files_x ]['f_name']), $_files_entries[$fkey]);
}
$_files_entries[$fkey] = render_cnt_template($_files_entries[$fkey], 'FILE_TITLE', html_specialchars($_file_info[2]));
$_files_entries[$fkey] = render_cnt_template($_files_entries[$fkey], 'FILE_DESCRIPTION', html_specialchars($_file_info[0]));
$_files_entries[$fkey] = render_cnt_template($_files_entries[$fkey], 'FILE_LONGINFO', empty($content['files_result'][ $_files_x ]['f_longinfo']) ? '' : plaintext_htmlencode($content['files_result'][ $_files_x ]['f_longinfo']));
$_files_entries[$fkey] = render_cnt_template($_files_entries[$fkey], 'FILE_COPYRIGHT', html_specialchars($_file_info[5]));
// now check file for possible thumbnail image
$_files_image = false;
if($_file_info[4] && strpos($_files_entries[$fkey], 'FILE_IMAGE') !== false) {
$target_ext = $content['files_result'][ $_files_x ]['f_ext'];
// do it for jpg, png or gif only
switch($content['files_result'][ $_files_x ]['f_ext']) {
case 'tif':
case 'tiff':
case 'pdf':
case 'psd':
case 'eps': if($GLOBALS['phpwcms']['imagick'] == 0) {
break;
}
case 'bmp': $target_ext = 'jpg';
case 'gif':
case 'jpg':
case 'png':
$_files_image = get_cached_image(
array( "target_ext" => $target_ext,
"image_name" => $content['files_result'][ $_files_x ]['f_hash'] . '.' . $content['files_result'][ $_files_x ]['f_ext'],
"max_width" => $_file_info[4][0],
"max_height" => $_file_info[4][1],
"thumb_name" => md5( $content['files_result'][ $_files_x ]['f_hash'].
$_file_info[4][0].$_file_info[4][1].
$GLOBALS['phpwcms']["sharpen_level"].
$_file_info[4][2]
),
'crop_image' => $_file_info[4][2]
));
break;
}
}
// render {FILE_IMAGE_%} RT
if($_files_get_imagesize) {
$_files_get_imagesize = @getimagesize(PHPWCMS_ROOT.'/'.PHPWCMS_FILES.$content['files_result'][$_files_x ]['f_hash'].'.'.$content['files_result'][ $_files_x ]['f_ext']);
if(isset($_files_get_imagesize[0])) {
$_files_entries[$fkey] = render_cnt_template($_files_entries[$fkey], 'FILE_IMAGE_WIDTH', $_files_get_imagesize[0]);
$_files_entries[$fkey] = render_cnt_template($_files_entries[$fkey], 'FILE_IMAGE_HEIGHT', $_files_get_imagesize[1]);
$_files_entries[$fkey] = render_cnt_template($_files_entries[$fkey], 'FILE_IMAGE_MIME', isset($_files_get_imagesize['mime']) ? $_files_get_imagesize['mime'] : '');
if(isset($_files_get_imagesize['channels'])) {
switch($_files_get_imagesize['channels']) {
case 3: $_files_get_imagesize['channels'] = 'RGB'; break;
case 4: $_files_get_imagesize['channels'] = 'CMYK'; break;
default: $_files_get_imagesize['channels'] = '@@unknown@@';
}
} else {
$_files_get_imagesize['channels'] = '';
}
$_files_entries[$fkey] = render_cnt_template($_files_entries[$fkey], 'FILE_IMAGE_CHANNEL', $_files_get_imagesize['channels']);
$_files_entries[$fkey] = render_cnt_template($_files_entries[$fkey], 'FILE_IMAGE_LANDSCAPE', $_files_get_imagesize[0] >= $_files_get_imagesize[1] ? '@@landscape@@' : '');
$_files_entries[$fkey] = render_cnt_template($_files_entries[$fkey], 'FILE_IMAGE_PORTRAIT', $_files_get_imagesize[1] > $_files_get_imagesize[0] ? '@@portrait@@' : '');
} else {
$_files_entries[$fkey] = render_cnt_template($_files_entries[$fkey], 'FILE_IMAGE_WIDTH', '');
$_files_entries[$fkey] = render_cnt_template($_files_entries[$fkey], 'FILE_IMAGE_HEIGHT', '');
$_files_entries[$fkey] = render_cnt_template($_files_entries[$fkey], 'FILE_IMAGE_MIME', '');
$_files_entries[$fkey] = render_cnt_template($_files_entries[$fkey], 'FILE_IMAGE_CHANNEL', '');
$_files_entries[$fkey] = render_cnt_template($_files_entries[$fkey], 'FILE_IMAGE_LANDSCAPE', '');
$_files_entries[$fkey] = render_cnt_template($_files_entries[$fkey], 'FILE_IMAGE_PORTRAIT', '');
}
}
$_files_image = ($_files_image != false) ? PHPWCMS_IMAGES . $_files_image[0] : '';
$_files_entries[$fkey] = render_cnt_template($_files_entries[$fkey], 'FILE_IMAGE', $_files_image);
// now replace a possible icon image
$_files_entries[$fkey] = render_cnt_template($_files_entries[$fkey], 'FILE_ICON', str_replace('{FILE_EXT}', $content['files_result'][ $_files_x ]['f_ext'], $_files_settings['icon_path'].$_files_settings['icon_name']));
break;
}
}
}
$crow["acontent_template"] = replace_tmpl_section('FILE_ENTRY', $crow["acontent_template"], implode(LF, $_files_entries));
$crow["acontent_template"] = render_cnt_template($crow["acontent_template"], 'TITLE', html_specialchars($crow['file_cp_title']));
$crow["acontent_template"] = render_cnt_template($crow["acontent_template"], 'SUBTITLE', html_specialchars($crow['file_cp_subtitle']));
$crow["acontent_template"] = render_cnt_template($crow["acontent_template"], 'TEXT', $crow["acontent_html"]);
// cleanup left over FILE_IMAGE sections
$crow["acontent_template"] = replace_cnt_template($crow["acontent_template"], 'FILE_IMAGE', '');
// return result
if( empty($IS_NEWS_CP) ) {
$CNT_TMP .= LF.trim($crow["acontent_template"]).LF;
} else {
$news['files_result'] = trim($crow["acontent_template"]);
}
// reset locale settings
if(!empty($_files_old_locale)) {
setlocale(LC_ALL, $_files_old_locale);
}
unset($_files_count, $_files_entries, $_files_old_locale);
}
}
?>