owncloud源码分析2--数据库增删改查
Posted 新长征路上的码农
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了owncloud源码分析2--数据库增删改查相关的知识,希望对你有一定的参考价值。
数据库增删改查方法
把到目前位置整理的一起放在这里
以下都是在这个中进行的操作:E:wampwwwowncloudlibprivatefilescachecache.php
1、增加
put方法中的如下图位置插入数据
插入正确返回最新一条的id即插入的数据的id。(实现在E:wampwwwowncloudlibprivatedbadapter.php中)
在这里用这个链接插入数据
E:wampwwwowncloud3rdpartydoctrinedballibDoctrineDBALConnection.php
2、删除
remove方法,从数据库移除数据
上面只是移除方法,具体删除会先调用put方法,插入一条标识为已经删除的本地数据,之后再调用上面的删除方法,如果是有缩略图也会一并删除。删除时已经把文件放到本地附带删除标记。如果恢复,会将本地文件再上传到服务器,需要把删除并保存本地功能去掉。待解决:
E:wampwwwowncloudlibprivatepreview.php中有一个addPathToDeleteFileMapper方法
其中删除之前还有个prepare_delete方法
E:wampwwwowncloudlibprivatefilesview.php中的basicOperation中的runPostProxies方法
E:wampwwwowncloudappsactivitylibhooksstatic.php中的fileDelete删除文件
↓↓↓
E:wampwwwowncloudappsactivitylibhooks.php中的fileDelete方法
↓↓↓
E:wampwwwowncloudappsactivitylibhooks.php中的addNotificationsForFileAction
↓↓↓
E:wampwwwowncloudappsfiles_trashbinlibstorage.php中的unlink方法请求删除"ccc"文件夹
↓↓↓
E:wampwwwowncloudappsfiles_trashbinlibstorage.php的doDelete方法进行进一步删除
↓↓↓
E:wampwwwowncloudappsfiles_trashbinlib rashbin.php中的move2trash方法调用将文件复制移动到本地位置留着恢复
↓↓↓
E:wampwwwowncloudowncloudlibprivatefilesview.php得rename方法用来重命名或者移动文件其中使用了文件流复制到本地位置,之后删除远程文件
加个判断如果path1="/files/FTP/1.jpg"包含FTP(是否是自己命名的待定)那么直接删除
就是以上的复制到本地并删除文件(红线部分)修改之后可用,但是会存储到files_trash表中,文件没有,files_cache也没有。已删除文件处也不会显示。
3、更改
(1)以更新文件名字为例
E:wampwwwowncloudappsfileslibapp.php中的rename方法
↓↓↓
E:wampwwwowncloudlibprivatefilesview.php这里的rename方法来重命名文件
↓↓↓
E:wampwwwowncloudappsfiles_trashbinlibstorage.php中的rename调用
E:wampwwwowncloudappsfiles_externallibstreamwrapper.php的rename方法重命名ftp的文件
↓↓↓
E:wampwwwowncloudlibprivatefilescacheupdater.php中的rename方法重命名数据库中数据
↓↓↓
E:wampwwwowncloudlibprivatefilescachecache.php中的move方法中的
这条sql执行更新命令,over!!!!!!!!!
更新完还会change一大堆信息,fuck!
rename完了回到view的rename方法,从第二道红线继续运行
最后返回数据到
E:wampwwwowncloudappsfileslibapp.php中的rename方法
↓↓↓
这下真over了算是!!!!
(2)修改更新txt文件
E:wampwwwowncloudappsfiles_texteditorajaxsavefile.php中的
上面红线中的方法,修改内容。
4、查询
查询列表list.php为例
E:wampwwwowncloudlibprivatefilescachecache.php的getFolderContentsById($fileId)方法从数据库选取数据
以上,over
数据库连接处
E:wampwwwowncloudlibprivatedb.php的prepare方法
E:wampwwwowncloudlibprivateserver.php中的getDatabaseConnection方法
判断是否是写操作但是没卵用啊,和数据库分离又没关系
E:wampwwwowncloud3rdpartydoctrinedballibDoctrineDBALConnection.php的prepare方法
↓↓↓
E:wampwwwowncloud3rdpartydoctrinedballibDoctrineDBALConnection.php的connection方法
↓↓↓
还有个E:wampwwwowncloud3rdpartydoctrinedballibDoctrineDBALDriverPDOConnection.php类
另起,以下准备修改主从,只是一个想法,没实现:
以上可见,通过register方法将对象注册到server对象中
根据以上修改如下:
E:wampwwwowncloudlibprivatedbconnectionfactory.php中加入了一个
/**
* 设置从数据库服务器
* @param OCSystemConfig $config
* @return array
*/
public function createFConnectionParams($config) {
方法用来生成从服务器的链接
在server.php的注册方法中加入了如下方法:
$this->registerService('FDatabaseConnection', function (Server $c) {
$factory = new OCDBConnectionFactory();
$systemConfig = $c->getSystemConfig();
$type = $systemConfig->getValue('dbtype', 'sqlite');
if (!$factory->isValidType($type)) {
throw new OCDatabaseException('Invalid database type');
}
$connectionParams = $factory->createFConnectionParams($systemConfig);
$connection = $factory->getConnection($type, $connectionParams);
$connection->getConfiguration()->setSQLLogger($c->getQueryLogger());
return $connection;
});
注册了一个从服务器链接
继续加入了
/**
* 返回从服务器的链接session
* @return OCPIDBConnection
*/
function getFDatabaseConnection() {
return $this->query('FDatabaseConnection');
}
获取链接方法
以及注册Fdb方法
以上是关于owncloud源码分析2--数据库增删改查的主要内容,如果未能解决你的问题,请参考以下文章
asp.net mvc oracle 做的增删改查功能,给我份源码。
Elasticsearch全文检索技术 一篇文章即可从入门到精通(Elasticsearch安装,安装kibana,安装ik分词器,数据的增删改查,全文检索查询,聚合aggregations)(代码片