OK
Deets:
EE 2.9.2
Assets 2.5
Structure 3.3.17
Tag 4.2.9
Matrix 2.6.1
Playa 4.5.2.
Those should be the only possible relative ones.
I spent half my morning trying to figure this one out. I have a member group that has access to a particular channel that lives in Structure. For channel fields, we have this variety going on for this channel:
Text
Matrix
Playa
Relationships
There are about 10 channel entries in this channel. Now, a Super Admin account can open the entry_form for all of these entries, and save channels entries, no problem. But the member group that is meant for editing these channel entries can only open some of the entries. About half of them pull a WSOD. I've gone through and compared working ones to non-working ones endlessly, and can't find a single consistent difference. Ex: Some have Wygwam fields with images in them, some don't, both varieties of entry work and don't work. Some have revisions turned on, some don't, both varieties of entry work and don't work. Some are authored by members of this member group, some are authored by our main content editor (whose member group has more privileges), both varieties of entry work and don't work.
After spending a painful amount of time comparing them, I moved on to the member group settings. Here's what I tried:
I created a temporary member group (duplicated from the one that I assumed was the issue). I then moved a member over to this temporary one, and then methodically went through the member group settings, and gradually escalated the groups privileges, until they were basically Super Admins, but to no avail. The main content editor is not a Super Admin, but she can view and edit all of the entries just fine.
Side note; we upgraded from 2.5.(3 or 5, can't remember) a few months ago, and I think this wasn't an issue before then.
At this point, I can only guess it's some setting related to individual entries, perhaps in the channel_title rows, but I glanced them and didn't see anything out of order (I'll check again). Can anyone suggest any other debug paths? This one is maddening. Thanks.
Edit
I duplicated the Super Admin group as a test group, and that test member group cannot view the channel entries that aren't working for the original problem member group. What the hell is going on here? Some addon has a weird conditional hardcoded for Super Admin (aka member_group == 1)? But yet another member group (main content editors member group) can also view and save all channels entries? WTF??
Edit
I have no new info, but this is still a persisting issue. I'm bumping it in hopes that a few other heavy-weights on this exchange can weigh in... I am very versed with digging through core files, but I'm at least looking for suggestions. I know I could turn on error logging and grep through it.. but the site in question is for a University that has 17 thousand students and probably several thousands employees and who knows how many interested potential students and employees.. so 10 seconds of that error/debug log can be 10's of thousands of lines and a pain to accurately grep. Hell, even if someone had a suggestion on what I'm looking for in the log files so I can craft a grep/regex to search the log...
Edit
Ok, I'm down to this error, popping on up on the test installation with debugging on:
Fatal error: Uncaught exception 'Exception' with message 'Assets could not complete the requested operation.' in /storage/av02422/www/public_html/test/control/expressionengine/third_party/assets/sources/ee/file.ee.php:43
Stack trace: #0 /storage/av02422/www/public_html/test/control/expressionengine/third_party/assets/sources/base_source.php(793): Assets_ee_file->__construct(66718, Object(Assets_ee_source), NULL)
#1 /storage/av02422/www/public_html/test/control/expressionengine/third_party/assets/libraries/Assets_lib.php(1048): Assets_base_source->get_file(66718)
#2 /storage/av02422/www/public_html/test/control/expressionengine/third_party/wygwam/helper.php(981): Assets_lib->get_file_by_id(Array)
#3 /storage/av02422/www/public_html/test/control/expressionengine/third_party/wygwam/ft.wygwam.php(540): Wygwam_helper::replace_asset_tags('<h3>Upcom...')
#4 /storage/av02422/www/public_html/test/control/expressionengine/fieldtypes/EE_Fieldtype.php(335): Wygwam_ft->display_field('<h3>Upcom...')
#5 [internal function]: in /storage/av02422/www/public_html/test/control/expressionengine/third_party/assets/sources/ee/file.ee.php on line 43
I tracked down the code, and it's throwing an exception where a cache variable is empty in $this->EE->session->cache['assets']
. Then I tracked down the rows by var_dumping and inserting die()'s ... the file in question hasn't been found yet (haven't grepped the folders yet), but based on it's file name it appears to be completely unrelated to the channel entry it's attached to (I'm working on one of several broken entries, others could have different issues).
I'm going to grep for the file name (err, i think find
is better for this), and if I can't find it, remove those rows from the database in the test install. If that works, @Anna_MediaGirl probably gets the prize for pushing me the right way.
LAST EDIT
F***ing damnit. It was a malformed Wygwam field data cell. I just tried temporarily emptying and saving the Wygwam fields content, saving it, and pasting it back in, and now the trouble member group can open and edit the channel entry. WTF? Why do I even get paid? Thanks @Anna_MediaGirl. You win all 100 tacos.
It turns out those Wygwam fields did have links to Assets files. That was somehow related.