***Note:** I’ve updated this post as I gathered information allowing me to see more clearly in this whole mess. **Please read the comment** if you’re going to jump in the conversation or blog about this.*

Wednesday night, my friend [Sanja from BlogOpen](http://climbtothestars.org/archives/2007/11/12/blogopen-in-novi-sad-serbia/) (she was my very kind and competent hostess) pinged me on IM. She had less than 24 hours to export her blog before her blog host shut it down.

It was a blog hosted by [WordPress multi-user](http://wordpress.org/) [**Edit:** [not WPMU](http://climbtothestars.org/archives/2008/01/26/blog-host-ugliness/#comment-381845)]. Easy enough, I thought. There is an export function. Unfortunately, when I logged in (the interface was in Serbian, but I can find my way through WordPress with my eyes closed), this is what I found:

Even if you don’t understand Serbian, you can see there is a missing tab. I tried calling `/wp-admin/export.php` directly, but the file had been removed.

Well, after a bit of poking, prodding and thinking, this is what I came up with (reminder: WPMU means that you can’tthere was no possibility to install plugins and no direct access to the server):

I went into Options > Reading. I set the feeds to “entire post”. As there were 110 posts in this blog, I set the home page to display all of them, with a little margin for error. There were more than 1400 comments, so I set the maximum number of items in a feed to 1500.

The blog was saved. I couldn’t import the RSS dump of blog posts into WordPress.com, where I told Sanja to open [a new blog account](http://aurorineavanture.wordpress.com/), so I quickly set up a regular WordPress install on my server, imported it there, and exported it in WXR format. Great.

Comments, however, are [another story](http://wordpress.org/support/topic/153722). If you’re in a hackish mood, any help would be appreciated.

We’ll probably have to deal with the images too once the blog has been completely wiped off the 381.com server — for the moment it seems like it was [disabled](http://auroraborealis.blog381.com/), but the images are still there (see [this one](http://auroraborealis.blog381.com/wp-content/uploads/3/34/auroraborealis/2007/12/windowslivewriterizubbolikadjeupalj-93aaanti-stress-therapy-posters-thumb3.jpg) for example).

There, that was for the technical part.

Now for a personal comment. I find it **utterly disgusting and shocking** that a blog host owner would give people an **ultimatum to leave** and **disable the export function** in the blogging software. Sanja tells me that they had the export function until a few days before the ultimatum.

Of course, a blog host can choose not to host certain people. But trying to lock people in by disabling export of *their own data* is simply evil. If you’re kicking people off your system, you damn well better make sure they can take their data with them.

**Edit, 27.01, 12:00**: I’m happy to learn that [it seems the disabling of the export function was not related to the ultimatum](http://climbtothestars.org/archives/2008/01/26/blog-host-ugliness/#comment-381845), and that the blog381 people were not *actually trying to actively lock people in*. However, it remains that it’s pretty delicate in a conflictual situation to tell people to “submit or leave” when they don’t have a way to export their data on their own.

So, people, please. If you need a blog host, choose a *serious one*. [WordPress.com](http://wordpress.com) for example. Or [Blogger](http://blogger.com). Or [Typepad](http://typepad.com). Putting your precious blog between the hands of an individual is risky (weblogs.com, anybody? and if you remember, people on weblogs.com at least had the guarantee they could export their data…)

How did this happen?

I got some details about the situation, but a word of warning about that, first. The source material to this Serbian blogosphere drama is all in… Serbian. I’m relying here on what my friend Sanja told me about the situation, and I do not doubt her good faith. I know, though, that stories do have multiple sides, and that there might be more to the background than what I’m telling you here — but whatever the background story, it cannot justify the behaviour of [this blog host](http://blog.blog381.com).

From what I gathered, what brought about this crisis is a quarrel between two bloggers: [Tatjana aka Venus aka Lang](http://www.laluve.com/) *(**Update**: Tatjana is not happy that I’m linking to her and has redirected visitors to this site elsewhere; to see her blog, copy-paste the link http://www.laluve.com/ in your browser)*, the owner of the [Serbian blogging platform blog381.com](http://blog.blog381.com/) (**not** the [Tatjana](http://www.mooshema.com/) who organized [BlogOpen](http://blogopen.eu/)!), and another pretty [popular blogger](http://bruh.org/ludizmaj/). At some point, Tatjana decided to forbid the people using her platform from linking to this other blogger or harbouring his comments.

> The owner of these blogs
http://bruh.org/ludizmaj/,
http://www.blogoye.org/pecina/,
http://www.blogoye.org/Mudrosti/,
http://www.blogoye.org/sujeta/

> has caused damage to this blog system by faking votes for the election of “The best blogger” (where he was “the winner”), and was undermining the next election by spreading gossip, lies, and recruiting new 381 bloggers, with only one aim: to damage this community and increase his own blog traffic and “reputation”.

> For those who are not informed well enough, and all others who were listening or didn’t, only one side of the story of the person mentioned above, I will not give any additional details, nor do I have the intention to fight with provincialism of some people who were or in some way are connected to blog381 communication and their users.

> It is the free will of each of us to write how and where we want to, but those who decide to keep writing here, will not be able to have links to these blogs or comments by their owner.

> Those of you who have the wish, intention or need to stay on this blog system, should delete links and comments of the blogger (mentioned above) within 24 hours.

Sanja learnt about this because the owner of the blogging platform left a comment on one of her posts (not the most recent) to let her know about it. Given that the “other blogger” in question is a friend of Sanja’s, she wasn’t going to comply.

Other bloggers have also seen their blogs deleted, or at least de-activated (actually, before the 24-hour limit was up). A dozen or so, says Sanja.

If you want to chime in on the “political” side of this story (particularly if you’re involved in this story or a direct witness), you’re welcome to use my comments. However, I ask (as always) that everybody remain civil and refrain from personal attacks (commonsense blogging etiquette, y’know).

Update: It seems that since Sanja’s blog was deactivated, the whole blogging platform has been shut down, with a message that people can e-mail the administrator to get an export of their blog. This message was not there during the ultimatum period.

In a [comment to this post](http://climbtothestars.org/archives/2008/01/26/blog-host-ugliness/#comment-381722), Tatjana aka Lang asked me to remove the link to her blog, http://www.laluve.com/ , which I had placed upon her name. As I have [refused to remove it](http://climbtothestars.org/archives/2008/01/26/blog-host-ugliness/#comment-381724) (linking to the people involved in this story is perfectly relevant, and on the web, you can link to who you want, anyway), she has set up a redirection which sends visitors from this site straight off to CNN. So, I’ve left the link in, of course, but provided you with a handy copy-paste if you want to go and visit her all the same.

Once more, while trying to transfer a WordPress installation from one server to another, I found myself facing the dreaded problem which locks me out of my WordPress install with a rather cryptic message:

Warning: Invalid argument supplied for foreach() in /home/user/wp/wp-includes/capabilities.php on line 31

(Your lineage may vary.)

What happens is that WordPress cannot read user roles, and therefore, even though your password is accepted, you get a message telling you that you’re not welcome in the wp-admin section:

Vous n’avez pas les droits suffisants pour accéder à cette page.

Or, in English:

You do not have sufficient permissions to access this page.

A quick search on the WordPress forums told me that I was [not alone in my fight with wp-capabilities.php](http://wordpress.org/search/wp-capabilities.php?forums=1), but that many problems had not been resolved, and more importantly, that suggested solutions often did not work for everyone.

I’ve bumped into this problem a couple of times before, and I knew that it was linked to encoding problems in the database. (I’ve had my share of encoding problems: [once](http://climbtothestars.org/archives/2004/07/18/converting-mysql-database-contents-to-utf-8/), [twice](http://climbtothestars.org/archives/2005/02/19/problemes-dencodage-mysql/), [thrice](http://climbtothestars.org/archives/2006/07/12/finally-out-of-mysql-encoding-hell/) — “once” being on of the most-visited posts on this blog, by the way, proof if needed that [I’m not alone with mysql encoding issues](http://wordpress.org/search/mysql+encoding?forums=1) either.)

I’ll leave the detailed resolution of how to avoid/cure the MySQL problems later (adding
mysql_query("SET NAMES 'utf8'"); to wp-db.php as detailed in [this thread](http://wordpress.org/support/topic/55282?replies=7#post-311649), and as [zedrdave](http://unknowngenius.com/blog/) had already previously told me to do — should have listened! — should prevent them). So anyway, adding that line to my *working* WordPress install showed me that the problem was not so much in the database dumping process than in the way WordPress itself interacted with the database, because the dreaded wp-capabilities.php problem suddenly appeared on the original blog.

Now, this is where I got lucky. Browsing quickly through the first dozen or so of [forum threads about wp-capability.php problems](http://wordpress.org/search/wp-capabilities.php?forums=1), [this response](http://wordpress.org/support/topic/67796?replies=18#post-392812) caught my eye. It indicated that the source of the problem was the content of the wp_user_roles field (your prefix may vary). In this case, it had been split on more than one line.

I headed for the database, looked at the field, and didn’t see anything abnormal about it at first. All on one line, no weird characters… just before giving up, I moved the horizontal scrollbar to the end of the line, and there — **Eurêka!** I saw it.

“Contributor”, in French, is “abonné”, with an accent. Accent which got horribly mangled by the MySQL problems which I’ll strive to resolve shorty. Mangled character which caused the foreach() loop to break in wp-capabilities.php, which caused the capabilities to not be loaded, which caused me to be locked out of my blog.

So, in summary: if you’re locked out of your blog and get a warning/error about wp-capabilities and some invalid foreach() loop thingy, head for PhpMyAdmin, and look carefully through the wp_user_roles field in the wp_options table. If it’s split over two or more lines, or contains funky characters, you have probably found the source of your problem.

Tomorrow is the last day before the holidays. I can tell you it’s high time! I’m tired, a bit stressed out, and my flat looks like a dump (no trespassing). Some people wonder why teachers have “so many” holidays — I tell you, it’s simply because this job couldn’t be done with only 4 weeks off in a year!

Having seen the office world and the classroom world, I can say two things: I like the classroom better, but it’s much more tiring.

Holidays will be devoted to sleeping, reconstructing my social life, catching up on cinema, and preparing classes, tests, and course material until Christmas. Oh, I almost forgot: I also intend to turn my flat back into a place I can invite people into.

Aside from being tired and worn out, I’m doing pretty good. The feeling of these last months that my life is finally heading somewhere and that I know where I am seems to be there for good.