blob:4fba7bc012082add641e7e9955bd5f24965eca14[文件] [日志] [责备]
<?php(电话)
使用 维基百科\MediaWiki服务;
使用 维基百科\修订\修订记录;
使用 维基百科\用户\用户标识;
迷你邀请挂钩 {
/**
*设置$wgEmailFrom的默认值,因为无法在
*很明显,因为json不是PHP
*/
公众的 静止的 功能寄存器扩展() {
全球的$wg电子邮件发件人,$wgPasswordSender($wg密码发送器),$wg挂钩;
//发送邀请电子邮件的电子邮件地址
$wg电子邮件发件人=$wgPasswordSender($wg密码发送器);
如果 (类存在(_E)( 维基百科\挂钩容器\挂钩容器:: ) ) {
//1.35兆瓦+
$wg挂钩['页面保存完成'][] = '微型邀请挂钩::inviteFriendToEdit';
} 其他的 {
$wg挂钩[“PageContentSaveComplete”][] = “MiniInviteHooks::inviteFriendToEditOld”;
$wg挂钩['页面内容插入完成'][] = “MiniInviteHooks::createOpinionCheck”;
}
}
/**
*PageSaveComplete挂钩处理程序
*
*如果用户刚刚在NS_BLOG命名空间(由
*BlogPage扩展名)和$wgSendNewArticleToFriends设置为true,则此
*函数将$_SESSION['new_opion']标志设置为新博客的名称:
*第页。
*
*下面的inviteRedirect()将用户重定向到Special:EmailNewArticle/<新博客的名称:page>,
*这允许用户通过电子邮件向朋友宣传他们的新页面。
*
*@param WikiPage$WikiPage WikiPage已修改
*@param UserIdentity$user执行修改的用户
*@param string$summary编辑摘要/注释
*@param int$flags传递给WikiPage::doEditContent()的标志
*/
公众的 静止的 功能邀请好友编辑( WikiPage(维基页面)$wikiPage(维基页面),$用户,$摘要,$标志) {
全球的$wg向朋友发送新文章;
如果 ( !($标志&编辑_新建) ) {
//将此页面的编辑增加一次(针对此用户的会话)
$编辑_视图= ($_主题['编辑_视图'] ?? [$wikiPage(维基页面)->获取ID() => 0 ] );
$页面_编辑_视图=$edits_views(编辑视图)[$wiki页面->获取ID()] ?? 0;
$编辑_视图[$wikiPage(维基页面)->获取ID()] = ($页面_编辑_视图+ 1 );
$_主题['编辑_视图'] =$编辑_视图;
}
如果 ($wg向朋友发送新文章) {
$标题=$wikiPage(维基页面)->获取标题();
//@phan-suppress-nextlinear PhanTypeMismatchArgumentNull可
如果 ( 定义( “NS_BLOG” ) &&$标题->在命名空间中(NS_日志) ) {
$_主题['新选项(_O)'] =$标题->获取前缀文本();
}
}
}
/**
*PageContentSaveComplete挂钩处理程序
*
*@param WikiPage$WikiPage
*@param用户$User
*@param内容$Content
*@param字符串$summary
*@param bool$是次要的
*@param null$isWatch
*@param null$节
*@param int$标志
*@param修订记录$revision
*@param状态$Status
*@param int|bool$baseRevId
*
*@return布尔
*/
公众的 静止的 功能邀请好友编辑旧( WikiPage(维基页面)$wikiPage(维基页面),$用户,$内容,$摘要,$是次要的,$isWatch(美元观察),$部分,$标志, 修订记录$修订,$状态,$baseRevId) {
如果 ( !($标志&编辑_新建) ) {
//将此页面的编辑增加一次(针对此用户的会话)
$编辑_视图= ($_主题['编辑_视图'] ?? [$wikiPage(维基页面)->获取ID() => 0 ] );
$页面_编辑_视图=$编辑_视图[$wikiPage(维基页面)->获取ID()] ?? 0;
$编辑_视图[$wikiPage(维基页面)->获取ID()] = ($page_edits_views($page_edits_views)+ 1 );
$_主题['编辑_视图'] =$编辑_视图;
}
返回 真的;
}
/**
*如果用户刚刚在NS_BLOG命名空间(由
*BlogPage扩展名)和$wgSendNewArticleToFriends设置为true,则此
*函数将$_SESSION['new_opion']标志设置为新博客的名称:
*第页。
*
*下面的inviteRedirect()将用户重定向到Special:EmailNewArticle/<新博客的名称:page>,
*这允许用户通过电子邮件向朋友宣传他们的新页面。
*@param WikiPage$WikiPage
*@param用户$User
*@param Content$Content
*@param string$摘要
*@param bool$isMinor参数
*@param null$isWatch
*@param null$节
*@param int$标志
*@param修订记录$revision
*/
公众的 静止的 功能创建操作检查($wikiPage(维基页面), 用户$用户,$内容,$摘要,$是次要的,$isWatch(美元观察),$部分,$标志, 修订记录$修订) {
全球的$wg向朋友发送新文章;
如果 ($wg向朋友发送新文章) {
$标题=$wikiPage(维基页面)->获取标题();
//@phan-suppress-nextlinear PhanTypeMismatchArgumentNull可
如果 ( 定义( “NS_BLOG” ) &&$标题->在命名空间中(NS_日志) ) {
$_会话['新选项(_O)'] =$标题->获取前缀文本();
}
}
}
/**
*@param输出页面&$out
*@param字符串&$text
*/
公众的 静止的 功能inviteRedirect(邀请重定向)( 输出页面 &$out(美元), &$文本) {
全球的$wg向朋友发送新文章;
如果 ($wg向朋友发送新文章) {
如果 (发行($_会话['新齿轮'] ) ) {
$邀请= 特殊页::获取标题( '通过电子邮件发送新文章' );
$out(美元)->重定向($邀请->获取完整URL( [ '页面' =>$_主题['新选项(_O)'] ] ) );
未设置($_主题['新选项(_O)'] );
}
}
}
公众的 静止的 功能显示邀请链接( 输出页面 &$out(美元), &$文本) {
$t(美元)=$out(美元)->获取标题();
//我们需要一个WikiPage才能获得页面ID
如果 ( !$t(美元)->可以存在() ) {
返回 真的;
}
如果 ( !发行($_主题['编辑_视图'] ) ) {
//避免“undefined<whatever variable/offset/etc>”胡扯
返回 真的;
}
$用户=$out(美元)->获取用户();
%s美元= ''; //应该向最终用户展示的内容
如果 (
!$out(美元)->是文章() ||$t(美元)->是主页() ||$t(美元)->是对话页面() ||
$t(美元)->在命名空间中(NS_特殊,NS_MEDIAWIKI公司) ||
$t(美元)->等于( 标题::使标题安全(NS_用户,$t(美元)->获取文本() ) )
) {
返回 真的;
}
$edits_views(编辑视图)=$_主题['编辑视图'];
//创建新页面时没有设置页面ID(显然),因此使用$t->getID()
//直接as-is可能会导致有关上未定义偏移的E_NOTICE
//下面的$page_edits_views变量定义行
$pageId=$t(美元)->获取文章ID();
$页面_编辑_视图=$编辑_视图[$pageId] ?? 0;
$invite_title(邀请_标题)= 特殊页::获取标题( '邀请电子邮件' );
$link渲染器= MediaWiki服务::获取实例()->获取链接渲染器();
如果 ($页面_编辑_视图== 1 &&$用户->已注册() ) {
%s美元.= '<span id=“invite_to_edit”class=“edit”>';
%s美元=$link渲染器->makeKnownLink(
$invite_title(邀请_标题),
wf消息( '邀请好友编辑' )->文本(),
[],
[ '电子邮件类型' => '编辑', '页面' =>$t(美元)->获取文本() ]
);
%s美元.= “</span>';
$edits_views(编辑视图)[$t(美元)->获取文章ID()] =$页面_编辑_视图+ 1;
$_主题['编辑_视图'] =$编辑_视图;
}
//这原本是注释掉的,但我不知道为什么。。。
//哦,也许它与wfInviteRedirect()冲突?不确定,@todo CHECKME
如果 (发行($_主题['新选项(_O)'] ) &&$_主题['新选项(_O)'] == 1 ) {
%s美元.= '<span id=“invite_to_read”class=“edit”>';
%s美元.=$link渲染器->makeKnownLink(
$invite_title(邀请_标题),
wf消息( '邀请好友阅读' )->文本(),
[],
[ '电子邮件类型' => '视图', '页面' =>$t(美元)->获取文本() ]
);
%s美元.= “</span>”;
$_主题['新选项(_O)'] = 0;
}
如果 (%s美元) {
$out(美元)->添加模块( 'ext.miniInvite。DisplayInviteLinks.js' );
$out(美元)->添加模块样式( 'ext.minInvite.inviteLinks.css' );
//输出HTML。addHTML()将其放在
//页面,这是我们想要的;附加到$text将其放置在
//就在页面的底部,这是我们不想要的。
$out(美元)->添加HTML(%s美元);
#$文本=$s;
}
返回 真的;
}
/**
*当用户
*运行/mainment/update.php(核心数据库更新程序脚本)。
*
*@param DatabaseUpdater$更新程序
*/
公众的 静止的 功能onLoadExtensionSchema更新($更新程序) {
$目录=__总监__. '/../sql语句';
$dbType($dbType)=$更新程序->获取数据库()->获取类型();
$文件名= “user_email_track.sql”;
//对于非MySQL/MariaDB/SQLite DBMS,请使用适当命名的文件
如果 ( !阵列中(_A)($dbType($dbType), [ “mysql”, “sqlite” ] ) ) {
$文件名= “user_email_track.{$dbType}.sql”;
}
$更新程序->添加扩展表( '用户电子邮件跟踪', “{$dir}/{$filename}” );
}
}