嗷嗷答 - 嗷嗷好的公务员考试网络答题平台

typecho插件实现新注册用户为“贡献者”

作者:不烦恼 发布时间:April 6, 2011 分类:快乐学习

利用下班前的10分钟写了这个再简单不过的插件,实现了typecho新注册用户为“贡献者”。
详情及下载见论坛:http://forum.typecho.org/topic.php?id=1745
../plugins/RegContributor.php(最新修改加入是否允许“贡献者”管理文章及相关评论功能)

  1. <?php
  2. /**
  3.  * 新注册用户为贡献者(用户组)
  4.  *
  5.  * @package RegContributor
  6.  * @author 不烦恼
  7.  * @version 1.0.1
  8.  * @link http://bufannao.com
  9.  */
  10. class RegContributor implements Typecho_Plugin_Interface
  11. {
  12. /**
  13.   * 激活插件方法,如果激活失败,直接抛出异常
  14.   *
  15.   * @access public
  16.   * @return void
  17.   * @throws Typecho_Plugin_Exception
  18.   */
  19. public static function activate(){
  20. Typecho_Plugin::factory('Widget_Register')->register = array('RegContributor', 'register');
  21. /* 实在是找不着接口的位置,只能插入到这里了 */
  22. Typecho_Plugin::factory('index.php')->begin = array('RegContributor', 'disableManage');
  23. }
  24.  
  25. /**
  26.   * 禁用插件方法,如果禁用失败,直接抛出异常
  27.   *
  28.   * @static
  29.   * @access public
  30.   * @return void
  31.   * @throws Typecho_Plugin_Exception
  32.   */
  33. public static function deactivate(){}
  34.  
  35. /**
  36.   * 获取插件配置面板
  37.   *
  38.   * @access public
  39.   * @param Typecho_Widget_Helper_Form $form 配置面板
  40.   * @return void
  41.   */
  42. public static function config(Typecho_Widget_Helper_Form $form){
  43. $manage = new Typecho_Widget_Helper_Form_Element_Radio('manage',
  44. array('true' => '是',
  45. 'false' => '否'),
  46. 'true', '允许管理','是否允许“贡献者”编辑或删除自己发布的文章及文章下的评论');
  47. $form->addInput($manage);
  48. }
  49.  
  50. /**
  51.   * 个人用户的配置面板
  52.   *
  53.   * @access public
  54.   * @param Typecho_Widget_Helper_Form $form
  55.   * @return void
  56.   */
  57. public static function personalConfig(Typecho_Widget_Helper_Form $form){}
  58.  
  59. /**
  60. * 插件实现方法(注册贡献者)
  61. *
  62. * @access public
  63. * @return void
  64. */
  65. public static function register($dataStruct){
  66.  
  67. $dataStruct['group'] = 'contributor';
  68. return $dataStruct;
  69. }
  70.  
  71. /**
  72. * 插件实现方法(禁止管理文章)
  73. *
  74. * @access public
  75. * @return void
  76. */
  77. public static function disableManage(){
  78. if(Helper::options()->plugin('RegContributor')->manage == 'false') {
  79. Typecho_Widget::widget('Widget_User')->to($user);
  80. if(((!empty($user->request->cid) AND $user->request->do == 'publish') OR $user->request->do == 'delete' ) AND !$user->pass('editor', true)){
  81. throw new Typecho_Widget_Exception(_t('没有编辑权限'), 403);
  82. }
  83. }
  84. return;
  85. }
  86.  
  87. }

附:写typecho的插件重点是要了解插件接口。

已有 11 条评论 »

  1. 随着 飞天舞的脚步。。。支持一下。

  2. 不烦恼兄的插件太给力了,我最近也学着研究捣鼓一下,O(∩_∩)O~

    1. 支持啊,到时候学习一下!

  3. csweb csweb

    站长,我爱你啊! 哈哈!XD

    1. 你要把这功能用在哪里啊?也不留个网站……
      其实还可以再细分,允许删除?允许编辑?允许管理文章的评论?
      暂时先用着吧,我要先把“足迹”这个插件写完。

  4. csweb csweb

    站长,麻烦查看论坛,有新回复,谢谢!

    1. 已解决,看本文的代码(已更新)

  5. 真是速度~~顶你!看来以后需要插件就找你了,哇哈哈

    1. 尽力而为,互相帮助!

添加新评论 »