Plugin Directory

Changeset 1675433


Ignore:
Timestamp:
06/10/2017 10:47:39 AM (9 years ago)
Author:
upcast
Message:

Added merging/renaming of positions

Location:
elvantools/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • elvantools/trunk/elvantotools.php

    r1674366 r1675433  
    33 * @package ElvantoTools
    44 * @author JagTech
    5  * @version 1.5
     5 * @version 1.6
    66 */
    77/*
     
    1010Description: Display rosters and song lists from Elvanto
    1111Author: JagTech
    12 Version: 1.5
     12Version: 1.6
    1313Author URI: http://jagtech.biz
    1414*/
     
    6161        'sub_departments' => isset($options['roster_sub_departments']) ? $options['roster_sub_departments'] : false,
    6262        'positions' => isset($options['roster_positions']) ? $options['roster_positions'] : false,
     63        'merge' => isset($options['roster_positions_merge']) ? $options['roster_positions_merge'] : false,
    6364        'show_depts' => isset($options['roster_show_depts']) ? ($options['roster_show_depts'] == 'on') : false,
    6465        'show_subs' => isset($options['roster_show_subs']) ? ($options['roster_show_subs'] == 'on') : false,
     
    103104    $empty_suffix = '</td></tr>';
    104105   
    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);
    106107
    107108    return do_shortcode($output);
  • elvantools/trunk/readme.txt

    r1674341 r1675433  
    44Requires at least: 4.2.2
    55Tested up to: 4.8
    6 Stable tag: 1.5
     6Stable tag: 1.6
    77
    88ElvantoTools is a plugin that allows the display of Elvanto information
     
    6060v1.5
    6161Added position sorting and exclusions
     62v1.6
     63Added position merging
  • elvantools/trunk/settings.php

    r1674341 r1675433  
    291291        );     
    292292        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(
    293300            'songs_service_types', // ID
    294301            'Service Types', // Title
     
    367374        }
    368375
    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) {
    370377            if( isset( $input[$field] ) ) {
    371378                $new_input[$field] = sanitize_text_field( $input[$field] );
     
    498505    public function roster_sub_departments_callback() { $this->print_input_text('text', 'roster_sub_departments'); echo '&nbsp;&nbsp;(sub_departments)'; }
    499506    public function roster_positions_callback() { $this->print_input_text('text', 'roster_positions'); echo '&nbsp;&nbsp;(positions)'; }
     507    public function roster_positions_merge_callback() { $this->print_input_text('text', 'roster_positions_merge'); echo '&nbsp;e.g. "pos1+pos2=title1,pos3=title2"&nbsp;(merge)'; }
    500508    public function songs_service_types_callback() { $this->print_input_text('text', 'songs_service_types'); echo '&nbsp;&nbsp;(service_types)'; }
    501509    public function songs_categories_callback() { $this->print_input_text('text', 'songs_categories'); echo '&nbsp;&nbsp;(categories)'; }
  • elvantools/trunk/widget.php

    r1674341 r1675433  
    7171}
    7272
    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) {
     73function 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) {
    7474   
    7575    $old_tz = date_default_timezone_get();
     
    9090    $department_subs = trim($department_subs) ? explode(',',$department_subs) : array();
    9191    $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    }
    92108   
    93109    // Get the service data from Elvanto
     
    200216                 if (!array_key_exists($position['sub_department_name'], $depts[$position['department_name']]))
    201217                     $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();
    207227                 foreach ($position['volunteers']['volunteer'] as $person) {
    208228                   if (array_key_exists('firstname',$person['person']) && count($person['person']['firstname']))
     
    210230                   if (array_key_exists('lastname',$person['person']) && count($person['person']['lastname']))
    211231                       $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'];
    213233                 }
    214234               }
     
    789809        if (!isset($instance['show_details'])) $instance['show_details'] = isset($options['roster_show_details']) ? $options['roster_show_details'] : false;
    790810        if (!isset($instance['positions'])) $instance['positions'] = isset($options['positions']) ? $options['positions'] : '';
     811        if (!isset($instance['merge'])) $instance['merge'] = isset($options['merge']) ? $options['merge'] : '';
    791812        $show_labels = (!$instance['positions'] || strpos(',',$instance['positions']) !== FALSE);
    792813        $instance['columns'] = $columns;
     
    821842        $empty_suffix = '</div></div>';
    822843
    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);         
    824845       
    825846        echo do_shortcode($output);
     
    844865        $sub_departments = ! empty( $instance['sub_departments'] ) ? $instance['sub_departments'] : __( (isset($options['roster_sub_departments']) ? $options['roster_sub_departments'] : ''), 'text_domain' ) ;
    845866        $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' ) ;
    846868        $offset = ! empty( $instance['offset'] ) ? $instance['offset'] : __( (isset($options['offset']) ? $options['offset'] : '0'), 'text_domain' );
    847869        $weeks = ! empty( $instance['weeks'] ) ? $instance['weeks'] : __( (isset($options['elvanto_weeks']) ? $options['elvanto_weeks'] : '1'), 'text_domain' );
     
    874896        <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 ); ?>">
    875897        </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>
    876902        <table class="elvantotools-widget"><tbody>
    877903        <tr>
     
    922948        $instance['sub_departments'] = ( ! empty( $new_instance['sub_departments'] ) ) ? $new_instance['sub_departments'] : '';
    923949        $instance['positions'] = ( ! empty( $new_instance['positions'] ) ) ? $new_instance['positions'] : '';
     950        $instance['merge'] = ( ! empty( $new_instance['merge'] ) ) ? $new_instance['merge'] : '';
    924951        $instance['offset'] = ( ! empty( $new_instance['offset'] ) ) ? absint($new_instance['offset']) : 0;
    925952        $instance['weeks'] = ( ! empty( $new_instance['weeks'] ) ) ? $new_instance['weeks'] : 1;
Note: See TracChangeset for help on using the changeset viewer.