2007-11-15 19:07:24 +01:00
< ? php
/*******************************************************************************
* Copyright ( C ) 2007 Easter - eggs
* http :// ldapsaisie . labs . libre - entreprise . org
*
* Author : See AUTHORS file in top - level directory .
*
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public License version 2
* as published by the Free Software Foundation .
*
* 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 General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software
* Foundation , Inc . , 59 Temple Place - Suite 330 , Boston , MA 02111 - 1307 , USA .
******************************************************************************/
2009-02-20 15:05:22 +01:00
LSsession :: loadLSclass ( 'LSformElement' );
2007-11-15 19:07:24 +01:00
/**
* Element password d ' un formulaire pour LdapSaisie
*
2008-04-25 16:09:27 +02:00
* Cette classe définis les éléments password des formulaires .
* Elle étant la classe basic LSformElement .
2007-11-15 19:07:24 +01:00
*
* @ author Benjamin Renard < brenard @ easter - eggs . com >
*/
class LSformElement_password extends LSformElement {
2020-04-29 15:54:21 +02:00
2008-10-16 14:01:26 +02:00
var $fieldTemplate = 'LSformElement_password_field.tpl' ;
var $template = 'LSformElement_password.tpl' ;
2020-04-29 15:54:21 +02:00
2008-10-31 13:12:31 +01:00
var $sendMail = false ;
2007-11-15 19:07:24 +01:00
2008-02-12 18:59:44 +01:00
/**
2008-04-25 16:09:27 +02:00
* Recupère la valeur de l ' élement passée en POST
2007-11-15 19:07:24 +01:00
*
2008-04-25 16:09:27 +02:00
* Cette méthode vérifie la présence en POST de la valeur de l ' élément et la récupère
* pour la mettre dans le tableau passer en paramètre avec en clef le nom de l ' élément
2007-11-15 19:07:24 +01:00
*
2020-05-08 20:48:13 +02:00
* @ param [ in ] & $return array Reference of the array for retreived values
* @ param [ in ] $onlyIfPresent boolean If true and data of this element is not present in POST data ,
* just ignore it .
2007-11-15 19:07:24 +01:00
*
2008-04-25 16:09:27 +02:00
* @ retval boolean true si la valeur est présente en POST , false sinon
2007-11-15 19:07:24 +01:00
*/
2020-05-08 20:48:13 +02:00
public function getPostData ( & $return , $onlyIfPresent = false ) {
2008-04-25 16:09:27 +02:00
// Récupère la valeur dans _POST, et les vérifie avec la fonction générale
2020-05-08 20:48:13 +02:00
$retval = parent :: getPostData ( $return , $onlyIfPresent );
2008-04-25 16:09:27 +02:00
// Si une valeur est recupérée
2007-11-15 19:07:24 +01:00
if ( $retval ) {
2020-04-29 15:54:21 +02:00
$val = $this -> form -> ldapObject -> attrs [ $this -> name ] -> getValue ();
2008-02-12 18:59:44 +01:00
if ( ( empty ( $return [ $this -> name ][ 0 ]) ) && ( ! empty ( $val ) ) ) {
unset ( $return [ $this -> name ]);
2019-03-12 12:50:28 +01:00
$this -> form -> _notUpdate [ $this -> name ] = true ;
2008-02-12 18:59:44 +01:00
return true ;
}
2020-04-29 15:54:21 +02:00
2020-06-30 09:57:16 +02:00
if ( $this -> getParam ( 'html_options.confirmInput' , False , 'bool' )) {
2020-06-30 15:55:21 +02:00
$confirm_data = self :: getData ( $_POST , $this -> name . '_confirm' );
$confirmed = false ;
if ( ! is_array ( $confirm_data )) {
2020-07-07 12:44:18 +02:00
if ( ! isset ( $return [ $this -> name ]) || empty ( $return [ $this -> name ]) || empty ( $return [ $this -> name ][ 0 ])) {
2020-06-30 15:55:21 +02:00
self :: log_debug ( 'getPostData(' . $this -> name . '): no confirm data, but empty password provided => confirmed' );
$confirmed = true ;
}
2020-07-07 14:28:55 +02:00
elseif ( $onlyIfPresent ) {
self :: log_debug ( 'getPostData(' . $this -> name . '): no confirm data, but onlyIfPresent mode => confirmed' );
$confirmed = true ;
}
2020-06-30 15:55:21 +02:00
}
elseif ( $confirm_data == $return [ $this -> name ]) {
self :: log_debug ( 'getPostData(' . $this -> name . '): confirm password value matched with new password' );
$confirmed = true ;
}
if ( ! $confirmed ) {
2020-06-30 09:57:16 +02:00
unset ( $return [ $this -> name ]);
2020-06-30 15:55:21 +02:00
self :: log_debug ( 'getPostData(' . $this -> name . '): ' . varDump ( $return [ $this -> name ]) . " != " . varDump ( $confirm_data ));
2020-06-30 09:57:16 +02:00
$this -> form -> setElementError ( $this -> attr_html , _ ( '%{label}: passwords entered did not match.' ));
return true ;
}
}
2020-07-07 15:41:16 +02:00
if (( $return [ $this -> name ] && $this -> verifyPassword ( $return [ $this -> name ][ 0 ])) || (( empty ( $return [ $this -> name ][ 0 ])) && empty ( $val ))) {
2020-06-30 15:55:21 +02:00
self :: log_debug ( 'getPostData(' . $this -> name . '): no change' );
2011-05-01 16:44:32 +02:00
unset ( $return [ $this -> name ]);
2020-05-08 20:48:53 +02:00
$this -> form -> _notUpdate [ $this -> name ] = true ;
2011-05-01 16:44:32 +02:00
return true ;
}
2020-04-29 15:54:21 +02:00
2008-10-31 13:12:31 +01:00
//Mail
2011-05-23 11:50:34 +02:00
// Do not send mail if password is not set :
if ( empty ( $return [ $this -> name ])) {
return true ;
}
2008-10-31 13:12:31 +01:00
if ( isset ( $_POST [ 'LSformElement_password_' . $this -> name . '_send' ])) {
if ( $_POST [ 'LSformElement_password_' . $this -> name . '_send' ] == 1 ) {
$this -> sendMail = true ;
2020-07-07 16:04:32 +02:00
self :: log_debug ( 'getPostData(' . $this -> name . '): send new password enabled by form' );
2008-10-31 13:12:31 +01:00
}
}
2019-03-11 22:21:25 +01:00
else if ( $this -> getParam ( 'html_options.mail.send' )) {
2008-10-31 13:12:31 +01:00
$this -> sendMail = true ;
2020-07-07 16:04:32 +02:00
self :: log_debug ( 'getPostData(' . $this -> name . '): send new password enabled by config' );
2008-10-31 13:12:31 +01:00
}
2009-01-24 18:45:14 +01:00
if ( $this -> sendMail && LSsession :: loadLSaddon ( 'mail' )) {
2019-03-11 22:21:25 +01:00
$msg = $this -> getParam ( 'html_options.mail.msg' );
$subject = $this -> getParam ( 'html_options.mail.subject' );
2019-03-12 12:49:19 +01:00
$mail = " " ;
2008-10-31 13:12:31 +01:00
if ( isset ( $_POST [ 'LSformElement_password_' . $this -> name . '_msg' ])) {
$msgInfos = json_decode ( $_POST [ 'LSformElement_password_' . $this -> name . '_msg' ]);
if ( $msgInfos -> subject ) {
$subject = $msgInfos -> subject ;
}
if ( $msgInfos -> msg ) {
2010-11-18 15:37:50 +01:00
$msg = $msgInfos -> msg ;
2008-10-31 13:12:31 +01:00
}
if ( $msgInfos -> mail ) {
$mail = $msgInfos -> mail ;
2020-07-07 16:04:32 +02:00
if ( ! checkEmail (
$mail ,
$this -> getParam ( 'html_options.mail.domain' ),
$this -> getParam ( 'html_options.mail.checkDomain' , true , 'bool' )
)) {
$this -> form -> setElementError ( $this -> attr_html , _ ( '%{label}: invalid email address provided to send new password.' ));
return true ;
}
2008-10-31 13:12:31 +01:00
}
}
$this -> sendMail = array (
'subject' => $subject ,
'msg' => $msg ,
2010-11-18 15:37:50 +01:00
'mail' => $mail ,
'pwd' => $return [ $this -> name ][ 0 ]
2008-10-31 13:12:31 +01:00
);
$this -> attr_html -> attribute -> addObjectEvent ( 'after_modify' , $this , 'send' );
}
2008-02-12 18:59:44 +01:00
}
2007-11-15 19:07:24 +01:00
return $retval ;
}
2008-05-15 12:56:55 +02:00
/**
2008-04-25 16:09:27 +02:00
* Retourne les infos d 'affichage de l' élément
2020-04-29 15:54:21 +02:00
*
2008-04-25 16:09:27 +02:00
* Cette méthode retourne les informations d 'affichage de l' élement
2007-11-15 19:07:24 +01:00
*
2008-02-05 17:11:21 +01:00
* @ retval array
2007-11-15 19:07:24 +01:00
*/
2019-03-12 11:42:53 +01:00
public function getDisplay (){
2020-05-28 16:56:36 +02:00
LStemplate :: addCssFile ( 'LSformElement_password.css' );
2008-02-12 18:59:44 +01:00
$return = $this -> getLabelInfos ();
2008-10-16 14:01:26 +02:00
$pwd = " " ;
2019-03-11 22:21:25 +01:00
if ( $this -> getParam ( 'html_options.clearView' ) or $this -> getParam ( 'html_options.clearEdit' )) {
2013-06-24 17:52:45 +02:00
$pwd = $this -> values [ 0 ];
}
2008-02-12 18:59:44 +01:00
if ( ! $this -> isFreeze ()) {
2020-04-29 15:54:21 +02:00
2008-11-10 03:12:36 +01:00
// Help Infos
2020-06-04 19:04:48 +02:00
LStemplate :: addHelpInfo (
2008-11-10 03:12:36 +01:00
'LSformElement_password' ,
array (
2009-02-14 00:06:58 +01:00
'generate' => _ ( 'Generate a password.' ),
2009-03-12 19:01:31 +01:00
'verify' => _ ( 'Compare with stored password.' ),
2009-02-14 00:06:58 +01:00
'view' => _ ( 'Display password.' ),
2010-04-27 15:52:45 +02:00
'viewHash' => _ ( 'Display hashed password.' ),
2009-02-14 00:06:58 +01:00
'hide' => _ ( 'Hide password.' ),
'mail' => _ ( " The password will be sent by mail if changed. Click to disable automatic notification. " ),
'nomail' => _ ( " The password will not be sent if changed. Click to enable automatic notification. " ),
'editmail' => _ ( " Modify the mail sent to notice the user " )
2008-11-10 03:12:36 +01:00
)
);
2020-04-29 15:54:21 +02:00
2019-03-11 22:21:25 +01:00
if ( $this -> getParam ( 'html_options.generationTool' ) && $this -> getParam ( 'html_options.autoGenerate' ) && empty ( $this -> values )) {
2009-04-09 11:28:48 +02:00
$pwd = $this -> generatePassword ( $this -> params );
2008-06-19 16:07:57 +02:00
}
2020-04-29 15:54:21 +02:00
2008-10-16 14:01:26 +02:00
$params = array (
2019-03-11 22:21:25 +01:00
'generate' => $this -> getParam ( 'html_options.generationTool' , true , 'bool' ),
'clearEdit' => $this -> getParam ( 'html_options.clearEdit' , false , 'bool' ),
'viewHash' => $this -> getParam ( 'html_options.viewHash' , false , 'bool' ),
2020-06-11 20:14:16 +02:00
'verify' => ( ( ! $this -> attr_html -> attribute -> ldapObject -> isNew ()) && $this -> getParam ( 'html_options.verify' , True , 'bool' ) ),
'confirmChange' => ( ! $this -> attr_html -> attribute -> ldapObject -> isNew () && $this -> getParam ( 'html_options.confirmChange' , False , 'bool' )),
2020-06-30 09:57:16 +02:00
'confirmInput' => $this -> getParam ( 'html_options.confirmInput' , False , 'bool' ),
2008-10-16 14:01:26 +02:00
);
2019-03-11 22:21:25 +01:00
2020-06-11 20:14:16 +02:00
if ( $params [ 'confirmChange' ]) {
2020-06-30 09:59:25 +02:00
$defaultConfirmChangeQuestion = ___ ( '%{label}: Do you confirm the password change?' );
$params [ 'confirmChangeQuestion' ] = getFData ( __ ( $this -> getParam ( 'html_options.confirmChangeQuestion' , $defaultConfirmChangeQuestion )), $this -> label );
}
2020-06-30 09:57:16 +02:00
if ( $params [ 'confirmInput' ]) {
$defaultConfirmInputError = ___ ( 'Passwords entered did not match.' );
$params [ 'confirmInputError' ] = getFData ( __ ( $this -> getParam ( 'html_options.confirmInputError' , $defaultConfirmInputError )), $this -> label );
2020-06-11 20:14:16 +02:00
}
2019-03-11 22:21:25 +01:00
if ( $this -> getParam ( 'html_options.mail' )) {
$params [ 'mail' ] = $this -> getParam ( 'html_options.mail' );
2018-02-08 18:16:23 +01:00
$params [ 'mail' ][ 'mail_attr' ] = $this -> getMailAttrs ();
2008-10-31 13:12:31 +01:00
}
2020-05-28 16:56:36 +02:00
LStemplate :: addJSconfigParam ( $this -> name , $params );
2020-04-29 15:54:21 +02:00
2020-05-28 16:56:36 +02:00
LStemplate :: addJSscript ( 'LSformElement_password_field.js' );
LStemplate :: addJSscript ( 'LSformElement_password.js' );
2008-02-12 18:59:44 +01:00
}
2019-03-11 22:21:25 +01:00
$return [ 'html' ] = $this -> fetchTemplate (
NULL ,
array (
'pwd' => $pwd ,
'clearView' => $this -> getParam ( 'html_options.clearView' ),
'clearEdit' => $this -> getParam ( 'html_options.clearEdit' ),
2020-06-30 09:57:16 +02:00
'confirmInput' => $this -> getParam ( 'html_options.confirmInput' , False , 'bool' ),
2019-03-11 22:21:25 +01:00
)
);
2008-02-12 18:59:44 +01:00
return $return ;
}
2020-04-29 15:54:21 +02:00
2019-03-12 11:42:53 +01:00
public static function generatePassword ( $params = NULL ) {
2019-03-11 22:21:25 +01:00
if ( LSconfig :: get ( 'html_options.use_pwgen' , false , null , $params )) {
$args = LSconfig :: get ( 'html_options.pwgen_opts' , '' , 'string' , $params );
$len = LSconfig :: get ( 'html_options.lenght' , 8 , 'int' , $params );
$bin = LSconfig :: get ( 'html_options.pwgen_path' , 'pwgen' , 'string' , $params );
$cmd = " $bin " . escapeshellcmd ( $args ) . " $len 1 " ;
2015-02-05 10:33:14 +01:00
exec ( $cmd , $ret , $retcode );
LSdebug ( " Generate password using pwgen. Cmd : ' $cmd ' / Return code : $retcode / Return : " . print_r ( $ret , 1 ));
if ( $retcode == 0 && count ( $ret ) > 0 ) {
return $ret [ 0 ];
}
else {
LSerror :: addErrorCode ( 'LSformElement_password_03' );
}
}
2019-03-11 22:21:25 +01:00
return generatePassword ( LSconfig :: get ( 'html_options.chars' , null , null , $params ), LSconfig :: get ( 'html_options.lenght' , 8 , 'int' , $params ));
2008-05-07 16:09:47 +02:00
}
2020-04-29 15:54:21 +02:00
2019-03-12 11:42:53 +01:00
public function verifyPassword ( $pwd ) {
2008-06-19 16:07:57 +02:00
if ( $this -> attr_html -> attribute -> ldapObject -> isNew ()) {
return false ;
}
2011-05-01 16:44:32 +02:00
if ( $this -> isLoginPassword ()) {
2019-06-20 19:55:31 +02:00
return LSsession :: checkUserPwd ( $this -> attr_html -> attribute -> ldapObject , $pwd );
2011-05-01 16:44:32 +02:00
}
else {
2019-06-20 19:55:31 +02:00
return $this -> attr_html -> attribute -> ldap -> verify ( $pwd );
2011-05-01 16:44:32 +02:00
}
2008-06-19 16:07:57 +02:00
}
2018-02-08 18:16:23 +01:00
2019-03-12 11:42:53 +01:00
public function getMailAttrs () {
2019-03-11 22:21:25 +01:00
if ( ! $this -> getParam ( 'html_options.mail' ))
2018-02-08 18:16:23 +01:00
return False ;
2019-03-11 22:21:25 +01:00
if ( $this -> getParam ( 'html_options.mail.get_mail_attr_function' )) {
$func = $this -> getParam ( 'html_options.mail.get_mail_attr_function' );
if ( is_callable ( $func )) {
2018-02-08 18:16:23 +01:00
try {
2019-03-11 22:21:25 +01:00
return call_user_func_array ( $func , array ( & $this ));
2018-02-08 18:16:23 +01:00
}
catch ( Exception $e ) {
LSerror :: addErrorCode ( 'LSformElement_password_05' , $e -> getMessage ());
}
}
else {
LSerror :: addErrorCode ( 'LSformElement_password_04' );
return False ;
}
}
2019-03-11 22:21:25 +01:00
return $this -> getParam ( 'html_options.mail.mail_attr' );
2018-02-08 18:16:23 +01:00
}
2019-03-12 11:42:53 +01:00
public function send ( $params ) {
2008-10-31 13:12:31 +01:00
if ( is_array ( $this -> sendMail )) {
$mail = ( String ) $this -> sendMail [ 'mail' ];
2020-07-07 16:04:32 +02:00
self :: log_debug ( " send(): mail from params: ' $mail ' " );
if ( ! $mail ) {
2018-02-08 18:16:23 +01:00
$mail_attrs = $this -> getMailAttrs ();
2012-12-18 12:20:27 +01:00
if ( ! is_array ( $mail_attrs )) {
2013-09-05 10:33:23 +02:00
$mail_attrs = array ( $mail_attrs );
2008-10-31 13:12:31 +01:00
}
2020-07-07 16:04:32 +02:00
self :: log_debug ( 'send(): mail attrs: ' . varDump ( $mail_attrs ));
$checkDomainsList = $this -> getParam ( 'html_options.mail.domain' );
$checkDomain = $this -> getParam ( 'html_options.mail.checkDomain' , true , 'bool' );
2012-12-18 12:20:27 +01:00
foreach ( $mail_attrs as $attr ) {
$mail_attr = $this -> attr_html -> attribute -> ldapObject -> attrs [ $attr ];
if ( $mail_attr instanceOf LSattribute ) {
2020-07-07 16:04:32 +02:00
$mail_values = $mail_attr -> getValue ();
if ( ! is_array ( $mail_values ))
$mail_values = array ( $mail_values );
foreach ( $mail_values as $mail_value ) {
if ( $mail_value && checkEmail ( $mail_value , $checkDomainsList , $checkDomain )) {
$mail = $mail_value ;
break ;
}
2012-12-18 12:20:27 +01:00
}
2020-07-07 16:04:32 +02:00
if ( $mail )
break ;
else
self :: log_debug ( " send(): $attr attribute empty (or does not contain valid email) " );
2012-12-18 12:20:27 +01:00
}
else {
2020-07-07 16:04:32 +02:00
self :: log_warning ( " send(): ' $attr ' attribute to send new password does not exists. " );
2012-12-18 12:20:27 +01:00
}
}
2020-07-07 16:04:32 +02:00
if ( ! $mail ) {
2012-12-18 12:20:27 +01:00
LSerror :: addErrorCode ( 'LSformElement_password_01' );
2008-10-31 13:12:31 +01:00
return ;
}
}
2020-04-29 15:54:21 +02:00
2020-07-07 16:04:32 +02:00
self :: log_info ( $this -> attr_html -> attribute -> ldapObject -> getDn () . " : send new ' " . $this -> name . " ' to ' $mail '. " );
$this -> attr_html -> attribute -> ldapObject -> registerOtherValue ( 'password' , $this -> sendMail [ 'pwd' ]);
$msg = $this -> attr_html -> attribute -> ldapObject -> getFData ( $this -> sendMail [ 'msg' ]);
$headers = $this -> getParam ( 'html_options.mail.headers' , array ());
$bcc = $this -> getParam ( 'html_options.mail.bcc' );
if ( $bcc )
$headers [ 'Bcc' ] = $bcc ;
if ( sendMail (
$mail ,
$this -> sendMail [ 'subject' ],
$msg ,
$headers
)) {
LSsession :: addInfo ( _ ( 'Notice mail sent.' ));
2008-10-31 13:12:31 +01:00
}
else {
2020-07-07 16:04:32 +02:00
LSerror :: addErrorCode ( 'LSformElement_password_02' , $mail );
2008-10-31 13:12:31 +01:00
return ;
}
}
return true ;
}
2020-04-29 15:54:21 +02:00
2009-02-20 15:05:22 +01:00
public static function ajax_verifyPassword ( & $data ) {
if (( isset ( $_REQUEST [ 'attribute' ])) && ( isset ( $_REQUEST [ 'objecttype' ])) && ( isset ( $_REQUEST [ 'fieldValue' ])) && ( isset ( $_REQUEST [ 'idform' ])) && ( isset ( $_REQUEST [ 'objectdn' ])) ) {
if ( LSsession :: loadLSobject ( $_REQUEST [ 'objecttype' ])) {
$object = new $_REQUEST [ 'objecttype' ]();
$object -> loadData ( $_REQUEST [ 'objectdn' ]);
2009-05-28 18:07:05 +02:00
$form = $object -> getForm ( $_REQUEST [ 'idform' ]);
if ( $form ) {
$field = $form -> getElement ( $_REQUEST [ 'attribute' ]);
if ( $field ) {
$val = $field -> verifyPassword ( $_REQUEST [ 'fieldValue' ]);
$data = array (
'verifyPassword' => $val
);
}
else {
LSdebug ( 'Impossible de récupérer le LSformElement' );
}
}
else {
LSdebug ( 'Impossible de recuperer le LSform.' );
}
2009-02-20 15:05:22 +01:00
}
}
}
2020-04-29 15:54:21 +02:00
2009-02-20 15:05:22 +01:00
public static function ajax_generatePassword ( & $data ) {
if (( isset ( $_REQUEST [ 'attribute' ])) && ( isset ( $_REQUEST [ 'objecttype' ])) && ( isset ( $_REQUEST [ 'objectdn' ])) && ( isset ( $_REQUEST [ 'idform' ])) ) {
if ( LSsession :: loadLSobject ( $_REQUEST [ 'objecttype' ])) {
2009-04-09 11:28:48 +02:00
$params = LSconfig :: get ( " LSobjects. " . $_REQUEST [ 'objecttype' ] . " .attrs. " . $_REQUEST [ 'attribute' ]);
$val = self :: generatePassword ( $params );
if ( $val ) {
$data = array (
'generatePassword' => $val
);
2009-02-20 15:05:22 +01:00
}
}
}
}
2010-04-27 15:52:45 +02:00
public static function ajax_viewHash ( & $data ) {
if (( isset ( $_REQUEST [ 'attribute' ])) && ( isset ( $_REQUEST [ 'objecttype' ])) && ( isset ( $_REQUEST [ 'objectdn' ])) ) {
if ( LSsession :: loadLSobject ( $_REQUEST [ 'objecttype' ])) {
$object = new $_REQUEST [ 'objecttype' ]();
$object -> loadData ( $_REQUEST [ 'objectdn' ]);
if ( LSsession :: canAccess ( $_REQUEST [ 'objecttype' ], $_REQUEST [ 'objectdn' ], null , $_REQUEST [ 'attribute' ])) {
$values = $object -> getValue ( $_REQUEST [ 'attribute' ]);
if ( is_string ( $values [ 0 ])) {
$data = array (
'hash' => $values [ 0 ]
);
}
}
}
}
}
2011-05-01 16:44:32 +02:00
public function isLoginPassword () {
2019-06-20 19:55:31 +02:00
return $this -> getParam ( 'html_options.isLoginPassword' , false , 'bool' );
2011-05-01 16:44:32 +02:00
}
2020-07-07 12:43:55 +02:00
/**
* CLI autocompleter for form element attribute values
*
* @ param [ in ] & $opts array Reference of array of avalaible autocomplete options
* @ param [ in ] $comp_word string The ( unquoted ) command word to autocomplete
* @ param [ in ] $attr_value string The current attribute value in command word to autocomplete ( optional , default : empty string )
* @ param [ in ] $multiple_value_delimiter string The multiple value delimiter ( optional , default : " | " )
* @ param [ in ] $quote_char string The quote character detected ( optional , default : empty string )
*
* @ retval void
*/
public function autocomplete_attr_values ( & $opts , $comp_word , $attr_value = " " , $multiple_value_delimiter = " | " , $quote_char = '' ) {
// Split attribute values and retreived splited value in $attr_values and $last_attr_value
if ( ! $this -> split_autocomplete_attr_values ( $attr_value , $multiple_value_delimiter , $attr_values , $last_attr_value ))
return ;
$pwd = $this -> generatePassword ( $this -> params );
$this -> add_autocomplete_attr_value_opts ( $opts , $attr_values , $pwd , $multiple_value_delimiter , $quote_char );
}
2007-11-15 19:07:24 +01:00
}
2012-12-18 12:20:27 +01:00
/*
* Error Codes
*/
LSerror :: defineError ( 'LSformElement_password_01' ,
2020-08-25 17:31:50 +02:00
___ ( " LSformElement_password : No valid contact mail address available : Can't send new password. " )
2012-12-18 12:20:27 +01:00
);
LSerror :: defineError ( 'LSformElement_password_02' ,
2020-08-25 17:31:50 +02:00
___ ( " LSformElement_password : Fail to send new password by email to % { mail}. " )
2012-12-18 12:20:27 +01:00
);
2015-02-05 10:33:14 +01:00
LSerror :: defineError ( 'LSformElement_password_03' ,
2020-08-25 17:31:50 +02:00
___ ( " LSformElement_password : Fail to exec pwgen. Check it's correctly installed. " )
2015-02-05 10:33:14 +01:00
);
2018-02-08 18:16:23 +01:00
LSerror :: defineError ( 'LSformElement_password_04' ,
2020-08-25 17:31:50 +02:00
___ ( " LSformElement_password : Fail to determine witch e-mail attribute to use to send new password : get_mail_attr_function parameter not refer to a valid function. " )
2018-02-08 18:16:23 +01:00
);
LSerror :: defineError ( 'LSformElement_password_05' ,
2020-08-25 17:31:50 +02:00
___ ( " LSformElement_password : Fail to determine witch e-mail attribute to use to send new password : get_mail_attr_function throwed an exception : % { msg} " )
2018-02-08 18:16:23 +01:00
);