eZ Publish  [trunk]
ezpackagefunctioncollection.php
Go to the documentation of this file.
00001 <?php
00002 /**
00003  * File containing the eZPackageFunctionCollection class.
00004  *
00005  * @copyright Copyright (C) 1999-2012 eZ Systems AS. All rights reserved.
00006  * @license http://www.gnu.org/licenses/gpl-2.0.txt GNU General Public License v2
00007  * @version //autogentag//
00008  * @package kernel
00009  */
00010 
00011 /*!
00012   \class eZPackageFunctionCollection ezpackagefunctioncollection.php
00013   \brief The class eZPackageFunctionCollection does
00014 
00015 */
00016 
00017 class eZPackageFunctionCollection
00018 {
00019     /*!
00020      Constructor
00021     */
00022     function eZPackageFunctionCollection()
00023     {
00024     }
00025 
00026     function fetchList( $filterArray = false, $offset, $limit, $repositoryID )
00027     {
00028         $filterParams = array();
00029         $filterList = false;
00030         if ( isset( $filterArray ) and
00031              is_array( $filterArray ) and
00032              count( $filterArray ) > 0 )
00033         {
00034             $filterList = $filterArray;
00035             if ( count( $filterArray ) > 1 and
00036                  !is_array( $filterArray[0] ) )
00037             {
00038                 $filterList = array( $filterArray );
00039             }
00040         }
00041         if ( $filterList !== false )
00042         {
00043             foreach ( $filterList as $filter )
00044             {
00045                 if ( is_array( $filter ) and count( $filter ) > 0 )
00046                 {
00047                     $filterName = $filter[0];
00048                     switch ( $filterName )
00049                     {
00050                         case 'type':
00051                         {
00052                             $typeValue = $filter[1];
00053                             $typeParam = array( 'type' => $typeValue );
00054                             $filterParams = array_merge( $filterParams, $typeParam );
00055                         } break;
00056                         case 'priority':
00057                         {
00058                             $priorityValue = $filter[1];
00059                             $priorityParam = array( 'priority' => $priorityValue );
00060                             $filterParams = array_merge( $filterParams, $priorityParam );
00061                         } break;
00062                         case 'vendor':
00063                         {
00064                             $vendorValue = $filter[1];
00065                             $vendorParam = array( 'vendor' => $vendorValue );
00066                             $filterParams = array_merge( $filterParams, $vendorParam );
00067                         } break;
00068                         case 'extension':
00069                         {
00070                             $extensionValue = $filter[1];
00071                             $extensionParam = array( 'extension' => $extensionValue );
00072                             $filterParams = array_merge( $filterParams, $extensionParam );
00073                         } break;
00074                         default:
00075                         {
00076                             eZDebug::writeWarning( 'Unknown package filter name: ' . $filterName );
00077                             continue;
00078                         }
00079                     }
00080                 }
00081             }
00082         }
00083         $params = array( 'offset' => $offset,
00084                          'limit' => $limit );
00085         if ( $repositoryID )
00086             $params['repository_id'] = $repositoryID;
00087 
00088         $packageList = eZPackage::fetchPackages( $params,
00089                                                  $filterParams );
00090         if ( $packageList === null )
00091             return array( 'error' => array( 'error_type' => 'kernel',
00092                                             'error_code' => eZError::KERNEL_NOT_FOUND ) );
00093         return array( 'result' => $packageList );
00094     }
00095 
00096     function fetchPackage( $packageName, $repositoryID )
00097     {
00098         $package = eZPackage::fetch( $packageName, false, $repositoryID );
00099         if ( $package === false )
00100         {
00101             $retValue = array( 'error' => array( 'error_type' => 'kernel',
00102                                                  'error_code' => eZError::KERNEL_NOT_FOUND ) );
00103         }
00104         else
00105         {
00106             $retValue = array( 'result' => $package );
00107         }
00108         return $retValue;
00109     }
00110 
00111     function fetchDependentPackageList( $packageName, $filterArray = false, $repositoryID )
00112     {
00113         $filterParams = array();
00114         $filterList = false;
00115         if ( isset( $filterArray ) and
00116              is_array( $filterArray ) and
00117              count( $filterArray ) > 0 )
00118         {
00119             $filterList = $filterArray;
00120             if ( count( $filterArray ) > 1 and
00121                  !is_array( $filterArray[0] ) )
00122             {
00123                 $filterList = array( $filterArray );
00124             }
00125         }
00126         if ( $filterList !== false )
00127         {
00128             foreach ( $filterList as $filter )
00129             {
00130                 if ( is_array( $filter ) and count( $filter ) > 0 )
00131                 {
00132                     $filterName = $filter[0];
00133                     switch ( $filterName )
00134                     {
00135                         case 'type':
00136                         {
00137                             $typeValue = $filter[1];
00138                             $typeParam = array( 'type' => $typeValue );
00139                             $filterParams = array_merge( $filterParams, $typeParam );
00140                         } break;
00141                         case 'name':
00142                         {
00143                             $nameValue = $filter[1];
00144                             $nameParam = array( 'name' => $nameValue );
00145                             $filterParams = array_merge( $filterParams, $nameParam );
00146                         } break;
00147                         case 'priority':
00148                         {
00149                             $priorityValue = $filter[1];
00150                             $priorityParam = array( 'priority' => $priorityValue );
00151                             $filterParams = array_merge( $filterParams, $priorityParam );
00152                         } break;
00153                         case 'vendor':
00154                         {
00155                             $vendorValue = $filter[1];
00156                             $vendorParam = array( 'vendor' => $vendorValue );
00157                             $filterParams = array_merge( $filterParams, $vendorParam );
00158                         } break;
00159                         case 'extension':
00160                         {
00161                             $extensionValue = $filter[1];
00162                             $extensionParam = array( 'extension' => $extensionValue );
00163                             $filterParams = array_merge( $filterParams, $extensionParam );
00164                         } break;
00165                         default:
00166                         {
00167                             eZDebug::writeWarning( 'Unknown package filter name: ' . $filterName );
00168                             continue;
00169                         }
00170                     }
00171                 }
00172             }
00173         }
00174         $package = eZPackage::fetch( $packageName, false, $repositoryID );
00175         $packageList = $package->fetchDependentPackages( $filterParams );
00176         if ( $packageList === false )
00177         {
00178             $retValue = array( 'error' => array( 'error_type' => 'kernel',
00179                                                  'error_code' => eZError::KERNEL_NOT_FOUND ) );
00180         }
00181         else
00182         {
00183             $retValue = array( 'result' => $packageList );
00184         }
00185         return $retValue;
00186     }
00187 
00188     function fetchMaintainerRoleList( $packageType, $checkRoles )
00189     {
00190         $list = eZPackage::fetchMaintainerRoleList( $packageType, $checkRoles );
00191         if ( $list === false )
00192             return array( 'error' => array( 'error_type' => 'kernel',
00193                                             'error_code' => eZError::KERNEL_NOT_FOUND ) );
00194         return array( 'result' => $list );
00195     }
00196 
00197     function fetchRepositoryList()
00198     {
00199         $list = eZPackage::packageRepositories();
00200         if ( $list === false )
00201             return array( 'error' => array( 'error_type' => 'kernel',
00202                                             'error_code' => eZError::KERNEL_NOT_FOUND ) );
00203         return array( 'result' => $list );
00204     }
00205 
00206     function canCreate()
00207     {
00208         return array( 'result' => eZPackage::canUsePolicyFunction( 'create' ) );
00209     }
00210 
00211     function canEdit()
00212     {
00213         return array( 'result' => eZPackage::canUsePolicyFunction( 'edit' ) );
00214     }
00215 
00216     function canImport()
00217     {
00218         return array( 'result' => eZPackage::canUsePolicyFunction( 'import' ) );
00219     }
00220 
00221     function canInstall()
00222     {
00223         return array( 'result' => eZPackage::canUsePolicyFunction( 'install' ) );
00224     }
00225 
00226     function canExport()
00227     {
00228         return array( 'result' => eZPackage::canUsePolicyFunction( 'export' ) );
00229     }
00230 
00231     function canRead()
00232     {
00233         return array( 'result' => eZPackage::canUsePolicyFunction( 'read' ) );
00234     }
00235 
00236     function canList()
00237     {
00238         return array( 'result' => eZPackage::canUsePolicyFunction( 'list' ) );
00239     }
00240 
00241     function canRemove()
00242     {
00243         return array( 'result' => eZPackage::canUsePolicyFunction( 'remove' ) );
00244     }
00245 }
00246 
00247 ?>