2011-03-03 15 views
1

私たちは職場でMediaWikiを使用し、より多くの利用を奨励するために、エントリの最近の変更に関する週刊の要約メールを設定したいが、私はオンラインで何かを見つけることができなかった。ウィキに週の変更を集めて要約するための既存のツールがありますか?MediaWikiの変更を要約するツールはありますか?

たとえば、上位5ページ、下位5ページ、多分3ページのランダムページを収集するスクリプトを設定します。多くの世話をしていないかもしれないページを知りませんでした。

+0

一般的なヒント:http://stackoverflow.com/questions/3315158/advice-for-starting-own-wiki/3323077#3323077 – Wikis

答えて

0

MediaWikiと対応するコンシューマー(ほとんどのブラウザにはRSSフィードリーダーがあります)にRSSフィードを設定してから、毎週のメールの興味深いイベントを要約できます。

私はWikipediaを編集しています。私はウォッチリストの項目を追跡するためにRSSを使用しています。よく働く!

0

私はちょうど先日一緒に投げた何か。クイックで汚れているだけで、最近の変更を読み込んで、データベースに電子メールアドレスを持つすべての人にそれらの番号を記入してください。 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; 
    } 
?> 
関連する問題