function cron_wmzz_ban() { global $m; $s = unserialize(option::get('plugin_wmzz_ban')); $now = strtotime(date('Y-m-d')); $y = $m->query("SELECT * FROM `" . DB_PREFIX . "wmzz_ban` WHERE `nextdo` <= '{$now}' LIMIT {$s['limit']}"); while ($x = $m->fetch_array($y)) { $r = wmzz_ban_getTime($x['date']); if ($r != '-1') { $bduss = misc::getCookie($x['pid']); $c = new wcurl('http://tieba.baidu.com/pmc/blockid'); $c->addcookie('BDUSS=' . $bduss); $c->post(array('user_name[]' => $x['user'], 'day' => $r, 'fid' => misc::getFid($x['tieba']), 'tbs' => misc::getTbs($x['uid'], $bduss), 'ie' => 'utf-8', 'reason' => $s['msg'])); $next = $now + $r * 86400; $m->query("UPDATE `" . DB_PREFIX . "wmzz_ban` SET `nextdo` = '{$next}' WHERE `id` = '{$x['id']}'"); } else { $m->query("DELETE FROM `" . DB_PREFIX . "wmzz_ban` WHERE `id` = '{$x['id']}'"); } } }
/** * 对一个贴吧执行完整的签到任务 */ public static function DoSign_All($uid, $kw, $id, $table, $sign_mode, $pid, $fid) { global $m; $again_error_id = 160002; //重复签到错误代码 $again_error_id_2 = 1101; //特殊的重复签到错误代码!!!签到过快=已签到 $again_error_id_3 = 1102; //特殊的重复签到错误代码!!!签到过快=已签到 $status_succ = false; $ck = misc::getCookie($pid); $kw = addslashes($kw); $today = date('d'); if (empty($fid)) { $fid = misc::getFid($kw); $m->query("UPDATE `" . DB_PREFIX . $table . "` SET `fid` = '{$fid}' WHERE `" . DB_PREFIX . $table . "`.`id` = '{$id}';", true); } //dump(json_decode(self::DoSign_Client($uid,$kw,$id,$pid,$fid,$ck),true),true);die; if (!empty($sign_mode) && in_array('1', $sign_mode) && $status_succ === false) { $r = self::DoSign_Client($uid, $kw, $id, $pid, $fid, $ck); $v = json_decode($r, true); if ($v != $r && $v != NULL) { //decode失败时会直接返回原文或NULL if (empty($v['error_code']) || $v['error_code'] == $again_error_id) { $status_succ = true; } else { $error_code = $v['error_code']; $error_msg = $v['error_msg']; } } } if (!empty($sign_mode) && in_array('3', $sign_mode) && $status_succ === false) { $r = self::DoSign_Mobile($uid, $kw, $id, $pid, $fid, $ck); $v = json_decode($r, true); if ($v != $r && $v != NULL) { //decode失败时会直接返回原文或NULL if (empty($v['no']) || $v['no'] == $again_error_id_2 || $v['no'] == $again_error_id_3) { $status_succ = true; } else { $error_code = $v['no']; $error_msg = $v['error']; } } } if (!empty($sign_mode) && in_array('2', $sign_mode) && $status_succ === false) { if (self::DoSign_Default($uid, $kw, $id, $pid, $fid, $ck) === true) { $status_succ = true; } } if ($status_succ === true) { $m->query("UPDATE `" . DB_NAME . "`.`" . DB_PREFIX . $table . "` SET `latest` = '" . $today . "',`status` = '0',`last_error` = NULL WHERE `" . DB_PREFIX . $table . "`.`id` = '{$id}'", true); } else { $m->query("UPDATE `" . DB_NAME . "`.`" . DB_PREFIX . $table . "` SET `latest` = '" . $today . "',`status` = '" . $error_code . "',`last_error` = '" . $error_msg . "' WHERE `" . DB_PREFIX . $table . "`.`id` = '{$id}'", true); } usleep(option::get('sign_sleep') * 1000); }