root/releases/elgg0.8rc2/lib/displaylib.php

Revision 951, 17.7 kB (checked in by sven, 2 years ago)

dotty uses less memory.
html validation fixes.
invite: self-registration doesn't need invite text. gettext fix.
weblog: multiple {{video}} per post fix.

  • Property svn:eol-style set to native
Line 
1 <?php
2
3 // Function to sanitise RTF edit text
4 /* function RTESafe($strText) {
5     //returns safe code for preloading in the RTE
6     $tmpString = trim($strText);
7     
8     //convert all types of single quotes
9     $tmpString = str_replace(chr(145), chr(39), $tmpString);
10     $tmpString = str_replace(chr(146), chr(39), $tmpString);
11     $tmpString = str_replace("'", "&#39;", $tmpString);
12     
13     //convert all types of double quotes
14     $tmpString = str_replace(chr(147), chr(34), $tmpString);
15     $tmpString = str_replace(chr(148), chr(34), $tmpString);
16     
17     //replace carriage returns & line feeds
18     $tmpString = str_replace(chr(10), " ", $tmpString);
19     $tmpString = str_replace(chr(13), " ", $tmpString);
20     
21     return $tmpString;
22 } */
23
24 function display_input_field ($parameter) {
25     // Displays different HTML depending on input field type
26
27     /*
28     
29     $parameter(
30         
31                         0 => input name to display (for forms etc)
32                         1 => data
33                         2 => type of input field
34                         3 => reference name (for tag fields and so on)
35                         4 => ID number (if any)
36                         5 => Owner
37         
38                     )
39     
40     */
41
42     global $CFG;
43     $run_result = '';
44
45     if (isset($parameter) && sizeof($parameter) > 2) {
46             
47         if (!isset($parameter[4])) {
48             $parameter[4] = -1;
49         }
50             
51         if (!isset($parameter[5])) {
52             $parameter[5] = $_SESSION['userid'];
53         }
54             
55         $cleanid = $parameter[0];
56         if (!ereg("^[A-Za-z][A-Za-z0-9_:\\.-]*$", $cleanid)) {
57             if (!ereg("^[A-Za-z]", $cleanid)) {
58                 $cleanid = "id_" . $cleanid;
59             }
60             $cleanid = ereg_replace("[^A-Za-z0-9_:\\.-]", "__", $cleanid);
61         }
62         
63         switch($parameter[2]) {
64                 
65         case "text":
66             $run_result .= "<input type=\"text\" name=\"".$parameter[0]."\" value=\"".htmlspecialchars(stripslashes($parameter[1]), ENT_COMPAT, 'utf-8')."\" style=\"width: 95%\" id=\"".$cleanid."\" />";
67             break;
68         case "password":
69             $run_result .= "<input type=\"password\" name=\"".$parameter[0]."\" value=\"".htmlspecialchars(stripslashes($parameter[1]), ENT_COMPAT, 'utf-8')."\" style=\"width: 95%\" id=\"".$cleanid."\" />";
70             break;
71         case "mediumtext":
72             $run_result .= "<textarea name=\"".$parameter[0]."\" id=\"".$cleanid."\" style=\"width: 95%; height: 100px\">".htmlspecialchars(stripslashes($parameter[1]), ENT_COMPAT, 'utf-8')."</textarea>";
73             break;
74         case "keywords":
75             /*
76                         $keywords = stripslashes($parameter[1]);
77                         preg_match_all("/\[\[([A-Za-z0-9 ]+)\]\]/i",$keywords,$keyword_list);
78                         $keyword_list = $keyword_list[1];
79                         $keywords = "";
80                         if (is_array($keyword_list) && sizeof($keyword_list) > 0) {
81                             sort($keyword_list);
82                             foreach($keyword_list as $key => $list_item) {
83                                 $keywords .= $list_item;
84                                 if ($key < sizeof($keyword_list) - 1) {
85                                     $keywords .= ", ";
86                                 }
87                             }
88                         }
89                         $parameter[1] = $keywords;
90             */
91             if (!isset($data['profile:preload'][$parameter[3]])) {
92                 $keywords = "";
93                 if ($tags = get_records_select('tags',"tagtype = ? and ref = ? and owner = ?",array($parameter[3],$parameter[4],$parameter[5]),'tag ASC')) {
94                     $first = true;
95                     foreach($tags as $key => $tag) {
96                         if (empty($first)) {
97                             $keywords .= ", ";
98                         }
99                         $keywords .= stripslashes($tag->tag);
100                         $first = false;
101                     }
102                 }
103                 $parameter[1] = $keywords;
104             } else {
105                 // $parameter[1] = $data['profile:preload'][$parameter[3]];
106             }
107             // $parameter[1] = var_export($parameter,true);
108             $run_result .= "<textarea name=\"".$parameter[0]."\" id=\"".$cleanid."\" style=\"width: 95%; height: 100px\">".htmlspecialchars(stripslashes($parameter[1]), ENT_COMPAT, 'utf-8')."</textarea>";
109             break;
110         case "longtext":
111             $run_result .= "<textarea name=\"".$parameter[0]."\" id=\"".$cleanid."\" style=\"width: 95%; height: 200px\">".htmlspecialchars(stripslashes($parameter[1]), ENT_COMPAT, 'utf-8')."</textarea>";
112             break;
113         case "richtext":
114             // Rich text editor:
115             $run_result .= <<< END
116                 <script language="JavaScript" type="text/javascript">
117                 <!--
118                 function submitForm() {
119                     //make sure hidden and iframe values are in sync before submitting form
120                     //to sync only 1 rte, use updateRTE(rte)
121                     //to sync all rtes, use updateRTEs
122                     updateRTE('<?php echo $parameter[0]; ?>');
123                     //updateRTEs();
124                     //alert("rte1 = " + document.elggform.<?php echo $parameter[0]; ?>.value);
125                                 
126                     //change the following line to true to submit form
127                     return true;
128                 }
129 END;
130             $content = RTESafe(stripslashes($parameter[1]));
131             $run_result .= <<< END
132                 //Usage: initRTE(imagesPath, includesPath, cssFile)
133                 initRTE("/units/display/rtfedit/images/", "/units/display/rtfedit/", "/units/display/rtfedit/rte.css");
134             </script>
135                   <noscript><p><b>Javascript must be enabled to use this form.</b></p></noscript>
136                   <script language="JavaScript" type="text/javascript">
137                   <!--
138                   writeRichText('<?php echo $parameter[0];?>', '<?php echo $content; ?>', 220, 200, true, false);
139             // -->
140             </script>
141 END;
142             break;
143         case "blank":
144             $run_result .= "<input type=\"hidden\" name=\"".$parameter[0]."\" value=\"blank\" id=\"".$cleanid."\" />";
145             break;
146         case "web":
147         case "email":
148         case "aim":
149         case "msn":
150         case "skype":
151         case "icq":
152             $run_result .= "<input type=\"text\" name=\"".$parameter[0]."\" value=\"".htmlspecialchars(stripslashes($parameter[1]), ENT_COMPAT, 'utf-8')."\" style=\"width: 95%\" id=\"".$cleanid."\" />";
153             break;
154         case "weblogtext":
155             $run_result .= "<textarea name=\"".$parameter[0]."\" id=\"".$parameter[0]."\" style=\"width: 95%; height: 200px\">".htmlspecialchars(stripslashes($parameter[1]), ENT_COMPAT, 'utf-8')."</textarea>";
156             break;
157         default:
158             if (isset($CFG->display_field_module[$parameter[2]])) {
159                 $callback = $CFG->display_field_module[$parameter[2]] . "_display_input_field";
160                 if (is_callable($callback)) {
161                     $run_result .= $callback($parameter);
162                 }
163             }
164             break;
165         }
166             
167     }
168     
169     return $run_result;
170 }
171
172 function log_on_pane () {
173
174
175     // Elgg default globals
176     global $function;
177     global $log;
178     global $actionlog;
179     global $errorlog;
180     global $messages;
181     global $data;
182
183     global $page_owner;
184     
185     global $CFG;
186         
187     // If this is someone else's portfolio, display the user's icon
188     if ($page_owner != -1) {
189         $run_result .= run("profile:user:info");
190     }
191
192     if ((!defined("logged_on") || logged_on == 0) && $page_owner == -1) {
193
194         $body = '<form action="'.url.'login/index.php" method="post">';
195
196         if ($CFG->publicreg == true && ($CFG->maxusers == 0 || (count_users('person') < $CFG->maxusers))) {
197             $reg_link = '<a href="' . url . '_invite/register.php">'. __gettext("Register") .'</a> |';
198         } else {
199             $reg_link = "";
200         }
201
202         $body .= templates_draw(array(
203                                       'template' => -1,
204                                       'context' => 'contentholder',
205                                       'title' => __gettext("Log On"),
206                                       'submenu' => '',
207                                       'body' => '
208             <table>
209                 <tr>
210                     <td align="right"><p>
211                         <label>' . __gettext("Username") . '&nbsp;<input type="text" name="username" id="username" style="size: 200px" /></label><br />
212                         <label>' . __gettext("Password") . '&nbsp;<input type="password" name="password" id="password" style="size: 200px" />
213                         </label></p>
214                     </td>
215                 </tr>
216                 <tr>
217                     <td align="right"><p>
218                         <input type="hidden" name="action" value="log_on" />
219                         <label>' . __gettext("Log on") . ':<input type="submit" name="submit" value="'.__gettext("Go").'" /></label><br /><br />
220                         <label><input type="checkbox" name="remember" checked="checked" />
221                                 ' . __gettext("Remember Login") . '</label><br />
222                         <small>
223                             ' . $reg_link . '
224                             <a href="' . url . '_invite/forgotten_password.php">'. __gettext("Forgotten password") .'</a>
225                         </small></p>
226                     </td>
227                 </tr>
228             
229             </table>
230
231 '
232                                       )
233                                 );
234         $body .= "</form>";
235
236         $run_result .= $body;
237             
238     }
239
240     return $run_result;
241 }
242
243 function display_output_field ($parameter) {
244     // Displays different HTML depending on input field type
245
246     /*
247     
248     $parameter(
249         
250                         0 => input name to display (for forms etc)
251                         1 => data
252                         2 => type of input field
253                         3 => reference name (for tag fields and so on)
254                         4 => ID number (if any)
255                         5 => Owner (if not specified, current $page_owner is assumed)
256         
257                     )
258     
259     */
260     
261     global $db;
262     global $page_owner;
263     global $CFG;
264
265     $run_result = '';
266     
267     if (isset($parameter) && sizeof($parameter) > 1) {
268         
269         if (!isset($parameter[4])) {
270             $parameter[4] = -1;
271         }
272         if (!isset($parameter[5])) {
273             if (isset($page_owner)) {
274                 $parameter[5] = $page_owner;
275             } else {
276                 $parameter[5] = -1;
277             }
278         }
279         
280         switch($parameter[1]) {
281                 
282         case "icq":
283             $run_result = "<img src=\"http://web.icq.com/whitepages/online?icq=".htmlspecialchars(stripslashes($parameter[0]), ENT_COMPAT, 'utf-8')."&amp;img=5\" height=\"18\" width=\"18\" />  <b>".htmlspecialchars(stripslashes($parameter[0]), ENT_COMPAT, 'utf-8')."</b> (<a href=\"http://wwp.icq.com/scripts/search.dll?to=".htmlspecialchars(stripslashes($parameter[0]), ENT_COMPAT, 'utf-8')."\">" . __gettext("Add User") . "</a>, <a href=\"http://wwp.icq.com/scripts/contact.dll?msgto=".htmlspecialchars(stripslashes($parameter[0]), ENT_COMPAT, 'utf-8')."\">". __gettext("Send Message") ."</a>)";
284             break;
285         case "skype":
286             $run_result = "<a href=\"callto://".htmlspecialchars(stripslashes($parameter[0]), ENT_COMPAT, 'utf-8')."\">".htmlspecialchars(stripslashes($parameter[0]), ENT_COMPAT, 'utf-8')."</a> <img src=\"http://goodies.skype.com/graphics/skypeme_btn_small_white.gif\" alt=\"Skype Me!\" border=\"0\" />";
287             break;
288         case "msn":
289             $run_result = "MSN <b>".htmlspecialchars(stripslashes($parameter[0]), ENT_COMPAT, 'utf-8')."</b>";
290             break;
291         case "aim":
292             $run_result = "<img src=\"http://big.oscar.aol.com/".htmlspecialchars(stripslashes($parameter[0]), ENT_COMPAT, 'utf-8')."?on_url=http://www.aol.com/aim/gr/online.gif&amp;off_url=http://www.aol.com/aim/gr/offline.gif\" width=\"14\" height=\"17\" /> <b>".htmlspecialchars(stripslashes($parameter[0]), ENT_COMPAT, 'utf-8')."</b> (<a href=\"aim:addbuddy?screenname=".htmlspecialchars(stripslashes($parameter[0]), ENT_COMPAT, 'utf-8')."\">". __gettext("Add Buddy") ."</a>, <a href=\"aim:goim?screenname=".htmlspecialchars(stripslashes($parameter[0]), ENT_COMPAT, 'utf-8')."&amp;message=Hello\">". __gettext("Send Message") ."</a>)";
293             break;
294         case "text":
295         case "mediumtext":
296         case "longtext":
297             $run_result = nl2br(stripslashes($parameter[0]));
298             break;
299         case "keywords":
300             /*
301             $keywords = stripslashes($parameter[0]);
302             preg_match_all("/\[\[([A-Za-z0-9 ]+)\]\]/i",$keywords,$keyword_list);
303             $keyword_list = $keyword_list[1];
304             $keywords = "";
305             if (is_array($keyword_list) && sizeof($keyword_list) > 0) {
306                 sort($keyword_list);
307                 $where = run("users:access_level_sql_where",$_SESSION['userid']);
308                 foreach($keyword_list as $key => $list_item) {
309                     $number = count_records_select('profile_data',"($where) and name = '".$parameter[2]."' and value like \"%[[".$list_item."]]%\"");
310                     if ($number > 1) {
311                         $keywords .= "<a href=\"/profile/search.php?".$parameter[2]."=".$list_item."\" title=\"$number users\">";
312                     }
313                     $keywords .= $list_item;
314                     if ($number > 1) {
315                         $keywords .= "</a>";
316                     }
317                     if ($key < sizeof($keyword_list) - 1) {
318                         $keywords .= ", ";
319                     }
320                 }
321             }
322             $run_result = $keywords;
323             */
324             $where = run("users:access_level_sql_where",$_SESSION['userid']);
325             $keywords = "";
326             if ($tags = get_records_select('tags',"($where) AND tagtype = " . $db->qstr($parameter[2]) . " AND ref = ".$parameter[4],null,'tag ASC')) {
327                 $first = true;
328                 foreach($tags as $tag) {
329                     if (empty($first)) {
330                         $keywords .= ", ";
331                     }
332                     $numberoftags = count_records('tags','tag',$tag->tag);
333                     if ($numberoftags > 1) {
334                         $keywords .= "<a href=\"".url."search/index.php?".$parameter[2]."=".urlencode(stripslashes($tag->tag))."&amp;ref=".$parameter[4]."&amp;owner=".$parameter[5]."\" >";
335                     }
336                     $keywords .= htmlspecialchars(stripslashes($tag->tag), ENT_COMPAT, 'utf-8');
337                     if ($numberoftags > 1) {
338                         $keywords .= "</a>";
339                     }
340                     $first = false;
341                 }
342             }
343             $run_result = $keywords;
344             break;
345         case "email":
346             $run_result = preg_replace("/[\\d\\w\\.\\-_]+@([\\d\\w\\-_\\.]+\\.)+([\\w]{2,6})/i","<a href=\"mailto:$0\">$0</a>",$parameter[0]);
347             break;
348         case "web":
349             $run_result = $parameter[0];
350             if (substr_count($run_result,"http://") == 0) {
351                 $run_result = "http://" . $run_result;
352             }
353             $run_result = "<a href=\"" . $run_result . "\" target=\"_blank\">" . $run_result . "</a>";
354             break;
355         default:
356             if (isset($CFG->display_field_module[$parameter[1]])) {
357                 $callback = $CFG->display_field_module[$parameter[1]] . "_display_output_field";
358                 if (is_callable($callback)) {
359                     $run_result = $callback($parameter);
360                 }
361             }
362             break;
363         }
364     }
365     return $run_result;
366 }
367
368 function displaymenu_top () {
369
370     global $PAGE;
371
372     if (logged_on == 1) {
373         
374         return templates_draw(array(
375                                     'context' => 'topmenu',
376                                     'menuitems' => menu_join('', $PAGE->menu_top)
377                                     )
378                               );
379         
380     }
381
382     return '';
383 }
384
385
386 function displaymenu () {
387
388     global $PAGE;
389
390     return templates_draw(array(
391                                 'context' => 'menu',
392                                 'menuitems' => menu_join('', $PAGE->menu)
393                                 )
394                           );
395
396 }
397
398
399 function displaymenu_sub () {
400
401     global $PAGE;
402
403     if (logged_on == 1) {
404         
405         return templates_draw(array(
406                                     'context' => 'submenu',
407                                     'menuitems' => menu_join('', $PAGE->menu_sub)
408                                     )
409                               );
410         
411     }
412
413     return '';
414 }
415
416 function displaymenu_user () {
417
418     if (logged_on == 1) {
419         
420         return templates_draw(array(
421                                     'context' => 'menu',
422                                     'menuitems' => menu_join('', $PAGE->menu_user)
423                                     )
424                               );
425         
426     }
427
428     return '';
429 }
430
431 function main () {
432
433
434     // Elgg default globals
435     global $function;
436     global $log;
437     global $actionlog;
438     global $errorlog;
439     global $messages;
440     global $data;
441
442             
443     // Log on pane
444     $function['display:log_on_pane'][] = path . "units/display/function_log_on_pane.php";
445     $function['display:sidebar'][] = path . "units/display/function_log_on_pane.php";
446
447     // Form elements
448     $function['display:input_field'][] = path . "units/display/function_input_field_display.php";
449     $function['display:output_field'][] = path . "units/display/function_output_field_display.php";
450
451     return $run_result;
452 }
453
454
455
456 ?>
Note: See TracBrowser for help on using the browser.