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:
plegall
2007-03-09 16:28:49 +00:00
parent 81030a7ab4
commit b0478ef330
13 changed files with 326 additions and 36 deletions
+86 -18
View File
@@ -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(
+30
View File
@@ -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)
{
@@ -117,6 +139,13 @@ function update_metadata($files)
$data['width'] = $image_size[0];
$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'])
{
@@ -161,6 +190,7 @@ function update_metadata($files)
'filesize',
'width',
'height',
'high_filesize',
'date_metadata_update'
);
+12
View File
@@ -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);
+9 -2
View File
@@ -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) );
+11 -6
View 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,11 +88,16 @@ function open()
return false;
}
$this->metadata_attributes = array_merge(
$this->metadata_attributes,
explode(',', getAttribute($info_xml_element, 'metadata'))
);
$additional_metadata = getAttribute($info_xml_element, 'metadata');
if ($additional_metadata != '')
{
$this->metadata_attributes = array_merge(
$this->metadata_attributes,
explode(',', $additional_metadata)
);
}
$this->build_structure($xml_content, '', 0);
return true;
@@ -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,
+34 -1
View 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)
{
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);
$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