<?php
/**
 * @copyright (c) Kufer Software GmbH, Loisachstrasse 4, D-84453 Mühldorf
 */

namespace Kufer\KuferTools\Utils\WssField;

class WssFieldKurstagLinkZumKlassenbuch extends WssField
{
  protected function getValue($datamodulWert, $isFormular = false)
  {
    if ($this->dozentHatKlassenbuch() && $this->dozentDarfAnwesenheitenBearbeiten() && $this->dozentHatImKlassenbuchZugriffAufKurstag($datamodulWert)) {
      return '<a href="index.php?tool_id=18&action=anwesenheitseingabe&ktid=' . $datamodulWert->id . '&hideBlaettern=true&referer=' . $this->getReferer() . '">' . $this->getBeschriftung() . '</a>';
    }

    return '';
  }

  private function getBeschriftung()
  {
    return 'zum Klassenbuch';
    
    
  }

  private function dozentHatKlassenbuch()
  {
    $userId = \SessionOperations::getUserIdentifier();
    $dbwTools = new \DBWorkTools();

    return $dbwTools->isToolAllowed($userId, \ToolsAPI::TOOL_ANWESENHEIT_DOZ);
  }

  private function dozentDarfAnwesenheitenBearbeiten()
  {
    $userId = \SessionOperations::getUserIdentifier();

    return \SecurityOperations::privilegAllowed($userId, \ToolsAPI::TOOL_ANWESENHEIT_DOZ, '273.0.3') == '2';
  }

  private function dozentHatImKlassenbuchZugriffAufKurstag($datamodulWert)
  {
    $settingsKlassenbuch = \ToolSettingsAPI::getToolSettings(\ToolsAPI::TOOL_ANWESENHEIT_DOZ);
    if (is_numeric($datamodulWert->id)) { 
      return \Kufer\KuferTools\Dozent\Anwesenheiten\Utils\KurstageUtils::hasAccessToKurstag($datamodulWert->id, $settingsKlassenbuch);
    }

    return false;
  }

  protected function encodeValue($value)
  {
    return $this->purifyHtml($value);
  }

  private function getReferer()
  {
    $url = \URL::loadCurrent();
    
    
    if ($url->hasParameter('action') && in_array($url->getParameterValue('action'), array('reiterTermine', 'resetFilterTermine', 'setFilterTermine'))) {
      $url->setParameterValue('action', 'kursdetails');
    }

    return urlencode($url->getUrlRelative());
  }
}