Модули доступа к контенту

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

Аватар пользователя iNFerNo iNFerNo 7 апреля 2011 в 10:14

Перепробовал нынче все модули, и node_accсess и ему подобные, доступ юзеров по терминам к ноде, юзерпоинт_доступ все они если и работают - работают сами по себе и совместно не хотят работать. Даже связка Node_access и userpoint_nodeaccess (покупа доступа за поинты) не работает, модули игнорят настройки друг друга.

Вопрос можно ли как то функции из всех этих модулей (их еще есть в инете) скрестить , взять лучшее, добавить еще функционал и сделать один большой модуль на все времена и разных нужд сайта.

Т.е.

Есть модуль состоящий из (например) 3-4 составляющих ограничителей к ноде, которые могут работать как отдельно от других составляющих так и вкупе с ними. т.е. любой сайт выбирает что ему надо, и система сама выстраивает нужный функционал доступа к нодам.

Лично мне очень нужен такой функционал (коротко).

1-ый подмодуль - "карма_лайф" (самая простая версия функционала).
Задача его начислять 1 поинт за каждое посещение зарег. пользователями любой страницы сайта (кроме - вы не имеете доступа и такой страницы не существует) в свои счетчик. Плюс рейтинг по пользователям. Плюс история начисления для каждого пользователя во вкладке профиля (отмеченный в настройках модуля чибокс - показывать в профиле а) только суперадмину, б) определенным ролям, в) всем (владельцам и админам и определенным ролям). В чужих профилях юзеры не видет эту вкладку. Вывод в профиле в %, т.е. Задается время жизни сайта например 5 лет - 1825 в днях и это будет равняться 100% или 1000% - задает админ сайта в настройках модуля (выбираем 100%). И если 1 поинт дается за 24 часа, то пользователь получивший 1000 очков (=1000дням) получит на выходе 0,05479*на количество поинтов= 54,79% (округление до сотой или десятичной на выбор админа. Коэффициент 0,05479 это 100%/на количество жизни сайта (1825).

Этот нужна с одной стороны что бы видеть конкретную посещаемость каждого юезра (если выбрано 1 поинт в 24 часа), с другой стороны мне нужно это использовать как один из ограничителей к ноде, а конкретно: каждая нода должна будет иметь поле  от 0 до 100% или 1000% или сколько задаст админ, в нашем случае 100% (или в поинт варианте). И если  нода имеет поле со значением 0, то  любой пользовтаель (зарегенный и гость) сможет посмотреть ноду, так как имеет по дефолту 0 значение - вход есть (гость, а зарегенный, как минимум уже получил % какой-то), если нода имеет значение 10%, а пользователь в карме_лайф имеет всего - 5%, то к ноде он не будет доступен.
ПРИ ЭТОМ поинты за просмотр не списываются.

2-ой подмодуль (функционал модуля node_access и acl вполyе подойдет если немножко доработать и добавить еще автора ноды к ролям). Этот модуль нужен для самого простейшего доступа к нодам. Гостю не разрешено, зарегеному - разрешено.
При этом если в функционале задействованы 1 и 2 подмодуль, то должно выполнять уже 2 условия доступа а именно,

- если гостю не разрешено по ноде_ассеss, то значит нет входа сразу же. Если разрешено по ноде_ассеss, то система впустит гостя если только нода имеет стоимость = 0 (дефолтное значение всех нод). Или если к ноде не привязан доступ за наличие поинтов на балансе.

- если зарегеному (роль пользователь)- разрешено (или какой-то другой роле) по ноде_ассess то система проверяет наличие 0 стоимости если больше то смотрит есть ли в наличие у юзера,если есть то пускает, если нет то не пускает. Также система впускает юзера если нода не првиязана к системе доступа за наличее поинтов на баллансе.

3-ой подмодуль - это функционал модуля userpoint_nodeaccess
Т.е. если для юзера или роли нет доступа а у ноды есть возможность покупи просмотра, то юзеру предлагают купить (да/нет, если да то варианты предлагаю навсегда на год на меся - задается в настройках). Чтобы второй раз не предлагал покупку до истечения срока - все это записывается в таблицы бд.

4-ой подмодуль, доступ юзера если он имеет уровень аналогичный ноде.
Т.е. ноде назначается уровень (первый второй... девятый), пользователь за поинты должен купить себе уровень. если купил первый то он имеет доступ только нодам с первым уровнем, если девятый то к нодам которые имеют уровень с 1 по 9.
Это пытались решить в модуле таксономия_user_ассеss - но что -то плохо работает. Было бы хорошо что бы родитель был юзер уровнем, а дочерние термины - уровнями для нод, которые можно привязать к любому из родителю.
Покупка роли ограничевается 1ым под модулем, тоесть если юзер имеет в своей краме лайф - 100 поинтов , т.е. 100 раз посетил сайт, то ему это дает возможность купить 1 уровень, если 1000 то уже например 5-ый уровень.

Если пользователь имеет нужное количество поинтво в карме лайф, ноде_ассеss пропускает, имеет достаточное количество для определенной ноды поинтов для чтения, ему не предлагается купить ноду, и НЕ ИМЕЕТ нужную роль - доступа не будет.
При этом если уровня нет то ему могут предложить купить ноду по спец цене (опция для покупок ноды для юзеров не имеющих нужного уровня).  

Можно писать тонкости долго, я описал основное. что бы модуль решал любую задачу (может кончено что-то не учел)

Комментарии