Итак, косяк первый:
При активизации закрытого режима в модуле инвайтов перестает работать загрузка картинок и вывод kcaptcha.
Решение: В хуках шестеренки инвайтов (gears/invites/_hooks.php) в функцию invite_header добавляем следующее
было:
Косяк второй:
При регистрации пользователя по инвайту, инвайт не обнуляется.
Возможная причина:
Хук обновления таблицы инвайтов завязан на метод form_save. Но при процедуре регистрации он не вызывается, поскольку добавление пользователя реализовано напрямую в модуле пользователя (gears/user).
Решение: К сожалению, пришлось делать «грязный хак».
В gears/user/index.php в функцию register после кода
Косяк третий: При наделении другого пользователя правами админа кнопку и элементы админки он видит, но доступа к элементам админки не имеет.
Возможная причина:
в gears/acl/_hooks.php в функции acl_header проверяется именно id пользователя (он должен быть равным 1), а не его принадележность к группе админов.
Решение: в функции acl_header
было:
Ну, и напоследок — not a bug, but a featue: Делаем коды инвайтов проще:
(или вы любите хэши SHA1?)
в gears/invites/_admin.php
строку
Теперь инвайт это не длинная строка хэша, а простое число, которое можно написать на бумажке или кинуть смс-кой. А от перебора «в лоб» должна (по идее) спасти капча.
P.S. А еще можно сделать доступными rss, это очень легко, но про это потом. ;-)
При активизации закрытого режима в модуле инвайтов перестает работать загрузка картинок и вывод kcaptcha.
Решение: В хуках шестеренки инвайтов (gears/invites/_hooks.php) в функцию invite_header добавляем следующее
&& $CI->name != 'kcaptcha' && !in_array('upload',$CI->uri->segments)
То естьбыло:
if($CI->name != 'user' && !in_array('ajax',$CI->uri->segments))
стало:if($CI->name != 'user' && !in_array('ajax',$CI->uri->segments) && $CI->name != 'kcaptcha' && !in_array('upload',$CI->uri->segments))
Возможная причина:
Хук обновления таблицы инвайтов завязан на метод form_save. Но при процедуре регистрации он не вызывается, поскольку добавление пользователя реализовано напрямую в модуле пользователя (gears/user).
Решение: К сожалению, пришлось делать «грязный хак».
В gears/user/index.php в функцию register после кода
if($this->db->insert('users',$user))
были добавлены две строки:
$user_a = $this->db->get_where('users',array('url_name'=>$user['url_name']))->row();
$this->db->update('invites',array('to'=>$user_a->id),array('invite'=>$result['invite'],'to'=>NULL));
Косяк третий: При наделении другого пользователя правами админа кнопку и элементы админки он видит, но доступа к элементам админки не имеет.
Возможная причина:
в gears/acl/_hooks.php в функции acl_header проверяется именно id пользователя (он должен быть равным 1), а не его принадележность к группе админов.
Решение: в функции acl_header
было:
elseif(count($CI->uri->segments) > 1 && $CI->uri->segments[1] == 'admin' && $CI->user->get('id') != 1 ){
стало:elseif(count($CI->uri->segments) > 1 && $CI->uri->segments[1] == 'admin' && !acl('admin access')){
Ну, и напоследок — not a bug, but a featue: Делаем коды инвайтов проще:
(или вы любите хэши SHA1?)
в gears/invites/_admin.php
строку
$invite = $this->encrypt->sha1(serialize($data));
меняем на$invite = rand(999999,9999999); Теперь инвайт это не длинная строка хэша, а простое число, которое можно написать на бумажке или кинуть смс-кой. А от перебора «в лоб» должна (по идее) спасти капча.
P.S. А еще можно сделать доступными rss, это очень легко, но про это потом. ;-)


Может это в багтрекер перенести?
Ну, и еще меня несколько занимает вопрос по поводу грязного хака — так не делается же!
А это лучше опционально, а мысль хорошая.
Дмитрий, давно уже поднимал тему насчет, было бы круто выделять фрагмент и при нажатии ctrl+q получать результат в редакторе
Ну, по идее, это скриптами решается. Можно орфус поковырять для примера.
Мне admin предлагал добавлять изменения через svn, но я пока слоупочу.
А звучит прикольно, я тоже в этом деле слоупочу :)