diff --git a/WordPress/src/main/java/org/wordpress/android/ui/WPActionBarActivity.java b/WordPress/src/main/java/org/wordpress/android/ui/WPActionBarActivity.java
index 7a0817da45aa..c772a08f1c6d 100644
--- a/WordPress/src/main/java/org/wordpress/android/ui/WPActionBarActivity.java
+++ b/WordPress/src/main/java/org/wordpress/android/ui/WPActionBarActivity.java
@@ -963,8 +963,7 @@ public void onSelectItem(){
mShouldFinish = true;
Intent intent = new Intent(WPActionBarActivity.this, StatsActivity.class);
- intent.putExtra("id", WordPress.getCurrentBlog().getLocalTableBlogId());
- intent.putExtra("isNew", true);
+ intent.putExtra(StatsActivity.ARG_LOCAL_TABLE_BLOG_ID, WordPress.getCurrentBlog().getLocalTableBlogId());
intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivityWithDelay(intent);
}
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/notifications/BigBadgeFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/notifications/BigBadgeFragment.java
index 89b638caed27..249e55db1433 100644
--- a/WordPress/src/main/java/org/wordpress/android/ui/notifications/BigBadgeFragment.java
+++ b/WordPress/src/main/java/org/wordpress/android/ui/notifications/BigBadgeFragment.java
@@ -108,15 +108,10 @@ private void showStatsActivity(int remoteBlogId) {
return;
}
- // stats activity is designed to work with the current blog, so switch blogs if necessary
- if (WordPress.getCurrentRemoteBlogId() != remoteBlogId) {
- // TODO: should we show a toast to let user know blog was switched?
- int localBlogId = WordPress.wpDB.getLocalTableBlogIdForRemoteBlogId(remoteBlogId);
- WordPress.setCurrentBlog(localBlogId);
- }
-
+ int localBlogId = WordPress.wpDB.getLocalTableBlogIdForRemoteBlogId(remoteBlogId);
Intent intent = new Intent(getActivity(), StatsActivity.class);
intent.putExtra(StatsActivity.ARG_NO_MENU_DRAWER, true);
+ intent.putExtra(StatsActivity.ARG_LOCAL_TABLE_BLOG_ID, localBlogId);
getActivity().startActivity(intent);
}
}
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsAbsPagedViewFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsAbsPagedViewFragment.java
index 0a00108acab6..1b28ec06ef37 100644
--- a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsAbsPagedViewFragment.java
+++ b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsAbsPagedViewFragment.java
@@ -174,7 +174,7 @@ public void onCursorLoaded(final Uri uri, Cursor cursor) {
long date = cursor.getLong(colDate);
- String timezone = StatsUtils.getBlogTimezone(WordPress.getCurrentBlog());
+ String timezone = StatsUtils.getBlogTimezone(WordPress.getBlog(getLocalTableBlogID()));
long currentDate = timezone != null ? StatsUtils.getCurrentDateMsTZ(timezone) : StatsUtils.getCurrentDateMs();
boolean isToday = timeframe.equals(StatsTimeframe.TODAY.name());
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsAbsViewFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsAbsViewFragment.java
index 27ec4a50a907..55e2e3f2a707 100644
--- a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsAbsViewFragment.java
+++ b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsAbsViewFragment.java
@@ -9,7 +9,7 @@
public abstract class StatsAbsViewFragment extends Fragment {
public static final String TAG = StatsAbsViewFragment.class.getSimpleName();
- public static StatsAbsViewFragment newInstance(StatsViewType viewType) {
+ public static StatsAbsViewFragment newInstance(StatsViewType viewType, int localTableBlogID) {
StatsAbsViewFragment fragment = null;
switch (viewType) {
@@ -51,6 +51,7 @@ public static StatsAbsViewFragment newInstance(StatsViewType viewType) {
Bundle args = new Bundle();
args.putInt(ARGS_VIEW_TYPE, viewType.ordinal());
+ args.putInt(StatsActivity.ARG_LOCAL_TABLE_BLOG_ID, localTableBlogID);
fragment.setArguments(args);
return fragment;
@@ -63,5 +64,9 @@ protected StatsViewType getViewType() {
return StatsViewType.values()[ordinal];
}
+ protected int getLocalTableBlogID() {
+ return getArguments().getInt(StatsActivity.ARG_LOCAL_TABLE_BLOG_ID);
+ }
+
protected abstract String getTitle();
-}
+}
\ No newline at end of file
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsActivity.java b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsActivity.java
index fbae54aecd53..11d0495e53b6 100644
--- a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsActivity.java
+++ b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsActivity.java
@@ -71,7 +71,9 @@ public class StatsActivity extends WPActionBarActivity implements ScrollViewExt.
private static final String SAVED_NAV_POSITION = "SAVED_NAV_POSITION";
private static final String SAVED_WP_LOGIN_STATE = "SAVED_WP_LOGIN_STATE";
private static final int REQUEST_JETPACK = 7000;
+
public static final String ARG_NO_MENU_DRAWER = "no_menu_drawer";
+ public static final String ARG_LOCAL_TABLE_BLOG_ID = "ARG_LOCAL_TABLE_BLOG_ID";
public static final String STATS_GESTURE_SHOW_TAP = "STATS_SHOW_TAP";
public static final String STATS_GESTURE_SINGLE_TAP_CONFIRMED = "STATS_SINGLE_TAP_CONFIRMED";
@@ -83,9 +85,9 @@ public class StatsActivity extends WPActionBarActivity implements ScrollViewExt.
private int mNavPosition = 0;
private int mResultCode = -1;
- private boolean mIsRestoredFromState = false;
private boolean mIsInFront;
private boolean mNoMenuDrawer = false;
+ private int mLocalBlogID = -1;
private boolean mIsUpdatingStats;
private PullToRefreshHelper mPullToRefreshHelper;
@@ -131,10 +133,28 @@ public void onRefreshStarted(View view) {
}
});
- loadStatsFragments();
setTitle(R.string.stats);
- restoreState(savedInstanceState);
+ if (savedInstanceState != null) {
+ mNavPosition = savedInstanceState.getInt(SAVED_NAV_POSITION);
+ mResultCode = savedInstanceState.getInt(SAVED_WP_LOGIN_STATE);
+ mLocalBlogID = savedInstanceState.getInt(ARG_LOCAL_TABLE_BLOG_ID);
+ } else if (getIntent() != null) {
+ mLocalBlogID = getIntent().getIntExtra(ARG_LOCAL_TABLE_BLOG_ID, -1);
+ }
+
+ //Make sure the blog_id passed to this activity is valid and the blog is available within the app
+ final Blog currentBlog = WordPress.getBlog(mLocalBlogID);
+
+ if (currentBlog == null) {
+ AppLog.e(T.STATS, "The blog with local_blog_id " + mLocalBlogID + " cannot be loaded from the DB.");
+ Toast.makeText(this, R.string.stats_no_blog, Toast.LENGTH_LONG).show();
+ finish();
+ return;
+ }
+
+ loadStatsFragments();
+
mDetector = new GestureDetectorCompat(this, new MyGestureListener());
mDetector.setIsLongpressEnabled(false);
@@ -175,20 +195,11 @@ protected void onPause() {
mPullToRefreshHelper.unregisterReceiver(this);
}
- private void restoreState(Bundle savedInstanceState) {
- if (savedInstanceState == null) {
- return;
- }
-
- mNavPosition = savedInstanceState.getInt(SAVED_NAV_POSITION);
- mResultCode = savedInstanceState.getInt(SAVED_WP_LOGIN_STATE);
- mIsRestoredFromState = true;
- }
-
@Override
protected void onSaveInstanceState(Bundle outState) {
outState.putInt(SAVED_NAV_POSITION, mNavPosition);
outState.putInt(SAVED_WP_LOGIN_STATE, mResultCode);
+ outState.putInt(ARG_LOCAL_TABLE_BLOG_ID, mLocalBlogID);
super.onSaveInstanceState(outState);
}
@@ -238,10 +249,10 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == WPComLoginActivity.REQUEST_CODE) {
mResultCode = resultCode;
- if (resultCode == RESULT_OK && !WordPress.getCurrentBlog().isDotcomFlag()) {
- if (StatsUtils.getBlogId() == null) {
+ final Blog currentBlog = WordPress.getBlog(mLocalBlogID);
+ if (resultCode == RESULT_OK && currentBlog != null && !currentBlog.isDotcomFlag()) {
+ if (StatsUtils.getBlogId(mLocalBlogID) == null) {
final Handler handler = new Handler();
- final Blog currentBlog = WordPress.getCurrentBlog();
// Attempt to get the Jetpack blog ID
XMLRPCClientInterface xmlrpcClient = XMLRPCFactory.instantiate(currentBlog.getUri(), "", "");
Map args = ApiHelper.blogOptionsXMLRPCParameters;
@@ -296,38 +307,38 @@ private void loadStatsFragments() {
StatsAbsViewFragment fragment;
if (fm.findFragmentByTag(StatsVisitorsAndViewsFragment.TAG) == null) {
- fragment = StatsAbsViewFragment.newInstance(StatsViewType.VISITORS_AND_VIEWS);
+ fragment = StatsAbsViewFragment.newInstance(StatsViewType.VISITORS_AND_VIEWS, mLocalBlogID);
ft.replace(R.id.stats_visitors_and_views_container, fragment, StatsVisitorsAndViewsFragment.TAG);
}
if (fm.findFragmentByTag(StatsReferrersFragment.TAG) == null) {
- fragment = StatsReferrersFragment.newInstance(StatsViewType.REFERRERS);
+ fragment = StatsReferrersFragment.newInstance(StatsViewType.REFERRERS, mLocalBlogID);
ft.replace(R.id.stats_referrers_container, fragment, StatsReferrersFragment.TAG);
}
if (fm.findFragmentByTag(StatsClicksFragment.TAG) == null) {
- fragment = StatsAbsViewFragment.newInstance(StatsViewType.CLICKS);
+ fragment = StatsAbsViewFragment.newInstance(StatsViewType.CLICKS, mLocalBlogID);
ft.replace(R.id.stats_clicks_container, fragment, StatsClicksFragment.TAG);
}
if (fm.findFragmentByTag(StatsGeoviewsFragment.TAG) == null) {
- fragment = StatsAbsViewFragment.newInstance(StatsViewType.VIEWS_BY_COUNTRY);
+ fragment = StatsAbsViewFragment.newInstance(StatsViewType.VIEWS_BY_COUNTRY, mLocalBlogID);
ft.replace(R.id.stats_geoviews_container, fragment, StatsGeoviewsFragment.TAG);
}
if (fm.findFragmentByTag(StatsSearchEngineTermsFragment.TAG) == null) {
- fragment = StatsAbsViewFragment.newInstance(StatsViewType.SEARCH_ENGINE_TERMS);
+ fragment = StatsAbsViewFragment.newInstance(StatsViewType.SEARCH_ENGINE_TERMS, mLocalBlogID);
ft.replace(R.id.stats_searchengine_container, fragment, StatsSearchEngineTermsFragment.TAG);
}
if (fm.findFragmentByTag(StatsTotalsFollowersAndSharesFragment.TAG) == null) {
- fragment = StatsAbsViewFragment.newInstance(StatsViewType.TOTALS_FOLLOWERS_AND_SHARES);
+ fragment = StatsAbsViewFragment.newInstance(StatsViewType.TOTALS_FOLLOWERS_AND_SHARES, mLocalBlogID);
ft.replace(R.id.stats_totals_followers_shares_container,
fragment, StatsTotalsFollowersAndSharesFragment.TAG);
}
if (fm.findFragmentByTag(StatsTopPostsAndPagesFragment.TAG) == null) {
- fragment = StatsAbsViewFragment.newInstance(StatsViewType.TOP_POSTS_AND_PAGES);
+ fragment = StatsAbsViewFragment.newInstance(StatsViewType.TOP_POSTS_AND_PAGES, mLocalBlogID);
ft.replace(R.id.stats_top_posts_container, fragment, StatsTopPostsAndPagesFragment.TAG);
}
@@ -424,7 +435,7 @@ public void onSuccess() {
return;
}
- if (StatsUtils.getBlogId() == null) {
+ if (StatsUtils.getBlogId(mLocalBlogID) == null) {
// Blog has not returned a jetpack_client_id
stopStatsService();
mPullToRefreshHelper.setRefreshing(false);
@@ -449,7 +460,12 @@ public void onFailure(ApiHelper.ErrorType errorType, String errorMessage, Throwa
private void showJetpackMissingAlert(final Activity currentActivity) {
AlertDialog.Builder builder = new AlertDialog.Builder(currentActivity);
- if (WordPress.getCurrentBlog().isAdmin()) {
+ final Blog currentBlog = WordPress.getBlog(mLocalBlogID);
+ if (currentBlog == null && !isFinishing()) {
+ AppLog.e(T.STATS, "The blog with local_blog_id " + mLocalBlogID + " cannot be loaded from the DB.");
+ Toast.makeText(this, R.string.stats_no_blog, Toast.LENGTH_LONG).show();
+ }
+ if (currentBlog.isAdmin()) {
builder.setMessage(getString(R.string.jetpack_message))
.setTitle(getString(R.string.jetpack_not_found));
builder.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
@@ -458,7 +474,7 @@ public void onClick(DialogInterface dialog, int id) {
currentActivity,
AuthenticatedWebViewActivity.class);
jetpackIntent.putExtra(AuthenticatedWebViewActivity.LOAD_AUTHENTICATED_URL,
- WordPress.getCurrentBlog().getAdminUrl()
+ currentBlog.getAdminUrl()
+ "plugin-install.php?tab=search&s=jetpack+by+wordpress.com"
+ "&plugin-search-input=Search+Plugins");
startActivityForResult(jetpackIntent, REQUEST_JETPACK);
@@ -490,13 +506,13 @@ public boolean onCreateOptionsMenu(Menu menu) {
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.menu_view_stats_full_site) {
- final String blogId = StatsUtils.getBlogId();
+ final String blogId = StatsUtils.getBlogId(mLocalBlogID);
if (blogId == null) {
showJetpackMissingAlert(this);
return true;
}
- StatsUtils.StatsCredentials credentials = StatsUtils.getCurrentBlogStatsCredentials();
+ StatsUtils.StatsCredentials credentials = StatsUtils.getBlogStatsCredentials(mLocalBlogID);
if (credentials == null) {
Toast.makeText(this, R.string.jetpack_message_not_admin, Toast.LENGTH_LONG).show();
return true;
@@ -531,6 +547,8 @@ private void scrollToTop() {
public void onBlogChanged() {
super.onBlogChanged();
+ mLocalBlogID = WordPress.getCurrentBlog().getLocalTableBlogId();
+
stopStatsService();
scrollToTop();
@@ -539,25 +557,25 @@ public void onBlogChanged() {
StatsAbsViewFragment fragment;
- fragment = StatsAbsViewFragment.newInstance(StatsViewType.VISITORS_AND_VIEWS);
+ fragment = StatsAbsViewFragment.newInstance(StatsViewType.VISITORS_AND_VIEWS, mLocalBlogID);
ft.replace(R.id.stats_visitors_and_views_container, fragment, StatsVisitorsAndViewsFragment.TAG);
- fragment = StatsAbsViewFragment.newInstance(StatsViewType.TOP_POSTS_AND_PAGES);
+ fragment = StatsAbsViewFragment.newInstance(StatsViewType.TOP_POSTS_AND_PAGES, mLocalBlogID);
ft.replace(R.id.stats_top_posts_container, fragment, StatsTopPostsAndPagesFragment.TAG);
- fragment = StatsAbsViewFragment.newInstance(StatsViewType.VIEWS_BY_COUNTRY);
+ fragment = StatsAbsViewFragment.newInstance(StatsViewType.VIEWS_BY_COUNTRY, mLocalBlogID);
ft.replace(R.id.stats_geoviews_container, fragment, StatsGeoviewsFragment.TAG);
- fragment = StatsAbsViewFragment.newInstance(StatsViewType.CLICKS);
+ fragment = StatsAbsViewFragment.newInstance(StatsViewType.CLICKS, mLocalBlogID);
ft.replace(R.id.stats_clicks_container, fragment, StatsClicksFragment.TAG);
- fragment = StatsAbsViewFragment.newInstance(StatsViewType.SEARCH_ENGINE_TERMS);
+ fragment = StatsAbsViewFragment.newInstance(StatsViewType.SEARCH_ENGINE_TERMS, mLocalBlogID);
ft.replace(R.id.stats_searchengine_container, fragment, StatsSearchEngineTermsFragment.TAG);
- fragment = StatsAbsViewFragment.newInstance(StatsViewType.TOTALS_FOLLOWERS_AND_SHARES);
+ fragment = StatsAbsViewFragment.newInstance(StatsViewType.TOTALS_FOLLOWERS_AND_SHARES, mLocalBlogID);
ft.replace(R.id.stats_totals_followers_shares_container, fragment, StatsTotalsFollowersAndSharesFragment.TAG);
- fragment = StatsReferrersFragment.newInstance(StatsViewType.REFERRERS);
+ fragment = StatsReferrersFragment.newInstance(StatsViewType.REFERRERS, mLocalBlogID);
ft.replace(R.id.stats_referrers_container, fragment, StatsReferrersFragment.TAG);
ft.commit();
@@ -575,17 +593,15 @@ protected boolean shouldUpdateCurrentBlogStatsInBackground() {
return false;
}
- boolean dotComCredentialsMatch() {
- SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
- String username = settings.getString(WordPress.WPCOM_USERNAME_PREFERENCE, "");
- return username.equals(WordPress.getCurrentBlog().getUsername());
- }
-
private void refreshStats() {
- if (WordPress.getCurrentBlog() == null) {
+ final Blog currentBlog = WordPress.getBlog(mLocalBlogID);
+
+ if (currentBlog == null) {
+ AppLog.w(T.STATS, "Current blog is null. This should never happen here.");
mPullToRefreshHelper.setRefreshing(false);
return;
}
+
if (!NetworkUtils.isNetworkAvailable(this)) {
mPullToRefreshHelper.setRefreshing(false);
return;
@@ -597,20 +613,13 @@ private void refreshStats() {
return;
}
- final Blog currentBlog = WordPress.getCurrentBlog();
- if (currentBlog == null) {
- mPullToRefreshHelper.setRefreshing(false);
- AppLog.w(T.STATS, "Current blog is null. This should never happen here.");
- return;
- }
-
- final String blogId = StatsUtils.getBlogId();
+ final String blogId = StatsUtils.getBlogId(mLocalBlogID);
// Make sure the blogId is available.
if (blogId != null) {
// for self-hosted sites; launch the user into an activity where they can provide their credentials
- if (!WordPress.getCurrentBlog().isDotcomFlag()
- && !WordPress.getCurrentBlog().hasValidJetpackCredentials() && mResultCode != RESULT_CANCELED) {
+ if (!currentBlog.isDotcomFlag()
+ && !currentBlog.hasValidJetpackCredentials() && mResultCode != RESULT_CANCELED) {
if (WordPress.hasValidWPComCredentials(this)) {
// Let's try the global wpcom credentials them first
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
@@ -618,9 +627,9 @@ private void refreshStats() {
String password = WordPressDB.decryptPassword(
settings.getString(WordPress.WPCOM_PASSWORD_PREFERENCE, null)
);
- WordPress.getCurrentBlog().setDotcom_username(username);
- WordPress.getCurrentBlog().setDotcom_password(password);
- WordPress.wpDB.saveBlog(WordPress.getCurrentBlog());
+ currentBlog.setDotcom_username(username);
+ currentBlog.setDotcom_password(password);
+ WordPress.wpDB.saveBlog(currentBlog);
mPullToRefreshHelper.setRefreshing(true);
} else {
startWPComLoginActivity();
@@ -688,7 +697,12 @@ public void onReceive(Context context, Intent intent) {
StatsActivity.this);
// Read the current wpcom username from blog settings, then read it from
// the app wpcom account.
- String username = StringUtils.notNullStr(WordPress.getCurrentBlog().getDotcom_username());
+ final Blog currentBlog = WordPress.getBlog(mLocalBlogID);
+ // If currentBlog is null at this point just exit.
+ if (currentBlog==null) {
+ return;
+ }
+ String username = StringUtils.notNullStr(currentBlog.getDotcom_username());
if (username.equals("")) {
username = settings.getString(WordPress.WPCOM_USERNAME_PREFERENCE, "");
}
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsBarGraphFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsBarGraphFragment.java
index 234ccbea79e1..e4786ca72fe4 100644
--- a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsBarGraphFragment.java
+++ b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsBarGraphFragment.java
@@ -12,7 +12,6 @@
import android.content.Loader;
import android.database.ContentObserver;
import android.database.Cursor;
-import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.content.LocalBroadcastManager;
@@ -61,11 +60,12 @@ public class StatsBarGraphFragment extends Fragment implements LoaderManager.Loa
private int mLastHighlightedBar = -1;
private Tooltip mTooltip;
- public static StatsBarGraphFragment newInstance(StatsBarChartUnit unit) {
+ public static StatsBarGraphFragment newInstance(StatsBarChartUnit unit, int localTableBlogID) {
StatsBarGraphFragment fragment = new StatsBarGraphFragment();
Bundle args = new Bundle();
args.putInt(ARGS_BAR_CHART_UNIT, unit.ordinal());
+ args.putInt(StatsActivity.ARG_LOCAL_TABLE_BLOG_ID, localTableBlogID);
fragment.setArguments(args);
return fragment;
@@ -160,19 +160,9 @@ private void handleBarChartTap(int tappedBar) {
properties.put("unit", unit.name());
AnalyticsTracker.track(AnalyticsTracker.Stat.STATS_TAPPED_BAR_CHART, properties);
if (unit == StatsBarChartUnit.DAY) {
- StatsUtils.StatsCredentials credentials = StatsUtils.getCurrentBlogStatsCredentials();
- if (credentials == null) {
- // Credentials empty, do nothing.
- return;
- }
-
- String statsAuthenticatedUser = credentials.getUsername();
- String statsAuthenticatedPassword = credentials.getPassword();
Intent statsWebViewIntent = new Intent(this.getActivity(), StatsDetailsActivity.class);
- statsWebViewIntent.putExtra(StatsWebViewActivity.STATS_AUTHENTICATED_USER, statsAuthenticatedUser);
- statsWebViewIntent.putExtra(StatsWebViewActivity.STATS_AUTHENTICATED_PASSWD,
- statsAuthenticatedPassword);
statsWebViewIntent.putExtra(StatsActivity.STATS_DETAILS_DATE, date);
+ statsWebViewIntent.putExtra(StatsActivity.ARG_LOCAL_TABLE_BLOG_ID, getLocalTableBlogID());
this.getActivity().startActivity(statsWebViewIntent);
} else {
// Week or Month on the screen. Show a toast.
@@ -184,19 +174,22 @@ private void handleBarChartTap(int tappedBar) {
}
}
-
private StatsBarChartUnit getBarChartUnit() {
int ordinal = getArguments().getInt(ARGS_BAR_CHART_UNIT);
return StatsBarChartUnit.values()[ordinal];
}
+ protected int getLocalTableBlogID() {
+ return getArguments().getInt(StatsActivity.ARG_LOCAL_TABLE_BLOG_ID);
+ }
+
@Override
public Loader onCreateLoader(int id, Bundle args) {
- if (WordPress.getCurrentBlog() == null) {
+ if (WordPress.getBlog(getLocalTableBlogID()) == null) {
return null;
}
- String blogId = WordPress.getCurrentBlog().getDotComBlogId();
+ String blogId = WordPress.getBlog(getLocalTableBlogID()).getDotComBlogId();
if (TextUtils.isEmpty(blogId)) {
blogId = "0";
}
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsClicksFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsClicksFragment.java
index 45d8385017ff..d75944a33d46 100644
--- a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsClicksFragment.java
+++ b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsClicksFragment.java
@@ -50,7 +50,7 @@ protected Fragment getFragment(int position) {
StatsCursorTreeFragment fragment = StatsCursorTreeFragment.newInstance(groupUri, childrenUri,
R.string.stats_entry_clicks_url, R.string.stats_totals_clicks, R.string.stats_empty_clicks_title,
- R.string.stats_empty_clicks_desc);
+ R.string.stats_empty_clicks_desc, getLocalTableBlogID());
CustomAdapter adapter = new CustomAdapter(null, getActivity());
adapter.setCursorLoaderCallback(fragment);
fragment.setListAdapter(adapter);
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsCommentsFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsCommentsFragment.java
index c4552c2c26c8..8de5062c81ea 100644
--- a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsCommentsFragment.java
+++ b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsCommentsFragment.java
@@ -38,7 +38,7 @@ public class StatsCommentsFragment extends StatsAbsPagedViewFragment {
protected Fragment getFragment(int position) {
if (position == 0) {
StatsCursorFragment fragment = StatsCursorFragment.newInstance(STATS_TOP_COMMENTERS_URI,
- R.string.stats_entry_top_commenter, R.string.stats_totals_comments, R.string.stats_empty_comments);
+ R.string.stats_entry_top_commenter, R.string.stats_totals_comments, R.string.stats_empty_comments, getLocalTableBlogID());
fragment.setListAdapter(new CustomCursorAdapter(getActivity(), null, TOP_COMMENTERS));
fragment.setCallback(this);
return fragment;
@@ -46,7 +46,7 @@ protected Fragment getFragment(int position) {
int entryLabelResId = R.string.stats_entry_most_commented;
int totalsLabelResId = R.string.stats_totals_comments;
StatsCursorFragment fragment = StatsCursorFragment.newInstance(STATS_MOST_COMMENTED_URI,
- R.string.stats_entry_most_commented, R.string.stats_totals_comments, R.string.stats_empty_comments);
+ R.string.stats_entry_most_commented, R.string.stats_totals_comments, R.string.stats_empty_comments, getLocalTableBlogID());
fragment.setListAdapter(new CustomCursorAdapter(getActivity(), null, MOST_COMMENTED));
fragment.setCallback(this);
return fragment;
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsCursorFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsCursorFragment.java
index 8211ed791a15..e88b85b703f4 100644
--- a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsCursorFragment.java
+++ b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsCursorFragment.java
@@ -51,12 +51,12 @@ public class StatsCursorFragment extends Fragment implements LoaderManager.Loade
private StatsCursorInterface mCallback;
public static StatsCursorFragment newInstance(Uri uri, int entryLabelResId, int totalsLabelResId,
- int emptyLabelTitleResId) {
- return newInstance(uri, entryLabelResId, totalsLabelResId, emptyLabelTitleResId, NO_STRING_ID);
+ int emptyLabelTitleResId, int localTableBlogID) {
+ return newInstance(uri, entryLabelResId, totalsLabelResId, emptyLabelTitleResId, NO_STRING_ID, localTableBlogID);
}
public static StatsCursorFragment newInstance(Uri uri, int entryLabelResId, int totalsLabelResId,
- int emptyLabelTitleResId, int emptyLabelDescResId) {
+ int emptyLabelTitleResId, int emptyLabelDescResId, int localTableBlogID) {
StatsCursorFragment fragment = new StatsCursorFragment();
Bundle args = new Bundle();
@@ -65,6 +65,7 @@ public static StatsCursorFragment newInstance(Uri uri, int entryLabelResId, int
args.putInt(ARGS_TOTALS_LABEL, totalsLabelResId);
args.putInt(ARGS_EMPTY_LABEL_TITLE, emptyLabelTitleResId);
args.putInt(ARGS_EMPTY_LABEL_DESC, emptyLabelDescResId);
+ args.putInt(StatsActivity.ARG_LOCAL_TABLE_BLOG_ID, localTableBlogID);
fragment.setArguments(args);
return fragment;
@@ -119,6 +120,10 @@ private int getEmptyLabelDescResId() {
return getArguments().getInt(ARGS_EMPTY_LABEL_DESC);
}
+ private int getLocalTableBlogID() {
+ return getArguments().getInt(StatsActivity.ARG_LOCAL_TABLE_BLOG_ID);
+ }
+
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
@@ -127,10 +132,10 @@ public void onActivityCreated(Bundle savedInstanceState) {
@Override
public Loader onCreateLoader(int id, Bundle args) {
- if (WordPress.getCurrentBlog() == null)
+ if (WordPress.getBlog(getLocalTableBlogID()) == null)
return null;
- String blogId = WordPress.getCurrentBlog().getDotComBlogId();
+ String blogId = WordPress.getBlog(getLocalTableBlogID()).getDotComBlogId();
if (TextUtils.isEmpty(blogId)) blogId = "0";
return new CursorLoader(getActivity(), getUri(), null, "blogId=?", new String[] { blogId }, null);
}
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsCursorTreeFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsCursorTreeFragment.java
index 95ccdb57ab08..8a85a6b2adfa 100644
--- a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsCursorTreeFragment.java
+++ b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsCursorTreeFragment.java
@@ -61,7 +61,7 @@ public class StatsCursorTreeFragment extends Fragment
public static StatsCursorTreeFragment newInstance(Uri groupUri, Uri childrenUri, int entryLabelResId,
int totalsLabelResId, int emptyLabelTitleResId,
- int emptyLabelDescResId) {
+ int emptyLabelDescResId, int localTableBlogID) {
StatsCursorTreeFragment fragment = new StatsCursorTreeFragment();
Bundle args = new Bundle();
@@ -71,6 +71,7 @@ public static StatsCursorTreeFragment newInstance(Uri groupUri, Uri childrenUri,
args.putInt(ARGS_TOTALS_LABEL, totalsLabelResId);
args.putInt(ARGS_EMPTY_LABEL_TITLE, emptyLabelTitleResId);
args.putInt(ARGS_EMPTY_LABEL_DESC, emptyLabelDescResId);
+ args.putInt(StatsActivity.ARG_LOCAL_TABLE_BLOG_ID, localTableBlogID);
fragment.setArguments(args);
return fragment;
@@ -131,6 +132,10 @@ private int getEmptyLabelDescResId() {
return getArguments().getInt(ARGS_EMPTY_LABEL_DESC);
}
+ private int getLocalTableBlogID() {
+ return getArguments().getInt(StatsActivity.ARG_LOCAL_TABLE_BLOG_ID);
+ }
+
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
@@ -141,10 +146,10 @@ public void onActivityCreated(Bundle savedInstanceState) {
@Override
public Loader onCreateLoader(int id, Bundle args) {
- if (WordPress.getCurrentBlog() == null)
+ if (WordPress.getBlog(getLocalTableBlogID()) == null)
return null;
- String blogId = WordPress.getCurrentBlog().getDotComBlogId();
+ String blogId = WordPress.getBlog(getLocalTableBlogID()).getDotComBlogId();
if (TextUtils.isEmpty(blogId))
blogId = "0";
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsDetailsActivity.java b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsDetailsActivity.java
index 339631770bb6..3dda3668caaa 100644
--- a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsDetailsActivity.java
+++ b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsDetailsActivity.java
@@ -62,6 +62,7 @@ public class StatsDetailsActivity extends WPActionBarActivity {
private String mStatsDate = null;
private final Handler mHandler = new Handler();
private int mAltRowColor;
+ private int mLocalBlogID = -1;
// Variables that hold data returned from the REST API
private int mVisitorsCount = 0;
@@ -126,10 +127,13 @@ public void onRefreshStarted(View view) {
}
);
- Bundle extras = getIntent().getExtras();
- if (extras != null && extras.containsKey(StatsActivity.STATS_DETAILS_DATE)) {
- String date = extras.getString(StatsActivity.STATS_DETAILS_DATE);
- mStatsDate = date;
+ if (getIntent() != null) {
+ Bundle extras = getIntent().getExtras();
+ if (extras != null && extras.containsKey(StatsActivity.STATS_DETAILS_DATE)) {
+ String date = extras.getString(StatsActivity.STATS_DETAILS_DATE);
+ mStatsDate = date;
+ }
+ mLocalBlogID = getIntent().getIntExtra(StatsActivity.ARG_LOCAL_TABLE_BLOG_ID, -1);
}
setTitle(getString(R.string.stats));
@@ -194,7 +198,7 @@ private void refreshStats() {
return;
}
- final Blog currentBlog = WordPress.getCurrentBlog();
+ final Blog currentBlog = WordPress.getBlog(mLocalBlogID);
if (mStatsDate == null || currentBlog == null || !NetworkUtils.isNetworkAvailable(this)) {
mPullToRefreshHelper.setRefreshing(false);
@@ -204,7 +208,7 @@ private void refreshStats() {
return;
}
- final String blogId = StatsUtils.getBlogId();
+ final String blogId = StatsUtils.getBlogId(mLocalBlogID);
// View and visitor counts for a site
final String viewAndVisitorsPath = String.format(
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsGeoviewsFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsGeoviewsFragment.java
index 354625409d8b..aacd45140daa 100644
--- a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsGeoviewsFragment.java
+++ b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsGeoviewsFragment.java
@@ -32,7 +32,7 @@ protected Fragment getFragment(int position) {
Uri uri = Uri.parse(STATS_GEOVIEWS_URI.toString() + "?timeframe=" + TIMEFRAMES[position].name());
- StatsCursorFragment fragment = StatsCursorFragment.newInstance(uri, entryLabelResId, totalsLabelResId, emptyLabelResId);
+ StatsCursorFragment fragment = StatsCursorFragment.newInstance(uri, entryLabelResId, totalsLabelResId, emptyLabelResId, getLocalTableBlogID());
fragment.setListAdapter(new CustomCursorAdapter(getActivity(), null));
fragment.setCallback(this);
return fragment;
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsReferrersFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsReferrersFragment.java
index ef6ef2803085..6d016ad0eab6 100644
--- a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsReferrersFragment.java
+++ b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsReferrersFragment.java
@@ -34,7 +34,7 @@ protected Fragment getFragment(int position) {
StatsCursorTreeFragment fragment = StatsCursorTreeFragment.newInstance(groupUri, childrenUri,
R.string.stats_entry_referrers, R.string.stats_totals_views, R.string.stats_empty_referrers_title,
- R.string.stats_empty_referrers_desc);
+ R.string.stats_empty_referrers_desc, getLocalTableBlogID());
CustomAdapter adapter = new CustomAdapter(null, getActivity());
adapter.setCursorLoaderCallback(fragment);
fragment.setListAdapter(adapter);
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsSearchEngineTermsFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsSearchEngineTermsFragment.java
index 75b5ff51377f..b106cfd41a7b 100644
--- a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsSearchEngineTermsFragment.java
+++ b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsSearchEngineTermsFragment.java
@@ -29,7 +29,7 @@ protected Fragment getFragment(int position) {
StatsCursorFragment fragment = StatsCursorFragment.newInstance(uri, R.string.stats_entry_search_engine_terms,
R.string.stats_totals_views, R.string.stats_empty_search_engine_terms_title,
- R.string.stats_empty_search_engine_terms_desc);
+ R.string.stats_empty_search_engine_terms_desc, getLocalTableBlogID());
fragment.setListAdapter(new CustomCursorAdapter(getActivity(), null));
fragment.setCallback(this);
return fragment;
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsTagsAndCategoriesFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsTagsAndCategoriesFragment.java
index 29f7c57e293e..8fe10a98c752 100644
--- a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsTagsAndCategoriesFragment.java
+++ b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsTagsAndCategoriesFragment.java
@@ -44,7 +44,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa
int entryLabelResId = R.string.stats_entry_tags_and_categories;
int totalsLabelResId = R.string.stats_totals_views;
int emptyLabelResId = R.string.stats_empty_tags_and_categories;
- StatsCursorFragment fragment = StatsCursorFragment.newInstance(STATS_TAGS_AND_CATEGORIES_URI, entryLabelResId, totalsLabelResId, emptyLabelResId);
+ StatsCursorFragment fragment = StatsCursorFragment.newInstance(STATS_TAGS_AND_CATEGORIES_URI, entryLabelResId, totalsLabelResId, emptyLabelResId, getLocalTableBlogID());
fragment.setListAdapter(new CustomCursorAdapter(getActivity(), null));
fragment.setCallback(this);
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsTopAuthorsFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsTopAuthorsFragment.java
index 1e98af433636..9ffd19076b24 100644
--- a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsTopAuthorsFragment.java
+++ b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsTopAuthorsFragment.java
@@ -31,7 +31,7 @@ protected Fragment getFragment(int position) {
Uri uri = Uri.parse(STATS_TOP_AUTHORS_URI.toString() + "?timeframe=" + TIMEFRAMES[position].name());
- StatsCursorFragment fragment = StatsCursorFragment.newInstance(uri, entryLabelResId, totalsLabelResId, emptyLabelResId);
+ StatsCursorFragment fragment = StatsCursorFragment.newInstance(uri, entryLabelResId, totalsLabelResId, emptyLabelResId, getLocalTableBlogID());
fragment.setListAdapter(new CustomCursorAdapter(getActivity(), null));
fragment.setCallback(this);
return fragment;
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsTopPostsAndPagesFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsTopPostsAndPagesFragment.java
index 51ba30bb019e..05a39aa81f30 100644
--- a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsTopPostsAndPagesFragment.java
+++ b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsTopPostsAndPagesFragment.java
@@ -28,7 +28,7 @@ protected Fragment getFragment(int position) {
Uri uri = Uri.parse(STATS_TOP_POSTS_AND_PAGES_URI.toString() + "?timeframe=" + TIMEFRAMES[position].name());
StatsCursorFragment fragment = StatsCursorFragment.newInstance(uri, R.string.stats_entry_posts_and_pages,
- R.string.stats_totals_views, R.string.stats_empty_top_posts_title, R.string.stats_empty_top_posts_desc);
+ R.string.stats_totals_views, R.string.stats_empty_top_posts_title, R.string.stats_empty_top_posts_desc, getLocalTableBlogID());
fragment.setListAdapter(new CustomCursorAdapter(getActivity(), null));
fragment.setCallback(this);
return fragment;
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsUtils.java b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsUtils.java
index 9dbc522fc4ff..991c312cdcb5 100644
--- a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsUtils.java
+++ b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsUtils.java
@@ -288,16 +288,20 @@ public static int getSmallestWidthDP() {
}
/**
- * Return the credentials for the current blog or null if not available.
+ * Return the credentials for the blog or null if not available.
*
* 1. Read the credentials at blog level (Jetpack connected with a wpcom account != main account)
* 2. If credentials are empty read the global wpcom credentials
* 3. Check that credentials are not empty before launching the activity
*
*/
- public static StatsCredentials getCurrentBlogStatsCredentials() {
- String statsAuthenticatedUser = WordPress.getCurrentBlog().getDotcom_username();
- String statsAuthenticatedPassword = WordPress.getCurrentBlog().getDotcom_password();
+ public static StatsCredentials getBlogStatsCredentials(int localTableBlogID) {
+ Blog currentBlog = WordPress.getBlog(localTableBlogID);
+ if (currentBlog == null) {
+ return null;
+ }
+ String statsAuthenticatedUser = currentBlog.getDotcom_username();
+ String statsAuthenticatedPassword = currentBlog.getDotcom_password();
if (org.apache.commons.lang.StringUtils.isEmpty(statsAuthenticatedPassword)
|| org.apache.commons.lang.StringUtils.isEmpty(statsAuthenticatedUser)) {
@@ -343,8 +347,8 @@ public String getPassword() {
*
* @return String blogId or null
*/
- public static String getBlogId() {
- Blog currentBlog = WordPress.getCurrentBlog();
+ public static String getBlogId(int localTableBlogID) {
+ Blog currentBlog = WordPress.getBlog(localTableBlogID);
if (currentBlog == null) {
return null;
}
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsVideoFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsVideoFragment.java
index 07d5d4c25de6..40b4ae2f4821 100644
--- a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsVideoFragment.java
+++ b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsVideoFragment.java
@@ -37,7 +37,7 @@ protected Fragment getFragment(int position) {
Uri uri = Uri.parse(STATS_VIDEOS_URI.toString() + "?timeframe=" + TIMEFRAMES[position].name());
- StatsCursorFragment fragment = StatsCursorFragment.newInstance(uri, entryLabelResId, totalsLabelResId, emptyLabelResId);
+ StatsCursorFragment fragment = StatsCursorFragment.newInstance(uri, entryLabelResId, totalsLabelResId, emptyLabelResId, getLocalTableBlogID());
fragment.setListAdapter(new CustomCursorAdapter(getActivity(), null));
fragment.setCallback(this);
return fragment;
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsVisitorsAndViewsFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsVisitorsAndViewsFragment.java
index 9f38064262bf..0e7cc36c4fb3 100644
--- a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsVisitorsAndViewsFragment.java
+++ b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsVisitorsAndViewsFragment.java
@@ -129,7 +129,7 @@ private void loadBarChartFragmentForIndex(int index) {
unit = StatsBarChartUnit.DAY;
}
- StatsBarGraphFragment statsBarGraphFragment = StatsBarGraphFragment.newInstance(unit);
+ StatsBarGraphFragment statsBarGraphFragment = StatsBarGraphFragment.newInstance(unit, getLocalTableBlogID());
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.stats_fade_in, R.anim.stats_fade_out);
ft.replace(R.id.stats_bar_chart_fragment_container, statsBarGraphFragment, childTag);
@@ -137,7 +137,7 @@ private void loadBarChartFragmentForIndex(int index) {
}
private void refreshSummary() {
- if (WordPress.getCurrentBlog() == null) {
+ if (WordPress.getBlog(getLocalTableBlogID()) == null) {
return;
}
@@ -145,7 +145,7 @@ private void refreshSummary() {
new Thread() {
@Override
public void run() {
- String blogId = WordPress.getCurrentBlog().getDotComBlogId();
+ String blogId = WordPress.getBlog(getLocalTableBlogID()).getDotComBlogId();
if (TextUtils.isEmpty(blogId)) {
blogId = "0";
}
@@ -164,7 +164,7 @@ private void refreshSummary(final StatsSummary stats) {
return;
}
- String timezone = StatsUtils.getBlogTimezone(WordPress.getCurrentBlog());
+ String timezone = StatsUtils.getBlogTimezone(WordPress.getBlog(getLocalTableBlogID()));
long currentDate = timezone != null ? StatsUtils.getCurrentDateMsTZ(timezone) : StatsUtils.getCurrentDateMs();
if (stats != null
diff --git a/WordPress/src/main/res/values/strings.xml b/WordPress/src/main/res/values/strings.xml
index d4a143ca7c45..8cedbdd21151 100644
--- a/WordPress/src/main/res/values/strings.xml
+++ b/WordPress/src/main/res/values/strings.xml
@@ -330,6 +330,7 @@
Stats
+ Stats couldn\'t be loaded for the required blog
View full site
View stats
Views per Visitor