diff --git a/admin/cat_modify.php b/admin/cat_modify.php index eb7b195bc..f728f4668 100644 --- a/admin/cat_modify.php +++ b/admin/cat_modify.php @@ -170,6 +170,7 @@ UPDATE '.CATEGORIES_TABLE.' } $_SESSION['page_infos'][] = l10n('Album updated successfully'); + pwg_activity('album', $_GET['cat_id'], 'edit'); $redirect = true; } diff --git a/admin/include/functions.php b/admin/include/functions.php index 2ca1697b6..0bace778b 100644 --- a/admin/include/functions.php +++ b/admin/include/functions.php @@ -163,6 +163,7 @@ DELETE FROM '.USER_CACHE_CATEGORIES_TABLE.' pwg_query($query); trigger_notify('delete_categories', $ids); + pwg_activity('album', $ids, 'delete', 'photo_deletion_mode='.$photo_deletion_mode); } /** @@ -1589,6 +1590,7 @@ SELECT id, uppercats, global_rank, visible, status } trigger_notify('create_virtual_category', array_merge(array('id'=>$inserted_id), $insert)); + pwg_activity('album', $inserted_id, 'add'); return array( 'info' => l10n('Virtual album added'), diff --git a/include/constants.php b/include/constants.php index a202cc7dd..74b60c058 100644 --- a/include/constants.php +++ b/include/constants.php @@ -109,5 +109,7 @@ if (!defined('LANGUAGES_TABLE')) define('LANGUAGES_TABLE', $prefixeTable.'languages'); if (!defined('IMAGE_FORMAT_TABLE')) define('IMAGE_FORMAT_TABLE', $prefixeTable.'image_format'); +if (!defined('ACTIVITY_TABLE')) + define('ACTIVITY_TABLE', $prefixeTable.'activity'); ?> diff --git a/include/functions.inc.php b/include/functions.inc.php index 31676e1e5..03fc73e2e 100644 --- a/include/functions.inc.php +++ b/include/functions.inc.php @@ -511,6 +511,31 @@ INSERT INTO '.HISTORY_TABLE.' return true; } +function pwg_activity($object, $object_id, $action, $details=null) +{ + global $user; + + $object_ids = $object_id; + if (!is_array($object_id)) + { + $object_ids = array($object_id); + } + + foreach ($object_ids as $loop_object_id) + { + single_insert( + ACTIVITY_TABLE, + array( + 'object' => $object, + 'object_id' => $loop_object_id, + 'action' => $action, + 'performed_by' => $user['id'], + 'details' => pwg_db_real_escape_string($details), + ) + ); + } +} + /** * Computes the difference between two dates. * returns a DateInterval object or a stdClass with the same attributes diff --git a/include/ws_functions/pwg.categories.php b/include/ws_functions/pwg.categories.php index 327ee3c1b..a52f4284b 100644 --- a/include/ws_functions/pwg.categories.php +++ b/include/ws_functions/pwg.categories.php @@ -730,6 +730,8 @@ SELECT * array('id' => $update['id']) ); } + + pwg_activity('album', $params['category_id'], 'edit', 'method='.$_REQUEST['method'].' fields='.implode(',', array_keys($update))); } /** @@ -779,6 +781,8 @@ UPDATE '. USER_CACHE_CATEGORIES_TABLE .' WHERE cat_id = '. $params['category_id'] .' ;'; pwg_query($query); + + pwg_activity('album', $params['category_id'], 'edit', 'method='.$_REQUEST['method'].' image_id='.$params['image_id']); } /** @@ -824,6 +828,8 @@ UPDATE '.CATEGORIES_TABLE.' WHERE id = '.$params['category_id'].' ;'; pwg_query($query); + + pwg_activity('album', $params['category_id'], 'edit', 'method='.$_REQUEST['method']); } /** @@ -869,6 +875,8 @@ SELECT set_random_representant(array($params['category_id'])); + pwg_activity('album', $params['category_id'], 'edit', 'method='.$_REQUEST['method']); + // return url of the new representative $query = ' SELECT * diff --git a/install/db/154-database.php b/install/db/154-database.php new file mode 100644 index 000000000..726065540 --- /dev/null +++ b/install/db/154-database.php @@ -0,0 +1,46 @@ + diff --git a/install/piwigo_structure-mysql.sql b/install/piwigo_structure-mysql.sql index 8715b2235..b53918ea3 100644 --- a/install/piwigo_structure-mysql.sql +++ b/install/piwigo_structure-mysql.sql @@ -4,6 +4,22 @@ -- ------------------------------------------------------ -- Server version 4.0.24_Debian-10-log +-- +-- Table structure for table `piwigo_activity` +-- + +DROP TABLE IF EXISTS `piwigo_activity`; +CREATE TABLE `piwigo_activity` ( + `activity_id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `object` varchar(255) NOT NULL, + `object_id` int(11) unsigned NOT NULL, + `action` varchar(255) NOT NULL, + `performed_by` mediumint(8) unsigned NOT NULL, + `occured_on` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `details` varchar(255) DEFAULT NULL, + PRIMARY KEY (`activity_id`) +) ENGINE=MyISAM; + -- -- Table structure for table `piwigo_caddie` -- diff --git a/picture.php b/picture.php index c6fb4cde1..252652488 100644 --- a/picture.php +++ b/picture.php @@ -316,6 +316,7 @@ UPDATE '.CATEGORIES_TABLE.' WHERE id = '.$page['category']['id'].' ;'; pwg_query($query); + pwg_activity('album', $page['category']['id'], 'edit', 'script='.script_basename().' action='.$_GET['action'].' image_id='.$page['image_id']); include_once(PHPWG_ROOT_PATH.'admin/include/functions.php'); invalidate_user_cache();