私たちは職場でMediaWikiを使用し、より多くの利用を奨励するために、エントリの最近の変更に関する週刊の要約メールを設定したいが、私はオンラインで何かを見つけることができなかった。ウィキに週の変更を集めて要約するための既存のツールがありますか?MediaWikiの変更を要約するツールはありますか?
たとえば、上位5ページ、下位5ページ、多分3ページのランダムページを収集するスクリプトを設定します。多くの世話をしていないかもしれないページを知りませんでした。
私たちは職場でMediaWikiを使用し、より多くの利用を奨励するために、エントリの最近の変更に関する週刊の要約メールを設定したいが、私はオンラインで何かを見つけることができなかった。ウィキに週の変更を集めて要約するための既存のツールがありますか?MediaWikiの変更を要約するツールはありますか?
たとえば、上位5ページ、下位5ページ、多分3ページのランダムページを収集するスクリプトを設定します。多くの世話をしていないかもしれないページを知りませんでした。
MediaWikiと対応するコンシューマー(ほとんどのブラウザにはRSSフィードリーダーがあります)にRSSフィードを設定してから、毎週のメールの興味深いイベントを要約できます。
私はWikipediaを編集しています。私はウォッチリストの項目を追跡するためにRSSを使用しています。よく働く!
私はちょうど先日一緒に投げた何か。クイックで汚れているだけで、最近の変更を読み込んで、データベースに電子メールアドレスを持つすべての人にそれらの番号を記入してください。 cronジョブとして設定します。明らかに、私は会社のURL、データベース名、ユーザーとパスワードを混乱させました。
#!/usr/local/bin/php.cli
<?php
/*
* File :
* Function(s) :
* Calls/Invokes :
* Called By :
* Parameters/Input :
* Requires :
* Purpose :
* Date :
*
*/
$ToAddr = '[email protected]';
$subject = 'Wiki - Recent Changes Notice';
$dtFormat = "Y/m/d H:i:s";
$message = 'Hello from somewhere.com at ' . date($dtFormat) . "\n\n";
$headers = 'From: [email protected]' . "\n" .
'Reply-To: [email protected]' . "\n" .
'X-Mailer: PHP/' . phpversion();
$host = 'localhost';
$db = 'name_of_database_wikidb';
$rc_Table = 'recentchanges';
$user = 'tester';
$pass = 'password'; // to mySql
$link_preface = 'http://www.somewhere.com/wiki/';
$NumDays = 5;
$output = '';
$output = '<html><head><title>SQL Mail Test</title></head><body>';
$link = mysql_connect($host, $user, $pass);
if (!$link) { return "<hr><b>Error while connecting to host \"$host\" !</b><hr>"; }
mysql_select_db($db, $link);
$theList = get_Email_List($query, $link);
$query = 'SELECT rc_title AS Page, rc_user_text AS Editor,
DATE_FORMAT(rc_timestamp,"%d/%m/%Y %T") AS "When",
rc_comment AS Notes FROM ' . $rc_Table . '
WHERE DATE_SUB(CURDATE(),INTERVAL ' . $NumDays . ' DAY) <= date(rc_timestamp)
and rc_title not like "Junk%"
and rc_title not like "Sandbox"
GROUP BY Page
ORDER BY rc_timestamp DESC';
$result = mysql_query($query, $link);
if (!$result){
$message = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $query;
die($message);
}
if (mysql_num_rows($result) <> 0) {
$output .= "<table>";
$output .= "<tr>";
$output .= "<td width=\"300px\">";
$output .= "</td>";
$output .= "<td>";
$output .= "<br>";
$output .= "<table border=1>";
$output .= "<th><b>Page</b></th>";
$output .= "<th><b>Editor</b></th>";
$output .= "<th><b>When</b></th>";
$output .= "<th><b>Notes</b></th>";
$fp = @fopen('specialnotice.txt', 'r');
if (!$fp) {
//$message .= "\n" .' No Special Notice Today.';
}
else {
clearstatcache();
$message .= 'Special Notice:' . "\n\n";
while (!feof($fp)) {
$message .= fgets($fp, 4096);
}
echo '</textarea>';
fclose($fp);
$message .= "\n";
}
$message .= "\n" .'This is your daily notice of Recently Changed or New pages for the past ' . $NumDays . ' days:' . "\n\n";
$line = mysql_fetch_array($result, MYSQL_ASSOC);
mysql_data_seek($result, 0);
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
$output .= "<tr>";
$numf = mysql_num_fields($result);
for ($i=0; $i < $numf; $i++); {
$output .= "<td><a href=" . '"' . $link_preface . "$line[Page]". '"' .">$line[Page]</a></td>";
$output .= "<td>$line[Editor]</td>";
$output .= "<td>$line[When]</td>";
$output .= "<td>$line[Notes]</td>";
$message .= $link_preface . "$line[Page]";
/*
$message .= '<html><body><a href=';
$message .= '"'. $link_preface . $line[Page].'">';
$message .= $line[Page] . '</a></body></html>';
*/
$message .= ' by ' . $line[Editor] .',';
$message .= ' At: ' . $line[When];
$message .= ' Notes: ' . $line[Notes];
$message .= "\n";
}
$output .= "</tr>";
}
$output .= "</table>";
$output .= "<br>";
$output .= "</td>";
$output .= "</tr>";
$output .= "</table>";
$output .= '</body></html>';
}
else {
$output .= "Sorry, nada. ";
}
#echo $output;
mysql_close($link);
# $message = $output; // check html output
$result = 'Failure';
$dummy = mail($theList, $subject, $message, $headers); // send regular article list to mailing list
# $dummy = mail($ToAddr, $subject, $message, $headers); // send regular article list to developer
# $dummy = mail($ToAddr, $subject, $theList, $headers); // send mailing list to developer
if ($dummy){
$result = 'Success';
}
$output2 = ' ';
$output2 .= '
<html>
<head>
<title>Mail Test</title>
</head>
<body>';
$output2 .= $result;
$output2 .= ' at ' . date($dtFormat);
$output2 .= '
</body>
</html>
';
echo $output2;
function get_Email_List($query, $link) {
$query = 'SELECT CAST(user_email AS CHAR(100) CHARACTER SET utf8) as addr FROM `user` WHERE 1';
$result = mysql_query($query, $link);
$emails = ' ';
if (!$result){
$message = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $query;
die($message);
}
if (mysql_num_rows($result) <> 0) {
$line = mysql_fetch_array($result, MYSQL_ASSOC);
mysql_data_seek($result, 0);
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
if (!empty($line[addr])) {
$emails .= $line[addr] . ',';
}
}
$emails = rtrim($emails, ',');
$emails = ltrim($emails, ',');
}
return $emails;
}
?>
一般的なヒント:http://stackoverflow.com/questions/3315158/advice-for-starting-own-wiki/3323077#3323077 – Wikis