コード例 #1
0
ファイル: class.subscribers.php プロジェクト: naka211/kkvn
 /**
  * This public static function is used by jnews_cb plugin
  */
 public static function updateCBSubscribers($force = false, $install = false)
 {
     $db = JFactory::getDBO();
     $time = isset($GLOBALS[JNEWS . 'last_sub_update']) && $GLOBALS[JNEWS . 'last_sub_update'] > 0 ? $GLOBALS[JNEWS . 'last_sub_update'] : 200000;
     $newTask = mktime(date("H") - 1, date("i"), date("s"), date("m"), date("d"), date("Y"));
     if ($force or $newTask > $GLOBALS[JNEWS . 'last_sub_update']) {
         $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();
         $xf = new jNews_Config();
         $newtime = mktime(date("H", $time), date("i", $time), date("s", $time), date("m", $time), date("d", $time) - 2, date("Y", $time));
         if ($install) {
             $newtime = 0;
         }
         $oneDay = date('Y-m-d H:i:s', $newtime);
         $query = 'SELECT M.* FROM `#__users` AS M ' . ' LEFT JOIN `#__jnews_subscribers` AS N ON M.email = N.email ';
         $query .= ' WHERE M.registerDate > \'' . $oneDay . '\'';
         $query .= ' AND  N.id IS NULL AND M.block=0 ';
         $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);
                 $lists = jNews_Lists::getLists(0, 0, null, '', true, false, false);
                 if (!empty($lists)) {
                     foreach ($lists as $list) {
                         $qid[0] = jNews_Subscribers::getSubscriberId($row->registerDate);
                         $subscriber = jNews_Subscribers::getSubscribersFromId($qid, false);
                         $subId = array();
                         //if ( isset($subscriber->id) ) {
                         //$subId[0] =  $subscriber->id;
                         // jNews_Queue::insertQueuesForNews($subId, $list->id, 29 );
                         ////$subscriberInfo=jNews_ListsSubs::getListidsSubscribedInfo($subscriber->id);
                         //jNews_Queue::updateQueues($subId, '', $list->id, @$list->acc_id, true);
                         // }
                     }
                 }
             }
         }
         $query = 'SELECT M.* FROM `#__jnews_subscribers` AS M ' . ' LEFT JOIN `#__users` AS N ON N.id = M.user_id ';
         $query .= ' WHERE N.registerDate > \'' . $oneDay . '\'';
         $query .= ' AND M.subscribe_date > \'' . $oneDay . '\'';
         $query .= ' AND  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_ListsSubs::removeSubscription($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 ';
         $query .= ' WHERE  N.registerDate > \'' . $oneDay . '\'';
         $query .= ' AND M.subscribe_date > \'' . $oneDay . '\'';
         $query .= ' AND 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` ='" . addslashes($row->name) . "' " . ", `email` = '" . addslashes($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 N.registerDate > \'' . $oneDay . '\'';
         $query .= ' AND M.subscribe_date > \'' . $oneDay . '\'';
         $query .= ' AND 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);
             }
         }
         $xf->update('last_sub_update', time());
         return true;
     }
 }