Возникла после установки CKEDITORA
Notice: Trying to get property of non-object в функции user_access() (строка 808 в файле /home/u12321/domains/gg.ru/modules/user/user.module).
Notice: Trying to get property of non-object в функции user_access() (строка 820 в файле /home/u12321/domains/gg.ru/modules/user/user.module).
Notice: Trying to get property of non-object в функции user_access() (строка 821 в файле /home/u12321/domains/gg.ru/modules/user/user.module).
Notice: Trying to get property of non-object в функции user_access() (строка 827 в файле /home/u12321/domains/gg.ru/modules/user/user.module).
Notice: Trying to get property of non-object в функции user_access() (строка 830 в файле /home/u12321/domains/gg.ru/modules/user/user.module).
В этих строчках речь идет о uid админа как я понял. Вот этот кусок с 808 по 830. Подскажите как исправить(
// User #1 has all privileges:
if ($account->uid == 1) {
return TRUE;
}
// To reduce the number of SQL queries, we cache the user's permissions
// in a static variable.
// Use the advanced drupal_static() pattern, since this is called very often.
static $drupal_static_fast;
if (!isset($drupal_static_fast)) {
$drupal_static_fast['perm'] = &drupal_static(__FUNCTION__);
}
$perm = &$drupal_static_fast['perm'];
if (!isset($perm[$account->uid])) {
$role_permissions = user_role_permissions($account->roles);
$perms = array();
foreach ($role_permissions as $one_role) {
$perms += $one_role;
}
$perm[$account->uid] = $perms;
}
return isset($perm[$account->uid][$string]);
}
Комментарии
Вы знаете, что править контибные модули не гуд-метод?
Что у вас в настройках прав доступа (/admin/people/permissions)?
могу привести вам кучу примеров, когда без редактирования того же модуля views не обойтись. Гуд не гуд бред. Если сайт вам не знаком используйте модули hacked и diff которые покажут вам все изменения в ядре и контриб модулях
А завтра выйдет обнова - и снова лопатить код... Есть же открытое API - пользуйтесь.
В друпале в целом и во views в частности сделано максимум того, чтобы обходиться без редактирования модулей.
Если вам приходится этим заниматься, значит вы, вероятно не понимаете, как этим пользоваться.
Если же вы встречаетесь с весьма редким случаем, когда действительно не можете реализовать какой-то функционал на views, то даже это не повод переписывать модуль - это повод реализовать его в своём отдельном модуле.
Тут два варианта - либо функции user_access() передается второй аргумент $account, который не является объектом; либо $account не передается, но уже испорчена глобальная переменная $user;
Я бы такой код (временно!) поместил в user.module
Вместо
$account = $user;
}
Вставил
$account = $user;
if (!is_object($account) ) {
drupal_set_message("wrong user=" . print_r($account,1));
}
}
else {
if (!is_object($account) ) {
drupal_set_message("wrong account=" . print_r($account,1));
}
}
После этого должно быть понятнее, какой модуль виноват. Мне кажется, Ckeditor не при чем. Часто грешат на admin_menu или menu_block в связи с подобной ошибкой.
Давайте посмотрим вместе на мои патчи и после вы скажите как их нужно было мне сделать, т.к. я "не понимаю"
1 для RTL языков admin menu http://take.ms/O2vBY
2. проблема меню с мультиязычными сайтами http://take.ms/VPnRh
3. проблема с раскрытыми фильтрами views http://take.ms/nRP86
4. опять views http://take.ms/wbSzE интересный патч all => All
5. еще views http://take.ms/FDbSA
6. и т.д.
По коду вы можете нагуглить патчи и почитать про них подробнее
И жду от вас ответ bsyomov, как сделать это без патчей по порядку!
1. Перекрывается стилями темы.
2. С ходу не скажу, но вероятно, без хака обойтись вполне можно выше советовали i18n, возможно - не пробовал. Будет такая задача - буду разбираться. Или спрошу совета.
3. Пишите свой хендлер.
4. Если я правильно помню, меняется от настроек views? Даже если нет, перекрывается своим хендлером.
5. Обработать своим хендлером и передать при пустом результате значение по умолчанию.
И вероятно, проблемы 6 и далее, будут такие же.
Как итог - с хендлерами views вы работать не умеете, а где-то даже из-за css хакаете - ЧИТД.
Хакнуть проще, вообще забить на дальнейшую поддержку всегда проще. И не изучать глубоко возможности того инструмента который вы используете тоже проще.
Но это не делает такое простое решение правильным. Это просто говорит о лени и/или не компетентности разработчика.
1. Перекрывается стилями темы.
стили стили, ну расскажите мне как это перекрыть стилями если админка стандартная seven? копировать эту тему, менять стиль, подключать?
зачем писать все эти хендлеры, мне поставлена задача и её нужно решить максимально быстро и менее затратно, да я не умею писать хендлеры views - не приходилось, нужно будет разберусь.
При обновлении не составляет труда посмотреть изменения ядра и внести их снова, это явно займет меньше времени, чем писать своё.
Но спасибо за критику, может я начну двигаться дальше в изучении...
Копировать не надо - создаёте subtheme, подключаете только свой доп CSS, всё. 5 мин работы.
Это не наименее затратное решение, к тому же, не правильное решение в рамках инструмента с которым вы работаете.
Это вообще не решение, это классический "костыль".
Вам уже было нужно. Много раз. Вы не стали разбираться, в том-то и дело.
Обновления за время жизни сайта могут выходить десятки, если не сотни раз. А если рассматривать все хаки, то даже тысячи.
Каждый раз вам надо не просто скопировать все ваши решения, а проверить их, и зачастую изменить, т.к. они легко могут стать не совместимыми с изменениями в модулях. Один раз сделать нормально, в итоге, намного проще.
К тому же, вполне реальная ситуация, когда поддержкой сайт будете заниматься не вы. И никому и в голову не придёт, смотреть изменения в ядре и модулях, т.к. такого просто не должно быть.
Очень на это надеюсь.
1 для RTL языков admin menu http://take.ms/O2vBY -- !important стиль, каскадный стиль,или джс код на крайний случай
2 проблема меню с мультиязычными сайтами http://take.ms/VPnRh -- i18n
3. проблема с раскрытыми фильтрами views http://take.ms/nRP86 - Пишем свой хандлер
все дальше лень писать..