Typecho飘雪插件 (2016.1.5更新)
2015年的圣诞节就要来临~
看到各个博友们站点都加了飘雪效果,爱折腾的我也弄了几个~
觉得好东西要分享,故我做了个Typecho插件,因为不知道取名叫什么,就只好取名Snow了。
废话不多说了~~
2015年的圣诞节就要来临~
看到各个博友们站点都加了飘雪效果,爱折腾的我也弄了几个~
觉得好东西要分享,故我做了个Typecho插件,因为不知道取名叫什么,就只好取名Snow了。
废话不多说了~~
代码:
<?php
header("Access-Control-Allow-Origin: *");
function curlReq($url, $post = false, $data = array(), $headers = array(), $resp = 0, $timeout = 10, $CA = true) {
$cacert = getcwd() . '/cacert.pem';
$SSL = substr($url, 0, 8) == "https://" ? true : false;
$cookie_file = dirname(__FILE__)."/data.cookie";
$ch = curl_init();
@curl_setopt($ch, CURLOPT_URL, $url);
if ($resp == 0) {
@curl_setopt($ch, CURLOPT_HEADER, false);
} else {
@curl_setopt($ch, CURLOPT_HEADER, true);
}
@curl_setopt($ch, CURLOPT_FAILONERROR, false);
@curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
@curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout - 2);
if ($SSL && $CA) {
@curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
@curl_setopt($ch, CURLOPT_CAINFO, $cacert);
} else if ($SSL && !$CA) {
@curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
}
@curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12A365 MicroMessenger/5.4.1 NetType/WIFI');
$ip = '49.86'.'.'.rand(1, 255).'.'.rand(1, 255);
$headers[] = 'CLIENT-IP: '.$ip;
@curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
@curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
@curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
@curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
if ($post) {
@curl_setopt($ch, CURLOPT_POST, true);
@curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
}
ob_start();
$ret = curl_exec($ch);
$content = ob_get_contents();
ob_end_clean();
$rescode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
return $content;
}
if (strtoupper($_SERVER['REQUEST_METHOD']) == 'POST') {
try {
$required_areas = [
'qq' => 'QQ', 'sid' => 'SID', 'sname' => '机型', 'content' => '内容',
];
foreach ($required_areas as $required_area => $required_area_text) {
if (!isset($_POST[$required_area]) || empty($_POST[$required_area])) {
$alert_message = '请填写 '.$required_area_text.' 字段';
throw new exception('alert-danger');
}
}
$publish_url = 'http://m.qzone.com/mood/publish_mood';
$post = [
'content' => $_POST['content'],
'sid' => $_POST['sid'],
'lon' => '',
'lat' => '',
'lbsid' => '',
'res_uin' => $_POST['qq'],
'richval' => '',
'source_name' => $_POST['sname'],
'is_winphone' => '2',
'opr_type' => 'publish_shuoshuo',
'format' => 'json',
'issyncweibo' => '0',
];
$result = curlReq($publish_url, true, $post);
if (!$result) {
$alert_message = '与空间服务器的通信异常。';
throw new exception('alert-danger');
}
$res = json_decode($result, true);
if (!$res || !isset($res['code']) || !isset($res['subcode']) || !isset($res['message'])) {
$alert_message = '发布状态无效。';
throw new exception('alert-danger');
}
if ($res['code'] == 0) {
$alert_message = '说说发表成功,请在手机空间客户端查看效果!';
throw new exception('alert-success');
} else {
$alert_message = '说说发表失败!<br />错误代码:'.(int)$res['code'].' ('.(int)$res['subcode'].')<br />错误信息:'.htmlspecialchars($res['message']);
throw new exception('alert-danger');
}
} catch (exception $e) {
$alert = true;
$alert_type = $e->getMessage();
}
}
?>
public function object_to_array($obj) // 对象转数组
{
$_arr = is_object($obj) ? get_object_vars($obj) : $obj;
foreach ($_arr as $key => $val) {
$val = (is_array($val) || is_object($val)) ? $this->object_to_array($val) : $val;
$arr[$key] = is_numeric($val) ? number_format($val, 0, '', '') : $val;//解决科学计数问题
}
return $arr;
}
cycript -p "appname"
查看view结构:
?expand
[[UIApp keyWind] recursiveDescription]
窗口操作:
ctl + c 取消(cancel)一个方法
ctrl + d 退出 cycript 或者用 ?exit
初始化函数
%init
%init([<class>=<expr>, …])
%init(Group[, [+|-]<class>=<expr>, …])
初始化一个组,如果没有参数表示初始化’_ungrouped’组.