function save() { $this->redirectAfterSave = false; if (isset($_REQUEST['id'])) { $id = $_REQUEST['id']; parent::save(); //run the unsubscribe process if needed if ((int) $_REQUEST['wysija']['user']['status'] == -1) { $helperUser =& WYSIJA::get("user", "helper"); $helperUser->unsubscribe($id); } } else { //$this->msgOnSave=false; $id = parent::save(); if (!$id) { $this->viewShow = $this->action = 'add'; $data = array('details' => $_REQUEST['wysija']['user']); return $this->add($data); } } /* update subscriptions */ $modelUL =& WYSIJA::get("user_list", "model"); /* list of core list */ $modelLIST =& WYSIJA::get("list", "model"); $results = $modelLIST->get(array("list_id"), array("is_enabled" => "0")); $core_listids = array(); foreach ($results as $res) { $core_listids[] = $res['list_id']; } if (isset($_POST['wysija']['user_list']) && $_POST['wysija']['user_list']) { foreach ($_POST['wysija']['user_list']['list_id'] as $listid) { $core_listids[] = $listid; } /* what we unsubscribe from*/ foreach ($_POST['wysija']['user_list']['list_id'] as $listid) { $modelUL->replace(array("user_id" => $id, "list_id" => $listid, "unsub_date" => 0)); } } $condiFirst = array("notequal" => array("list_id" => $core_listids), "equal" => array("user_id" => $id, 'unsub_date' => 0)); $modelUL =& WYSIJA::get("user_list", "model"); $modelUL->delete($condiFirst); $modelUL->reset(); //$this->notice(__("Subscriber's details saved.",WYSIJA)); $this->redirect(); return true; }
function save() { $this->redirectAfterSave = false; $helperUser =& WYSIJA::get('user', 'helper'); if (isset($_REQUEST['id'])) { $id = $_REQUEST['id']; parent::save(); //run the unsubscribe process if needed if ((int) $_REQUEST['wysija']['user']['status'] == -1) { $helperUser->unsubscribe($id); } /* update subscriptions */ $modelUL =& WYSIJA::get('user_list', 'model'); $modelUL->backSave = true; /* list of core list */ $modelLIST =& WYSIJA::get('list', 'model'); $results = $modelLIST->get(array('list_id'), array('is_enabled' => '0')); $core_listids = array(); foreach ($results as $res) { $core_listids[] = $res['list_id']; } //0 - get current lists of the user $userlists = $modelUL->get(array('list_id', 'unsub_date'), array('user_id' => $id)); $oldlistids = $newlistids = array(); foreach ($userlists as $listdata) { $oldlistids[$listdata['list_id']] = $listdata['unsub_date']; } $config =& WYSIJA::get('config', 'model'); $dbloptin = $config->getValue('confirm_dbleoptin'); //1 - insert new user_list if (isset($_POST['wysija']['user_list']) && $_POST['wysija']['user_list']) { $modelUL->reset(); $modelUL->update(array('sub_date' => time()), array('user_id' => $id)); if (!empty($_POST['wysija']['user_list']['list_id'])) { foreach ($_POST['wysija']['user_list']['list_id'] as $list_id) { //if the list is not already recorded for the user then we will need to insert it if (!isset($oldlistids[$list_id])) { $modelUL->reset(); $newlistids[] = $list_id; $dataul = array('user_id' => $id, 'list_id' => $list_id, 'sub_date' => time()); //if double optin is on and user is unconfirmed or unsubscribed, then we need to set it as unconfirmed subscription if ($dbloptin && (int) $_POST['wysija']['user']['status'] < 1) { unset($dataul['sub_date']); } $modelUL->insert($dataul); //if the list is recorded already then let's check the status, if it is an unsubed one then we update it } else { if ($oldlistids[$list_id] > 0) { $modelUL->reset(); $modelUL->update(array('unsub_date' => 0, 'sub_date' => time()), array('user_id' => $id, 'list_id' => $list_id)); } } } } } //if a confirmation email needs to be sent then we send it if ($dbloptin && (int) $_POST['wysija']['user']['status'] == 0 && !empty($newlistids)) { $hUser =& WYSIJA::get('user', 'helper'); $hUser->sendConfirmationEmail($id, true, $newlistids); } if ((int) $_POST['wysija']['user']['status'] == 0 || (int) $_POST['wysija']['user']['status'] == 1) { $modelUL->reset(); $modelUL->update(array('unsub_date' => 0, 'sub_date' => time()), array('user_id' => $id, 'list_id' => $core_listids)); } $arrayLists = array(); if (isset($_POST['wysija']['user_list']['list_id'])) { $arrayLists = $_POST['wysija']['user_list']['list_id']; } $notEqual = array_merge($core_listids, $arrayLists); //delete the lists to which you've unsubscribed except the core ones $condiFirst = array('notequal' => array('list_id' => $notEqual), 'equal' => array('user_id' => $id, 'unsub_date' => 0)); $modelUL =& WYSIJA::get('user_list', 'model'); $modelUL->delete($condiFirst); $modelUL->reset(); } else { //instead of going through a classic save we should save through the helper $data = $_REQUEST['wysija']; $data['user_list']['list_ids'] = $data['user_list']['list_id']; unset($data['user_list']['list_id']); $data['message_success'] = __('Subscriber has been saved.', WYSIJA); $id = $helperUser->addSubscriber($data, true); //$id= parent::save(); if (!$id) { $this->viewShow = $this->action = 'add'; $data = array('details' => $_REQUEST['wysija']['user']); return $this->add($data); } } $this->redirect(); return true; }