Esempio n. 1
0
 public function __construct($post_type = 'place')
 {
     $this->post_type = $post_type;
     $this->nonce = 'et_nonce_' . $post_type;
     /**
      * add places metabox
      */
     if (ae_user_can('edit_posts')) {
         add_action('add_meta_boxes', array($this, 'add_meta_boxes'));
         $this->add_action('save_post', 'save_meta_fields');
         if (basename($_SERVER['SCRIPT_FILENAME']) == 'post.php' && isset($_GET['action']) && $_GET['action'] == 'edit' || basename($_SERVER['SCRIPT_FILENAME']) == 'post-new.php' && (isset($_GET['post_type']) && $_GET['post_type'] == $this->post_type)) {
             add_action('admin_head', array($this, 'add_meta_script'));
             add_filter('wp_dropdown_users', array($this, 'wp_dropdown_users'));
         }
     }
 }
Esempio n. 2
0
 /**
  * delete post from site
  * @param int $ID post id want to delete
  * @param bool $force_delete defautl is false
  * @author Dakachi
  * @since version 1.0
  */
 public function delete($ID, $force_delete = false)
 {
     if (!ae_user_can('edit_others_posts')) {
         global $user_ID;
         $post = get_post($ID);
         if ($user_ID != $post->post_author) {
             return new WP_Error('permission_deny', __("You do not have permission to delete post.", 'aecore-class-ae-post-backend'));
         }
     }
     if ($force_delete) {
         $result = wp_delete_post($ID, true);
     } else {
         $result = wp_trash_post($ID);
     }
     if ($result) {
         do_action('et_delete_' . $this->post_type, $ID);
     }
     return $this->convert($result);
 }
Esempio n. 3
0
 /**
  * validate data
  */
 public function validate_data($data)
 {
     global $user_ID;
     if (is_wp_error($data)) {
         return $data;
     }
     $require_fields = apply_filters('fre_project_required_fields', array('et_budget', 'project_category'));
     if (!current_user_can('manage_options')) {
         if (isset($data['renew']) && !isset($data['et_payment_package']) && $this->disable_plan) {
             return new WP_Error('empty_package', __("Cannot create a place with an empty package.", 'projects-backend'));
         }
         if (!isset($data['post_content']) || $data['post_content'] == '') {
             return new WP_Error('ad_empty_content', __("You should enter short description for your place.", 'projects-backend'));
         }
         if (!isset($data['post_title']) || $data['post_title'] == '') {
             return new WP_Error('ad_empty_content', __("Your place should have a title.", 'projects-backend'));
         }
         if (!isset($data['project_category']) && in_array('project_category', $require_fields) && !is_admin()) {
             return new WP_Error('invalid_category', __("Your project should has a category!", 'projects-backend'));
         }
         if (!isset($data['et_budget']) && in_array('et_budget', $require_fields)) {
             return new WP_Error('invalid_budget', __("Your have to enter a budget for your requirement!", 'projects-backend'));
         }
     }
     if (in_array('et_budget', $require_fields) && $data['et_budget'] <= 0) {
         return new WP_Error('budget_less_than_zero', __("Your budget have to greater than zero!", 'projects-backend'));
     }
     /**
      * unsert featured et_featured param if user cannot  edit others posts
      */
     if (!ae_user_can('edit_others_posts')) {
         unset($data['et_featured']);
         // unset($data['post_status']);
         unset($data['et_expired_date']);
         unset($data['post_views']);
     }
     /**
      * check payment package is valid or not
      * set up featured if this package is featured
      */
     if (isset($data['et_payment_package'])) {
         /**
          * check package plan exist or not
          */
         global $ae_post_factory;
         $package = $ae_post_factory->get('pack');
         $plan = $package->get($data['et_payment_package']);
         if (!$plan) {
             return new WP_Error('invalid_plan', __("You have selected an invalid plan.", 'projects-backend'));
         }
         /**
          * if user can not edit others posts the et_featured will no be unset and check,
          * this situation should happen when user edit/add post in backend.
          * Force to set featured post
          */
         if (!isset($data['et_featured']) || !$data['et_featured']) {
             $data['et_featured'] = 0;
             if (isset($plan->et_featured) && $plan->et_featured) {
                 $data['et_featured'] = 1;
             }
         }
     }
     /**
      * check max category options, filter ad category
      */
     $max_cat = ae_get_option('max_cat', 3);
     if ($max_cat && !current_user_can('edit_others_posts')) {
         /**
          * check max category user can set for a place
          */
         $num_of_cat = count($data['project_category']);
         if ($max_cat < $num_of_cat) {
             for ($i = $max_cat; $i < $num_of_cat; $i++) {
                 unset($data['place_category'][$i]);
             }
         }
     }
     return apply_filters('fre_project_validate_data', $data);
 }
Esempio n. 4
0
 /**
 * update userdata and user metadata to an database
 # used wp_update_user , wp_authenticate, email_exists ,get_userdata
 # used update_user_meta
 # used AE_Users function convert
 * @param   array $user data
 # wordpress user fields data
 # user custom meta data
 * @return  user object after insert
 # wp_error object if user data invalid
 * @author Dakachi
 * @since 1.0
 */
 public function update($user_data)
 {
     global $current_user, $user_ID;
     /**
      * prevent user edit other user profile
      */
     if (!ae_user_can('edit_users') && $user_data['ID'] != $user_ID) {
         return new WP_Error('denied', __("Permission Denied!", ET_DOMAIN));
     }
     /**
      * check user password if have new password update
      */
     if (isset($user_data['new_password']) && !empty($user_data['new_password'])) {
         $validate = $this->check_password($user_data);
         if ($validate) {
             $user_data['user_pass'] = $user_data['new_password'];
         } else {
             return new WP_Error('wrong_pass', __("Old password does not match!", ET_DOMAIN));
         }
         if ($user_data['new_password'] !== $user_data['renew_password']) {
             return new WP_Error('pass_mismatch', __("Retype password is not equal.", ET_DOMAIN));
         }
     }
     if (isset($user_data['user_email'])) {
         $email = $user_data['user_email'];
         /**
          * current user also update his email
          */
         if ($user_ID == $user_data['ID'] && $email != $current_user->user_email) {
             if (email_exists($email)) {
                 return new WP_Error('email_existed', __("This email is already used. Please enter a new email.", ET_DOMAIN));
             }
         }
     }
     // don't allow upgrade from common user to admin
     if (!ae_user_can('edit_users')) {
         unset($user_data['role']);
         unset($user_data['user_login']);
     }
     /**
      * Set data for ban/unban user
      */
     if (isset($user_data['do']) && $user_data['do'] == 'ban') {
         $user_data['banned'] = true;
         $user_data[$this->meta_ban_expired] = date(get_option('date_format'), strtotime($user_data['expired']));
         $user_data[$this->meta_ban_note] = strip_tags($user_data['reason']);
     } elseif (isset($user_data['do']) && $user_data['do'] == 'unban') {
         $user_data['banned'] = false;
         $user_data[$this->meta_ban_expired] = "";
         $user_data[$this->meta_ban_note] = "";
     }
     /**
      * insert user
      */
     $result = wp_update_user($user_data);
     if ($result != false && !is_wp_error($result)) {
         /**
          * update user meta data
          */
         foreach ($this->meta_data as $key => $value) {
             // update if meta data exist
             if (isset($user_data[$value])) {
                 $usermeta = $this->ae_filter_usermeta($user_data[$value]);
                 update_user_meta($result, $value, $usermeta);
             }
         }
         // hook to add custom
         do_action('ae_update_user', $result, $user_data);
         /**
          * get user data and return a full profile
          */
         $result = $this->convert(get_userdata($result));
     }
     if (isset($user_data['do'])) {
         switch ($user_data['do']) {
             case 'profile':
                 $result->msg = __("Your profile has been saved successfully!", ET_DOMAIN);
                 break;
             case 'changepass':
                 $result->msg = __("Your password has been changed successfully!", ET_DOMAIN);
                 break;
             case 'ban':
                 $blogname = get_bloginfo('name');
                 $email = $this->get_ban_email_content($result);
                 $this->send_email($result->user_email, $email['subject'], $email['message']);
                 $result->msg = __("User has been banned!", ET_DOMAIN);
                 break;
             default:
                 $result->msg = __("User's data update successfully!", ET_DOMAIN);
                 break;
         }
     } else {
         $result->msg = __("User's data update successfully!", ET_DOMAIN);
     }
     return $result;
 }
 /**
 * update userdata and user metadata to an database
 # used wp_update_user , wp_authenticate, email_exists ,get_userdata
 # used update_user_meta
 # used AE_Users function convert
 * @param   array $user data
 # wordpress user fields data
 # user custom meta data
 * @return  user object after insert
 # wp_error object if user data invalid
 * @author Dakachi
 * @since 1.0
 */
 public function update($user_data)
 {
     global $current_user, $user_ID;
     /**
      * prevent user edit other user profile
      */
     if (!ae_user_can('edit_users') && $user_data['ID'] != $user_ID) {
         return new WP_Error('denied', __("Permission Denied!", 'aecore-class-ae-users-backend'));
     }
     /**
      * check user password if have new password update
      */
     if (isset($user_data['new_password']) && !empty($user_data['new_password'])) {
         $validate = $this->check_password($user_data);
         if ($validate) {
             $user_data['user_pass'] = $user_data['new_password'];
         } else {
             return new WP_Error('wrong_pass', __("Old password does not match!", 'aecore-class-ae-users-backend'));
         }
         if ($user_data['new_password'] !== $user_data['renew_password']) {
             return new WP_Error('pass_mismatch', __("Retype password is not equal.", 'aecore-class-ae-users-backend'));
         }
     }
     if (isset($user_data['user_email'])) {
         $email = $user_data['user_email'];
         /**
          * current user also update his email
          */
         if ($user_ID == $user_data['ID'] && $email != $current_user->user_email) {
             if (email_exists($email)) {
                 return new WP_Error('email_existed', __("This email is already used. Please enter a new email.", 'aecore-class-ae-users-backend'));
             }
         }
     }
     // don't allow upgrade from common user to admin
     if (!ae_user_can('edit_users')) {
         unset($user_data['role']);
         unset($user_data['user_login']);
     }
     /**
      * insert user
      */
     $result = wp_update_user($user_data);
     if ($result != false && !is_wp_error($result)) {
         /**
          * update user meta data
          */
         foreach ($this->meta_data as $key => $value) {
             // update if meta data exist
             if (isset($user_data[$value])) {
                 $usermeta = $this->ae_filter_usermeta($user_data[$value]);
                 update_user_meta($result, $value, $usermeta);
             }
         }
         // hook to add custom
         do_action('ae_update_user', $result, $user_data);
         #update account info
         if ($user_data['default_payment_option'] == 'paypal') {
             update_user_meta($result, 'default_payment_option', 1);
             update_user_meta($result, 'active_cc', '');
             update_user_meta($result, 'paypal', $user_data['paypal']);
         } else {
             update_user_meta($result, 'default_payment_option', 2);
             update_user_meta($result, 'active_cc', $user_data['default_payment_option']);
         }
         /*if(ae_user_role() == FREELANCER) {
               update_user_meta( $result, 'account_type', $user_data['account_type'] );                
               update_user_meta( $result, 'bank_name', $user_data['bank_name'] );  
               update_user_meta( $result, 'bank_country', $user_data['bank_country'] );  
               update_user_meta( $result, 'routing_no', $user_data['routing_no'] );  
               update_user_meta( $result, 'bank_address', $user_data['bank_address'] );  
               update_user_meta( $result, 'bank_city', $user_data['bank_city'] );  
               update_user_meta( $result, 'bank_state', $user_data['bank_state'] );  
               update_user_meta( $result, 'bank_zipcode', $user_data['bank_zipcode'] );
               
               update_user_meta( $result, 'account_holder_currency', $user_data['account_holder_currency'] );                
               update_user_meta( $result, 'account_holder_name', $user_data['account_holder_name'] );  
               update_user_meta( $result, 'account_number', $user_data['account_number'] );  
               update_user_meta( $result, 'account_holder_address', $user_data['account_holder_address'] );  
               update_user_meta( $result, 'account_holder_city', $user_data['account_holder_city'] );  
               update_user_meta( $result, 'account_holder_country', $user_data['account_holder_country'] );  
               update_user_meta( $result, 'account_holder_state', $user_data['account_holder_state'] );  
               update_user_meta( $result, 'account_holder_zipcode', $user_data['account_holder_zipcode'] );
           }*/
         /**
          * get user data and return a full profile
          */
         $result = $this->convert(get_userdata($result));
     }
     if (isset($user_data['do'])) {
         switch ($user_data['do']) {
             case 'profile':
                 $result->msg = __("Your profile has been saved successfully!", 'aecore-class-ae-users-backend');
                 break;
             case 'changepass':
                 $result->msg = __("Your password has been changed successfully!", 'aecore-class-ae-users-backend');
                 break;
             default:
                 $result->msg = __("User's data update successfully!", 'aecore-class-ae-users-backend');
                 break;
         }
     } else {
         $result->msg = __("User's data update successfully!", 'aecore-class-ae-users-backend');
     }
     return $result;
 }