db->insert('user_subscriber', $data); return $this->db->insert_id(); } public function getSubscribers($where = [], $joinEvent = true) { $result = $joinEvent === true ? $this->db ->select('*') ->from('user_subscriber as us') ->join('user as u', 'u.user_id = us.subscriber') ->join('event_registration as er', 'er.subscriber = us.subscriber AND er.subscriber=u.user_id', 'left') ->where($where) ->where('u.status', 1) ->get() : $this->db ->where($where) ->get('user_subscriber'); return $result->result(); } public function setPreferences($user_id, $location, $mail, $email, $tel, $mobile) { $settings = array( 'address' => $location, 'additional_address' => $mail, // 'email_address' => $email, 'phone' => $tel, 'mobile' => $mobile ); $this->db->where('subscriber', $user_id); $this->db->update('user_subscriber', $settings); } public function myaccount($user_id) { $query = $this->db->select("us.subscriber_id, us.civility, us.birthday, us.company, us.sponsorship, us.news_subscription, us.profession, us.address, us.additional_address, us.country, us.postal_code, us.city, us.phone, us.mobile, u.email_address, u.first_name, u.last_name, u.user_id") ->from('user_subscriber us') ->join('user u', 'u.user_id = us.subscriber', 'left') ->where('us.subscriber', $user_id) ->where('u.status', 1) ->get(); // return $user_id; return $query->row(); } public function update_field($user_id, $login_id) { $datas = ""; $data = $this->input->post('params'); $field = $this->input->post('field'); $unlock_action = $this->input->post('unlock_action'); $table = $this->input->post('table'); $id = $this->input->post('id'); $table = $this->input->post('table'); if($field=="birthday") { if( $data !="" ){ $split = explode("/",$data); $datas = $split[2]."-".$split[1]."-".$split[0]; }else{ $datas = NULL; } }else if($field=="civility") { if( $data != "" ){ $datas = $data; }else{ $datas = NULL; } }else if($field=="mobile" || $field =="phone") { if( $data != "" ){ $datas = trim($data); }else{ $datas = NULL; } }else{ $datas = $data; } $this->db->set($field, $datas); $this->db->where($id, $user_id); $this->db->update($table); //$this->lock_action($unlock_action, $login_id); } public function lock_action($process_type, $login_id){ $this->db->set('process_status', 1); $this->db->where('login_id', $login_id); $this->db->where('process_type', $process_type); $this->db->update('event_concurrent_process'); } public function unlock_action($process_type, $login_id) { $this->db->set('process_status', 0); $this->db->where('login_id', $login_id); $this->db->where('process_type', $process_type); $this->db->update('event_concurrent_process'); } public function create_client_account($id) { $current_date = date('Y-m-d'); $this->db->insert('user_subscriber', array( 'subscriber' => $id, 'subscription_date' => $current_date ) ); } public function email_registered($user_id) { $query = $this->db->select('u.email_address, u.user_id, u.first_name, u.last_name') ->from('user u') ->where('u.user_id', $user_id) ->get() ->row(); return $query; } public function check_profile_info_update($user_id, $field, $profile_info) { $data = ""; $row_data ; if( $field == "first_name" || $field == "last_name"){ $query = $this->db->select($field)->from('user')->where('user_id', $user_id)->get(); $row = $query->row(); if($row) { if(strtolower($row->$field) != strtolower($profile_info)) { return array( 'status' => true, 'field' => "#".$field, 'data' => $row->$field ); } } }else if( $field == "preferences" ){ $list_preferences = []; $list_ids = []; foreach ($this->user_subscriber_event_preference_model->myaccount($user_id) as $key => $event_types) { array_push($list_preferences, $event_types->event_type); array_push($list_ids, $event_types->event_preference); } if( $profile_info != implode(", ", $list_preferences) ){ return array( 'status' => true, 'field' => "#".$field, 'preference_ids' => ($list_ids)?$list_ids:null, 'data' => implode(", ", $list_preferences) ); } }else{ $query = $this->db->select($field)->from('user_subscriber')->where('subscriber', $user_id)->get(); $row = $query->row(); if($row) { $row->$field = trim($row->$field); $profile_info = trim($profile_info); if($field == "birthday" && $profile_info !== ''){ $split = explode("/",$profile_info); $profile_info = $split[2]."-".$split[1]."-".$split[0]; $split2 = explode("-",$row->$field); $data = $split2[2]."/".$split2[1]."/".$split2[0]; $row_data = $row->$field; }else if( $field =="phone" || $field =="mobile" ){ $profile_info = ($profile_info != "" && $profile_info != null)?str_replace(" ", "+", $profile_info):""; // $data = $row_data = ( trim($profile_info) !== "" ? remove_brackets(array( '[', ']' ), (strpos($row->$field, '+') !== false ? $row->$field : $row->$field) ) : ""); $row_data = ($row->$field!="" && $row->$field!=null)?str_replace(" ", "+", $row->$field):""; $data = ($row->$field!="" && $row->$field!=null)?$row->$field:""; }else if($field == "civility"){ $data = ucfirst($row->$field); $row_data = $row->$field; }else{ $data = $row->$field; $row_data = $row->$field; } if(strtolower($row_data) != strtolower( $profile_info ) ) { return array( 'status' => true, 'field' => "#".$field, 'row_data' => (strtolower($row_data) != strtolower( $profile_info )), 'data' => $data ); } } } return array('status' => false); } /** * Nofity user on his/her first login about the new feature - Moderation * @method notifyUserABoutModerationFeature * @param int $subscriber * @return bool */ public function notifyUserABoutModerationFeature(int $subscriber) :bool { if(!isset($subscriber) || empty($subscriber)) { return false; } $this->db->select('notify_for_moderation_feature'); $this->db->where('subscriber', $subscriber); $this->db->where('notify_for_moderation_feature', 0); $this->db->limit(1); $result = $this->db->get('user_subscriber')->num_rows(); if($result) { return true; } return false; } /** * Set notif to on once the user has been notified about the new feature moderation * @method notif_moderation_feature * @param int $subscriber * @return void */ public function notif_moderation_feature(int $subscriber) :void { $this->db->where('subscriber', $subscriber); $this->db->where('notify_for_moderation_feature', 0); $this->db->update('user_subscriber', array('notify_for_moderation_feature' => 1)); } /** * Enable or Disable Moderation of the user, If disable, user is allowed to subscribe in any event regardless of moderation * @method enable_disable_user_moderation * @param array $post * @return boolean */ public function enable_disable_user_moderation(array $post) :bool { $this->db->where('subscriber', $post['subscriber_id']); $moderation = array('isModerationDisabled' => (int) $post['isModerationDisabled']); if($moderation['isModerationDisabled'] && ( isset($post['number_of_days_in_moderation']) && !empty($post['number_of_days_in_moderation']))) { $this->db->set('numberOfDaysModeratedDateAdded', 'NOW()', FALSE); $this->db->set('numberOfDaysModerated', $post['number_of_days_in_moderation'], FALSE); } else { $this->db->set('numberOfDaysModeratedDateAdded', 'NULL', FALSE); $this->db->set('numberOfDaysModerated', 0, FALSE); } return $this->db->update('user_subscriber', $moderation); } public function get_user_moderation(int $subscriber_id) :stdClass { return $this->db->query( "SELECT isModerationDisabled, numberOfDaysModerated, numberOfDaysModeratedDateAdded, (CASE WHEN numberOfDaysModerated > 0 && isModerationDisabled > 0 THEN 1 ELSE 0 END) AS isModeratedByDate FROM user_subscriber WHERE subscriber = ? ",array($subscriber_id))->row(); } public function automatic_disable_moderation_events() { $this->db->query(" UPDATE user_subscriber SET isModerationDisabled = 0 WHERE numberOfDaysModerated > 0 && isModerationDisabled > 0 AND DATE_ADD(numberOfDaysModeratedDateAdded, INTERVAL (numberOfDaysModerated) DAY) < NOW() "); } public function is_email_exists($email_address) { return $this->db->select('u.user_id') ->from('user u') ->where('u.email_address', $email_address) ->where('u.role_id', USER_ROLES['regular']) ->where_not_in('u.status', 0) ->get() ->num_rows(); } }