diff --git a/admin/ajax/creategroup.php b/admin/ajax/creategroup.php index ab99d2a5bee0ec14b6f9fccaaffc2044935d77b8..bfa4099b8899436b39db16a5900f8d0eba413d8e 100644 --- a/admin/ajax/creategroup.php +++ b/admin/ajax/creategroup.php @@ -12,23 +12,14 @@ if( !OC_USER::isLoggedIn() || !OC_GROUP::inGroup( $_SESSION['user_id'], 'admin' exit(); } -$groups = array(); -if( isset( $_POST["groups"] )){ - $groups = $_POST["groups"]; -} -$username = $_POST["username"]; -$password = $_POST["password"]; - -foreach( $groups as $i ){ - OC_GROUP::addToGroup( $username, $i ); -} +$name = $_POST["groupname"]; // Return Success story -if( OC_USER::createUser( $username, $password )){ - echo json_encode( array( "status" => "success", "data" => array( "username" => $username, "groups" => implode( ", ", $groups )))); +if( OC_GROUP::createGroup( $name )){ + echo json_encode( array( "status" => "success", "data" => array( "groupname" => $name ))); } else{ - echo json_encode( array( "status" => "error", "data" => array( "message" => "Unable to add user" ))); + echo json_encode( array( "status" => "error", "data" => array( "message" => "Unable to add group" ))); } ?> diff --git a/admin/ajax/createuser.php b/admin/ajax/createuser.php index ab99d2a5bee0ec14b6f9fccaaffc2044935d77b8..4aa082a25e683725f563cf4ace597792c6163982 100644 --- a/admin/ajax/createuser.php +++ b/admin/ajax/createuser.php @@ -19,12 +19,11 @@ if( isset( $_POST["groups"] )){ $username = $_POST["username"]; $password = $_POST["password"]; -foreach( $groups as $i ){ - OC_GROUP::addToGroup( $username, $i ); -} - // Return Success story if( OC_USER::createUser( $username, $password )){ + foreach( $groups as $i ){ + OC_GROUP::addToGroup( $username, $i ); + } echo json_encode( array( "status" => "success", "data" => array( "username" => $username, "groups" => implode( ", ", $groups )))); } else{ diff --git a/admin/ajax/removegroup.php b/admin/ajax/removegroup.php new file mode 100644 index 0000000000000000000000000000000000000000..c7991ba5819ca81d5b470edca56b9fc28f925f5d --- /dev/null +++ b/admin/ajax/removegroup.php @@ -0,0 +1,25 @@ +<?php + +// Init owncloud +require_once('../../lib/base.php'); + +// We send json data +header( "Content-Type: application/jsonrequest" ); + +// Check if we are a user +if( !OC_USER::isLoggedIn() || !OC_GROUP::inGroup( $_SESSION['user_id'], 'admin' )){ + echo json_encode( array( "status" => "error", "data" => array( "message" => "Authentication error" ))); + exit(); +} + +$name = $_POST["groupname"]; + +// Return Success story +if( OC_GROUP::deleteGroup( $name )){ + echo json_encode( array( "status" => "success", "data" => array( "groupname" => $name ))); +} +else{ + echo json_encode( array( "status" => "error", "data" => array( "message" => "Unable to delete group" ))); +} + +?> diff --git a/admin/ajax/removeuser.php b/admin/ajax/removeuser.php new file mode 100644 index 0000000000000000000000000000000000000000..12a27fff58d28c24b0ce56fa6d798076a2b70ea7 --- /dev/null +++ b/admin/ajax/removeuser.php @@ -0,0 +1,25 @@ +<?php + +// Init owncloud +require_once('../../lib/base.php'); + +// We send json data +header( "Content-Type: application/jsonrequest" ); + +// Check if we are a user +if( !OC_USER::isLoggedIn() || !OC_GROUP::inGroup( $_SESSION['user_id'], 'admin' )){ + echo json_encode( array( "status" => "error", "data" => array( "message" => "Authentication error" ))); + exit(); +} + +$name = $_POST["username"]; + +// Return Success story +if( OC_USER::deleteUser( $name )){ + echo json_encode( array( "status" => "success", "data" => array( "username" => $name ))); +} +else{ + echo json_encode( array( "status" => "error", "data" => array( "message" => "Unable to delete user" ))); +} + +?> diff --git a/admin/js/users.js b/admin/js/users.js index 0713cf8e5dcb8bc12ef149fdd980a347753734b9..7cd1ed6f6243c230b8677e8013e0e0e72b0c9a94 100644 --- a/admin/js/users.js +++ b/admin/js/users.js @@ -12,10 +12,15 @@ $(document).ready(function(){ "Create an account": function() { var post = $( "#createuserdata" ).serialize(); $.post( 'ajax/createuser.php', post, function(data){ - var newrow = '<tr><td>' + data.data.username + '</td>'; - newrow = newrow + '<td>' + data.data.groups + '</td>'; - newrow = newrow + '<td><a href="" class="edituser-button">edit</a> | <a class="removeuser-button" href="">remove</a></td></tr>'; - $("#userstable").append( newrow ); + if( data.status == "success" ){ + var newrow = '<tr><td>' + data.data.username + '</td>'; + newrow = newrow + '<td>' + data.data.groups + '</td>'; + newrow = newrow + '<td><a href="" class="edituser-button">edit</a> | <a class="removeuser-button" href="">remove</a></td></tr>'; + $("#userstable").append( newrow ); + } + else{ + alert( "Bug By Jakob (c)" ); + } }); $( this ).dialog( "close" ); }, @@ -61,7 +66,7 @@ $(document).ready(function(){ return false; }); - // Dialog for adding users + // Removing users $( "#removeuser-form" ).dialog({ autoOpen: false, height: 300, @@ -69,6 +74,15 @@ $(document).ready(function(){ modal: true, buttons: { "Remove user": function() { + var post = $( "#removeuserdata" ).serialize(); + $.post( 'ajax/removeuser.php', post, function(data){ + if( data.status == "success" ){ + $( "a[x-uid='"+uid+"']" ).parent().remove(); + } + else{ + alert( "Bug By Jakob (c)" ); + } + }); $( this ).dialog( "close" ); }, Cancel: function() { @@ -76,7 +90,7 @@ $(document).ready(function(){ } }, close: function() { - allFields.val( "" ).removeClass( "ui-state-error" ); + true; } }); @@ -84,10 +98,28 @@ $(document).ready(function(){ .click(function() { uid = $( this ).parent().attr( 'x-uid' ); $("#deleteuserusername").html(uid); + $("#deleteusernamefield").val(uid); $( "#removeuser-form" ).dialog( "open" ); return false; }); + // Add a group + $( "#creategroupbutton" ) + .click(function(){ + var post = $( "#creategroupdata" ).serialize(); + $.post( 'ajax/creategroup.php', post, function(data){ + if( data.status == "success" ){ + var newrow = '<tr><td>' + data.data.groupname + '</td>'; + newrow = newrow + '<td><a class="removegroup-button" href="">remove</a></td></tr>'; + $("#groupstable").append( newrow ); + } + else{ + alert( "something went wrong! sorry!" ); + } + }); + return false; + }); + // Dialog for adding users $( "#removegroup-form" ).dialog({ autoOpen: false, @@ -96,9 +128,14 @@ $(document).ready(function(){ modal: true, buttons: { "Remove group": function(){ - var post = $( "#deletegroupdata" ).serialize(); - $.post( 'ajax/deletegroup.php', post, function(data){ - $( "a[x-gid='"+gid+"']" ).parent().remove(); + var post = $( "#removegroupdata" ).serialize(); + $.post( 'ajax/removegroup.php', post, function(data){ + if( data.status == "success" ){ + $( "a[x-gid='"+gid+"']" ).parent().remove(); + } + else{ + alert( "Bug By Jakob (c)" ); + } }); $( this ).dialog( "close" ); }, @@ -107,7 +144,7 @@ $(document).ready(function(){ } }, close: function(){ - allFields.val( "" ).removeClass( "ui-state-error" ); + true; } }); diff --git a/admin/templates/users.php b/admin/templates/users.php index ce78ffac775d174a710215cf262c72babf73f135..b2172b053999f9a691a90001d08275c4e08d805e 100644 --- a/admin/templates/users.php +++ b/admin/templates/users.php @@ -28,7 +28,7 @@ <a id="adduser-button" href="">New user</a> <h2>Groups</h2> -<form> +<form id="creategroupdata"> <table id="groupstable"> <thead> <tr> @@ -36,6 +36,12 @@ <th></th> </tr> </thead> + <tfoot> + <tr> + <td><input type="text" name="groupname" id="creategroupname" /></td> + <td><button id="creategroupbutton">Create group</button></td> + </tr> + </tfoot> <tbody> <?php foreach($_["groups"] as $group): ?> <tr> @@ -43,17 +49,10 @@ <td x-gid="<?php echo $group["name"]; ?>"><a class="removegroup-button" href="">remove</a></td> </tr> <?php endforeach; ?> - <tr> - <td><input type="text" name="name" /></td> - <td><input type="submit" /></td> - </tr> </tbody> </table> </form> -<a id="addgroup-button" href="">Add group</a> - - <div id="adduser-form" title="Add user"> <form id="createuserdata"> <fieldset> @@ -82,13 +81,13 @@ <div id="removeuser-form" title="Remove user"> <form id="removeuserdata"> Do you really want to delete user <span id="deleteuserusername">$user</span>? - <input type="hidden" name="username" value=""> + <input id="deleteusernamefield" type="hidden" name="username" value=""> </form> </div> <div id="removegroup-form" title="Remove Group"> - <form id="removeuserdata"> + <form id="removegroupdata"> Do you really want to delete group <span id="deletegroupgroupname">$group</span>? - <input id="deletegroupnamefield" type="hidden" name="username" value=""> + <input id="deletegroupnamefield" type="hidden" name="groupname" value=""> </form> </div> diff --git a/lib/Group/backend.php b/lib/Group/backend.php index f34c340be8cfbf4ab6cb07ad787204d2f13b9802..c3f208157e4cf5dc42451471d03f71811a0af1ae 100644 --- a/lib/Group/backend.php +++ b/lib/Group/backend.php @@ -35,6 +35,13 @@ abstract class OC_GROUP_BACKEND { */ public static function createGroup($groupName){} + /** + * Try to delete Group + * + * @param string $groupName The name of the group to delete + */ + public static function deleteGroup($groupName){} + /** * Check if a user belongs to a group * diff --git a/lib/Group/database.php b/lib/Group/database.php index e3e6c825b9f33ab03446d2a2fa6cd03eac0c9421..aea27a3d6d8b7e40567a65ff3a8c6ea05a8e3728 100644 --- a/lib/Group/database.php +++ b/lib/Group/database.php @@ -66,6 +66,18 @@ class OC_GROUP_DATABASE extends OC_GROUP_BACKEND { } } + /** + * Try to delete a group + * + * @param string $groupName The name of the group to delete + */ + public static function deleteGroup( $gid ){ + $query = OC_DB::prepare( "DELETE FROM `*PREFIX*groups` WHERE `gid` = ?" ); + $result = $query->execute( array( $gid )); + + return true; + } + /** * Check if a user belongs to a group * diff --git a/lib/User/backend.php b/lib/User/backend.php index 0483d72bf02f1f98cdc91323f7d1659113ebd5a5..29a1932e193ffe5ac0e8ca47ff327c6382d97e3f 100644 --- a/lib/User/backend.php +++ b/lib/User/backend.php @@ -37,6 +37,12 @@ abstract class OC_USER_BACKEND { */ public static function createUser($username, $password){} + /** + * @brief Delete a new user + * @param $username The username of the user to delete + */ + public static function deleteUser( $username ){} + /** * Try to login a user * diff --git a/lib/User/database.php b/lib/User/database.php index f0b68cf17d7d2af5d35b0ea77ade2a83e8c3654a..5b68d3ff7c2d23e1da9fb995629a4bdde9f2975d 100644 --- a/lib/User/database.php +++ b/lib/User/database.php @@ -64,6 +64,18 @@ class OC_USER_DATABASE extends OC_USER_BACKEND { } } + /** + * Try to delete a user + * + * @param string $username The username of the user to delete + */ + public static function deleteUser( $uid ){ + $query = OC_DB::prepare( "DELETE FROM `*PREFIX*users` WHERE `uid` = ?" ); + $result = $query->execute( array( $uid )); + + return true; + } + /** * Try to login a user * diff --git a/lib/app.php b/lib/app.php index c9e4d534357e881e364708b5ed1dc87629839ecb..19e6df77f84d9ab581de7da7b426b497209cdc42 100644 --- a/lib/app.php +++ b/lib/app.php @@ -318,7 +318,6 @@ class OC_APP{ * -# unzipping it * -# including appinfo/installer.php * -# executing "oc_app_install()" - * -# renaming appinfo/app.sample.php to appinfo/app.php * * It is the task of oc_app_install to create the tables and do whatever is * needed to get the app working. @@ -346,8 +345,6 @@ class OC_APP{ * - pretend: boolean, if set true the system won't do anything * - noupgrade: boolean, if true the function oc_app_upgrade will be * skipped - * - keepappinfo: boolean. If set true, the folder appinfo will not be - * deleted, appinfo/app.php will not be replaced by a new version * * This function works as follows * -# fetching the file @@ -355,7 +352,6 @@ class OC_APP{ * -# unzipping new file * -# including appinfo/installer.php * -# executing "oc_app_upgrade( $options )" - * -# renaming appinfo/app.sample.php to appinfo/app.php */ public static function upgradeApp( $data = array()){ // TODO: write function diff --git a/lib/filestorage.php b/lib/filestorage.php index e7fb9e9d2705676262409874fc87a9d39a42e792..799d07da9db5360a8e9b8f6b5de470036c24e9e7 100644 --- a/lib/filestorage.php +++ b/lib/filestorage.php @@ -378,6 +378,7 @@ class OC_FILESTORAGE_LOCAL extends OC_FILESTORAGE{ } public function fromTmpFile($tmpFile,$path){ +die( "oh nooo!" ); $fileStats = stat($tmpFile); if(rename($tmpFile,$this->datadir.$path)){ touch($this->datadir.$path, $fileStats['mtime'], $fileStats['atime']); @@ -447,7 +448,7 @@ class OC_FILESTORAGE_LOCAL extends OC_FILESTORAGE{ } return $return; } - + /** * @brief get the size of folder and it's content * @param string $path file path @@ -462,7 +463,7 @@ class OC_FILESTORAGE_LOCAL extends OC_FILESTORAGE{ return $this->calculateFolderSize($path); } } - + /** * @brief calulate the size of folder and it's content and cache it * @param string $path file path @@ -493,7 +494,7 @@ class OC_FILESTORAGE_LOCAL extends OC_FILESTORAGE{ } return $size; } - + /** * @brief clear the folder size cache of folders containing a file * @param string $path diff --git a/lib/group.php b/lib/group.php index 6ea8681c631ec3292f161ff34a993342fb255fbd..d8a59a139a5cb99081fee59616cb7c134d1824f0 100644 --- a/lib/group.php +++ b/lib/group.php @@ -78,6 +78,24 @@ class OC_GROUP { } } + /** + * Try to create a new group + * + * @param string $groupName The name of the group to create + */ + public static function createGroup($gid) { + return self::$_backend->createGroup($gid); + } + + /** + * Try to delete Group + * + * @param string $groupName The name of the group to delete + */ + public static function deleteGroup($gid) { + return self::$_backend->deleteGroup($gid); + } + /** * Check if a user belongs to a group * @@ -124,13 +142,4 @@ class OC_GROUP { public static function getGroups() { return self::$_backend->getGroups(); } - - /** - * create a new group - * - * @param string $name Name of the group - */ - public static function createGroup($name) { - return self::$_backend->createGroup($name); - } } diff --git a/lib/user.php b/lib/user.php index d70443b7e61751708353f82a27c6385427d0d355..6cfcc6be488dd5b949495b2175713b340103a299 100644 --- a/lib/user.php +++ b/lib/user.php @@ -95,6 +95,14 @@ class OC_USER { return self::$_backend->createUser( $username, $password ); } + /** + * @brief Delete a new user + * @param $username The username of the user to delete + */ + public static function deleteUser( $username ){ + return self::$_backend->deleteUser( $username ); + } + /** * @brief try to login a user * @param $username The username of the user to log in