Ucenter客户端开发文件
client/model/app.php中方法 get_apps 方法如下:
function get_apps($col = '*', $where = '') {
$arr = $this->db->fetch_all("SELECT $col FROM ".UC_DBTABLEPRE."applications".($where ? ' WHERE '.$where : ''), 'appid');
foreach($arr as $k => $v) {
isset($v['extra']) && !empty($v['extra']) && $v['extra'] = unserialize($v['extra']);//如果extra 字段有值,就会unserialize一值
unset($v['authkey']);
$arr[$k] = $v;
}
return $arr;
}
client/control/app.php中有一个调用
function onls() {
$this->init_input();
$applist = $_ENV['app']->get_apps('appid, type, name, url, tagtemplates, viewprourl, synlogin');
$applist2 = array();
/*注意这个地方的$this->unserialize($app['tagtemplates']),下面有一个比较*/
foreach($applist as $key => $app) {
$app['tagtemplates'] = $this->unserialize($app['tagtemplates']);
$applist2[$app['appid']] = $app;
}
return $applist2;
}
现在看下client/control/cache.php 中的方法 onupdate()
function onupdate($arr) {
$this->load("cache");
$_ENV['cache']->updatedata();
}
,转到client/model/cache.php 中updatedate()代码如下
function _get_apps() {
$this->base->load('app');
$apps = $_ENV['app']->get_apps();//在这个函数中,好像extra字段,已经unserialize 一次了,
$apps2 = array();
if(is_array($apps)) {
foreach($apps as $v) {
$v['extra'] = unserialize($v['extra']);//注意这个地方,unserialize了一次,好像这是第二次,是不是有问题?
$apps2[$v['appid']] = $v;
}
/*应该改成
isset($v['extra']) && !empty($v['extra']) && $v['extra'] = unserialize($v['extra']);
$arr[$k] = $v;
*/
}
return $apps2;
}
问题在注释中已经提交,不是这是不是BUG~~
|