Skip to content

如果编写一个module(2)—— 数据库相关

50573750 edited this page Dec 18, 2011 · 1 revision

如果编写一个module(2)—— 数据库相关

/db/install.xml 文件,这个文件是现在数据库你唯一需要改的文件。

其实,你可以用moodle提供的DBXML编辑器来写这个文件,但是那样我觉的不是很自由,咱们还是用xml来写哈: `

	<TABLE NAME="gboard_list" COMMENT="Default comment for the table, please edit me" PREVIOUS="gboard">
	<FIELDS>
		<FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" SEQUENCE="true" NEXT="main_id"/>
		<FIELD NAME="main_id" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" SEQUENCE="false" PREVIOUS="id" NEXT="givee"/>
		<FIELD NAME="givee" TYPE="char" LENGTH="255" NOTNULL="true" SEQUENCE="false" PREVIOUS="main_id" NEXT="reason"/>
		<FIELD NAME="reason" TYPE="text" LENGTH="medium" NOTNULL="false" SEQUENCE="false" PREVIOUS="givee" NEXT="givor"/>
		<FIELD NAME="givor" TYPE="char" LENGTH="255" NOTNULL="true" SEQUENCE="false" PREVIOUS="reason"/>
	</FIELDS>
	<KEYS>
		<KEY NAME="primary" TYPE="primary" FIELDS="id"/>
	</KEYS>
	</TABLE>
</TABLES>
`

以上就是XML格式的数据库,我相信你已经顾名思义了; 但是你要注意几点: 1.第一个表,不要改,这个表都是这样子的,而且这个表的名字必须是你文件夹的名字!这个表体现的是哪门课使用了你的插件! 2.第二个表以后都是随意的改的,这个可以设置一个外键到第一个表上。 3.SEQUENCE 这个属性,就是auto-increasement,这个意思;这里规定,SEQUENCE=true的必须是主键,而且只能有一个!

/db/install.xml 文件, 这个文件主要是xmldb(上面写的xml表现的DB)的安装和回复触发的函数:

function xmldb_newmodule_install() {} function xmldb_newmodule_install_recovery() {}

/db/uninstall.php 文件,就一个触发函数,主要用于卸载时触发

function xmldb_newmodule_uninstall() {return true; /*卸载成功*/}

/db/upgrade.php 文件,就是在你改变版本的时候,需要对原有的插件升级,特别是数据库的升级,这部分就是负责这个的,具体的数据库的操作,请参考其他的wiki教程。

function xmldb_newmodule_upgrade($oldversion){};

/db/access.php 文件,这个文件里面声明了一个数组,这个数组记录了很多你自己设置好的权限,并给这些权限一个名字,只要在相应的地方, 用函数召唤这些权限的名字,就可以验证权限。

$capabilities = array ( 'mod/gboard:view' => array( //是读还是写; 'captype' => 'read', //上下文的级别; 'contextlevel' => CONTEXT_MODULE, //以下是每个人物的权限,人物顾名思义,权限也是! 'legacy' => array( 'guest' => CAP_PROHIBIT, 'student' => CAP_PREVENT, 'teacher' => CAP_ALLOW, 'editingteacher' => CAP_ALLOW, 'admin' => CAP_ALLOW ) ), );

好了,到此数据库相关的文件,你就明白了大体的意思了,我们开始,进入一下各个文件的分析阶段哈。

Clone this wiki locally