I'm working on a social website that has been made in Drupal, built with OG, context, Spaces, Features, PURL, and many, many views.
We need to give the website a regional dimension. It was only based on a city before and now opens to several countries and cities.
The front end has been built with a huge amount of contextual blocks, listing content from many different content types & features (eg. Forum, Blog, Picture gallery, Wiki, Events, Annoucements, Highlights, magazine articles, etc...).
We are looking to the best way to add a regional dimension to the site so when you select a country / a region or a city the website would filter all content based on the selection.
Example : When set to "world", the website, the magazine, the blogs, etc... would display content from the all world. When set to "USA", it would display the same sections, home page, magazine, blogs, etc... but only with content from the US, from any city. If set to "NY, USA" it would only display content from NY.
Something that makes it less simple is that only the groups are related to locations but not their content. So a group can be in NY, but to relate a picture from this group to NY we would need to implement arguments and relationships in every views. This is a heavily visited website and we do not want to impact performance too much.
The first idea that came to mind was to use something like hook_views_query_alter() and then alter any processed view. But i'm not so sure i'm going in the right direction.