<?php
/**
 * @file
 * Code for the Diy user feature.
 */

include_once 'diy_user.features.inc';

function diy_user_theme($existing, $type, $theme, $path) {
  return array(
    'diy_legal_page' => array(
      'arguments' => array('content' => NULL),
      'template' => 'diy-legal-page'
    )
  );
}

/**
 * Implementation of HOOK_form_FORM_ID_alter().
 */
function diy_user_form_user_login_alter(&$form, &$form_state, $form_id) {
  $breadcrumb = array();
      
  // add front page
  $breadcrumb[] = l(t('Home'), NULL);
  
  drupal_set_breadcrumb($breadcrumb);

  if(isset($form['register_link'])) {
    $form['register_link']['#weight'] = 10;
  }

}

/**
 * Implementation of HOOK_form_FORM_ID_alter().
 */
function diy_user_form_user_profile_form_alter(&$form, &$form_state, $form_id) {
  global $user;
  
  // hide google plus field for non-admins (role 3)
  if(!in_array(3, array_keys($user->roles))) {
    $form['field_google_plus_profile']['#access'] = FALSE;
  }
}

/**
 * Implementation of HOOK_form_FORM_ID_alter().
 */
function diy_user_form_change_password_form_alter(&$form, &$form_state, $form_id) {
  // Adding fieldgroup for styling  
  if($form['current_pass']['#access'] != 1) {
    // password reset after link
    $form['account']['#prefix'] = '<div class="fieldgroup">';
    $form['account']['#suffix'] = '</div>';
  } else {
    // default change password stuff
    $form['current_pass']['#prefix'] = '<div class="fieldgroup">';
    $form['account']['#suffix'] = '</div>';  
  }
}

/**
 * Implementation of HOOK_menu_alter().
 */
function diy_user_menu_alter(&$items) {
  $items['legal']['page callback'] = 'diy_user_legal_page';
  $items['legal_accept/%/%']['page callback'] = 'diy_user_legal_accept_page';
}

/**
 * Page callback for custom legal theme
 */
function diy_user_legal_page() {
  if(module_exists('legal')) {
    return theme('diy_legal_page', array('content' => legal_page()));
  }
  
  return '';
}

/**
 * Page callback for custom legal access theme
 */
function diy_user_legal_accept_page($form_id, $par1, $par2) {
  if(module_exists('legal')) {
    return theme('diy_legal_page', array('content' => drupal_render(drupal_get_form($form_id, $par1, $par2))));
  }
  
  return '';
}

/**
 * Default theme implementation
 */
function diy_user_preprocess_diy_legal_page(&$vars) {
  $links = array();
  $links['links']['print-page'] = array(
    'title' => t('Print page'),
    'attributes' => array(
      'onClick' => 'javascript:window.print()'
    )
  );
  $links['attributes'] = array(
    'class' => 'clearfix actionlinks'
  );
  $links['heading'] = '';

  $vars['actionlinks'] = theme_links($links);
}

/**
 * Implements HOOK_form_alter().
 */
function diy_user_form_alter(&$form, &$form_state, $form_id) {

  if ($form_id =='user_pass'){
    $form['#submit'][] = 'diy_user_password_reset_redirect';
  }

  if($form_id == 'user_register_form') {
    $form['actions']['submit']['#prefix'] = '<span class="informations-register">Wir informieren Dich per E-Mail über Neuigkeiten bei diybook. Um den Erhalt von E-Mails zu widersprechen ändere bitte die Einstellungen in Deinem Konto oder folge den Anweisungen am Ende einer jeden Mail.</span>';

    $current_domain = domain_get_domain();
    $current_domain_parts = explode('.', $current_domain['subdomain']);
    $current_domain_parts = array_reverse($current_domain_parts);

    $form['actions']['submit']['#prefix'] .= '<span class="agb-datenschutz">' . 'Mit Registrierung gelten unsere '. l('AGB', 'agb-' . drupal_clean_css_identifier($current_domain_parts[0])) .' und '. l('Datenschutzerklärung', 'node/13') .'.' . '</span>';

    // set checkbox for /user/register/handwerker
    if(arg(2) == 'handwerker') {
      if(isset($form['field_anbieter']['und']['#default_value'])) {
        $form['field_anbieter']['und']['#default_value'] = 1;
      }
    }
  }

}

/**
 * Redirects user after password reset form is filled
 */
function diy_user_password_reset_redirect(&$form, &$form_state){
  $form_state['redirect'] = 'user/login';
}

/**
 * Implements HOOK_username_alter().
 */
function diy_user_username_alter(&$name, $account) {
  // normal usage
  if (isset($account->uid)) {
    $user = user_load($account->uid);
    if($field_alias = field_get_items('user', $user, 'field_alias_name')) {
      $name = $field_alias[0]['safe_value'];
    }
  }

  // $account object in theme user picture is not fully populated
  // so, do some extra stuff
  if(isset($account->picture) && isset($account->picture->uid)) {
    $user = user_load($account->picture->uid);
    if($field_alias = field_get_items('user', $user, 'field_alias_name')) {
      $name = $field_alias[0]['safe_value'];
    }
  }

}

function diy_user_small_user_picture($account, $link = NULL) {
  if(isset($account->picture->uri)) {
    $alt = t("@user's picture", array('@user' => format_username($account)));

    $picture = theme('image_style', array( 'path' =>  $account->picture->uri, 'style_name' => 'user_picture', 'alt' => $alt, 'title' => $alt));

    if ($link) {
      $attributes = array(
        'attributes' => array('title' => t('View user profile.')),
        'html' => TRUE,
      );
      $picture = l($picture, $link, $attributes);
    }
  } else {
    $picture = theme_image(array('path' => drupal_get_path('theme', 'diy') . '/images/user_picture.jpg', 'alt' => 'User picture', 'attributes' => array()));
  }

  return $picture;
}

function diy_user_big_user_picture($account, $link = NULL) {
  if(isset($account->picture->uri)) {
    $alt = t("@user's picture", array('@user' => format_username($account)));

    $picture = theme('image_style', array( 'path' =>  $account->picture->uri, 'style_name' => 'user_picture_big', 'alt' => $alt, 'title' => $alt));

    if ($link) {
      $attributes = array(
        'attributes' => array('title' => t('View user profile.')),
        'html' => TRUE,
      );
      $picture = l($picture, $link, $attributes);
    }
  } else {
    $picture = theme_image(array('path' => drupal_get_path('theme', 'diy') . '/images/user_picture.jpg', 'alt' => 'User picture', 'attributes' => array()));
  }

  return $picture;
}

function diy_user_get_name($user) {
  
  if($alias_name = field_get_items('user', $user, 'field_alias_name')) {
    return $alias_name[0]['value'];
  }
  
  return $user->name;
}