/kernel/classes/ezcontentclassclassgroup.php

https://bitbucket.org/ericsagnes/ezpublish-multisite · PHP · 237 lines · 190 code · 20 blank · 27 comment · 11 complexity · 0a0215934eec41503a0093e30bd59abc MD5 · raw file

  1. <?php
  2. /**
  3. * File containing the eZContentClassClassGroup class.
  4. *
  5. * @copyright Copyright (C) 1999-2012 eZ Systems AS. All rights reserved.
  6. * @license http://www.gnu.org/licenses/gpl-2.0.txt GNU General Public License v2
  7. * @version 2012.8
  8. * @package kernel
  9. */
  10. //!! eZKernel
  11. //! The class eZContentClassClassGroup
  12. /*!
  13. */
  14. class eZContentClassClassGroup extends eZPersistentObject
  15. {
  16. function eZContentClassClassGroup( $row )
  17. {
  18. $this->eZPersistentObject( $row );
  19. }
  20. static function definition()
  21. {
  22. return array( "fields" => array( "contentclass_id" => array( 'name' => "ContentClassID",
  23. 'datatype' => 'integer',
  24. 'default' => 0,
  25. 'required' => true,
  26. 'foreign_class' => 'eZContentClass',
  27. 'foreign_attribute' => 'id',
  28. 'multiplicity' => '1..*' ),
  29. "contentclass_version" => array( 'name' => "ContentClassVersion",
  30. 'datatype' => 'integer',
  31. 'default' => 0,
  32. 'required' => true ),
  33. "group_id" => array( 'name' => "GroupID",
  34. 'datatype' => 'integer',
  35. 'default' => 0,
  36. 'required' => true ),
  37. "group_name" => array( 'name' => "GroupName",
  38. 'datatype' => 'string',
  39. 'default' => '',
  40. 'required' => true ) ),
  41. "keys" => array( "contentclass_id", "contentclass_version", "group_id" ),
  42. // "increment_key" => "id",
  43. "class_name" => "eZContentClassClassGroup",
  44. "sort" => array( "contentclass_id" => "asc" ),
  45. "name" => "ezcontentclass_classgroup" );
  46. }
  47. static function create( $contentclass_id, $contentclass_version, $group_id, $group_name )
  48. {
  49. if( $contentclass_version == null )
  50. {
  51. $contentclass_version = 0;
  52. }
  53. $row = array("contentclass_id" => $contentclass_id,
  54. "contentclass_version" => $contentclass_version,
  55. "group_id" => $group_id,
  56. "group_name" => $group_name);
  57. return new eZContentClassClassGroup( $row );
  58. }
  59. static function update( $contentclass_version, $group_id, $group_name )
  60. {
  61. if( $contentclass_version == null )
  62. {
  63. $row = array( 'group_id' => $group_id );
  64. }
  65. else
  66. {
  67. $row = array( 'contentclass_version' => $contentclass_version,
  68. 'group_id' => $group_id );
  69. }
  70. eZPersistentObject::updateObjectList( array( 'definition' => eZContentClassClassGroup::definition(),
  71. 'update_fields' => array( 'group_name' => $group_name ),
  72. 'conditions' => $row ) );
  73. }
  74. /*!
  75. \note Transaction unsafe. If you call several transaction unsafe methods you must enclose
  76. the calls within a db transaction; thus within db->begin and db->commit.
  77. */
  78. static function removeGroup( $contentclass_id, $contentclass_version, $group_id )
  79. {
  80. if ( $contentclass_version == null )
  81. {
  82. eZPersistentObject::removeObject( eZContentClassClassGroup::definition(),
  83. array("contentclass_id" => $contentclass_id,
  84. "group_id" => $group_id ) );
  85. }
  86. else
  87. {
  88. eZPersistentObject::removeObject( eZContentClassClassGroup::definition(),
  89. array("contentclass_id" => $contentclass_id,
  90. "contentclass_version" =>$contentclass_version,
  91. "group_id" => $group_id ) );
  92. }
  93. }
  94. /*!
  95. \note Transaction unsafe. If you call several transaction unsafe methods you must enclose
  96. the calls within a db transaction; thus within db->begin and db->commit.
  97. */
  98. static function removeGroupMembers( $group_id )
  99. {
  100. eZPersistentObject::removeObject( eZContentClassClassGroup::definition(),
  101. array( "group_id" => $group_id ) );
  102. }
  103. /*!
  104. \note Transaction unsafe. If you call several transaction unsafe methods you must enclose
  105. the calls within a db transaction; thus within db->begin and db->commit.
  106. */
  107. static function removeClassMembers( $contentclass_id, $contentclass_version )
  108. {
  109. eZPersistentObject::removeObject( eZContentClassClassGroup::definition(),
  110. array( "contentclass_id" =>$contentclass_id,
  111. "contentclass_version" =>$contentclass_version ) );
  112. }
  113. static function fetch( $contentclass_id, $contentclass_version, $group_id, $asObject = true )
  114. {
  115. return eZPersistentObject::fetchObject( eZContentClassClassGroup::definition(),
  116. null,
  117. array("contentclass_id" => $contentclass_id,
  118. "contentclass_version" =>$contentclass_version,
  119. "group_id" => $group_id ),
  120. $asObject );
  121. }
  122. static function fetchClassList( $contentclass_version, $group_id, $asObject = true, $orderByArray = array( 'name' ) )
  123. {
  124. $versionCond = '';
  125. $orderByClause = '';
  126. $group_id =(int) $group_id;
  127. $classNameSqlFilter = eZContentClassName::sqlEmptyFilter();
  128. if ( $contentclass_version !== null )
  129. {
  130. $contentclass_version =(int) $contentclass_version;
  131. $versionCond = "AND class_group.contentclass_version='$contentclass_version'
  132. AND contentclass.version='$contentclass_version'\n";
  133. }
  134. if ( $orderByArray )
  135. {
  136. foreach( array_keys( $orderByArray ) as $key )
  137. {
  138. if ( strcasecmp( $orderByArray[$key], 'name' ) === 0 )
  139. {
  140. $classNameSqlFilter = eZContentClassName::sqlAppendFilter( 'contentclass' );
  141. $orderByArray[$key] = $classNameSqlFilter['orderBy'];
  142. }
  143. }
  144. $orderByClause = 'ORDER BY ' . implode( ', ', $orderByArray );
  145. }
  146. $db = eZDB::instance();
  147. $sql = "SELECT contentclass.* $classNameSqlFilter[nameField]
  148. FROM ezcontentclass contentclass, ezcontentclass_classgroup class_group $classNameSqlFilter[from]
  149. WHERE contentclass.id=class_group.contentclass_id
  150. $versionCond
  151. AND class_group.group_id='$group_id' $classNameSqlFilter[where]
  152. $orderByClause";
  153. $rows = $db->arrayQuery( $sql );
  154. return eZPersistentObject::handleRows( $rows, "eZContentClass", $asObject );
  155. }
  156. static function fetchClassListByGroups( $contentclassVersion, $groupIDList, $asObject = true )
  157. {
  158. if ( is_array( $groupIDList ) )
  159. {
  160. $groupIDList = array( $groupIDList );
  161. }
  162. $classGroupList = eZPersistentObject::fetchObjectList( eZContentClassClassGroup::definition(),
  163. array(),
  164. array( "group_id" => $groupIDList,
  165. "contentclass_version" => $contentclassVersion ),
  166. null,
  167. null,
  168. false,
  169. false,
  170. array( array( 'operation' => "distinct contentclass_id" ) ) );
  171. $classList = array();
  172. if ( $asObject )
  173. {
  174. foreach ( $classGroupList as $classGroup )
  175. {
  176. $classList[] = eZContentClass::fetch( $classGroup['contentclass_id'] );
  177. }
  178. }
  179. else
  180. {
  181. foreach ( $classGroupList as $classGroup )
  182. {
  183. $classList[] = $classGroup['contentclass_id'];
  184. }
  185. }
  186. return $classList;
  187. }
  188. static function fetchGroupList( $contentclass_id, $contentclass_version, $asObject = true )
  189. {
  190. return eZPersistentObject::fetchObjectList( eZContentClassClassGroup::definition(),
  191. null,
  192. array( "contentclass_id" => $contentclass_id,
  193. "contentclass_version" => $contentclass_version ),
  194. null,
  195. null,
  196. $asObject );
  197. }
  198. static function classInGroup( $contentclassID, $contentclassVersion, $groupID )
  199. {
  200. $rows = eZPersistentObject::fetchObjectList( eZContentClassClassGroup::definition(),
  201. null,
  202. array( 'group_id' => $groupID,
  203. "contentclass_id" => $contentclassID,
  204. "contentclass_version" => $contentclassVersion ),
  205. null,
  206. null,
  207. false );
  208. return count( $rows ) > 0;
  209. }
  210. /// \privatesection
  211. public $ContentClassID;
  212. public $ContentClassVersion;
  213. public $GroupID;
  214. public $GroupName;
  215. }
  216. ?>