主页 开发教程 【跟我学YouYaX二次开发】首页私密版块标识的开发~不计入正式版本~从0开始
狄默默斯基
发表于2014-04-08 13:42:41    只看楼主
楼主
头衔:  精益求精
注册时间: 2014-02-09
用户组: 日常管理组
发帖数:  557
金币数:  310
短消息
作者在写这篇文章时,对这功能心里也没底,但是尽管一试
那么功能阐述:我需要的是一个什么功能
如图所示,作者将进行现场开发
引用  你好陌生人 ~ 千万别说爱 ~ 让我保持等的姿势继续期待
 
狄默默斯基
发表于2014-04-08 13:52:18 1楼
头衔:  精益求精
注册时间: 2014-02-09
用户组: 日常管理组
发帖数:  557
金币数:  310
短消息
在开发这个功能之前,需要找到显示的地方,
模版Tpl/home/index.html,毫无疑问是这里,截取代码如下,
href="__APP__/List{url}index{url}f{url}<?php echo $v['id']; ?>{shtml}"><?php echo $v['szone'];?></a>

我们添加一个控制器,命名为PrivacyAction.php,这里可以修改为
<?php echo $v['szone'];?><?php if(PrivacyAction::NoPermission($_SESSION['youyax_user']))
{echo '<span style="font-size:12px;color:#ff0000;">(私)</span>'} ?></a>

先不管那个控制器里面的代码怎么写,思路是这样的,
判断PrivacyAction控制器下的静态方法NoPermission,传递一个当前用户名参数
引用  你好陌生人 ~ 千万别说爱 ~ 让我保持等的姿势继续期待
 
狄默默斯基
发表于2014-04-08 13:56:43 2楼
头衔:  精益求精
注册时间: 2014-02-09
用户组: 日常管理组
发帖数:  557
金币数:  310
短消息
接着按部就班,写控制器,大概轮廓先写好
<?php
class PrivacyAction extends YouYaX
{
    static function NoPermission($user)
    {
       
    }
}
?>
引用  你好陌生人 ~ 千万别说爱 ~ 让我保持等的姿势继续期待
 
狄默默斯基
发表于2014-04-08 14:07:42 3楼
头衔:  精益求精
注册时间: 2014-02-09
用户组: 日常管理组
发帖数:  557
金币数:  310
短消息
继续写代码
第一步操作根据$user判断所属用户组
$arr = self::find(C('db_prefix')."user","string","user='".$user."'");
$user_group = $arr['user_group'];

注意因为是静态方法,所以不能用$this,而要用self,功能是一样的
引用  你好陌生人 ~ 千万别说爱 ~ 让我保持等的姿势继续期待
 
admin
发表于2014-04-08 14:13:22 4楼
头衔:  精益求精
注册时间: 2012-10-07
用户组: 日常管理组
发帖数:  485
金币数:  185
短消息
自己都忘记一个用户只能连续回复3次了~
引用  把握生命里的每一分钟,没有人能随随便便成功~^_^
 
狄默默斯基
发表于2014-04-08 14:14:36 5楼
头衔:  精益求精
注册时间: 2014-02-09
用户组: 日常管理组
发帖数:  557
金币数:  310
短消息
第二步根据这个用户组,查找该用户组的版块权限
$arr2 = self::find(C('db_prefix')."user_group","string","id='".$user_group."'");
$purview = unserialize($arr2['purview']);

得到一个一维数组,存储着该用户组能够访问的版块ID
引用  你好陌生人 ~ 千万别说爱 ~ 让我保持等的姿势继续期待
 
狄默默斯基
发表于2014-04-08 14:16:58 6楼
头衔:  精益求精
注册时间: 2014-02-09
用户组: 日常管理组
发帖数:  557
金币数:  310
短消息
这时发现做不下去了,
开发者也是临时编程的,难免疏忽,不可能预先知道,
是的,少传了1个参数
PrivacyAction::NoPermission($_SESSION['youyax_user'],$v['id'])

应该把版块ID也传进去
引用  你好陌生人 ~ 千万别说爱 ~ 让我保持等的姿势继续期待
 
狄默默斯基
发表于2014-04-08 14:27:19
最后更新于 2014-04-08 14:27:43
7楼
头衔:  精益求精
注册时间: 2014-02-09
用户组: 日常管理组
发帖数:  557
金币数:  310
短消息
传上去的时候发现,登录用户没问题,而未登录用户有问题,
也就是说少判断了这种情况,所以还要加上未登录时的默认用户组判断,
PrivacyAction的所有代码如下
<?php
class PrivacyAction extends YouYaX
{
    static function NoPermission($user,$ID)
    {
    	if(empty($user)){
    		$config = require("./Conf/config.php");
    		$user_group = $config['not_log_in_user_group'];
    	} else {
       //第一步操作根据$user判断所属用户组
       		$arr = self::find(C('db_prefix')."user","string","user='".$user."'");
       		$user_group = $arr['user_group'];
       	}
       //第二步根据这个用户组,查找该用户组的版块权限
       $arr2 = self::find(C('db_prefix')."user_group","string","id='".$user_group."'");
       $purview = unserialize($arr2['purview']);
	     if(in_array($ID,$purview)){
	       	return false;
	      }else{
	      	return true;
	      }
    }
}
?>


引用  你好陌生人 ~ 千万别说爱 ~ 让我保持等的姿势继续期待
 
admin
发表于2014-04-08 14:29:57 8楼
头衔:  精益求精
注册时间: 2012-10-07
用户组: 日常管理组
发帖数:  485
金币数:  185
短消息
又到3次限制了,这个帐号平时不登陆的,开发者常用QQ登录帐号,有事短消息那个QQ的帐号
引用  把握生命里的每一分钟,没有人能随随便便成功~^_^
 
狄默默斯基
发表于2014-04-08 14:36:27 9楼
头衔:  精益求精
注册时间: 2014-02-09
用户组: 日常管理组
发帖数:  557
金币数:  310
短消息
这个功能完全是现场即兴发挥~
可以看到YouYaX的控制器模块的低耦合性和底层架构方法在所有控制器中都能通用,只要继承YouYaX类,
即 class XXX extends YouYaX
所以开发者认为这个论坛的二次开发不会比当前主流系统难的,
甚至开发还要更简单~得益于系统底层的架构,
如果你有一点技术能力,就能完全打造一款适合自身的论坛系统,
Waiting For You!!!
【友情提示:这个功能不在发布版本中,临场发挥的小功能】
引用  你好陌生人 ~ 千万别说爱 ~ 让我保持等的姿势继续期待

帖子已被锁定,已经无法回帖。

Powered BY YouYaX
个人自主开发论坛,从2010年10月份开发至今!

操作管理