PHP Classes

File: web/SSO/modules/consent/templates/consentform.php

Recommend this page to a friend!
  Classes of william amed   Raptor 2   web/SSO/modules/consent/templates/consentform.php   Download  
File: web/SSO/modules/consent/templates/consentform.php
Role: Example script
Content type: text/plain
Description: Example script
Class: Raptor 2
Framework that takes routes from annotations
Author: By
Last change:
Date: 8 years ago
Size: 8,370 bytes
 

Contents

Class file image Download
<?php
/**
 * Template form for giving consent.
 *
 * Parameters:
 * - 'srcMetadata': Metadata/configuration for the source.
 * - 'dstMetadata': Metadata/configuration for the destination.
 * - 'yesTarget': Target URL for the yes-button. This URL will receive a POST request.
 * - 'yesData': Parameters which should be included in the yes-request.
 * - 'noTarget': Target URL for the no-button. This URL will receive a GET request.
 * - 'noData': Parameters which should be included in the no-request.
 * - 'attributes': The attributes which are about to be released.
 * - 'sppp': URL to the privacy policy of the destination, or FALSE.
 *
 * @package simpleSAMLphp
 */
assert('is_array($this->data["srcMetadata"])');
assert('is_array($this->data["dstMetadata"])');
assert('is_string($this->data["yesTarget"])');
assert('is_array($this->data["yesData"])');
assert('is_string($this->data["noTarget"])');
assert('is_array($this->data["noData"])');
assert('is_array($this->data["attributes"])');
assert('is_array($this->data["hiddenAttributes"])');
assert('$this->data["sppp"] === false || is_string($this->data["sppp"])');

// Parse parameters
if (array_key_exists('name', $this->data['srcMetadata'])) {
   
$srcName = $this->data['srcMetadata']['name'];
} elseif (
array_key_exists('OrganizationDisplayName', $this->data['srcMetadata'])) {
   
$srcName = $this->data['srcMetadata']['OrganizationDisplayName'];
} else {
   
$srcName = $this->data['srcMetadata']['entityid'];
}

if (
is_array($srcName)) {
   
$srcName = $this->t($srcName);
}

if (
array_key_exists('name', $this->data['dstMetadata'])) {
   
$dstName = $this->data['dstMetadata']['name'];
} elseif (
array_key_exists('OrganizationDisplayName', $this->data['dstMetadata'])) {
   
$dstName = $this->data['dstMetadata']['OrganizationDisplayName'];
} else {
   
$dstName = $this->data['dstMetadata']['entityid'];
}

if (
is_array($dstName)) {
   
$dstName = $this->t($dstName);
}

$srcName = htmlspecialchars($srcName);
$dstName = htmlspecialchars($dstName);

$attributes = $this->data['attributes'];

$this->data['header'] = $this->t('{consent:consent:consent_header}');
$this->data['head'] = '<link rel="stylesheet" type="text/css" href="/' .
   
$this->data['baseurlpath'] . 'module.php/consent/style.css" />' . "\n";

$this->includeAtTemplateBase('includes/header.php');
?>

<p>
<?php
echo $this->t(
   
'{consent:consent:consent_accept}',
    array(
'SPNAME' => $dstName, 'IDPNAME' => $srcName)
);

if (
array_key_exists('descr_purpose', $this->data['dstMetadata'])) {
    echo
'</p><p>' . $this->t(
       
'{consent:consent:consent_purpose}',
        array(
           
'SPNAME' => $dstName,
           
'SPDESC' => $this->getTranslation(
               
SimpleSAML_Utilities::arrayize(
                   
$this->data['dstMetadata']['descr_purpose'],
                   
'en'
               
)
            ),
        )
    );
}
?>
</p>

<form style="display: inline; margin: 0px; padding: 0px" action="<?php echo htmlspecialchars($this->data['yesTarget']); ?>">
<p style="margin: 1em">

<?php
if ($this->data['usestorage']) {
   
$checked = ($this->data['checked'] ? 'checked="checked"' : '');
    echo
'<input type="checkbox" name="saveconsent" ' . $checked .
       
' value="1" /> ' . $this->t('{consent:consent:remember}');
}

// Embed hidden fields...
foreach ($this->data['yesData'] as $name => $value) {
    echo
'<input type="hidden" name="' . htmlspecialchars($name) .
       
'" value="' . htmlspecialchars($value) . '" />';
}
?>
</p>
    <input type="submit" name="yes" id="yesbutton" value="<?php echo htmlspecialchars($this->t('{consent:consent:yes}')) ?>" />
</form>

<form style="display: inline; margin-left: .5em;" action="<?php echo htmlspecialchars($this->data['noTarget']); ?>" method="get">

<?php
foreach ($this->data['noData'] as $name => $value) {
    echo(
'<input type="hidden" name="' . htmlspecialchars($name) .
       
'" value="' . htmlspecialchars($value) . '" />');
}
?>
<input type="submit" style="display: inline" name="no" id="nobutton" value="<?php echo htmlspecialchars($this->t('{consent:consent:no}')) ?>" />
</form>

<?php
if ($this->data['sppp'] !== false) {
    echo
"<p>" . htmlspecialchars($this->t('{consent:consent:consent_privacypolicy}')) . " ";
    echo
"<a target='_blank' href='" . htmlspecialchars($this->data['sppp']) . "'>" . $dstName . "</a>";
    echo
"</p>";
}

/**
 * Recursiv attribute array listing function
 *
 * @param SimpleSAML_XHTML_Template $t Template object
 * @param array $attributes Attributes to be presented
 * @param string $nameParent Name of parent element
 *
 * @return string HTML representation of the attributes
 */
function present_attributes($t, $attributes, $nameParent)
{
   
$alternate = array('odd', 'even');
   
$i = 0;
   
$summary = 'summary="' . $t->t('{consent:consent:table_summary}') . '"';

    if (
strlen($nameParent) > 0) {
       
$parentStr = strtolower($nameParent) . '_';
       
$str = '<table class="attributes" ' . $summary . '>';
    } else {
       
$parentStr = '';
       
$str = '<table id="table_with_attributes" class="attributes" '. $summary .'>';
       
$str .= "\n" . '<caption>' . $t->t('{consent:consent:table_caption}') .
           
'</caption>';
    }

    foreach (
$attributes as $name => $value) {
       
$nameraw = $name;
       
$name = $t->getAttributeTranslation($parentStr . $nameraw);

        if (
preg_match('/^child_/', $nameraw)) {
           
// Insert child table
           
$parentName = preg_replace('/^child_/', '', $nameraw);
            foreach (
$value AS $child) {
               
$str .= "\n" . '<tr class="odd"><td style="padding: 2em">' .
                   
present_attributes($t, $child, $parentName) . '</td></tr>';
            }
        } else {
           
// Insert values directly

           
$str .= "\n" . '<tr class="' . $alternate[($i++ % 2)] .
               
'"><td><span class="attrname">' . htmlspecialchars($name) . '</span>';

           
$isHidden = in_array($nameraw, $t->data['hiddenAttributes'], true);
            if (
$isHidden) {
               
$hiddenId = SimpleSAML_Utilities::generateID();

               
$str .= '<div class="attrvalue" style="display: none;" id="hidden_' . $hiddenId . '">';
            } else {
               
$str .= '<div class="attrvalue">';
            }

            if (
sizeof($value) > 1) {
               
// We hawe several values
               
$str .= '<ul>';
                foreach (
$value AS $listitem) {
                    if (
$nameraw === 'jpegPhoto') {
                       
$str .= '<li><img src="data:image/jpeg;base64,' .
                           
htmlspecialchars($listitem) .
                           
'" alt="User photo" /></li>';
                    } else {
                       
$str .= '<li>' . htmlspecialchars($listitem) . '</li>';
                    }
                }
               
$str .= '</ul>';
            } elseif (isset(
$value[0])) {
               
// We hawe only one value
               
if ($nameraw === 'jpegPhoto') {
                   
$str .= '<img src="data:image/jpeg;base64,' .
                       
htmlspecialchars($value[0]) .
                       
'" alt="User photo" />';
                } else {
                   
$str .= htmlspecialchars($value[0]);
                }
            }
// end of if multivalue
           
$str .= '</div>';

            if (
$isHidden) {
               
$str .= '<div class="attrvalue consent_showattribute" id="visible_' . $hiddenId . '">';
               
$str .= '... ';
               
$str .= '<a class="consent_showattributelink" href="javascript:SimpleSAML_show(\'hidden_' . $hiddenId . '\'); SimpleSAML_hide(\'visible_' . $hiddenId . '\');">';
               
$str .= $t->t('{consent:consent:show_attribute}');
               
$str .= '</a>';
               
$str .= '</div>';
            }

           
$str .= '</td></tr>';
        }
// end else: not child table
   
} // end foreach
   
$str .= isset($attributes)? '</table>':'';
    return
$str;
}

echo
'<h3 id="attributeheader">' .
   
$this->t(
       
'{consent:consent:consent_attributes_header}',
        array(
'SPNAME' => $dstName, 'IDPNAME' => $srcName)
    ) .
   
'</h3>';

echo(
present_attributes($this, $attributes, ''));

$this->includeAtTemplateBase('includes/footer.php');