MDL-14493 First checkin of Feedback module into HEAD.
[moodle.git] / mod / feedback / item / captcha / lib.php
1 <?PHP  // $Id$
2 defined('FEEDBACK_INCLUDE_TEST') OR die('not allowed');
3 require_once($CFG->dirroot.'/mod/feedback/item/feedback_item_class.php');
5 class feedback_item_captcha extends feedback_item_base {
6     var $type = "captcha";
7     function init() {
8     
9     }
10     
11     function show_edit($item, $usehtmleditor = false) {
13         $item->presentation=empty($item->presentation)? 3 : $item->presentation;
15     ?>
16         <table>
17             <tr>
18                 <th colspan="2"><?php print_string('numeric', 'feedback');?>
19                     &nbsp;(<input type="checkbox" name="required" value="1" <?php 
20                 $item->required = isset($item->required) ? $item->required : 1;
21                 echo ($item->required == 1?'checked="checked"':'');
22                 ?> />&nbsp;<?php print_string('required', 'feedback');?>)
23                 </th>
24             </tr>
25             <tr>
26                 <td><?php print_string('item_name', 'feedback');?></td>
27                 <td><input type="text" id="itemname" name="itemname" size="40" maxlength="255" value="<?php echo isset($item->name)?htmlspecialchars(stripslashes_safe($item->name)):'';?>" /></td>
28             </tr>
29             <tr>
30                 <td><?php print_string('count_of_nums', 'feedback');?></td>
31                 <td>
32                     <select name="count_of_nums">
33                     <?php
34                         feedback_print_numeric_option_list(3, 10, $item->presentation);
35                     ?>
36                     </select>
37                 </td>
38             </tr>
39         </table>
40     <?php
41     }
43     //liefert eine Struktur ->name, ->data = array(mit Antworten)
44     function get_analysed($item, $groupid = false, $courseid = false) {
45         return null;
46     }
48     function get_printval($item, $value) {
49         return '';
50     }
52     function print_analysed($item, $itemnr = 0, $groupid = false, $courseid = false) {
53         return $itemnr;
54     }
56     function excelprint_item(&$worksheet, $rowOffset, $item, $groupid, $courseid = false) {
57         return $rowOffset;
58     }
60     function print_item($item, $value = false, $readonly = false, $edit = false, $highlightrequire = false){
61         global $SESSION, $CFG;
62         
63         $align = get_string('thisdirection') == 'ltr' ? 'left' : 'right';
64         
65         $presentation = $item->presentation;
66         $SESSION->feedback->item->captcha->charcount = $presentation;
67         
68         $cmid = 0;
69         if(!$readonly) {
70             $feedbackid = $item->feedback;
71             if($feedbackid > 0) {
72                 $feedback = get_record('feedback', 'id', $feedbackid);
73                 if($cm = get_coursemodule_from_instance("feedback", $feedback->id, $feedback->course)) {
74                     $cmid = $cm->id;
75                 }
76             }
77         }
78         
79         if(isset($SESSION->feedback->item->captcha->checked)) {
80             $checked = $SESSION->feedback->item->captcha->checked == true;
81             unset($SESSION->feedback->item->captcha->checked);
82         }else {
83             $checked = false;
84         }
85         
86         //check if an false value even the value is not required
87         if(!$readonly AND !$item->required AND $value != '' AND $SESSION->feedback->item->captcha->checkchar != $value) {
88             $falsevalue = true;
89         }else {
90             $falsevalue = false;
91         }
92         
93         if(($highlightrequire AND $item->required AND !$checked) OR $falsevalue) {
94             $highlight = 'bgcolor="#FFAAAA" class="missingrequire"';
95         }else {
96             $highlight = '';
97         }
98         $requiredmark = ($item->required == 1)?'<span class="feedback_required_mark">*</span>':'';
99     ?>
100         <td <?php echo $highlight;?> valign="top" align="<?php echo $align;?>">
101             <?php echo format_text(stripslashes_safe($item->name) . $requiredmark, true, false, false);?>
102             <img alt="<?php echo $this->type;?>" src="<?php echo $CFG->wwwroot.htmlspecialchars('/mod/feedback/item/captcha/print_captcha.php?id='.$cmid);?>" />
103         </td>
104         <td valign="top" align="<?php echo $align;?>">
105     <?php
106         if($readonly){
107             // print_simple_box_start($align);
108             print_box_start('generalbox boxalign'.$align);
109             echo $value?$value:'&nbsp;';
110             // print_simple_box_end();
111             print_box_end();
112         }else {
113     ?>
114             <input type="text" name="<?php echo $item->typ . '_' . $item->id;?>"
115                                     size="<?php echo $presentation;?>"
116                                     maxlength="<?php echo $presentation;?>"
117                                     value="" />
118     <?php
119         }
120     ?>
121         </td>
122     <?php
123     }
125     function check_value($value, $item) {
126         global $SESSION;
127         //if the item is not required, so the check is true if no value is given
128         if((!isset($value) OR $value == '') AND $item->required != 1) return true;
129         if($SESSION->feedback->item->captcha->checkchar == $value) {
130             $SESSION->feedback->item->captcha->checked = true;
131             return true;
132         }
133         return false;
134     }
136     function create_value($data) {
137         $data = addslashes(clean_text($data));
138         return $data;
139     }
141     function get_presentation($data) {
142         return $data->count_of_nums;
143     }
145     function get_hasvalue() {
146         return 1;
147     }
149 ?>