/** * Outputs a complete ticket form for use within a template. * Most strings and form fields may be controlled through the $args array passed * into the function, while you may also choose to use the ticket_form_basic_fields, * ticket_form_advanced_fields, or ticket_form_meta_fields * filter to modify the array of default fields if you'd just like to add a new * one or remove a single field. All fields are also individually passed through * a filter of the form ticket_form_field_$name where $name is the key used * in the array of fields. * * @since Quality Control 0.1.5 * @param array $args Options for strings, fields, etc in the form. * @param mixed $post_id Post ID to generate the form for, uses current post if null. * @return void */ function quality_ticket_form($args = array(), $post_id = null) { global $post, $quality_options; $category = get_the_category($post->ID); $taglist = quality_get_ticket_tags($post->ID); if ($args['location'] == 'page') { $taglist = quality_form_data('ticket_tags'); } $basic_fields = array('id' => 'ticket', 'label' => __('Basic Info', 'quality'), 'fields' => array('title' => '<p id="ticket-title"> <label for="ticket_title">' . __('Title:', 'quality') . '</label> <input type="text" name="ticket_title" value="' . quality_form_data('ticket_title') . '" /> </p>', 'tags' => '<p id="ticket-tags"> <label for="ticket_tags">' . __('Tags: <em>(Optional)</em>', 'quality') . '</label> <input type="text" name="ticket_tags" value="' . $taglist . '" /> </p>', 'comment' => '<p> <label for="comment">' . __('Description:', 'quality') . '</label> <textarea name="comment" id="comment"></textarea> </p>')); $advanced_fields = array('id' => 'ticket-properties', 'label' => __('Ticket Properties', 'quality'), 'fields' => array('ticket-status' => '<p id="ticket-status" class="inline-input"> <label for="ticket_status">' . __('Status:', 'quality') . '</label>' . wp_dropdown_categories(array('name' => 'ticket_status', 'hide_empty' => 0, 'taxonomy' => 'ticket_status', 'hierarchical' => 1, 'selected' => $args['location'] == 'page' ? quality_form_data('ticket_status') ? quality_form_data('ticket_status') : $quality_options['default_status'] : quality_ticket_status($post->ID), 'echo' => 0)) . ' </p>', 'ticket-milestone' => '<p id="ticket-milestone" class="inline-input"> <label for="ticket_milestone">' . __('Milestone:', 'quality') . '</label>' . wp_dropdown_categories(array('name' => 'ticket_milestone', 'hide_empty' => 0, 'taxonomy' => 'ticket_milestone', 'hierarchical' => 1, 'selected' => $args['location'] == 'page' ? quality_form_data('ticket_milestone') : quality_ticket_status($post->ID, 'term_id', 'ticket_milestone'), 'echo' => 0)) . ' </p>', 'ticket-category' => '<p id="ticket-category" class="inline-input"> <label for="ticket_category">' . __('Category:', 'quality') . '</label>' . wp_dropdown_categories(array('name' => 'ticket_category', 'hide_empty' => 0, 'hierarchical' => 1, 'selected' => $args['location'] == 'page' ? quality_form_data('ticket_category') ? quality_form_data('ticket_category') : get_option('default_category') : $category[0]->cat_ID, 'echo' => 0)) . ' </p>', 'ticket-assign' => '<p id="ticket-assign" class="inline-input"> <label for="ticket_assign">' . __('Assigned To: <em>(Optional) Separated multiple usernames by comma. You are automatically assigned.</em>', 'quality') . '</label> <input type="text" name="ticket_assign" value="' . ($args['location'] == 'ticket' ? quality_get_ticket_assigned_to() : quality_form_data('ticket_assign')) . '" /> </p>')); $meta_fields = array('id' => 'ticket-meta', 'label' => __('Other Options', 'quality'), 'fields' => array('ticket-attachment' => '<p id="ticket-attachment"> <label for="ticket_attachment">' . __('Attach File', 'quality') . '</label> <input type="file" name="ticket_attachment" id="ticket_attachment"/> </p>')); $defaults = array('location' => 'page', 'basic_fields' => apply_filters('ticket_form_basic_fields', $basic_fields), 'advanced_fields' => apply_filters('ticket_form_advanced_fields', $advanced_fields), 'meta_fields' => apply_filters('ticket_form_meta_fields', $meta_fields), 'ticket_form_before' => '', 'ticket_form_after' => '', 'id_form' => 'ticket_form', 'id_submit' => 'submit', 'label_submit' => $args['location'] == 'page' ? __('Create Ticket', 'quality') : __('Update Ticket', 'quality')); $args = wp_parse_args($args, apply_filters('ticket_form_defaults', $defaults)); if ($args['location'] == 'ticket') { unset($args['basic_fields']['fields']['title']); unset($args['advanced_fields']['fields']['ticket-cc']); } ?> <?php do_action('ticket_form_before'); ?> <form action="<?php echo $args['location'] == 'page' ? '#respond' : site_url('wp-comments-post.php'); ?> " method="post" name="add-ticket" enctype="multipart/form-data" id="<?php echo esc_attr($args['id_form']); ?> "> <?php do_action('ticket_form_top'); ?> <?php do_action('ticket_form_before_fields'); ?> <fieldset id="<?php echo esc_attr($args['basic_fields']['id']); ?> "> <legend><?php echo esc_attr($args['basic_fields']['label']); ?> </legend> <?php do_action('ticket_form_before_basic_fields'); foreach ($args['basic_fields']['fields'] as $name => $field) { echo apply_filters("ticket_form_field_{$name}", $field) . "\n"; } do_action('ticket_form_after_basic_fields'); ?> </fieldset> <fieldset id="<?php echo esc_attr($args['advanced_fields']['id']); ?> "> <legend><?php echo esc_attr($args['advanced_fields']['label']); ?> </legend> <?php do_action('ticket_form_before_advanced_fields'); foreach ($args['advanced_fields']['fields'] as $name => $field) { echo apply_filters("ticket_form_field_{$name}", $field) . "\n"; } do_action('ticket_form_after_advanced_fields'); ?> </fieldset> <fieldset id="<?php echo esc_attr($args['meta_fields']['id']); ?> "> <legend><?php echo esc_attr($args['meta_fields']['label']); ?> </legend> <?php do_action('ticket_form_before_meta_fields'); foreach ($args['meta_fields']['fields'] as $name => $field) { echo apply_filters("ticket_form_field_{$name}", $field) . "\n"; } do_action('ticket_form_after_meta_fields'); ?> </fieldset> <?php do_action('ticket_form_after_fields'); ?> <p id="ticket-create"> <?php if ($args['location'] == 'page') { ?> <input type="hidden" name="create_ticket" value="proccess" /> <?php } else { ?> <?php do_action('comment_form', $post->ID); ?> <?php comment_id_fields(); ?> <?php } ?> <input type="submit" name="submit" id="<?php echo esc_attr($args['id_submit']); ?> " value="<?php echo esc_attr($args['label_submit']); ?> " /> </p> <?php do_action('ticket_form_bottom'); ?> </form> <?php do_action('ticket_form_after'); ?> <?php }
</ol> </li> <?php comments_template(); ?> <?php } else { ?> <li class="ticket no-results"> <?php printf(__('Sorry, you are not assigned to this ticket, and therefore cannot view it. It is currently assigned to %s', 'quality'), quality_get_ticket_assigned_to()); ?> </li> <?php } ?> </ol> </div> </div><!-- #post --> <?php }
/** * When a comment has been created, check to see if the assigned * users have been changed. If so, see if you can find the difference. * * @since Quality Control 0.1.2 * @uses wp_set_object_terms * @uses get_term */ function quality_update_ticket_owners($post, $comment_meta) { global $updates; $ticket_owners = $comment_meta['ticket_assign']; if ($ticket_owners != quality_get_ticket_assigned_to()) { $updates[] = apply_filters('quality_comment_owners_updated', sprintf(__('<strong>owner(s)</strong> changed from <em>%s</em> to <em>%s</em>', 'quality'), quality_get_ticket_assigned_to(), $ticket_owners)); $ticket_owners = explode(",", $ticket_owners); $owners = array(); delete_post_meta($post->ID, '_assigned_to'); foreach ($ticket_owners as $owner) { $owner = get_userdatabylogin($owner); //$owners[] = $owner->ID; add_post_meta($post->ID, '_assigned_to', $owner->ID); } //$owners = update_post_meta( $post->ID, '_assigned_to', $owners ); return $updates; } }