New: #images.high_filesize was added so that we can sum the filesizes in the
filtered history. #images.high_filesize is filled during metadata synchronization. Bug fixed: in getAttribute XML function, when asking "filesize", it was returning high_filesize. The regex was too simple. git-svn-id: http://piwigo.org/svn/trunk@1883 68402e56-0260-453c-a942-63ccdbb3a9ee
This commit is contained in:
parent
81030a7ab4
commit
b0478ef330
13 changed files with 326 additions and 36 deletions
|
|
@ -226,16 +226,6 @@ SELECT rules
|
|||
$clauses
|
||||
);
|
||||
|
||||
$query = '
|
||||
SELECT COUNT(*)
|
||||
FROM '.HISTORY_TABLE.'
|
||||
WHERE '.$where_separator.'
|
||||
;';
|
||||
|
||||
// echo '<pre>'.$query.'</pre>';
|
||||
|
||||
list($page['nb_lines']) = mysql_fetch_row(pwg_query($query));
|
||||
|
||||
$query = '
|
||||
SELECT
|
||||
date,
|
||||
|
|
@ -249,11 +239,20 @@ SELECT
|
|||
image_type
|
||||
FROM '.HISTORY_TABLE.'
|
||||
WHERE '.$where_separator.'
|
||||
LIMIT '.$page['start'].', '.$conf['nb_logs_page'].'
|
||||
;';
|
||||
|
||||
// LIMIT '.$page['start'].', '.$conf['nb_logs_page'].'
|
||||
|
||||
$result = pwg_query($query);
|
||||
$history_lines = $user_ids = $category_ids = $image_ids = array();
|
||||
|
||||
$page['nb_lines'] = mysql_num_rows($result);
|
||||
|
||||
$history_lines = array();
|
||||
$user_ids = array();
|
||||
$category_ids = array();
|
||||
$image_ids = array();
|
||||
$tag_ids = array();
|
||||
|
||||
while ($row = mysql_fetch_assoc($result))
|
||||
{
|
||||
$user_ids[$row['user_id']] = 1;
|
||||
|
|
@ -314,17 +313,71 @@ SELECT id, uppercats
|
|||
if (count($image_ids) > 0)
|
||||
{
|
||||
$query = '
|
||||
SELECT id, IF(name IS NULL, file, name) AS label
|
||||
SELECT
|
||||
id,
|
||||
IF(name IS NULL, file, name) AS label,
|
||||
filesize,
|
||||
high_filesize
|
||||
FROM '.IMAGES_TABLE.'
|
||||
WHERE id IN ('.implode(',', array_keys($image_ids)).')
|
||||
;';
|
||||
$label_of_image = simple_hash_from_query($query, 'id', 'label');
|
||||
// $label_of_image = simple_hash_from_query($query, 'id', 'label');
|
||||
$label_of_image = array();
|
||||
$filesize_of_image = array();
|
||||
$high_filesize_of_image = array();
|
||||
|
||||
$result = pwg_query($query);
|
||||
while ($row = mysql_fetch_array($result))
|
||||
{
|
||||
$label_of_image[ $row['id'] ] = $row['label'];
|
||||
|
||||
if (isset($row['filesize']))
|
||||
{
|
||||
$filesize_of_image[ $row['id'] ] = $row['filesize'];
|
||||
}
|
||||
|
||||
if (isset($row['high_filesize']))
|
||||
{
|
||||
$high_filesize_of_image[ $row['id'] ] = $row['high_filesize'];
|
||||
}
|
||||
}
|
||||
|
||||
// echo '<pre>'; print_r($high_filesize_of_image); echo '</pre>';
|
||||
}
|
||||
|
||||
$i = 0;
|
||||
$first_line = $page['start'] + 1;
|
||||
$last_line = $page['start'] + $conf['nb_logs_page'];
|
||||
|
||||
$total_filesize = 0;
|
||||
|
||||
foreach ($history_lines as $line)
|
||||
{
|
||||
if (isset($line['image_type']))
|
||||
{
|
||||
if ($line['image_type'] == 'high')
|
||||
{
|
||||
if (isset($high_filesize_of_image[$line['image_id']]))
|
||||
{
|
||||
$total_filesize+= $high_filesize_of_image[$line['image_id']];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (isset($filesize_of_image[$line['image_id']]))
|
||||
{
|
||||
$total_filesize+= $filesize_of_image[$line['image_id']];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$i++;
|
||||
|
||||
if ($i < $first_line or $i > $last_line)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
$template->assign_block_vars(
|
||||
'detail',
|
||||
array(
|
||||
|
|
@ -337,9 +390,17 @@ SELECT id, IF(name IS NULL, file, name) AS label
|
|||
'IP' => $line['IP'],
|
||||
'IMAGE' => isset($line['image_id'])
|
||||
? ( isset($label_of_image[$line['image_id']])
|
||||
? $label_of_image[$line['image_id']]
|
||||
: 'deleted '.$line['image_id'])
|
||||
: $line['image_id'],
|
||||
? sprintf(
|
||||
'(%u) %s',
|
||||
$line['image_id'],
|
||||
$label_of_image[$line['image_id']]
|
||||
)
|
||||
: sprintf(
|
||||
'(%u) deleted ',
|
||||
$line['image_id']
|
||||
)
|
||||
)
|
||||
: '',
|
||||
'TYPE' => $line['image_type'],
|
||||
'SECTION' => $line['section'],
|
||||
'CATEGORY' => isset($line['category_id'])
|
||||
|
|
@ -348,10 +409,17 @@ SELECT id, IF(name IS NULL, file, name) AS label
|
|||
: 'deleted '.$line['category_id'] )
|
||||
: '',
|
||||
'TAGS' => $line['tag_ids'],
|
||||
'T_CLASS' => ($i++ % 2) ? 'row1' : 'row2',
|
||||
'T_CLASS' => ($i % 2) ? 'row1' : 'row2',
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
$template->assign_block_vars(
|
||||
'summary',
|
||||
array(
|
||||
'FILESIZE' => $total_filesize.' KB',
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
// $groups_string = preg_replace(
|
||||
|
|
|
|||
|
|
@ -105,6 +105,28 @@ function update_metadata($files)
|
|||
|
||||
$datas = array();
|
||||
$tags_of = array();
|
||||
$has_high_images = array();
|
||||
|
||||
$image_ids = array();
|
||||
foreach ($files as $id => $file)
|
||||
{
|
||||
array_push($image_ids, $id);
|
||||
}
|
||||
|
||||
$query = '
|
||||
SELECT id
|
||||
FROM '.IMAGES_TABLE.'
|
||||
WHERE has_high = \'true\'
|
||||
AND id IN (
|
||||
'.wordwrap(implode(', ', $image_ids), 80, "\n").'
|
||||
)
|
||||
;';
|
||||
|
||||
$result = pwg_query($query);
|
||||
while ($row = mysql_fetch_array($result))
|
||||
{
|
||||
array_push($has_high_images, $row['id']);
|
||||
}
|
||||
|
||||
foreach ($files as $id => $file)
|
||||
{
|
||||
|
|
@ -118,6 +140,13 @@ function update_metadata($files)
|
|||
$data['height'] = $image_size[1];
|
||||
}
|
||||
|
||||
if (in_array($id, $has_high_images))
|
||||
{
|
||||
$high_file = dirname($file).'/pwg_high/'.basename($file);
|
||||
|
||||
$data['high_filesize'] = floor(filesize($high_file)/1024);
|
||||
}
|
||||
|
||||
if ($conf['use_exif'])
|
||||
{
|
||||
$exif = get_sync_exif_data($file);
|
||||
|
|
@ -161,6 +190,7 @@ function update_metadata($files)
|
|||
'filesize',
|
||||
'width',
|
||||
'height',
|
||||
'high_filesize',
|
||||
'date_metadata_update'
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -262,6 +262,18 @@ $template->assign_vars(
|
|||
)
|
||||
);
|
||||
|
||||
if ($row['has_high'] == 'true')
|
||||
{
|
||||
$template->assign_block_vars(
|
||||
'high',
|
||||
array(
|
||||
'FILESIZE' => isset($row['high_filesize'])
|
||||
? $row['high_filesize'].' KB'
|
||||
: l10n('unknown'),
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
// creation date
|
||||
unset($day, $month, $year);
|
||||
|
||||
|
|
|
|||
|
|
@ -157,7 +157,7 @@ function get_metadata_attributes()
|
|||
{
|
||||
global $conf;
|
||||
|
||||
$update_fields = array('filesize', 'width', 'height');
|
||||
$update_fields = array('filesize', 'width', 'height', 'high_filesize');
|
||||
|
||||
if ($conf['use_exif'])
|
||||
{
|
||||
|
|
@ -181,7 +181,7 @@ function get_metadata_attributes()
|
|||
}
|
||||
|
||||
// returns a hash of attributes (metadata+filesize+width,...) for file
|
||||
function get_element_metadata($file)
|
||||
function get_element_metadata($file, $has_high = false)
|
||||
{
|
||||
global $conf;
|
||||
if (!is_file($file))
|
||||
|
|
@ -199,6 +199,13 @@ function get_element_metadata($file)
|
|||
$data['height'] = $image_size[1];
|
||||
}
|
||||
|
||||
if ($has_high)
|
||||
{
|
||||
$high_file = dirname($file).'/pwg_high/'.basename($file);
|
||||
|
||||
$data['high_filesize'] = floor(filesize($high_file)/1024);
|
||||
}
|
||||
|
||||
if ($conf['use_exif'])
|
||||
{
|
||||
$data = array_merge($data, get_sync_exif_data($file) );
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ function RemoteSiteReader($url, $listing_url)
|
|||
'tn_ext', 'representative_ext', 'has_high',
|
||||
);
|
||||
$this->metadata_attributes = array(
|
||||
'filesize', 'width', 'height'
|
||||
'filesize', 'width', 'height', 'high_filesize'
|
||||
);
|
||||
|
||||
if (!isset($listing_url))
|
||||
|
|
@ -88,10 +88,15 @@ function open()
|
|||
return false;
|
||||
}
|
||||
|
||||
$additional_metadata = getAttribute($info_xml_element, 'metadata');
|
||||
|
||||
if ($additional_metadata != '')
|
||||
{
|
||||
$this->metadata_attributes = array_merge(
|
||||
$this->metadata_attributes,
|
||||
explode(',', getAttribute($info_xml_element, 'metadata'))
|
||||
explode(',', $additional_metadata)
|
||||
);
|
||||
}
|
||||
|
||||
$this->build_structure($xml_content, '', 0);
|
||||
|
||||
|
|
@ -179,7 +184,7 @@ function get_metadata_attributes()
|
|||
}
|
||||
|
||||
// returns a hash of attributes (metadata+width,...) for file
|
||||
function get_element_metadata($file)
|
||||
function get_element_metadata($file, $has_high = false)
|
||||
{
|
||||
return $this->get_element_attributes(
|
||||
$file,
|
||||
|
|
|
|||
|
|
@ -775,9 +775,40 @@ if (isset($_POST['submit']) and preg_match('/^metadata/', $_POST['sync'])
|
|||
$start = get_moment();
|
||||
$datas = array();
|
||||
$tags_of = array();
|
||||
|
||||
$has_high_images = array();
|
||||
|
||||
$image_ids = array();
|
||||
foreach ($files as $id => $file)
|
||||
{
|
||||
$data = $site_reader->get_element_metadata($file);
|
||||
array_push($image_ids, $id);
|
||||
}
|
||||
|
||||
if (count($image_ids) > 0)
|
||||
{
|
||||
$query = '
|
||||
SELECT id
|
||||
FROM '.IMAGES_TABLE.'
|
||||
WHERE has_high = \'true\'
|
||||
AND id IN (
|
||||
'.wordwrap(implode(', ', $image_ids), 80, "\n").'
|
||||
)
|
||||
;';
|
||||
|
||||
$result = pwg_query($query);
|
||||
while ($row = mysql_fetch_array($result))
|
||||
{
|
||||
array_push($has_high_images, $row['id']);
|
||||
}
|
||||
}
|
||||
|
||||
foreach ( $files as $id=>$file )
|
||||
{
|
||||
$data = $site_reader->get_element_metadata(
|
||||
$file,
|
||||
in_array($id, $has_high_images)
|
||||
);
|
||||
|
||||
if ( is_array($data) )
|
||||
{
|
||||
$data['date_metadata_update'] = CURRENT_DATE;
|
||||
|
|
@ -813,6 +844,8 @@ if (isset($_POST['submit']) and preg_match('/^metadata/', $_POST['sync'])
|
|||
{
|
||||
if (count($datas) > 0)
|
||||
{
|
||||
// echo '<pre>', print_r($datas); echo '</pre>';
|
||||
|
||||
mass_updates(
|
||||
IMAGES_TABLE,
|
||||
// fields
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ function getContent( $element )
|
|||
function getAttribute( $element, $attribute )
|
||||
{
|
||||
// echo htmlentities($element).'<br /><br />';
|
||||
$regex = '/^<\w+[^>]*'.$attribute.'\s*=\s*"('.VAL_REG.')"/i';
|
||||
$regex = '/^<\w+[^>]*\b'.$attribute.'\s*=\s*"('.VAL_REG.')"/i';
|
||||
if ( preg_match( $regex, $element, $out ) )
|
||||
{
|
||||
return html_entity_decode($out[1], ENT_QUOTES);
|
||||
|
|
|
|||
63
install/db/55-database.php
Normal file
63
install/db/55-database.php
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
<?php
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | PhpWebGallery - a PHP based picture gallery |
|
||||
// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
|
||||
// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net |
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | branch : BSF (Best So Far)
|
||||
// | file : $Id: 45-database.php 1741 2007-01-22 21:47:03Z vdigital $
|
||||
// | last update : $Date: 2007-01-22 22:47:03 +0100 (lun., 22 janv. 2007) $
|
||||
// | last modifier : $Author: vdigital $
|
||||
// | revision : $Revision: 1741 $
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | This program 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 |
|
||||
// | |
|
||||
// | This program 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. |
|
||||
// | |
|
||||
// | You should have received a copy of the GNU General Public License |
|
||||
// | along with this program; if not, write to the Free Software |
|
||||
// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
|
||||
// | USA. |
|
||||
// +-----------------------------------------------------------------------+
|
||||
|
||||
if (!defined('PHPWG_ROOT_PATH'))
|
||||
{
|
||||
die('Hacking attempt!');
|
||||
}
|
||||
|
||||
$upgrade_description =
|
||||
'Update #history.image_type to "picture" by default when image_id is not null';
|
||||
|
||||
include_once(PHPWG_ROOT_PATH.'include/constants.php');
|
||||
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | Upgrade content |
|
||||
// +-----------------------------------------------------------------------+
|
||||
|
||||
$query = "
|
||||
UPDATE ".HISTORY_TABLE."
|
||||
SET image_type = 'picture'
|
||||
WHERE image_id IS NOT NULL
|
||||
AND image_type IS NULL
|
||||
;";
|
||||
pwg_query($query);
|
||||
|
||||
$query = "
|
||||
UPDATE ".HISTORY_TABLE."
|
||||
SET image_type = NULL
|
||||
WHERE image_id IS NULL
|
||||
;";
|
||||
pwg_query($query);
|
||||
|
||||
echo
|
||||
"\n"
|
||||
.'"'.$upgrade_description.'"'.', ended'
|
||||
."\n"
|
||||
;
|
||||
|
||||
?>
|
||||
53
install/db/56-database.php
Normal file
53
install/db/56-database.php
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
<?php
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | PhpWebGallery - a PHP based picture gallery |
|
||||
// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
|
||||
// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net |
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | branch : BSF (Best So Far)
|
||||
// | file : $Id: 45-database.php 1741 2007-01-22 21:47:03Z vdigital $
|
||||
// | last update : $Date: 2007-01-22 22:47:03 +0100 (lun., 22 janv. 2007) $
|
||||
// | last modifier : $Author: vdigital $
|
||||
// | revision : $Revision: 1741 $
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | This program 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 |
|
||||
// | |
|
||||
// | This program 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. |
|
||||
// | |
|
||||
// | You should have received a copy of the GNU General Public License |
|
||||
// | along with this program; if not, write to the Free Software |
|
||||
// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
|
||||
// | USA. |
|
||||
// +-----------------------------------------------------------------------+
|
||||
|
||||
if (!defined('PHPWG_ROOT_PATH'))
|
||||
{
|
||||
die('Hacking attempt!');
|
||||
}
|
||||
|
||||
$upgrade_description = 'Add #images.high_filesize';
|
||||
|
||||
include_once(PHPWG_ROOT_PATH.'include/constants.php');
|
||||
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | Upgrade content |
|
||||
// +-----------------------------------------------------------------------+
|
||||
|
||||
$query = "
|
||||
ALTER TABLE ".IMAGES_TABLE."
|
||||
ADD COLUMN high_filesize mediumint(9) unsigned default NULL
|
||||
;";
|
||||
pwg_query($query);
|
||||
|
||||
echo
|
||||
"\n"
|
||||
.'"'.$upgrade_description.'"'.', ended'
|
||||
."\n"
|
||||
;
|
||||
|
||||
?>
|
||||
|
|
@ -38,10 +38,10 @@ CREATE TABLE `phpwebgallery_categories` (
|
|||
`commentable` enum('true','false') NOT NULL default 'true',
|
||||
`global_rank` varchar(255) default NULL,
|
||||
`image_order` varchar(128) default NULL,
|
||||
`permalink` VARCHAR(64) default NULL,
|
||||
`permalink` varchar(64) default NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `categories_i2` (`id_uppercat`),
|
||||
UNIQUE KEY `categories_i3` (`permalink`)
|
||||
UNIQUE KEY `categories_i3` (`permalink`),
|
||||
KEY `categories_i2` (`id_uppercat`)
|
||||
) TYPE=MyISAM;
|
||||
|
||||
--
|
||||
|
|
@ -196,6 +196,7 @@ CREATE TABLE `phpwebgallery_images` (
|
|||
`has_high` enum('true') default NULL,
|
||||
`path` varchar(255) NOT NULL default '',
|
||||
`storage_category_id` smallint(5) unsigned default NULL,
|
||||
`high_filesize` mediumint(9) unsigned default NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `images_i2` (`date_available`),
|
||||
KEY `images_i3` (`average_rate`),
|
||||
|
|
@ -210,9 +211,9 @@ CREATE TABLE `phpwebgallery_images` (
|
|||
|
||||
DROP TABLE IF EXISTS `phpwebgallery_old_permalinks`;
|
||||
CREATE TABLE `phpwebgallery_old_permalinks` (
|
||||
`cat_id` smallint(5) unsigned NOT NULL,
|
||||
`permalink` VARCHAR(64) NOT NULL,
|
||||
`date_deleted` datetime NOT NULL,
|
||||
`cat_id` smallint(5) unsigned NOT NULL default '0',
|
||||
`permalink` varchar(64) NOT NULL default '',
|
||||
`date_deleted` datetime NOT NULL default '0000-00-00 00:00:00',
|
||||
`last_hit` datetime default NULL,
|
||||
`hit` int(10) unsigned NOT NULL default '0',
|
||||
PRIMARY KEY (`permalink`)
|
||||
|
|
|
|||
|
|
@ -65,7 +65,15 @@
|
|||
</fieldset>
|
||||
</form>
|
||||
|
||||
<h3>{L_DATE_TITLE}</h3>
|
||||
<!-- BEGIN summary -->
|
||||
<fieldset>
|
||||
<legend>{lang:Summary}</legend>
|
||||
|
||||
<ul>
|
||||
<li>{summary.FILESIZE}</li>
|
||||
</ul>
|
||||
</fieldset>
|
||||
<!-- END summary -->
|
||||
|
||||
<!-- BEGIN navigation -->
|
||||
<div class="admin">
|
||||
|
|
|
|||
|
|
@ -37,6 +37,13 @@
|
|||
<td>{FILESIZE}</td>
|
||||
</tr>
|
||||
|
||||
<!-- BEGIN high -->
|
||||
<tr>
|
||||
<td><strong>{lang:High filesize}</strong></td>
|
||||
<td>{high.FILESIZE}</td>
|
||||
</tr>
|
||||
<!-- END high -->
|
||||
|
||||
<tr>
|
||||
<td><strong>{lang:Storage category}</strong></td>
|
||||
<td>{STORAGE_CATEGORY}</td>
|
||||
|
|
|
|||
|
|
@ -714,6 +714,9 @@ function pwg_scan_file($file_full, &$line)
|
|||
if (pwg_get_high($file_dir, $file_base))
|
||||
{
|
||||
$element['has_high'] = 'true';
|
||||
|
||||
$high_file = $file_dir.'/'.$conf['high'].'/'.$file_base;
|
||||
$element['high_filesize'] = floor(filesize($high_file) / 1024);
|
||||
}
|
||||
|
||||
// get EXIF meta datas
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue