123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- <?php
- /**
- * @file
- * Contains the metadata controller classes for the Translation Management Tool
- * entities.
- */
- /**
- * Metadata controller for the job entity.
- */
- class TMGMTJobMetadataController extends EntityDefaultMetadataController {
- /**
- * {@inheritdoc}
- */
- public function entityPropertyInfo() {
- $info = parent::entityPropertyInfo();
- $info = _tmgmt_override_property_description($info, $this->type);
- $properties = &$info[$this->type]['properties'];
- // Make the created and changed property appear as date.
- $properties['changed']['type'] = $properties['created']['type'] = 'date';
- // Use the defined entity label callback instead of the custom label directly.
- $properties['label']['getter callback'] = 'entity_class_label';
- // Allow to change the properties.
- foreach (array('target_language', 'source_language', 'translator') as $property) {
- $properties[$property]['setter callback'] = 'entity_property_verbatim_set';
- }
- // Add the options list for the available languages.
- $properties['target_language']['options list'] = $properties['source_language']['options list'] = 'entity_metadata_language_list';
- // Add the options list for the defined state constants.
- $properties['state']['options list'] = 'tmgmt_job_states';
- // Add the options list for all available translator plugins.
- $properties['translator']['type'] = 'tmgmt_translator';
- $properties['translator']['options list'] = 'tmgmt_translator_labels';
- // Link the author property to the corresponding user entity.
- $properties['author'] = array(
- 'label' => t('Author'),
- 'type' => 'user',
- 'description' => t('The author of the translation job.'),
- 'setter callback' => 'entity_property_verbatim_set',
- 'setter permission' => 'administer tmgmt',
- 'required' => TRUE,
- 'schema field' => 'uid',
- );
- return $info;
- }
- }
- /**
- * Metadata controller for the job item entity.
- */
- class TMGMTJobItemMetadataController extends EntityDefaultMetadataController {
- public function entityPropertyInfo() {
- $info = parent::entityPropertyInfo();
- $info = _tmgmt_override_property_description($info, $this->type);
- $properties = &$info[$this->type]['properties'];
- // Make the created and changed property appear as date.
- $properties['changed']['type'] = 'date';
- // Add the options list for the defined state constants.
- $properties['state']['options list'] = 'tmgmt_job_item_states';
- // Link the job id property to the corresponding job entity.
- $properties['tjid'] = array(
- 'description' => t('Corresponding job entity.'),
- 'type' => 'tmgmt_job',
- ) + $properties['tjid'];
- // Add the options list for all available source plugins.
- $properties['plugin']['options list'] = 'tmgmt_source_plugin_labels';
- $properties['word_count']['label'] = t('Word count');
- return $info;
- }
- }
- /**
- * Metadata controller for the job message entity.
- */
- class TMGMTMessageMetadataController extends EntityDefaultMetadataController {
- /**
- * {@inheritdoc}
- */
- public function entityPropertyInfo() {
- $info = parent::entityPropertyInfo();
- $info = _tmgmt_override_property_description($info, $this->type);
- $properties = &$info[$this->type]['properties'];
- // Make the created property appear as date.
- $properties['created']['type'] = 'date';
- // Link the job id property to the corresponding job entity.
- $properties['tjid'] = array(
- 'description' => t('Corresponding job entity.'),
- 'type' => 'tmgmt_job',
- ) + $properties['tjid'];
- // Link the job item id property to the corresponding job item entity.
- $properties['tjiid'] = array(
- 'description' => t('Corresponding job item entity.'),
- 'type' => 'tmgmt_job_item',
- ) + $properties['tjiid'];
- // Link user, was added in an update so make sure that it doesn't explode
- // if the schema cache was not cleared.
- $properties['uid'] = array(
- 'type' => 'user',
- 'description' => t('User associated with TMGMT Job Message entity.'),
- ) + (isset($properties['uid']) ? $properties['uid'] : array());
- return $info;
- }
- }
- /**
- * Metadata controller for the translator entity.
- */
- class TMGMTTranslatorMetadataController extends EntityDefaultMetadataController {
- /**
- * {@inheritdoc}
- */
- public function entityPropertyInfo() {
- $info = parent::entityPropertyInfo();
- $info = _tmgmt_override_property_description($info, $this->type);
- $properties = &$info[$this->type]['properties'];
- // Options list callback for the translator plugin labels.
- $properties['plugin']['options list'] = 'tmgmt_translator_plugin_labels';
- return $info;
- }
- }
- /**
- * Populates all entity property descriptions based on the schema definition.
- *
- * @param $info
- * Entity propety info array.
- *
- * @return
- * The altered entity properties array.
- */
- function _tmgmt_override_property_description($info, $entity_type) {
- // Load tmgmt.install so we can access the schema.
- module_load_install('tmgmt');
- $entity_info = entity_get_info($entity_type);
- $schema = tmgmt_schema();
- $fields = $schema[$entity_info['base table']]['fields'];
- $properties = &$info[$entity_type]['properties'];
- foreach ($properties as $name => $property_info) {
- if (isset($fields[$name]['description'])) {
- $properties[$name]['description'] = $fields[$name]['description'];
- }
- }
- return $info;
- }
|