00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 include_once( 'kernel/classes/ezserializedobjectnamelist.php' );
00030 include_once( 'kernel/classes/ezcontentclassname.php' );
00031
00032 class eZContentClassNameList extends eZSerializedObjectNameList
00033 {
00034 function eZContentClassNameList( $serializedNameList = false )
00035 {
00036 eZSerializedObjectNameList::eZSerializedObjectNameList( $serializedNameList );
00037 }
00038
00039 function create( $serializedNamesString = false )
00040 {
00041 $object = new eZContentClassNameList( $serializedNamesString );
00042 return $object;
00043 }
00044
00045 function store( &$contentClass )
00046 {
00047 if ( $this->hasDirtyData() && is_object($contentClass ) )
00048 {
00049 $classID = $contentClass->attribute( 'id' );
00050 $classVersion = $contentClass->attribute( 'version' );
00051 $languages = $contentClass->attribute( 'languages' );
00052 $initialLanguageID = $contentClass->attribute( 'initial_language_id' );
00053
00054
00055 $contentClassNames = eZContentClassName::fetchList( $classID, $classVersion, array_keys( $languages ) );
00056 foreach ( $contentClassNames as $className )
00057 {
00058 $languageLocale = $className->attribute( 'language_locale' );
00059 $className->setAttribute( 'name', $this->nameByLanguageLocale( $languageLocale ) );
00060 if ( $initialLanguageID == $className->attribute( 'language_id' ) )
00061 $className->setAttribute( 'language_id', $initialLanguageID | 1 );
00062
00063 $className->sync();
00064
00065 unset( $languages[$languageLocale] );
00066 }
00067
00068
00069 if ( count( $languages ) > 0 )
00070 {
00071 foreach ( $languages as $languageLocale => $language )
00072 {
00073 $languageID = $language->attribute( 'id' );
00074 if ( $initialLanguageID == $languageID )
00075 $languageID = $initialLanguageID | 1;
00076
00077 $className = new eZContentClassName( array( 'contentclass_id' => $classID,
00078 'contentclass_version' => $classVersion,
00079 'language_locale' => $languageLocale,
00080 'language_id' => $languageID,
00081 'name' => $this->nameByLanguageLocale( $languageLocale ) ) );
00082 $className->store();
00083 }
00084 }
00085
00086 $this->setHasDirtyData( false );
00087 }
00088 }
00089
00090 function remove( &$contentClass )
00091 {
00092 eZContentClassName::remove( $contentClass->attribute( 'id' ), $contentClass->attribute( 'version' ) );
00093 }
00094 };
00095
00096 ?>