parent
034f5383b0
commit
0366b4ab4b
@ -0,0 +1,375 @@ |
|||||||
|
<?php if (!defined('PmWiki')) exit(); |
||||||
|
/* |
||||||
|
inspired by PageFeed by Daniel Roesler (diafygi) |
||||||
|
conversation array imported from it |
||||||
|
|
||||||
|
XXX |
||||||
|
warning, this SHOULD be outdated by memory_management.php |
||||||
|
*/ |
||||||
|
|
||||||
|
## Recipe version information |
||||||
|
$RecipeInfo['Preparation']['Version'] = '2010-04-02'; |
||||||
|
|
||||||
|
## Add action for pagefeed |
||||||
|
SDV($HandleActions['preparation'], 'Preparation'); |
||||||
|
|
||||||
|
function subDate($date,$day)//add days |
||||||
|
{ |
||||||
|
$sum = strtotime(date("Y-m-d", strtotime("$date")) . " -$day days"); |
||||||
|
$dateTo=date('Y-m-d',$sum); |
||||||
|
return $dateTo; |
||||||
|
} |
||||||
|
function reconvertdate($date) { |
||||||
|
return preg_replace("/(\d+)\/(\d+)\/(\d+)/",'$3-$2-$1',$date); |
||||||
|
} |
||||||
|
|
||||||
|
## Create feed from page history |
||||||
|
function Preparation($pagename, $auth = 'read') { |
||||||
|
global $FarmD, $WikiTitle, $ScriptUrl; |
||||||
|
$feedfile = $FarmD."/pub/preparationfeed.xml"; #change to a pattern when support arguments |
||||||
|
$datestorecall = array(1,10,30,60,120,350,700,1500,3000,7000,15000,30000,100000); |
||||||
|
// $datestorecall = array(1,10,30,60..,61,62..,80..); |
||||||
|
$varname='startprepare'; |
||||||
|
|
||||||
|
$pages = ListPages(); |
||||||
|
# open $feed as read |
||||||
|
if (!file_exists($feedfile)) |
||||||
|
if (!touch($feedfile)) |
||||||
|
print "Creation of the feed file fails, check write permissions for pmWiki and $feedfile."; |
||||||
|
|
||||||
|
$feed_oldcontent = file_get_contents($feedfile); |
||||||
|
|
||||||
|
$feed_newcontent = ''; |
||||||
|
|
||||||
|
# 2 loops can be probably optimized since they are ordered by date |
||||||
|
foreach ($pages as $page) { |
||||||
|
$dateprepare = PageTextVar($page,$varname); |
||||||
|
if ( isset($dateprepare) ) { |
||||||
|
foreach ($datestorecall as $day) { |
||||||
|
# print $page . " "; |
||||||
|
$checkdate = subDate(reconvertdate($dateprepare),$day); |
||||||
|
# print $dateprepare . " + " . $day . " (" . $checkdate . ") == " . date("d/m/Y"); |
||||||
|
if ($checkdate==reconvertdate(date("d/m/Y"))) |
||||||
|
{ |
||||||
|
# print " recall time"; |
||||||
|
# generate GUID |
||||||
|
$item_GUID = $page.'_'.$checkdate; |
||||||
|
# if not present in file using a regex on the GUID |
||||||
|
if (preg_match("/$item_GUID/",$feed_oldcontent) == 0) |
||||||
|
{ |
||||||
|
|
||||||
|
# generate date |
||||||
|
$feed_newitemdate = date(DATE_RSS, time()); |
||||||
|
# transform line to XML format |
||||||
|
$feed_newitem = " <item> |
||||||
|
<title>Day $day of preparation for page $page started at $dateprepare</title> |
||||||
|
<link>$ScriptUrl/$page#PreparationDay$day</link> |
||||||
|
<description>This is to improve preparation of things you will have to produce. Also don't forget to improve those instructions to be more and more efficient!</description> |
||||||
|
<guid>$item_GUID</guid> |
||||||
|
<pubDate>$feed_newitemdate</pubDate> |
||||||
|
</item>"; |
||||||
|
# appending the item |
||||||
|
$feed_newcontent .= $feed_newitem; |
||||||
|
} |
||||||
|
break; #we can't have 2 days at the same time |
||||||
|
} |
||||||
|
# print "<br/>"; |
||||||
|
} # check if the next recall day is today |
||||||
|
} # check if the next page is tagged |
||||||
|
} |
||||||
|
# feed should be properly updated |
||||||
|
|
||||||
|
$feed_newdate = date(DATE_RSS, time()); |
||||||
|
|
||||||
|
$feed_header = "<?xml version=\"1.0\"?>
|
||||||
|
<rss version=\"2.0\"> |
||||||
|
<channel> |
||||||
|
<title>Preparation feed for $WikiTitle .</title> |
||||||
|
<link>$ScriptUrl</link> |
||||||
|
<description>Receive links to the page you tagged in order to have optimal preparation.</description> |
||||||
|
<lastBuildDate>$feed_newdate</lastBuildDate>"; |
||||||
|
|
||||||
|
$feed_footer = " |
||||||
|
</channel> |
||||||
|
</rss>"; |
||||||
|
|
||||||
|
|
||||||
|
# print header |
||||||
|
print $feed_header; |
||||||
|
|
||||||
|
# print items |
||||||
|
print $feed_oldcontent; |
||||||
|
# $feed_newcontent = str_replace(array_keys($EntitiesTable), array_values($EntitiesTable), $feed_newcontent); |
||||||
|
print $feed_newcontent; |
||||||
|
|
||||||
|
# print footer |
||||||
|
print $feed_footer; |
||||||
|
|
||||||
|
$write_result = file_put_contents($feedfile,$feed_oldcontent.$feed_newcontent); |
||||||
|
if (!$write_result) |
||||||
|
if (strlen($feed_oldcontent.$feed_newcontent)>0) |
||||||
|
print "Creation of the feed file fails, check write permissions for pmWiki and $feedfile."; |
||||||
|
else |
||||||
|
print "No item to generate, did you correctly tag your pages?"; |
||||||
|
} |
||||||
|
|
||||||
|
## Since most feeds don't understand html character entities, we |
||||||
|
## convert the common ones to their numeric form here. |
||||||
|
## Taken from /scripts/feeds.php |
||||||
|
SDVA($EntitiesTable, array( |
||||||
|
# entities defined in "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent" |
||||||
|
' ' => ' ', |
||||||
|
'¡' => '¡', |
||||||
|
'¢' => '¢', |
||||||
|
'£' => '£', |
||||||
|
'¤' => '¤', |
||||||
|
'¥' => '¥', |
||||||
|
'¦' => '¦', |
||||||
|
'§' => '§', |
||||||
|
'¨' => '¨', |
||||||
|
'©' => '©', |
||||||
|
'ª' => 'ª', |
||||||
|
'«' => '«', |
||||||
|
'¬' => '¬', |
||||||
|
'­' => '­', |
||||||
|
'®' => '®', |
||||||
|
'¯' => '¯', |
||||||
|
'°' => '°', |
||||||
|
'±' => '±', |
||||||
|
'²' => '²', |
||||||
|
'³' => '³', |
||||||
|
'´' => '´', |
||||||
|
'µ' => 'µ', |
||||||
|
'¶' => '¶', |
||||||
|
'·' => '·', |
||||||
|
'¸' => '¸', |
||||||
|
'¹' => '¹', |
||||||
|
'º' => 'º', |
||||||
|
'»' => '»', |
||||||
|
'¼' => '¼', |
||||||
|
'½' => '½', |
||||||
|
'¾' => '¾', |
||||||
|
'¿' => '¿', |
||||||
|
'À' => 'À', |
||||||
|
'Á' => 'Á', |
||||||
|
'Â' => 'Â', |
||||||
|
'Ã' => 'Ã', |
||||||
|
'Ä' => 'Ä', |
||||||
|
'Å' => 'Å', |
||||||
|
'Æ' => 'Æ', |
||||||
|
'Ç' => 'Ç', |
||||||
|
'È' => 'È', |
||||||
|
'É' => 'É', |
||||||
|
'Ê' => 'Ê', |
||||||
|
'Ë' => 'Ë', |
||||||
|
'Ì' => 'Ì', |
||||||
|
'Í' => 'Í', |
||||||
|
'Î' => 'Î', |
||||||
|
'Ï' => 'Ï', |
||||||
|
'Ð' => 'Ð', |
||||||
|
'Ñ' => 'Ñ', |
||||||
|
'Ò' => 'Ò', |
||||||
|
'Ó' => 'Ó', |
||||||
|
'Ô' => 'Ô', |
||||||
|
'Õ' => 'Õ', |
||||||
|
'Ö' => 'Ö', |
||||||
|
'×' => '×', |
||||||
|
'Ø' => 'Ø', |
||||||
|
'Ù' => 'Ù', |
||||||
|
'Ú' => 'Ú', |
||||||
|
'Û' => 'Û', |
||||||
|
'Ü' => 'Ü', |
||||||
|
'Ý' => 'Ý', |
||||||
|
'Þ' => 'Þ', |
||||||
|
'ß' => 'ß', |
||||||
|
'à' => 'à', |
||||||
|
'á' => 'á', |
||||||
|
'â' => 'â', |
||||||
|
'ã' => 'ã', |
||||||
|
'ä' => 'ä', |
||||||
|
'å' => 'å', |
||||||
|
'æ' => 'æ', |
||||||
|
'ç' => 'ç', |
||||||
|
'è' => 'è', |
||||||
|
'é' => 'é', |
||||||
|
'ê' => 'ê', |
||||||
|
'ë' => 'ë', |
||||||
|
'ì' => 'ì', |
||||||
|
'í' => 'í', |
||||||
|
'î' => 'î', |
||||||
|
'ï' => 'ï', |
||||||
|
'ð' => 'ð', |
||||||
|
'ñ' => 'ñ', |
||||||
|
'ò' => 'ò', |
||||||
|
'ó' => 'ó', |
||||||
|
'ô' => 'ô', |
||||||
|
'õ' => 'õ', |
||||||
|
'ö' => 'ö', |
||||||
|
'÷' => '÷', |
||||||
|
'ø' => 'ø', |
||||||
|
'ù' => 'ù', |
||||||
|
'ú' => 'ú', |
||||||
|
'û' => 'û', |
||||||
|
'ü' => 'ü', |
||||||
|
'ý' => 'ý', |
||||||
|
'þ' => 'þ', |
||||||
|
'ÿ' => 'ÿ', |
||||||
|
# entities defined in "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent" |
||||||
|
'"' => '"', |
||||||
|
#'&' => '&#38;', |
||||||
|
#'<' => '&#60;', |
||||||
|
#'>' => '>', |
||||||
|
''' => ''', |
||||||
|
'Œ' => 'Œ', |
||||||
|
'œ' => 'œ', |
||||||
|
'Š' => 'Š', |
||||||
|
'š' => 'š', |
||||||
|
'Ÿ' => 'Ÿ', |
||||||
|
'ˆ' => 'ˆ', |
||||||
|
'˜' => '˜', |
||||||
|
' ' => ' ', |
||||||
|
' ' => ' ', |
||||||
|
' ' => ' ', |
||||||
|
'‌' => '‌', |
||||||
|
'‍' => '‍', |
||||||
|
'‎' => '‎', |
||||||
|
'‏' => '‏', |
||||||
|
'–' => '–', |
||||||
|
'—' => '—', |
||||||
|
'‘' => '‘', |
||||||
|
'’' => '’', |
||||||
|
'‚' => '‚', |
||||||
|
'“' => '“', |
||||||
|
'”' => '”', |
||||||
|
'„' => '„', |
||||||
|
'†' => '†', |
||||||
|
'‡' => '‡', |
||||||
|
'‰' => '‰', |
||||||
|
'‹' => '‹', |
||||||
|
'›' => '›', |
||||||
|
'€' => '€', |
||||||
|
# entities defined in "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent" |
||||||
|
'ƒ' => 'ƒ', |
||||||
|
'Α' => 'Α', |
||||||
|
'Β' => 'Β', |
||||||
|
'Γ' => 'Γ', |
||||||
|
'Δ' => 'Δ', |
||||||
|
'Ε' => 'Ε', |
||||||
|
'Ζ' => 'Ζ', |
||||||
|
'Η' => 'Η', |
||||||
|
'Θ' => 'Θ', |
||||||
|
'Ι' => 'Ι', |
||||||
|
'Κ' => 'Κ', |
||||||
|
'Λ' => 'Λ', |
||||||
|
'Μ' => 'Μ', |
||||||
|
'Ν' => 'Ν', |
||||||
|
'Ξ' => 'Ξ', |
||||||
|
'Ο' => 'Ο', |
||||||
|
'Π' => 'Π', |
||||||
|
'Ρ' => 'Ρ', |
||||||
|
'Σ' => 'Σ', |
||||||
|
'Τ' => 'Τ', |
||||||
|
'Υ' => 'Υ', |
||||||
|
'Φ' => 'Φ', |
||||||
|
'Χ' => 'Χ', |
||||||
|
'Ψ' => 'Ψ', |
||||||
|
'Ω' => 'Ω', |
||||||
|
'α' => 'α', |
||||||
|
'β' => 'β', |
||||||
|
'γ' => 'γ', |
||||||
|
'δ' => 'δ', |
||||||
|
'ε' => 'ε', |
||||||
|
'ζ' => 'ζ', |
||||||
|
'η' => 'η', |
||||||
|
'θ' => 'θ', |
||||||
|
'ι' => 'ι', |
||||||
|
'κ' => 'κ', |
||||||
|
'λ' => 'λ', |
||||||
|
'μ' => 'μ', |
||||||
|
'ν' => 'ν', |
||||||
|
'ξ' => 'ξ', |
||||||
|
'ο' => 'ο', |
||||||
|
'π' => 'π', |
||||||
|
'ρ' => 'ρ', |
||||||
|
'ς' => 'ς', |
||||||
|
'σ' => 'σ', |
||||||
|
'τ' => 'τ', |
||||||
|
'υ' => 'υ', |
||||||
|
'φ' => 'φ', |
||||||
|
'χ' => 'χ', |
||||||
|
'ψ' => 'ψ', |
||||||
|
'ω' => 'ω', |
||||||
|
'ϑ' => 'ϑ', |
||||||
|
'ϒ' => 'ϒ', |
||||||
|
'ϖ' => 'ϖ', |
||||||
|
'•' => '•', |
||||||
|
'…' => '…', |
||||||
|
'′' => '′', |
||||||
|
'″' => '″', |
||||||
|
'‾' => '‾', |
||||||
|
'⁄' => '⁄', |
||||||
|
'℘' => '℘', |
||||||
|
'ℑ' => 'ℑ', |
||||||
|
'ℜ' => 'ℜ', |
||||||
|
'™' => '™', |
||||||
|
'ℵ' => 'ℵ', |
||||||
|
'←' => '←', |
||||||
|
'↑' => '↑', |
||||||
|
'→' => '→', |
||||||
|
'↓' => '↓', |
||||||
|
'↔' => '↔', |
||||||
|
'↵' => '↵', |
||||||
|
'⇐' => '⇐', |
||||||
|
'⇑' => '⇑', |
||||||
|
'⇒' => '⇒', |
||||||
|
'⇓' => '⇓', |
||||||
|
'⇔' => '⇔', |
||||||
|
'∀' => '∀', |
||||||
|
'∂' => '∂', |
||||||
|
'∃' => '∃', |
||||||
|
'∅' => '∅', |
||||||
|
'∇' => '∇', |
||||||
|
'∈' => '∈', |
||||||
|
'∉' => '∉', |
||||||
|
'∋' => '∋', |
||||||
|
'∏' => '∏', |
||||||
|
'∑' => '∑', |
||||||
|
'−' => '−', |
||||||
|
'∗' => '∗', |
||||||
|
'√' => '√', |
||||||
|
'∝' => '∝', |
||||||
|
'∞' => '∞', |
||||||
|
'∠' => '∠', |
||||||
|
'∧' => '∧', |
||||||
|
'∨' => '∨', |
||||||
|
'∩' => '∩', |
||||||
|
'∪' => '∪', |
||||||
|
'∫' => '∫', |
||||||
|
'∴' => '∴', |
||||||
|
'∼' => '∼', |
||||||
|
'≅' => '≅', |
||||||
|
'≈' => '≈', |
||||||
|
'≠' => '≠', |
||||||
|
'≡' => '≡', |
||||||
|
'≤' => '≤', |
||||||
|
'≥' => '≥', |
||||||
|
'⊂' => '⊂', |
||||||
|
'⊃' => '⊃', |
||||||
|
'⊄' => '⊄', |
||||||
|
'⊆' => '⊆', |
||||||
|
'⊇' => '⊇', |
||||||
|
'⊕' => '⊕', |
||||||
|
'⊗' => '⊗', |
||||||
|
'⊥' => '⊥', |
||||||
|
'⋅' => '⋅', |
||||||
|
'⌈' => '⌈', |
||||||
|
'⌉' => '⌉', |
||||||
|
'⌊' => '⌊', |
||||||
|
'⌋' => '⌋', |
||||||
|
'⟨' => '〈', |
||||||
|
'⟩' => '〉', |
||||||
|
'◊' => '◊', |
||||||
|
'♠' => '♠', |
||||||
|
'♣' => '♣', |
||||||
|
'♥' => '♥', |
||||||
|
'♦' => '♦')); |
Loading…
Reference in new issue