$prop->name = "id";
     $prop->value = $id;
     wiki_input_hidden($prop);
     $prop = null;
     $prop->name = "wdir";
     $prop->value = $wdir;
     wiki_input_hidden($prop);
     $prop = null;
     $prop->name = "action";
     $prop->value = "zip";
     wiki_input_hidden($prop);
     $prop = null;
     $prop->name = "name";
     $prop->size = "35";
     $prop->value = "new.zip";
     wiki_input_text($prop);
     $prop = null;
     $prop->name = "sesskey";
     $prop->value = $USER->sesskey;
     wiki_input_hidden($prop);
     $prop = null;
     $prop->value = get_string("createziparchive");
     wiki_input_submit($prop);
     wiki_div_end();
     wiki_form_end();
     wiki_change_column();
     print_cancel($choose, $id, $wdir, $strcancel);
     wiki_table_end();
 } else {
     displaydir($wdir);
     clearfilelist();
function wiki_export_content(&$WS, $folder = 'exportedfiles')
{
    global $CFG, $contents;
    $export = optional_param('dfformexport', NULL, PARAM_ALPHA);
    $exportall = optional_param('dfformexportall', NULL, PARAM_ALPHA);
    //check if the form was filled in
    if (isset($export) || isset($exportall)) {
        //make sure the file doesn't exist
        $dfformname = optional_param('dfformname', NULL, PARAM_FILE);
        $currentname = clean_filename($dfformname);
        $cleandfwiki = clean_filename($WS->dfwiki->name);
        if (file_exists($CFG->dataroot . "/" . $WS->dfwiki->course . "/" . $folder . "/" . $cleandfwiki . $WS->cm->id . "/" . $currentname)) {
            $err = $currentname . ' already exists!';
            error($err);
        } else {
            //export to xml
            wiki_export_content_XML($WS);
            $prop = null;
            $prop->class = 'textcenter';
            $info = wiki_size_text(get_string("exportcorrectly", 'wiki'), 2, '', true);
            wiki_div($info, $prop);
            //make the zip
            $files = array();
            //copy files inside temp where is the xml
            check_dir_exists("{$CFG->dataroot}/temp/" . $folder . "/wiki{$WS->cm->id}", true);
            check_dir_exists("{$CFG->dataroot}/{$WS->dfwiki->course}/moddata/wiki{$WS->cm->id}", true);
            $flist = list_directories_and_files("{$CFG->dataroot}/{$WS->dfwiki->course}/moddata/wiki{$WS->cm->id}");
            if ($flist != null) {
                foreach ($flist as $fil) {
                    $from_file = "{$CFG->dataroot}/{$WS->dfwiki->course}/moddata/wiki{$WS->cm->id}/{$fil}";
                    $to_file = "{$CFG->dataroot}/temp/" . $folder . "/wiki{$WS->cm->id}/{$fil}";
                    copy($from_file, $to_file);
                }
            }
            //continue compressing
            $filelist = list_directories_and_files("{$CFG->dataroot}/temp/" . $folder . "/wiki{$WS->cm->id}");
            foreach ($filelist as $file) {
                $files[] = "{$CFG->dataroot}/temp/" . $folder . "/wiki{$WS->cm->id}/{$file}";
            }
            check_dir_exists("{$CFG->dataroot}/{$WS->dfwiki->course}/" . $folder, true);
            check_dir_exists("{$CFG->dataroot}/{$WS->dfwiki->course}/" . $folder . "/{$cleandfwiki}{$WS->cm->id}", true);
            $destination = "{$CFG->dataroot}/{$WS->dfwiki->course}/" . $folder . "/{$cleandfwiki}{$WS->cm->id}/{$currentname}";
            $status = zip_files($files, $destination);
            //delete folder inside temp that we've created
            $filelist2 = list_directories_and_files("{$CFG->dataroot}/temp/" . $folder . "/wiki{$WS->cm->id}");
            foreach ($filelist2 as $file2) {
                unlink("{$CFG->dataroot}/temp/" . $folder . "/wiki{$WS->cm->id}/{$file2}");
            }
            rmdir("{$CFG->dataroot}/temp/" . $folder . "/wiki{$WS->cm->id}");
            $prop = null;
            $prop->border = '0';
            $prop->class = 'boxaligncenter';
            $prop->classtd = 'nwikileftnow';
            wiki_table_start($prop);
            $wdir = '/' . $folder . '/' . $cleandfwiki . $WS->cm->id;
            $fileurl = "{$wdir}/{$currentname}";
            $ffurl = "/file.php?file=/{$WS->cm->course}{$fileurl}";
            $icon = mimeinfo("icon", $currentname);
            $prop = null;
            $prop->src = "{$CFG->pixpath}/f/{$icon}";
            $prop->height = '16';
            $prop->width = '16';
            $prop->alt = 'File';
            $im = wiki_img($prop, true);
            link_to_popup_window($ffurl, "display", $im, 480, 640);
            echo ' ';
            link_to_popup_window($ffurl, "display", htmlspecialchars($currentname), 480, 640);
            $prop = null;
            $prop->class = 'nwikileftnow';
            wiki_change_row($prop);
            wiki_table_end();
            $prop = null;
            $prop->border = '0';
            $prop->class = 'boxaligncenter';
            $prop->classtd = 'nwikileftnow';
            wiki_table_start($prop);
            $prop = null;
            $prop->action = 'index.php?id=' . $WS->dfwiki->course . '&wdir=/"' . $folder;
            $prop->method = 'post';
            $prop->id = 'form';
            wiki_form_start($prop);
            $prop = null;
            $prop->name = 'dfformviewexported';
            $prop->value = get_string('viewexported', 'wiki');
            $input = wiki_input_submit($prop, true);
            wiki_div($input);
            wiki_form_end();
            wiki_change_column();
            print_continue("{$CFG->wwwroot}/mod/wiki/view.php?id={$WS->cm->id}");
            wiki_table_end();
        }
    } else {
        //create the form to export
        //first of all treat the form that we've sended about the pages to export
        if (!($frm = data_submitted())) {
            $contents = null;
            $contentsall = get_records_sql('SELECT DISTINCT pagename,dfwiki
				FROM ' . $CFG->prefix . 'wiki_pages
				WHERE dfwiki=' . $WS->dfwiki->id);
            if ($contentsall != null) {
                foreach ($contentsall as $call) {
                    $contents[] = $call->pagename;
                }
            }
            $WS->nocontents = null;
        } else {
            if (!empty($frm->addall)) {
                $contents = null;
                $contentsall = get_records_sql('SELECT DISTINCT pagename,dfwiki
				FROM ' . $CFG->prefix . 'wiki_pages
				WHERE dfwiki=' . $WS->dfwiki->id);
                if ($contentsall != null) {
                    foreach ($contentsall as $call) {
                        $contents[] = $call->pagename;
                    }
                }
                $WS->nocontents = null;
            } else {
                if (!empty($frm->removeall)) {
                    $WS->nocontents = null;
                    $nocontentsall = get_records_sql('SELECT DISTINCT pagename,dfwiki
				FROM ' . $CFG->prefix . 'wiki_pages
				WHERE dfwiki=' . $WS->dfwiki->id);
                    if ($nocontentsall != null) {
                        foreach ($nocontentsall as $nocall) {
                            $WS->nocontents[] = $nocall->pagename;
                        }
                    }
                    $contents = null;
                } else {
                    $contents = null;
                    $WS->nocontents = null;
                    for ($i = 0; $i < $frm->sizecontents; $i++) {
                        $contents[] = $frm->contents[$i];
                    }
                    for ($j = 0; $j < $frm->sizenocontents; $j++) {
                        $WS->nocontents[] = $frm->nocontents[$j];
                    }
                    if (!empty($frm->add) and !empty($frm->addselect)) {
                        foreach ($frm->addselect as $addpage) {
                            $contents[] = $addpage;
                            wiki_remove_nocontents($addpage, $WS);
                        }
                    } else {
                        if (!empty($frm->remove) and !empty($frm->removeselect)) {
                            foreach ($frm->removeselect as $removepage) {
                                $WS->nocontents[] = $removepage;
                                wiki_remove_contents($removepage);
                            }
                        }
                    }
                }
            }
        }
        $prop = null;
        $prop->class = 'textcenter';
        $info = wiki_size_text(get_string("selectpages", 'wiki'), 2, '', true);
        wiki_div($info, $prop);
        include 'pages.html';
        wiki_div_end();
        $prop = null;
        $prop->class = 'box generalbox generalboxcontent boxaligncenter textcenter';
        wiki_div_start($prop);
        $prop = null;
        $prop->action = 'exportxml.php?id=' . $WS->cm->id . '&amp;pageaction=exportxml';
        $prop->method = 'post';
        $prop->id = 'form';
        wiki_form_start($prop);
        $prop = null;
        $prop->border = '0';
        $prop->class = 'boxaligncenter';
        $prop->classtd = 'textcenter';
        wiki_table_start($prop);
        $sizecon = count($WS->nocontents);
        for ($i = 0; $i < $sizecon; $i++) {
            $prop = null;
            $prop->name = 'dfform[' . $WS->nocontents[$i] . ']';
            $prop->value = $WS->nocontents[$i];
            wiki_input_hidden($prop);
        }
        $prop = null;
        $prop->class = 'textcenter';
        $info = wiki_size_text(get_string("otheroptions", 'wiki'), 2, '', true);
        wiki_div($info, $prop);
        $cleandfwiki = clean_filename($WS->dfwiki->name);
        $times = time();
        $prop = null;
        $prop->class = 'nwikileftnow';
        wiki_change_row($prop);
        $prop = null;
        $prop->name = 'dfforminfo';
        $prop->value = '1';
        wiki_input_checkbox($prop);
        print_string('exportinfo', 'wiki');
        $prop = null;
        $prop->class = 'nwikileftnow';
        wiki_change_row($prop);
        $prop = null;
        $prop->name = 'dfformblocks';
        $prop->value = '1';
        wiki_input_checkbox($prop);
        print_string('blocks', 'wiki');
        $prop = null;
        $prop->class = 'nwikicenternow';
        wiki_change_row($prop);
        $info = get_string('saveas', 'wiki');
        $prop = null;
        $prop->name = 'dfformname';
        $prop->value = $cleandfwiki . '-' . $times . '.zip';
        $info .= wiki_input_text($prop, true);
        wiki_paragraph($info, '');
        $prop = null;
        $prop->class = 'nwikicenternow';
        wiki_change_row($prop);
        $prop = null;
        $prop->name = 'dfformexport';
        $prop->value = get_string('export', 'wiki');
        wiki_input_submit($prop);
        $prop = null;
        $prop->name = 'dfformexportall';
        $prop->value = get_string('exportall', 'wiki');
        wiki_input_submit($prop);
        $prop = null;
        $prop->name = 'dfformcancel';
        $prop->value = get_string('cancel');
        wiki_input_submit($prop);
        wiki_table_end();
        wiki_form_end();
    }
}
function wiki_grade_print_edition_evaluation_box(&$WS)
{
    $context = get_context_instance(CONTEXT_MODULE, $WS->cm->id);
    if (has_capability('mod/wiki:evaluateawiki', $context)) {
        print_box_start();
        $prop = null;
        $prop->id = "form_grades";
        $prop->method = "post";
        $prop->action = 'view.php?id=' . $WS->linkid . '&amp;page=' . urlencode($WS->pageaction . '/' . stripslashes_safe($WS->page)) . '&amp;dfcontent=11&amp;ver=' . $WS->ver . '&amp;gid=' . $WS->groupmember->groupid . '&amp;uid=' . $WS->member->id;
        wiki_form_start($prop);
        $prop = null;
        $prop->padding = "2";
        $prop->aligntd = "right";
        wiki_table_start($prop);
        echo '<b>' . get_string('grade') . '</b>:&nbsp;';
        wiki_change_column();
        /// 1 -> "+", 2 -> "=", 3 -> "-"
        $prop = null;
        $prop->value = '1';
        $opt = wiki_option('+', $prop, true);
        $prop = null;
        $prop->value = '2';
        $opt .= wiki_option('=', $prop, true);
        $prop = null;
        $prop->value = '3';
        $opt .= wiki_option('-', $prop, true);
        $prop = null;
        $prop->name = "grade_edition";
        wiki_select($opt, $prop);
        echo '&nbsp';
        $prop = null;
        $prop->name = 'grade_edition_confirm';
        $prop->value = get_string('set', 'wiki');
        wiki_input_submit($prop);
        unset($prop);
        $prop->name = 'oldversion';
        $prop->value = $WS->pageolddata->version;
        wiki_input_hidden($prop);
        unset($prop);
        $prop->name = 'currentversion';
        $prop->value = $WS->pageverdata->version;
        wiki_input_hidden($prop);
        wiki_change_row();
        echo '<b>' . get_string('eval_feedback', 'wiki') . '</b>:&nbsp';
        wiki_change_column();
        unset($prop);
        $prop->size = 60;
        $prop->value = '';
        $prop->name = 'feedback';
        wiki_input_text($prop);
        $prop->align = 'right';
        wiki_change_row($prop);
        echo '<i>' . get_string('note', 'wiki') . '</i>:&nbsp;';
        wiki_change_column();
        $oldversion = $WS->pageolddata->version;
        $currentversion = $WS->pageverdata->version;
        if ($currentversion < $oldversion) {
            $tmp = $currentversion;
            $currentversion = $oldversion;
            $oldversion = $tmp;
        }
        $version = $oldversion + 1;
        $count = $version - $currentversion;
        if ($count == 1) {
            echo get_string('evaluate_hist_edition', 'wiki') . ' ' . $version;
        } else {
            echo '<i>' . get_string('evaluate_hist_editions', 'wiki') . ': ';
            for ($i = $version; $i <= $currentversion; $i++) {
                echo $i;
                if ($i < $currentversion) {
                    echo ', ';
                }
            }
            echo '</i>';
        }
        wiki_table_end();
        wiki_form_end();
        print_box_end();
    }
}
function wiki_print_editor(&$content_text, $adddiscussion = '0', $addtitle = '', $oldcontent = '', &$WS)
{
    global $CFG, $USER;
    //show upload error @@@@@@@@
    //try to delete a file
    wiki_print_editor_setup($WS);
    require_once $CFG->dirroot . "/mod/wiki/weblib.php";
    require_once $CFG->dirroot . "/mod/wiki/locallib.php";
    //Scritp WIKI_TREE
    $prop = null;
    $prop->type = 'text/javascript';
    if (isset($WS->dfcourse)) {
        $prop->src = '../mod/wiki/editor/wiki_tree.js';
    } else {
        $prop->src = 'editor/wiki_tree.js';
    }
    wiki_script('', $prop);
    if (isset($WS->dfdir->error)) {
        foreach ($WS->dfdir->error as $err) {
            $prop = null;
            $prop->class = 'except';
            wiki_size_text($err, 3, $prop);
        }
    }
    if (substr($WS->pagedata->pagename, 0, strlen('discussion:')) != 'discussion:') {
        $event = 'view';
    } else {
        $event = 'discussion';
    }
    //mount editing form
    //Converts reserved chars for html to prevent chars misreading
    $pagetemp = stripslashes_safe($WS->pagedata->pagename);
    $pagetemp = wiki_clean_name($pagetemp);
    $prop = null;
    $prop->action = 'view.php?id=' . $WS->linkid . '&amp;page=' . $event . '/' . urlencode($pagetemp) . '&amp;gid=' . $WS->groupmember->groupid . '&amp;uid=' . $WS->member->id;
    $prop->method = 'post';
    $prop->enctype = 'multipart/form-data';
    $prop->id = 'prim';
    wiki_form_start($prop);
    wiki_table_start();
    $prop = null;
    $prop->name = 'dfformversion';
    $prop->value = $WS->pagedata->version ? $WS->pagedata->version : '0';
    wiki_input_hidden($prop);
    $prop = null;
    $prop->name = 'dfformcreated';
    $prop->value = $WS->pagedata->created;
    wiki_input_hidden($prop);
    $prop = null;
    $prop->name = 'dfformeditable';
    $prop->value = $WS->pagedata->editable;
    wiki_input_hidden($prop);
    $prop = null;
    if ($adddiscussion == '1') {
        $prop->value = 'adddiscussion';
    } else {
        $prop->value = 'edit';
    }
    $prop->name = 'dfformaction';
    wiki_input_hidden($prop);
    $prop = null;
    $prop->name = 'dfformeditor';
    $prop->value = $WS->pagedata->editor;
    wiki_input_hidden($prop);
    /* necessary for joining the section with the rest of the page */
    // section name
    $section = optional_param('section', '', PARAM_TEXT);
    $prop = null;
    $prop->name = 'section';
    $preview = optional_param('dfformpreview', '', PARAM_TEXT);
    if ($preview != '' || wiki_is_uploading_modified()) {
        // if come from a preview, upload file or delete file
        // the string is already unslashed and encoded
        $prop->value = $section;
    } else {
        // gotta strip the slashes and encode it
        $prop->value = urlencode(stripslashes($section));
    }
    wiki_input_hidden($prop);
    // section number
    $prop = null;
    $prop->name = 'sectionnum';
    $prop->value = optional_param('sectionnum', '', PARAM_INTEGER);
    wiki_input_hidden($prop);
    $prop = null;
    $prop->name = 'sectionhash';
    $prop->value = optional_param('sectionhash', '', PARAM_TEXT);
    wiki_input_hidden($prop);
    // discussion
    if ($adddiscussion == '1') {
        wiki_size_text(get_string('adddiscussionitem', 'wiki'), 2);
        print_string('title', 'wiki');
        wiki_br();
        $prop = null;
        $prop->name = 'dfformaddtitle';
        $prop->value = $addtitle;
        $prop->size = '80';
        wiki_input_text($prop);
        wiki_br(2);
        $prop = null;
        $prop->name = 'dfformoldcontent';
        $prop->value = $oldcontent;
        wiki_input_hidden($prop);
        wiki_hr();
        wiki_change_row();
        date_default_timezone_set('UTC');
        // add editing username and date to the end of each discussion (nadavkav patch)
        $txt = $content_text . '<br/><br/>  <i>(' . get_string('discussioneditby', 'wiki') . ': ' . $USER->firstname . " " . $USER->lastname . " " . get_string('discussionediton', 'wiki') . ": " . date(DATE_RFC822) . ")</i>";
    } else {
        $txt = $content_text;
    }
    // wikibook
    $prop = null;
    $prop->name = 'wikibook';
    $prop->value = optional_param('wikibook', '', PARAM_TEXT);
    wiki_input_hidden($prop);
    wiki_print_edit_area($txt, $WS);
    wiki_tags_print_editbox($WS);
    $prop = null;
    $prop->class = 'nwikileftnow';
    wiki_change_row($prop);
    if ($WS->upload_bar) {
        wiki_print_edit_uploaded($WS);
    }
    wiki_change_row();
    $prop = null;
    $prop->name = 'dfformsave';
    $prop->value = get_string('save', 'wiki');
    wiki_input_submit($prop);
    $prop = null;
    $prop->name = 'dfformpreview';
    $prop->value = get_string('preview');
    wiki_input_submit($prop);
    $prop = null;
    $prop->name = 'dfformcancel';
    $prop->value = get_string('cancel');
    wiki_input_submit($prop);
    $prop = null;
    $prop->name = 'dfformdefinitive';
    $prop->value = '1';
    $prop->id = 'checkbox';
    wiki_input_checkbox($prop);
    print_string('highlight', 'wiki');
    wiki_table_end();
    wiki_form_end();
}