Пример #1
0
	public function sync($offset = 0)
	{
		if ($this->wxuser['winxintype'] < 3) {
			$this->error('没有权限');
		}

		$material = new Material($this->wxuser);
		$params['post'] = json_encode(array('type' => 'image', 'offset' => $offset, 'count' => '10'));
		$result = $material->batchget($params);
		$dirname = '/uploads/' . substr($this->token, 0, 1) . '/' . $this->token . '/material/';

		if ('local' == $this->upload_type) {
			$this->_mkdir('.' . $dirname);
		}

		$params['header'] = array('REFERER' => 'http://www.qq.com');

		foreach ($result->item as $key => $value) {
			if (!empty($value->url)) {
				$file = D('Files')->where(array('sync_url' => $value->url, 'token' => $this->token))->find();

				if (empty($file)) {
					$img = HttpClient::getInstance()->get($value->url, $params);
					$extension = pathinfo($value->name, PATHINFO_EXTENSION);
					$filename = $dirname . sha1($value->url) . '.' . $extension;

					if ('upyun' == $this->upload_type) {
						$upyun_pic = new UpYun(UNYUN_BUCKET, UNYUN_USERNAME, UNYUN_PASSWORD, $api_access[0]);

						try {
							$api_access = array(UpYun::ED_AUTO, UpYun::ED_TELECOM, UpYun::ED_CNC, UpYun::ED_CTT);
							$domain_pic = 'http://' . UNYUN_DOMAIN;
							$dir_pic = '/' . $this->token . '/material/' . sha1($value->url) . '.' . $extension;
							$upyun_pic->writeFile($dir_pic, $img, true);
							$filename = $domain_pic . $dir_pic;
						}
						catch (Exception $e) {
							echo json_encode(array('error' => 1, 'message' => $e->getCode() . ':' . $e->getMessage()));
						}
					}
					else {
						$size = file_put_contents('.' . $filename, $img);
						$filename = $this->siteUrl . $filename;
					}

					$Files = new Files();
					$Files->index($filename, $size, $extension, $this->user['id'], $this->token, 0, $value->url, $value->media_id);
				}
			}
		}

		if (($offset + $result->item_count) < $result->total_count) {
			$this->success('正在同步 ' . $offset . ' - ' . ($offset + $result->item_count) . '张图片,请稍等...不要关闭此窗口', U('Upyun/sync', array('offset' => $offset + $result->item_count)));
		}
		else {
			$this->success('同步完成', U('Img/index'));
		}
	}