- Fixed #16160: Call to undefined function ezi18n()
[tinyz:tinyz.git] / kernel / content / dashboard.php
1 <?php 
2 //
3 // Created on: <15-Jan-2010 13:06:01 ls>
4 //
5 // ## BEGIN COPYRIGHT, LICENSE AND WARRANTY NOTICE ##
6 // SOFTWARE NAME: eZ Publish
7 // SOFTWARE RELEASE: 4.3.x
8 // COPYRIGHT NOTICE: Copyright (C) 1999-2010 eZ Systems AS
9 // SOFTWARE LICENSE: GNU General Public License v2.0
10 // NOTICE: >
11 //   This program is free software; you can redistribute it and/or
12 //   modify it under the terms of version 2.0  of the GNU General
13 //   Public License as published by the Free Software Foundation.
14 //
15 //   This program is distributed in the hope that it will be useful,
16 //   but WITHOUT ANY WARRANTY; without even the implied warranty of
17 //   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 //   GNU General Public License for more details.
19 //
20 //   You should have received a copy of version 2.0 of the GNU General
21 //   Public License along with this program; if not, write to the Free
22 //   Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
23 //   MA 02110-1301, USA.
24 //
25 //
26 // ## END COPYRIGHT, LICENSE AND WARRANTY NOTICE ##
27 //
28
29 require_once( 'kernel/common/template.php' );
30
31 $ini = eZINI::instance( 'dashboard.ini' );
32 $currentUser = eZUser::currentUser();
33
34 $orderedBlocks = array();
35
36 $dashboardBlocks = $ini->variable( 'DashboardSettings', 'DashboardBlocks' );
37
38 foreach( $dashboardBlocks as $blockIdentifier )
39 {
40     $blockGroupName = 'DashboardBlock_' . $blockIdentifier;
41     if ( !$ini->hasGroup( $blockGroupName ) )
42         continue;
43
44     $hasAccess = true;
45     if ( $ini->hasVariable( $blockGroupName, 'PolicyList' ) )
46     {
47         $policyList = $ini->variable( $blockGroupName, 'PolicyList' );
48         foreach( $policyList as $policy )
49         {
50             // Value is either "<node_id>" or "<module>/<function>"
51             if ( strpos( $policy, '/' ) !== false )
52             {
53                 list( $module, $function ) = explode( '/', $policy );
54                     $result = $currentUser->hasAccessTo( $module, $function );
55
56                 if ( $result['accessWord'] === 'no' )
57                 {
58                     $hasAccess = false;
59                     break;
60                 }
61             }
62             else
63             {
64                 $node = eZContentObjectTreeNode::fetch( $policy );
65                 if ( !$node instanceof eZContentObjectTreeNode || !$node->attribute('can_read') )
66                 {
67                     $hasAccess = false;
68                     break;
69                 }
70             }
71         }
72     }
73
74     if ( $hasAccess === false )
75         continue;
76
77     $priority = 0;
78     if ( $ini->hasVariable( $blockGroupName, 'Priority' ) )
79         $priority = $ini->variable( $blockGroupName, 'Priority' );
80
81     $numberOfItems = null;
82     if ( $ini->hasVariable( $blockGroupName, 'NumberOfItems' ) )
83         $numberOfItems = $ini->variable( $blockGroupName, 'NumberOfItems' );
84
85     $template = null;
86     if ( $ini->hasVariable( $blockGroupName, 'Template' ) )
87         $template = $ini->variable( $blockGroupName, 'Template' );
88     
89     while( isset( $orderedBlocks[$priority]  ) )
90         $priority++;
91         
92     $orderedBlocks[$priority] = array( 'identifier' => $blockIdentifier,
93                                        'template' => $template,
94                                        'number_of_items' => $numberOfItems );
95 }
96
97 // Sort $orderedBlocks by key, starting from the lowest priority
98 ksort( $orderedBlocks );
99
100 $contentInfoArray = array();
101
102 $tpl = templateInit();
103
104 $tpl->setVariable( 'blocks', $orderedBlocks );
105 $tpl->setVariable( 'user', $currentUser );
106 $tpl->setVariable( 'persistent_variable', false );
107
108 $Result = array();
109 $Result['content'] = $tpl->fetch( 'design:content/dashboard.tpl' );
110 $Result['path'] = array( array( 'text' => ezpI18n::translate( 'kernel/content', 'Dashboard' ),
111                                 'url' => false ) );
112
113 $contentInfoArray['persistent_variable'] = false;
114 if ( $tpl->variable( 'persistent_variable' ) !== false )
115     $contentInfoArray['persistent_variable'] = $tpl->variable( 'persistent_variable' );
116
117 $Result['content_info'] = $contentInfoArray;
118
119 ?>