本次勋章开发体系针对的是phpwind8.7版本的一个介绍,勋章在8.7版本后对整个功能和技术架构体系做了很大的调整,从以前单文件过程模式到模块化面对像化架构变化。
apps
---medal
--action
--apply.php -- 申请勋章
--behavior.php -- 颁发勋章功能
--my.php -- 我的勋章前台处理页面
--admin
--manage.php 勋章管理功能--
--template 模版目录存放
--index.php 首页处理
1,index.php
<?php
!defined('A_P') && exit('Forbidden');
if (!$db_md_ifopen) Showmsg('勋章功能未开启');
/* 勋章前台显示 */
S::gp(array('a')); //接收GET,POST动作参数
!$winduid && Showmsg('not_login');
(!$a || !in_array($a, array('apply', 'my', 'all', 'behavior'))) && $a = 'all';
//判断动作参数是否在给定的数组中
$basename = 'apps.php?q=' . $q;
$current[$a] = 'class="current"'; //CSS选中参数
$typeArr = array('系统发放', '自动发放', '手动发放');
if ($a == 'my' || $a == 'all') {
require_once S::escapePath($appEntryBasePath
. 'action/my.php'); //我的勋章
} elseif ($a == 'apply') {
require_once S::escapePath($appEntryBasePath
. 'action/apply.php'); //我的勋章
} elseif ($a == 'behavior') {
require_once S::escapePath($appEntryBasePath
. 'action/behavior.php'); //用户行为AJAX提交
}
2,admin/manage.php
如果需要对勋章二次开发涉及到后台的管理只需要改动此文件即<?php
!function_exists('adminmsg') && exit('Forbidden');
!$action && $action = 'medal';
$medalService = L::loadClass('MedalService', 'medal'); /* 加載勋章Service*/
$medalCondition = $medalService->getAutoMedalType(); //勋章自动颁发条件
$actionCurrent[$action] = 'class="current"';
$typeArr = array('系统发放', '自动发放', '手动发放');
$issueWay = array('系统自动发放', '用户申请通过', '管理员发放'); //勋章发放途径
S::gp(array('type'));
/* 勋章管理:列表、添加、编辑、删除、批量操作 */
if ($action == 'medal') {
(!in_array($type, array('list', 'add', 'adddo', 'edit', 'editdo', 'del', 'batch','img'))) && $type = 'list';
/* 勋章管理-列表页面 */
if ($type == 'list') {
$medal
= $medalService->getAllMedals();
require_once PrintApp('admin_medal');
/* 勋章管理-勋章添加 */
}
elseif ($type == 'add') {
$creategroup
= getGroup(); //获取用户组
$openMedal = $medalService->getAllOpenAutoMedals(); //获取所有开启的勋章
$openMedal = getMedalJson($openMedal);
require_once PrintApp('admin_medal_add');
/* 勋章管理-勋章添加操作 */
}
elseif ($type == 'adddo') {
S::gp(array('name', 'image', 'descrip', 'tp', 'day', 'associate', 'confine', 'allow_group'));
if ($name == '') adminmsg('勋章名称不得为空',"$basename&type=add");
if ($image == '') adminmsg('medal_image_is_not_select',"$basename&type=add");
if ($descrip == '') adminmsg('勋章描述不得为空',"$basename&type=add");
if (!$allow_group) $allow_group = array(); //如果会员组为空,则空数组
if ($tp == 2) $confine = $day; //手动添加
if ($confine < 0) $confine = 0; //不能小于0
$info
= array(
'name' => $name,
'descrip' => $descrip,
'type' => (int) $tp,
'image' => $image,
'associate' => $associate,
'confine' => (int) $confine,
'allow_group' => $allow_group
);
$result
= $medalService->addMedal($info);
if (is_array($result)) {
adminmsg($result[1],"$basename&type=add");
}
else {
adminmsg('operate_success',"$basename");
}
/* 勋章管理-勋章编辑 */
}
elseif ($type == 'edit') {
S::gp(array('id'));
$id
= (int) $id;
if ($id < 1) adminmsg('operate_error',"$basename");
$medal =
$medalService->getMedal($id); //获取medal信息
if ($medal['type'] == 0) adminmsg('medal_system_is_not_edit',"$basename");
$creategroup
= getGroup($medal['allow_group']); //获取用户组
$openMedal = $medalService->getAllOpenAutoMedals(); //获取所有开启的勋章
$openMedal = getMedalJson($openMedal);
require_once PrintApp('admin_medal_add');
/* 勋章管理-勋章编辑操作 */
}
elseif ($type == 'editdo') {
S::gp(array('name', 'image', 'descrip', 'day', 'confine', 'allow_group', 'id'));
$id
= (int) $id;
if ($id < 1) adminmsg('operate_error',"$basename&type=add");
if ($name == '') adminmsg('勋章名称不得为空',"$basename&type=add");
if ($image == '') adminmsg('medal_image_is_not_select',"$basename&type=edit&id=" . $id);
if ($descrip == '') adminmsg('勋章描述不得为空',"$basename&type=add");
$medal
= $medalService->getMedal($id); //获取medal信息
if ($medal['type'] == 0) adminmsg('medal_system_is_not_edit',"$basename");
if ($medal['type'] == 2) $confine = $day; //手动添加
if (!$allow_group) $allow_group = array();
if ($confine < 0) $confine = 0; //不能小于0
$info
= array(
'name' => $name,
'descrip' => $descrip,
'image' => $image,
'confine' => (int) $confine,
'allow_group' => $allow_group
);
$result
= $medalService->updateMedal($id, $info);
if (is_array($result)) { //用系统的函数判断
adminmsg($result[1],"$basename&type=edit&id=" . $id);
}
else {
adminmsg('operate_success',"$basename");
}
/* 勋章管理-勋章删除操作 */
}
elseif ($type == 'del') {
S::gp(array('id'));
$id
= (int) $id;
if ($id < 1) adminmsg('operate_error',"$basename");
$medal
= $medalService->getMedal($id); //获取medal信息
if ($medal['type'] == 0) adminmsg('medal_system_is_not_del',"$basename");
$result
= $medalService->deleteMedal($id);
if (is_array($result)) {
adminmsg($result[1],"$basename");
}
else {
adminmsg('operate_success',"$basename");
}
/* 勋章管理-勋章批量操作 */
}
elseif ($type == 'batch') {
S::gp(array('name', 'sortorder', 'descrip','selid'));
foreach ($name as $k => $v) {
if ($k < 1) continue;
$info
= array(
'name' => $name[$k],
'sortorder' => $sortorder[$k],
'descrip' => $descrip[$k],
'is_open' => $selid[$k]
);
$medalService->updateMedal((int)$k, $info);
}
adminmsg('operate_success',"$basename");
/* 勋章管理-勋章图片AJAX读取 */
}
elseif ($type == 'img') { //图片
define('AJAX', 1);
//获取图片
$medalImg
= getMedalImgList();
require_once PrintApp('admin_medal_add');
ajax_footer();
}
/* 勋章会员 */
} elseif ($action == 'user') {
(!in_array($type, array('list', 'del','deldo', 'batchdel', 'batch', 'add', 'adddo'))) &&
$type = 'list';
/* 勋章会员列表 */
if ($type == 'list') {
S::gp(array('page','searchName', 'searchUsername', 'searchType'));
$userService
= L::loadClass('UserService', 'user'); /* @var $userService PW_UserService*/
//勋章分页列表
$condition
= array(); //装载搜索条件
if ($searchName) $condition['medal_id'] = (int) $searchName;
if ($searchUsername) {
$user
= $userService->getByUserName($searchUsername);
$condition['uid'] = ($user) ? $user['uid'] : -1;
}
if (is_numeric($searchType))
$condition['type'] = (int) $searchType;
(!is_numeric($page) || $page<1) && $page = 1;
list($medalAward, $medalAwardCount) =
$medalService->getAwardMedalUsers($condition,$page,20);
$pages
= numofpage($medalAwardCount, $page,ceil($medalAwardCount/20),"$basename&action=user&searchName=" . $searchName . "&searchUsername=" . $searchUsername .'&searchType=' . $searchType . '&');
//勋章信息
$openMedal
= $medalService->getAllMedals(); //获取所有的勋章
require_once PrintApp('admin_user');
/* 手动添加会员-ajax弹出框模式 */
}
elseif ($type == 'add') {
define('AJAX', 1);
$openManualMedals
= $medalService->getAllOpenManualMedals();//获取手动勋章
require_once PrintApp('admin_user');
ajax_footer();
/* 手动添加会员操作 */
}
elseif ($type == 'adddo') {
define('AJAX', 1);
S::gp(array('username','medal_id', 'descrip'));
$medal_id
= (int) $medal_id;
if ($medal_id < 1) adminmsg('operate_error', "$basename&action=user");
if (!$username) adminmsg('medal_username_error', "$basename&action=user");
$userService
= L::loadClass('UserService', 'user'); /* @var $userService PW_UserService*/
$user
= $userService->getByUserName($username);
if (!$user) adminmsg('medal_username_error', "$basename&action=user");
if ($appliInfo = $medalService->getApplyByUidAndMedalId($user['uid'], $medal_id)) {
$result
= $medalService->adoptApplyMedal($appliInfo['apply_id']); //审核通过,已经在审核表中的话
}
else {
$result
= $medalService->awardMedal($user['uid'], $medal_id, 0, array(),$descrip);//颁发勋章
}
if (is_array($result)) {
adminmsg($result[1], "$basename&action=user");
}
else {
//发送消息
adminmsg('medal_ajax_operate_success');
}
ajax_footer();
/* 删除操作 */
}
elseif ($type == 'del') {
define('AJAX', 1);
S::gp(array('id'),'',1);
$id
= (int) $id;
if ($id < 1) adminmsg('operate_error', "$basename&action=user");
require_once PrintApp('admin_user');
ajax_footer();
/* 删除操作 */
}
elseif ($type == 'deldo') {
define('AJAX', 1);
S::gp(array('id','descrip'));
$id
= (int) $id;
$descrip
= substrs($descrip, 200);
if ($id < 1) adminmsg('operate_error', "$basename&action=user");
$awardMedalInfo
= $medalService->getAwardMedalById($id);
$medal =
$medalService->getMedal($awardMedalInfo['medal_id']); //获取medal信息
if ($medal['type'] == 1) adminmsg('medal_error');
$result
= $medalService->recoverMedal($id,$descrip);//摘除操作
if (is_array($result)) {
adminmsg($result[1], "$basename&action=user");
}
else {
adminmsg('medal_ajax_operate_success');
}
ajax_footer();
/* 批量操作显示页面 */
}
elseif ($type == 'batchdel') {
define('AJAX', 1);
S::gp(array('id'));
if ($id == '') adminmsg('medal_is_not_select', "$basename&action=user");
require_once PrintApp('admin_user');
ajax_footer();
/* 批量操作 */
}
elseif ($type == 'batch') {
define('AJAX', 1);
S::gp(array( 'id','descrip'));
if ($id == '') adminmsg('medal_is_not_select',"$basename&action=user");
$id
= explode('|', $id);
$uidArr
= array();
foreach ($id as $v) {
$v
= (int) $v;
if ($v < 1) continue;
$awardMedalInfo
= $medalService->getAwardMedalById($v);
$uidArr[]
=
$awardMedalInfo['uid']; //消息发送的对象
$medalService->recoverMedal($v,'批量删除勋章');
}
adminmsg('medal_ajax_operate_success');
ajax_footer();
}
/* 勋章审核 */
} elseif ($action == 'verify') {
(!in_array($type, array('list', 'pass', 'batch'))) &&
$type = 'list';
/* 审核列表 */
if ($type == 'list') {
S::gp(array('searchName', 'searchUsername', 'page'));
$userService
= L::loadClass('UserService', 'user'); /* @var $userService PW_UserService*/
//搜索参数
$condtion
= array(); //装载搜索条件
if ($searchName) $condtion['medal_id'] = (int) $searchName;
if ($searchUsername) {
$user
= $userService->getByUserName($searchUsername);
$condtion['uid'] = ($user) ? $user['uid'] : 0;
}
(!is_numeric($page) || $page<1) && $page = 1;
list($medalApply, $medalApplyCount) =
$medalService->getApplyMedalUsers($condtion,$page,20);
$pages
= numofpage($medalApplyCount, $page,ceil($medalApplyCount/20),"$basename&action=verify&searchName=" . $searchName . "&searchUsername=" . $searchUsername .'&');
//勋章信息
$openMedal
= $medalService->getAllOpenManualMedals(); //获取所有开启的勋章
require_once PrintApp('admin_verify');
/* 审核通过-或者-不通过 */
}
elseif ($type == 'pass') {
S::gp(array('val', 'applyid'),'',2);
if ($applyid < 1) adminmsg('operate_error',"$basename&action=verify");
$result
= ($val == 1) ? $medalService->adoptApplyMedal($applyid) :
$medalService->refuseApplyMedal($applyid);
if (!$result) adminmsg('operate_error',"$basename&action=verify");
adminmsg('operate_success',"$basename&action=verify");
/* 批量操作 批量通过或者不通过 */
}
elseif ($type == 'batch') {
S::gp(array('passid', 'selid'));
if (!$selid) adminmsg('medal_is_not_select',"$basename&action=verify");
$passid
= (int) $passid;
$functionName
= ($passid == 1) ? 'adoptApplyMedal' : 'refuseApplyMedal';
foreach ($selid as $v) {
$v
= (int) $v;
if ($v < 1) continue;
$medalService->$functionName($v);
}
adminmsg('operate_success',"$basename&action=verify");
}
/* 勋章设置 */
} elseif ($action == 'set') {
S::gp(array('step'), 'P');
if(!$step){
ifcheck($db_md_ifopen,'ifopen');
ifcheck($db_md_ifapply,'ifapply');
require_once PrintApp('admin_set');
}
else {
S::gp(array('config'),'P');
foreach($config as $key=>$value){
setConfig($key, $value);
}
updatecache_c();//更新缓存
adminmsg('operate_success',"$basename&action=set");