Exemple #1
0
 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;
 }