*/ if ( !defined( 'WPINC' ) ) { die; } /** * Builds page for doing bulk actions * * @param array $ids Ids of activities selected * @param string $type The type of bulk action * @param string $header Header for the bulk action page * @param array $names Names of the selected activities * @param string $value Values for input fields * @return string Page for doing bulk actions */ function activities_bulk_action_page( $ids, $type, $header, $names, $value = '' ) { global $wpdb; $current_url = ( isset($_SERVER['HTTPS'] ) ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; $current_url = remove_query_arg( 'action', $current_url ); $current_url = remove_query_arg( 'item_id', $current_url ); $output = '

' . $header . '

'; $output .= Activities_Admin::get_messages(); $output .= '
'; $output .= '
'; if ( $type == 'address' || $type == 'delete_l') { $output .= '

' . esc_html__( 'Selected Locations', 'activities' ) . '

'; } else { $output .= '

' . esc_html__( 'Selected Activities', 'activities' ) . '

'; } $output .= '

' . stripslashes( wp_filter_nohtml_kses( implode( ', ', $names ) ) ). '

'; $output .= '

' . esc_html__( 'Bulk Action', 'activities' ) . '

'; switch ($type) { case 'archive': $output .= '

' . sprintf( esc_html__( 'Are you sure you want to archive %d activities?', 'activities' ), count( $names ) ) . '

'; break; case 'change_location': $output .= '

' . esc_html__( 'Location', 'activities' ) . '

'; $output .= acts_build_select_items( 'location', array( 'name' => 'location', 'id' => 'acts_bulk_selectize', 'selected' => $value, 'blank' => __( 'No Location' ) ) ); break; case 'change_responsible': $output .= '

' . esc_html__( 'Responsible', 'activities' ) . '

'; $output .= acts_build_select_items( 'responsible', array( 'name' => 'responsible', 'id' => 'acts_bulk_selectize', 'selected' => $value, 'blank' => __( 'No Responsible' ) ) ); break; case 'change_members': $output .= '
'; $output .= ''; $output .= '

' . esc_html__( 'Participants', 'activities' ) . '

'; $output .= acts_build_select_items( 'members', array( 'name' => 'members[]', 'id' => 'acts_bulk_selectize', 'selected' => $value, 'multiple' => true, 'blank' => false ) ); break; case 'activate': $output .= '

' . sprintf( esc_html__( 'Are you sure you want to activate %d activities?', 'activities' ), count( $names ) ) . '

'; break; case 'delete_a': $output .= '

' . sprintf( esc_html__( 'Are you sure you want to delete %d activities?', 'activities' ), count( $names ) ) . '

'; $output .= '

' . esc_html__( 'Warning: Activities cannot be recovered after deletion.', 'activities' ) . '

'; break; case 'address': $output .= '

' . esc_html__( 'Address', 'activities' ) . '

'; $output .= ''; break; case 'delete_l'; $output .= '

' . sprintf( esc_html__( 'Are you sure you want to delete %d locations?', 'activities' ), count( $names ) ) . '

'; $output .= '

' . esc_html__( 'Warning: Locations cannot be recovered after deletion.', 'activities' ) . '

'; break; case 'delete_p'; $output .= '

' . sprintf( esc_html__( 'Are you sure you want to delete %d plans?', 'activities' ), count( $names ) ) . '

'; $output .= '

' . esc_html__( 'Warning: Plans cannot be recovered after deletion.', 'activities' ) . '

'; break; } $output .= ''; $output .= ''; $output .= '
'; $output .= ''; $output .= ' ' . esc_html__( 'Cancel', 'activities' ) . ''; $output .= '
'; $output .= wp_nonce_field( 'activities_bulk_action', ACTIVITIES_BULK_NONCE ); $output .= '
'; $output .= '
'; return $output; } /** * Builds page for confirming deletion * * @param string $display Name of item type (Activity or Location translated) * @param int $item_id Id of the item to delete * @param string $name Name of the item to delete * @param string $current_url Previous page * @return string Page for confirming deletion */ function acts_confirm_item_delete_page( $display, $item_id, $name, $current_url ) { $output = '

' . sprintf( esc_html__( 'Delete %s', 'activities' ), $display ) . '

'; $output .= '
'; $output .= '
'; $output .= '

' . sprintf( esc_html__( 'Selected %s', 'activities' ), $display ) . ':

'; $output .= '

' . stripslashes( wp_filter_nohtml_kses( $name ) ) . '

'; $output .= '

' . sprintf( esc_html__( 'Are you sure you want to delete this %s?', 'activities' ), lcfirst( $display ) ) . '

'; $output .= '

' . sprintf( esc_html__('Warning: %s cannot be recovered after deletion.', 'activities' ), $display ) . '

'; $output .= ''; $output .= ''; $output .= wp_nonce_field( 'activities_delete_item', ACTIVITIES_DELETE_ITEM_NONCE, true, false ); $output .= ' '; $output .= '' . esc_html__( 'Cancel', 'activities' ) . ''; $output .= '
'; $output .= '
'; return $output; } /** * Bulds basic select input * * @param array $data Data for values and display for select options * @param array $settings Setting for the select input * - string name => The select name * - string id => Select id * - array class => Select classes * - array selected => Values selected * - bool multiple => true for multiple select * - bool|string blank => false to remove the blank choice (stars with a selected value) or text for blank field * - bool disabled => true to disable * * @return string Select html */ function acts_build_select( $data, $settings ) { if ( !is_array( $data ) ) { return ''; } $settings = array_merge( array( 'name' => '', 'id' => '', 'class' => array(), 'selected' => array(), 'multiple' => false, 'blank' => __( 'None', 'activities' ), 'blank_val' => '0', 'disabled' => false ), $settings ); $multiple = $settings['multiple'] ? 'multiple' : ''; $disabled = $settings['disabled'] ? 'disabled' : ''; $output = ''; return $output; } /** * Loads items and builds a select dropdown * * @param string $type Type of item * @param array $settings Setting for the select input * - string name => The select name * - string id => Select id * - array class => Select classes * - array selected => Values selected * - string multiple => 'multiple' for multiple select * - bool|string blank => true to remove the blank choice (stars with a selected value) or text for blank field * * @param bool $responsible_filter Filter activities by current user id, if they cant view activities the list will be empty * @return string Select html */ function acts_build_select_items( $type, $settings, $responsible_filter = false ) { global $wpdb; $data = array(); switch ($type) { case 'activity': case 'location': case 'activity_archive': case 'all_activities': case 'plan': $data = acts_get_items_map( $type, 'name', $responsible_filter ); break; case 'responsible': case 'members': case 'member': if ( !array_key_exists( 'selected', $settings ) ) { $settings['selected'] = array(); } $data = Activities_Admin_Utility::get_users( $type, $settings['selected'] ); break; } return acts_build_select( $data, $settings ); } /** * Gets traslation for 1 or more items * * @param string $type Item type * @param int $number Number of items * @return string */ function acts_get_multi_item_translation( $type, $number ) { switch ($type) { case 'activity': case 'activity_archive': return _n( 'activity', 'activities', $number, 'activities' ); break; case 'location': return _n( 'location', 'locations', $number, 'activities' ); break; case 'plan': return _n( 'plan', 'plans', $number, 'activities' ); break; } return ''; }