| <?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}” ); |
| } |
| } |