本学习笔记是针对记事狗微博3.6.6版本的开源代码的简单分析。转载请注明来自:外链网址已屏蔽blog.okbase.net/phpchina
下面是对发布微博流程的分析。
(1)页面中将发布按钮click事件绑定:
$("#publishSubmit").bind('click',function() {
publishSubmit('i_already','totid','myhome','topic_type','','',$('#mapp_item').val(),$('#mapp_item_id').val(),$('#xiami_id').val(),$('#touid').val());
return false;
});
(2)publishSubmit函数位于:
/templates/default/js/common.js
500行 function publishSubmit(
632行 var myAjax = $.post("ajax.php?mod=topic&code=do_add&act=reply",
(3)ajax调用入口
/ajax.php
22行 $jishigou->run('ajax');
(4)加载对应的模块
/include/jishigou.php
59行 加载模块文件 @include_once $modules_path . ($this->_init_mod($types[$type])) . '.mod.php'
83行 $ModuleObject = new ModuleObject($this->var['config']);
(5)模块中根据code功能,执行对应的函数,调用逻辑层的代码
/modules/ajax/topic.mod.php
33行 ModuleObject构造函数中 $this->Execute();
37行 function Execute()
94行 case 'do_add': $this->DoAdd();
659行 DoAdd()
754行 TopicLogic->Add($data);
(6)逻辑层及数据层的处理
/include/logic/topic.logic.php
65行 Add($datas, ...
441行 insert into jishigou_topic
对内容中@的处理
/include/logic/topic.logic.php
369行 对内容进行分解处理 $_process_result = $this->_process_content($content, $data);
1826行 function _process_content($content, $topic_info=array())
用正则表达式获取 @user,#话题#
$_content = $_process_result['content'];
$at_uids = $_process_result['at_uids'];
$tags = $_process_result['tags'];
$urls = $_process_result['urls'];
671行 $this->_process_at_uids($data,$at_uids);
2164行 处理@user function _process_at_uids($data,$at_uids)
2183行 将@user信息(tid,tuid,uid)插入到 jishigou_topic_mention 表,以便在myat时能显示这些微博内容。