parent
e33b716c32
commit
cc68c44175
@ -0,0 +1,134 @@ |
||||
<?php
|
||||
|
||||
# generate exercises based on wiki content and its structure |
||||
# |
||||
# still to implement (cf http://fabien.benetou.fr/Cookbook/Cognition#DailyExercisesFeed ) |
||||
# is word X from page A, B, C or D? |
||||
# does page A contains word X, Y or Z? |
||||
# is page A linked to page B? |
||||
# what is the correct order for pages A, B and C on descending criteria i A>B>C? A>C>B? B>C>A? B>A>C? C>B>A? C>A>B? |
||||
# e.g. size, frequency update, last edition, ... |
||||
# which of those page corresponds the updates visualization V, A, B or C? |
||||
# keyword or URL in pages |
||||
# page linked to other page |
||||
# to display, especially the current and past score in |
||||
# http://fabien.benetou.fr/Content/MentalExercises |
||||
# display global or related to the current page, or group (based on parameters) |
||||
# cf also early August discussion on ##pim |
||||
# |
||||
# update http://fabien.benetou.fr/MemoryRecalls/ImprovingPIM when it is working |
||||
# also push to the code repository |
||||
|
||||
|
||||
$RecipeInfo['Exercises']['Version'] = '2011-12-08'; |
||||
|
||||
$HandleActions['Exercises'] = 'Exercises'; # if url contains action=myaction call HandleMyAction timely |
||||
$HandleAuth['Exercises'] = 'read'; # authorization level $auth for HandleMyAction |
||||
|
||||
function Exercises($pagename, $auth){ |
||||
|
||||
$exercisetype="pagelink"; |
||||
list($group,$page) = explode(".",$pagename); |
||||
// the pattern should be improve, e.g. remove PmWiki. , RecentChanges, GroupFooter, GroupHeader, Template, ... |
||||
if ($group == "AllPages"){ |
||||
// equivalent to getting ALL pages |
||||
$pages = ListPages(); |
||||
} else { |
||||
$pages = ListPages("/$group\./e"); |
||||
|
||||
} |
||||
|
||||
//randomly pick a page in the possible pages |
||||
$sourcepage = $pages[rand(0,count($pages))]; |
||||
// -1? |
||||
|
||||
$content = ReadPage($sourcepage,READPAGE_CURRENT); |
||||
//$text = $content["text"]; |
||||
// to use later on for expression exercises |
||||
$links = $content["targets"]; |
||||
$links_array = explode(",",$links); |
||||
|
||||
//$answers = array(); |
||||
//consider pilling up potential in $answers[] |
||||
|
||||
//randomly pick a page amongst the linked pages |
||||
$pageA = $links_array[rand(0,count($links_array)-1)]; |
||||
|
||||
unset($pages[array_search($pageA,$links_array)]); |
||||
unset($pages[array_search($pageA,$pages)]); |
||||
//randomly pick 2 others pages which are not amongst the list of linked page |
||||
$pageB = $pages[rand(0,count($pages)-1)]; |
||||
unset($pages[array_search($pageB,$pages)]); |
||||
$pageC = $pages[rand(0,count($pages)-1)]; |
||||
unset($pages[array_search($pageC,$pages)]); |
||||
|
||||
//display |
||||
$result .="Is page [[$sourcepage]] linked to "; |
||||
$counter = (int) $_GET["counter"]; |
||||
|
||||
$counterparam = ""; |
||||
if ( $counter > 0) { |
||||
$counterparam = "counter=$counter&"; |
||||
} |
||||
|
||||
$answers = array ($pageA,$pageB,$pageC); |
||||
shuffle($answers); |
||||
for ($i=0;$i<count($answers);$i++) { |
||||
if ( $i == count($answers) -1 ) |
||||
$result .= " or "; |
||||
$result .="[[$pagename?action=ExercisesCheck&".$counterparam."type=$exercisetype&source=$sourcepage&answer=".$answers[$i]."|".$answers[$i]."]],"; |
||||
} |
||||
$result .="? "; |
||||
|
||||
$renderedresult = MarkupToHTML($pagename, $result); |
||||
print $renderedresult; |
||||
|
||||
//$text = RetrieveAuthSection($pagename,$auth); |
||||
//$content = MarkupToHTML($pagename, $text); |
||||
//print $content; |
||||
} |
||||
|
||||
$HandleActions['ExercisesCheck'] = 'ExercisesCheck'; # if url contains action=myaction call HandleMyAction timely |
||||
$HandleAuth['ExercisesCheck'] = 'read'; # authorization level $auth for HandleMyAction |
||||
|
||||
function ExercisesCheck($pagename, $auth){ |
||||
$type = $_GET["type"]; |
||||
// assuming pagelink |
||||
$sourcepage = $_GET["source"]; |
||||
$answer = $_GET["answer"]; |
||||
$counter = (int) $_GET["counter"]; |
||||
|
||||
list($group,$page) = explode(".",$pagename); |
||||
if ($group == "AllPages"){ |
||||
// equivalent to getting ALL pages |
||||
$pages = ListPages(); |
||||
} else { |
||||
$pages = ListPages("/$group\./e"); |
||||
} |
||||
$content = ReadPage($sourcepage,READPAGE_CURRENT); |
||||
$links = $content["targets"]; |
||||
$links_array = explode(",",$links); |
||||
|
||||
if ( in_array($answer,$links_array) ) { |
||||
$result .="Excellent! [[$sourcepage]] is indeed linked to [[$answer]]. "; |
||||
$result .="Note that $links also are. "; |
||||
if ( $counter > 0) { |
||||
$counter++; |
||||
$result .="See if you can [[$pagename?action=Exercises&counter=$counter|solve yet another one]]. "; |
||||
} else { |
||||
$result .="See if you can [[$pagename?action=Exercises&counter=1|solve yet another one]]. "; |
||||
} |
||||
} else { |
||||
$result .="No, [[$sourcepage]] is not linked to [[$answer]] "; |
||||
$result .="but $links are. "; |
||||
$result .="Try to redeem yourself by [[$pagename?action=Exercises|trying another time]]. "; |
||||
} |
||||
$renderedresult = MarkupToHTML($pagename, $result); |
||||
print $renderedresult; |
||||
|
||||
//$text = RetrieveAuthSection($pagename,$auth); |
||||
//$content = MarkupToHTML($pagename, $text); |
||||
//print $content; |
||||
} |
||||
|
||||
?> |
Loading…
Reference in new issue