-
acheng16 Junior Member
 
-
Posts: 16
Threads: 3
Joined: Jan 2016
Reputation:
0
I have the code
$this->load->library('email');
which loads the library properly, or i thought...
however when i try
$this->email->from(EMAIL_FROM);
i get this
Fatal error: Call to a member function from() on a non-object in /var/screenu-www/screenu-web/screenu/application/models/customers_model.php on line 147
-
acheng16 Junior Member
 
-
Posts: 16
Threads: 3
Joined: Jan 2016
Reputation:
0
01-06-2016, 08:36 AM
(This post was last modified: 01-06-2016, 08:37 AM by acheng16.)
(01-06-2016, 12:06 AM)skunkbad Wrote: (01-05-2016, 11:14 PM)acheng16 Wrote: (01-05-2016, 08:11 PM)skunkbad Wrote: (01-05-2016, 05:07 PM)Narf Wrote: (01-05-2016, 03:41 PM)skunkbad Wrote: You might try swapping out your /system/ directory for a fresh copy. Besides that, you might try turning on debug logging and see if there are any hints.
Dude, seriously? One guy has his system/ dir messed up and now everybody has to be advised to check that by default?
LOL. Every once in a while I am right. Well here is the thing so I have two types of creating new user that calls on the email library. One type works perfectly and the other doesn't work. And the code is basically the same.... It is also within the same controller file.
Unless you show us some code, we really have no chance of helping you.
Controller:
PHP Code: <?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
class Register extends Public_controller {
public function __construct() { parent::__construct(); }
public function index() { redirect('/private/register/information'); }
// Demo Signup - Step 1 public function demo() { $this->head->add('js', PRIVATE_JS . '/register/information.js'); $this->head->add('js', GLOBAL_LIB . '/cropit/jquery.cropit.js'); $this->head->add('css', GLOBAL_LIB . '/cropit/cropit.css'); $this->load->library('head'); $this->load->library('form_validation'); $this->load->library('email'); $this->load->library('display_library'); $this->load->library('less_library'); $this->load->helper('state_helper'); $this->load->helper('common_helper'); $this->load->model('products_model');
$this->head->set_title('ScreenU Sign Up | Demonstration');
$data = array(); $data['page_title'] = 'ScreenU Sign Up'; $data['states'] = state_array(); $data['products'] = $this->products_model->load();
// Are we in the middle of a sign up? $pending_customer_id = $this->session->userdata('customer_id');
// fill form with pending information if we have it, and we're not submitting new form data if ($pending_customer_id != '' && empty($_POST)): $this->load->model('customers_model'); $this->customers_model->customer_id = $pending_customer_id; $pending_customer = $this->customers_model->load();
if (empty($pending_customer)):// if for some reason our database record went away mid-signup... redirect('private/register/reset'); else: foreach ($pending_customer[0] as $k => $v): $_POST[$k] = $v; endforeach; endif; endif;
$this->form_validation ->set_rules('organization', 'Organization', 'required') ->set_rules('contact_first_name', 'First Name', 'required') ->set_rules('contact_last_name', 'Last Name', 'required'); if ($pending_customer_id == ''): $this->form_validation->set_rules('email', 'Email', 'required|valid_email|callback_check_email|strtolower'); else: $this->form_validation->set_rules('email', 'Email', 'required|valid_email'); endif;
$this->form_validation->set_rules('phone', 'Phone', 'required|min_length[10]') ->set_rules('address_1', 'Address', 'required') ->set_rules('city', 'City', 'required') ->set_rules('state', 'State', 'required') ->set_rules('product_id', 'Product', 'required');
if ($this->form_validation->run() === TRUE) { $this->load->model('customers_model'); $this->load->model('user_model'); if ($pending_customer_id != '') { // Has the user resubmitted this page? delete existing customer/user data and re-save $this->customers_model->delete($pending_customer_id); $this->user_model->delete_by_customer_id($pending_customer_id); unset($pending_customer_id); $this->session->unset_userdata('customer_id'); } $customer_id = $this->customers_model->add_demo(); $this->session->set_userdata(array('customer_id' => $customer_id, 'product_id' => $this->input->post('product_id')));
redirect('private/register/demo_confirmation'); }
$this->load->view('private/register/demo', $data); }
// Regular Sign Up - Step 1 public function information() {
// are we already logged in? Log 'em out... $this->auth_lib->clear(); $this->session->unset_userdata('customer_id');
$this->head->add('js', PRIVATE_JS . '/register/information.js'); $this->head->add('js', GLOBAL_LIB . '/cropit/jquery.cropit.js'); $this->head->add('css', GLOBAL_LIB . '/cropit/cropit.css'); $this->load->library('head'); $this->load->library('form_validation'); $this->load->library('display_library'); $this->load->library('less_library'); $this->load->library('email'); $this->load->helper('state_helper'); $this->load->helper('common_helper'); $this->load->model('products_model');
$this->head->set_title('ScreenU Sign Up | Information');
$data = array(); $data['page_title'] = 'ScreenU Sign Up'; $data['states'] = state_array(); $data['products'] = $this->products_model->load(); $data['terms'] = array(1 => '1 year', 2 => '2 year (10% discount)', 3 => '3 year (20% discount)');
// Are we in the middle of a sign up? $pending_customer_id = $this->session->userdata('customer_id');
// fill form with pending information if we have it, and we're not submitting new form data if ($pending_customer_id != '' && empty($_POST)): $this->load->model('customers_model'); $this->customers_model->customer_id = $pending_customer_id; $pending_customer = $this->customers_model->load();
if (empty($pending_customer)):// if for some reason our database record went away mid-signup... redirect('private/register/reset'); else: foreach ($pending_customer[0] as $k => $v): $_POST[$k] = $v; endforeach; endif; endif;
$this->form_validation->set_rules('contact_first_name', 'First Name', 'required') ->set_rules('contact_last_name', 'Last Name', 'required') ->set_rules('phone', 'Phone', 'required|min_length[10]') ->set_rules('address_1', 'Address', 'required') ->set_rules('city', 'City', 'required') ->set_rules('state', 'State', 'required') ->set_rules('product_id', 'Product', 'required') ->set_rules('term', 'Term', 'required');
if ($pending_customer_id == ''): $this->form_validation->set_rules('email', 'Email', 'required|valid_email|callback_check_email[email]|strtolower') ->set_rules('organization', 'Organization', 'required|callback_check_organization[organization]'); else: $this->form_validation->set_rules('email', 'Email', 'required|valid_email') ->set_rules('organization', 'Organization', 'required'); endif;
if ($this->form_validation->run() === TRUE) { $this->load->model('customers_model'); $this->load->model('user_model'); if ($pending_customer_id != '') { // Has the user resubmitted this page? delete existing customer/user data and re-save $this->customers_model->delete($pending_customer_id); $this->user_model->delete_by_customer_id($pending_customer_id); unset($pending_customer_id); $this->session->unset_userdata('customer_id'); } $customer_id = $this->customers_model->add(); $this->session->set_userdata(array('customer_id' => $customer_id, 'term' => $this->input->post('term'), 'product_id' => $this->input->post('product_id')));
redirect('private/register/payment'); }
$this->load->view('private/register/information', $data); }
// Regular Sign Up - Step 2 public function payment() { $this->head->add('js', PRIVATE_JS . '/register/payment.js'); $data['page_title'] = 'ScreenU Sign Up';
$this->load->library('form_validation'); $this->load->helper('state_helper'); $this->load->library('email'); $this->load->helper('common_helper');
$this->head->set_title('ScreenU Sign Up | Payment');
// We need to be in the middle of a signup... $pending_customer_id = $this->session->userdata('customer_id'); $payment_success = false;
// ...if not, redirect to first step if ($pending_customer_id == ''): redirect('/private/register/problem'); else: $this->load->model('customers_model'); $this->customers_model->customer_id = $pending_customer_id; $pending_customer = $this->customers_model->load(true); if ($pending_customer) { $data['customer_id'] = $pending_customer->customer_id; } else { redirect('/private/register/problem'); } endif;
// Create or get active invoice $this->load->model('invoices_model'); $invoice_id = $this->invoices_model->check_active_invoice(); $this->invoices_model->initialize(); $this->invoices_model->invoice_id = $invoice_id; $invoice = $this->invoices_model->load(true);
// Prepare CC request (in case they select payment by CC) $this->load->library('cybersource_library'); $data['params'] = $this->cybersource_library->get_params($invoice_id, $invoice->total); $data['signature'] = $this->cybersource_library->sign($data['params']);
// Check for postback if ($this->input->server('REQUEST_METHOD') == 'POST') {
$data = array(); $payment_method = $this->input->post('paying_by');
if ($payment_method == 'invoice') {
// Send out welcome email $this->load->model('user_model'); $this->user_model->user_id = $this->session->userdata('user_id'); $signup_user = $this->user_model->load(true);
$email_data['email'] = $pending_customer->email; $email_data['organization'] = $pending_customer->organization; $email_data['payment_method'] = $payment_method;
// Get custom email content $this->load->model('contents_model'); $this->contents_model->slug = 'registration-email-paid'; $email_data['custom_content_paid'] = $this->contents_model->load(true);
$this->contents_model->initialize(); $this->contents_model->slug = 'registration-email-unpaid'; $email_data['custom_content_unpaid'] = $this->contents_model->load(true);
$this->email->from(EMAIL_FROM); $this->email->to($email_data['email']); $this->email->subject('Welcome to ' . SITE_NAME); $this->email->message($this->load->view('public/email/registration', $email_data, TRUE));
$this->email->send();
// Send admin notice email $this->email->from(EMAIL_FROM); $this->email->to(SITE_EMAIL); $this->email->subject('New Sign Up at ' . SITE_NAME); $this->email->message($this->load->view('public/email/registration_admin', $email_data, TRUE));
$this->email->send();
// remove "pending customer" session $this->session->unset_userdata('customer_id');
// go to confirmation page redirect('private/register/confirmation'); } }
$this->load->view('private/register/payment', $data); }
// Regular Sign Up - Successful Payment public function payment_success() {
// This method handles all returns from the CyberSource processor. Handle signups vs. renewals by whether we're logged in or not. $logged_in = $this->auth_lib->is_role('private');
if ($logged_in) { // RENEWAL $this->load->model('payments_model'); $this->payments_model->customer_id = $this->session->userdata('customer_id');
$this->load->model('invoices_model'); $invoice_id = $this->invoices_model->check_renewal_invoice();
if (!$invoice_id) { // problem with transaction $this->session->set_userdata(array('status_message' => 'There was a problem with your transaction.', 'status_type' => 'bad')); $payment_success = false;
$this->load->private_view('purchase/problem', $data); } else { // Get results from post $result = $this->input->post('decision'); $ref_num = $this->input->post('req_transaction_uuid'); $notes = json_encode($_POST);
if ($result == 'ACCEPT') { if ($this->payments_model->complete_payment($invoice_id, 'cc', $ref_num, $notes)) {
$data['product_id'] = $this->session->userdata('product_id'); $data['term'] = $this->session->userdata('term');
// Success! Update user and create user $this->load->model('customers_model'); $this->customers_model->renew_products($this->session->userdata('customer_id'), $data['product_id'], $data['term']);
$this->session->set_userdata(array('status_message' => 'Payment received successfully.', 'status_type' => 'good')); $payment_success = true;
// Clean up sessions variables $this->session->unset_userdata('invoice_id'); $this->session->unset_userdata('term'); $this->session->unset_userdata('product_id');
redirect('/private/purchase/confirmation'); } else { // problem with transaction $this->session->set_userdata(array('status_message' => 'There was a problem completing your order.', 'status_type' => 'bad')); $payment_success = false;
$this->load->private_view('purchase/problem', $data); } } else { // problem with transaction $this->session->set_userdata(array('status_message' => 'Your transaction was DECLINED.', 'status_type' => 'bad')); $payment_success = false;
$this->load->private_view('purchase/try_again', $data); } } } else { // SIGNUP // We need to be in the middle of a signup... $pending_customer_id = $this->session->userdata('customer_id');
// ...if not, redirect to first step if ($pending_customer_id == ''): redirect('/private/register/problem'); else: $this->load->model('customers_model'); $this->customers_model->customer_id = $pending_customer_id; $pending_customer = $this->customers_model->load(true); if ($pending_customer) { $data['customer_id'] = $pending_customer->customer_id; } else { redirect('/private/register/problem'); } endif;
$this->load->model('payments_model'); $this->payments_model->customer_id = $pending_customer_id;
$this->load->model('invoices_model'); $invoice_id = $this->invoices_model->check_active_invoice();
if (!$invoice_id) { // problem with transaction $this->session->set_userdata(array('status_message' => 'There was a problem with your transaction.', 'status_type' => 'bad')); $payment_success = false;
$this->load->view('private/register/problem', $data); } else { // Get results from post $result = $this->input->post('decision'); $ref_num = $this->input->post('req_transaction_uuid'); $notes = json_encode($_POST);
if ($result == 'ACCEPT') { if ($this->payments_model->complete_payment($invoice_id, 'cc', $ref_num, $notes)) { // Success! Update user and create user $this->load->model('customers_model'); $this->customers_model->change_status($pending_customer_id, 'pending_paid');
$this->load->model('user_model'); $this->user_model->activate_by_customer_id($pending_customer_id);
$this->session->set_userdata(array('status_message' => 'Payment received successfully.', 'status_type' => 'good')); $payment_success = true;
// Clean up sessions variables $this->auth_lib->clear(); $this->session->unset_userdata('customer_id'); $this->session->unset_userdata('invoice_id'); $this->session->unset_userdata('term'); $this->session->unset_userdata('product_id');
redirect('/private/register/confirmation'); } else { // problem with transaction $this->session->set_userdata(array('status_message' => 'There was a problem completing your order.', 'status_type' => 'bad')); $payment_success = false;
$this->load->view('private/register/problem', $data); } } else { // problem with transaction $this->session->set_userdata(array('status_message' => 'Your transaction was DECLINED.', 'status_type' => 'bad')); $payment_success = false;
$this->load->view('private/register/try_again', $data); } } } // logged in? }
// Regular Sign Up - Cancelled Registration public function problem() {
$data['page_title'] = 'ScreenU Sign Up';
$this->head->set_title('ScreenU Sign Up | Confirmation');
$this->load->view('private/register/problem', $data); }
// Regular Sign Up - Step 3 public function confirmation() { $data['page_title'] = 'ScreenU Sign Up';
$this->head->set_title('ScreenU Sign Up | Confirmation');
$this->load->view('private/register/confirmation', $data); }
// Demo Sign Up - Step 2 public function demo_confirmation() { $data['page_title'] = 'ScreenU Sign Up';
$this->head->set_title('ScreenU Sign Up | Confirmation');
$this->load->view('private/register/demo_confirmation', $data); }
// Used to see if the email is already in use public function check_email($email) { $this->load->model('customers_model'); $result = $this->customers_model->check_email($email);
if ($result) { return TRUE; } else { $this->form_validation->set_message('check_email', 'That email is already registered'); return FALSE; } }
// Used to see if the email is already in use public function check_organization($organization) { $this->load->model('customers_model'); $result = $this->customers_model->check_organization($organization);
if ($result) { return TRUE; } else { $this->form_validation->set_message('check_organization', 'That organization name is being used by another ScreenU account.'); return FALSE; } }
public function opauth_start() { $this->load->library('auth_lib'); $this->config->load('Opauth'); // We need this so we can redirect once there loged in $this->auth_lib->set_previous_url($this->agent->referrer()); $this->load->library('Opauth/Opauth', $this->config->item('opauth_config'), false); $this->opauth->run(); }
public function opauth_callback() { $this->load->library('auth_lib'); $this->load->library('email'); $this->load->model('user_model'); $this->load->helper('common_helper');
// This will try to log the user in based on the uid and provider. // If that fails it will register a new // First param is the role the uses should be created as if they do not exists (3 = public) // Second param is a bool to tell if the user should be created as active or inactive if they do not exist $email_data = $this->user_model->validate_oauth(3, TRUE);
// Send randomly generated password to the users email account. $email_data['social'] = TRUE; $email_data['email'] = $email_data['email']; $email_data['password'] = generate_string(8);
$this->email->from(EMAIL_FROM); $this->email->to($email_data['email']); $this->email->subject('Welcome to ' . SITE_NAME); $this->email->message($this->load->view('public/email/registration', $email_data, TRUE));
$this->email->send();
if ($this->auth_lib->previous_url() != '') { redirect($this->auth_lib->previous_url()); }
redirect('home'); }
// Mostly used for JS to check if your logged in public function check_login() { // If they have a role there logged in $logged_in = $this->auth_lib->is_role('public');
if ($this->input->is_ajax_request() !== TRUE) { return $logged_in; }
$data = array('error' => TRUE, 'message' => 'Not logged in.');
if ($logged_in === TRUE) { $data = array('error' => FALSE, 'message' => 'Logged in.'); }
echo json_encode($data); }
// Reset signup process public function reset() {
$customer_id = $this->session->userdata('customer_id'); // delete pending user data if ($customer_id != ''): $this->load->model('customers_model'); $this->load->model('user_model'); $this->customers_model->delete($customer_id); $this->user_model->delete_by_customer_id($customer_id);
endif; $this->session->unset_userdata('customer_id'); redirect('/private/register/information'); }
}
/* End of file register.php */ /* Location: ./application/controllers/private/register.php */
Model:
PHP Code: <?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
class Customers_model extends CI_Model {
private $_primary_table = 'customers'; private $_products_table = 'products'; private $_customers_products_table = 'customers_products'; public $customer_id = NULL; public $results = NULL; public $active_only = FALSE; public $created_since_date = NULL; public $updated_since_date = NULL; public $discount_for_two = 0.9; public $discount_for_three = 0.8;
private function _get_data() { $this->load->helper('common_helper'); $data['status'] = $this->input->post('status'); $data['organization'] = $this->input->post('organization'); $data['slug'] = $this->input->post('slug'); $data['campus_size'] = $this->input->post('campus_size'); $data['contact_title'] = $this->input->post('contact_title'); $data['contact_first_name'] = $this->input->post('contact_first_name'); $data['contact_last_name'] = $this->input->post('contact_last_name'); $data['email'] = $this->input->post('email'); $data['phone'] = $this->input->post('phone'); $data['address_1'] = $this->input->post('address_1'); $data['address_2'] = $this->input->post('address_2'); $data['city'] = $this->input->post('city'); $data['state'] = $this->input->post('state'); $data['zip'] = $this->input->post('zip'); if ($this->input->post('image-data') !== ''): $image_path = CUSTOMER_IMAGES_PATH; $file = generate_string(20) . '.jpg'; $file_path = $image_path . '/' . $file;
$img_data = $_POST['image-data']; list($t, $img_data) = explode(';', $img_data); list($t, $img_data) = explode(',', $img_data); $src = base64_decode($img_data); file_put_contents($file_path, $src);
$data['logo'] = $file; endif; $data['updated_at'] = date('Y-m-d H:i:s');
return $data; }
public function initialize() { $this->customer_id = NULL; $this->slug = NULL; $this->email = NULL; $this->active_only = FALSE; $this->results = NULL; }
function add_customer_product($customer_id, $product_id, $term = 1) { // single product vs. "both" products if( $product_id == 'both' ): $this->load->model('products_model'); $all_products = $this->products_model->load(); foreach( $all_products as $all_product ): $data = array( 'customer_id' => $customer_id, 'product_id' => $all_product->product_id, 'original_term' => $term, 'exp_date' => date('Y-m-d H:i:s', strtotime('+' . $term . ' year')), 'updated_at' => date('Y-m-d H:i:s'), 'created_at' => date('Y-m-d H:i:s'), ); $return = $this->db->insert('customers_products', $data); endforeach; else: $data = array( 'customer_id' => $customer_id, 'product_id' => $product_id, 'original_term' => $term, 'exp_date' => date('Y-m-d H:i:s', strtotime('+' . $term . ' year')), 'updated_at' => date('Y-m-d H:i:s'), 'created_at' => date('Y-m-d H:i:s'), );
$return = $this->db->insert('customers_products', $data); endif; return $return; }
public function add() { $this->load->helper('common_helper');
$data = $this->_get_data(); $data['slug'] = slugify($data['organization']); $data['status'] = 'pending_unpaid'; // new customers are always pending to start] $data['created_at'] = date('Y-m-d H:i:s');
$this->db->insert($this->_primary_table, $data); $customer_id = $this->db->insert_id();
// add customer products if ($this->input->post('product_id')): $this->add_customer_product($customer_id, $this->input->post('product_id'), $this->input->post('term')); endif;
return $customer_id; }
public function add_demo() { echo ('LOAD'); $this->load->library('email'); if (isset($this->load->email)) { echo ('LOADED'); } $this->load->helper('common_helper');
$data = $this->_get_data();
$data['slug'] = slugify($data['organization']); $data['status'] = 'demo'; // demonstration account $data['created_at'] = date('Y-m-d H:i:s');
$this->db->insert($this->_primary_table, $data); $customer_id = $this->db->insert_id();
// add customer products if ($this->input->post('product_id')): $this->add_customer_product($customer_id, $this->input->post('product_id')); endif;
$this->load(true);
// Create demo user $password = generate_string(8); $user_data['customer_id'] = $customer_id; $user_data['role_id'] = 2; // default "private" user $user_data['email'] = $data['email']; $user_data['password'] = $password; $user_data['first_name'] = $data['contact_first_name']; $user_data['last_name'] = $data['contact_last_name']; $this->load->model('user_model'); $user_id = $this->user_model->add($user_data);
// Get custom email content $this->load->model('contents_model'); $this->contents_model->slug = 'demo-email'; $user_data['custom_content'] = $this->contents_model->load(true); // Send out confirmation email $this->email->from(EMAIL_FROM); $this->email->to($data['email']); $this->email->subject('Demo Account Created at ' . SITE_NAME); $this->email->message($this->load->view('public/email/demo', $user_data, TRUE)); $this->email->send();
return $customer_id; }
public function edit($customer_id, $update_user = false) {
// get updated form data $data = $this->_get_data();
// are we activating a customer? $this->customer_id = $customer_id; $old_customer = $this->load(true);
if ($old_customer->status != 'active' && $data['status'] == 'active') { // create user at this point (since we'll need to email password here. $password = generate_string(8); $user_data['customer_id'] = $customer_id; $user_data['role_id'] = 2; // default "private" user $user_data['email'] = $data['email']; $user_data['password'] = $password; $user_data['first_name'] = $data['contact_first_name']; $user_data['last_name'] = $data['contact_last_name']; $this->load->model('user_model'); $user_id = $this->user_model->add($user_data);
// Get custom email content $this->load->model('contents_model'); $this->contents_model->slug = 'account-activation-email'; $user_data['custom_content'] = $this->contents_model->load(true);
// Send out confirmation email $this->load->library('email'); $this->email->from(EMAIL_FROM); $this->email->to($data['email']); $this->email->subject('Account Activated at ' . SITE_NAME); $this->email->message($this->load->view('public/email/activation', $user_data, TRUE)); $this->email->send(); } $this->customer_id = $customer_id; $this->db->where($this->_primary_table . '.customer_id', $this->customer_id) ->update($this->_primary_table, $data); if( $update_user ): if($this->input->post('user_password') !== '' && $this->input->post('user_password') !== FALSE): $this->load->model('user_model'); $customer_user = $this->user_model->get_customer_user($customer_id); $password_data = $this->auth_lib->hash_password($this->input->post('user_password')); $user_data['email'] = $this->input->post('user_email'); $user_data['password'] = $password_data['password']; $user_data['salt'] = $password_data['salt']; $this->db->where('user_id', $customer_user->user_id) ->update('users', $user_data); endif; endif; }
public function delete($customer_id) { $this->db->where('customer_id', $customer_id) ->delete($this->_primary_table); }
public function load($single = false) {
if (isset($this->customer_id)) { $this->db->where($this->_primary_table . '.customer_id', $this->customer_id); }
if (isset($this->slug)) { $this->db->where($this->_primary_table . '.slug', $this->slug); }
if (isset($this->email)) { $this->db->where($this->_primary_table . '.email', $this->email); } if (isset($this->created_since_date)) { $this->db->where($this->_primary_table . '.created_at>=', '"' . $this->created_since_date . '"', false); }
if (isset($this->updated_since_date)) { $this->db->where($this->_primary_table . '.updated_at>=', '"' . $this->updated_since_date . '"', false); }
if (isset($this->status)) { if (is_array($this->status)): $sql_where = '1 AND ('; foreach ($this->status as $status): $sql_where .= $this->_primary_table . '.status="' . $status . '" OR '; endforeach; $sql_where = substr($sql_where,0,strlen($sql_where)-4) . ')'; $this->db->where($sql_where,false,false); else: $this->db->where($this->_primary_table . '.status', $this->status); endif; }
$this->db ->select($this->_primary_table . '.*') ->select('users.email AS user_email') ->join('users', 'users.customer_id = ' . $this->_primary_table . '.customer_id','left') ->group_by($this->_primary_table . '.customer_id') ->order_by($this->_primary_table . '.created_at', 'DESC');
$query = $this->db->get($this->_primary_table);
$result = $query->result(); //echo $this->db->last_query() . '<br /><br />'; if( !empty( $result ) ): // get customer's products $this->load->model('products_model'); $all_products = $this->products_model->load(); if ($single == true): $result = $result[0]; foreach( $all_products as $all_product ): if( $this->has_program($result->customer_id, $all_product->product_id) ) $result->products[] = $all_product->product_id; endforeach; else: foreach( $result as $v ): foreach( $all_products as $all_product ): if( $this->has_program($v->customer_id, $all_product->product_id) ) $v->products[] = $all_product->product_id; endforeach; endforeach; endif; endif;
return $result; }
public function change_status($customer_id, $new_status = '') { $statuses = array('pending_unpaid', 'pending_paid', 'active', 'suspended'); if ($new_status == '' || !in_array($new_status, $statuses)) return false; $this->db->where($this->_primary_table . '.customer_id', $customer_id) ->update($this->_primary_table, array('status' => $new_status)); }
/** * Return whether customer has given program * * @param type $customer_id * @return boolean */ public function has_program($customer_id, $product_id, $check_expired = false) { $this->db ->select('customers_products.*') ->where('customers_products.customer_id', $customer_id) ->where('customers_products.product_id', $product_id);
if ($check_expired) { $this->db->where('customers_products.exp_date>=', '"' . date('Y-m-d H:i:s') . '"', false); } $query = $this->db->get('customers_products');
$result = $query->result();
$return = ( empty($result[0]) ? false : true );
return $return; } /** * Return all programs that a customer has signed up for * @param int $customer_id */ public function get_customer_programs($customer_id){ $query = $this->db ->select('customers_products.*') ->select('products.price') ->select('products.title') ->join('products', 'products.product_id = customers_products.product_id','left') ->where('customers_products.customer_id', $customer_id) ->group_by('products.product_id') ->get('customers_products');
$results = $query->result();
$return = ( empty($results) ? false : $results ); return $return; } /** * Return total amount due for a customer based on their programs * @param array $customer_programs * @return float */ public function get_customer_amount($customer_programs){ $total = 0; if( count( $customer_programs ) > 1 ){ $total = 1500 * $customer_programs[0]->original_term; } else { $total = $customer_programs[0]->price * $customer_programs[0]->original_term; } $term = $customer_programs[0]->original_term;
if( $term == 2){ $total = $total * $this->discount_for_two; } // 10% discount if( $term == 3){ $total = $total * $this->discount_for_three; } // 20% discount return $total; } /** * Renew products for a customer * @param int $customer_id * @param int $product_id * @param int $term */ public function renew_products($customer_id, $product_id, $term){ $this->db->select('products.*') ->group_by('products.product_id'); if( $product_id != 'both' ){ $this->db->where('products.product_id', $product_id); } $query = $this->db->get('products'); $products = $query->result(); foreach( $products as $product ): // Check if customer already has product $query = $this->db ->select('customers_products.*') ->join('products', 'products.product_id = customers_products.product_id','left') ->where('customers_products.customer_id', $customer_id) ->where('customers_products.product_id', $product->product_id) ->group_by('products.product_id') ->get('customers_products'); $existing_product = $products = $query->result(); $data = array( 'customer_id' => $customer_id, 'product_id' => $product->product_id, 'original_term' => $term, 'updated_at' => date('Y-m-d H:i:s'), ); if( !empty($existing_product) ): $data['exp_date'] = date('Y-m-d H:i:s', strtotime($existing_product[0]->exp_date . ' +' . $term . ' year')); $this->db->where('customers_products.customer_id', $customer_id) ->where('customers_products.product_id', $product->product_id) ->update('customers_products', $data); else: // insert new $data['exp_date'] = date('Y-m-d H:i:s', strtotime('+' . $term . ' year')); $data['created_at'] = date('Y-m-d H:i:s'); $return = $this->db->insert('customers_products', $data); endif; endforeach; return true; } /** * Check if an organization name is already in the system * @param string $organization * @return boolean */ function check_organization($organization){ $this->load->helper('common_helper');
$slug = slugify($organization); $this->initialize(); $this->slug = $slug; $existing_account = $this->load(true); if( $existing_account ){ return false; } else { return true; } }
/** * Check if an email is already in the system (with a user or customer) * @param string $email * @return boolean */ function check_email($email){ $this->load->model('user_model'); $this->user_model->initialize(); $this->user_model->email = $email; $users = $this->user_model->load(true);
$this->load->model('customers_model'); $this->customers_model->initialize(); $this->customers_model->email = $email; $customers = $this->customers_model->load(true); if(count($users) != 0 || count($customers) != 0){ return false; } else { return true; } } }
/* End of file customers_model.php */ /* Location: ./application/models/customers_model.php */
Issue is with the add_demo function.
-
skunkbad Senior Citizen
    
-
Posts: 1,300
Threads: 63
Joined: Oct 2014
Reputation:
86
01-06-2016, 09:03 AM
(This post was last modified: 01-06-2016, 09:05 AM by skunkbad.)
Do a little debugging:
PHP Code: // Send out confirmation email if( ! $this->load->is_loaded('Email') ) $this->load->library('email');
if( ! $this->load->is_loaded('Email') ) exit('No email library loaded. WTF???');
if( ! defined('EMAIL_FROM') ) exit('No EMAIL_FROM available');
if( ! defined('SITE_NAME') ) exit('No SITE_NAME available');
$message = $this->load->view('public/email/demo', $user_data, TRUE);
var_dump( $message ); // Or use some other way to check the message
$this->email->from(EMAIL_FROM); $this->email->to($data['email']); $this->email->subject('Demo Account Created at ' . SITE_NAME); $this->email->message($message); $this->email->send();
Also, what is your email config? Only default?
-
acheng16 Junior Member
 
-
Posts: 16
Threads: 3
Joined: Jan 2016
Reputation:
0
01-06-2016, 09:12 AM
(This post was last modified: 01-06-2016, 09:18 AM by acheng16.)
(01-06-2016, 09:03 AM)skunkbad Wrote: Do a little debugging:
PHP Code: // Send out confirmation email if( ! $this->load->is_loaded('Email') ) $this->load->library('email');
if( ! $this->load->is_loaded('Email') ) exit('No email library loaded. WTF???');
if( ! defined('EMAIL_FROM') ) exit('No EMAIL_FROM available');
if( ! defined('SITE_NAME') ) exit('No SITE_NAME available');
$message = $this->load->view('public/email/demo', $user_data, TRUE);
var_dump( $message ); // Or use some other way to check the message
$this->email->from(EMAIL_FROM); $this->email->to($data['email']); $this->email->subject('Demo Account Created at ' . SITE_NAME); $this->email->message($message); $this->email->send();
Also, what is your email config? Only default?
As i suspected the email library just isn't loading. Below is snippet of email.php
PHP Code: <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
$config['protocol'] = 'mail'; $config['mailpath'] = '/usr/sbin/sendmail -t -i'; $config['charset'] = 'iso-8859-1'; $config['wordwrap'] = FALSE; $config['mailtype'] = 'html'; $config['smtp_host'] = 'smtp.gmail.com'; $config['smtp_user'] = '[email protected]'; $config['smtp_pass'] = '***********************'; $config['smtp_port'] = '465';
/* End of file email.php */ /* Location: ./application/config/email.php */
|