register_11 = array('Rdog_Plugin', 'zhuce'); Typecho_Plugin::factory('Widget_Register')->finishRegister_11 = array('Rdog_Plugin', 'zhucewan'); Typecho_Plugin::factory('Widget_Contents_Post_Edit')->write_11 = array('Rdog_Plugin', 'fabu'); Typecho_Plugin::factory('Widget_Contents_Post_Edit')->finishPublish_11 = array('Rdog_Plugin', 'fabuwan'); Typecho_Plugin::factory('admin/footer.php')->end_11 = array('Rdog_Plugin', 'footerjs'); } /** * 禁用插件方法,如果禁用失败,直接抛出异常 * * @static * @access public * @return void * @throws Typecho_Plugin_Exception */ public static function deactivate(){} /** * 获取插件配置面板 * * @access public * @param Typecho_Widget_Helper_Form $form 配置面板 * @return void */ public static function config(Typecho_Widget_Helper_Form $form) { //echo '
';
//$catinfo=Typecho_Widget::widget('Widget_Metas_Category_List')->stack;
//$catmid = array_column($catinfo, 'mid');
//print_r($catmid);
$yonghuzu = new Typecho_Widget_Helper_Form_Element_Radio('yonghuzu',array(
'visitor' => _t('访问者'),
'subscriber' => _t('关注者'),
'contributor' => _t('贡献者'),
'editor' => _t('编辑'),
'administrator' => _t('管理员')
),'subscriber',_t('注册用户默认用户组设置'),_t('
不同的用户组拥有不同的权限,具体的权限分配表请参考这里.
'));
$form->addInput($yonghuzu);
$tuozhan = new Typecho_Widget_Helper_Form_Element_Checkbox('tuozhan',
array('contributor-nb' => _t('勾选该选项让【贡献者】直接发布文章无需审核'),
'register-nb' => _t('勾选该选项后台注册功能将可以直接设置注册密码'),
),
array(), _t('拓展设置'), _t(''));
$form->addInput($tuozhan->multiMode());
$tcat = new Typecho_Widget_Helper_Form_Element_Text('tcat', NULL, NULL, _t('特例分类'), _t('在这里填入一个分类mid,分类间用英文的半角逗号隔开如【1,2】,这些分类贡献者发布文章也必须需要经过审核!'));
$form->addInput($tcat);
}
/**
* 个人用户的配置面板
*
* @access public
* @param Typecho_Widget_Helper_Form $form
* @return void
*/
public static function personalConfig(Typecho_Widget_Helper_Form $form){}
/**
* 插件实现方法
*
* @access public
* @return void
*/
public static function zhuce($v) {
/*获取插件设置*/
$yonghuzu = Typecho_Widget::widget('Widget_Options')->plugin('Rdog')->yonghuzu;
$hasher = new PasswordHash(8, true);
/*判断注册表单是否有密码*/
if(isset(Typecho_Widget::widget('Widget_Register')->request->password)){
/*将密码设定为用户输入的密码*/
$generatedPassword = Typecho_Widget::widget('Widget_Register')->request->password;
}else{
/*用户没输入密码,随机密码*/
$generatedPassword = Typecho_Common::randString(7);
}
/*将密码设置为常量,方便下个函数adu()直接获取*/
define('passd', $generatedPassword);
/*将密码加密*/
$wPassword = $hasher->HashPassword($generatedPassword);
/*设置用户密码*/
$v['password']=$wPassword;
/*将注册用户默认用户组改为插件设置的用户组*/
$v['group']=$yonghuzu;
/*返回注册参数*/
return $v;
}
public static function zhucewan($obj) {
/*获取密码*/
$wPassword=passd;
/*登录账号*/
$obj->user->login($obj->request->name,$wPassword);
/*删除cookie*/
Typecho_Cookie::delete('__typecho_first_run');
Typecho_Cookie::delete('__typecho_remember_name');
Typecho_Cookie::delete('__typecho_remember_mail');
/*发出提示*/
$obj->widget('Widget_Notice')->set(_t('用户 %s 已经成功注册, 密码为 %s', $obj->screenName, $wPassword), 'success');
/*跳转地址(后台)*/
if (NULL != $obj->request->referer) {
$obj->response->redirect($obj->request->referer);
}else if(NULL != $obj->request->tz){
if (Helper::options()->rewrite==0){$authorurl=Helper::options()->rootUrl.'/index.php/author/';}else{$authorurl=Helper::options()->rootUrl.'/author/';}
$obj->response->redirect($authorurl.$obj->user->uid);
}else{
$obj->response->redirect($obj->options->adminUrl);
}
}
public static function fabu($con,$obj) {
/*插件用户设置是否勾选*/
if (!empty(Typecho_Widget::widget('Widget_Options')->plugin('Rdog')->tuozhan) && in_array('contributor-nb', Typecho_Widget::widget('Widget_Options')->plugin('Rdog')->tuozhan)){
/*获取插件设置的分类id*/
$tcat = Typecho_Widget::widget('Widget_Options')->plugin('Rdog')->tcat;
/*转成数组*/
$t=explode(",",$tcat);
/*求插件设置的分类id数据与用户勾选的分类数据交集*/
$result=array_intersect($t,$con['category']);
/*不存在交集*/
if(count($result)==0){
/*如果用户是贡献者临时给予编辑权限,并且非特例分类*/
if($obj->author->group=='contributor'||$obj->user->group=='contributor'){
$obj->user->group='editor';
}
}
}
return $con;
}
public static function fabuwan($con,$obj) {
/** 跳转验证后地址 */
if (NULL != $obj->request->referer) {
/** 发送ping */
$trackback = array_unique(preg_split("/(\r|\n|\r\n)/", trim($obj->request->trackback)));
$obj->widget('Widget_Service')->sendPing($obj->cid, $trackback);
/** 设置提示信息 */
$obj->widget('Widget_Notice')->set('post' == $obj->type ?
_t('文章 "%s" 已经发布', $obj->permalink, $obj->title) :
_t('文章 "%s" 等待审核', $obj->title), 'success');
/** 设置高亮 */
$obj->widget('Widget_Notice')->highlight($obj->theId);
/** 获取页面偏移 */
$pageQuery = $obj->getPageOffsetQuery($obj->cid);
/** 页面跳转 */
$obj->response->redirect($obj->request->referer);
} else{
return $con;
}
}
public static function footerjs(){
if (!empty(Typecho_Widget::widget('Widget_Options')->plugin('Rdog')->tuozhan) && in_array('register-nb', Typecho_Widget::widget('Widget_Options')->plugin('Rdog')->tuozhan)){
?>