function ouwiki_tree_index($pageid, &$index, $subwiki, $cm) { $thispage = $index[$pageid]; $output = '<li>' . ouwiki_display_page_in_index($thispage, $subwiki, $cm); if (count($thispage->children) > 0) { $output .= '<ul>'; foreach ($thispage->children as $childid) { $output .= ouwiki_tree_index($childid, $index, $subwiki, $cm); } $output .= '</ul>'; } $output .= '</li>'; return $output; } // Get actual index $index = ouwiki_get_subwiki_index($subwiki->id); $orphans = false; if (count($index) == 0) { print '<p>' . get_string('startpagedoesnotexist', 'ouwiki') . '</p>'; } else { if ($treemode) { ouwiki_build_tree($index); // Print out in hierarchical form... print '<ul class="ouw_indextree">'; print ouwiki_tree_index(reset($index)->pageid, $index, $subwiki, $cm); print '</ul>'; foreach ($index as $indexitem) { if (count($indexitem->linksfrom) == 0 && !is_null($indexitem->title)) { $orphans = true; } }
public function test_ouwiki_structure() { $this->resetAfterTest(true); $user = $this->get_new_user(); $course = $this->get_new_course(); // Setup a wiki to use. $ouwiki = $this->get_new_ouwiki($course->id, OUWIKI_SUBWIKIS_SINGLE); $cm = get_coursemodule_from_instance('ouwiki', $ouwiki->id); $this->assertNotEmpty($cm); $context = context_module::instance($cm->id); $groupid = 0; $this->setUser($user); $subwiki = ouwiki_get_subwiki($course, $ouwiki, $cm, $context, $groupid, $user->id, true); // Create the start page. $startpagename = 'testpage1'; $formdata = null; $startpageversion = ouwiki_get_current_page($subwiki, $startpagename, OUWIKI_GETPAGE_CREATE); $verid = ouwiki_save_new_version($course, $cm, $ouwiki, $subwiki, $startpagename, $startpagename, -1, -1, -1, null, $formdata); // Create a page with no sub pages. $pagename2 = 'testpage2'; $content2 = 'testcontent2'; ouwiki_create_new_page($course, $cm, $ouwiki, $subwiki, $startpagename, $pagename2, $content2, $formdata); // Try get that page. $pageversion = ouwiki_get_current_page($subwiki, $pagename2); $this->assertEquals($pageversion->title, $pagename2); // Test fullname info from ouwiki_get_current_page. $this->assertEquals(fullname($user), fullname($pageversion)); // Add another page to start page. $pagename3 = 'testpage3'; $content3 = 'testcontent3'; // We don't get anything returned for this. ouwiki_create_new_page($course, $cm, $ouwiki, $subwiki, $startpagename, $pagename3, $content3, $formdata); // Try get that page. $pageversion = ouwiki_get_current_page($subwiki, $pagename3); $this->assertEquals($pageversion->title, $pagename3); // Test fullname info from ouwiki_get_current_page. $this->assertEquals(fullname($user), fullname($pageversion)); // Add another page to start page. $pagename9 = 'testpage9'; $content9 = 'testcontent9'; // We don't get anything returned for this. ouwiki_create_new_page($course, $cm, $ouwiki, $subwiki, $startpagename, $pagename9, $content9, $formdata); // Try get that page. $pageversion = ouwiki_get_current_page($subwiki, $pagename9); $this->assertEquals($pageversion->title, $pagename9); // Test fullname info from ouwiki_get_current_page. $this->assertEquals(fullname($user), fullname($pageversion)); // Add pages to testpage3. // Add page to test page 3. $pagename4 = 'testpage4'; $content4 = 'testcontent4'; // We don't get anything returned for this. ouwiki_create_new_page($course, $cm, $ouwiki, $subwiki, $pagename3, $pagename4, $content4, $formdata); // Try get that page. $pageversion = ouwiki_get_current_page($subwiki, $pagename4); $this->assertEquals($pageversion->title, $pagename4); // Test fullname info from ouwiki_get_current_page. $this->assertEquals(fullname($user), fullname($pageversion)); // Add another page to testpage 3. $pagename8 = 'testpage8'; $content8 = 'testcontent8'; // We don't get anything returned for this. ouwiki_create_new_page($course, $cm, $ouwiki, $subwiki, $pagename3, $pagename8, $content8, $formdata); // Try get that page. $pageversion = ouwiki_get_current_page($subwiki, $pagename8); $this->assertEquals($pageversion->title, $pagename8); // Test fullname info from ouwiki_get_current_page. $this->assertEquals(fullname($user), fullname($pageversion)); // Add pages to testpage4. // Add page to test page 4. $pagename5 = 'testpage5'; $content5 = 'testcontent5'; // We don't get anything returned for this. ouwiki_create_new_page($course, $cm, $ouwiki, $subwiki, $pagename4, $pagename5, $content5, $formdata); // Try get that page. $pageversion = ouwiki_get_current_page($subwiki, $pagename5); $this->assertEquals($pageversion->title, $pagename5); // Test fullname info from ouwiki_get_current_page. $this->assertEquals(fullname($user), fullname($pageversion)); // Add another page to testpage 4. $pagename7 = 'testpage7'; $content7 = 'testcontent7'; // We don't get anything returned for this. ouwiki_create_new_page($course, $cm, $ouwiki, $subwiki, $pagename4, $pagename7, $content7, $formdata); // Try get that page. $pageversion = ouwiki_get_current_page($subwiki, $pagename7); $this->assertEquals($pageversion->title, $pagename7); // Test fullname info from ouwiki_get_current_page. $this->assertEquals(fullname($user), fullname($pageversion)); // Add page to test page 5. $pagename6 = 'testpage6'; $content6 = 'testcontent6'; // We don't get anything returned for this. ouwiki_create_new_page($course, $cm, $ouwiki, $subwiki, $pagename5, $pagename6, $content6, $formdata); // Try get that page. $pageversion = ouwiki_get_current_page($subwiki, $pagename6); $this->assertEquals($pageversion->title, $pagename6); // Test fullname info from ouwiki_get_current_page. $this->assertEquals(fullname($user), fullname($pageversion)); // Add page to test page 9. $pagename10 = 'testpage10'; $content10 = 'testcontent10'; // We don't get anything returned for this. ouwiki_create_new_page($course, $cm, $ouwiki, $subwiki, $pagename9, $pagename10, $content10, $formdata); // Try get that page. $pageversion = ouwiki_get_current_page($subwiki, $pagename10); $this->assertEquals($pageversion->title, $pagename10); // Test fullname info from ouwiki_get_current_page. $this->assertEquals(fullname($user), fullname($pageversion)); // Add another page to testpage 9. $pagename12 = 'testpage12'; $content12 = 'testcontent12'; // We don't get anything returned for this. ouwiki_create_new_page($course, $cm, $ouwiki, $subwiki, $pagename9, $pagename12, $content12, $formdata); // Try get that page. $pageversion = ouwiki_get_current_page($subwiki, $pagename12); $this->assertEquals($pageversion->title, $pagename12); // Test fullname info from ouwiki_get_current_page. $this->assertEquals(fullname($user), fullname($pageversion)); // Add page to test page 10. $pagename11 = 'testpage11'; $content11 = 'testcontent11'; // We don't get anything returned for this. ouwiki_create_new_page($course, $cm, $ouwiki, $subwiki, $pagename10, $pagename11, $content11, $formdata); // Try get that page. $pageversion = ouwiki_get_current_page($subwiki, $pagename11); $this->assertEquals($pageversion->title, $pagename11); // Test fullname info from ouwiki_get_current_page. $this->assertEquals(fullname($user), fullname($pageversion)); // Create the index. $index = ouwiki_get_subwiki_index($subwiki->id); // Check to see that there are 12 posts. $this->assertEquals(count($index), 12); reset($index); $orphans = false; // Check for orphan posts - there should be none. foreach ($index as $indexitem) { if (count($indexitem->linksfrom) == 0 && $indexitem->title !== 'testpage1') { $orphans = true; break; } } $this->assertEquals($orphans, false); // Test tree structure functions. // Build tree. ouwiki_build_tree($index); // Check to see whether pages have the correct number of children in them including the root node. $page = $this->get_page_from_index_by_pagename('testpage3', $index); $subtree = ouwiki_get_sub_tree_from_index($page->pageid, $index); $this->assertEquals(6, count($subtree)); // Check to see whether pages have the correct number of children in them including the root node. $page = $this->get_page_from_index_by_pagename('testpage4', $index); $subtree = ouwiki_get_sub_tree_from_index($page->pageid, $index); $this->assertEquals(4, count($subtree)); // Check linkto, linksfrom, and children arrays for testpage 4 // - see structure diagram in function description for links to, from, and children for P4. $linksfrom = $page->linksfrom; $linksto = $page->linksto; $children = $page->children; $this->assertEquals(count($linksfrom), 1); $this->assertEquals(count($linksto), 2); $this->assertEquals(count($children), 2); // Test linksfrom from testpage 4. $p = $this->get_page_from_index_by_pageid($linksfrom[0], $index); $this->assertEquals($p->title, $pagename3); // Test linksto for testpage 4. $p = $this->get_page_from_index_by_pageid($linksto[0], $index); $this->assertEquals($p->title, $pagename5); $p = $this->get_page_from_index_by_pageid($linksto[1], $index); $this->assertEquals($p->title, $pagename7); // Test children for testpage 4. $p = $this->get_page_from_index_by_pageid($children[0], $index); $this->assertEquals($p->title, $pagename5); $p = $this->get_page_from_index_by_pageid($children[1], $index); $this->assertEquals($p->title, $pagename7); // Check to see whether pages have the correct number of children in them including the root node. $page = $this->get_page_from_index_by_pagename('testpage5', $index); $this->assertEquals(2, count(ouwiki_get_sub_tree_from_index($page->pageid, $index))); // Check to see whether pages have the correct number of children in them including the root node. $page = $this->get_page_from_index_by_pagename('testpage9', $index); $this->assertEquals(4, count(ouwiki_get_sub_tree_from_index($page->pageid, $index))); // Check to see whether pages have the correct number of children in them including the root node. $page = $this->get_page_from_index_by_pagename('testpage10', $index); $this->assertEquals(2, count(ouwiki_get_sub_tree_from_index($page->pageid, $index))); }
} $commentsbyroles = array(); $editsbyroles = array(); $totalusers = 0; if (!$csv) { print <<<EOF \t\t<tr>\t\t\t \t\t\t<td class='ouw_leftcol'><a href="reportsgroup.php?id={$wikiid}&viewgroup={$viewgroupid}">{$group->name}</a><div class='ouw_groupcolumn'></div></td> EOF; } else { print $csv->line() . $csv->quote($group->name); } foreach ($rolenames as $roleid => $rolename) { $usercount = count(ouwiki_get_users($contexts, $viewgroupid, $roleid)); if ($usercount > 0) { $allsubwikipages = ouwiki_get_subwiki_index($subwiki->id); $pagecount = count($allsubwikipages); $totalusers += $usercount; $activeusers = ouwiki_get_activeusers($contexts, $subwiki->id, $viewgroupid, $roleid); $activeusercount = count($activeusers); $inactiveusercount = $usercount - $activeusercount; // calc comments $pagecomments = ouwiki_get_pagecomments($contexts, $subwiki->id, $viewgroupid, $roleid); $commentsbyroles[$rolename] = $pagecomments; $commentcount = 0; foreach ($pagecomments as $pagecomment) { $commentcount += $pagecomment->commentcount; $pagecommentcount[$pagecomment->pagetitle] += $pagecomment->commentcount; } $rolescommentcount[$rolename] = $commentcount; $pageedits = ouwiki_get_editedpages($contexts, $subwiki->id, $viewgroupid, $roleid);
// Prepare form parameters. $wikiinfo = array('importid' => $selectedact->id, 'subwikiid' => $selectedsubwiki->id); $pageparams['step']++; $pageparams['courseid'] = $importedfromcourse->id; $form = new mod_ouwiki_import_pageselect_form(null, array('params' => array_merge($pageparams, $wikiinfo), 'pages' => $pages)); $form->display(); } else { if ($curstep == 3) { // Confirmation - check OK to proceed and look for merge conflicts, locks etc. require_sesskey(); $selectedact = required_param('importid', PARAM_INT); $selectedsubwiki = required_param('subwikiid', PARAM_INT); $selectedouwiki = ''; ouwiki_get_wikiinfo($selectedact, $selectedsubwiki, $selectedouwiki, $importedfromcourse); // Build up index, get selected pages - making sure sub pages are included. $index = ouwiki_get_subwiki_index($selectedsubwiki->id); ouwiki_build_tree($index); $pagelist = array(); // Our list of page ids to import. if ($pages = optional_param('pages', null, PARAM_SEQUENCE)) { // Full page list available e.g. from cancel. $pagelist = explode(',', $pages); } else { // Find pages sent from step 1, get any linked pages also. foreach ($_POST as $key => $value) { if (strpos($key, 'page') === 0) { // Add in page and recursive add of links. ouwiki_add_linkedpages($pagelist, $index, $value); } } $pagelist = array_unique($pagelist);