Changeset 1675433
- Timestamp:
- 06/10/2017 10:47:39 AM (9 years ago)
- Location:
- elvantools/trunk
- Files:
-
- 4 edited
-
elvantotools.php (modified) (4 diffs)
-
readme.txt (modified) (2 diffs)
-
settings.php (modified) (3 diffs)
-
widget.php (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
elvantools/trunk/elvantotools.php
r1674366 r1675433 3 3 * @package ElvantoTools 4 4 * @author JagTech 5 * @version 1. 55 * @version 1.6 6 6 */ 7 7 /* … … 10 10 Description: Display rosters and song lists from Elvanto 11 11 Author: JagTech 12 Version: 1. 512 Version: 1.6 13 13 Author URI: http://jagtech.biz 14 14 */ … … 61 61 'sub_departments' => isset($options['roster_sub_departments']) ? $options['roster_sub_departments'] : false, 62 62 'positions' => isset($options['roster_positions']) ? $options['roster_positions'] : false, 63 'merge' => isset($options['roster_positions_merge']) ? $options['roster_positions_merge'] : false, 63 64 'show_depts' => isset($options['roster_show_depts']) ? ($options['roster_show_depts'] == 'on') : false, 64 65 'show_subs' => isset($options['roster_show_subs']) ? ($options['roster_show_subs'] == 'on') : false, … … 103 104 $empty_suffix = '</td></tr>'; 104 105 105 $output = elvantotools_roster_generate ($key, $offset, $weeks, $services, $service_types, $departments, $sub_departments, $positions, $ display_columns, $dates, $zone, $sort, $prefix, $suffix, $top_left_content, $header_label_content, $header_content, $header_prefix, $header_suffix, $header_element_prefix, $header_element_suffix, $body_prefix, $body_suffix, $row_prefix, $row_suffix, $label_content, $element_prefix, $element_suffix, $name_prefix, $name_suffix, $name_separator, $content, $empty_prefix, $empty_suffix, $show_details);106 $output = elvantotools_roster_generate ($key, $offset, $weeks, $services, $service_types, $departments, $sub_departments, $positions, $merge, $display_columns, $dates, $zone, $sort, $prefix, $suffix, $top_left_content, $header_label_content, $header_content, $header_prefix, $header_suffix, $header_element_prefix, $header_element_suffix, $body_prefix, $body_suffix, $row_prefix, $row_suffix, $label_content, $element_prefix, $element_suffix, $name_prefix, $name_suffix, $name_separator, $content, $empty_prefix, $empty_suffix, $show_details); 106 107 107 108 return do_shortcode($output); -
elvantools/trunk/readme.txt
r1674341 r1675433 4 4 Requires at least: 4.2.2 5 5 Tested up to: 4.8 6 Stable tag: 1. 56 Stable tag: 1.6 7 7 8 8 ElvantoTools is a plugin that allows the display of Elvanto information … … 60 60 v1.5 61 61 Added position sorting and exclusions 62 v1.6 63 Added position merging -
elvantools/trunk/settings.php
r1674341 r1675433 291 291 ); 292 292 add_settings_field( 293 'roster_positions_merge', // ID 294 'Merge/rename positions', // Title 295 array( $this, 'roster_positions_merge_callback' ), // Callback 296 'elvantotools-setting-admin', // Page 297 'setting_section_roster' // Section 298 ); 299 add_settings_field( 293 300 'songs_service_types', // ID 294 301 'Service Types', // Title … … 367 374 } 368 375 369 foreach (array('elvanto_api_key','elvanto_time_zone','roster_service_types','songs_service_types','songs_categories','roster_show_depts','roster_show_subs','song_in_plan', 'roster_show_details','roster_departments_exclude','roster_sub_departments_exclude','roster_positions_exclude' ) as $field) {376 foreach (array('elvanto_api_key','elvanto_time_zone','roster_service_types','songs_service_types','songs_categories','roster_show_depts','roster_show_subs','song_in_plan', 'roster_show_details','roster_departments_exclude','roster_sub_departments_exclude','roster_positions_exclude','roster_positions_merge') as $field) { 370 377 if( isset( $input[$field] ) ) { 371 378 $new_input[$field] = sanitize_text_field( $input[$field] ); … … 498 505 public function roster_sub_departments_callback() { $this->print_input_text('text', 'roster_sub_departments'); echo ' (sub_departments)'; } 499 506 public function roster_positions_callback() { $this->print_input_text('text', 'roster_positions'); echo ' (positions)'; } 507 public function roster_positions_merge_callback() { $this->print_input_text('text', 'roster_positions_merge'); echo ' e.g. "pos1+pos2=title1,pos3=title2" (merge)'; } 500 508 public function songs_service_types_callback() { $this->print_input_text('text', 'songs_service_types'); echo ' (service_types)'; } 501 509 public function songs_categories_callback() { $this->print_input_text('text', 'songs_categories'); echo ' (categories)'; } -
elvantools/trunk/widget.php
r1674341 r1675433 71 71 } 72 72 73 function elvantotools_roster_generate ($api_key, $offset, $weeks, $service_max, $service_types, $departments, $department_subs, $department_positions, $ columns, $dates, $zone, $sort, $prefix, $suffix, $top_left_content, $header_label_content, $header_content, $header_prefix, $header_suffix, $header_element_prefix, $header_element_suffix, $body_prefix, $body_suffix, $row_prefix, $row_suffix, $label_content, $element_prefix, $element_suffix, $name_prefix, $name_suffix, $name_separator, $content, $empty_prefix, $empty_suffix, $show_details) {73 function elvantotools_roster_generate ($api_key, $offset, $weeks, $service_max, $service_types, $departments, $department_subs, $department_positions, $department_positions_merge, $columns, $dates, $zone, $sort, $prefix, $suffix, $top_left_content, $header_label_content, $header_content, $header_prefix, $header_suffix, $header_element_prefix, $header_element_suffix, $body_prefix, $body_suffix, $row_prefix, $row_suffix, $label_content, $element_prefix, $element_suffix, $name_prefix, $name_suffix, $name_separator, $content, $empty_prefix, $empty_suffix, $show_details) { 74 74 75 75 $old_tz = date_default_timezone_get(); … … 90 90 $department_subs = trim($department_subs) ? explode(',',$department_subs) : array(); 91 91 $department_positions = trim($department_positions) ? explode(',',$department_positions) : array(); 92 93 // Parse any position merging or renaming that needs to be done into a simple mapping of positions to their new names 94 $merged_positions = trim($department_positions_merge) ? explode(',',$department_positions_merge) : array(); 95 $merged = array(); 96 foreach ($merged_positions as $merged_position) { 97 if (count($merged_sides = explode('=', $merged_position)) == 2) { 98 if (count($merged_names = explode('+', $merged_sides[0])) >= 1) { 99 foreach ($merged_names as $merged_name) { 100 $merged[trim($merged_name)] = trim($merged_sides[1]); 101 } 102 // We also need to add the merged/renamed column to our position filter if there is one 103 if (count($department_positions) && !$exclude_department_positions) 104 $department_positions[] = trim($merged_sides[1]); 105 } 106 } 107 } 92 108 93 109 // Get the service data from Elvanto … … 200 216 if (!array_key_exists($position['sub_department_name'], $depts[$position['department_name']])) 201 217 $depts[$position['department_name']][$position['sub_department_name']] = array(); 202 if (!array_key_exists($position['position_name'], $depts[$position['department_name']][$position['sub_department_name']])) 203 $depts[$position['department_name']][$position['sub_department_name']][$position['position_name']] = array(); 204 if (!array_key_exists($service_date, $depts[$position['department_name']][$position['sub_department_name']][$position['position_name']])) 205 $depts[$position['department_name']][$position['sub_department_name']][$position['position_name']][$service_date] = array(); 206 $depts[$position['department_name']][$position['sub_department_name']][$position['position_name']][$service_date][$service['service_type']['name']] = array(); 218 // Here we allow remapping of the position name for merging or renaming of positions 219 $position_name = array_key_exists($position['position_name'],$merged) ? $merged[$position['position_name']] : $position['position_name']; 220 if (!array_key_exists($position_name, $depts[$position['department_name']][$position['sub_department_name']])) 221 $depts[$position['department_name']][$position['sub_department_name']][$position_name] = array(); 222 if (!array_key_exists($service_date, $depts[$position['department_name']][$position['sub_department_name']][$position_name])) 223 $depts[$position['department_name']][$position['sub_department_name']][$position_name][$service_date] = array(); 224 if (!array_key_exists($service['service_type']['name'], 225 $depts[$position['department_name']][$position['sub_department_name']][$position_name][$service_date])) 226 $depts[$position['department_name']][$position['sub_department_name']][$position_name][$service_date][$service['service_type']['name']] = array(); 207 227 foreach ($position['volunteers']['volunteer'] as $person) { 208 228 if (array_key_exists('firstname',$person['person']) && count($person['person']['firstname'])) … … 210 230 if (array_key_exists('lastname',$person['person']) && count($person['person']['lastname'])) 211 231 $person['person']['lastinitial'] = substr(ucfirst($person['person']['lastname']),0,1) . '.'; 212 $depts[$position['department_name']][$position['sub_department_name']][$position ['position_name']][$service_date][$service_name][] = $person['person'];232 $depts[$position['department_name']][$position['sub_department_name']][$position_name][$service_date][$service_name][] = $person['person']; 213 233 } 214 234 } … … 789 809 if (!isset($instance['show_details'])) $instance['show_details'] = isset($options['roster_show_details']) ? $options['roster_show_details'] : false; 790 810 if (!isset($instance['positions'])) $instance['positions'] = isset($options['positions']) ? $options['positions'] : ''; 811 if (!isset($instance['merge'])) $instance['merge'] = isset($options['merge']) ? $options['merge'] : ''; 791 812 $show_labels = (!$instance['positions'] || strpos(',',$instance['positions']) !== FALSE); 792 813 $instance['columns'] = $columns; … … 821 842 $empty_suffix = '</div></div>'; 822 843 823 $output = elvantotools_roster_generate ($instance['key'], $instance['offset'], $instance['weeks'], $instance['services'], $instance['service_types'], $instance['departments'], $instance['sub_departments'], $instance['positions'], $ display_columns, $instance['dates'], $instance['zone'], $instance['sort'], $prefix, $suffix, $top_left_content, $header_label_content, $header_content, $header_prefix, $header_suffix, $header_element_prefix, $header_element_suffix, $body_prefix, $body_suffix, $row_prefix, $row_suffix, $label_content, $element_prefix, $element_suffix, $name_prefix, $name_suffix, $name_separator, $content, $empty_prefix, $empty_suffix, $show_details);844 $output = elvantotools_roster_generate ($instance['key'], $instance['offset'], $instance['weeks'], $instance['services'], $instance['service_types'], $instance['departments'], $instance['sub_departments'], $instance['positions'], $instance['merge'], $display_columns, $instance['dates'], $instance['zone'], $instance['sort'], $prefix, $suffix, $top_left_content, $header_label_content, $header_content, $header_prefix, $header_suffix, $header_element_prefix, $header_element_suffix, $body_prefix, $body_suffix, $row_prefix, $row_suffix, $label_content, $element_prefix, $element_suffix, $name_prefix, $name_suffix, $name_separator, $content, $empty_prefix, $empty_suffix, $show_details); 824 845 825 846 echo do_shortcode($output); … … 844 865 $sub_departments = ! empty( $instance['sub_departments'] ) ? $instance['sub_departments'] : __( (isset($options['roster_sub_departments']) ? $options['roster_sub_departments'] : ''), 'text_domain' ) ; 845 866 $positions = ! empty( $instance['positions'] ) ? $instance['positions'] : __( (isset($options['positions']) ? $options['positions'] : ''), 'text_domain' ) ; 867 $merge = ! empty( $instance['merge'] ) ? $instance['merge'] : __( (isset($options['merge']) ? $options['merge'] : ''), 'text_domain' ) ; 846 868 $offset = ! empty( $instance['offset'] ) ? $instance['offset'] : __( (isset($options['offset']) ? $options['offset'] : '0'), 'text_domain' ); 847 869 $weeks = ! empty( $instance['weeks'] ) ? $instance['weeks'] : __( (isset($options['elvanto_weeks']) ? $options['elvanto_weeks'] : '1'), 'text_domain' ); … … 874 896 <input class="widefat" id="<?php echo $this->get_field_id( 'positions' ); ?>" name="<?php echo $this->get_field_name( 'positions' ); ?>" type="text" value="<?php echo esc_attr( $positions ); ?>"> 875 897 </p> 898 <p class="elvantotools-widget"> 899 <label class="elvantotools-widget-label" for="<?php echo $this->get_field_id( 'merge' ); ?>"><?php _e( 'Merge:' ); ?></label> 900 <input class="widefat" id="<?php echo $this->get_field_id( 'merge' ); ?>" name="<?php echo $this->get_field_name( 'merge' ); ?>" type="text" value="<?php echo esc_attr( $merge ); ?>"> 901 </p> 876 902 <table class="elvantotools-widget"><tbody> 877 903 <tr> … … 922 948 $instance['sub_departments'] = ( ! empty( $new_instance['sub_departments'] ) ) ? $new_instance['sub_departments'] : ''; 923 949 $instance['positions'] = ( ! empty( $new_instance['positions'] ) ) ? $new_instance['positions'] : ''; 950 $instance['merge'] = ( ! empty( $new_instance['merge'] ) ) ? $new_instance['merge'] : ''; 924 951 $instance['offset'] = ( ! empty( $new_instance['offset'] ) ) ? absint($new_instance['offset']) : 0; 925 952 $instance['weeks'] = ( ! empty( $new_instance['weeks'] ) ) ? $new_instance['weeks'] : 1;
Note: See TracChangeset
for help on using the changeset viewer.