aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--admin/history.php104
-rw-r--r--admin/include/functions_metadata.php30
-rw-r--r--admin/picture_modify.php12
-rw-r--r--admin/site_reader_local.php11
-rw-r--r--admin/site_reader_remote.php17
-rw-r--r--admin/site_update.php35
-rw-r--r--include/functions_xml.inc.php2
-rw-r--r--install/db/55-database.php63
-rw-r--r--install/db/56-database.php53
-rw-r--r--install/phpwebgallery_structure.sql15
-rw-r--r--template/yoga/admin/history.tpl10
-rw-r--r--template/yoga/admin/picture_modify.tpl7
-rw-r--r--tools/create_listing_file.php3
13 files changed, 326 insertions, 36 deletions
diff --git a/admin/history.php b/admin/history.php
index 9a0a521e5..07ecd2885 100644
--- a/admin/history.php
+++ b/admin/history.php
@@ -227,16 +227,6 @@ SELECT rules
);
$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,
time,
@@ -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(
diff --git a/admin/include/functions_metadata.php b/admin/include/functions_metadata.php
index f26184ce7..053c34afe 100644
--- a/admin/include/functions_metadata.php
+++ b/admin/include/functions_metadata.php
@@ -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'
);
diff --git a/admin/picture_modify.php b/admin/picture_modify.php
index 0dd6a237b..052b03330 100644
--- a/admin/picture_modify.php
+++ b/admin/picture_modify.php
@@ -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);
diff --git a/admin/site_reader_local.php b/admin/site_reader_local.php
index 4302d9a3e..9159a0b90 100644
--- a/admin/site_reader_local.php
+++ b/admin/site_reader_local.php
@@ -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) );
diff --git a/admin/site_reader_remote.php b/admin/site_reader_remote.php
index dd0038877..9ee7916e2 100644
--- a/admin/site_reader_remote.php
+++ b/admin/site_reader_remote.php
@@ -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,
diff --git a/admin/site_update.php b/admin/site_update.php
index baf7131af..91e4d6238 100644
--- a/admin/site_update.php
+++ b/admin/site_update.php
@@ -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
diff --git a/include/functions_xml.inc.php b/include/functions_xml.inc.php
index 64df545ce..7c388d292 100644
--- a/include/functions_xml.inc.php
+++ b/include/functions_xml.inc.php
@@ -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);
diff --git a/install/db/55-database.php b/install/db/55-database.php
new file mode 100644
index 000000000..b8d3416c0
--- /dev/null
+++ b/install/db/55-database.php
@@ -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"
+;
+
+?>
diff --git a/install/db/56-database.php b/install/db/56-database.php
new file mode 100644
index 000000000..3d8dba59d
--- /dev/null
+++ b/install/db/56-database.php
@@ -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"
+;
+
+?>
diff --git a/install/phpwebgallery_structure.sql b/install/phpwebgallery_structure.sql
index 5a9d3e544..4169f2973 100644
--- a/install/phpwebgallery_structure.sql
+++ b/install/phpwebgallery_structure.sql
@@ -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,12 +211,12 @@ 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`)
+ PRIMARY KEY (`permalink`)
) TYPE=MyISAM;
--
diff --git a/template/yoga/admin/history.tpl b/template/yoga/admin/history.tpl
index 570118797..64c0f9535 100644
--- a/template/yoga/admin/history.tpl
+++ b/template/yoga/admin/history.tpl
@@ -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">
diff --git a/template/yoga/admin/picture_modify.tpl b/template/yoga/admin/picture_modify.tpl
index 8ea3360be..283cae73a 100644
--- a/template/yoga/admin/picture_modify.tpl
+++ b/template/yoga/admin/picture_modify.tpl
@@ -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>
diff --git a/tools/create_listing_file.php b/tools/create_listing_file.php
index be72e24be..6703e1843 100644
--- a/tools/create_listing_file.php
+++ b/tools/create_listing_file.php
@@ -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