mirror of
https://github.com/Piwigo/Piwigo.git
synced 2026-08-09 18:23:18 +02:00
table user_category dropped
git-svn-id: http://piwigo.org/svn/trunk@423 68402e56-0260-453c-a942-63ccdbb3a9ee
This commit is contained in:
@@ -275,12 +275,6 @@ function delete_user( $user_id )
|
||||
$query.= ';';
|
||||
mysql_query( $query );
|
||||
|
||||
// destruction of the categories informations linked with the user
|
||||
$query = 'DELETE FROM '.PREFIX_TABLE.'user_category';
|
||||
$query.= ' WHERE user_id = '.$user_id;
|
||||
$query.= ';';
|
||||
mysql_query( $query );
|
||||
|
||||
// destruction of the user
|
||||
$query = 'DELETE FROM '.USERS_TABLE;
|
||||
$query.= ' WHERE id = '.$user_id;
|
||||
@@ -630,61 +624,6 @@ function get_all_subcats_ids( $category_id )
|
||||
return array_unique( $ids );
|
||||
}
|
||||
|
||||
/**
|
||||
* prepares the query to update the table user_category
|
||||
*
|
||||
* Prepares the query (global variable $values) to update table
|
||||
* user_category : for a couple (user,category) the number of sub-categories
|
||||
* and the last date of the category (all sub-categories taken into
|
||||
* account). It also calls function update_uppercats for each category. The
|
||||
* function is recursive.
|
||||
*
|
||||
* @param array $categories
|
||||
* @return void
|
||||
*/
|
||||
function update_user_category( $categories )
|
||||
{
|
||||
global $page,$user_restrictions,$value_num,$values;
|
||||
|
||||
foreach ( $categories as $category ) {
|
||||
// recursive call
|
||||
update_user_category( $category['subcats'] );
|
||||
// 1. update the table user_category
|
||||
foreach ( $user_restrictions as $user_id => $restrictions ) {
|
||||
// if the category is forbidden to this user, go to next user
|
||||
if ( in_array( $category['id'], $restrictions ) ) continue;
|
||||
|
||||
// how many sub_categories for this user ?
|
||||
$user_subcats = array_diff(
|
||||
$page['plain_structure'][$category['id']]['direct_subcats_ids'],
|
||||
$restrictions );
|
||||
$user_nb_subcats = count( array_unique( $user_subcats ) );
|
||||
// last date of the category
|
||||
$user_all_subcats = array_unique( array_diff(
|
||||
$page['plain_structure'][$category['id']]['all_subcats_ids'],
|
||||
$restrictions ) );
|
||||
|
||||
$query = 'SELECT MAX(date_last) AS last_date';
|
||||
$query.= ' FROM '.CATEGORIES_TABLE;
|
||||
$query.= ' WHERE id IN ('.$category['id'];
|
||||
if ( count( $user_all_subcats ) > 0 )
|
||||
$query.= ','.implode( ',', $user_all_subcats );
|
||||
$query.= ')';
|
||||
$query.= ';';
|
||||
$row = mysql_fetch_array( mysql_query( $query ) );
|
||||
|
||||
// insert a new line in database
|
||||
if ( $value_num++ > 0 ) $values.= ', ';
|
||||
else $values.= ' ';
|
||||
$values.= '('.$user_id.",".$category['id'];
|
||||
if ( isset( $row['last_date'] ) ) $values.= ",'".$row['last_date']."'";
|
||||
else $values.= ',NULL';
|
||||
$values.= ','.$user_nb_subcats.')';
|
||||
}
|
||||
update_uppercats( $category['id'] );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* updates the column categories.uppercats
|
||||
*
|
||||
@@ -797,118 +736,6 @@ function get_user_restrictions( $user_id, $user_status,
|
||||
return array_unique( $forbidden );
|
||||
}
|
||||
|
||||
/**
|
||||
* finalizes operation for user_category table update
|
||||
*
|
||||
* This function is called by synchronization_*. It creates the
|
||||
* $page['plain_structure'] and $page['structure'], get the SQL query to
|
||||
* update user_category, clean user_category, and finally update the
|
||||
* table. The users updates depends on the global array $user_restrictions.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function synchronize()
|
||||
{
|
||||
global $user_restrictions,$page,$values;
|
||||
|
||||
update_user_category( $page['structure'] );
|
||||
|
||||
// cleaning user_category table for users to update
|
||||
foreach( $user_restrictions as $user_id => $restrictions ) {
|
||||
$query = 'DELETE';
|
||||
$query.= ' FROM '.USER_CATEGORY_TABLE;
|
||||
$query.= ' WHERE user_id = '.$user_id;
|
||||
$query.= ';';
|
||||
mysql_query( $query );
|
||||
}
|
||||
|
||||
$query = 'INSERT INTO '.USER_CATEGORY_TABLE;
|
||||
$query.= ' (user_id,category_id,date_last,nb_sub_categories) VALUES ';
|
||||
$query.= $values;
|
||||
$query.= ';';
|
||||
mysql_query( $query );
|
||||
}
|
||||
|
||||
/**
|
||||
* synchronizes all users calculated informations
|
||||
*
|
||||
* fills global array $user_restrictions with all users and related
|
||||
* restrictions before calling synchronize.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function synchronize_all_users()
|
||||
{
|
||||
global $user_restrictions,$page;
|
||||
|
||||
$page['plain_structure'] = get_plain_structure();
|
||||
$page['structure'] = create_structure( '' );
|
||||
|
||||
$user_restrictions = array();
|
||||
|
||||
$query = 'SELECT id';
|
||||
$query.= ' FROM '.USERS_TABLE;
|
||||
$query.= ';';
|
||||
$result = mysql_query( $query );
|
||||
while ( $row = mysql_fetch_array( $result ) )
|
||||
{
|
||||
$user_restrictions[$row['id']] = update_user_restrictions( $row['id'] );
|
||||
}
|
||||
synchronize();
|
||||
}
|
||||
|
||||
/**
|
||||
* synchronizes 1 user calculated informations
|
||||
*
|
||||
* fills global array $user_restrictions with the user id and its related
|
||||
* restrictions before calling synchronize.
|
||||
*
|
||||
* @param int $user_id
|
||||
* @return void
|
||||
*/
|
||||
function synchronize_user( $user_id )
|
||||
{
|
||||
global $user_restrictions,$page;
|
||||
|
||||
$page['plain_structure'] = get_plain_structure();
|
||||
$page['structure'] = create_structure( '' );
|
||||
|
||||
$user_restrictions = array();
|
||||
$user_restrictions[$user_id] = update_user_restrictions( $user_id );
|
||||
synchronize();
|
||||
}
|
||||
|
||||
/**
|
||||
* synchronizes all users (belonging to the group) calculated informations
|
||||
*
|
||||
* fills global array $user_restrictions with all users and related
|
||||
* restrictions before calling synchronize.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function synchronize_group( $group_id )
|
||||
{
|
||||
global $user_restrictions,$page;
|
||||
|
||||
$page['plain_structure'] = get_plain_structure();
|
||||
$page['structure'] = create_structure( '' );
|
||||
|
||||
$user_restrictions = array();
|
||||
|
||||
$query = 'SELECT id';
|
||||
$query.= ' FROM '.USERS_TABLE;
|
||||
$query.= ', '.USER_GROUP_TABLE;
|
||||
$query.= ' WHERE group_id = '.$group_id;
|
||||
$query.= ' AND id = user_id';
|
||||
$query.= ';';
|
||||
$result = mysql_query( $query );
|
||||
while ( $row = mysql_fetch_array( $result ) )
|
||||
{
|
||||
$user_restrictions[$row['id']] = update_user_restrictions( $row['id'] );
|
||||
}
|
||||
synchronize();
|
||||
}
|
||||
|
||||
/**
|
||||
* updates the calculated data users.forbidden_categories, it includes
|
||||
* sub-categories of the direct forbidden categories
|
||||
|
||||
@@ -763,11 +763,6 @@ if ( isset( $_GET['update'] )
|
||||
ordering('NULL');
|
||||
$end = get_moment();
|
||||
echo get_elapsed_time( $start, $end ).' for update_category( all )<br />';
|
||||
|
||||
$start = get_moment();
|
||||
synchronize_all_users();
|
||||
$end = get_moment();
|
||||
echo get_elapsed_time( $start, $end ).' for synchronize_all_users<br />';
|
||||
}
|
||||
//----------------------------------------------------------- sending html code
|
||||
$template->assign_var_from_handle('ADMIN_CONTENT', 'update');
|
||||
|
||||
@@ -51,7 +51,6 @@ define('IMAGES_TABLE', $table_prefix.'images');
|
||||
define('SESSIONS_TABLE', $table_prefix.'sessions');
|
||||
define('SITES_TABLE', $table_prefix.'sites');
|
||||
define('USER_ACCESS_TABLE', $table_prefix.'user_access');
|
||||
define('USER_CATEGORY_TABLE', $table_prefix.'user_category');
|
||||
define('USER_GROUP_TABLE', $table_prefix.'user_group');
|
||||
define('USERS_TABLE', $table_prefix.'users');
|
||||
define('WAITING_TABLE', $table_prefix.'waiting');
|
||||
|
||||
@@ -25,6 +25,21 @@
|
||||
// | USA. |
|
||||
// +-----------------------------------------------------------------------+
|
||||
|
||||
/**
|
||||
* Provides functions to handle categories.
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Is the category accessible to the connected user ?
|
||||
*
|
||||
* Note : if the user is not authorized to see this category, page creation
|
||||
* ends (exit command in this function)
|
||||
*
|
||||
* @param int category id to verify
|
||||
* @return void
|
||||
*/
|
||||
function check_restrictions( $category_id )
|
||||
{
|
||||
global $user,$lang;
|
||||
@@ -38,10 +53,23 @@ function check_restrictions( $category_id )
|
||||
}
|
||||
}
|
||||
|
||||
// the check_cat_id function check whether the $cat is a right parameter :
|
||||
// - $cat is numeric and corresponds to a category in the database
|
||||
// - $cat equals 'fav' (for favorites)
|
||||
// - $cat equals 'search' (when the result of a search is displayed)
|
||||
/**
|
||||
* Checks whether the argument is a right parameter category id
|
||||
*
|
||||
* The argument is a right parameter if corresponds to one of these :
|
||||
*
|
||||
* - is numeric and corresponds to a category in the database
|
||||
* - is equals 'fav' (for favorites)
|
||||
* - is equals 'search' (when the result of a search is displayed)
|
||||
* - is equals 'most_visited'
|
||||
* - is equals 'best_rated'
|
||||
* - is equals 'recent'
|
||||
*
|
||||
* The function fills the global var $page['cat'] and returns nothing
|
||||
*
|
||||
* @param mixed category id or special category name
|
||||
* @return void
|
||||
*/
|
||||
function check_cat_id( $cat )
|
||||
{
|
||||
global $page;
|
||||
@@ -78,15 +106,12 @@ function get_user_plain_structure()
|
||||
{
|
||||
global $page,$user;
|
||||
|
||||
$infos = array( 'name','id','uc.date_last','nb_images','dir','id_uppercat',
|
||||
'rank','site_id','nb_sub_categories','uppercats');
|
||||
$infos = array( 'name','id','date_last','nb_images','dir','id_uppercat',
|
||||
'rank','site_id','uppercats');
|
||||
|
||||
$query = 'SELECT '.implode( ',', $infos );
|
||||
$query.= ' FROM '.CATEGORIES_TABLE.' AS c';
|
||||
// $query.= ' ,'.PREFIX_TABLE.'user_category AS uc';
|
||||
$query.= ' INNER JOIN '.USER_CATEGORY_TABLE.' AS uc';
|
||||
$query.= ' ON c.id = uc.category_id';
|
||||
$query.= ' WHERE user_id = '.$user['id'];
|
||||
$query.= ' FROM '.CATEGORIES_TABLE;
|
||||
$query.= ' WHERE 1 = 1'; // stupid but permit using AND after it !
|
||||
if ( !$user['expand'] )
|
||||
{
|
||||
$query.= ' AND (id_uppercat is NULL';
|
||||
@@ -101,7 +126,6 @@ function get_user_plain_structure()
|
||||
$query.= ' AND id NOT IN ';
|
||||
$query.= '('.$user['forbidden_categories'].')';
|
||||
}
|
||||
// $query.= ' AND c.id = uc.category_id';
|
||||
$query.= ' ORDER BY id_uppercat ASC, rank ASC';
|
||||
$query.= ';';
|
||||
|
||||
@@ -113,15 +137,15 @@ function get_user_plain_structure()
|
||||
foreach ( $infos as $info ) {
|
||||
if ( $info == 'uc.date_last')
|
||||
{
|
||||
if (empty($row['date_last']))
|
||||
{
|
||||
$category['date_last']= 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( empty( $row['date_last'] ) )
|
||||
{
|
||||
$category['date_last'] = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
list($year,$month,$day) = explode( '-', $row['date_last'] );
|
||||
$category['date_last'] = mktime(0,0,0,$month,$day,$year);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if ( isset( $row[$info] ) ) $category[$info] = $row[$info];
|
||||
else $category[$info] = '';
|
||||
@@ -233,17 +257,23 @@ function count_user_total_images()
|
||||
return $row['total'];
|
||||
}
|
||||
|
||||
// variables :
|
||||
// $cat['comment']
|
||||
// $cat['dir']
|
||||
// $cat['dir']
|
||||
// $cat['name'] is an array :
|
||||
// - $cat['name'][0] is the lowest cat name
|
||||
// and
|
||||
// - $cat['name'][n] is the most uppercat name findable
|
||||
// $cat['nb_images']
|
||||
// $cat['id_uppercat']
|
||||
// $cat['site_id']
|
||||
/**
|
||||
* Retrieve informations about a category in the database
|
||||
*
|
||||
* Returns an array with following keys :
|
||||
*
|
||||
* - comment
|
||||
* - dir : directory, might be empty for virtual categories
|
||||
* - name : an array with indexes from 0 (lowest cat name) to n (most
|
||||
* uppercat name findable)
|
||||
* - nb_images
|
||||
* - id_uppercat
|
||||
* - site_id
|
||||
* -
|
||||
*
|
||||
* @param int category id
|
||||
* @return array
|
||||
*/
|
||||
function get_cat_info( $id )
|
||||
{
|
||||
$infos = array( 'nb_images','id_uppercat','comment','site_id','galleries_url'
|
||||
|
||||
@@ -153,23 +153,6 @@ function register_user( $login, $password, $password_conf,
|
||||
$query.= ';';
|
||||
mysql_query ( $query );
|
||||
}
|
||||
// 6. has the same categories informations than guest
|
||||
$query = 'SELECT category_id,date_last,nb_sub_categories';
|
||||
$query.= ' FROM '.PREFIX_TABLE.'user_category AS uc';
|
||||
$query.= ', '.PREFIX_TABLE.'users AS u';
|
||||
$query.= " WHERE u.username = 'guest'";
|
||||
$query.= ' AND uc.user_id = u.id';
|
||||
$query.= ';';
|
||||
$result = mysql_query( $query );
|
||||
while( $row = mysql_fetch_array( $result ) )
|
||||
{
|
||||
$query = 'INSERT INTO '.PREFIX_TABLE.'user_category';
|
||||
$query.= ' (user_id,category_id,date_last,nb_sub_categories) VALUES';
|
||||
$query.= ' ('.$user_id.','.$row['category_id'];
|
||||
$query.= ",'".$row['date_last']."',".$row['nb_sub_categories'].')';
|
||||
$query.= ';';
|
||||
mysql_query ( $query );
|
||||
}
|
||||
}
|
||||
return $error;
|
||||
}
|
||||
|
||||
@@ -11,7 +11,6 @@ table:images
|
||||
table:sessions
|
||||
table:sites
|
||||
table:user_access
|
||||
table:user_category
|
||||
table:user_group
|
||||
table:users
|
||||
table:waiting
|
||||
@@ -75,10 +74,6 @@ column:id table:sites type:tinyint
|
||||
column:galleries_url table:sites type:varchar nullable:Y length:255 binary:N
|
||||
column:user_id table:user_access type:smallint nullable:Y length:5 signed:N
|
||||
column:cat_id table:user_access type:smallint nullable:Y length:5 signed:N
|
||||
column:user_id table:user_category type:smallint nullable:Y length:5 signed:N
|
||||
column:category_id table:user_category type:smallint nullable:Y length:5 signed:N
|
||||
column:date_last table:user_category type:date nullable:N
|
||||
column:nb_sub_categories table:user_category type:smallint nullable:Y length:5 signed:N
|
||||
column:user_id table:user_group type:smallint nullable:Y length:5 signed:N
|
||||
column:group_id table:user_group type:smallint nullable:Y length:5 signed:N
|
||||
column:id table:users type:smallint nullable:Y length:5 signed:N
|
||||
@@ -122,8 +117,6 @@ PK:sessions_pk table:sessions column:id
|
||||
PK:sites_pk table:sites column:id
|
||||
PK:user_access_pk table:user_access column:user_id
|
||||
PK:user_access_pk table:user_access column:cat_id
|
||||
PK:user_category_pk table:user_category column:user_id
|
||||
PK:user_category_pk table:user_category column:category_id
|
||||
PK:user_group_pk table:user_group column:group_id
|
||||
PK:user_group_pk table:user_group column:user_id
|
||||
PK:users_pk table:users column:id
|
||||
|
||||
@@ -175,19 +175,6 @@ CREATE TABLE phpwebgallery_user_access (
|
||||
PRIMARY KEY (user_id,cat_id)
|
||||
) TYPE=MyISAM;
|
||||
|
||||
--
|
||||
-- Table structure for table 'phpwebgallery_user_category'
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS phpwebgallery_user_category;
|
||||
CREATE TABLE phpwebgallery_user_category (
|
||||
user_id smallint(5) unsigned NOT NULL default '0',
|
||||
category_id smallint(5) unsigned NOT NULL default '0',
|
||||
date_last date default NULL,
|
||||
nb_sub_categories smallint(5) unsigned NOT NULL default '0',
|
||||
PRIMARY KEY (user_id,category_id)
|
||||
) TYPE=MyISAM;
|
||||
|
||||
--
|
||||
-- Table structure for table 'phpwebgallery_user_group'
|
||||
--
|
||||
|
||||
Reference in New Issue
Block a user