手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表分类:PHP

thinkSNS 一些BUG列表

thinkSNS在最近的一段时间开发中,发现了不少BUG。。。没办法,谁让要用他的呢?

1、blog删除后跳转代码为redirect('index'),i应该大写,否则会报页面不存在的错误。
2、一些widget放在<inlucde footer>[<-左侧是伪代码]后面,导致有时候不能解析。好奇怪。。。有时候能够解析。
3、后台权限管理不正常,明明只选了一些简单的权限,但却多了一些不该有的权限。【准备改了,个人站点应该遇不到。毕竟就一个管理员】
4、如果后台把游客查看博客的权限打开,在前台反而会出错,因为博客页有评论,而读取评论列表时需要登录 。

其他一些未知BUG随着开发会越来越多。。有时候发现,thinksns作者是不是有点太粗心了?

不过。期望能够看到小游戏插件。黑黑,对分数排名很喜欢。

尝试开放labs.neatcn.com

这是一个尝试,其实在我的域名下已经有很多这样的实验性的代码了。不过都没有一一公布而己。

当然页面还没有做,提供的接口也仅仅是FOR PHPRPC的。【不是不想用hprose,实在没钱】

慢慢来吧。准备找个漂亮的页面抠回来写文档。呵呵

随记而己

 

ucapi注意:uc_feed_get函数的参数

discuz的几乎所有程序都有一个:加入事件,那么,其他平台怎么获取这个事件呢?那就是uc_feed_get方法了。但 事实上,有很多人都没有注意过这个方法有第二个参数。

如果你直接去uc的uc_feed表查看,你会经常性的发现这个表是空的。而autoIndex却很大,这又是为什么呢?

于是打开uc_client方法,却发现这个函数有两个参数,第一个参数是一次获取的条数,第二个参数是Delete,默认值为true,也就是说,获取完多少条后,他都会自动删除。因此uc_feed表就几乎是永远空着了。

但问题也就在这里。我怎么知道是哪个系统获取了这些feed呢?A系统获取Feed后,B是不是也获取到了呢。又怎么处理的呢?没有仔细看代码。。。

文档中uc_feed_get只提供了一个参数limit,可以查看:http://www.ucapi.com/api/feed.htm

建议在开发的时候,先找一个uc_feed_get方法。自己写程序处理。否则,应该会出现a系统有Feed,B系统没有Feed的情况。【慎重,主要还是没有队列。。。或者推送机制,否则在有了feed后,同步向各个系统推送一下Feed呢?不就结束了?】

uchome的UC接口中有一个addfeed方法,理论上是应该在其他系统添加后往uc.php推送的。只是没有看到哪里有推送代码。。。难道是放在事件中?迷惘了。

使用PHPRPC时的一点点郁闷 。。

不想多说啥。。。随便上代码 。。【include的时候是伪代码】

PHP代码
  1. include(phprc)  
  2. include(classfile);  
  3. if(isset($_SESSION['t'])){  
  4.    $_SESSION['t'] = new classfile;  
  5. }  
  6. $server = new phprpcserver;  
  7. $server->add($_SESSION['t']);  
  8. $server->start();  

不正常。。。如果把上面代码的第1、2行颠倒一下就行了。即:

PHP代码
  1. include(classfile);    
  2. include(phprc);    

OK,一切正常了。开始没发现。因为官方的例子是把测试用例写在同一个文件里。。所以一点问题都没有。。
郁闷了整整一天

ThinkSNS 插件配置BUG

由于最近一直在使用thinksns,所以相对关注的就比较多了一点。BUG偶尔也会发现一些,小的就不提了,没意义,偶尔也有可能是手误的关系,但一些稍大一点的。我还是写下来做个记录。。

比如这个插件配置的BUG。

一般来说,项目的配置要覆盖原始配置都是array_merge就结束了。于是乎,ThinkSNS在每个插件的Conf目录下的Config文件里也都有这么一行。

然而。。。问题就出来这里,插件的作者好象都没有注意过Array_merge的作用范围。

大多情况都是这样写的:

PHP代码
  1. $miniConfig = array (  
  2.     'DEBUG_MODE'        =>  false,  
  3.     'DEFAULT_ACTION'    =>   'index',  
  4. );  
  5. $array = require_once( SITE_PATH.'/config.inc.php' );  
  6. $array = array_merge$miniConfig,$array );  
OK,让我们来温习一下array_merge函数。
XML/HTML代码
  1. array_merge() merges the elements of one or more arrays together so that the values of one are appended to the end of the previous one. It returns the resulting array.   
  2.   
  3. If the input arrays have the same string keys, then the later value for that key will overwrite the previous one. If, however, the arrays contain numeric keys, the later value will not overwrite the original value, but will be appended.   
  4.   
  5. If only one array is given and the array is numerically indexed, the keys get reindexed in a continuous way.   

看到第二段没?如果有相同的KEY,后面的会覆盖前面的。。那么。。上面第6行的array_merge,和没运行有什么区别???

把参数顺序颠倒一下就OK了。。。