/**
 * Remove comments and comments links from the front end for non-admins.
 *
 * @since	1.3
 * @param
 * @return
 */
function mdjm_no_comments()
{
    add_filter('get_comments_number', '__return_false');
    if (!current_user_can('edit_posts') && (mdjm_is_employee() || current_user_can('client'))) {
        add_filter('get_edit_post_link', '__return_false');
    }
}
Esempio n. 2
0
/**
 * Update the email content field with the selected template.
 *
 *
 * @since	1.3
 * @return	void
 */
function mdjm_user_events_dropdown_ajax()
{
    $result['event_list'] = '<option value="0">' . __('Select an Event', 'mobile-dj-manager') . '</option>';
    if (!empty($_POST['recipient'])) {
        $statuses = 'any';
        if (mdjm_is_employee($_POST['recipient'])) {
            if (mdjm_get_option('comms_show_active_events_only')) {
                $statuses = array('post_status' => mdjm_active_event_statuses());
            }
            $events = mdjm_get_employee_events($_POST['recipient'], $statuses);
        } else {
            if (mdjm_get_option('comms_show_active_events_only')) {
                $statuses = mdjm_active_event_statuses();
            }
            $events = mdjm_get_client_events($_POST['recipient'], $statuses);
        }
        if ($events) {
            foreach ($events as $event) {
                $result['event_list'] .= '<option value="' . $event->ID . '">';
                $result['event_list'] .= mdjm_get_event_date($event->ID) . ' ';
                $result['event_list'] .= __('from', 'mobile-dj-manager') . ' ';
                $result['event_list'] .= mdjm_get_event_start($event->ID) . ' ';
                $result['event_list'] .= '(' . mdjm_get_event_status($event->ID) . ')';
                $result['event_list'] .= '</option>';
            }
        }
    }
    $result['type'] = 'success';
    $result = json_encode($result);
    echo $result;
    die;
}
 /**
  * Determine if the currently logged in employee user has the relevant permissions to perform the action/view the page
  *
  * @since	1.3
  * @param	str		$action			Required: The action being performed
  * @param	int		$user_id		Optional: The ID of the user to query. Default current user
  * @return	bool	$granted		true|false
  */
 public function employee_can($action, $user_id = '')
 {
     if (empty($user_id)) {
         $user = wp_get_current_user();
     } else {
         $user = get_user_by('id', $user_id);
     }
     // MDJM Admins can do everything
     if (mdjm_is_admin($user->ID)) {
         return true;
     }
     // Non employees can't do anything
     if (!mdjm_is_employee($user->ID)) {
         return false;
     }
     switch ($action) {
         case 'view_clients_list':
             $allowed_roles = array('mdjm_client_edit', 'mdjm_client_edit_own');
             break;
         case 'list_all_clients':
             $allowed_roles = array('mdjm_client_edit');
             break;
         case 'manage_employees':
             $allowed_roles = array('mdjm_employee_edit');
             break;
         case 'read_events':
             $allowed_roles = array('mdjm_event_read', 'mdjm_event_read_own', 'mdjm_event_edit', 'mdjm_event_edit_own');
             break;
         case 'read_events_all':
             $allowed_roles = array('mdjm_event_read', 'mdjm_event_edit');
             break;
         case 'manage_events':
             $allowed_roles = array('mdjm_event_edit', 'mdjm_event_edit_own');
             break;
         case 'manage_all_events':
             $allowed_roles = array('mdjm_event_edit');
             break;
         case 'manage_packages':
             $allowed_roles = array('mdjm_package_edit', 'mdjm_package_edit_own');
             break;
         case 'manage_templates':
             $allowed_roles = array('mdjm_template_edit');
             break;
         case 'edit_txns':
             $allowed_roles = array('mdjm_txn_edit');
             break;
         case 'list_all_quotes':
             $allowed_roles = array('mdjm_quote_view');
             break;
         case 'list_own_quotes':
             $allowed_roles = array('mdjm_quote_view_own', 'mdjm_quote_view');
             break;
         case 'list_venues':
             $allowed_roles = array('mdjm_venue_read', 'mdjm_venue_edit');
             break;
         case 'add_venues':
             $allowed_roles = array('mdjm_venue_edit');
             break;
         case 'send_comms':
             $allowed_roles = array('mdjm_comms_send');
             break;
         case 'run_reports':
             $allowed_roles = array('view_event_reports');
         default:
             return false;
             break;
     }
     // switch
     if (empty($allowed_roles)) {
         return false;
     }
     foreach ($allowed_roles as $allowed) {
         if (user_can($user->ID, $allowed)) {
             return true;
         }
     }
     return false;
 }
Esempio n. 4
0
 /**
  * Retrieve an employee.
  *
  * @since	1.4
  * @return	void
  */
 public function get_employee()
 {
     global $wp_roles;
     if (!isset($this->request['employee_id']) && !isset($this->request['employee_email'])) {
         $this->missing_params('employee_id or employee_email');
     }
     do_action('mdjm_before_api_get_employee', $this);
     if (isset($this->request['employee_email']) && !isset($this->request['employee_id'])) {
         $field = 'email';
         $value = $this->request['employee_email'];
     } else {
         $field = 'id';
         $value = $this->request['employee_id'];
     }
     $employee = get_user_by($field, $value);
     if (!$employee) {
         $response['error'] = __('Employee could not be found.', 'mobile-dj-manager');
         $this->data = array_merge($response, $this->data);
         $this->output();
     }
     if (!mdjm_is_employee($employee->ID)) {
         $response['error'] = __('Error retrieving employee.', 'mobile-dj-manager');
         $this->data = array_merge($response, $this->data);
         $this->output();
     }
     $events = array();
     $roles = array();
     $mdjm_roles = MDJM()->roles->get_roles();
     $employee_events = mdjm_get_employee_events($employee->ID);
     $next_event = mdjm_get_employees_next_event($employee->ID);
     $i = 0;
     if ($employee_events) {
         foreach ($employee_events as $event) {
             $events[$event->ID] = get_post_meta($event->ID, '_mdjm_event_date', true);
             $i++;
         }
     }
     if (!empty($employee->roles)) {
         foreach ($employee->roles as $role) {
             if (array_key_exists($role, $mdjm_roles)) {
                 $roles[$role] = $mdjm_roles[$role];
             }
         }
     }
     $response['employee'] = array('ID' => $employee->ID, 'first_name' => $employee->first_name, 'last_name' => $employee->last_name, 'email' => $employee->user_email, 'roles' => $roles, 'last_login' => $employee->last_login, 'events' => $events, 'next_event' => array('id' => !empty($next_event) ? $next_event->ID : '', 'date' => !empty($next_event) ? get_post_meta($next_event->ID, '_mdjm_event_date', true) : ''), 'total_events' => $i);
     $this->data = array_merge($this->data, $response);
     do_action('mdjm_after_api_get_employee', $this);
     $this->output();
 }
/**
 * Mark an event employee as paid.
 *
 * @since	1.3
 * @param	int		$employee_id	User ID of employee
 * @param	int		$event_id		Event ID
 * @param	int		$txn_id			The transaction ID associated with this payment.
 * @return	bool	True if payment data updated for event employee, otherwise false.
 */
function mdjm_set_employee_paid($employee_id, $event_id, $txn_id = '')
{
    global $wp_roles;
    if (!mdjm_get_option('enable_employee_payments')) {
        return;
    }
    if (!mdjm_is_employee($employee_id)) {
        return false;
    }
    $return = false;
    if ($employee_id == mdjm_get_event_primary_employee($event_id)) {
        /**
         *
         * Hook fires before marking event employee as paid.
         *
         * @since	1.3
         * @param	int	$event_id	The event ID.
         */
        do_action("mdjm_pre_mdjm_set_employee_paid_{$employee_id}", $event_id);
        $role = 'dj';
        $payment = mdjm_get_txn_price($txn_id);
        $payment_data = get_post_meta($event_id, '_mdjm_event_dj_payment_status', true);
        $payment_data['payment_status'] = mdjm_get_employees_event_wage($event_id, $employee_id) > $payment ? 'part-paid' : 'paid';
        $payment_data['payment_date'] = current_time('mysql');
        $payment_data['txn_id'] = $txn_id;
        $payment_data['payment_amount'] = $payment;
        $payment_update = update_post_meta($event_id, '_mdjm_event_dj_payment_status', $payment_data);
        if (!empty($payment_update)) {
            MDJM()->debug->log_it(sprintf('%s successfully paid %s for Event %d', mdjm_get_employee_display_name($employee_id), mdjm_currency_filter(mdjm_get_txn_price($txn_id)), $event_id));
            $return = true;
        } else {
            MDJM()->debug->log_it(sprintf('Unable to pay %s for Event %d', mdjm_get_employee_display_name($employee_id), $event_id));
            $return = false;
        }
    } else {
        $payment_data = get_post_meta($event_id, '_mdjm_event_employees_data', true);
        if (!mdjm_employee_working_event($event_id, $employee_id)) {
            MDJM()->debug->log_it('Employee not working this event');
            return false;
        } else {
            /**
             *
             * Hook fires before marking event employee as paid.
             *
             * @since	1.3
             * @param	int	$event_id	The event ID.
             */
            do_action("mdjm_pre_mdjm_set_employee_paid_{$employee_id}", $event_id);
            $role = $payment_data[$employee_id]['role'];
            $payment = mdjm_get_txn_price($payment_data[$employee_id]['txn_id']);
            $payment_data[$employee_id]['payment_status'] = mdjm_get_employees_event_wage($event_id, $employee_id) > $payment ? 'part-paid' : 'paid';
            $payment_data[$employee_id]['payment_date'] = current_time('mysql');
            $payment_data[$employee_id]['payment_amount'] = $payment;
            $payment_update = mdjm_update_txn_meta($payment_data[$employee_id]['txn_id'], array('_mdjm_txn_status' => 'Completed'));
            if (!empty($payment_update)) {
                $payment_update = update_post_meta($event_id, '_mdjm_event_employees_data', $payment_data);
            }
            if (!empty($payment_update)) {
                MDJM()->debug->log_it(sprintf('%s successfully paid %s for Event %d', mdjm_get_employee_display_name($employee_id), mdjm_currency_filter(mdjm_get_txn_price($txn_id)), $event_id));
                $return = true;
            } else {
                MDJM()->debug->log_it(sprintf('Unable to pay %s for Event %d', mdjm_get_employee_display_name($employee_id), $event_id));
                $return = false;
            }
        }
    }
    if (!empty($return)) {
        $journal_args = array('user_id' => 1, 'event_id' => $event_id, 'comment_content' => sprintf(__('Employee %s paid %s for their role as %s', 'mobile-dj-manager'), mdjm_get_employee_display_name($employee_id), $payment, translate_user_role($wp_roles->roles[$role]['name'])));
        $journal_meta = array('mdjm_visibility' => !empty($meta['visibility']) ? $meta['visibility'] : '2');
        mdjm_add_journal($journal_args, $journal_meta);
        /**
         *
         * Hook fires after successfully marking event employee as paid.
         *
         * @since	1.3
         * @param	int	$event_id	The event ID.
         * @param	int	$txn_id		The transaction ID associated with the payment
         */
        do_action("mdjm_post_mdjm_set_employee_paid_{$employee_id}", $event_id, $txn_id);
    }
    return $return;
}
 /**
  * Retrieve an employees address.
  *
  * @since	1.4
  * @param	int			$employee_id	User ID of an employee.
  * @return	arr|false	$address		Array of address fields, or false.
  */
 public function get_employee_address($employee_id)
 {
     if (!mdjm_is_employee($employee_id)) {
         return false;
     }
     $employee_address = mdjm_get_employee_address($employee_id);
     if (is_array($employee_address)) {
         $employee_address = implode(',', array_filter($employee_address));
     }
     // To filter this use apply_filters( 'mdjm_get_employee_address', $address, $user_id );
     $address = !empty($employee_address) ? $employee_address : false;
     return $address;
 }