Forums / General / Content limitation - Best practice

Content limitation - Best practice

Author Message

Håvard Bergersen

Sunday 23 May 2010 3:04:51 pm

Hello Everyone.

I have intranet type of solution that I am working on, and i was wondering if anybody has some advice to offer abour this "problem":

I have a 'news' section on the frontpage, where all users can add news.

When they add a 'news' they are supposed to be able to select which users the 'news' can be available to.

So they add a new 'news' and select from 2 drop down lists:
- Department a / b / c / all
- Section x / y / z

So when a user from department b logges in, he ca see the news that have selected department b, and all.
Section is depending on department, but the section value will be the same for all deparments, so this simplify things a little bit. The matching will not be that complicated.

What is the best way to achieve this?
One solution of course is llimiting the foreach, but that is a heavy way to do it (?)

{def $news=fetch ('content', 'list', hash('parent_node_id', 173 etc...}

{foreach $news as $n}
 {if the 'department' matched the users 'department' or 'all' )}
 {if the 'section' has been selected and matches the users 'section'}
  {...}
 {/if}
 {/if}
{/foreach}

Another solution is to use the ezpublish's user limitationn.. Then I would have to create one usergroup and section for each 'department' etc etc...
Then i would also have to edit the register view, so that the users are put in the usergroup that matches the department they have selected ect...

Suggestions? :)

Ivo Lukac

Monday 24 May 2010 1:28:31 am

Hi Havard,

You can of course do all the logic in the templates but this is not the way to do it.

IMHO the best way would be to set up user groups according to departments and give them specific rights. I would use object states to distinguish between Departments and Sections. The only problem is with user/register which should be tweaked so user can choose user group where he wants (by default user group is defined in ini per siteaccess).

Doing it this way you will have clear and easy management of user rights through administration interface. You can easy expand policies and manage Departments and Sections.

Cheers

http://www.linkedin.com/in/ivolukac
http://www.netgen.hr/eng/blog
http://twitter.com/ilukac

Håvard Bergersen

Monday 24 May 2010 4:14:06 am

Thank you so very much for your reply... :)

Luc Chase

Monday 24 May 2010 6:39:57 am

Strongly agree with Ivo. Also remember that user-groups can be nested. Do you really need to automate the placement of new users into a group?

The Web Application Service Provider

Håvard Bergersen

Monday 24 May 2010 3:16:43 pm

Yes and no... For this particular project I don't..

But the idea is to make this system a "prototype" because I want to take this consept (that a customer is paying me to develop) and re-sell it.. ;)

So the placement has to be automated..

eZ debug

Timing: Jan 17 2025 23:51:57
Script start
Timing: Jan 17 2025 23:51:57
Module start 'content'
Timing: Jan 17 2025 23:51:58
Module end 'content'
Timing: Jan 17 2025 23:51:58
Script end

Main resources:

Total runtime1.4820 sec
Peak memory usage4,096.0000 KB
Database Queries202

Timing points:

CheckpointStart (sec)Duration (sec)Memory at start (KB)Memory used (KB)
Script start 0.00000.0081 588.8359180.8359
Module start 'content' 0.00811.2912 769.6719609.3203
Module end 'content' 1.29930.1827 1,378.9922337.3750
Script end 1.4820  1,716.3672 

Time accumulators:

 Accumulator Duration (sec) Duration (%) Count Average (sec)
Ini load
Load cache0.00410.2786210.0002
Check MTime0.00150.1006210.0001
Mysql Total
Database connection0.00150.099810.0015
Mysqli_queries1.394994.12232020.0069
Looping result0.00250.17002000.0000
Template Total1.445897.620.7229
Template load0.00260.175220.0013
Template processing1.443297.380520.7216
Template load and register function0.00010.008810.0001
states
state_id_array0.00130.085710.0013
state_identifier_array0.00150.099020.0007
Override
Cache load0.00220.1463370.0001
Sytem overhead
Fetch class attribute can translate value0.00150.104340.0004
Fetch class attribute name0.00110.073470.0002
XML
Image XML parsing0.00130.090240.0003
class_abstraction
Instantiating content class attribute0.00000.001290.0000
General
dbfile0.00220.1491340.0001
String conversion0.00000.000430.0000
Note: percentages do not add up to 100% because some accumulators overlap

CSS/JS files loaded with "ezjscPacker" during request:

CacheTypePacklevelSourceFiles
CSS0extension/community/design/community/stylesheets/ext/jquery.autocomplete.css
extension/community_design/design/suncana/stylesheets/scrollbars.css
extension/community_design/design/suncana/stylesheets/tabs.css
extension/community_design/design/suncana/stylesheets/roadmap.css
extension/community_design/design/suncana/stylesheets/content.css
extension/community_design/design/suncana/stylesheets/star-rating.css
extension/community_design/design/suncana/stylesheets/syntax_and_custom_tags.css
extension/community_design/design/suncana/stylesheets/buttons.css
extension/community_design/design/suncana/stylesheets/tweetbox.css
extension/community_design/design/suncana/stylesheets/jquery.fancybox-1.3.4.css
extension/bcsmoothgallery/design/standard/stylesheets/magnific-popup.css
extension/sevenx/design/simple/stylesheets/star_rating.css
extension/sevenx/design/simple/stylesheets/libs/fontawesome/css/all.min.css
extension/sevenx/design/simple/stylesheets/main.v02.css
extension/sevenx/design/simple/stylesheets/main.v02.res.css
JS0extension/ezjscore/design/standard/lib/yui/3.17.2/build/yui/yui-min.js
extension/ezjscore/design/standard/javascript/jquery-3.7.0.min.js
extension/community_design/design/suncana/javascript/jquery.ui.core.min.js
extension/community_design/design/suncana/javascript/jquery.ui.widget.min.js
extension/community_design/design/suncana/javascript/jquery.easing.1.3.js
extension/community_design/design/suncana/javascript/jquery.ui.tabs.js
extension/community_design/design/suncana/javascript/jquery.hoverIntent.min.js
extension/community_design/design/suncana/javascript/jquery.popmenu.js
extension/community_design/design/suncana/javascript/jScrollPane.js
extension/community_design/design/suncana/javascript/jquery.mousewheel.js
extension/community_design/design/suncana/javascript/jquery.cycle.all.js
extension/sevenx/design/simple/javascript/jquery.scrollTo.js
extension/community_design/design/suncana/javascript/jquery.cookie.js
extension/community_design/design/suncana/javascript/ezstarrating_jquery.js
extension/community_design/design/suncana/javascript/jquery.initboxes.js
extension/community_design/design/suncana/javascript/app.js
extension/community_design/design/suncana/javascript/twitterwidget.js
extension/community_design/design/suncana/javascript/community.js
extension/community_design/design/suncana/javascript/roadmap.js
extension/community_design/design/suncana/javascript/ez.js
extension/community_design/design/suncana/javascript/ezshareevents.js
extension/sevenx/design/simple/javascript/main.js

Templates used to render the page:

UsageRequested templateTemplateTemplate loadedEditOverride
1node/view/full.tplfull/forum_topic.tplextension/sevenx/design/simple/override/templates/full/forum_topic.tplEdit templateOverride template
4content/datatype/view/ezimage.tpl<No override>extension/sevenx/design/simple/templates/content/datatype/view/ezimage.tplEdit templateOverride template
5content/datatype/view/ezxmltext.tpl<No override>extension/community_design/design/suncana/templates/content/datatype/view/ezxmltext.tplEdit templateOverride template
10content/datatype/view/ezxmltags/paragraph.tpl<No override>extension/ezwebin/design/ezwebin/templates/content/datatype/view/ezxmltags/paragraph.tplEdit templateOverride template
4content/datatype/view/ezxmltags/line.tpl<No override>design/standard/templates/content/datatype/view/ezxmltags/line.tplEdit templateOverride template
1content/datatype/view/ezxmltags/literal.tpl<No override>extension/community/design/standard/templates/content/datatype/view/ezxmltags/literal.tplEdit templateOverride template
1content/datatype/view/ezxmltags/strong.tpl<No override>design/standard/templates/content/datatype/view/ezxmltags/strong.tplEdit templateOverride template
1pagelayout.tpl<No override>extension/sevenx/design/simple/templates/pagelayout.tplEdit templateOverride template
 Number of times templates used: 27
 Number of unique templates used: 8

Time used to render debug report: 0.0002 secs