Неизвестная проблема с базой данных

Главные вкладки

Аватар пользователя Sobaqeee Sobaqeee 19 января 2016 в 20:14

Возникла после установки 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]);
}

Комментарии

Аватар пользователя lipinart lipinart 20 января 2016 в 12:16

Вы знаете, что править контибные модули не гуд-метод?
Что у вас в настройках прав доступа (/admin/people/permissions)?

Аватар пользователя mozh mozh 20 января 2016 в 13:02

lipinart wrote:

Вы знаете, что править контибные модули не гуд-метод?

Что у вас в настройках прав доступа (/admin/people/permissions)?


могу привести вам кучу примеров, когда без редактирования того же модуля views не обойтись. Гуд не гуд бред. Если сайт вам не знаком используйте модули hacked и diff которые покажут вам все изменения в ядре и контриб модулях

Аватар пользователя bsyomov bsyomov 21 января 2016 в 8:49

mozh wrote:

могу привести вам кучу примеров, когда без редактирования того же модуля views не обойтись. Гуд не гуд бред. Если сайт вам не знаком используйте модули hacked и diff которые покажут вам все изменения в ядре и контриб модулях

В друпале в целом и во views в частности сделано максимум того, чтобы обходиться без редактирования модулей.
Если вам приходится этим заниматься, значит вы, вероятно не понимаете, как этим пользоваться.
Если же вы встречаетесь с весьма редким случаем, когда действительно не можете реализовать какой-то функционал на views, то даже это не повод переписывать модуль - это повод реализовать его в своём отдельном модуле.

Аватар пользователя goodboy goodboy 21 января 2016 в 10:26

Тут два варианта - либо функции user_access() передается второй аргумент $account, который не является объектом; либо $account не передается, но уже испорчена глобальная переменная $user;

Я бы такой код (временно!) поместил в user.module

Вместо

  if (!isset($account)) {
    $account = $user;
  }

Вставил

  if (!isset($account)) {
    $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 в связи с подобной ошибкой.

Аватар пользователя mozh mozh 21 января 2016 в 10:55

bsyomov wrote:

В друпале в целом и во views в частности сделано максимум того, чтобы обходиться без редактирования модулей.

Если вам приходится этим заниматься, значит вы, вероятно не понимаете, как этим пользоваться.

Если же вы встречаетесь с весьма редким случаем, когда действительно не можете реализовать какой-то функционал на views, то даже это не повод переписывать модуль - это повод реализовать его в своём отдельном модуле.


Давайте посмотрим вместе на мои патчи и после вы скажите как их нужно было мне сделать, т.к. я "не понимаю"
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, как сделать это без патчей по порядку!

Аватар пользователя bsyomov bsyomov 21 января 2016 в 17:33

1. Перекрывается стилями темы.
2. С ходу не скажу, но вероятно, без хака обойтись вполне можно выше советовали i18n, возможно - не пробовал. Будет такая задача - буду разбираться. Или спрошу совета. Smile
3. Пишите свой хендлер.
4. Если я правильно помню, меняется от настроек views? Даже если нет, перекрывается своим хендлером.
5. Обработать своим хендлером и передать при пустом результате значение по умолчанию.

И вероятно, проблемы 6 и далее, будут такие же.
Как итог - с хендлерами views вы работать не умеете, а где-то даже из-за css хакаете - ЧИТД.

Хакнуть проще, вообще забить на дальнейшую поддержку всегда проще. И не изучать глубоко возможности того инструмента который вы используете тоже проще.
Но это не делает такое простое решение правильным. Это просто говорит о лени и/или не компетентности разработчика.

Аватар пользователя mozh mozh 22 января 2016 в 11:34

1. Перекрывается стилями темы.
стили стили, ну расскажите мне как это перекрыть стилями если админка стандартная seven? копировать эту тему, менять стиль, подключать?

зачем писать все эти хендлеры, мне поставлена задача и её нужно решить максимально быстро и менее затратно, да я не умею писать хендлеры views - не приходилось, нужно будет разберусь.
При обновлении не составляет труда посмотреть изменения ядра и внести их снова, это явно займет меньше времени, чем писать своё.
Но спасибо за критику, может я начну двигаться дальше в изучении...

Аватар пользователя bsyomov bsyomov 22 января 2016 в 13:32

mozh wrote:
Перекрывается стилями темы. стили стили, ну расскажите мне как это перекрыть стилями если админка стандартная seven? копировать эту тему, менять стиль, подключать?

Копировать не надо - создаёте subtheme, подключаете только свой доп CSS, всё. 5 мин работы.

mozh wrote:

мне поставлена задача и её нужно решить максимально быстро и менее затратно

Это не наименее затратное решение, к тому же, не правильное решение в рамках инструмента с которым вы работаете.
Это вообще не решение, это классический "костыль".

mozh wrote:

да я не умею писать хендлеры views - не приходилось, нужно будет разберусь.

Вам уже было нужно. Много раз. Вы не стали разбираться, в том-то и дело.

mozh wrote:

При обновлении не составляет труда посмотреть изменения ядра и внести их снова, это явно займет меньше времени, чем писать своё.

Обновления за время жизни сайта могут выходить десятки, если не сотни раз. А если рассматривать все хаки, то даже тысячи.
Каждый раз вам надо не просто скопировать все ваши решения, а проверить их, и зачастую изменить, т.к. они легко могут стать не совместимыми с изменениями в модулях. Один раз сделать нормально, в итоге, намного проще.

К тому же, вполне реальная ситуация, когда поддержкой сайт будете заниматься не вы. И никому и в голову не придёт, смотреть изменения в ядре и модулях, т.к. такого просто не должно быть.

mozh wrote:
Но спасибо за критику, может я начну двигаться дальше в изучении...

Очень на это надеюсь.

Аватар пользователя dashiwa dashiwa 21 января 2016 в 11:26

1 для RTL языков admin menu http://take.ms/O2vBY -- !important стиль, каскадный стиль,или джс код на крайний случай
2 проблема меню с мультиязычными сайтами http://take.ms/VPnRh -- i18n
3. проблема с раскрытыми фильтрами views http://take.ms/nRP86 - Пишем свой хандлер
все дальше лень писать..