<commit_before><?php
/**
 * authSources_Edit.php
 *
 * ProcessMaker Open Source Edition
 * Copyright (C) 2004 - 2011 Colosa Inc.23
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 *
 * For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
 * Coral Gables, FL, 33134, USA, or email <EMAIL>.
 */

global $RBAC;
if ($RBAC->userCanAccess( 'PM_SETUP_ADVANCE' ) != 1) {
    G::SendTemporalMessage( 'ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels' );
    G::header( 'location: ../login/login' );
    die();
}

if (! isset( $_GET['sUID'] )) {
    G::SendTemporalMessage( 'ID_ERROR_OBJECT_NOT_EXISTS', 'error', 'labels' );
    G::header( 'location: authSources_List' );
    die();
}

if ($_GET['sUID'] == '') {
    G::SendTemporalMessage( 'ID_ERROR_OBJECT_NOT_EXISTS', 'error', 'labels' );
    G::header( 'location: authSources_List' );
    die();
}

$G_MAIN_MENU = 'processmaker';
$G_SUB_MENU = 'users';
$G_ID_MENU_SELECTED = 'USERS';
$G_ID_SUB_MENU_SELECTED = 'AUTH_SOURCES';

$fields = $RBAC->getAuthSource( $_GET['sUID'] );

if (is_array( $fields['AUTH_SOURCE_DATA'] )) {
    foreach ($fields['AUTH_SOURCE_DATA'] as $field => $value) {
        $fields[$field] = $value;
    }
}
$fields['AUTH_SOURCE_SHOWGRID_FLAG'] = 0;
if (isset($fields['AUTH_SOURCE_DATA']['AUTH_SOURCE_SHOWGRID']) && $fields['AUTH_SOURCE_DATA']['AUTH_SOURCE_SHOWGRID'] == 'on') {
    $fields['AUTH_SOURCE_SHOWGRID_FLAG'] = 1;    
}
unset( $fields['AUTH_SOURCE_DATA'] );

$textAttribute = '';
if (isset($fields['AUTH_SOURCE_GRID_ATTRIBUTE']) && count($fields['AUTH_SOURCE_GRID_ATTRIBUTE'])) {
    foreach ($fields['AUTH_SOURCE_GRID_ATTRIBUTE'] as $value) {
        $textAttribute .= '|' . $value['attributeLdap'] . '/' . $value['attributeUser'];
    }
}
$fields['AUTH_SOURCE_GRID_TEXT'] = $textAttribute;

//fixing a problem with dropdown with int values,
//the problem : the value was integer, but the dropdown was expecting a string value, and they returns always the first item of dropdown
if (isset( $fields['AUTH_SOURCE_ENABLED_TLS'] )) {
    $fields['AUTH_SOURCE_ENABLED_TLS'] = sprintf( '%d', $fields['AUTH_SOURCE_ENABLED_TLS'] );
}
if (isset( $fields['AUTH_ANONYMOUS'] )) {
    $fields['AUTH_ANONYMOUS'] = sprintf( '%d', $fields['AUTH_ANONYMOUS'] );
}

$G_PUBLISH = new Publisher();
if ($fields['AUTH_SOURCE_PROVIDER'] == 'ldap') {
    $oHeadPublisher = & headPublisher::getSingleton();
    $oHeadPublisher->addExtJsScript( 'authSources/authSourcesEdit', false );
    $oHeadPublisher->assign( 'sUID', $_GET['sUID'] );
    G::RenderPage( 'publish', 'extJs' );
} else {
    if (file_exists( PATH_PLUGINS . $fields['AUTH_SOURCE_PROVIDER'] . PATH_SEP . $fields['AUTH_SOURCE_PROVIDER'] . 'Edit.xml' )) {
        if (class_exists( $fields['AUTH_SOURCE_PROVIDER'] )) {
            // The attributes the users
            G::loadClass('pmFunctions');
            $data = executeQuery('DESCRIBE USERS');
            $fieldSet = array('USR_UID', 'USR_USERNAME', 'USR_PASSWORD', 'USR_EMAIL', 'USR_CREATE_DATE', 'USR_UPDATE_DATE', 'USR_COUNTRY', 'USR_CITY', 'USR_LOCATION', 'DEP_UID', 'USR_RESUME', 'USR_ROLE', 'USR_REPORTS_TO', 'USR_REPLACED_BY', 'USR_UX');
            $attributes = '';
            foreach ($data as $value) {
                if (!(in_array($value['Field'], $fieldSet))) {
                    $attributes .= $value['Field'] . '|';
                }
            }
            $fields['AUTH_SOURCE_ATTRIBUTE_IDS'] = $attributes;
            $G_PUBLISH->AddContent( 'xmlform', 'xmlform', $fields['AUTH_SOURCE_PROVIDER'] . PATH_SEP . $fields['AUTH_SOURCE_PROVIDER'] . 'Edit.xml', '', $fields, '../authSources/authSources_Save' );
        } else {
            $G_PUBLISH->AddContent( 'xmlform', 'xmlform', 'login/showMessage', '', array ('MESSAGE' => G::LoadTranslation( 'ID_AUTH_SOURCE_MISSING' )<commit_msg>BUG 10380: Cuando se selecciona la opcion ldap advanced se... SOLVED<commit_after><?php
/**
 * authSources_Edit.php
 *
 * ProcessMaker Open Source Edition
 * Copyright (C) 2004 - 2011 Colosa Inc.23
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 *
 * For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
 * Coral Gables, FL, 33134, USA, or email <EMAIL>.
 */

global $RBAC;
if ($RBAC->userCanAccess( 'PM_SETUP_ADVANCE' ) != 1) {
    G::SendTemporalMessage( 'ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels' );
    G::header( 'location: ../login/login' );
    die();
}

if (! isset( $_GET['sUID'] )) {
    G::SendTemporalMessage( 'ID_ERROR_OBJECT_NOT_EXISTS', 'error', 'labels' );
    G::header( 'location: authSources_List' );
    die();
}

if ($_GET['sUID'] == '') {
    G::SendTemporalMessage( 'ID_ERROR_OBJECT_NOT_EXISTS', 'error', 'labels' );
    G::header( 'location: authSources_List' );
    die();
}

$G_MAIN_MENU = 'processmaker';
$G_SUB_MENU = 'users';
$G_ID_MENU_SELECTED = 'USERS';
$G_ID_SUB_MENU_SELECTED = 'AUTH_SOURCES';

$fields = $RBAC->getAuthSource( $_GET['sUID'] );

if (is_array( $fields['AUTH_SOURCE_DATA'] )) {
    foreach ($fields['AUTH_SOURCE_DATA'] as $field => $value) {
        $fields[$field] = $value;
    }
}
$fields['AUTH_SOURCE_SHOWGRID_FLAG'] = 0;
if (isset($fields['AUTH_SOURCE_DATA']['AUTH_SOURCE_SHOWGRID']) && $fields['AUTH_SOURCE_DATA']['AUTH_SOURCE_SHOWGRID'] == 'on') {
    $fields['AUTH_SOURCE_SHOWGRID_FLAG'] = 1;    
}
unset( $fields['AUTH_SOURCE_DATA'] );

$textAttribute = '';
if (isset($fields['AUTH_SOURCE_GRID_ATTRIBUTE']) && count($fields['AUTH_SOURCE_GRID_ATTRIBUTE'])) {
    foreach ($fields['AUTH_SOURCE_GRID_ATTRIBUTE'] as $value) {
        $textAttribute .= '|' . $value['attributeLdap'] . '/' . $value['attributeUser'];
    }
}
$fields['AUTH_SOURCE_GRID_TEXT'] = $textAttribute;

//fixing a problem with dropdown with int values,
//the problem : the value was integer, but the dropdown was expecting a string value, and they returns always the first item of dropdown
if (isset( $fields['AUTH_SOURCE_ENABLED_TLS'] )) {
    $fields['AUTH_SOURCE_ENABLED_TLS'] = sprintf( '%d', $fields['AUTH_SOURCE_ENABLED_TLS'] );
}
if (isset( $fields['AUTH_ANONYMOUS'] )) {
    $fields['AUTH_ANONYMOUS'] = sprintf( '%d', $fields['AUTH_ANONYMOUS'] );
}

$G_PUBLISH = new Publisher();
if ($fields['AUTH_SOURCE_PROVIDER'] == 'ldap') {
    $oHeadPublisher = & headPublisher::getSingleton();
    $oHeadPublisher->addExtJsScript( 'authSources/authSourcesEdit', false );
    $oHeadPublisher->assign( 'sUID', $_GET['sUID'] );
    G::RenderPage( 'publish', 'extJs' );
} else {
    if (file_exists( PATH_PLUGINS . $fields['AUTH_SOURCE_PROVIDER'] . PATH_SEP . $fields['AUTH_SOURCE_PROVIDER'] . 'Edit.xml' )) {
        if (class_exists( $fields['AUTH_SOURCE_PROVIDER'] )) {
            // The attributes the users
            G::loadClass('pmFunctions');
            $data = executeQuery('DESCRIBE USERS');
            $fieldSet = array('USR_UID', 'USR_USERNAME', 'USR_PASSWORD', 'USR_EMAIL', 'USR_CREATE_DATE', 'USR_UPDATE_DATE', 'USR_COUNTRY', 'USR_CITY', 'USR_LOCATION', 'DEP_UID', 'USR_RESUME', 'USR_ROLE', 'USR_REPORTS_TO', 'USR_REPLACED_BY', 'USR_UX');
            $attributes = '';
            foreach ($data as $value) {
                if (!(in_array($value['Field'], $fieldSet))) {
                    $attributes .= $value['Field'] . '|';
                }
            }
            $fields['AUTH_SOURCE_ATTRIBUTE_IDS'] = $attributes;
            $G_PUBLISH->AddContent( 'xmlform', 'xmlform', "../plugins/".$fields['AUTH_SOURCE_PROVIDER'] . PATH_SEP . $fields['AUTH_SOURCE_PROVIDER'] . 'Edit', '', $fields, '../authSources/authSources_Save' );
        } else {
            $G_PUBLISH->AddContent( 'xmlform', 'xmlform', 'login/showMessage', '', array ('MESSAGE' => G::LoadTranslation( 'ID_AUTH_SOURCE_MISSING' )
{'fraction_non_alphanumeric': 0.16079270352437788, 'fraction_numerical': 0.005742596554442068, 'mean_word_length': 4.212441314553991, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 23, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 11}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1084210', 'n_tokens_mistral': 3062, 'n_tokens_neox': 2963, 'n_words': 686}