Clear up php doc and use of eZRole::fetchByUser in reponse to issue #012602
[tinyz:tinyz.git] / kernel / user / ezuserfunctioncollection.php
1 <?php
2 //
3 // Definition of eZUserFunctionCollection class
4 //
5 // Created on: <06-Oct-2002 16:19:31 amos>
6 //
7 // ## BEGIN COPYRIGHT, LICENSE AND WARRANTY NOTICE ##
8 // SOFTWARE NAME: eZ Publish
9 // SOFTWARE RELEASE: 4.1.x
10 // COPYRIGHT NOTICE: Copyright (C) 1999-2010 eZ Systems AS
11 // SOFTWARE LICENSE: GNU General Public License v2.0
12 // NOTICE: >
13 //   This program is free software; you can redistribute it and/or
14 //   modify it under the terms of version 2.0  of the GNU General
15 //   Public License as published by the Free Software Foundation.
16 //
17 //   This program is distributed in the hope that it will be useful,
18 //   but WITHOUT ANY WARRANTY; without even the implied warranty of
19 //   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20 //   GNU General Public License for more details.
21 //
22 //   You should have received a copy of version 2.0 of the GNU General
23 //   Public License along with this program; if not, write to the Free
24 //   Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
25 //   MA 02110-1301, USA.
26 //
27 //
28 // ## END COPYRIGHT, LICENSE AND WARRANTY NOTICE ##
29 //
30
31 /*! \file
32 */
33
34 /*!
35   \class eZUserFunctionCollection ezuserfunctioncollection.php
36   \brief The class eZUserFunctionCollection does
37
38 */
39
40 class eZUserFunctionCollection
41 {
42     /*!
43      Constructor
44     */
45     function eZUserFunctionCollection()
46     {
47     }
48
49     function fetchCurrentUser()
50     {
51         $user = eZUser::currentUser();
52         if ( $user === null )
53         {
54             $result = array( 'error' => array( 'error_type' => 'kernel',
55                                                'error_code' => eZError::KERNEL_NOT_FOUND ) );
56         }
57         else
58         {
59             $result = array( 'result' => $user );
60         }
61         return $result;
62     }
63
64     function fetchIsLoggedIn( $userID )
65     {
66         $isLoggedIn = eZUser::isUserLoggedIn( $userID );
67         return array( 'result' => $isLoggedIn );
68     }
69
70     function fetchLoggedInCount()
71     {
72         $count = eZUser::fetchLoggedInCount();
73         return array( 'result' => $count );
74     }
75
76     function fetchAnonymousCount()
77     {
78         $count = eZUser::fetchAnonymousCount();
79         return array( 'result' => $count );
80     }
81
82     function fetchLoggedInList( $sortBy, $offset, $limit )
83     {
84         $list = eZUser::fetchLoggedInList( false, $offset, $limit, $sortBy );
85         return array( 'result' => $list );
86     }
87
88     function fetchLoggedInUsers( $sortBy, $offset, $limit )
89     {
90         $list = eZUser::fetchLoggedInList( true, $offset, $limit, $sortBy );
91         return array( 'result' => $list );
92     }
93
94     function fetchUserRole( $userID )
95     {
96         $user = eZUser::fetch( $userID );
97         $groups = $user ? $user->groups() : array();
98         $groups[] = $userID;
99         $roleList = eZRole::fetchByUser( $groups );
100
101         $accessArray = array();
102         foreach ( array_keys ( $roleList ) as $roleKey )
103         {
104             $role = $roleList[$roleKey];
105             $accessArray = array_merge_recursive( $accessArray, $role->accessArray( true ) );
106         }
107         $resultArray = array();
108         foreach ( $accessArray as $moduleKey => $module )
109         {
110             $moduleName = $moduleKey;
111             if ( $moduleName != '*' )
112             {
113                 foreach ( $module as $functionKey => $function )
114                 {
115                     $functionName = $functionKey;
116                     if ( $functionName != '*' )
117                     {
118                         $hasLimitation = true;
119                         foreach ( $function as $limitationKey )
120                         {
121                             if ( $limitationKey == '*' )
122                             {
123                                 $hasLimitation = false;
124                                 $limitationValue = '*';
125                                 $resultArray[] = array( 'moduleName' => $moduleName, 'functionName' => $functionName, 'limitation' =>  $limitationValue );
126                             }
127                         }
128                         if ( $hasLimitation )
129                         {
130                             foreach ( $function as $limitationKey => $limitation )
131                             {
132                                 if ( $limitationKey !== '*' )
133                                 {
134                                     $policyID = str_replace( 'p_', '', $limitationKey );
135                                     $userRoleIdSeperator = strpos( $policyID, '_' );
136
137                                     if ( $userRoleIdSeperator !== false )
138                                     {
139                                         $policyID = substr( $policyID, 0, $userRoleIdSeperator );
140                                     }
141                                     
142                                     $limitationValue = eZPolicyLimitation::fetchByPolicyID( $policyID );
143                                     $resultArray[] = array( 'moduleName' => $moduleName, 'functionName' => $functionName, 'limitation' =>  $limitationValue );
144                                 }
145                                 else
146                                 {
147                                     $limitationValue = '*';
148                                     $resultArray[] = array( 'moduleName' => $moduleName, 'functionName' => $functionName, 'limitation' =>  $limitationValue );
149                                     break;
150                                 }
151                             }
152                         }
153                     }
154                     else
155                     {
156                         $limitationValue = '*';
157                         $resultArray[] = array( 'moduleName' => $moduleName, 'functionName' => $functionName, 'limitation' =>  $limitationValue );
158                         break;
159                     }
160                 }
161             }
162             else
163             {
164                 $functionName = '*';
165                 $resultArray[] = array( 'moduleName' => '*', 'functionName' => $functionName, 'limitation' => '*' );
166                 break;
167             }
168         }
169         return array( 'result' => $resultArray );
170     }
171
172     function fetchMemberOf( $id )
173     {
174         return array( 'result' => eZRole::fetchByUser( array( $id ), true ) );
175     }
176
177     function hasAccessTo( $module, $view, $userID )
178     {
179         if ( $userID )
180         {
181             $user = eZUser::fetch( $userID );
182         }
183         else
184         {
185             $user = eZUser::currentUser();
186         }
187         if ( is_object( $user ) )
188         {
189             $result = $user->hasAccessTo( $module, $view );
190             return array( 'result' => $result['accessWord'] != 'no' );
191         }
192         else
193         {
194             return array( 'result' => false );
195         }
196     }
197 }
198
199 ?>