function after_register($result) { $user = new WP_User($result); // add key confirm for user if (ae_get_option('user_confirm')) { update_user_meta($result, 'register_status', 'unconfirm'); update_user_meta($result, 'key_confirm', md5($user->user_email)); } if (ae_user_role($user->ID) == FREELANCER) { update_user_meta($result, 'interview_status', 'unconfirm'); // update_user_meta($result, 'key_confirm', md5($user->user_email)); } /* === Send Email Register === */ $this->mail->register_mail($result); }
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" >
<?php /** * Template part for freelancer bid history # this template is loaded in template/bid-history.php * @since 1.0 * @package FreelanceEngine */ global $wp_query, $ae_post_factory; $author_id = get_query_var('author'); if (ae_user_role($author_id) == FREELANCER) { $post_object = $ae_post_factory->get(BID); } else { $post_object = $ae_post_factory->get(PROJECT); } ?> <h4 class="title-big-info-project-items"><?php printf(__("Work history and Reviews (%d)", ET_DOMAIN), $wp_query->found_posts); ?> </h4> <ul class="list-history-profile"> <?php $postdata = array(); while (have_posts()) { the_post(); $convert = $post_object->convert($post, 'thumbnail'); $postdata[] = $convert; get_template_part('template/bid-history', 'item'); } ?> </ul>
<?php global $wp_query, $ae_post_factory, $post, $current_user; //convert current user $ae_users = AE_Users::get_instance(); $user_data = $ae_users->convert($current_user->data); $user_role = ae_user_role($current_user->ID); //convert current profile $post_object = $ae_post_factory->get(PROFILE); $posts = get_posts(array('post_type' => PROFILE, 'author' => $current_user->ID, 'showposts' => 1, 'post_status' => 'publish')); if (!empty($posts) && isset($posts[0])) { $profile = $post_object->convert($posts[0]); } else { $profile = array('id' => 0, 'ID' => 0); } //get profile skills $current_skills = get_the_terms($profile, 'skill'); //define variables: $skills = isset($profile->tax_input['skill']) ? $profile->tax_input['skill'] : array(); $job_title = isset($profile->et_professional_title) ? $profile->et_professional_title : ''; $hour_rate = isset($profile->hour_rate) ? $profile->hour_rate : ''; $currency = isset($profile->currency) ? $profile->currency : ''; $experience = isset($profile->et_experience) ? $profile->et_experience : ''; $hour_rate = isset($profile->hour_rate) ? $profile->hour_rate : ''; $about = isset($profile->post_content) ? $profile->post_content : ''; $display_name = $user_data->display_name; $user_available = isset($user_data->user_available) && $user_data->user_available == "on" ? 'checked' : ''; $country = isset($profile->tax_input['country'][0]) ? $profile->tax_input['country'][0]->name : ''; $category = isset($profile->tax_input['project_category'][0]) ? $profile->tax_input['project_category'][0]->slug : ''; et_get_mobile_header(); ?>
/** * The template for displaying a bid info item, * this template is used to display bid info in a project details, * and called at template/list-bids.php * @since 1.0 * @author Dakachi */ global $wp_query, $ae_post_factory, $post, $user_ID; $project_object = $ae_post_factory->get(PROJECT); $project = $project_object->current_post; $post_object = $ae_post_factory->get(BID); $convert = $post_object->convert($post); $bid_accept = get_post_meta($project->ID, 'accepted', true); $project_status = $project->post_status; $role = ae_user_role(); ?> <div class="row list-bidding"> <div class="info-bidding fade-out fade-in bid-item bid-<?php the_ID(); ?> bid-item-<?php echo $project_status; ?> "> <div class="row">
function activite_user() { if (ae_user_role() == 'administrator') { $confirmed_user_id = $_POST['user_id']; $result = update_user_meta($confirmed_user_id, 'interview_status', 'confirmed'); if ($result) { wp_send_json(array('status' => true, 'msg' => 'success')); } } else { wp_send_json(array('status' => false, 'msg' => 'deny')); } wp_die(); }
/** * */ function register_mail($user_id) { $user = new WP_User($user_id); $user_email = $user->user_email; if (ae_user_role($user_id) == FREELANCER) { $subject = sprintf(__("Congratulations! You have successfully registered to %s.", 'aecore-class-ae-mailing-backend'), get_option('blogname')); if (ae_get_option('user_confirm')) { $message = ae_get_option('confirm_mail_freelancer_template_' . ICL_LANGUAGE_CODE); // $message = ae_get_option('register_mail_freelancer_template'); } else { $message = ae_get_option('register_mail_freelancer_template_' . ICL_LANGUAGE_CODE); } } else { $subject = sprintf(__("Congratulations! You have successfully registered to %s.", 'aecore-class-ae-mailing-backend'), get_option('blogname')); if (ae_get_option('user_confirm')) { $message = ae_get_option('confirm_mail_template_' . ICL_LANGUAGE_CODE); } else { $message = ae_get_option('register_mail_template_' . ICL_LANGUAGE_CODE); } } // if (ae_get_option('user_confirm')) { // //// $message = ae_get_option('confirm_mail_template'); // $message = ae_user_role($user_id) . '1'; // // } else { // $message = ae_user_role($user_id) . '2'; // // //$message = ae_get_option('register_mail_template'); // // } $this->wp_mail($user_email, $subject, $message, array('user_id' => $user_id)); }
/** * 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())); } }
public static function trace_view($atts, $content = null) { $user_role = ae_user_role(); if ($user_role == 'freelancer') { ?> <div class="container"> <?php $current_user = wp_get_current_user(); $list = get_list_freelancer_bids($current_user->ID); if ($list != false) { foreach ($list as $item) { include 'template/trace-freelancer-item.php'; } } ?> </div> <?php } elseif ($user_role == 'employer') { ?> <div class="container"> <?php $current_user = wp_get_current_user(); $list = get_list_employer_projects($current_user->ID); if ($list != false) { foreach ($list as $item) { include 'template/trace-employer-item.php'; } } ?> </div> <?php } else { ?> <div class="container"> <?php echo 'user role: '; var_dump($user_role); ?> </div> <?php } }
/** * render project button associate with user login * @since 1.0 * @author Dakachi */ function fre_project_button($echo = false) { global $user_ID; /* user have not logged in */ if (!$user_ID) { ?> <a href="<?php echo et_get_page_link('submit-project'); ?> " class="btn btn-sumary btn-post-project"> <i class="fa fa-plus-circle"></i><?php _e("Post a Project", 'template-backend'); ?> </a> <?php return; } // current user is a freelancer if (ae_user_role() != FREELANCER) { ?> <a href="<?php echo et_get_page_link(array('page_type' => 'submit-project', 'post_title' => __("Post a Project", 'template-backend'))); ?> " class="btn btn-sumary btn-post-project"> <i class="fa fa-plus-circle"></i><?php _e("Post a Project", 'template-backend'); ?> </a> <?php return ''; } // current user is an employer ?> <a href="<?php echo get_post_type_archive_link(PROJECT); ?> " class="btn btn-sumary btn-post-project"><i class="fa fa-plus-circle"></i> <?php _e("Find a Project", 'template-backend'); ?> </a> <?php }
function freelancer_review_action() { global $user_ID; $args = $_POST; $project_id = $args['project_id']; $status = get_post_status($project_id); $bid_id_accepted = get_post_meta($project_id, 'accepted', true); $author_bid = (int) get_post_field('post_author', $bid_id_accepted); $freelancer_id = get_post_field('post_author', $bid_id_accepted); /* * validate data */ if (!isset($args['score']) || empty($args['score'])) { $result = array('succes' => false, 'msg' => __('You have to rate this project.', 'review-backend')); wp_send_json($result); } if (!isset($args['comment_content']) || empty($args['comment_content'])) { $result = array('succes' => false, 'msg' => __('Please post a review for this freelancer.', 'review-backend')); wp_send_json($result); } /* * check permission */ if ($user_ID !== $author_bid || !$user_ID) { wp_send_json(array('succes' => false, 'msg' => __('You don\'t have permission to review.', 'review-backend'))); } /* * check status of project */ if ($status !== 'complete') { wp_send_json(array('succes' => false, 'msg' => __('You can\'t not review on this project.', 'review-backend'))); } /** * check user reviewed project owner or not * @author Dan */ $role = ae_user_role($user_ID); $type = 'em_review'; if ($role == FREELANCER) { $type = 'fre_review'; } $comment = get_comments(array('status' => 'approve', 'type' => $type, 'post_id' => $project_id)); if (!empty($comment)) { wp_send_json(array('succes' => false, 'msg' => __('You have reviewed on this project.', 'review-backend'))); } // end check user review project owner // add review $args['comment_post_ID'] = $project_id; $args['comment_approved'] = 1; $this->comment_type = 'fre_review'; $review = Fre_Review::get_instance("fre_review"); $comment = $review->insert($args); if (!is_wp_error($comment)) { /** * fire action after freelancer review employer base on project * @param int $int project id * @param Array $args submit args (rating score, comment) * @since 1.2 * @author Dakachi */ do_action('fre_freelancer_review_employer', $project_id, $args); //update project, bid, bid author, project author after review $this->update_after_fre_review($project_id, $comment); wp_send_json(array('success' => true, 'msg' => __("Your review has been submitted.", 'review-backend'))); } else { // revert bid status wp_update_post(array('ID' => $bid_id_accepted, 'post_status' => 'publish')); wp_send_json(array('success' => false, 'msg' => $comment->get_error_message())); } }
?> </select> </div> <div class="clearfix"></div> </div> <?php // list portfolio if (have_posts()) { get_template_part('template/work', 'history-list'); } else { if (fre_share_role() || ae_user_role($author_id) != FREELANCER) { echo '<ul style="list-style:none;padding:0;"><li><span class="no-results">' . __('No work history.', 'work-history') . '</span></li></ul>'; } else { echo '<ul style="list-style:none;padding:0;"><li><span class="no-results">' . __('You have not worked on any project yet.', 'work-history') . '</span></li></ul>'; } } //wp_reset_postdata(); ?> </div> <?php wp_reset_query(); remove_filter('posts_orderby', 'fre_order_by_project_status');
} else { if ($project->post_status == 'complete' && ae_user_role() == 'freelancer' && $bid->ID == $project->accepted) { ?> <div class="col-md-6"> <a href="<?php echo add_query_arg('review', 1, $project->permalink); ?> " class="btn btn-apply-project-item"> <?php _e("Review job", 'user-bid-item'); ?> </a> </div> <?php } else { if ($project->post_status == 'close' && ae_user_role() == 'freelancer' && $bid->ID == $project->accepted) { ?> <div class="col-md-6"> <a href="<?php echo add_query_arg(array('workspace' => 1), get_permalink($project->ID)); ?> " class="btn btn-apply-project-item"> <?php _e("Open Workspace", 'user-bid-item'); ?> </a> </div> <?php } } }
<?php /** * Template Name: Interview page */ global $user_ID, $ae_post_factory; if (ae_user_role($user_ID) != FREELANCER || get_user_meta($user_ID, 'interview_status', true) == 'confirmed') { wp_redirect(home_url()); } $interview_object = $ae_post_factory->get('interview'); // user already login redirect to home page //var_dump($interview_object); $args = array('author' => $user_ID, 'post_type' => 'interview'); $interview_post = new WP_Query($args); $last_post = array_shift($interview_post->posts); $interview_meta = get_post_meta($last_post->ID); $post_id = $last_post->ID; get_header(); ?> <script type="text/javascript" src="/wp-content/themes/freelanceengine/js/moment.js"></script> <script type="text/javascript" src="/wp-content/themes/freelanceengine/js/bootstrap-datetimepicker.min.js"></script> <link rel="stylesheet" href="/wp-content/themes/freelanceengine/css/bootstrap-datetimepicker.min.css"/> <section class="blog-header-container"> <div class="container"> <!-- blog header -->
_e('Messages', 'header-mobile'); ?> </a> </li> <li> <a href="<?php echo et_get_page_link('profile'); ?> #tab_account" class="link-menu-nav"> <?php _e('Account Details', 'header-mobile'); ?> </a> </li> <?php if (ae_user_role($current_user->ID) == FREELANCER) { ?> <li> <a href="<?php echo et_get_page_link('profile'); ?> #tab_profile" class="link-menu-nav"> <?php _e('Profile Details', 'header-mobile'); ?> </a> </li> <?php } ?> <li>
</div> </div> <?php } if ($bid_accept && $project_status == 'close') { ?> <div class="info-company-wrapper"> <div class="row"> <div class="col-md-12"> <?php if (ae_user_role($user_ID) == FREELANCER || !is_user_logged_in()) { fre_display_user_info($project->post_author); } else { $bid_accepted = $project->accepted; $bid_accepted_author = get_post_field('post_author', $bid_accepted); $user = get_userdata($bid_accepted_author); $ae_users = AE_Users::get_instance(); $user_data = $ae_users->convert($user); $author_email_verified = ae_get_option('user_confirm') && get_user_meta($user_data->ID, 'register_status', true) == "unconfirm" ? false : true; $author_phone_verified = get_user_meta($user_data->ID, 'phone', true) != "" ? true : false; $rating = Fre_Review::freelancer_rating_score($user_data->ID); $profile_id = get_user_meta($user_data->ID, 'user_profile_id', true); $hourly_rate_price = get_post_meta($profile_id, 'hour_rate', true); $experience = get_post_meta($profile_id, 'et_experience', true); $country = get_user_meta($user_data->ID, 'location', true); $currency = ae_get_option('content_currency', array('align' => 'left', 'code' => 'USD', 'icon' => '$'));
$post_object = $ae_post_factory->get(PROFILE); $author_id = get_query_var('author'); $author_name = get_the_author_meta('display_name', $author_id); $author_available = get_user_meta($author_id, 'user_available', true); // get user profile id $profile_id = get_user_meta($author_id, 'user_profile_id', true); // get post profile $profile = get_post($profile_id); $convert = ''; if ($profile && !is_wp_error($profile)) { $convert = $post_object->convert($profile); } $user = get_userdata($author_id); $ae_users = AE_Users::get_instance(); $user_data = $ae_users->convert($user); $user_role = ae_user_role($author_id); // try to check and add profile up current user dont have profile if (!$convert && $user_role == FREELANCER) { $profile_post = get_posts(array('post_type' => PROFILE, 'author' => $author_id)); if (!empty($profile_post)) { $profile_post = $profile_post[0]; $convert = $post_object->convert($profile_post); $profile_id = $convert->ID; update_user_meta($author_id, 'user_profile_id', $profile_id); } else { $convert = $post_object->insert(array('post_status' => 'publish', 'post_author' => $author_id, 'post_title' => $author_name, 'post_content' => '')); $convert = $post_object->convert(get_post($convert->ID)); $profile_id = $convert->ID; } } // count author review number
<input type="email" class="form-control" id="paypal" name="paypal" value="<?php echo get_user_meta($user_ID, 'paypal', true); ?> " placeholder="<?php _e('Enter your paypal email', 'page-profile-mobile'); ?> "> </div> </div> <div class="clearfix"></div> <?php if (ae_user_role() != FREELANCER) { $arrCCDetails = $wpdb->get_results('SELECT * FROM wp_user_cc_info WHERE user_id = ' . $user_ID); $default_payment = get_user_meta($user_ID, 'default_payment_option', true); $default_cc = get_user_meta($user_ID, 'active_cc', true); $strPayPalSelected = ''; if ($default_payment == '1') { $strPayPalSelected = 'selected="selected"'; } ?> <div class="form-group"> <div class="form-group-control"> <label><?php _e('Primary Account', 'page-profile-mobile'); ?> </label> <select
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; }
function filter_link_redirect_register($result) { if (!is_wp_error($result)) { // $user_info = get_userdata($result->ID); $role = ae_user_role($result->ID); } else { $role = ''; } $redirect_url = $role == "employer" && AE_Users::is_activate($result->ID) ? et_get_page_link('submit-project') : et_get_page_link('profile'); $result->redirect_url = apply_filters('ae_after_register_link', $redirect_url); $result->do = "register"; return $result; }
/** * user confirm email * @param String $key * @since 1.0 * @author ThaiNT */ public static function confirm($key) { global $de_confirm; $user = get_users(array('meta_key' => 'key_confirm', 'meta_value' => $_GET['key'])); if (ae_user_role($user[0]->ID) == FREELANCER) { $subject = sprintf(__("Invitation to interview", 'aecore-class-ae-users-backend'), get_option('blogname')); if (ae_get_option('user_confirm')) { $message = ae_get_option('register_mail_freelancer_template'); $wtf = new AE_Mailing(); $wtf->send_freelancer_interview($user[0], $subject, $message); // wp_mail($user[0]->user_email, $subject, $message, array( // // 'user_id' => $user[0]->ID // // )); } else { } } // user had activated if (self::is_activate($user[0]->ID)) { return false; } $de_confirm = update_user_meta($user[0]->ID, 'register_status', ''); //sign on user after active if ($de_confirm) { wp_clear_auth_cookie(); wp_set_current_user($user[0]->ID); wp_set_auth_cookie($user[0]->ID); } $user_id = $user['0']->ID; /** * do action after user confirm * @param Int $user_id * @param string $key The activation key * @since 1.0 * @author Dakachi */ do_action('ae_after_confirm_user', $user_id, $key); return $user[0]->ID; }