'; echo ''.get_lang('More').'
'; echo '
'; echo '
- ';
if(api_is_allowed_to_edit() || api_is_platform_admin())
{
//TODO: config area and private stats
}
//Submenu Orphaned pages
echo '
- '.get_lang('OrphanedPages').' '; //Submenu Wanted pages echo '
- '.get_lang('WantedPages').' '; //Submenu Most visited pages echo '
- '.get_lang('MostVisitedPages').' '; //Submenu Most changed pages echo '
- '.get_lang('MostChangedPages').' '; //Submenu Most linked pages //echo '
- '.get_lang('MostLinkedPages').' ';//TODO //Submenu Dead end pages //echo '
- '.get_lang('DeadEndPages').' ';//TODO //Submenu Most new pages (not versions) //echo '
- '.get_lang('MostNewPages').' ';//TODO //Submenu Most long pages //echo '
- '.get_lang('MostLongPages').' ';//TODO //Submenu Protected pages //echo '
- '.get_lang('ProtectedPages').' ';//TODO //Submenu Hidden pages //echo '
- '.get_lang('HiddenPages').' ';//TODO //Submenu Most discuss pages //echo '
- '.get_lang('MostDiscussPages').' ';//TODO //Submenu Best scored pages //echo '
- '.get_lang('BestScoredPages').' ';//TODO //Submenu Pages with more progress //echo '
- '.get_lang('MProgressPages').' ';//TODO //Submenu Most active users echo '
- '.get_lang('MostActiveUsers').' '; //Submenu Most active users in discuss //echo '
- '.get_lang('MostDiscussUsers').' ';//TODO //Submenu Individual assignments //echo '
- '.get_lang('Assignments').' ';//TODO //Submenu Delayed assignments //echo '
- '.get_lang('DelayedAssignments').' ';//TODO //Submenu Random page //echo '
- '.get_lang('RandomPage').' ';//TODO echo '
'; echo ''.get_lang('MostActiveUsers').'
'; echo '
'; $sql='SELECT *, COUNT(*) AS NEDIT FROM '.$tbl_wiki.' WHERE '.$groupfilter.' GROUP BY user_id ORDER BY NEDIT DESC LIMIT 10'; //first ten users with more versions $allpages=api_sql_query($sql,__FILE__,__LINE__); echo '
- ';
while ($row=Database::fetch_array($allpages))
{
$userinfo=Database::get_user_info_from_id($row['user_id']);
echo '
- '.$userinfo['lastname'].', '.$userinfo['firstname'].' -> '.$row['NEDIT'].' '.get_lang('Contributions').' '; } echo '
'; echo ''.get_lang('UserContributions').': '.$userinfo['lastname'].', '.$userinfo['firstname'].'
'; echo '
'; if(api_is_allowed_to_edit() || api_is_platform_admin()) //only by professors if page is hidden { $sql='SELECT * FROM '.$tbl_wiki.' WHERE '.$groupfilter.' AND user_id="'.$_GET['user_id'].'" ORDER BY reflink,version ASC'; } else { $sql='SELECT * FROM '.$tbl_wiki.' WHERE '.$groupfilter.' AND user_id="'.$_GET['user_id'].'" AND visibility=1 ORDER BY reflink,version ASC'; } $allpages=api_sql_query($sql,__FILE__,__LINE__); echo '
- ';
while ($row=Database::fetch_array($allpages))
{
//fix assignment icon
if($row['assignment']==1)
{
$ShowAssignment='
- '.$day.' '.$MonthsLong[$month-1].' '.$year.' '.$hours.":".$minutes.":".$seconds.' ... '.$ShowAssignment.''.$row['title'].' ('.get_lang('Version').' '.$row['version'].') ... '.get_lang('Progress').': '.$row['progress'].'%'.$showcomment.' '; } echo '



'; echo ''.get_lang('MostChangesPages').'
'; echo '
'; if(api_is_allowed_to_edit() || api_is_platform_admin()) //only by professors if page is hidden { $sql='SELECT *, MAX(version) AS MAX FROM '.$tbl_wiki.' WHERE '.$groupfilter.' GROUP BY reflink ORDER BY MAX DESC, reflink LIMIT 10'; //first ten users } else { $sql='SELECT *, MAX(version) AS MAX FROM '.$tbl_wiki.' WHERE '.$groupfilter.' AND visibility=1 GROUP BY reflink ORDER BY MAX DESC, reflink LIMIT 10';//first ten users } $allpages=api_sql_query($sql,__FILE__,__LINE__); echo '
- ';
while ($row=Database::fetch_array($allpages))
{
//fix assignment icon
if($row['assignment']==1)
{
$ShowAssignment='
- '.$ShowAssignment.''.$row['title'].' '.get_lang('With').' '.$row['MAX'].' '.get_lang('Changes').' '; //TODO:check if hidden and assignment mode } echo '



'; echo ''.get_lang('MostVisitedPages').'
'; echo '
'; if(api_is_allowed_to_edit() || api_is_platform_admin()) //only by professors if page is hidden { $sql='SELECT *, SUM(hits) AS tsum FROM '.$tbl_wiki.' WHERE '.$groupfilter.' GROUP BY reflink ORDER BY tsum DESC, reflink LIMIT 10'; //first ten pages } else { $sql='SELECT *, SUM(hits) AS tsum FROM '.$tbl_wiki.' WHERE '.$groupfilter.' AND visibility=1 GROUP BY reflink ORDER BY tsum DESC, reflink LIMIT 10'; //first ten pages } $allpages=api_sql_query($sql,__FILE__,__LINE__); echo '
- ';
while ($row=Database::fetch_array($allpages))
{
//fix assignment icon
if($row['assignment']==1)
{
$ShowAssignment='
- '.$ShowAssignment.''.$row['title'].' '.get_lang('With').' '.$row['tsum'].' '.get_lang('Visits').' '; //TODO:check if hidden and assignment mode } echo '



'; echo ''.get_lang('WantedPages').'
'; echo '
'; $pages = array(); $refs = array(); $orphaned = array(); $sort_wanted=array(); //get name pages $sql='SELECT * FROM '.$tbl_wiki.' WHERE '.$groupfilter.' GROUP BY reflink ORDER BY reflink ASC'; $allpages=api_sql_query($sql,__FILE__,__LINE__); while ($row=Database::fetch_array($allpages)) { $pages[] = $row['reflink']; } //get name refs in last pages and make a unique list $sql='SELECT * FROM '.$tbl_wiki.' s1 WHERE '.$groupfilter.' AND id=(SELECT MAX(s2.id) FROM '.$tbl_wiki.' s2 WHERE s1.reflink = s2.reflink)'; $allpages=api_sql_query($sql,__FILE__,__LINE__); while ($row=Database::fetch_array($allpages)) { //$row['linksto']= str_replace("\n".$row["reflink"]."\n", "\n", $row["linksto"]); //remove self reference. TODO check $rf = explode(" ", trim($row["linksto"]));//wanted pages without /n only blank " " $refs = array_merge($refs, $rf); if ($n++ > 299) { $refs = array_unique($refs); $n=0; } // (clean-up only every 300th loop). Thanks to Erfurt Wiki } //sort linksto. Find linksto into reflink. If not found ->page is wanted natcasesort($refs); echo '
- ';
foreach($refs as $v)
{
if(!in_array($v, $pages))
{
if (trim($v)!=="")
{
echo '
- '.str_replace('_',' ',$v).' '; } } } echo '
'; echo ''.get_lang('OrphanedPages').'
'; echo '
'; $pages = array(); $refs = array(); $orphaned = array(); $sort_orphaned=array(); //get name pages $sql='SELECT * FROM '.$tbl_wiki.' WHERE '.$groupfilter.' GROUP BY reflink ORDER BY reflink ASC'; $allpages=api_sql_query($sql,__FILE__,__LINE__); while ($row=Database::fetch_array($allpages)) { $pages[] = $row['reflink']; } //get name refs in last pages and make a unique list $sql='SELECT * FROM '.$tbl_wiki.' s1 WHERE '.$groupfilter.' AND id=(SELECT MAX(s2.id) FROM '.$tbl_wiki.' s2 WHERE s1.reflink = s2.reflink)'; $allpages=api_sql_query($sql,__FILE__,__LINE__); while ($row=Database::fetch_array($allpages)) { //$row['linksto']= str_replace("\n".$row["reflink"]."\n", "\n", $row["linksto"]); //remove self reference. TODO check $rf = explode(" ", trim($row["linksto"])); //TODO: check fix replace explode("\n", trim($row["linksto"])) with explode(" ", trim($row["linksto"])) $refs = array_merge($refs, $rf); if ($n++ > 299) { $refs = array_unique($refs); $n=0; } // (clean-up only every 300th loop). Thanks to Erfurt Wiki } //search each name of list linksto into list reflink foreach($pages as $v) { if(!in_array($v, $refs)) { $orphaned[] = $v; } } //change reflink by title foreach($orphaned as $vshow) { if(api_is_allowed_to_edit() || api_is_platform_admin()) //only by professors if page is hidden { $sql='SELECT * FROM '.$tbl_wiki.' WHERE '.$groupfilter.' AND reflink="'.$vshow.'" GROUP BY reflink'; } else { $sql='SELECT * FROM '.$tbl_wiki.' WHERE '.$groupfilter.' AND reflink="'.$vshow.'" AND visibility=1 GROUP BY reflink'; } $allpages=api_sql_query($sql,__FILE__,__LINE__); echo '
- ';
while ($row=Database::fetch_array($allpages))
{
//$sort_orphaned[]=$row['title']; //TODO: check to delete this line
//fix assignment icon
if($row['assignment']==1)
{
$ShowAssignment='
- '.$ShowAssignment.''.$row['title'].' '; } echo '



'; //TODO: link to page //TODO: check to delete this line //}//TODO: check to delete this line } /////////////////////// delete current page /////////////////////// Juan Carlos Raña Trabado if ($_GET['action']=='delete') { if(api_is_allowed_to_edit() || api_is_platform_admin()) { echo '
'; echo ''.get_lang('DeletePageHistory').''; echo '
'; $message = get_lang('ConfirmDeletePage').""."
"."".get_lang("No").""." | "."".get_lang("Yes").""."
"; if (!isset ($_GET['delete'])) { Display::display_warning_message($message,false); } if ($_GET['delete'] == 'yes') { $sql='DELETE FROM '.$tbl_wiki.' WHERE reflink="'.html_entity_decode(Database::escape_string(stripslashes(urldecode($page)))).'" AND '.$groupfilter.' ORDER BY id DESC'; api_sql_query($sql,__FILE__,__LINE__); //// //here TODO: delete discussion and mailcue too /// check_emailcue(0, 'E'); Display::display_confirmation_message(get_lang('WikiPageDeleted')); } } else { Display::display_normal_message(get_lang("OnlyAdminDeletePageWiki")); } } /////////////////////// delete all wiki /////////////////////// Juan Carlos Raña Trabado if ($_GET['action']=='deletewiki') { echo ''; echo ''.get_lang('DeleteWiki').''; echo '
'; } /////////////////////// search pages /////////////////////// Juan Carlos Raña Trabado if ($_GET['action']=='searchpages') { echo '
'; echo ''.$SearchPages.''; echo '
'; if (!$_POST['Skeyword']) { echo ''; } else { if($_POST['Scontent']=="1") { $sql="SELECT * FROM ".$tbl_wiki." WHERE ".$groupfilter." AND title LIKE '%".$_POST['Skeyword']."%' OR content LIKE '%".$_POST['Skeyword']."%' GROUP BY reflink ORDER BY title ASC"; } else { $sql="SELECT * FROM ".$tbl_wiki." WHERE ".$groupfilter." AND title LIKE '%".$_POST['Skeyword']."%' GROUP BY reflink ORDER BY title ASC"; } //show result $_clean['group_id']=(int)$_SESSION['_gid']; $result=api_sql_query($sql,__LINE__,__FILE__); echo '
- ';
while ($row=Database::fetch_array($result))
{
$userinfo=Database::get_user_info_from_id($row['user_id']);
//Show page to students if not is hidden. Show page to all teachers if is hidden. Mode assignments: show pages to student only if student it the author
if($row['visibility']==1 || api_is_allowed_to_edit() || api_is_platform_admin() || ($row['assignment']==2 && $row['visibility']==0 && (api_get_user_id()==$row['user_id'])))
{
$year = substr($row['timestamp'], 0, 4);
$month = substr($row['timestamp'], 5, 2);
$day = substr($row['timestamp'], 8, 2);
$hours=substr($row['timestamp'], 11,2);
$minutes=substr($row['timestamp'], 14,2);
$seconds=substr($row['timestamp'], 17,2);
//show teacher assignment
if($row['assignment']==1)
{
//teachers assigment pages only list for teachers
if(api_is_allowed_to_edit() || api_is_platform_admin())
{
$ShowAssignment='
- '; echo ''.$ShowAssignment.$row['title'].''; echo '...'.$userinfo['lastname'].', '.$userinfo['firstname']; echo '...'.$day.' '.$MonthsLong[$month-1].' '.$year.' '.$hours.":".$minutes.":".$seconds.' '; } } //show student assignment if ($row['assignment']==2) { //student assignment pages only list for each student author and for teachers if ($row['user_id']==(int)api_get_user_id() || api_is_allowed_to_edit() || api_is_platform_admin()) { $ShowAssignment='
- '; echo ''.$ShowAssignment.$row['title'].''; echo '...'.$userinfo['lastname'].', '.$userinfo['firstname']; echo '...'.$day.' '.$MonthsLong[$month-1].' '.$year.' '.$hours.":".$minutes.":".$seconds.' '; } } //show wiki pages standard if ($row['assignment']==0) { $ShowAssignment='
- '; echo ''.$ShowAssignment.$row['title'].''; if ($row['user_id']<>0) { echo '...'.$userinfo['lastname'].', '.$userinfo['firstname']; } else { echo get_lang('Anonymous').' ('.$row[user_ip].')'; } echo '...'.$day.' '.$MonthsLong[$month-1].' '.$year.' '.$hours.":".$minutes.":".$seconds.' '; } } } echo '



'; echo ''.$LinksPages.''; echo '
'; if (!$_GET['title']) { Display::display_normal_message(get_lang("MustSelectPage")); } else { $sql='SELECT * FROM '.$tbl_wiki.' WHERE reflink="'.html_entity_decode(Database::escape_string(stripslashes(urldecode($page)))).'" AND '.$groupfilter.''; $result=api_sql_query($sql,__FILE__,__LINE__); //necessary for pages with compound name. TODO: check if necessay after have fixed wanted pages with _ $row=Database::fetch_array($result); echo $LinksPagesFrom.': '.$row['title'].''; if ($page==get_lang('DefaultTitle')) { $page='index'; } $sql="SELECT * FROM ".$tbl_wiki." WHERE ".$groupfilter." AND linksto LIKE '%".html_entity_decode(Database::escape_string(stripslashes(urldecode($page))))." %' GROUP BY reflink ORDER BY title ASC"; //add blank space after like '%" " %' to identify each word $result=api_sql_query($sql,__LINE__,__FILE__); //show result echo '
- ';
while ($row=Database::fetch_array($result))
{
$userinfo=Database::get_user_info_from_id($row['user_id']);
//Show page to students if not is hidden, but the author can see. Show page to all teachers if is hidden. Mode assignments: show pages to student only if student is the author
if($row['visibility']==1 || api_is_allowed_to_edit() || api_is_platform_admin() || ($row['assignment']==2 && $row['visibility']==0 && (api_get_user_id()==$row['user_id'])))
{
$year = substr($row['timestamp'], 0, 4);
$month = substr($row['timestamp'], 5, 2);
$day = substr($row['timestamp'], 8, 2);
$hours=substr($row['timestamp'], 11,2);
$minutes=substr($row['timestamp'], 14,2);
$seconds=substr($row['timestamp'], 17,2);
//Description assignments visible for all teachers
if($row['assignment']==1)
{
if(api_is_allowed_to_edit() || api_is_platform_admin())
{
$ShowAssignment='
- '; echo ''.$ShowAssignment.$row['title'].''; echo '...'.$userinfo['lastname'].', '.$userinfo['firstname']; echo '...'.$day.' '.$MonthsLong[$month-1].' '.$year.' '.$hours.":".$minutes.":".$seconds.' '; } } //Work on the assignments visible for each student if ($row['assignment']==2) { if ($row['user_id']==(int)api_get_user_id() || api_is_allowed_to_edit() || api_is_platform_admin()) { $ShowAssignment='
- '; echo ''.$ShowAssignment.$row['title'].''; echo '...'.$userinfo['lastname'].', '.$userinfo['firstname']; echo '...'.$day.' '.$MonthsLong[$month-1].' '.$year.' '.$hours.":".$minutes.":".$seconds.' '; } } //show wiki pages standard if ($row['assignment']==0) { $ShowAssignment='
- '; echo ''.$ShowAssignment.$row['title'].''; if ($row['user_id']<>0) { echo '...'.$userinfo['lastname'].', '.$userinfo['firstname']; } else { echo get_lang('Anonymous').' ('.$row[user_ip].')'; } echo '...'.$day.' '.$MonthsLong[$month-1].' '.$year.' '.$hours.":".$minutes.":".$seconds.' '; } } } echo '



'; echo ''.get_lang('AddNew').''; echo '
'; display_new_wiki_form(); } else { Display::display_normal_message(get_lang('OnlyAddPagesGroupMembers')); } } else { echo '
'; echo ''.get_lang('AddNew').''; echo '
'; display_new_wiki_form(); } } } /////////////////////// show home page /////////////////////// if (!$_GET['action'] OR $_GET['action']=='show' AND !$_POST['SaveWikiNew']) { display_wiki_entry(); } /////////////////////// show current page /////////////////////// if ($_GET['action']=='showpage' AND !$_POST['SaveWikiNew']) { display_wiki_entry(); } /////////////////////// edit current page /////////////////////// if ($_GET['action']=='edit') { $_clean['group_id']=(int)$_SESSION['_gid']; $sql='SELECT * FROM '.$tbl_wiki.'WHERE reflink="'.html_entity_decode(Database::escape_string(stripslashes(urldecode($page)))).'" AND '.$groupfilter.' ORDER BY id DESC'; $result=api_sql_query($sql,__LINE__,__FILE__); $row=Database::fetch_array($result); // we do not need a while loop since we are always displaying the last version //Only teachers and platform admin can edit the index page. Only teachers and platform admin can edit an assignment teacher if(($row['reflink']=='index' || $row['reflink']=='' || $row['assignment']==1) && (!api_is_allowed_to_edit() || !api_is_platform_admin())) { Display::display_normal_message(get_lang('OnlyEditPagesCourseManager')); } else { $PassEdit=false; //check if is a wiki group if($_clean['group_id']!==0) { //Only teacher, platform admin and group members can edit a wiki group if(api_is_allowed_to_edit() || api_is_platform_admin() || GroupManager :: is_user_in_group($_user['user_id'],$_SESSION['_gid'])) { $PassEdit=true; } else { Display::display_normal_message(get_lang('OnlyEditPagesGroupMembers')); } } else { $PassEdit=true; } // check if is a assignment if(stripslashes($row['assignment'])==1) { Display::display_normal_message(get_lang('EditAssignmentWarning')); $icon_assignment='




'; if($_POST['HistoryDifferences']) { echo '