payments = $payments; } public function get_name() { return __( 'Listing Title', 'another-wordpress-classifieds-plugin' ); } public function render( $value, $errors, $listing, $context ) { $characters_limit = $this->get_characters_limit_for_listing( $listing ); if ( $characters_limit['characters_allowed'] == 0 ) { $characters_allowed_text = _x('No characters limit.', 'ad details form', 'another-wordpress-classifieds-plugin'); $remaining_characters_text = ''; } else { $characters_allowed_text = _x('characters left.', 'ad details form', 'another-wordpress-classifieds-plugin'); $remaining_characters_text = $characters_limit['remaining_characters']; } $params = array( 'required' => true, 'value' => $value, 'errors' => $errors, 'characters_allowed' => $characters_limit['characters_allowed'], 'characters_allowed_text' => $characters_allowed_text, 'remaining_characters' => $characters_limit['remaining_characters'], 'remaining_characters_text' => $remaining_characters_text, 'label' => $this->get_label(), 'html' => array( 'id' => 'ad-title', 'name' => $this->get_slug(), ), ); return awpcp_render_template( 'frontend/form-fields/listing-title-form-field.tpl.php', $params ); } private function get_characters_limit_for_listing( $listing ) { if ( is_a( $listing, 'AWPCP_Ad' ) ) { $payment_term = $listing->get_payment_term(); $characters_used = strlen( $listing->ad_title ); } else if ( $transaction = $this->payments->get_transaction() ) { $payment_term = $this->payments->get_transaction_payment_term( $transaction ); $characters_used = 0; } else { $payment_term = null; } if ( ! is_null( $payment_term ) ) { $characters_allowed = $payment_term->get_characters_allowed_in_title(); $remaining_characters = max( 0, $characters_allowed - $characters_used ); } else { $characters_allowed = $remaining_characters = 0; } return compact( 'characters_allowed', 'remaining_characters' ); } }