Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

remove user #15

Closed
nrtszr opened this issue Aug 20, 2019 · 5 comments
Closed

remove user #15

nrtszr opened this issue Aug 20, 2019 · 5 comments

Comments

@nrtszr
Copy link

nrtszr commented Aug 20, 2019

don't work user

$out = $client->write(['/ip/hotspot/user/remove', '[find name=34342]'])->read();

@EvilFreelancer
Copy link
Owner

EvilFreelancer commented Aug 20, 2019

Hello! Sure it will not work :) But do not worry, try this:

$out = $client->query('/ip/hotspot/user/remove', ['name', '34342'])->read();

This mean: execute query /ip/hotspot/user/remove for items where name is 34342, then return results, you may use ->read(false) for getting RAW results from router.


Same in OOP style:

$query = new Query('/ip/hotspot/user/remove');
$query->where('name', '34342');

$out = $client->query($query)->read();

@nrtszr
Copy link
Author

nrtszr commented Aug 20, 2019

hi,
$out = $client->query('/ip/hotspot/user/remove', ['name', '34342'])->read();

Result:
Array ( )

Don't remove

@nrtszr
Copy link
Author

nrtszr commented Aug 20, 2019

if this code:
$query = new Query('/ip/hotspot/user/remove');
$query->where('name', '34342');
$out = $client->query($query)->read();

Result:
Fatal error: Uncaught Error: Class 'Query' not found in a.php:23 Stack trace: #0 {main} thrown in

@nrtszr
Copy link
Author

nrtszr commented Aug 20, 2019

add
use \RouterOS\Query;

Code:

    $query = new Query('/ip/hotspot/user/remove');
    $query->where('name', '34342');

    $out = $client->query($query)->read();

Result:
Fatal error: Uncaught TypeError: Argument 1 passed to RouterOS\Client::query() must be of the type string, object given, called in D:\xampp\htdocs\mikrotik\a.php on line 30 and defined in D:\xampp\htdocs\mikrotik\vendor\evilfreelancer\routeros-api-php\src\Client.php:114 Stack trace: #0 mikrotik\a.php(30): RouterOS\Client->query(Object(RouterOS\Query)) #1 {main} thrown in mikrotik\vendor\evilfreelancer\routeros-api-php\src\Client.php on line 114

@EvilFreelancer
Copy link
Owner

EvilFreelancer commented Aug 20, 2019

Fatal error: Uncaught TypeError: Argument 1 passed to RouterOS\Client::query() must be of the type string, object given, called in D:\xampp\htdocs\mikrotik\a.php on line 30 and defined in D:\xampp\htdocs\mikrotik\vendor\evilfreelancer\routeros-api-php\src\Client.php:114 Stack trace: #0 mikrotik\a.php(30): RouterOS\Client->query(Object(RouterOS\Query)) #1 {main} thrown in mikrotik\vendor\evilfreelancer\routeros-api-php\src\Client.php on line 114

This is a very interesting bug with Query object (fix will be in 1.0.1).

Now about removing issue, I found sollution on mikrotik forum, unfortinatly you can't use filtering if you want to remove something without ID of this object. First you need to get ID of user, then remove this user by their ID. Something like this:

$user = $client->query('/ip/hotspot/user/print', ['name', '34342'])->read(); // Here should be at least one item

// If item's ID is exist, then remove item by it
if (isset($user[0]['.id'])) {
    $userId = $user[0]['.id'];
    $removeUser = $client->query('/ip/hotspot/user/remove', ['.id', $userId])->read();
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants