diff --git a/database.sql b/database.sql index eeba76f7ee..f0cb98c7a1 100644 --- a/database.sql +++ b/database.sql @@ -82,6 +82,7 @@ CREATE TABLE IF NOT EXISTS `contact` ( CREATE TABLE IF NOT EXISTS `group` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `uid` int(10) unsigned NOT NULL, + `deleted` tinyint(1) NOT NULL DEFAULT '0', `name` char(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; diff --git a/include/group.php b/include/group.php index 848db43bd3..dfec4afa03 100644 --- a/include/group.php +++ b/include/group.php @@ -38,7 +38,7 @@ function group_rmv($uid,$name) { ); // remove group - $r = q("DELETE FROM `group` WHERE `uid` = %d AND `id` = %d LIMIT 1", + $r = q("UPDATE GROUP SET `deleted` = 1 WHERE `uid` = %d AND `id` = %d LIMIT 1", intval($uid), dbesc($name) ); @@ -46,7 +46,6 @@ function group_rmv($uid,$name) { $ret = $r; } - // TODO!! remove this group from all content ACL's !! return $ret; } @@ -144,7 +143,7 @@ $o .= <<< EOT EOT; - $r = q("SELECT * FROM `group` WHERE `uid` = %d", + $r = q("SELECT * FROM `group` WHERE `deleted` = 0 AND `uid` = %d", intval($_SESSION['uid']) ); if(count($r)) { diff --git a/mod/group.php b/mod/group.php index 099ae7dd36..a3bd750f90 100644 --- a/mod/group.php +++ b/mod/group.php @@ -15,7 +15,7 @@ function group_init(&$a) { function group_post(&$a) { if(! local_user()) { - notice("Access denied." . EOL); + notice( t('Permission denied.') . EOL); return; } @@ -23,13 +23,13 @@ function group_post(&$a) { $name = notags(trim($_POST['groupname'])); $r = group_add($_SESSION['uid'],$name); if($r) { - notice("Group created." . EOL ); + notice( t('Group created.') . EOL ); $r = group_byname($_SESSION['uid'],$name); if($r) goaway($a->get_baseurl() . '/group/' . $r); } else - notice("Could not create group." . EOL ); + notice( t('Could not create group.') . EOL ); goaway($a->get_baseurl() . '/group'); return; // NOTREACHED } @@ -39,7 +39,7 @@ function group_post(&$a) { intval($_SESSION['uid']) ); if(! count($r)) { - notice("Group not found." . EOL ); + notice( t('Group not found.') . EOL ); goaway($a->get_baseurl() . '/contacts'); } $group = $r[0]; @@ -51,7 +51,7 @@ function group_post(&$a) { intval($group['id']) ); if($r) - notice("Group name changed." . EOL ); + notice( t('Group name changed.') . EOL ); } $members = $_POST['group_members_select']; array_walk($members,'validate_members'); @@ -73,7 +73,7 @@ function group_post(&$a) { } } if($result) - notice("Membership list updated." . EOL); + notice( t('Membership list updated.') . EOL); $a->page['aside'] = group_side(); } @@ -82,7 +82,7 @@ function group_post(&$a) { function group_content(&$a) { if(! local_user()) { - notice("Access denied." . EOL); + notice( t('Permission denied') . EOL); return; } @@ -94,7 +94,22 @@ function group_content(&$a) { } - + if(($a->argc == 3) && ($a->argv[1] == 'drop')) { + if(intval($argv[2])) { + $r = q("SELECT `name` FROM `group` WHERE `id` = %d AND `uid` = %d LIMIT 1", + intval($argv[2]), + intval($_SESSION['uid']) + ); + if(count($r)) + $result = group_rmv($_SESSION['uid'],$r[0]['name']); + if($result) + notice( t('Group removed.') . EOL); + else + notice( t('Unable to remove group.') . EOL); + } + goaway($a->get_baseurl() . '/group'); + return; // NOTREACHED + } if(($a->argc == 2) && (intval($a->argv[1]))) { @@ -104,7 +119,7 @@ function group_content(&$a) { intval($_SESSION['uid']) ); if(! count($r)) { - notice("Group not found." . EOL ); + notice( t("Group not found.") . EOL ); goaway($a->get_baseurl() . '/contacts'); } $group = $r[0]; @@ -115,10 +130,17 @@ function group_content(&$a) { $preselected[] = $p['id']; } + $drop_tpl = file_get_contents('view/group_drop.tpl'); + $drop_txt = replace_macros($drop_tpl, array( + '$id' => $group['id'], + '$delete' => t('Delete') + )); + $tpl = file_get_contents('view/group_edit.tpl'); $o .= replace_macros($tpl, array( '$gid' => $group['id'], '$name' => $group['name'], + '$drop' => $drop_txt, '$selector' => contact_select('group_members_select','group_members_select',$preselected,25) )); diff --git a/mod/network.php b/mod/network.php index 17a670b93c..59f826fd93 100644 --- a/mod/network.php +++ b/mod/network.php @@ -73,7 +73,7 @@ function network_content(&$a, $update = false) { $sql_extra = ''; if($group) { - $r = q("SELECT `id` FROM `group` WHERE `id` = %d AND `uid` = %d LIMIT 1", + $r = q("SELECT `name`, `id` FROM `group` WHERE `id` = %d AND `uid` = %d LIMIT 1", intval($group), intval($_SESSION['uid']) ); @@ -87,6 +87,7 @@ function network_content(&$a, $update = false) { $contacts[] = $_SESSION['cid']; $contact_str = implode(',',$contacts); $sql_extra = dbesc(" AND `contact`.`id` IN ( $contact_str ) "); + $o = '