Permalink
Browse files

merge r17668 from branch 2.4 to trunk

bug 2733 fixed: when creating a sub-album in a private album with
pwg.categories.add, it is automatically private too.



git-svn-id: http://piwigo.org/svn/trunk@17669 68402e56-0260-453c-a942-63ccdbb3a9ee
  • Loading branch information...
plegall committed Aug 30, 2012
1 parent 62452b9 commit 6beee17904e7a8829fde211dba053993800ab04b
Showing with 75 additions and 67 deletions.
  1. +53 −36 admin/include/functions.php
  2. +20 −29 include/ws_functions.inc.php
  3. +2 −2 ws.php
@@ -1196,7 +1196,7 @@ function move_categories($category_ids, $new_parent = -1)
* @param int parent category id
* @return array with ('info' and 'id') or ('error') key
*/
function create_virtual_category($category_name, $parent_id=null)
function create_virtual_category($category_name, $parent_id=null, $options=array())
{
global $conf, $user;
@@ -1205,16 +1205,54 @@ function create_virtual_category($category_name, $parent_id=null)
{
return array('error' => l10n('The name of an album must not be empty'));
}
$parent_id = !empty($parent_id) ? $parent_id : 'NULL';
$insert = array(
'name' => $category_name,
'rank' => 0,
'commentable' => boolean_to_string($conf['newcat_default_commentable']),
'global_rank' => 0,
);
if ($parent_id != 'NULL')
// is the album commentable?
if (isset($options['commentable']) and is_bool($options['commentable']))
{
$insert['commentable'] = $options['commentable'];
}
else
{
$insert['commentable'] = $conf['newcat_default_commentable'];
}
$insert['commentable'] = boolean_to_string($insert['commentable']);
// is the album temporarily locked? (only visible by administrators,
// whatever permissions) (may be overwritten if parent album is not
// visible)
if (isset($options['visible']) and is_bool($options['visible']))
{
$insert['visible'] = $options['visible'];
}
else
{
$insert['visible'] = $conf['newcat_default_visible'];
}
$insert['visible'] = boolean_to_string($insert['visible']);
// is the album private? (may be overwritten if parent album is private)
if (isset($options['status']) and 'private' == $options['status'])
{
$insert['status'] = 'private';
}
else
{
$insert['status'] = $conf['newcat_default_status'];
}
// any description for this album?
if (isset($options['comment']))
{
$insert['comment'] = strip_tags($options['comment']);
}
if (!empty($parent_id) and is_numeric($parent_id))
{
$query = '
SELECT id, uppercats, global_rank, visible, status
@@ -1233,10 +1271,6 @@ function create_virtual_category($category_name, $parent_id=null)
{
$insert['visible'] = 'false';
}
else
{
$insert['visible'] = boolean_to_string($conf['newcat_default_visible']);
}
// at creation, must a category be public or private ? Warning : if the
// parent category is private, the category is automatically create
@@ -1245,40 +1279,23 @@ function create_virtual_category($category_name, $parent_id=null)
{
$insert['status'] = 'private';
}
else
{
$insert['status'] = $conf['newcat_default_status'];
}
$uppercats_prefix = $parent['uppercats'].',';
}
else
{
$insert['visible'] = boolean_to_string($conf['newcat_default_visible']);
$insert['status'] = $conf['newcat_default_status'];
$insert['global_rank'] = $insert['rank'];
$uppercats_prefix = '';
}
// we have then to add the virtual category
mass_inserts(
CATEGORIES_TABLE,
array(
'site_id', 'name', 'id_uppercat', 'rank', 'commentable',
'visible', 'status', 'global_rank',
),
array($insert)
);
single_insert(CATEGORIES_TABLE, $insert);
$inserted_id = pwg_db_insert_id(CATEGORIES_TABLE);
$query = '
UPDATE
'.CATEGORIES_TABLE.'
SET uppercats = \''.
(isset($parent) ? $parent{'uppercats'}.',' : '').
$inserted_id.
'\'
WHERE id = '.$inserted_id.'
;';
pwg_query($query);
single_update(
CATEGORIES_TABLE,
array('uppercats' => $uppercats_prefix.$inserted_id),
array('id' => $inserted_id)
);
update_global_rank();
@@ -2302,46 +2302,37 @@ function ws_categories_add($params, &$service)
include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
$creation_output = create_virtual_category(
$params['name'],
$params['parent']
);
if (isset($creation_output['error']))
$options = array();
if (!empty($params['status']) and in_array($params['status'], array('private','public')))
{
return new PwgError(500, $creation_output['error']);
$options['status'] = $params['status'];
}
$updates = array();
if ( !empty($params['status']) and in_array($params['status'], array('private','public')) )
if (!empty($params['visible']) and in_array($params['visible'], array('true','false')))
{
$updates['status'] = $params['status'];
$options['visible'] = get_boolean($params['visible']);
}
if ( !empty($params['visible']) and in_array($params['visible'], array('true','false')) )
{
$updates['visible'] = $params['visible'];
}
if ( !empty($params['commentable']) and in_array($params['commentable'], array('true','false')) )
{
$updates['commentable'] = $params['commentable'];
}
if ( !empty($params['comment']) )
if (!empty($params['commentable']) and in_array($params['commentable'], array('true','false')) )
{
$updates['comment'] = strip_tags($params['comment']);
$options['commentable'] = get_boolean($params['commentable']);
}
if (!empty($updates))
if (!empty($params['comment']))
{
single_update(
CATEGORIES_TABLE,
$updates,
array('id'=>$creation_output['id'])
);
$options['comment'] = $params['comment'];
}
if ( isset($updates['status']) and 'private' == $updates['status'] )
$creation_output = create_virtual_category(
$params['name'],
$params['parent'],
$options
);
if (isset($creation_output['error']))
{
add_permission_on_category($creation_output['id'], get_admins());
return new PwgError(500, $creation_output['error']);
}
invalidate_user_cache();
4 ws.php
@@ -309,8 +309,8 @@ function ws_addDefaultMethods( $arr )
'name' => array(),
'parent' => array('default' => null),
'comment' => array('default' => null),
'visible' => array('default' => boolean_to_string($conf['newcat_default_visible'])),
'status' => array('default' => $conf['newcat_default_status']),
'visible' => array('default' => null),
'status' => array('default' => null),
'commentable' => array('default' => 'true'),
),
'administration method only'

0 comments on commit 6beee17

Please sign in to comment.