musin_core.module - 24.01
Fri Jan 21 2022 14:47:55 GMT+0000 (Coordinated Universal Time)
<?php
/**
* @file
* Contains musin_core.module.
*/
use Drupal\Core\Entity\Display\EntityViewDisplayInterface;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Render\Element;
use Drupal\Core\Url;
/**
* Implements hook_views_data_alter().
*/
function musin_core_views_data_alter(array &$data) {
$data['private_message_threads']['members_list'] = [
'title' => t('Member(s) name list'),
'help' => t('The member(s) name of the private message thread'),
'field' => [
'id' => 'musin_core_private_message_members_list',
],
];
$data['private_message_threads']['members_pictures'] = [
'title' => t('Member(s) pictures'),
'help' => t('The member(s) pictures of the private message thread'),
'field' => [
'id' => 'musin_core_private_message_members_pictures',
],
];
$data['private_message_threads']['thread_last_message'] = [
'title' => t('Last message'),
'help' => t('The last message of the private message thread'),
'field' => [
'id' => 'musin_core_private_message_thread_last_message',
],
];
$data['private_message_threads']['thread_is_unread'] = [
'title' => t('Is unread or not'),
'help' => t('The last message is unreaded of the private message thread'),
'field' => [
'id' => 'musin_core_private_message_thread_is_unread',
],
];
}
/**
* Implements hook_entity_extra_field_info().
*/
function musin_core_entity_extra_field_info() {
$extra_field = [];
$extra_field['private_message']['private_message']['display']['author_image'] = [
'label' => t('Author image'),
'description' => t('Author image.'),
'weight' => 100,
'visible' => TRUE,
];
$extra_field['private_message']['private_message']['display']['author_name'] = [
'label' => t('Author name'),
'description' => t('Author name.'),
'weight' => 100,
'visible' => TRUE,
];
return $extra_field;
}
/**
* Implements hook_ENTITY_TYPE_view().
*/
function musin_core_private_message_view(array &$build, EntityInterface $entity, EntityViewDisplayInterface $display, $view_mode) {
if ($display->getComponent('author_image')) {
/** @var \Drupal\musin_core\MessagesService $messages_service */
$messages_service = \Drupal::service('musin_core.messages.service');
$build['author_image'] = $messages_service->getUserPictureElement($entity->getOwner());
}
if ($display->getComponent('author_name')) {
/** @var \Drupal\private_message\Entity\PrivateMessage $entity*/
//$author_name = $entity->getOwner()->get('field_first_name')->value . ' ' . $entity->getOwner()->get('field_last_name')->value;
$author_name = $entity->getOwner()->get('name')->value;
$build['author_name'] = [
'#type' => 'markup',
'#markup' => $author_name,
];
}
}
/**
* Implements hook_form_FORM_ID_alter().
*/
function musin_core_form_views_exposed_form_alter(&$form, FormStateInterface $form_state, $form_id) {
$view = $form_state->getStorage('view');
if ($view && $view['view']->id() == 'search') {
$form['search_api_fulltext_1']['#prefix'] = '<div class="search-dropdown">';
$form['field_genres']['#suffix'] = '</div>';
$form['field_instruments']['#options']['All'] = 'Instruments';
$form['field_genres']['#options']['All'] = 'Genres';
}
}
/**
* Implements hook_form_FORM_ID_alter().
* Redirect user to profile page after saving the profile
*/
function musin_core_form_alter(&$form, $form_state, $form_id) {
if ($form_id === 'user_form') {
$form['#after_build'][] = '_musin_core_user_edit_change_password_label';
$form['actions']['submit']['#submit'][] = 'musin_core_user_edit_form_submit';
}
if ($form_id === 'node_gig_edit_form') {
$form['revision_information']['#access'] = FALSE;
}
}
function _musin_core_user_edit_change_password_label($form, &$form_state) {
//dsm($form['group_email_password_artist_name']['#groups']);
$form['group_email_password_artist_name']['#groups']['group_email_password_artist_name'][0]['pass']['pass1']['#title'] = t('New password');
$form['group_email_password_artist_name']['#groups']['group_email_password_artist_name'][0]['pass']['pass2']['#title'] = t('Confirm new password');
return $form;
}
/**
* Implements hook_field_widget_file_generic_form_alter().
*/
function musin_core_field_widget_file_generic_form_alter(&$element, FormStateInterface $form_state, $context) {
if ($context['form']['#parents'][0] == "field_sample_tracks") {
$element['#after_build'][] = '_set_description_field_required';
}
}
function _set_description_field_required($element, FormStateInterface $form_state) {
if (isset($element['description'])) {
$element['description']['#required'] = TRUE;
}
return $element;
}
function musin_core_user_edit_form_submit($form, &$form_state) {
$form_state->setRedirect('entity.user.canonical', ['user' => \Drupal::currentUser()->id()]);
}
/**
* Implements hook_form_FORM_ID_alter().
*/
function musin_core_form_user_login_form_alter(&$form, FormStateInterface $form_state, $form_id) {
$form['#submit'][] = 'musin_core_user_login_form_submit';
}
/**
* Custom submit handler for the login form.
*/
function musin_core_user_login_form_submit($form, FormStateInterface $form_state) {
$url = Url::fromRoute('<front>');
$form_state->setRedirectUrl($url);
}
/**
* Implements hook_preprocess_HOOK().
*/
function musin_core_preprocess_region(&$variables) {
if ($variables['region'] == 'primary_navigation') {
$variables['#cache']['contexts'][] = 'user';
}
}
/**
* Implements hook_entity_presave().
*
* @param \Drupal\Core\Entity\EntityInterface $entity
* @param $term
*/
function musin_core_entity_presave(EntityInterface $entity) {
if ($entity instanceof \Drupal\user\UserInterface) {
$completeness = \Drupal\musin_core\Services\UserHelperService::getProfileCompleteness($entity);
$entity->set('field_completeness', $completeness);
// // Add typed in instrument to users profile view.
// $terms = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->loadByProperties([
// 'field_typed_in_instrument' => 1
// ]);
// $term = reset($terms);
// if ($term !== false) {
// $entity->set('field_typed_in_instrument', $term);
// }
}
// Moving typed in instruments to their vocabulary.
if ($entity instanceof \Drupal\taxonomy\Entity\Term) {
$name = $entity->get('name')->value;
if ($entity->get('vid')->getValue()[0]['target_id'] == 'instruments' && $entity->get('field_typed_in_instrument')->value === 1) {
$entity->set('vid', 'extra_instruments');
} else if ($entity->get('vid')->getValue()[0]['target_id'] == 'genres' && $entity->get('field_typed_in_genre')->value === 1) {
$entity->set('vid', 'extra_genres');
}
}
}



Comments