Condition

Petit nouveau ! | 2 Messages

07 nov. 2019, 11:34

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

ViPHP
ViPHP | 2576 Messages

07 nov. 2019, 12:41

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.

Petit nouveau ! | 2 Messages

07 nov. 2019, 12:44

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 ? :)

ViPHP
ViPHP | 2576 Messages

07 nov. 2019, 12:53

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.