<?php 
/** 
 * Main command page for phpLDAPadmin 
 * This script will handle bulk updates. 
 * 
 * @package phpLDAPadmin 
 * @subpackage Page 
 */ 
 
/** 
 */ 
 
require_once './common.php'; 
 
$request = array(); 
$request['dn'] = get_request('dn','REQUEST',true); 
$request['mass_values'] = get_request('mass_values','REQUEST',true); 
 
# Check if the entries exist. 
$request['update'] = array(); 
 
foreach ($request['dn'] as $index => $dn) { 
    # Check if the entry exists. 
    if (! $dn || ! $app['server']->dnExists($dn)) { 
        system_message(array( 
            'title'=>_('Entry does not exist'), 
            'body'=>sprintf('%s (%s/%s)',_('The entry does not exist and will be ignored'),$dn), 
            'type'=>'error')); 
 
        continue; 
    } 
 
    # Simulate the requirements for *Render->accept() 
    if (! isset($request['mass_values'][$index])) 
        continue; 
 
    $_REQUEST['new_values'] = $request['mass_values'][$index]; 
 
    $render = new MassRender($app['server']->getIndex(),'none'); 
    $render->setDN($dn); 
    $render->accept(true); 
 
    if ($render->getTemplate()->getLDAPmodify(false,$index)) 
        $request['update'][$index] = $render; 
} 
 
# We can use the $render to give us a title 
$render->drawTitle(_('Bulk update the following DNs')); 
$render->drawSubTitle(sprintf('%s: <b>%s</b>',_('Server'),$app['server']->getName())); 
 
if (count($request['update'])) { 
    if (get_request('confirm','REQUEST')) { 
        foreach ($request['update'] as $index => $page) { 
            $template = $page->getTemplate(); 
 
            # Perform the modification 
            $result = $app['server']->modify($template->getDN(),$template->getLDAPmodify(false,$index)); 
 
            if ($result) 
                printf('%s: <b>%s</b><br>',$template->getDN(),_('Modification successful!')); 
            else 
                printf('%s: <b>%s</b><br>',$template->getDN(),_('Modification NOT successful!')); 
        } 
 
    } else { 
        echo '<form action="cmd.php" method="post">'; 
        echo '<input type="hidden" name="cmd" value="mass_update" />'; 
        printf('<input type="hidden" name="server_id" value="%s" />',$app['server']->getIndex()); 
        echo '<input type="hidden" name="confirm" value="1" />'; 
 
        foreach ($request['update'] as $j => $page) 
            printf('<input type="hidden" name="dn[%s]" value="%s" />',$j,$page->getTemplate()->getDN()); 
 
        echo '<table class="result_box" width="100%" border="1">'; 
        echo '<tr><td>'; 
 
        echo '<br/>'; 
 
        echo '<table class="result" border="0">'; 
        echo '<tr><td>'; 
        printf(_('There will be %s updates done with this mass update'),sprintf('<b>%s</b>',count($request['update']))); 
        echo '</td></tr>'; 
        echo '</table>'; 
 
        echo '<br/>'; 
 
        foreach ($request['update'] as $index => $page) { 
            $template = $page->getTemplate(); 
 
            echo '<table class="result" border="0">'; 
            echo '<tr class="list_title">'; 
            printf('<td class="icon"><img src="%s/%s" alt="icon" /></td>',IMGDIR,get_icon($app['server']->getIndex(),$template->getDN())); 
 
            printf('<td colspan="3"><a href="cmd.php?cmd=template_engine&server_id=%s&dn=%s">%s</a></td>', 
                $app['server']->getIndex(),rawurlencode(dn_unescape($template->getDN())),htmlspecialchars(get_rdn($template->getDN()))); 
            echo '</tr>'; 
 
            printf('<tr class="list_item"><td class="blank"> </td><td class="heading">dn</td><td class="value" style="width: 45%%;">%s</td><td class="value" style="width: 45%%;"><b>%s</b></td></tr>', 
                htmlspecialchars(dn_unescape($template->getDN())),_('Old Value')); 
 
            foreach ($template->getLDAPmodify(true,$index) as $attribute) { 
                echo '<tr class="list_item">'; 
                echo '<td class="blank"> </td>'; 
 
                echo '<td class="heading">'; 
                $page->draw('Name',$attribute); 
                echo '</td>'; 
 
                # Show NEW Values 
                echo '<td><span style="white-space: nowrap;">'; 
 
                if (! $attribute->getValueCount() || $attribute->isForceDelete()) { 
                    printf('<span style="color: red">[%s]</span>',_('attribute deleted')); 
                    printf('<input type="hidden" name="mass_values[%s][%s][%s]" value="%s" />',$index,$attribute->getName(),0,''); 
                } 
 
                foreach ($attribute->getValues() as $key => $value) { 
                    # For multiple values, we'll highlight the changed ones 
                    if ((count($attribute->getValues()) > 5) && in_array($value,$attribute->getAddedValues())) 
                        echo '<span style="color:#004400; background:#FFFFA0">'; 
 
                    $page->draw('CurrentValue',$attribute,$key); 
 
                    # For multiple values, close the highlighting 
                    if ((count($attribute->getValues()) > 5) && in_array($value,$attribute->getAddedValues())) 
                        echo '</span>'; 
 
                    echo '<br />'; 
                    printf('<input type="hidden" name="mass_values[%s][%s][%s]" value="%s" />',$index,$attribute->getName(),$key,$value); 
                } 
 
                echo '</span></td>'; 
 
                # Show OLD Values 
                echo '<td><span style="white-space: nowrap;">'; 
 
                if (! $attribute->getOldValues()) 
                    printf('<span style="color: green">[%s]</span>',_('attribute doesnt exist')); 
 
                    foreach ($attribute->getOldValues() as $key => $value) { 
                    # For multiple values, we'll highlight the changed ones 
                    if ((count($attribute->getOldValues()) > 5) && in_array($value,$attribute->getRemovedValues()) && count($attribute->getValues())) 
                        echo '<span style="color:#880000; background:#FFFFA0">'; 
 
                    $page->draw('OldValue',$attribute,$key); 
 
                    # For multiple values, close the highlighting 
                    if ((count($attribute->getOldValues()) > 5) && in_array($value,$attribute->getRemovedValues()) && count($attribute->getValues())) 
                        echo '</span>'; 
 
                    echo '<br />'; 
                } 
 
                echo '</span></td>'; 
 
                echo '</tr>'; 
            } 
 
            echo '</table>'; 
 
            echo '<br/>'; 
        } 
 
        echo '</td></tr>'; 
        echo '</table>'; 
        printf('<input type="submit" id="save_button" name="submit" value="%s" />',_('Update Values')); 
        echo '</form>'; 
    } 
 
} else { 
    echo '<center>'; 
    echo _('You made no changes'); 
    echo '</center>'; 
} 
?> 
 
 |