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

getUsersAccessFromSite has a different behaviour if only one member #3349

Closed
anonymous-matomo-user opened this issue Aug 27, 2012 · 3 comments
Assignees
Labels
Bug For errors / faults / flaws / inconsistencies etc. Major Indicates the severity or impact or benefit of an issue is much higher than normal but not critical.
Milestone

Comments

@anonymous-matomo-user
Copy link

As explained on the forum (http://forum.piwik.org/read.php?2,92955), there is a weird behaviour when using getUsersAccessFromSite when there is only on user who has rights on a website.

Expected output, with only one user (named admin):

[{"admin":"view"}]

Actual output:

$ curl 'http://www.myinternaltest.net/?module=API&method=UsersManager.getUsersAccessFromSite&format=JSON&token_auth=b9848776994b4111d8d010f7ed9b3ca5&idSite=1'
[["view"]]

Two users:

$ curl 'http://www.myinternaltest.net/?module=API&method=UsersManager.getUsersAccessFromSite&format=JSON&token_auth=b9848776994b4111d8d010f7ed9b3ca5&idSite=1'
[{"admin":"view","miaou":"view"}]

A test I made was to wrap $return with an array definition, which looks like working for the API, but breaks other features in the core piwik obviously (for instance on the user listing page).
Nevertheless, the patch is

--- API.php.old 2012-08-27 13:25:22.000000000 +0000
+++ API.php     2012-08-27 13:26:14.000000000 +0000
@@ -172,7 +172,7 @@
                {
                        $return[$user['login']][] = $user['idsite'];
                }
-               return $return;
+               return array($return);

        }

which produces the output:

$ curl 'http://www.myinternaltest.net/?module=API&method=UsersManager.getUsersAccessFromSite&format=JSON&token_auth=b9848776994b4111d8d010f7ed9b3ca5&idSite=1'
[{"miaou":"view"}]

Keywords: usersmanager accessfromsite

@mattab
Copy link
Member

mattab commented Oct 15, 2012

A related issue was described in: http://forum.piwik.org/read.php?2,89606
"Fatal error: Call to a member function getFirstRow() on widgets "

I think these are both the same root cause, the wrong re-write of the data when there's only one element.



Removing and adding widget solves problem. But only for a short time, until user selects one column(metrics) for graph. For example (avg_time_on_site).

1) Then calling API VisitsSummary.get results in table with single column. avg_time_on_site
2) After that API\ResponseBuilder collapses it according to

$columns = $dataTable->getFirstRow()->getColumns();
                if(count($columns) == 1)
                {
                    $values = array_values($columns);
                    return $values[0];
                }


3) The result is non-object and have no getFirstRow() function

I solved it adding some extra columns to visits summary to be present all the time:

file: plugins/VisitsSummary/API.php line 62
$columns = array_merge($columns, $tempColumns, array('nb_visits', 'nb_uniq_visitors'));


But it may cause some bugs I believe. So if this bug explanation makes sense - please tell how to fix that correct.


@mattab
Copy link
Member

mattab commented Oct 19, 2012

This is a bug that will be great to have fixed as it could strike in the most unexpected moments. @capedfuzz let me know what you think about this.

@diosmosis
Copy link
Member

(In [7648]) Refs #1253, fixes #3349, fix bugs and regressions in annotations and tweaked the UI a bit.

This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug For errors / faults / flaws / inconsistencies etc. Major Indicates the severity or impact or benefit of an issue is much higher than normal but not critical.
Projects
None yet
Development

No branches or pull requests

3 participants