コード例 #1
0
ファイル: emails.php プロジェクト: mdjm/mobile-dj-manager
/**
 * Rename the Publish and Update post buttons for events
 *
 * @since	1.3
 * @param	str		$translation	The current button text translation
 * @param	str		$text			The text translation for the button
 * @return	str		$translation	The filtererd text translation
 */
function mdjm_email_template_rename_publish_button($translation, $text)
{
    global $post;
    if (!isset($post) || 'mdjm-quotes' != $post->post_type) {
        return $translation;
    }
    $event_statuses = mdjm_all_event_status();
    if ($text == 'Publish') {
        return __('Save Template', 'mobile-dj-manager');
    } elseif ($text == 'Update') {
        return __('Update Template', 'mobile-dj-manager');
    } else {
        return $translation;
    }
}
コード例 #2
0
ファイル: quotes.php プロジェクト: mdjm/mobile-dj-manager
/**
 * Customise the view filter counts
 *
 * @since	1.0
 * @param	arr		$views		Array of views
 * @return	arr		$views		Filtered Array of views
 */
function mdjm_quote_view_filters($views)
{
    // We only run this filter if the user has restrictive caps and the post type is mdjm-event
    if (!is_post_type_archive('mdjm-quotes') || mdjm_employee_can('list_all_quotes')) {
        return $views;
    }
    global $user_ID;
    $events = mdjm_get_employee_events($user_ID);
    $all = 0;
    if ($events) {
        foreach ($events as $event) {
            $quote = mdjm_get_event_quote_id($event->ID);
            $quote_status = get_post_status($quote);
            if (!isset($status[$quote_status])) {
                $status[$quote_status] = 1;
            } else {
                $status[$quote_status]++;
            }
            $all++;
        }
    }
    // The All filter
    $views['all'] = preg_replace('/\\(.+\\)/U', '(' . mdjm_count_employee_events() . ')', $views['all']);
    $event_statuses = mdjm_all_event_status();
    foreach ($event_statuses as $status => $label) {
        $events = mdjm_get_employee_events('', array('post_status' => $status));
        if (empty($events)) {
            if (isset($views[$status])) {
                unset($views[$status]);
            }
            continue;
        }
        $views[$status] = preg_replace('/\\(.+\\)/U', '(' . count($events) . ')', $views[$status]);
    }
    // Only show the views we want
    foreach ($views as $status => $link) {
        if ($status != 'all' && !array_key_exists($status, $event_stati)) {
            unset($views[$status]);
        }
    }
    return $views;
}
コード例 #3
0
/**
 * Renders the 'Export' tab on the Reports Page
 *
 * @since	1.4
 * @return	void
 */
function mdjm_reports_tab_export()
{
    if (!mdjm_employee_can('run_reports')) {
        wp_die(__('You do not have permission to export reports', 'mobile-dj-manager'), __('Error', 'mobile-dj-manager'), array('response' => 403));
    }
    $label_single = mdjm_get_label_singular();
    $label_plural = mdjm_get_label_plural();
    ?>
	<div id="mdjm-dashboard-widgets-wrap">
		<div class="metabox-holder">
			<div id="post-body">
				<div id="post-body-content">

					<?php 
    do_action('mdjm_reports_tab_export_content_top');
    ?>

					<div class="postbox mdjm-export-events-earnings">
						<h3><span><?php 
    _e('Export Transaction History', 'mobile-dj-manager');
    ?>
</span></h3>
						<div class="inside">
							<p><?php 
    _e('Download a CSV of all transactions recorded.');
    ?>
</p>
							<form id="mdjm-export-txns" class="mdjm-export-form mdjm-import-export-form" method="post">
								<?php 
    mdjm_insert_datepicker(array('id' => 'mdjm-txn-export-start', 'altfield' => 'txn_start'));
    ?>
                                <?php 
    echo MDJM()->html->date_field(array('id' => 'mdjm-txn-export-start', 'name' => 'display_start_date', 'placeholder' => __('Select Start Date', 'mobile-dj-manager')));
    ?>
								<?php 
    echo MDJM()->html->hidden(array('name' => 'txn_start'));
    ?>
                                <?php 
    mdjm_insert_datepicker(array('id' => 'mdjm-txn-export-end', 'altfield' => 'txn_end'));
    ?>
                                <?php 
    echo MDJM()->html->date_field(array('id' => 'mdjm-txn-export-end', 'name' => 'display_end_date', 'placeholder' => __('Select End Date', 'mobile-dj-manager')));
    ?>
								<?php 
    echo MDJM()->html->hidden(array('name' => 'txn_end'));
    ?>
								<select name="txn_status">
									<option value=""><?php 
    _e('All Statuses', 'mobile-dj-manager');
    ?>
</option>
                                    <option value="Completed"><?php 
    _e('Completed', 'mobile-dj-manager');
    ?>
</option>
                                    <option value="Pending"><?php 
    _e('Pending', 'mobile-dj-manager');
    ?>
</option>
                                    <option value="Cancelled"><?php 
    _e('Cancelled', 'mobile-dj-manager');
    ?>
</option>
								</select>
								<?php 
    wp_nonce_field('mdjm_ajax_export', 'mdjm_ajax_export');
    ?>
								<input type="hidden" name="mdjm-export-class" value="MDJM_Batch_Export_Txns"/>
								<span>
									<input type="submit" value="<?php 
    _e('Generate CSV', 'mobile-dj-manager');
    ?>
" class="button-secondary"/>
									<span class="spinner"></span>
								</span>
							</form>
						</div><!-- .inside -->
					</div><!-- .postbox -->

					<div class="postbox mdjm-export-events">
						<h3><span><?php 
    printf(__('Export %s', 'mobile-dj-manager'), $label_plural);
    ?>
</span></h3>
						<div class="inside">
							<p><?php 
    printf(__('Download a CSV of %s data.'), $label_plural);
    ?>
</p>
							<form id="mdjm-export-events" class="mdjm-export-form mdjm-import-export-form" method="post">
								<?php 
    mdjm_insert_datepicker(array('id' => 'mdjm-event-export-start', 'altfield' => 'event_start'));
    ?>
                                <?php 
    echo MDJM()->html->date_field(array('id' => 'mdjm-event-export-start', 'name' => 'display_start_date', 'placeholder' => __('Select Start Date', 'mobile-dj-manager')));
    ?>
								<?php 
    echo MDJM()->html->hidden(array('name' => 'event_start'));
    ?>
                                <?php 
    mdjm_insert_datepicker(array('id' => 'mdjm-event-export-end', 'altfield' => 'event_end'));
    ?>
                                <?php 
    echo MDJM()->html->date_field(array('id' => 'mdjm-event-export-end', 'name' => 'display_end_date', 'placeholder' => __('Select End Date', 'mobile-dj-manager')));
    ?>
								<?php 
    echo MDJM()->html->hidden(array('name' => 'event_end'));
    ?>
								<select name="event_status">
									<option value="any"><?php 
    _e('All Statuses', 'mobile-dj-manager');
    ?>
</option>
                                    <?php 
    foreach (mdjm_all_event_status() as $status => $label) {
        ?>
                                    	<option value="<?php 
        echo $status;
        ?>
"><?php 
        echo $label;
        ?>
</option>
                                    <?php 
    }
    ?>
								</select>
								<?php 
    wp_nonce_field('mdjm_ajax_export', 'mdjm_ajax_export');
    ?>
								<input type="hidden" name="mdjm-export-class" value="MDJM_Batch_Export_Events"/>
								<span>
									<input type="submit" value="<?php 
    _e('Generate CSV', 'mobile-dj-manager');
    ?>
" class="button-secondary"/>
									<span class="spinner"></span>
								</span>
							</form>
						</div><!-- .inside -->
					</div><!-- .postbox -->

					<div class="postbox mdjm-export-clients">
						<h3><span><?php 
    _e('Export Clients', 'mobile-dj-manager');
    ?>
</span></h3>
						<div class="inside">
							<p><?php 
    _e('Download a CSV of clients.', 'mobile-dj-manager');
    ?>
</p>
							<form id="mdjm-export-clients" class="mdjm-export-form mdjm-import-export-form" method="post">
								<?php 
    wp_nonce_field('mdjm_ajax_export', 'mdjm_ajax_export');
    ?>
								<input type="hidden" name="mdjm-export-class" value="MDJM_Batch_Export_Clients"/>
								<input type="submit" value="<?php 
    _e('Generate CSV', 'mobile-dj-manager');
    ?>
" class="button-secondary"/>
							</form>
						</div><!-- .inside -->
					</div><!-- .postbox -->

					<?php 
    if (mdjm_is_employer()) {
        ?>
                        <div class="postbox mdjm-export-employees">
                            <h3><span><?php 
        _e('Export Employees', 'mobile-dj-manager');
        ?>
</span></h3>
                            <div class="inside">
                                <p><?php 
        _e('Download a CSV of employees.', 'mobile-dj-manager');
        ?>
</p>
                                <form id="mdjm-export-employees" class="mdjm-export-form mdjm-import-export-form" method="post">
                                    <?php 
        wp_nonce_field('mdjm_ajax_export', 'mdjm_ajax_export');
        ?>
                                    <input type="hidden" name="mdjm-export-class" value="MDJM_Batch_Export_Employees"/>
                                    <input type="submit" value="<?php 
        _e('Generate CSV', 'mobile-dj-manager');
        ?>
" class="button-secondary"/>
                                </form>
                            </div><!-- .inside -->
                        </div><!-- .postbox -->
                    <?php 
    }
    ?>

				</div><!-- .post-body-content -->
			</div><!-- .post-body -->
		</div><!-- .metabox-holder -->
	</div><!-- #mdjm-dashboard-widgets-wrap -->

	<?php 
}
コード例 #4
0
 /**
  * Actions taken once an event is set to the Approved Status
  *
  * @param    int	post_id	The event (post) ID
  *			 obj	post
  *
  * @return   
  * @since    1.1.3
  */
 public function status_approved($post_id, $post, $event_data, $field_updates)
 {
     global $mdjm_settings, $mdjm;
     if ($_POST['original_post_status'] == 'mdjm-approved') {
         return;
     }
     if ($post->post_type != 'mdjm-event') {
         return;
     }
     if (empty($post_id) || empty($post)) {
         return;
     }
     $event_stati = mdjm_all_event_status();
     if (MDJM_DEBUG == true) {
         MDJM()->debug->log_it('Event status transition to ' . $event_stati[$_POST['mdjm_event_status']] . ' starting', $stampit = true);
     }
     /* -- Email the confirmation to the client & DJ if required -- */
     $contact_client = !empty($mdjm_settings['templates']['booking_conf_to_client']) ? true : false;
     $contact_dj = !empty($mdjm_settings['templates']['booking_conf_to_dj']) ? true : false;
     $client_email = !empty($mdjm_settings['templates']['booking_conf_client']) ? $mdjm_settings['templates']['booking_conf_client'] : false;
     $dj_email = !empty($mdjm_settings['templates']['email_dj_confirm']) ? $mdjm_settings['templates']['email_dj_confirm'] : false;
     if (!is_string(get_post_status($client_email))) {
         if (MDJM_DEBUG == true) {
             MDJM()->debug->log_it('ERROR: No email template for the contract has been found ' . __FUNCTION__, $stampit = true);
         }
         wp_die('ERROR: Either no email template is defined or an error has occured. Check your Settings.');
     }
     if (!empty($_POST['mdjm_block_emails'])) {
         if (MDJM_DEBUG == true) {
             MDJM()->debug->log_it('Overiding client email settings');
         }
         $contact_client = false;
     }
     if ($contact_client == true) {
         if (MDJM_DEBUG == true) {
             MDJM()->debug->log_it('Configured to email client with template ID ' . $client_email);
         }
         if (MDJM_DEBUG == true) {
             MDJM()->debug->log_it('Generating email...');
         }
         $email_args = array('content' => $client_email, 'to' => get_post_meta($post_id, '_mdjm_event_client', true), 'from' => $mdjm_settings['templates']['booking_conf_from'] == 'dj' ? get_post_meta($post_id, '_mdjm_event_dj', true) : 0, 'journal' => 'email-client', 'event_id' => $post_id, 'html' => true, 'cc_dj' => isset($mdjm_settings['email']['bcc_dj_to_client']) ? true : false, 'cc_admin' => isset($mdjm_settings['email']['bcc_admin_to_client']) ? true : false, 'source' => 'Event Status to Approved');
         // Filter the email args
         $email_args = apply_filters('mdjm_booking_conf_email_args', $email_args);
         // Send the email
         $approval_email = $mdjm->send_email($email_args);
         if ($approval_email) {
             if (MDJM_DEBUG == true) {
                 MDJM()->debug->log_it('	-- Confrmation email sent to client ');
             }
         } else {
             if (MDJM_DEBUG == true) {
                 MDJM()->debug->log_it('	ERROR: Confrmation email was not sent');
             }
         }
     } else {
         if (MDJM_DEBUG == true) {
             MDJM()->debug->log_it('Not configured to email client');
         }
     }
     if ($contact_dj == true) {
         if (MDJM_DEBUG == true) {
             MDJM()->debug->log_it('Configured to email DJ with template ID ' . $dj_email);
         }
         if (MDJM_DEBUG == true) {
             MDJM()->debug->log_it('Generating email...');
         }
         $approval_dj_email = $mdjm->send_email(array('content' => $dj_email, 'to' => get_post_meta($post_id, '_mdjm_event_dj', true), 'from' => 0, 'journal' => 'email-dj', 'event_id' => $post_id, 'html' => true, 'cc_dj' => false, 'cc_admin' => isset($mdjm_settings['email']['bcc_admin_to_dj']) ? true : false, 'source' => 'Event Status to Approved'));
         if ($approval_dj_email) {
             if (MDJM_DEBUG == true) {
                 MDJM()->debug->log_it('	-- Approval email sent to DJ ');
             }
         } else {
             if (MDJM_DEBUG == true) {
                 MDJM()->debug->log_it('	ERROR: Approval email was not sent to DJ');
             }
         }
     } else {
         if (MDJM_DEBUG == true) {
             MDJM()->debug->log_it('Not configured to email DJ');
         }
     }
 }
コード例 #5
0
 /**
  * Get the Export Data
  *
  * @access	public
  * @since	1.4
  * @return	arr		$data	The data for the CSV file
  */
 public function get_data()
 {
     $start_year = isset($_POST['start_year']) ? absint($_POST['start_year']) : date('Y');
     $end_year = isset($_POST['end_year']) ? absint($_POST['end_year']) : date('Y');
     $start_month = isset($_POST['start_month']) ? absint($_POST['start_month']) : date('n');
     $end_month = isset($_POST['end_month']) ? absint($_POST['end_month']) : date('n');
     $data = array();
     $year = $start_year;
     $stats = new MDJM_Stats();
     while ($year <= $end_year) {
         if ($year == $start_year && $year == $end_year) {
             $m1 = $start_month;
             $m2 = $end_month;
         } elseif ($year == $start_year) {
             $m1 = $start_month;
             $m2 = 12;
         } elseif ($year == $end_year) {
             $m1 = 1;
             $m2 = $end_month;
         } else {
             $m1 = 1;
             $m2 = 12;
         }
         while ($m1 <= $m2) {
             $date1 = mktime(0, 0, 0, $m1, 1, $year);
             $date2 = mktime(0, 0, 0, $m1, cal_days_in_month(CAL_GREGORIAN, $m1, $year), $year);
             $event_status = array_keys(mdjm_all_event_status());
             $data[] = array('date' => date_i18n('F Y', $date1), 'earnings' => mdjm_format_amount($stats->get_earnings($m1, $year)));
             $m1++;
         }
         $year++;
     }
     $data = apply_filters('mdjm_export_get_data', $data);
     $data = apply_filters('mdjm_export_get_data_' . $this->export_type, $data);
     return $data;
 }
コード例 #6
0
/**
 * Add event count to At a glance widget
 *
 * @since	1.4
 * @return	void
 */
function mdjm_dashboard_at_a_glance_widget($items)
{
    $num_posts = mdjm_count_events();
    $count = 0;
    $statuses = mdjm_all_event_status();
    foreach ($statuses as $status => $label) {
        if (!empty($num_posts->{$status})) {
            $count += $num_posts->{$status};
        }
    }
    if ($num_posts && $count > 0) {
        $text = _n('%s ' . mdjm_get_label_singular(), '%s ' . mdjm_get_label_plural(), $count, 'mobile-dj-manager');
        $text = sprintf($text, number_format_i18n($count));
        if (mdjm_employee_can('read_events')) {
            $text = sprintf('<a class="event-count" href="edit.php?post_type=mdjm-event">%1$s</a>', $text);
        } else {
            $text = sprintf('<span class="event-count">%1$s</span>', $text);
        }
        $items[] = $text;
    }
    return $items;
}
コード例 #7
0
        /**
         * accept_enquiry
         * Complete actions when client books event via Client Zone
         * The Client must be logged in
         *
         * @param		arr		$event	The event post object
         * @return		bool			True upon success, otherwise false
         * @since		2.0
         * 
         */
        public function accept_enquiry($post)
        {
            global $mdjm, $my_mdjm, $mdjm_settings;
            if (empty($post)) {
                if (MDJM_DEBUG == true) {
                    MDJM()->debug->log_it('ERROR: No event object was provided in ' . __METHOD__, true);
                }
                ?>
					<script type="text/javascript">
                    window.location.replace("<?php 
                echo mdjm_get_formatted_url(MDJM_HOME) . 'action=view_event&event_id=' . $post->ID . '&message=2&class=4';
                ?>
");
                    </script>
                    <?php 
                exit;
            }
            if (get_current_user_id() != get_post_meta($post->ID, '_mdjm_event_client', true)) {
                if (MDJM_DEBUG == true) {
                    MDJM()->debug->log_it('ERROR: User ' . get_current_user_id() . ' is not authorised to accept this enquiry (' . $post->ID . ') in ' . __METHOD__, true);
                }
                ?>
					<script type="text/javascript">
                    window.location.replace("<?php 
                echo mdjm_get_formatted_url(MDJM_HOME) . 'action=view_event&event_id=' . $post->ID . '&message=6&class=4';
                ?>
");
                    </script>
                    <?php 
                exit;
            }
            /* -- Security verification -- */
            if (!isset($_GET['__mdjm_verify']) || !wp_verify_nonce($_GET['__mdjm_verify'], 'book_event')) {
                if (MDJM_DEBUG == true) {
                    MDJM()->debug->log_it('ERROR: User ' . get_current_user_id() . ' is not authorised to accept this enquiry (' . $post->ID . ') in ' . __METHOD__, true);
                }
                ?>
					<script type="text/javascript">
                    window.location.replace("<?php 
                echo mdjm_get_formatted_url(MDJM_HOME) . 'action=view_event&event_id=' . $post->ID . '&message=6&class=4';
                ?>
");
                    </script>
                    <?php 
                exit;
            }
            /* -- Prepare the meta data -- */
            $meta_update = array('_mdjm_event_last_updated_by' => $my_mdjm['me']->ID, '_mdjm_event_enquiry_accepted' => date('Y-m-d H:i:s'), '_mdjm_event_enquiry_accepted_by' => $my_mdjm['me']->ID);
            /* -- Remove the save post hook to avoid loops -- */
            remove_action('save_post_mdjm-event', 'mdjm_save_event_post', 10, 3);
            /* -- Initiate actions for status change -- */
            wp_transition_post_status('mdjm-contract', $post->post_status, $post);
            /* -- Update the post status -- */
            wp_update_post(array('ID' => $post->ID, 'post_status' => 'mdjm-contract'));
            /* -- Update the post meta -- */
            foreach ($meta_update as $event_meta_key => $event_meta_value) {
                update_post_meta($post->ID, $event_meta_key, $event_meta_value);
                $field_updates[] = 'Field ' . $event_meta_key . ' updated with ' . $event_meta_value;
            }
            /* -- Update Journal with event updates -- */
            if (MDJM_JOURNAL == true) {
                if (MDJM_DEBUG == true) {
                    MDJM()->debug->log_it('	-- Adding journal entry');
                }
                mdjm_add_journal(array('user_id' => $my_mdjm['me']->ID, 'event_id' => $post->ID, 'comment_content' => 'Enquiry accepted by ' . $my_mdjm['me']->display_name), array('type' => 'update-event', 'visibility' => '2'));
            } else {
                if (MDJM_DEBUG == true) {
                    MDJM()->debug->log_it('	-- Journalling is disabled');
                }
            }
            /* -- Email Contract Link -- */
            $contact_client = !empty($mdjm_settings['templates']['contract_to_client']) ? true : false;
            $client_email = isset($mdjm_settings['templates']['contract']) ? $mdjm_settings['templates']['contract'] : false;
            if (!is_string(get_post_status($client_email))) {
                if (MDJM_DEBUG == true) {
                    MDJM()->debug->log_it('ERROR: No email template for the contract link has been found ' . __FUNCTION__, $stampit = true);
                }
                wp_die('ERROR: Either no email template is defined or an error has occured. Check your Settings.');
            }
            if ($contact_client == true) {
                if (MDJM_DEBUG == true) {
                    MDJM()->debug->log_it('Configured to email client with template ID ' . $client_email);
                }
                if (MDJM_DEBUG == true) {
                    MDJM()->debug->log_it('Generating email...');
                }
                $email_args = array('content' => $client_email, 'to' => get_post_meta($post->ID, '_mdjm_event_client', true), 'from' => $mdjm_settings['templates']['contract_from'] == 'dj' ? get_post_meta($post->ID, '_mdjm_event_dj', true) : 0, 'journal' => 'email-client', 'event_id' => $post->ID, 'html' => true, 'cc_dj' => isset($mdjm_settings['email']['bcc_dj_to_client']) ? true : false, 'cc_admin' => isset($mdjm_settings['email']['bcc_admin_to_client']) ? true : false, 'source' => 'Event Enquiry Accepted via ' . MDJM_APP);
                // Filter the email args
                $email_args = apply_filters('mdjm_contract_email_args', $email_args);
                // Send the email
                $contract_email = $mdjm->send_email($email_args);
                if ($contract_email) {
                    if (MDJM_DEBUG == true) {
                        MDJM()->debug->log_it('	-- Contract link email sent to client ');
                    }
                } else {
                    if (MDJM_DEBUG == true) {
                        MDJM()->debug->log_it('	ERROR: Contract link email was not sent');
                    }
                }
            } else {
                if (MDJM_DEBUG == true) {
                    MDJM()->debug->log_it('Not configured to email client');
                }
            }
            /* -- Re-add the save post hook -- */
            add_action('save_post_mdjm-event', 'mdjm_save_event_post', 10, 3);
            /* -- Email admin to notify of changes -- */
            if (MDJM_NOTIFY_ADMIN == true) {
                if (MDJM_DEBUG == true) {
                    MDJM()->debug->log_it('Sending event status change notification to admin');
                }
                $content = '<html>' . "\n" . '<body>' . "\n";
                $content .= '<p>' . sprintf(__('Good news... %s has just accepted their event quotation via %s', 'mobile-dj-manager'), '{CLIENT_FULLNAME}', MDJM_APP) . '</p>';
                $content .= '<hr />' . "\n";
                $content .= '<h4><a href="' . get_edit_post_link($post->ID) . '">' . __('Event ID', 'mobile-dj-manager') . ': ' . MDJM_EVENT_PREFIX . $post->ID . '</a></h4>' . "\n";
                $content .= '<p>' . "\n";
                $content .= __('Date', 'mobile-dj-manager') . ': {EVENT_DATE}<br />' . "\n";
                $content .= __('Type', 'mobile-dj-manager') . ': ' . MDJM()->events->get_event_type($post->ID) . '<br />' . "\n";
                $event_stati = mdjm_all_event_status();
                $content .= __('Status', 'mobile-dj-manager') . ': ' . $event_stati[get_post_status($post->ID)] . '<br />' . "\n";
                $content .= __('Client', 'mobile-dj-manager') . ': {CLIENT_FULLNAME}<br />' . "\n";
                $content .= __('Value', 'mobile-dj-manager') . ': {TOTAL_COST}<br />' . "\n";
                $deposit = get_post_meta($post->ID, '_mdjm_event_deposit');
                $deposit_status = get_post_meta($post->ID, '_mdjm_event_deposit_status');
                if (!empty($deposit) && $deposit != '0.00') {
                    $content .= __('Deposit', 'mobile-dj-manager') . ': {DEPOSIT} ({DEPOSIT_STATUS})<br />' . "\n";
                }
                $content .= __('Balance Due', 'mobile-dj-manager') . ': {BALANCE}</p>' . "\n";
                $content .= '<p>' . sprintf(__('%sView Event%s', 'mobile-dj-manager'), '<a href="=' . get_edit_post_link($post->ID) . '">', '</a>') . '</p>' . "\n";
                $content .= '</body>' . "\n" . '</html>' . "\n";
                $mdjm->send_email(array('content' => $content, 'to' => $mdjm_settings['email']['system_email'], 'subject' => __('Event Quotation Accepted', 'mobile-dj-manager'), 'journal' => false, 'event_id' => $post->ID, 'cc_dj' => false, 'cc_admin' => false, 'log_comm' => false));
            } else {
                if (MDJM_DEBUG == true) {
                    MDJM()->debug->log_it('Skipping admin notification');
                }
            }
            if (MDJM_DEBUG == true) {
                MDJM()->debug->log_it('Completed enquiry acceptance via ' . MDJM_APP . ' in ' . __METHOD__, true);
            }
            $this->display_message(1, 2);
        }
コード例 #8
0
        public function sign_contract()
        {
            global $mdjm, $my_mdjm, $clientzone, $mdjm_settings;
            /* -- Validate the nonce -- */
            if (!isset($_POST['mdjm_sign_event_contract']) || !wp_verify_nonce($_POST['mdjm_sign_event_contract'], 'sign_event_contract')) {
                echo '<script type="text/javascript">' . "\r\n" . 'alert("WordPress Security Validation failed. Please try again");' . "\r\n" . 'history.back();' . "\r\n" . '</script>' . "\r\n";
            }
            /* -- Check the users password is correct -- */
            $pass_cfm = wp_authenticate($my_mdjm['me']->user_login, $_POST['sign_pass_confirm']);
            /* -- Incorrect Password -- */
            if (is_wp_error($pass_cfm)) {
                echo '<script type="text/javascript">' . "\r\n" . 'alert("ERROR: Your password was not entered correctly. Please try again.");' . "\r\n" . 'history.back();' . "\r\n" . '</script>' . "\r\n";
            } else {
                /* -- Remove the save post hook to avoid loops -- */
                remove_action('save_post_mdjm-event', 'mdjm_save_event_post', 10, 3);
                /* -- Create a new signed contract instance -- */
                $contract_data = array('post_title' => 'Event Contract: ' . MDJM_EVENT_PREFIX . $this->event->ID, 'post_author' => $my_mdjm['me']->ID, 'post_type' => 'mdjm-signed-contract', 'post_status' => 'publish', 'post_parent' => $this->event->ID, 'ping_status' => 'closed', 'comment_status' => 'closed');
                /* -- Prepare the contract content -- */
                $content = $this->event_contract->post_content;
                $content = apply_filters('the_content', $content);
                $content = str_replace(']]>', ']]&gt;', $content);
                /* -- Shortcode replacements -- */
                $contract_data['post_content'] = $mdjm->filter_content($my_mdjm['me']->ID, $this->event->ID, $content);
                /* -- Append Signatory info -- */
                $contract_data['post_content'] .= '<hr>' . "\r\n";
                $contract_data['post_content'] .= '<p style="font-weight: bold">' . __('Signatory') . ': <span style="text-decoration: underline;">' . ucfirst($_POST['sign_first_name']) . ' ' . ucfirst($_POST['sign_last_name']) . '</span></p>' . "\r\n";
                $contract_data['post_content'] .= '<p style="font-weight: bold">' . __('Date of Signature') . ': <span style="text-decoration: underline;">' . date('jS F Y') . '</span></p>' . "\r\n";
                $contract_data['post_content'] .= '<p style="font-weight: bold">' . __('Verification Method') . ': User Password Confirmation</p>' . "\r\n";
                /* -- Create the Signed Contract Post -- */
                $signed_contract = wp_insert_post($contract_data, true);
                // Success
                if (!is_wp_error($signed_contract)) {
                    if (MDJM_DEBUG == true) {
                        MDJM()->debug->log_it('Client event signed contract created (' . $signed_contract . ')', true);
                    }
                    add_post_meta($signed_contract, '_mdjm_contract_signed_name', ucfirst($_POST['sign_first_name']) . ' ' . ucfirst($_POST['sign_last_name']), true);
                    /* -- Update the event -- */
                    $event_meta = array('_mdjm_event_signed_contract' => $signed_contract, '_mdjm_event_contract_approved' => date('Y-m-d H:i:s'), '_mdjm_event_contract_approver' => ucfirst($_POST['sign_first_name']) . ' ' . ucfirst($_POST['sign_last_name']), '_mdjm_event_contract_approver_ip' => $_SERVER['REMOTE_ADDR'], '_mdjm_event_last_updated_by' => $my_mdjm['me']->ID);
                    /* -- Initiate actions for status change -- */
                    wp_transition_post_status('mdjm-approved', $this->event->post_status, $this->event);
                    /* -- Update the post status -- */
                    wp_update_post(array('ID' => $this->event->ID, 'post_status' => 'mdjm-approved'));
                    foreach ($event_meta as $event_meta_key => $event_meta_value) {
                        update_post_meta($this->event->ID, $event_meta_key, $event_meta_value);
                    }
                    /* -- Update Journal with event updates -- */
                    if (MDJM_JOURNAL == true) {
                        if (MDJM_DEBUG == true) {
                            MDJM()->debug->log_it('	-- Adding journal entry');
                        }
                        mdjm_add_journal(array('user_id' => $my_mdjm['me']->ID, 'event_id' => $this->event->ID, 'comment_content' => 'Contract Approval completed by ' . ucfirst($_POST['sign_first_name']) . ' ' . ucfirst($_POST['sign_last_name'] . '<br>')), array('type' => 'update-event', 'visibility' => '2'));
                    } else {
                        if (MDJM_DEBUG == true) {
                            MDJM()->debug->log_it('	-- Journalling is disabled');
                        }
                    }
                    /* -- Email booking confirmations -- */
                    $contact_client = isset($mdjm_settings['templates']['booking_conf_to_client']) ? true : false;
                    $contact_dj = isset($mdjm_settings['templates']['booking_conf_to_dj']) ? true : false;
                    $client_email = isset($mdjm_settings['templates']['booking_conf_client']) ? $mdjm_settings['templates']['booking_conf_client'] : false;
                    $dj_email = isset($mdjm_settings['templates']['email_dj_confirm']) ? $mdjm_settings['templates']['email_dj_confirm'] : false;
                    if (!is_string(get_post_status($client_email))) {
                        if (MDJM_DEBUG == true) {
                            MDJM()->debug->log_it('ERROR: No email template for the contract has been found ' . __FUNCTION__, $stampit = true);
                        }
                        wp_die('ERROR: Either no email template is defined or an error has occured. Check your Settings.');
                    }
                    if ($contact_client == true) {
                        if (MDJM_DEBUG == true) {
                            MDJM()->debug->log_it('Configured to email client with template ID ' . $client_email);
                        }
                        if (MDJM_DEBUG == true) {
                            MDJM()->debug->log_it('Generating email...');
                        }
                        $email_args = array('content' => $client_email, 'to' => get_post_meta($this->event->ID, '_mdjm_event_client', true), 'from' => $mdjm_settings['templates']['booking_conf_from'] == 'dj' ? get_post_meta($this->event->ID, '_mdjm_event_dj', true) : 0, 'journal' => 'email-client', 'event_id' => $this->event->ID, 'html' => true, 'cc_dj' => isset($mdjm_settings['email']['bcc_dj_to_client']) ? true : false, 'cc_admin' => isset($mdjm_settings['email']['bcc_admin_to_client']) ? true : false, 'source' => 'Event Status to Approved');
                        // Filter the email args
                        $email_args = apply_filters('mdjm_booking_conf_email_args', $email_args);
                        // Send the email
                        $approval_email = $mdjm->send_email($email_args);
                        if ($approval_email) {
                            if (MDJM_DEBUG == true) {
                                MDJM()->debug->log_it('	-- Confrmation email sent to client ');
                            }
                        } else {
                            if (MDJM_DEBUG == true) {
                                MDJM()->debug->log_it('	ERROR: Confrmation email was not sent');
                            }
                        }
                    } else {
                        if (MDJM_DEBUG == true) {
                            MDJM()->debug->log_it('Not configured to email client');
                        }
                    }
                    if ($contact_dj == true) {
                        if (MDJM_DEBUG == true) {
                            MDJM()->debug->log_it('Configured to email DJ with template ID ' . $dj_email);
                        }
                        if (MDJM_DEBUG == true) {
                            MDJM()->debug->log_it('Generating email...');
                        }
                        $approval_dj_email = $mdjm->send_email(array('content' => $dj_email, 'to' => get_post_meta($this->event->ID, '_mdjm_event_dj', true), 'from' => 0, 'journal' => 'email-dj', 'event_id' => $this->event->ID, 'html' => true, 'cc_dj' => false, 'cc_admin' => isset($mdjm_settings['email']['bcc_admin_to_dj']) ? true : false, 'source' => 'Event Status to Approved'));
                        if ($approval_dj_email) {
                            if (MDJM_DEBUG == true) {
                                MDJM()->debug->log_it('	-- Approval email sent to DJ ');
                            }
                        } else {
                            if (MDJM_DEBUG == true) {
                                MDJM()->debug->log_it('	ERROR: Approval email was not sent to DJ');
                            }
                        }
                    } else {
                        if (MDJM_DEBUG == true) {
                            MDJM()->debug->log_it('Not configured to email DJ');
                        }
                    }
                }
                /* -- Re-add the save post hook -- */
                add_action('save_post_mdjm-event', 'mdjm_save_event_post', 10, 3);
                if (MDJM_DEBUG == true) {
                    MDJM()->debug->log_it('Completed client signing of contract ' . __METHOD__, true);
                }
                /* -- Email admin to notify of changes -- */
                if (MDJM_NOTIFY_ADMIN == true) {
                    if (MDJM_DEBUG == true) {
                        MDJM()->debug->log_it('Sending event status change notification to admin (Contract Signed)');
                    }
                    $content = '<html>' . "\n" . '<body>' . "\n";
                    $content .= '<p>' . sprintf(__('Good news... %s has just signed their event contract via %s', 'mobile-dj-manager'), '{CLIENT_FULLNAME}', MDJM_APP) . '</p>';
                    $content .= '<hr />' . "\n";
                    $content .= '<h4><a href="' . get_edit_post_link($this->event->ID) . '">' . __('Event ID', 'mobile-dj-manager') . ': ' . MDJM_EVENT_PREFIX . $this->event->ID . '</a></h4>' . "\n";
                    $content .= '<p>' . "\n";
                    $content .= __('Date', 'mobile-dj-manager') . ': {EVENT_DATE}<br />' . "\n";
                    $content .= __('Type', 'mobile-dj-manager') . ': ' . MDJM()->events->get_event_type($this->event->ID) . '<br />' . "\n";
                    $event_stati = mdjm_all_event_status();
                    $content .= __('Status', 'mobile-dj-manager') . ': ' . $event_stati[get_post_status($this->event->ID)] . '<br />' . "\n";
                    $content .= __('Client', 'mobile-dj-manager') . ': {CLIENT_FULLNAME}<br />' . "\n";
                    $content .= __('Value', 'mobile-dj-manager') . ': {TOTAL_COST}<br />' . "\n";
                    $deposit = get_post_meta($this->event->ID, '_mdjm_event_deposit');
                    $deposit_status = get_post_meta($this->event->ID, '_mdjm_event_deposit_status');
                    if (!empty($deposit) && $deposit != '0.00') {
                        $content .= __('Deposit', 'mobile-dj-manager') . ': {DEPOSIT} ({DEPOSIT_STATUS})<br />' . "\n";
                    }
                    $content .= __('Balance Due', 'mobile-dj-manager') . ': {BALANCE}</p>' . "\n";
                    $content .= '<p>' . sprintf(__('%sView Event%s', 'mobile-dj-manager'), '<a href="=' . get_edit_post_link($this->event->ID) . '">', '</a>') . '</p>' . "\n";
                    $content .= '</body>' . "\n" . '</html>' . "\n";
                    $mdjm->send_email(array('content' => $mdjm->filter_content(get_post_meta($this->event->ID, '_mdjm_event_client', true), $this->event->ID, $content), 'to' => $mdjm_settings['email']['system_email'], 'subject' => __('Event Contract Signed', 'mobile-dj-manager'), 'journal' => false, 'event_id' => $this->event->ID, 'cc_dj' => false, 'cc_admin' => false, 'filter' => false, 'log_comm' => false));
                } else {
                    if (MDJM_DEBUG == true) {
                        MDJM()->debug->log_it('Skipping admin notification');
                    }
                }
                ?>
					<script type="text/javascript">
                    window.location.replace("<?php 
                echo mdjm_get_formatted_url(MDJM_CONTRACT_PAGE) . 'event_id=' . $this->event->ID . '&message=3&class=2';
                ?>
");
                    </script>
                    <?php 
                exit;
            }
        }
コード例 #9
0
ファイル: comms.php プロジェクト: mdjm/mobile-dj-manager
function f_mdjm_render_comms()
{
    global $mdjm, $mdjm_settings;
    if (isset($_GET['template']) && !empty($_GET['template'])) {
        $template_query = get_post($_GET['template']);
        if ($template_query) {
            $content = $template_query->post_content;
            $content = apply_filters('the_content', $content);
            $content = str_replace(']]>', ']]&gt;', $content);
            $subject = get_the_title($_GET['template']);
        }
    } elseif (isset($_POST['email_content'])) {
        $content = stripslashes($_POST['email_content']);
    } else {
        $content = '';
    }
    if (!isset($subject) || empty($subject)) {
        if (isset($_POST['subject'])) {
            $subject = stripslashes($_POST['subject']);
        } else {
            $subject = '';
        }
    }
    ?>
		<div class="wrap">
		<h1>Client Communications</h1>
		<?php 
    $settings = array('media_buttons' => true, 'textarea_rows' => '10');
    $clientinfo = $mdjm->mdjm_events->get_clients();
    $djinfo = mdjm_get_djs();
    ?>
		<script type="text/javascript">
			function MM_jumpMenu(targ,selObj,restore){ //v3.0
			  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
			  if (restore) selObj.selectedIndex=0;
			}
		</script>
		<form name="form-email-template" id="form-email-template" method="post" enctype="multipart/form-data">
        <?php 
    if (isset($_GET['action']) && $_GET['action'] == 'respond_unavailable') {
        ?>
<input type="hidden" name="respond_unavailable" id="respond_unavailable" value="<?php 
        echo $_GET['event_id'];
        ?>
" /><?php 
    }
    ?>
		<table class="form-table">
		<tr>
		<td width="20%"><label for="email_template">Select a template for content, or write your own:</label></td>
		<td><select name="email_template" id="email_template" onChange="MM_jumpMenu('parent',this,0)">
		<option value="<?php 
    echo add_query_arg('template', 0);
    ?>
" <?php 
    if (!isset($_GET['template']) || $_GET['template'] == '0') {
        echo ' selected';
    }
    ?>
>Do not use Template</option>
        <?php 
    $email_args = array('posts_per_page' => -1, 'post_type' => 'email_template', 'orderby' => 'name', 'order' => 'ASC');
    $contract_args = array('post_type' => 'contract', 'posts_per_page' => -1, 'orderby' => 'name', 'order' => 'ASC');
    if (is_dj()) {
        // Check templates that DJ's cannot use
        if (!isset($mdjm_settings['permissions'])) {
            $mdjm_settings['permissions'] = get_option('mdjm_plugin_permissions');
        }
        if (isset($mdjm_settings['permissions']['dj_disable_template']) && !empty($mdjm_settings['permissions']['dj_disable_template'])) {
            if (!is_array($mdjm_settings['permissions']['dj_disable_template'])) {
                $mdjm_settings['permissions']['dj_disable_template'] = array($mdjm_settings['permissions']['dj_disable_template']);
            }
            $email_args['post__not_in'] = $mdjm_settings['permissions']['dj_disable_template'];
            $contract_args['post__not_in'] = $mdjm_settings['permissions']['dj_disable_template'];
        }
    }
    $email_query = get_posts($email_args);
    if ($email_query) {
        ?>
<optgroup label="EMAIL TEMPLATES"><?php 
        foreach ($email_query as $email_template) {
            ?>
				<option value="<?php 
            echo add_query_arg('template', $email_template->ID);
            ?>
"<?php 
            if (isset($_GET['template'])) {
                selected($email_template->ID, $_GET['template']);
            }
            ?>
><?php 
            echo get_the_title($email_template->ID);
            ?>
</option>
				<?php 
        }
        ?>
			</optgroup>
			<?php 
    }
    $contract_query = get_posts($contract_args);
    if ($contract_query) {
        ?>
<optgroup label="CONTRACTS"><?php 
        foreach ($contract_query as $contract_template) {
            ?>
				<option value="<?php 
            echo add_query_arg('template', $contract_template->ID);
            ?>
"<?php 
            if (isset($_GET['template'])) {
                selected($contract_template->ID, $_GET['template']);
            }
            ?>
><?php 
            echo get_the_title($contract_template->ID);
            ?>
</option>
				<?php 
        }
        ?>
			</optgroup>
			<?php 
    }
    ?>
		</select></td>
		</tr>
		</table>
		<hr />
		<?php 
    wp_nonce_field('send-email', '__mdjm_send_email');
    ?>
		<table width="100%" border="0" cellspacing="0" cellpadding="0" class="widefat">
		<tr>
		<td width="60%"><table width="100%" border="0" cellspacing="0" cellpadding="0" class="widefat">
		<tr class="alternate">
		<th class="row-title" align="left"><label for="to">Send email to:</label></th>
		<td><select name="to" id="to" onChange="MM_jumpMenu('parent',this,0)">
			<option value="">Select a Recipient</option>
            <optgroup label="CLIENTS">
		<?php 
    foreach ($clientinfo as $client) {
        if (current_user_can('administrator') || $mdjm->mdjm_events->is_my_client($client->ID)) {
            // Non-Admins only see their own clients
            ?>
				<option value="<?php 
            echo add_query_arg(array('to_user' => $client->ID));
            ?>
"<?php 
            if (isset($_GET['to_user'])) {
                selected($client->ID, $_GET['to_user']);
            }
            ?>
><?php 
            echo $client->display_name;
            ?>
</option>
                <?php 
        }
    }
    ?>
        </optgroup>
        <?php 
    if (current_user_can('administrator')) {
        // Admins see DJ's too
        ?>
<optgroup label="<?php 
        echo MDJM_DJ;
        ?>
's"><?php 
        foreach ($djinfo as $dj) {
            ?>
                <option value="<?php 
            echo add_query_arg(array('to_user' => $dj->ID));
            ?>
"<?php 
            if (isset($_GET['to_user'])) {
                selected($dj->ID, $_GET['to_user']);
            }
            ?>
><?php 
            echo $dj->display_name;
            ?>
</option>
                <?php 
        }
    }
    ?>
        </optgroup>
		</select>
        </td>
        </tr>
        <?php 
    if (isset($_GET['to_user']) && $_GET['to_user'] != '') {
        echo '<input type="hidden" name="email_to" value="' . $_GET['to_user'] . '" />';
    }
    ?>
        <tr class="alternate">
        <th class="row-title">&nbsp;</th>
        <td>
        <?php 
    /* Get this users info */
    if (isset($_GET['to_user']) && $_GET['to_user'] != '') {
        $userinfo = get_user_by('id', $_GET['to_user']);
    }
    ?>
		<input type="email" name="user_addr" id="user_addr" value="<?php 
    if (isset($userinfo) && $userinfo != '') {
        echo $userinfo->user_email;
    }
    ?>
" class="regular-text" readonly="readonly" /> </td>
        </tr>
        <tr class="alternate">
        <th class="row-title"><label for="copy_sender">Copy yourself?</label></th>
        <td><input type="checkbox" name="copy_sender" id="copy_sender" value="Y" checked="checked" /> <span class="description">Depending on your <a href="<?php 
    echo mdjm_get_admin_page('settings');
    ?>
">settings</a>, the DJ and Admin may also receive a copy</span></td>
        </tr>
        <?php 
    if (isset($_GET['to_user'])) {
        if (user_can($_GET['to_user'], 'dj')) {
            // Selected user is a DJ
            $events = $mdjm->mdjm_events->dj_events($_GET['to_user'], '', $order = 'DESC');
        } else {
            $events = $mdjm->mdjm_events->client_events($_GET['to_user'], '', $order = 'DESC');
        }
    }
    ?>
        <tr class="alternate">
		<th class="row-title" align="left"><label for="event">Regarding Event:</label></th>
		<td>
        <?php 
    if (empty($events)) {
        ?>
            <input type="text" name="event" class="regular-text" value="No Event (General Message)" disabled="disabled" />
            <?php 
    } else {
        $event_stati = mdjm_all_event_status();
        ?>
			<select name="event" id="event">
			<option value="">No Event (General Message)</option>
            <?php 
        foreach ($events as $event) {
            ?>
				<option value="<?php 
            echo $event->ID;
            ?>
"<?php 
            if (isset($_POST['event'])) {
                selected($_POST['event'], $event->ID);
            } elseif (isset($_GET['event_id'])) {
                selected($_GET['event_id'], $event->ID);
            }
            ?>
><?php 
            echo date(MDJM_SHORTDATE_FORMAT, strtotime(get_post_meta($event->ID, '_mdjm_event_date', true))) . ' from ' . date(MDJM_TIME_FORMAT, strtotime(get_post_meta($event->ID, '_mdjm_event_start', true))) . ' (' . $event_stati[$event->post_status] . ')';
            ?>
</option>
				<?php 
        }
        echo '</select>';
    }
    ?>
        <br />
        <span class="description">Note: If no event is selected you cannot use MDJM Shortcodes in your email</span>
        </td>
		</tr>
        <?php 
    ?>
		<tr class="alternate">
		<th class="row-title" align="left"><label for="subject">Subject:</label></th>
		<td><input type="text" name="subject" id="subject" class="regular-text" value="<?php 
    echo $subject;
    ?>
" /></td>
		</tr>
        <tr class="alternate">
		<th class="row-title" align="left"><label for="upload_file">Attach File from Computer:</label></th>
		<td><input type="file" name="upload_file" id="upload_file" class="regular-text" value="" /><p class="description"><?php 
    echo __('Max file size', 'mobile-dj-manager') . ': ' . ini_get('post_max_size') . '. ' . sprintf(__('Change php.ini %spost_max_size%s to increase', 'mobile-dj-manager'), '<strong>', '</strong>');
    ?>
</p></td>
		</tr>
        <?php 
    do_action('mdjm_comms_fields_last', $email_query, $contract_query);
    ?>
		<tr>
		<td colspan="2"><?php 
    wp_editor(html_entity_decode(stripcslashes($content)), 'email_content', $settings);
    ?>
</td>
		</tr>
		<tr>
		<td colspan="2">
		<?php 
    submit_button('Send Email', 'primary', 'submit', true);
    ?>
        </td>
		</tr>
		</table></td>
		<td valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="0" class="widefat">
		<tr>
		<td align="center" class="alternate"><strong>To do List</strong></td>
		</tr>
		<tr>
		<td>Coming soon...!</td>
		</tr>
		</table></td>
		</tr>
		</table>
		 </form>
		</div>
	<?php 
}
コード例 #10
0
function get_availability_activity($month, $year)
{
    global $wpdb, $mdjm, $mdjm_settings, $current_user;
    if ($month == '12') {
        $next_month = '1';
        $mk_year = $year + 1;
    } else {
        $next_month = $month + 1;
        $mk_year = $year;
    }
    if (date('Y-m', strtotime($year . '-' . $month)) == date('Y-m')) {
        $first_day = date('Y-m-d');
        $last_day = date('Y-m-d', strtotime('+1 month'));
    } else {
        $first_day = date('Y-m-d', strtotime($year . '-' . $month . '-01'));
        $last_day = date('Y-m-t', mktime(0, 0, 0, $next_month, 0, $mk_year));
    }
    /* 7 Day Checker for the WP Widget */
    if ($month == 0 && $year == 0) {
        $first_day = date('Y-m-d');
        $last_day = date('Y-m-d', strtotime('+1 week'));
    }
    $date_range = mdjm_all_dates_in_range($first_day, $last_day);
    $event_args = array('posts_per_page' => -1, 'post_type' => 'mdjm-event', 'post_status' => array('mdjm-unattended', 'mdjm-enquiry', 'mdjm-contract', 'mdjm-approved', 'mdjm-completed'), 'orderby' => 'meta_value', 'order' => 'ASC');
    /* Loop through the days */
    foreach ($date_range as $day) {
        if (mdjm_is_admin()) {
            $event_args['meta_query'] = array(array('key' => '_mdjm_event_date', 'value' => $day->format('Y-m-d'), 'compare' => '=', 'type' => 'date'));
            $hol_query = "SELECT * FROM " . MDJM_HOLIDAY_TABLE . " WHERE DATE(date_from) = '" . $day->format('Y-m-d') . "'";
        } else {
            $event_args['meta_query'] = array('relation' => 'AND', array('key' => '_mdjm_event_date', 'value' => $day->format('Y-m-d'), 'compare' => '=', 'type' => 'date'), array('key' => '_mdjm_event_dj', 'value' => $current_user->ID, 'compare' => '='));
            $hol_query = "SELECT * FROM " . MDJM_HOLIDAY_TABLE . " WHERE DATE(date_from) = '" . $day->format('Y-m-d') . "' AND `user_id` = '" . get_current_user_id() . "'";
        }
        /* Work Query */
        $work_result = get_posts($event_args);
        /* Holiday Query */
        $hol_result = $wpdb->get_results($hol_query);
        /* Print results */
        $result_array = array();
        if (count($work_result) > 0 || $hol_result) {
            $event_stati = mdjm_all_event_status();
            $have_result = true;
            ?>
				<tr class="alternate">
				<td colspan="2"><strong><font class="code"><?php 
            echo date('l, jS F Y', strtotime($day->format('Y-m-d')));
            ?>
</font></strong></td>
				</tr>
                <?php 
        }
        if (count($work_result) > 0) {
            foreach ($work_result as $event) {
                $eventinfo = MDJM()->events->event_detail($event->ID);
                ?>
					<tr>
                    <td width="25%">
						<?php 
                if ($month == 0 && $year == 0) {
                    echo '<font style="font-size:12px">';
                }
                ?>
                        <strong><?php 
                echo !empty($eventinfo['dj']->display_name) ? $eventinfo['dj']->display_name : 'DJ ' . $eventinfo['dj'];
                ?>
</strong>
						<?php 
                if ($month == 0 && $year == 0) {
                    echo '</font>';
                }
                ?>
</td>
					<td><?php 
                if ($month == 0 && $year == 0) {
                    echo '<font style="font-size:12px">';
                }
                ?>
<a href="<?php 
                echo get_edit_post_link($event->ID);
                ?>
">Event ID <?php 
                echo $event->ID . '</a> (' . $event_stati[$event->post_status] . ')';
                ?>
 from <?php 
                echo $eventinfo['start'];
                if ($month != 0 && $year != 0) {
                    ?>
 to <?php 
                    echo $eventinfo['finish'];
                }
                if ($month == 0 && $year == 0) {
                    echo '</font>';
                }
                ?>
</td>
                    </tr>
                    <?php 
            }
        }
        if ($hol_result) {
            foreach ($hol_result as $holiday) {
                $dj = get_userdata($holiday->user_id);
                ?>
					<tr>
                    <td width="25%"><?php 
                if ($month == 0 && $year == 0) {
                    echo '<font style="font-size:12px">';
                }
                ?>
<strong><?php 
                echo $dj->display_name;
                ?>
</strong><?php 
                if ($month == 0 && $year == 0) {
                    echo '</font>';
                }
                ?>
</td>
					<td><?php 
                if ($month == 0 && $year == 0) {
                    echo '<font style="font-size:12px">';
                }
                ?>
Unavailable<?php 
                if (isset($holiday->notes) && !empty($holiday->notes) && $month != 0 && $year != 0) {
                    echo ' - ' . $holiday->notes;
                }
                if ($month == 0 && $year == 0) {
                    echo '</font>';
                }
                ?>
 <a style="color: #F00;" href="<?php 
                mdjm_get_admin_page('availability', 'echo');
                ?>
&action=del_entry&entry_id=<?php 
                echo $holiday->entry_id;
                ?>
">Delete Entry</a></td>
                    </tr>
                    <?php 
            }
        }
    }
    // foreach( $date_range as $day )
    if (!isset($have_result)) {
        if ($month != 0 && $year != 0) {
            ?>
				<tr class="alternate">
				<td colspan="2"><strong>There is currently no activity during <?php 
            echo date('F Y', strtotime($year . '-' . $month . '-01'));
            ?>
</strong></td>
				</tr>
				<?php 
        } else {
            ?>
				<tr >
				<td colspan="2">There is currently no activity within the next 7 days</td>
				</tr>
				<?php 
        }
    }
}
コード例 #11
0
/**
 * Return a select list of possible event statuses
 * 
 *	@since	1.1.3
 *	@param	arr		$args	array of options. See $defaults
 *	@return	str		HTML for the select list
 */
function mdjm_event_status_dropdown($args = '')
{
    global $post;
    $defaults = array('name' => 'mdjm_event_status', 'id' => 'mdjm_event_status', 'selected' => !empty($post) ? $post->post_status : 'mdjm-unattended', 'first_entry' => '', 'first_entry_value' => '0', 'small' => false, 'return_type' => 'list');
    $args = wp_parse_args($args, $defaults);
    $event_status = mdjm_all_event_status();
    if (empty($event_status)) {
        return false;
    }
    if (!empty($post->ID) && array_key_exists($post->post_status, $event_status)) {
        $current_status = $post->post_status;
    }
    $output = '<select name="' . $args['name'] . '" id="' . $args['id'] . '"';
    $output .= !empty($args['small']) ? ' style="font-size: 11px;"' : '';
    $output .= '>' . "\r\n";
    if (!empty($first_entry)) {
        $output .= '<option value="' . $args['first_entry_value'] . '">' . $args['first_entry'] . '</option>' . "\r\n";
    }
    foreach ($event_status as $slug => $label) {
        $output .= '<option value="' . $slug . '"';
        $output .= $args['selected'] == $slug ? ' selected="selected"' : '';
        $output .= '>' . $label . '</option>' . "\r\n";
    }
    $output .= '</select>' . "\r\n";
    if ($args['return_type'] == 'list') {
        echo $output;
    }
    return $output;
}
コード例 #12
0
ファイル: events.php プロジェクト: mdjm/mobile-dj-manager
/**
 * Rename the Publish and Update post buttons for events
 *
 * @since	1.3
 * @param	str		$translation	The current button text translation
 * @param	str		$text			The text translation for the button
 * @return	str		$translation	The filtererd text translation
 */
function mdjm_event_rename_publish_button($translation, $text)
{
    global $post;
    if (!isset($post) || 'mdjm-event' != $post->post_type) {
        return $translation;
    }
    $event_statuses = mdjm_all_event_status();
    if ($text == 'Publish' && isset($event_statuses[$post->post_status])) {
        return __('Update Event', 'mobile-dj-manager');
    } elseif ($text == 'Publish') {
        return __('Create Event', 'mobile-dj-manager');
    } elseif ($text == 'Update') {
        return __('Update Event', 'mobile-dj-manager');
    } else {
        return $translation;
    }
}
コード例 #13
0
/**
 * Retrieve the array of plugin settings
 *
 * @since	1.3
 * @return	array
*/
function mdjm_get_registered_settings()
{
    /**
     * 'Whitelisted' MDJM settings, filters are provided for each settings
     * section to allow extensions and other plugins to add their own settings
     */
    $mdjm_settings = array('general' => apply_filters('mdjm_settings_general', array('main' => array('general_settings' => array('id' => 'general_settings', 'name' => '<h3>' . __('General Settings', 'mobile-dj-manager') . '</h3>', 'desc' => '', 'type' => 'header'), 'company_name' => array('id' => 'company_name', 'name' => __('Company Name', 'mobile-dj-manager'), 'desc' => __('Your company name.', 'mobile-dj-manager'), 'type' => 'text', 'std' => get_bloginfo('name')), 'time_format' => array('id' => 'time_format', 'name' => __('Time Format', 'mobile-dj-manager'), 'desc' => sprintf(__('Select the format in which you want your %s times displayed. Applies to both admin and client pages', 'mobile-dj-manager'), mdjm_get_label_singular(true)), 'type' => 'select', 'options' => array('g:i A' => date('g:i A', current_time('timestamp')), 'H:i' => date('H:i', current_time('timestamp'))), 'std' => 'H:i'), 'short_date_format' => array('id' => 'short_date_format', 'name' => __('Short Date Format', 'mobile-dj-manager'), 'desc' => __('Select the format in which you want short dates displayed. Applies to both admin and client pages', 'mobile-dj-manager'), 'type' => 'select', 'options' => array('d/m/Y' => date('d/m/Y') . ' - d/m/Y', 'm/d/Y' => date('m/d/Y') . ' - m/d/Y', 'Y/m/d' => date('Y/m/d') . ' - Y/m/d', 'd-m-Y' => date('d-m-Y') . ' - d-m-Y', 'm-d-Y' => date('m-d-Y') . ' - m-d-Y', 'Y-m-d' => date('Y-m-d') . ' - Y-m-d'), 'std' => 'd/m/Y'), 'show_credits' => array('id' => 'show_credits', 'name' => __('Display Credits?', 'mobile-dj-manager'), 'desc' => sprintf(__('Whether or not to display the %sPowered by ' . '%s, version %s%s text at the footer of the %s application pages.', 'mobile-dj-manager'), '<span class="mdjm-admin-footer">', MDJM_NAME, MDJM_VERSION_NUM, '</span>', mdjm_get_option('app_name', __('Client Zone', 'mobile-dj-manager'))), 'type' => 'checkbox')), 'debugging' => array('debugging_settings' => array('id' => 'debugging_settings', 'name' => '<h3>' . __('Debugging MDJM', 'mobile-dj-manager') . '</h3>', 'desc' => '', 'type' => 'header'), 'enable_debugging' => array('id' => 'enable_debugging', 'name' => __('Enable Debugging', 'mobile-dj-manager'), 'desc' => __('Only enable if MDJM Support have asked you to do so. Performance may be impacted', 'mobile-dj-manager'), 'type' => 'checkbox'), 'debug_log_size' => array('id' => 'debug_log_size', 'name' => __('Maximum Log File Size', 'mobile-dj-manager'), 'hint' => sprintf(__('MB %sDefault is 2 (MB)%s', 'mobile-dj-manager'), '<code>', '</code>'), 'desc' => __('The max size in Megabytes to allow your log files to grow to before you receive a warning (if configured below)', 'mobile-dj-manager'), 'type' => 'text', 'size' => 'small', 'std' => '2'), 'debug_warn' => array('id' => 'debug_warn', 'name' => __('Display Warning if Over Size', 'mobile-dj-manager'), 'desc' => __('Will display notice and allow removal and recreation of log files', 'mobile-dj-manager'), 'type' => 'checkbox', 'std' => '1'), 'debug_auto_purge' => array('id' => 'debug_auto_purge', 'name' => __('Auto Purge Log Files', 'mobile-dj-manager'), 'desc' => __('If selected, log files will be auto-purged when they reach the value of <code>Maximum Log File Size</code>', 'mobile-dj-manager'), 'type' => 'checkbox')), 'uninstall' => array('uninst_settings' => array('id' => 'uninst_settings', 'name' => '<h3>' . __('Uninstallation Settings', 'mobile-dj-manager') . '</h3>', 'desc' => '', 'type' => 'header'), 'uninst_remove_db' => array('id' => 'uninst_remove_db', 'name' => __('Remove Database Tables', 'mobile-dj-manager'), 'desc' => __('Should the database tables and data be removed when uninstalling the plugin? ' . 'Cannot be recovered unless you or your host have a backup solution in place and a recent backup.', 'mobile-dj-manager'), 'type' => 'checkbox'), 'uninst_remove_mdjm_posts' => array('id' => 'uninst_remove_mdjm_posts', 'name' => __('Remove Data?', 'mobile-dj-manager'), 'desc' => __('Do you want to remove all MDJM pages', 'mobile-dj-manager'), 'type' => 'checkbox'), 'uninst_remove_mdjm_pages' => array('id' => 'uninst_remove_mdjm_pages', 'name' => __('Remove Pages?', 'mobile-dj-manager'), 'desc' => __('Do you want to remove all MDJM pages?', 'mobile-dj-manager'), 'type' => 'checkbox'), 'uninst_remove_users' => array('id' => 'uninst_remove_users', 'name' => __('Remove Employees and Clients?', 'mobile-dj-manager'), 'desc' => __('If selected, all users who are defined as clients or employees will be removed.', 'mobile-dj-manager'), 'type' => 'checkbox')))), 'events' => apply_filters('mdjm_settings_events', array('main' => array('event_settings' => array('id' => 'event_settings', 'name' => '<h3>' . sprintf(__('%s Settings', 'mobile-dj-manager'), mdjm_get_label_singular()) . '</h3>', 'desc' => '', 'type' => 'header'), 'event_prefix' => array('id' => 'event_prefix', 'name' => sprintf(__('%s Prefix', 'mobile-dj-manager'), mdjm_get_label_singular()), 'desc' => sprintf(__('The prefix you enter here will be added to each unique %s, contract and invoice ID', 'mobile-dj-manager'), mdjm_get_label_singular(true)), 'type' => 'text', 'size' => 'small'), 'show_active_only' => array('id' => 'show_active_only', 'name' => sprintf(__('Hide Inactive %s?', 'mobile-dj-manager'), mdjm_get_label_plural()), 'desc' => sprintf(__('Select to include only active %1$s within the <code>All</code> view on the %1$s screen.', 'mobile-dj-manager'), mdjm_get_label_plural(true)), 'type' => 'checkbox'), 'employer' => array('id' => 'employer', 'name' => __('I am an Employer', 'mobile-dj-manager'), 'desc' => __('Check if you employ staff other than yourself.', 'mobile-dj-manager'), 'type' => 'checkbox'), 'artist' => array('id' => 'artist', 'name' => __('Refer to Performers as', 'mobile-dj-manager'), 'hint' => '<code>' . __('Default is DJ', 'mobile-dj-manager') . '</code>', 'desc' => __('Change the name of your performers here as necessary.', 'mobile-dj-manager'), 'type' => 'text', 'size' => 'regular', 'std' => __('DJ', 'mobile-dj-manager')), 'default_contract' => array('id' => 'default_contract', 'name' => __('Default Contract', 'mobile-dj-manager'), 'desc' => sprintf(__('Select the default contract for your %s. Can be changed per %s', 'mobile-dj-manager'), mdjm_get_label_plural(true), mdjm_get_label_singular(true)), 'type' => 'select', 'options' => mdjm_list_templates('contract')), 'warn_unattended' => array('id' => 'warn_unattended', 'name' => __('New Enquiry Notification', 'mobile-dj-manager'), 'desc' => __('Displays a notification message at the top of the Admin pages to Administrators if there are outstanding Unattended Enquiries.', 'mobile-dj-manager'), 'type' => 'checkbox', 'std' => '1'), 'events_order_by' => array('id' => 'events_order_by', 'name' => __('Default Order By', 'mobile-dj-manager'), 'desc' => sprintf(__('Select how you want to see %s ordered within the %s admin list', 'mobile-dj-manager'), mdjm_get_label_plural(true), mdjm_get_label_singular(true)), 'type' => 'select', 'options' => array('ID' => __('Contract ID', 'mobile-dj-manager'), 'post_date' => __('Creation Date', 'mobile-dj-manager'), 'event_date' => sprintf(__('%s Date', 'mobile-dj-manager'), mdjm_get_label_singular()), 'value' => __('Total Cost', 'mobile-dj-manager')), 'std' => 'event_date'), 'events_order' => array('id' => 'events_order', 'name' => __('Default Order', 'mobile-dj-manager'), 'desc' => '', 'type' => 'select', 'options' => array('ASC' => __('Ascending', 'mobile-dj-manager'), 'DESC' => __('Descending', 'mobile-dj-manager')), 'std' => 'DESC'), 'set_client_inactive' => array('id' => 'set_client_inactive', 'name' => __('Set Client Inactive?', 'mobile-dj-manager'), 'desc' => sprintf(__('Set a client to inactive when their %s is cancelled, rejected or marked as a failed enquiry and they have no other upcoming %s.', 'mobile-dj-manager'), mdjm_get_label_singular(true), mdjm_get_label_plural(true)), 'type' => 'checkbox', 'std' => '1'), 'journaling' => array('id' => 'journaling', 'name' => __('Enable Journaling?', 'mobile-dj-manager'), 'desc' => sprintf(__('Log and track all client &amp; %s actions (recommended).', 'mobile-dj-manager'), mdjm_get_label_singular()), 'type' => 'checkbox', 'std' => '1')), 'playlist' => array('playlist_settings' => array('id' => 'playlist_settings', 'name' => '<h3>' . __('Playlist Settings', 'mobile-dj-manager') . '</h3>', 'desc' => '', 'type' => 'header'), 'enable_playlists' => array('id' => 'enable_playlists', 'name' => sprintf(__('Enable %s Playlists by Default?', 'mobile-dj-manager'), mdjm_get_label_singular()), 'desc' => sprintf(__('Check to enable Client Playlist features by default. Can be overridden per %s.', 'mobile-dj-manager'), mdjm_get_label_singular(true)), 'type' => 'checkbox', 'std' => '1'), 'close' => array('id' => 'close', 'name' => __('Close the Playlist', 'mobile-dj-manager'), 'hint' => sprintf(__('Enter %s0%s to never close.', 'mobile-dj-manager'), '<code>', '</code>'), 'desc' => sprintf(__('Number of days before %s that the playlist should close to new entries.', 'mobile-dj-manager'), mdjm_get_label_singular(true)), 'type' => 'text', 'size' => 'small', 'std' => '5'), 'upload_playlists' => array('id' => 'upload_playlists', 'name' => __('Upload Playlists?', 'mobile-dj-manager'), 'desc' => sprintf(__('With this option checked, your playlist information will occasionally be transmitted back to the MDJM servers ' . 'to help build an information library. The consolidated list of playlist songs will be freely shared. ' . 'Only song, artist and the %s type information is transmitted.', 'mobile-dj-manager'), mdjm_get_label_singular(true)), 'type' => 'checkbox')), 'packages' => array('package_settings' => array('id' => 'package_settings', 'name' => '<h3>' . __('Package &amp; Addon Settings', 'mobile-dj-manager') . '</h3>', 'desc' => '', 'type' => 'header'), 'enable_packages' => array('id' => 'enable_packages', 'name' => __('Enable Packages', 'mobile-dj-manager'), 'desc' => __('Check this to enable Equipment Packages & Add-ons.', 'mobile-dj-manager'), 'type' => 'checkbox'), 'package_excerpt_length' => array('id' => 'package_excerpt_length', 'name' => __('Description Length', 'mobile-dj-manager'), 'desc' => __('The maximum number of characters for the package/addon description.', 'mobile-dj-manager'), 'hint' => __('Entering <code>0</code> will render the full exceprt if it exists, otherwise the description', 'mobile-dj-manager'), 'type' => 'number', 'size' => 'small', 'step' => '5', 'std' => '55'), 'package_contact_btn' => array('id' => 'package_contact_btn', 'name' => __('Add Contact Button?', 'mobile-dj-manager'), 'hint' => sprintf(__('Select to auto add a contact button to the end of package/addons post content. The link will redirect to the <code>Contact Page</code>page as defined in <a href="%s">Pages</a>', 'mobile-dj-manager'), admin_url('admin.php?page=mdjm-settings&tab=client_zone&section=pages')), 'desc' => sprintf(__('If you use the <a href="%s" target="_blank">Dynamic Contact Forms</a> add-on, the package/addon will be auto selected on page load', 'mobile-dj-manager'), 'http://mdjm.co.uk/products/dynamic-contact-forms/'), 'type' => 'checkbox'), 'package_contact_btn_text' => array('id' => 'package_contact_btn_text', 'name' => __('Text for Contact Button', 'mobile-dj-manager'), 'desc' => '', 'type' => 'text', 'std' => __('Enquire Now', 'mobile-dj-manager'))), 'travel' => array('travel_settings' => array('id' => 'travel_settings', 'name' => '<h3>' . __('Travel Settings', 'mobile-dj-manager') . '</h3>', 'desc' => '', 'type' => 'header'), 'travel_add_cost' => array('id' => 'travel_add_cost', 'name' => __('Add Travel Cost to Price?', 'mobile-dj-manager'), 'desc' => sprintf(__('If selected, the travel cost will be added to the overall %s cost', 'mobile-dj-manager'), mdjm_get_label_singular(true)), 'type' => 'checkbox'), 'travel_primary' => array('id' => 'travel_primary', 'name' => __('Primary Post/Zip Code', 'mobile-dj-manager'), mdjm_get_label_singular(), 'desc' => __('When the primary employee has no address in their profile, this post code will be used to calculate the distance to the venue.', 'mobile-dj-manager'), 'type' => 'text', 'std' => mdjm_get_employee_post_code(1)), 'travel_status' => array('id' => 'travel_status', 'name' => sprintf(__('%s Status', 'mobile-dj-manager'), mdjm_get_label_singular()), 'desc' => sprintf(__("CTRL (cmd on MAC) + Click to select which %s status' can have travel costs updated.", 'mobile-dj-manager'), mdjm_get_label_singular(true)), 'type' => 'multiple_select', 'options' => mdjm_all_event_status(), 'std' => array('mdjm-unattended', 'mdjm-enquiry', 'mdjm-contract')), 'travel_units' => array('id' => 'travel_units', 'name' => __('Calculate in?', 'mobile-dj-manager'), 'desc' => '', 'type' => 'select', 'options' => array('imperial' => __('Miles', 'mobile-dj-manager'), 'metric' => __('Kilometers', 'mobile-dj-manager')), 'std' => 'imperial'), 'cost_per_unit' => array('id' => 'cost_per_unit', 'name' => sprintf(__('Cost per %s', 'mobile-dj-manager'), mdjm_travel_unit_label()), 'desc' => __('Enter the cost per mile that should be calculated. i.e. 0.45', 'mobile-dj-manager'), 'type' => 'text', 'size' => 'small', 'std' => '0.45'), 'travel_cost_round' => array('id' => 'travel_cost_round', 'name' => __('Round Cost', 'mobile-dj-manager'), 'desc' => __('Do you want to round costs up or down?', 'mobile-dj-manager'), 'type' => 'select', 'options' => array(false => __('No', 'mobile-dj-manager'), 'up' => __('Up', 'mobile-dj-manager'), 'down' => __('Down', 'mobile-dj-manager')), 'std' => 'up'), 'travel_round_to' => array('id' => 'travel_round_to', 'name' => __('Round to Nearest', 'mobile-dj-manager'), 'hint' => mdjm_get_currency() . ' i.e. 5', 'type' => 'number', 'size' => 'small', 'std' => '5'), 'travel_min_distance' => array('id' => 'travel_min_distance', 'name' => __("Don't add if below", 'mobile-dj-manager'), 'hint' => mdjm_travel_unit_label(false, true), 'type' => 'number', 'size' => 'small', 'std' => '30')))), 'emails' => apply_filters('mdjm_settings_emails', array('main' => array('email_settings' => array('id' => 'email_settings', 'name' => '<h3>' . __('Email Settings', 'mobile-dj-manager') . '</h3>', 'desc' => '', 'type' => 'header'), 'system_email' => array('id' => 'system_email', 'name' => __('Default From Address', 'mobile-dj-manager'), 'desc' => __('The email address you want generic emails from MDJM to come from.', 'mobile-dj-manager'), 'type' => 'text', 'size' => 'regular', 'std' => get_bloginfo('admin_email')), 'comms_show_active_events_only' => array('id' => 'comms_show_active_events_only', 'name' => __('Communicate Active Events Only', 'mobile-dj-manager'), 'desc' => __("Check to only retrieve a client's/employee's active events on the communication page.", 'mobile-dj-manager'), 'type' => 'checkbox'), 'track_client_emails' => array('id' => 'track_client_emails', 'name' => __('Track Client Emails?', 'mobile-dj-manager'), 'desc' => __('Some email clients may not support this feature.', 'mobile-dj-manager'), 'type' => 'checkbox', 'std' => '1'), 'bcc_dj_to_client' => array('id' => 'bcc_dj_to_client', 'name' => sprintf(__('Copy %s in Client Emails?', 'mobile-dj-manager'), mdjm_get_option('artist', __('DJ', 'mobile-dj-manager'))), 'desc' => sprintf(__('Send a copy of client emails to the %s primary %s', 'mobile-dj-manager'), mdjm_get_label_plural(true), mdjm_get_option('artist', __('DJ', 'mobile-dj-manager'))), 'type' => 'checkbox'), 'bcc_admin_to_client' => array('id' => 'bcc_admin_to_client', 'name' => __('Copy Admin in Client Emails?', 'mobile-dj-manager'), 'desc' => sprintf(__('Send a copy of client emails to %sDefault From Address%s', 'mobile-dj-manager'), '<code>', '</code>'), 'type' => 'checkbox', 'std' => '1')), 'templates' => array('quote_templates' => array('id' => 'quote_templates', 'name' => '<h3>' . __('Quote Template Settings', 'mobile-dj-manager') . '</h3>', 'desc' => '', 'type' => 'header'), 'enquiry' => array('id' => 'enquiry', 'name' => __('Quote Template', 'mobile-dj-manager'), 'desc' => __('This is the default template used when sending quotes via email to clients', 'mobile-dj-manager'), 'type' => 'select', 'options' => mdjm_list_templates('email_template')), 'online_enquiry' => array('id' => 'online_enquiry', 'name' => __('Online Quote Template', 'mobile-dj-manager'), 'desc' => sprintf(__('This is the default template used for clients viewing quotes online via the %s.', 'mobile-dj-manager'), mdjm_get_option('app_name', __('Client Zone', 'mobile-dj-manager'))), 'type' => 'select', 'options' => mdjm_list_templates('email_template', true)), 'unavailable' => array('id' => 'unavailable', 'name' => __('Unavailability Template', 'mobile-dj-manager'), 'desc' => sprintf(__('This is the default template used when responding to enquiries that you are unavailable for the %s', 'mobile-dj-manager'), mdjm_get_label_singular(true)), 'type' => 'select', 'options' => mdjm_list_templates('email_template')), 'enquiry_from' => array('id' => 'enquiry_from', 'name' => __('Emails From?', 'mobile-dj-manager'), 'desc' => __('Who should enquiries and unavailability emails to be sent by?', 'mobile-dj-manager'), 'type' => 'select', 'options' => array('admin' => __('Admin', 'mobile-dj-manager'), 'dj' => mdjm_get_option('artist', __('Primary Employee', 'mobile-dj-manager'))), 'std' => 'admin'), 'contract_templates' => array('id' => 'contract_templates', 'name' => '<h3>' . __('Awaiting Contract Template Settings', 'mobile-dj-manager') . '</h3>', 'desc' => '', 'type' => 'header'), 'contract_to_client' => array('id' => 'contract_to_client', 'name' => __('Contract Notification Email?', 'mobile-dj-manager'), 'desc' => sprintf(__('Do you want to auto send an email to the client when their %s changes to the <em>Awaiting Contract<em> status?', 'mobile-dj-manager'), mdjm_get_label_singular(true)), 'type' => 'checkbox', 'std' => '1'), 'contract' => array('id' => 'contract', 'name' => __('Contract Template', 'mobile-dj-manager'), 'desc' => sprintf(__('Only applies if %sContract Notification Email%s is enabled', 'mobile-dj-manager'), '<em>', '</em>'), 'type' => 'select', 'options' => mdjm_list_templates('email_template')), 'contract_from' => array('id' => 'contract_from', 'name' => __('Emails From?', 'mobile-dj-manager'), 'desc' => __('Who should contract notification emails to be sent by?', 'mobile-dj-manager'), 'type' => 'select', 'options' => array('admin' => __('Admin', 'mobile-dj-manager'), 'dj' => mdjm_get_option('artist', __('Primary Employee', 'mobile-dj-manager'))), 'std' => 'admin'), 'booking_conf_templates' => array('id' => 'booking_conf_templates', 'name' => '<h3>' . __('Booking Confirmation Template Settings', 'mobile-dj-manager') . '</h3>', 'desc' => '', 'type' => 'header'), 'booking_conf_to_client' => array('id' => 'booking_conf_to_client', 'name' => __('Booking Confirmation to Client', 'mobile-dj-manager'), 'desc' => __('Email client with selected template when booking is confirmed i.e. contract accepted, or status changed to Approved', 'mobile-dj-manager'), 'type' => 'checkbox', 'std' => '1'), 'booking_conf_client' => array('id' => 'booking_conf_client', 'name' => __('Client Booking Confirmation Template', 'mobile-dj-manager'), 'desc' => __('Select an email template to be used when sending the Booking Confirmation to Clients', 'mobile-dj-manager'), 'type' => 'select', 'options' => mdjm_list_templates('email_template')), 'booking_conf_from' => array('id' => 'booking_conf_from', 'name' => __('Emails From?', 'mobile-dj-manager'), 'desc' => __('Who should booking confirmation emails to be sent by?', 'mobile-dj-manager'), 'type' => 'select', 'options' => array('admin' => __('Admin', 'mobile-dj-manager'), 'dj' => mdjm_get_option('artist', __('Primary Employee', 'mobile-dj-manager'))), 'std' => 'admin'), 'booking_conf_to_dj' => array('id' => 'booking_conf_to_dj', 'name' => __('Booking Confirmation to Employee?', 'mobile-dj-manager'), 'desc' => sprintf(__('Email %s primary %s with selected template when booking is confirmed i.e. contract accepted, or status changed to Approved', 'mobile-dj-manager'), mdjm_get_label_plural(true), mdjm_get_option('artist', __('DJ', 'mobile-dj-manager'))), 'type' => 'checkbox'), 'email_dj_confirm' => array('id' => 'email_dj_confirm', 'name' => sprintf(__('%s Booking Confirmation Template', 'mobile-dj-manager'), mdjm_get_option('artist', __('DJ', 'mobile-dj-manager'))), 'desc' => sprintf(__('Select an email template to be used when sending the Booking Confirmation to %s primary %s', 'mobile-dj-manager'), mdjm_get_label_plural(true), mdjm_get_option('artist', __('DJ', 'mobile-dj-manager'))), 'type' => 'select', 'options' => mdjm_list_templates('email_template'))))), 'client_zone' => apply_filters('mdjm_settings_client_zone', array('main' => array('client_zone_settings' => array('id' => 'client_zone_settings', 'name' => '<h3>' . sprintf(__('%s Settings', 'mobile-dj-manager'), mdjm_get_option('app_name', __('Client Zone', 'mobile-dj-manager'))) . '</h3>', 'desc' => '', 'type' => 'header'), 'app_name' => array('id' => 'app_name', 'name' => __('Application Name', 'mobile-dj-manager'), 'hint' => sprintf(__('Default is %sClient Zone%s.', 'mobile-dj-manager'), '<code>', '</code>'), 'desc' => __('Choose your own name for the application.', 'mobile-dj-manager'), 'type' => 'text', 'size' => 'regular', 'std' => __('Client Zone', 'mobile-dj-manager')), 'client_settings' => array('id' => 'client_settings', 'name' => '<h3>' . __('Client Settings', 'mobile-dj-manager') . '</h3>', 'desc' => '', 'type' => 'header'), 'pass_length' => array('id' => 'pass_length', 'name' => __('Default Password Length', 'mobile-dj-manager'), 'desc' => sprintf(__('If opting to generate or reset a user password during %s creation, how many characters should the password be?', 'mobile-dj-manager'), mdjm_get_label_singular(true)), 'type' => 'select', 'options' => array('5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9', '10' => '10', '11' => '11', '12' => '12'), 'std' => '8'), 'complex_passwords' => array('id' => 'complex_passwords', 'name' => __('Use Complex Passwords?', 'mobile-dj-manager'), 'desc' => __('Generated passwords will contain <em>special</em> characters such as <code>!@#$%^&*()</code> as well as letters and numbers', 'mobile-dj-manager'), 'type' => 'checkbox', 'std' => '1'), 'notify_profile' => array('id' => 'notify_profile', 'name' => __('Incomplete Profile Warning?', 'mobile-dj-manager'), 'desc' => __('Display notice to Clients when they login if their Profile is incomplete? (i.e. Required field is empty)', 'mobile-dj-manager'), 'type' => 'checkbox'), 'client_zone_event_settings' => array('id' => 'client_zone_event_settings', 'name' => '<h3>' . sprintf(__('%s Settings', 'mobile-dj-manager'), mdjm_get_label_singular()) . '</h3>', 'desc' => '', 'type' => 'header'), 'package_prices' => array('id' => 'package_prices', 'name' => __('Display Package Price?', 'mobile-dj-manager'), 'desc' => sprintf(__('Select to display %s package &amp; Add-on prices within hover text within the %s', 'mobile-dj-manager'), mdjm_get_label_singular(true), mdjm_get_option('app_name', __('Client Zone', 'mobile-dj-manager'))), 'type' => 'checkbox')), 'styles' => array('client_zone_styles' => array('id' => 'client_zone_styles', 'name' => '<h3>' . __('Styling', 'mobile-dj-manager') . '</h3>', 'desc' => '', 'type' => 'header'), 'action_button_colour' => array('id' => 'action_button_colour', 'name' => __('Action Button Colour', 'mobile-dj-manager'), 'desc' => sprintf(__('Select your preferred colour for the %s action buttons', 'mobile-dj-manager'), mdjm_get_label_singular(true)), 'type' => 'select', 'options' => array('blue' => __('Blue', 'mobile-dj-manager'), 'green' => __('Green', 'mobile-dj-manager'), 'red' => __('Red', 'mobile-dj-manager'), 'turquoise' => __('Turquoise', 'mobile-dj-manager')), 'std' => 'blue')), 'pages' => array('page_settings' => array('id' => 'page_settings', 'name' => '<h3>' . __('Page Settings', 'mobile-dj-manager') . '</h3>', 'desc' => '', 'type' => 'header'), 'app_home_page' => array('id' => 'app_home_page', 'name' => mdjm_get_option('app_name', __('Client Zone', 'mobile-dj-manager')) . ' ' . __('Home Page', 'mobile-dj-manager'), 'desc' => sprintf(__("Select the home page for the %s application. Needs to contain the shortcode %s[mdjm-home]%s", 'mobile-dj-manager'), mdjm_get_option('app_name', __('Client Zone', 'mobile-dj-manager')), '<code>', '</code>'), 'type' => 'select', 'options' => mdjm_list_pages()), 'quotes_page' => array('id' => 'quotes_page', 'name' => __('Online Quotes Page', 'mobile-dj-manager'), 'desc' => sprintf(__("Select the page to use for online %s quotes. Needs to contain the shortcode <code>[mdjm-quote]</code>", 'mobile-dj-manager'), mdjm_get_label_singular(true)), 'type' => 'select', 'options' => mdjm_list_pages()), 'contact_page' => array('id' => 'contact_page', 'name' => __('Contact Page', 'mobile-dj-manager'), 'desc' => __("Select your website's contact page so we can correctly direct visitors.", 'mobile-dj-manager'), 'type' => 'select', 'options' => mdjm_list_pages()), 'contracts_page' => array('id' => 'contracts_page', 'name' => __('Contracts Page', 'mobile-dj-manager'), 'desc' => sprintf(__("Select your website's contracts page. Needs to contain the shortcode %s[mdjm-contract]%s", 'mobile-dj-manager'), '<code>', '</code>'), 'type' => 'select', 'options' => mdjm_list_pages()), 'payments_page' => array('id' => 'payments_page', 'name' => __('Payments Page', 'mobile-dj-manager'), 'desc' => sprintf(__("Select your website's payments page. Needs to contain the shortcode %s[mdjm-payments]%s", 'mobile-dj-manager'), '<code>', '</code>'), 'type' => 'select', 'options' => mdjm_list_pages()), 'playlist_page' => array('id' => 'playlist_page', 'name' => __('Playlist Page', 'mobile-dj-manager'), 'desc' => sprintf(__("Select your website's playlist page. Needs to contain the shortcode %s[mdjm-playlist]%s", 'mobile-dj-manager'), '<code>', '</code>'), 'type' => 'select', 'options' => mdjm_list_pages()), 'profile_page' => array('id' => 'profile_page', 'name' => __('Profile Page', 'mobile-dj-manager'), 'desc' => sprintf(__("Select your website's profile page. Needs to contain the shortcode %s[mdjm-profile]%s", 'mobile-dj-manager'), '<code>', '</code>'), 'type' => 'select', 'options' => mdjm_list_pages())), 'availability' => array('availability_settings' => array('id' => 'availability_settings', 'name' => '<h3>' . __('Availability Settings', 'mobile-dj-manager') . '</h3>', 'desc' => '', 'type' => 'header'), 'availability_status' => array('id' => 'availability_status', 'name' => __('Unavailable Statuses', 'mobile-dj-manager'), 'desc' => sprintf(__("CTRL (cmd on MAC) + Click to select %s status' that you want availability checker to report as unavailable", 'mobile-dj-manager'), mdjm_get_label_singular(true)), 'type' => 'multiple_select', 'options' => mdjm_all_event_status(), 'std' => mdjm_active_event_statuses()), 'availability_roles' => array('id' => 'availability_roles', 'name' => __('Employee Roles', 'mobile-dj-manager'), 'desc' => __('CTRL (cmd on MAC) + Click to select employee roles that need to be available', 'mobile-dj-manager'), 'type' => 'multiple_select', 'options' => mdjm_get_roles(), 'std' => array('dj')), 'avail_ajax' => array('id' => 'avail_ajax', 'name' => __('Use Ajax?', 'mobile-dj-manager'), 'desc' => __('Perform checks without page refresh', 'mobile-dj-manager'), 'type' => 'checkbox', 'std' => '1'), 'availability_check_pass_page' => array('id' => 'availability_check_pass_page', 'name' => __('Available Redirect Page', 'mobile-dj-manager'), 'desc' => __('Select a page to which users should be directed when an availability check is successful', 'mobile-dj-manager'), 'type' => 'select', 'options' => mdjm_list_pages(array('text' => __('NO REDIRECT - USE TEXT', 'mobile-dj-manager'))), 'std' => 'text'), 'availability_check_pass_text' => array('id' => 'availability_check_pass_text', 'name' => __('Available Text', 'mobile-dj-manager'), 'desc' => __('Text to be displayed when you are available - Only displayed if <code>NO REDIRECT - USE TEXT</code> is selected above, unless you are redirecting to an MDJM Contact Form. Valid shortcodes <code>{event_date}</code> &amp; <code>{event_date_short}</code>', 'mobile-dj-manager'), 'type' => 'rich_editor', 'std' => __('Good news, we are available on the date you entered. Please contact us now', 'mobile-dj-manager')), 'availability_check_fail_page' => array('id' => 'availability_check_fail_page', 'name' => __('Unavailable Redirect Page', 'mobile-dj-manager'), 'desc' => __('Select a page to which users should be directed when an availability check is not successful', 'mobile-dj-manager'), 'type' => 'select', 'options' => mdjm_list_pages(array('text' => __('NO REDIRECT - USE TEXT', 'mobile-dj-manager'))), 'std' => 'text'), 'availability_check_fail_text' => array('id' => 'availability_check_fail_text', 'name' => __('Unavailable Text', 'mobile-dj-manager'), 'desc' => __('Text to be displayed when you are not available - Only displayed if <code>NO REDIRECT - USE TEXT</code> is selected above. Valid shortcodes <code>{event_date}</code> &amp; <code>{event_date_short}</code>', 'mobile-dj-manager'), 'type' => 'rich_editor', 'std' => __('Unfortunately we do not appear to be available on the date you selected. Why not try another date below...', 'mobile-dj-manager'))))), 'payments' => apply_filters('mdjm_settings_payments', array('main' => array('gateway_settings' => array('id' => 'gateway_settings', 'name' => '<h3>' . __('Gateway Settings', 'mobile-dj-manager') . '</h3>', 'desc' => '', 'type' => 'header'), 'gateways' => array('id' => 'gateways', 'name' => __('Payment Gateways', 'mobile-dj-manager'), 'desc' => __('Choose the payment gateways you want to enable.', 'mobile-dj-manager'), 'type' => 'gateways', 'options' => mdjm_get_payment_gateways()), 'payment_gateway' => array('id' => 'payment_gateway', 'name' => __('Default Gateway', 'mobile-dj-manager'), 'desc' => __('This gateway will be loaded automatically with the payments page.', 'mobile-dj-manager'), 'type' => 'gateway_select', 'options' => mdjm_get_payment_gateways()), 'currency_settings' => array('id' => 'currency_settings', 'name' => '<h3>' . __('Currency Settings', 'mobile-dj-manager') . '</h3>', 'desc' => '', 'type' => 'header'), 'currency' => array('id' => 'currency', 'name' => __('Currency', 'mobile-dj-manager'), 'desc' => '', 'type' => 'select', 'options' => mdjm_get_currencies()), 'currency_format' => array('id' => 'currency_format', 'name' => __('Currency Position', 'mobile-dj-manager'), 'desc' => __('Where to display the currency symbol.', 'mobile-dj-manager'), 'type' => 'select', 'options' => array('before' => __('before price', 'mobile-dj-manager'), 'after' => __('after price', 'mobile-dj-manager'), 'before with space' => __('before price with space', 'mobile-dj-manager'), 'after with space' => __('after price with space', 'mobile-dj-manager'))), 'decimal' => array('id' => 'decimal', 'name' => __('Decimal Separator', 'mobile-dj-manager'), 'desc' => __('The symbol to separate decimal points. (Usually . or ,)', 'mobile-dj-manager'), 'type' => 'text', 'size' => 'small', 'std' => '.'), 'thousands_seperator' => array('id' => 'thousands_seperator', 'name' => __('Thousands Separator', 'mobile-dj-manager'), 'desc' => '', 'type' => 'text', 'size' => 'small', 'std' => ','), 'deposit_settings' => array('id' => 'deposit_settings', 'name' => '<h3>' . sprintf(__('%s Settings', 'mobile-dj-manager'), mdjm_get_deposit_label()) . '</h3>', 'desc' => '', 'type' => 'header'), 'deposit_type' => array('id' => 'deposit_type', 'name' => mdjm_get_deposit_label() . "'s " . __('are', 'mobile-dj-manager'), 'desc' => sprintf(__('If you require ' . mdjm_get_deposit_label() . ' payments for your %s, how should they be calculated?', 'mobile-dj-manager'), mdjm_get_label_plural(true)), 'type' => 'select', 'options' => array('0' => 'Not required', 'percentage' => '% ' . sprintf(__('of %s value', 'mobile-dj-manager'), mdjm_get_label_singular(true)), 'fixed' => __('Fixed price', 'mobile-dj-manager'))), 'deposit_amount' => array('id' => 'deposit_amount', 'name' => mdjm_get_deposit_label() . ' ' . __('Amount', 'mobile-dj-manager'), 'desc' => sprintf(__("If your %s's are a percentage enter the value (i.e 20). For fixed prices, enter the amount in the format %s", 'mobile-dj-manager'), mdjm_get_deposit_label(), mdjm_format_amount('0')), 'type' => 'text', 'size' => 'small'), 'payment_form_settings' => array('id' => 'payment_form_settings', 'name' => '<h3>' . __('Payment Form Settings', 'mobile-dj-manager') . '</h3>', 'desc' => '', 'type' => 'header'), 'payment_label' => array('id' => 'payment_label', 'name' => __('Payment Label', 'mobile-dj-manager'), 'desc' => __('Display name of the label shown to clients to select the payment they wish to make.', 'mobile-dj-manager'), 'type' => 'text', 'size' => 'regular', 'std' => __('Make a Payment Towards', 'mobile-dj-manager')), 'other_amount_label' => array('id' => 'other_amount_label', 'name' => __('Label for Other Amount', 'mobile-dj-manager'), 'desc' => __('Enter your desired label for the other amount radio button.', 'mobile-dj-manager'), 'type' => 'text', 'size' => 'regular', 'std' => __('Other Amount', 'mobile-dj-manager')), 'payment_button' => array('id' => 'payment_button', 'name' => __('Payment Button Text', 'mobile-dj-manager'), 'desc' => __('The text you want to appear on the Payment Form submit button.', 'mobile-dj-manager'), 'type' => 'text', 'size' => 'regular', 'std' => __('Pay Now', 'mobile-dj-manager')), 'other_amount_default' => array('id' => 'other_amount_default', 'name' => __('Default', 'mobile-dj-manager') . ' ' . mdjm_get_option('other_amount_label', __('Other Amount', 'mobile-dj-manager')), 'desc' => sprintf(__('Enter the default amount to be used in the %s field.', 'mobile-dj-manager'), mdjm_get_option('other_amount_label', __('Other Amount', 'mobile-dj-manager'))), 'type' => 'text', 'size' => 'small', 'std' => '50.00'), 'tax_settings' => array('id' => 'tax_settings', 'name' => '<h3>' . __('Tax Settings', 'mobile-dj-manager') . '</h3>', 'desc' => '', 'type' => 'header'), 'enable_tax' => array('id' => 'enable_tax', 'name' => __('Enable Taxes?', 'mobile-dj-manager'), 'desc' => __('Enable if you need to add taxes to online payments', 'mobile-dj-manager'), 'type' => 'checkbox'), 'tax_type' => array('id' => 'tax_type', 'name' => __('Apply Tax As', 'mobile-dj-manager'), 'desc' => __('How do you apply tax?', 'mobile-dj-manager'), 'type' => 'select', 'options' => array('percentage' => __('% of total', 'mobile-dj-manager'), 'fixed' => __('Fixed rate', 'mobile-dj-manager')), 'std' => 'percentage'), 'tax_rate' => array('id' => 'tax_rate', 'name' => __('Tax Rate', 'mobile-dj-manager'), 'desc' => __('If you apply tax based on a fixed percentage (i.e. VAT) enter the value (i.e 20). For fixed rates, enter the amount in the format 0.00. Taxes will only be applied during checkout.', 'mobile-dj-manager'), 'type' => 'text', 'size' => 'small', 'std' => '20'), 'payment_types' => array('id' => 'payment_types', 'name' => '<h3>' . __('Payment Types', 'mobile-dj-manager') . '</h3>', 'desc' => '', 'type' => 'header'), 'payment_sources' => array('id' => 'payment_sources', 'name' => __('Payment Types', 'mobile-dj-manager'), 'desc' => __('Enter methods of payment.', 'mobile-dj-manager'), 'type' => 'textarea', 'std' => __('BACS', 'mobile-dj-manager') . "\r\n" . __('Cash', 'mobile-dj-manager') . "\r\n" . __('Cheque', 'mobile-dj-manager') . "\r\n" . __('PayPal', 'mobile-dj-manager') . "\r\n" . __('PayFast', 'mobile-dj-manager') . "\r\n" . __('Stripe', 'mobile-dj-manager') . "\r\n" . __('Other', 'mobile-dj-manager')), 'default_type' => array('id' => 'default_type', 'name' => __('Default Payment Type', 'mobile-dj-manager'), 'desc' => sprintf(__('What is the default method of payment? i.e. if you select an %s %s as paid how should we log it?', 'mobile-dj-manager'), mdjm_get_label_singular(true), mdjm_get_balance_label()), 'type' => 'select', 'options' => mdjm_list_txn_sources())), 'employee_payments' => array('employee_payment_settings' => array('id' => 'employee_payment_settings', 'name' => '<h3>' . __('Employee Payment Settings', 'mobile-dj-manager') . '</h3>', 'desc' => '', 'type' => 'header'), 'enable_employee_payments' => array('id' => 'enable_employee_payments', 'name' => __('Enable Employee Payments', 'mobile-dj-manager'), 'desc' => sprintf(__('Enable this option to be able to record employee wage payments for %s.', 'mobile-dj-manager'), mdjm_get_label_plural()), 'type' => 'checkbox'), 'employee_pay_status' => array('id' => 'employee_pay_status', 'name' => __('Payment Statuses', 'mobile-dj-manager'), 'desc' => sprintf(__("CTRL (cmd on MAC) + Click to select %s status' that an event must be at before employee payments can be made.", 'mobile-dj-manager'), mdjm_get_label_singular(true)), 'type' => 'multiple_select', 'options' => mdjm_all_event_status(), 'std' => array('mdjm-completed')), 'employee_auto_pay_complete' => array('id' => 'employee_auto_pay_complete', 'name' => sprintf(__('Pay when %s Completes', 'mobile-dj-manager'), mdjm_get_label_singular()), 'desc' => sprintf(__('Enable this option to automatically pay employees once an %s completes.', 'mobile-dj-manager'), mdjm_get_label_singular()), 'type' => 'checkbox')), 'receipts' => array('payment_conf_templates' => array('id' => 'payment_conf_templates', 'name' => '<h3>' . __('Payment Receipts', 'mobile-dj-manager') . '</h3>', 'desc' => '', 'type' => 'header'), 'payment_cfm_template' => array('id' => 'payment_cfm_template', 'name' => __('Gateway Payment Receipt', 'mobile-dj-manager'), 'desc' => __('Select an email template to be sent as a receipt to clients when a gateway payment is received.', 'mobile-dj-manager'), 'type' => 'select', 'options' => mdjm_list_templates('email_template', true)), 'manual_payment_cfm_template' => array('id' => 'manual_payment_cfm_template', 'name' => __('Manual Payment Receipt', 'mobile-dj-manager'), 'desc' => __('Select an email template to be sent as a receipt to clients when you manually log a payment.', 'mobile-dj-manager'), 'type' => 'select', 'options' => mdjm_list_templates('email_template', true))))), 'extensions' => apply_filters('mdjm_settings_extensions', array()), 'licenses' => apply_filters('mdjm_settings_licenses', array()));
    return apply_filters('mdjm_registered_settings', $mdjm_settings);
}