Example #1
0
 public static function syncSubscribers($onlyAdd = false)
 {
     $db = JFactory::getDBO();
     $xf = new jNews_Config();
     $query = 'UPDATE IGNORE `#__jnews_subscribers` as S LEFT JOIN `#__users` AS U ON U.`id` = S.`user_id` SET S.`name` = U.`name`, S.`email` = U.`email`, S.`confirmed` = 1 - U.`block` WHERE U.`id` > 0 AND S.`user_id` > 0';
     $db->setQuery($query);
     $db->query();
     $query = 'SELECT M.* FROM `#__users` AS M ' . ' LEFT JOIN `#__jnews_subscribers` AS N ON M.email = N.email ' . ' WHERE N.id IS NULL AND M.block=0 AND M.registerDate<>\'0000-00-00 00:00:00\' ';
     $db->setQuery($query);
     $rows = $db->loadObjectList();
     if (!empty($rows)) {
         foreach ($rows as $row) {
             $query = "INSERT INTO `#__jnews_subscribers` (`user_id`,`subscribe_date`, `name`,`email`,`confirmed`)";
             $query .= " VALUES ( {$row->id} , '{$row->registerDate}', '" . addslashes($row->name) . "', '" . addslashes($row->email) . "' , 1 ) ";
             $db->setQuery($query);
             $db->query();
             $xf->plus('totalsubcribers0', 1);
             $xf->plus('act_totalsubcribers0', 1);
         }
     }
     if ($onlyAdd) {
         return true;
     }
     $query = 'SELECT M.* FROM `#__jnews_subscribers` AS M ' . ' LEFT JOIN `#__users` AS N ON N.id = M.user_id ' . ' WHERE N.id IS NULL AND M.user_id>0 ';
     // ORDER BY N.id
     $db->setQuery($query);
     $rows = $db->loadObjectList();
     if (!empty($rows)) {
         foreach ($rows as $row) {
             $query = 'DELETE FROM `#__jnews_subscribers` WHERE `id` = ' . $row->id;
             $db->setQuery($query);
             $db->query();
             $xf->plus('act_totalsubcribers0', -1);
             jNews_Queue::deleteSubsQueue($row->id, '');
         }
     }
     $query = 'SELECT N.id, N.name , N.email , N.block  FROM `#__users` AS N ' . ' LEFT JOIN `#__jnews_subscribers` AS M ON N.id = M.user_id ' . ' WHERE M.name != N.name  OR M.email != N.email OR N.block = M.confirmed';
     $db->setQuery($query);
     $rows = $db->loadObjectList();
     if (!empty($rows)) {
         foreach ($rows as $row) {
             if ($row->block == 1) {
                 $status = 0;
             } else {
                 $status = 1;
             }
             $query = "UPDATE IGNORE `#__jnews_subscribers` SET `name` ='" . $row->name . "' " . ", `email` = '" . $row->email . "' " . ", `confirmed` ='" . $status . "'  WHERE `user_id` = " . $row->id;
             $db->setQuery($query);
             $db->query();
         }
     }
     $query = 'SELECT N.id , N.email FROM `#__users` AS N ';
     $query .= 'LEFT JOIN `#__jnews_subscribers` AS M ON N.email = M.email ';
     $query .= ' WHERE M.user_id = 0 AND N.block = 0 ';
     $db->setQuery($query);
     $rows = $db->loadObjectList();
     if (!empty($rows)) {
         foreach ($rows as $row) {
             $query = "UPDATE `#__jnews_subscribers` AS S SET `user_id` = " . $row->id;
             $query .= " WHERE S.email = '{$row->email}'";
             $db->setQuery($query);
             $db->query();
         }
     }
     return true;
 }
Example #2
0
 /**
  * This public static function is used for deletion or removal of subscribers subscribed to lists
  */
 public static function removeSubscription($subscriber_id, $listids = 0)
 {
     $db = JFactory::getDBO();
     if ($subscriber_id > 0) {
         $query = 'DELETE FROM `#__jnews_listssubscribers` WHERE `subscriber_id` = ' . $subscriber_id;
         if ($listids > 0) {
             $query .= ' AND `list_id` =' . $listids;
         }
         $db->setQuery($query);
         $db->query();
         $db->getErrorMsg();
         if (@(require_once JNEWSPATH_CLASS . 'class.queue.php')) {
             if (class_exists('jNews_Queue')) {
                 jNews_Queue::deleteSubsQueue($subscriber_id, $listids);
             }
         }
     }
     return true;
 }