Page 1 sur 1

Condition

Posté : 07 nov. 2019, 11:34
par kaeligb
Bonjour,

J'ai une question de débutant concernant PHP,

Alors j'ai copié un code sur internet qui nécessite sur un plugin wordpress, de limiter l'ouverture de ticket pour un l'utilisateur ( il peut en ouvrir 7 maxim) le seul problème c'est qu'en fermant un ticket, il peut en r'ouvrir un autre. j'aimerai mettre dans le code montrer ci-dessous que quand il ferme un ticket il ne peut quand même pas en r'ouvrir un autre :)
add_filter( 'wpas_before_submit_new_ticket_checks', 'wpas_limit_concurrently_open_tickets' );
/**
 * Limit the Number of Concurrent Open Tickets
 * 
 * @param bool|WP_Error $go Submission status
 *
 * @return bool|WP_Error
 */
function wpas_limit_concurrently_open_tickets( $go ) {
	var_dump( $go );
	$user_id      = get_current_user_id();
	$open_tickets = wpas_get_user_tickets( $user_id, 'open' );
	$limit        = 7; // Set the maximum number of open ticket a user can have at any given time
	$count        = count( $open_tickets );
	if ( $count >= $limit ) {
		// Make sure $go is not already errored
		if ( ! is_wp_error( $go ) ) {
			$go = new WP_Error();
		}
		// Add a custom error message
		$go->add( 'too_many_open_tickets', sprintf( 'Vous avez atteinds le nombre d ouverture de tickets. %1$d tickets maximum.', $limit, $count ) );
	}
	return $go;
}

Merci de votre aide :)

Bonne journée :)
Bérel Kaëlig

Re: Condition

Posté : 07 nov. 2019, 12:41
par Mazarini
Bonjour,
Il faut voir le code de la fonction wpas_get_user_tickets( )

Peut être qu'ajouter wpas_get_user_tickets( $user_id, 'close' ) permet de le faire "salement" en cumulant les 2 count.

Re: Condition

Posté : 07 nov. 2019, 12:44
par kaeligb
Bonjour,
Il faut voir le code de la fonction wpas_get_user_tickets( )

Peut être qu'ajouter wpas_get_user_tickets( $user_id, 'close' ) permet de le faire "salement" en cumulant les 2 count.
ok merci pour votre réponse quel serai alors le code final ? :)

Re: Condition

Posté : 07 nov. 2019, 12:53
par Mazarini

Code : Tout sélectionner

$open_tickets = wpas_get_user_tickets( $user_id, 'open' ); $close_tickets = wpas_get_user_tickets( $user_id, 'close' ); $limit = 7; // Set the maximum number of open ticket a user can have at any given time $count = count( $open_tickets ) + count( $close_tickets);
'close' est bon ? c'est pas 'closed' ? => à voir dans la table.
Il n'y a par un paramètre qui permet de faire une seul requête ? => A voir dan la fonction wpas_get_user_tickets() ou il y a peut être une autre fonction.