/** * render profile button associate with user login * @since 1.0 * @author Dakachi */ function fre_profile_button() { global $user_ID; /* user have not logged in */ if (!$user_ID) { ?> <a href="<?php echo et_get_page_link('auth'); ?> " class="btn btn-sumary btn-post-profile"> <i class="fa fa-plus-circle"></i><?php _e("Create a Profile", 'template-backend'); ?> </a> <?php return; } // current user is a freelancer if (fre_share_role() || ae_user_role() == FREELANCER) { ?> <a href="<?php echo et_get_page_link(array('page_type' => 'profile', 'post_title' => __("Profile", 'template-backend'))); ?> " class="btn btn-sumary btn-post-profile"> <i class="fa fa-plus-circle"></i><?php _e("Review your Profile", 'template-backend'); ?> </a> <?php return ''; } // current user is an employer ?> <a href="<?php echo get_post_type_archive_link(PROFILE); ?> " class="btn btn-sumary btn-post-profile"> <i class="fa fa-plus-circle"></i><?php _e("Find a Freelancer", 'template-backend'); ?> </a> <?php }
/** * add query var */ function restrict_pages() { global $current_user; //if user is login and access to page auth if (is_user_logged_in() && is_page_template('page-auth.php')) { wp_redirect(home_url()); exit; } //if user is not login and access to page profile if (!is_user_logged_in() && is_page_template('page-profile.php')) { $re_url = et_get_page_link('auth') . '?ae_redirect_url=' . urlencode(et_get_page_link('profile')) . '#signin'; wp_redirect($re_url); exit; } // prevent user enter single profile if (is_singular(PROFILE)) { global $post; wp_redirect(get_author_posts_url($post->post_author)); exit; } // if( is_singular(PROJECT) ){ // global $post, $user_ID; // if( $post->post_status != 'publish' ){ // if( $post->post_author != $user_ID && !current_user_can( 'manage_options ' ) ){ // wp_redirect( home_url() ); // exit; // } // } // } // prevent freelancer post project if (is_page_template('page-submit-project.php')) { if (!fre_share_role() && ae_user_role() == FREELANCER) { wp_redirect(home_url()); exit; } } /** * prevent user try to view a bid details # when user enter a link to bid redirect to home url */ if (is_singular(BID)) { wp_redirect(home_url()); exit; } }
/** * ajax callback sync post details * - update * - insert * - delete */ function post_sync() { $request = $_REQUEST; global $ae_post_factory, $user_ID; if (!AE_Users::is_activate($user_ID)) { wp_send_json(array('success' => false, 'msg' => __("Your account is pending. You have to activate your account to continue this step.", 'projects-backend'))); } if (check_existing_post_name($request['post_title']) && $request['method'] != 'update') { wp_send_json(array('success' => false, 'msg' => __("Current title name already exists", 'projects-backend'))); } // prevent freelancer submit project if (!fre_share_role() && ae_user_role() == FREELANCER) { wp_send_json(array('success' => false, 'msg' => __("You need an employer account to post a project.", 'projects-backend'))); } // unset package data when edit place if user can edit others post if (isset($request['ID']) && !isset($request['renew'])) { unset($request['et_payment_package']); } if (isset($request['archive'])) { $request['post_status'] = 'archive'; } if (isset($request['publish'])) { $request['post_status'] = 'publish'; } if (isset($request['delete'])) { $request['post_status'] = 'trash'; } if (isset($request['disputed'])) { $request['post_status'] = 'disputed'; } if (isset($request['close_disput'])) { $request['post_status'] = get_post_meta($request['ID'], 'post_status_before_disput', true); } if (isset($request['project_type'])) { unset($request['project_type']); } $place = $ae_post_factory->get($this->post_type); // sync place $result = $place->sync($request); if (!is_wp_error($result)) { // update place carousels if (isset($request['et_carousels'])) { // loop request carousel id foreach ($request['et_carousels'] as $key => $value) { $att = get_post($value); // just admin and the owner can add carousel if (current_user_can('manage_options') || $att->post_author == $user_ID) { wp_update_post(array('ID' => $value, 'post_parent' => $result->ID)); } } } /** * check payment package and check free or use package to send redirect link */ if (isset($request['et_payment_package'])) { // check seller use package or not $check = AE_Package::package_or_free($request['et_payment_package'], $result); // check use package or free to return url if ($check['success']) { $result->redirect_url = $check['url']; } $result->response = $check; // check seller have reached limit free plan $check = AE_Package::limit_free_plan($request['et_payment_package']); if ($check['success']) { // false user have reached maximum free plan $response['success'] = false; $response['msg'] = $check['msg']; // send response to client wp_send_json($response); } } // check payment package /** * check disable plan and submit place to view details */ if ($this->disable_plan && $request['method'] == 'create') { if (ICL_LANGUAGE_CODE != 'en') { $redirect = apply_filters('wpml_permalink', $result->permalink, ICL_LANGUAGE_CODE); } else { $redirect = $result->permalink; } // disable plan, free to post place $response = array('success' => true, 'data' => array('ID' => $result->ID, 'redirect_url' => $redirect), 'msg' => __("Submit place successfull.", 'projects-backend')); // send response wp_send_json($response); } // send json data to client wp_send_json(array('success' => true, 'data' => $result, 'msg' => __("Update project successful!", 'projects-backend'))); } else { // update false wp_send_json(array('success' => false, 'data' => $result, 'msg' => $result->get_error_message())); } }
break; default: # code... break; } echo '</span>'; } ?> </li> </ul> </div> <div class="col-lg-4 col-md-12 col-sm-12"> <div class="info-project-item-right"> <?php if (fre_share_role() || ae_user_role() == 'employer' || ae_user_role() == 'administrator') { ?> <span class="link-clone"> <a href="<?php echo et_get_page_link(array('page_type' => 'submit-project', 'post_title' => __("Submit project", ET_DOMAIN))); ?> " title=""> <i class="fa fa-plus-circle"></i><?php _e('Create a Project like this', ET_DOMAIN); ?> </a> </span> <?php } ?> <ul class="list-share-social addthis_toolbox addthis_default_style" >
global $user_ID; $author_id = get_query_var('author'); if (is_page_template('page-profile.php')) { $author_id = $user_ID; } // filter order post by status add_filter('posts_orderby', 'fre_order_by_project_status'); query_posts(array('is_profile' => true, 'post_status' => array('publish', 'close', 'complete'), 'post_type' => PROJECT, 'author' => $author_id)); // remove filter order post by status $bid_posts = $wp_query->found_posts; ?> <div class="btn-tabs-wrapper"> <div class="work-history-heading"> <a href="#" class="work-history-title" > <?php if (fre_share_role()) { printf(__('Posted Projects (%s)', ET_DOMAIN), fre_count_user_posts($author_id, PROJECT)); } else { printf(__('Works History (%s)', ET_DOMAIN), fre_count_user_posts($author_id, PROJECT)); } ?> </a> <div class="project-status-filter" > <select class="status-filter " name="post_status" data-chosen-width="100%" data-chosen-disable-search="1" data-placeholder="<?php _e("Select a status", ET_DOMAIN); ?> "> <option value=""><?php _e("Select a status", ET_DOMAIN); ?>
function fre_check_before_insert_bid($args) { global $user_ID; /** * add filter to filter bid required field * @param Array * @since 1.4 * @author Dakachi */ $bid_required_field = apply_filters('fre_bid_required_field', array('bid_budget', 'bid_time', 'bid_content')); if (is_wp_error($args)) { return $args; } if (in_array('bid_content', $args) && !isset($args['bid_content'])) { return new WP_Error('empty_content', __('Please enter your bid message.', ET_DOMAIN)); } $args['post_content'] = $args['bid_content']; $project_id = isset($args['post_parent']) ? $args['post_parent'] : ''; $args['post_status'] = 'publish'; // $request = $_POST; /* * validate data */ if (in_array('bid_budget', $bid_required_field) && (!isset($args['bid_budget']) || empty($args['bid_budget']))) { return new WP_Error('empty_bid', __('You have to set the bid budget.', ET_DOMAIN)); } if (in_array('bid_time', $bid_required_field) && (!isset($args['bid_time']) || empty($args['bid_time']))) { return new WP_Error('empty_time', __('You have to set the time to finish project.', ET_DOMAIN)); } if (in_array('bid_budget', $bid_required_field) && $args['bid_budget'] <= 0) { return new WP_Error('budget_less_than_zero', __("Your budget have to greater than zero!", ET_DOMAIN)); } if (in_array('bid_budget', $bid_required_field) && !is_numeric($args['bid_budget']) || in_array('bid_time', $bid_required_field) && !is_numeric($args['bid_time'])) { return new WP_Error('invalid_input', __('Please enter a valid number in budget or bid time', ET_DOMAIN)); } if (!$user_ID) { return new WP_Error('no_permission', __('Please login to bid a project', ET_DOMAIN)); } if (get_post_status($project_id) != 'publish') { return new WP_Error('invalid_input', __('This project is not publish.', ET_DOMAIN)); } // $accepted = get_post_meta($project_id,'accepted', true); // if($accepted || 'complete' == get_post_status($project_id) ) // return new WP_Error (200 ,__('The project has been accepted', ET_DOMAIN)); if (fre_has_bid($project_id)) { return new WP_Error(200, __('You have bid on this project', ET_DOMAIN)); } $post_author = (int) get_post_field('post_author', $project_id, 'display'); if ($user_ID == $post_author) { return new WP_Error(200, __('You can\'t bid on your project', ET_DOMAIN)); } // check role to bid project $role = ae_user_role(); if (!fre_share_role() && $role != FREELANCER) { return new WP_Error(200, __('You have to be a freelancer to bid a project.', ET_DOMAIN)); } /* * check profile has set? */ $profile_id = get_user_meta($user_ID, 'user_profile_id', true); $profile = get_post($profile_id); // user have to complete profile to bid a project if (!$profile || !is_numeric($profile_id)) { return new WP_Error(200, __('You must complete your profile to bid on a project.', ET_DOMAIN)); } /* when using escrow, freelancer must setup an paypal account */ $stripe_api = ae_get_option('escrow_stripe_api'); if (ae_get_option('use_escrow') && (!$stripe_api || !$stripe_api['use_stripe_escrow'])) { $paypal_account = get_user_meta($user_ID, 'paypal', true); if (!$paypal_account) { return new WP_Error('dont_have_paypal', __('You must setup your paypal account in profile to receive money.', ET_DOMAIN)); } } return $args; }
<?php } ?> <!-- Author overview --> <div class="content-project-wrapper"> <h2 class="title-content"> <?php _e('Overview:', ET_DOMAIN); ?> </h2> <?php echo $convert->post_content; if (function_exists('et_render_custom_field')) { et_render_custom_field($convert); } ?> </div> <div class="history-cmt-wrapper"> <?php if (fre_share_role() || $user_role == FREELANCER) { get_template_part('mobile/template/bid', 'history'); } if (fre_share_role() || $user_role != FREELANCER) { get_template_part('mobile/template/work', 'history'); } ?> </div> </section> <?php et_get_mobile_footer();
<?php if (current_user_can('manage_options')) { get_template_part('template/admin', 'project-control'); } elseif (!$user_ID && $project_status == 'publish') { ?> <a href="#" class="btn btn-apply-project-item btn-login-trigger" ><?php _e('Bid', 'projects-page'); ?> </a> <a href="#" class="popup-login" style="display:none;">Open Login Popup</a> <?php } else { $role = ae_user_role(); switch ($project_status) { case 'publish': if ((fre_share_role() || $role == FREELANCER) && $user_ID != $project->post_author) { $has_bid = fre_has_bid(get_the_ID()); if ($has_bid) { ?> <a rel="<?php echo $project->ID; ?> " href="#" id="<?php echo $has_bid; ?> " title="<?php _e('Cancel this bidding', 'projects-page'); ?> " class="btn btn-apply-project-item btn-del-project-modal modal_bid_update">
?> </p> <?php if (function_exists('et_the_field')) { et_render_custom_meta($convert); et_render_custom_taxonomy($convert); } ?> </div> <!--// overview --> <?php } if (fre_share_role() || ae_user_role($author_id) != FREELANCER) { get_template_part('template/work', 'history'); } if (fre_share_role() || ae_user_role($author_id) == FREELANCER) { get_template_part('template/bid', 'history'); $bid_posts = $wp_query->found_posts; ?> <div class="portfolio-container"> <?php query_posts(array('post_status' => 'publish', 'post_type' => PORTFOLIO, 'author' => $author_id)); if (have_posts()) { get_template_part('template/portfolios', 'filter'); // list portfolio get_template_part('list', 'portfolios'); } else { } //wp_reset_postdata(); wp_reset_query(); ?>