Question : Comment est-ce que je peux modifier le module de commentaire de Drupal de sorte qu'il n'inclue pas un champ de page d'accueil ?

Recherche d'une manière de changer le champ de commentaire dans Drupal de sorte qu'il ne demande pas la page d'accueil d'un utilisateur.  J'ai envisagé de commenter simplement dehors la définition de page d'accueil dans le PHP du module, mais donné le nombre de fonctions auxquelles cette rangée est attachée, j'ai figuré qu'elle causerait un groupe d'erreurs en bas de la ligne.  Quelle est la meilleure manière de faire ceci ? l'objectif ultime du

The est d'éviter le lien hypertexte aux pages off-site, et la forme est actuellement placée pour lier des données saisies dans le champ de page d'accueil.  S'il est plus facile de programmer simplement le module pour ne pas créer un lien hypertexte contre pas l'affichage le champ du tout, expliquer svp comment faire this.

I ont signalé au-dessous du noyau comment.module et des dossiers de comment.js du Drupal 6.6 install.

What est la meilleure manière d'approcher ceci ?

Thanks !
class= > " clair " de
> de " codeSnippet " de class= de
class= " lineNumbers " de
class= de
1 :
2 :
3 :
4 :
5 :
6 :
7 :
8 :
9 :
10 :
11 :
12 :
13 :
14 :
15 :
16 :
17 :
18 :
19 :
20 :
21 :
22 :
23 :
24 :
25 :
26 :
27 :
28 :
29 :
30 :
31 :
32 :
33 :
34 :
35 :
36 :
37 :
38 :
39 :
40 :
41 :
42 :
43 :
44 :
45 :
46 :
47 :
48 :
49 :
50 :
51 :
52 :
53 :
54 :
55 :
56 :
57 :
58 :
59 :
60 :
61 :
62 :
63 :
64 :
65 :
66 :
67 :
68 :
69 :
70 :
71 :
72 :
73 :
74 :
75 :
76 :
77 :
78 :
79 :
80 :
81 :
82 :
83 :
84 :
85 :
86 :
87 :
88 :
89 :
90 :
91 :
92 :
93 :
94 :
95 :
96 :
97 :
98 :
99 :
100 :
101 :
102 :
103 :
104 :
105 :
106 :
107 :
108 :
109 :
110 :
111 :
112 :
113 :
114 :
115 :
116 :
117 :
118 :
119 :
120 :
121 :
122 :
123 :
124 :
125 :
126 :
127 :
128 :
129 :
130 :
131 :
132 :
133 :
134 :
135 :
136 :
137 :
138 :
139 :
140 :
141 :
142 :
143 :
144 :
145 :
146 :
147 :
148 :
149 :
150 :
151 :
152 :
153 :
154 :
155 :
156 :
157 :
158 :
159 :
160 :
161 :
162 :
163 :
164 :
165 :
166 :
167 :
168 :
169 :
170 :
171 :
172 :
173 :
174 :
175 :
176 :
177 :
178 :
179 :
180 :
181 :
182 :
183 :
184 :
185 :
186 :
187 :
188 :
189 :
190 :
191 :
192 :
193 :
194 :
195 :
196 :
197 :
198 :
199 :
200 :
201 :
202 :
203 :
204 :
205 :
206 :
207 :
208 :
209 :
210 :
211 :
212 :
213 :
214 :
215 :
216 :
217 :
218 :
219 :
220 :
221 :
222 :
223 :
224 :
225 :
226 :
227 :
228 :
229 :
230 :
231 :
232 :
233 :
234 :
235 :
236 :
237 :
238 :
239 :
240 :
241 :
242 :
243 :
244 :
245 :
246 :
247 :
248 :
249 :
250 :
251 :
252 :
253 :
254 :
255 :
256 :
257 :
258 :
259 :
260 :
261 :
262 :
263 :
264 :
265 :
266 :
267 :
268 :
269 :
270 :
271 :
272 :
273 :
274 :
275 :
276 :
277 :
278 :
279 :
280 :
281 :
282 :
283 :
284 :
285 :
286 :
287 :
288 :
289 :
290 :
291 :
292 :
293 :
294 :
295 :
296 :
297 :
298 :
299 :
300 :
301 :
302 :
303 :
304 :
305 :
306 :
307 :
308 :
309 :
310 :
311 :
312 :
313 :
314 :
315 :
316 :
317 :
318 :
319 :
320 :
321 :
322 :
323 :
324 :
325 :
326 :
327 :
328 :
329 :
330 :
331 :
332 :
333 :
334 :
335 :
336 :
337 :
338 :
339 :
340 :
341 :
342 :
343 :
344 :
345 :
346 :
347 :
348 :
349 :
350 :
351 :
352 :
353 :
354 :
355 :
356 :
357 :
358 :
359 :
360 :
361 :
362 :
363 :
364 :
365 :
366 :
367 :
368 :
369 :
370 :
371 :
372 :
373 :
374 :
375 :
376 :
377 :
378 :
379 :
380 :
381 :
382 :
383 :
384 :
385 :
386 :
387 :
388 :
389 :
390 :
391 :
392 :
393 :
394 :
395 :
396 :
397 :
398 :
399 :
400 :
401 :
402 :
403 :
404 :
405 :
406 :
407 :
408 :
409 :
410 :
411 :
412 :
413 :
414 :
415 :
416 :
417 :
418 :
419 :
420 :
421 :
422 :
423 :
424 :
425 :
426 :
427 :
428 :
429 :
430 :
431 :
432 :
433 :
434 :
435 :
436 :
437 :
438 :
439 :
440 :
441 :
442 :
443 :
444 :
445 :
446 :
447 :
448 :
449 :
450 :
451 :
452 :
453 :
454 :
455 :
456 :
457 :
458 :
459 :
460 :
461 :
462 :
463 :
464 :
465 :
466 :
467 :
468 :
469 :
470 :
471 :
472 :
473 :
474 :
475 :
476 :
477 :
478 :
479 :
480 :
481 :
482 :
483 :
484 :
485 :
486 :
487 :
488 :
489 :
490 :
491 :
492 :
493 :
494 :
495 :
496 :
497 :
498 :
499 :
500 :
501 :
502 :
503 :
504 :
505 :
506 :
507 :
508 :
509 :
510 :
511 :
512 :
513 :
514 :
515 :
516 :
517 :
518 :
519 :
520 :
521 :
522 :
523 :
524 :
525 :
526 :
527 :
528 :
529 :
530 :
531 :
532 :
533 :
534 :
535 :
536 :
537 :
538 :
539 :
540 :
541 :
542 :
543 :
544 :
545 :
546 :
547 :
548 :
549 :
550 :
551 :
552 :
553 :
554 :
555 :
556 :
557 :
558 :
559 :
560 :
561 :
562 :
563 :
564 :
565 :
566 :
567 :
568 :
569 :
570 :
571 :
572 :
573 :
574 :
575 :
576 :
577 :
578 :
579 :
580 :
581 :
582 :
583 :
584 :
585 :
586 :
587 :
588 :
589 :
590 :
591 :
592 :
593 :
594 :
595 :
596 :
597 :
598 :
599 :
600 :
601 :
602 :
603 :
604 :
605 :
606 :
607 :
608 :
609 :
610 :
611 :
612 :
613 :
614 :
615 :
616 :
617 :
618 :
619 :
620 :
621 :
622 :
623 :
624 :
625 :
626 :
627 :
628 :
629 :
630 :
631 :
632 :
633 :
634 :
635 :
636 :
637 :
638 :
639 :
640 :
641 :
642 :
643 :
644 :
645 :
646 :
647 :
648 :
649 :
650 :
651 :
652 :
653 :
654 :
655 :
656 :
657 :
658 :
659 :
660 :
661 :
662 :
663 :
664 :
665 :
666 :
667 :
668 :
669 :
670 :
671 :
672 :
673 :
674 :
675 :
676 :
677 :
678 :
679 :
680 :
681 :
682 :
683 :
684 :
685 :
686 :
687 :
688 :
689 :
690 :
691 :
692 :
693 :
694 :
695 :
696 :
697 :
698 :
699 :
700 :
701 :
702 :
703 :
704 :
705 :
706 :
707 :
708 :
709 :
710 :
711 :
712 :
713 :
714 :
715 :
716 :
717 :
718 :
719 :
720 :
721 :
722 :
723 :
724 :
725 :
726 :
727 :
728 :
729 :
730 :
731 :
732 :
733 :
734 :
735 :
736 :
737 :
738 :
739 :
740 :
741 :
742 :
743 :
744 :
745 :
746 :
747 :
748 :
749 :
750 :
751 :
752 :
753 :
754 :
755 :
756 :
757 :
758 :
759 :
760 :
761 :
762 :
763 :
764 :
765 :
766 :
767 :
768 :
769 :
770 :
771 :
772 :
773 :
774 :
775 :
776 :
777 :
778 :
779 :
780 :
781 :
782 :
783 :
784 :
785 :
786 :
787 :
788 :
789 :
790 :
791 :
792 :
793 :
794 :
795 :
796 :
797 :
798 :
799 :
800 :
801 :
802 :
803 :
804 :
805 :
806 :
807 :
808 :
809 :
810 :
811 :
812 :
813 :
814 :
815 :
816 :
817 :
818 :
819 :
820 :
821 :
822 :
823 :
824 :
825 :
826 :
827 :
828 :
829 :
830 :
831 :
832 :
833 :
834 :
835 :
836 :
837 :
838 :
839 :
840 :
841 :
842 :
843 :
844 :
845 :
846 :
847 :
848 :
849 :
850 :
851 :
852 :
853 :
854 :
855 :
856 :
857 :
858 :
859 :
860 :
861 :
862 :
863 :
864 :
865 :
866 :
867 :
868 :
869 :
870 :
871 :
872 :
873 :
874 :
875 :
876 :
877 :
878 :
879 :
880 :
881 :
882 :
883 :
884 :
885 :
886 :
887 :
888 :
889 :
890 :
891 :
892 :
893 :
894 :
895 :
896 :
897 :
898 :
899 :
900 :
901 :
902 :
903 :
904 :
905 :
906 :
907 :
908 :
909 :
910 :
911 :
912 :
913 :
914 :
915 :
916 :
917 :
918 :
919 :
920 :
921 :
922 :
923 :
924 :
925 :
926 :
927 :
928 :
929 :
930 :
931 :
932 :
933 :
934 :
935 :
936 :
937 :
938 :
939 :
940 :
941 :
942 :
943 :
944 :
945 :
946 :
947 :
948 :
949 :
950 :
951 :
952 :
953 :
954 :
955 :
956 :
957 :
958 :
959 :
960 :
961 :
962 :
963 :
964 :
965 :
966 :
967 :
968 :
969 :
970 :
971 :
972 :
973 :
974 :
975 :
976 :
977 :
978 :
979 :
980 :
981 :
982 :
983 :
984 :
985 :
986 :
987 :
988 :
989 :
990 :
991 :
992 :
993 :
994 :
995 :
996 :
997 :
998 :
999 :
1000 :
1001 :
1002 :
1003 :
1004 :
1005 :
1006 :
1007 :
1008 :
1009 :
1010 :
1011 :
1012 :
1013 :
1014 :
1015 :
1016 :
1017 :
1018 :
1019 :
1020 :
1021 :
1022 :
1023 :
1024 :
1025 :
1026 :
1027 :
1028 :
1029 :
1030 :
1031 :
1032 :
1033 :
1034 :
1035 :
1036 :
1037 :
1038 :
1039 :
1040 :
1041 :
1042 :
1043 :
1044 :
1045 :
1046 :
1047 :
1048 :
1049 :
1050 :
1051 :
1052 :
1053 :
1054 :
1055 :
1056 :
1057 :
1058 :
1059 :
1060 :
1061 :
1062 :
1063 :
1064 :
1065 :
1066 :
1067 :
1068 :
1069 :
1070 :
1071 :
1072 :
1073 :
1074 :
1075 :
1076 :
1077 :
1078 :
1079 :
1080 :
1081 :
1082 :
1083 :
1084 :
1085 :
1086 :
1087 :
1088 :
1089 :
1090 :
1091 :
1092 :
1093 :
1094 :
1095 :
1096 :
1097 :
1098 :
1099 :
1100 :
1101 :
1102 :
1103 :
1104 :
1105 :
1106 :
1107 :
1108 :
1109 :
1110 :
1111 :
1112 :
1113 :
1114 :
1115 :
1116 :
1117 :
1118 :
1119 :
1120 :
1121 :
1122 :
1123 :
1124 :
1125 :
1126 :
1127 :
1128 :
1129 :
1130 :
1131 :
1132 :
1133 :
1134 :
1135 :
1136 :
1137 :
1138 :
1139 :
1140 :
1141 :
1142 :
1143 :
1144 :
1145 :
1146 :
1147 :
1148 :
1149 :
1150 :
1151 :
1152 :
1153 :
1154 :
1155 :
1156 :
1157 :
1158 :
1159 :
1160 :
1161 :
1162 :
1163 :
1164 :
1165 :
1166 :
1167 :
1168 :
1169 :
1170 :
1171 :
1172 :
1173 :
1174 :
1175 :
1176 :
1177 :
1178 :
1179 :
1180 :
1181 :
1182 :
1183 :
1184 :
1185 :
1186 :
1187 :
1188 :
1189 :
1190 :
1191 :
1192 :
1193 :
1194 :
1195 :
1196 :
1197 :
1198 :
1199 :
1200 :
1201 :
1202 :
1203 :
1204 :
1205 :
1206 :
1207 :
1208 :
1209 :
1210 :
1211 :
1212 :
1213 :
1214 :
1215 :
1216 :
1217 :
1218 :
1219 :
1220 :
1221 :
1222 :
1223 :
1224 :
1225 :
1226 :
1227 :
1228 :
1229 :
1230 :
1231 :
1232 :
1233 :
1234 :
1235 :
1236 :
1237 :
1238 :
1239 :
1240 :
1241 :
1242 :
1243 :
1244 :
1245 :
1246 :
1247 :
1248 :
1249 :
1250 :
1251 :
1252 :
1253 :
1254 :
1255 :
1256 :
1257 :
1258 :
1259 :
1260 :
1261 :
1262 :
1263 :
1264 :
1265 :
1266 :
1267 :
1268 :
1269 :
1270 :
1271 :
1272 :
1273 :
1274 :
1275 :
1276 :
1277 :
1278 :
1279 :
1280 :
1281 :
1282 :
1283 :
1284 :
1285 :
1286 :
1287 :
1288 :
1289 :
1290 :
1291 :
1292 :
1293 :
1294 :
1295 :
1296 :
1297 :
1298 :
1299 :
1300 :
1301 :
1302 :
1303 :
1304 :
1305 :
1306 :
1307 :
1308 :
1309 :
1310 :
1311 :
1312 :
1313 :
1314 :
1315 :
1316 :
1317 :
1318 :
1319 :
1320 :
1321 :
1322 :
1323 :
1324 :
1325 :
1326 :
1327 :
1328 :
1329 :
1330 :
1331 :
1332 :
1333 :
1334 :
1335 :
1336 :
1337 :
1338 :
1339 :
1340 :
1341 :
1342 :
1343 :
1344 :
1345 :
1346 :
1347 :
1348 :
1349 :
1350 :
1351 :
1352 :
1353 :
1354 :
1355 :
1356 :
1357 :
1358 :
1359 :
1360 :
1361 :
1362 :
1363 :
1364 :
1365 :
1366 :
1367 :
1368 :
1369 :
1370 :
1371 :
1372 :
1373 :
1374 :
1375 :
1376 :
1377 :
1378 :
1379 :
1380 :
1381 :
1382 :
1383 :
1384 :
1385 :
1386 :
1387 :
1388 :
1389 :
1390 :
1391 :
1392 :
1393 :
1394 :
1395 :
1396 :
1397 :
1398 :
1399 :
1400 :
1401 :
1402 :
1403 :
1404 :
1405 :
1406 :
1407 :
1408 :
1409 :
1410 :
1411 :
1412 :
1413 :
1414 :
1415 :
1416 :
1417 :
1418 :
1419 :
1420 :
1421 :
1422 :
1423 :
1424 :
1425 :
1426 :
1427 :
1428 :
1429 :
1430 :
1431 :
1432 :
1433 :
1434 :
1435 :
1436 :
1437 :
1438 :
1439 :
1440 :
1441 :
1442 :
1443 :
1444 :
1445 :
1446 :
1447 :
1448 :
1449 :
1450 :
1451 :
1452 :
1453 :
1454 :
1455 :
1456 :
1457 :
1458 :
1459 :
1460 :
1461 :
1462 :
1463 :
1464 :
1465 :
1466 :
1467 :
1468 :
1469 :
1470 :
1471 :
1472 :
1473 :
1474 :
1475 :
1476 :
1477 :
1478 :
1479 :
1480 :
1481 :
1482 :
1483 :
1484 :
1485 :
1486 :
1487 :
1488 :
1489 :
1490 :
1491 :
1492 :
1493 :
1494 :
1495 :
1496 :
1497 :
1498 :
1499 :
1500 :
1501 :
1502 :
1503 :
1504 :
1505 :
1506 :
1507 :
1508 :
1509 :
1510 :
1511 :
1512 :
1513 :
1514 :
1515 :
1516 :
1517 :
1518 :
1519 :
1520 :
1521 :
1522 :
1523 :
1524 :
1525 :
1526 :
1527 :
1528 :
1529 :
1530 :
1531 :
1532 :
1533 :
1534 :
1535 :
1536 :
1537 :
1538 :
1539 :
1540 :
1541 :
1542 :
1543 :
1544 :
1545 :
1546 :
1547 :
1548 :
1549 :
1550 :
1551 :
1552 :
1553 :
1554 :
1555 :
1556 :
1557 :
1558 :
1559 :
1560 :
1561 :
1562 :
1563 :
1564 :
1565 :
1566 :
1567 :
1568 :
1569 :
1570 :
1571 :
1572 :
1573 :
1574 :
1575 :
1576 :
1577 :
1578 :
1579 :
1580 :
1581 :
1582 :
1583 :
1584 :
1585 :
1586 :
1587 :
1588 :
1589 :
1590 :
1591 :
1592 :
1593 :
1594 :
1595 :
1596 :
1597 :
1598 :
1599 :
1600 :
1601 :
1602 :
1603 :
1604 :
1605 :
1606 :
1607 :
1608 :
1609 :
1610 :
1611 :
1612 :
1613 :
1614 :
1615 :
1616 :
1617 :
1618 :
1619 :
1620 :
1621 :
1622 :
1623 :
1624 :
1625 :
1626 :
1627 :
1628 :
1629 :
1630 :
1631 :
1632 :
1633 :
1634 :
1635 :
1636 :
1637 :
1638 :
1639 :
1640 :
1641 :
1642 :
1643 :
1644 :
1645 :
1646 :
1647 :
1648 :
1649 :
1650 :
1651 :
1652 :
1653 :
1654 :
1655 :
1656 :
1657 :
1658 :
1659 :
1660 :
1661 :
1662 :
1663 :
1664 :
1665 :
1666 :
1667 :
1668 :
1669 :
1670 :
1671 :
1672 :
1673 :
1674 :
1675 :
1676 :
1677 :
1678 :
1679 :
1680 :
1681 :
1682 :
1683 :
1684 :
1685 :
1686 :
1687 :
1688 :
1689 :
1690 :
1691 :
1692 :
1693 :
1694 :
1695 :
1696 :
1697 :
1698 :
1699 :
1700 :
1701 :
1702 :
1703 :
1704 :
1705 :
1706 :
1707 :
1708 :
1709 :
1710 :
1711 :
1712 :
1713 :
1714 :
1715 :
1716 :
1717 :
1718 :
1719 :
1720 :
1721 :
1722 :
1723 :
1724 :
1725 :
1726 :
1727 :
1728 :
1729 :
1730 :
1731 :
1732 :
1733 :
1734 :
1735 :
1736 :
1737 :
1738 :
1739 :
1740 :
1741 :
1742 :
1743 :
1744 :
1745 :
1746 :
1747 :
1748 :
1749 :
1750 :
1751 :
1752 :
1753 :
1754 :
1755 :
1756 :
1757 :
1758 :
1759 :
1760 :
1761 :
1762 :
1763 :
1764 :
1765 :
1766 :
1767 :
1768 :
1769 :
1770 :
1771 :
1772 :
1773 :
1774 :
1775 :
1776 :
1777 :
1778 :
1779 :
1780 :
1781 :
1782 :
1783 :
1784 :
1785 :
1786 :
1787 :
1788 :
1789 :
1790 :
1791 :
1792 :
1793 :
1794 :
1795 :
1796 :
1797 :
1798 :
1799 :
1800 :
1801 :
1802 :
1803 :
1804 :
1805 :
1806 :
1807 :
1808 :
1809 :
1810 :
1811 :
1812 :
1813 :
1814 :
1815 :
1816 :
1817 :
1818 :
1819 :
1820 :
1821 :
1822 :
1823 :
1824 :
1825 :
1826 :
1827 :
1828 :
1829 :
1830 :
1831 :
1832 :
1833 :
1834 :
1835 :
1836 :
1837 :
1838 :
1839 :
1840 :
1841 :
1842 :
1843 :
1844 :
1845 :
1846 :
1847 :
1848 :
1849 :
1850 :
1851 :
1852 :
1853 :
1854 :
1855 :
1856 :
1857 :
1858 :
1859 :
1860 :
1861 :
1862 :
1863 :
1864 :
1865 :
1866 :
1867 :
1868 :
1869 :
1870 :
1871 :
1872 :
1873 :
1874 :
1875 :
1876 :
1877 :
1878 :
1879 :
1880 :
1881 :
1882 :
1883 :
1884 :
1885 :
1886 :
1887 :
1888 :
1889 :
1890 :
1891 :
1892 :
1893 :
1894 :
1895 :
1896 :
1897 :
1898 :
1899 :
1900 :
1901 :
1902 :
1903 :
1904 :
1905 :
1906 :
1907 :
1908 :
1909 :
1910 :
1911 :
1912 :
1913 :
1914 :
1915 :
1916 :
1917 :
1918 :
1919 :
1920 :
1921 :
1922 :
1923 :
1924 :
1925 :
1926 :
1927 :
1928 :
1929 :
1930 :
1931 :
1932 :
1933 :
1934 :
1935 :
1936 :
1937 :
1938 :
1939 :
1940 :
1941 :
1942 :
1943 :
1944 :
1945 :
1946 :
1947 :
1948 :
1949 :
1950 :
1951 :
1952 :
1953 :
1954 :
1955 :
1956 :
1957 :
1958 :
1959 :
1960 :
1961 :
1962 :
1963 :
1964 :
1965 :
1966 :
1967 :
1968 :
1969 :
1970 :
1971 :
1972 :
1973 :
1974 :
1975 :
1976 :
1977 :
1978 :
1979 :
1980 :
1981 :
1982 :
1983 :
1984 :
1985 :
1986 :
1987 :
1988 :
1989 :
1990 :
1991 :
1992 :
1993 :
1994 :
1995 :
1996 :
1997 :
1998 :
1999 :
2000 :
2001 :
2002 :
2003 :
2004 :
2005 :
2006 :
2007 :
2008 :
2009 :
2010 :
2011 :
2012 :
2013 :
2014 :
2015 :
2016 :
2017 :
2018 :
2019 :
2020 :
2021 :
2022 :
2023 :
2024 :
2025 :
2026 :
2027 :
2028 :
2029 :
2030 :
2031 :
2032 :
2033 :
2034 :
2035 :
2036 :
2037 :
2038 :
2039 :
2040 :
2041 :
2042 :
2043 :
2044 :
2045 :
2046 :
2047 :
2048 :
2049 :
2050 :
2051 :
2052 :
2053 :
2054 :
2055 :
2056 :
2057 :
2058 :
2059 :
2060 :
2061 :
2062 :
2063 :
2064 :
2065 :
2066 :
2067 :
2068 :
2069 :
2070 :
2071 :
2072 :
2073 :
2074 :
2075 :
2076 :
2077 :
2078 :
2079 :
2080 :
2081 :
2082 :
2083 :
2084 :
2085 :
2086 :
2087 :
2088 :
2089 :
2090 :
2091 :
2092 :
2093 :
2094 :
2095 :
2096 :
2097 :
2098 :
2099 :
2100 :
2101 :
2102 :
2103 :
2104 :
2105 :
>< " de l'id= " codeSnippet651343 de
 ». t (« le module de commentaire permet à des visiteurs de présenter ses observations sur vos poteaux, créant les conseils ad hoc de discussion. N'importe quel href= le " @content-type " type >content de  de Default réglé à Read/Write pour permettre à des commentaires, ou Disabled, d'empêcher des commentaires. Des arrangements d'affichage de commentaire et d'autres commandes peuvent également être adaptés aux besoins du client pour chaque type content (quelques arrangements d'affichage sont personnalisables par différents utilisateurs).  », rangée (« @content-type » URL de => (« admin/contenu/types "))). « 

 » ; $output. = « 

 ». t (des « permissions de commentaire sont assignées aux rôles d'utilisateur, et sont employées pour déterminer si des utilisateurs anonymes (ou d'autres rôles) sont permis de présenter leurs observations sur des poteaux. Si on permet aux des utilisateurs anonymes de commenter, leur information de contact individuelle peut être maintenue en biscuits stockés sur leur ordinateur local pour l'usage dans des soumissions postérieures de commentaire. Quand un commentaire n'a aucune réponse, il peut (sur option) être édité par son auteur. Le module de commentaire emploie les mêmes formats d'entrée et des étiquettes de HTML disponibles en créant d'autres formes de content."). « 

 » ; $output. = « 

 ». t (« pour plus d'information, voir l'entrée en ligne de manuel pour >Comment module de @comment le " de href= de 'http://drupal.org/handbook/modules/comment/')). « 

 » ; $output de retour ; cas « admin/contenu/commentaire » : renvoyer le « 

 ». t (« est ci-dessous une liste des derniers commentaires signalés à votre emplacement. Cliquer dessus a sujet au au voir le commentaire, le nom de l'auteur pour éditer l'information d'utilisateur de l'auteur, « éditer » pour modifier le texte, et la « suppression » pour enlever leur submission."). « 

 » ; cas « admin/contenu/commentaire/approbation » : renvoyer le « 

 ». t (« est ci-dessous une liste des commentaires signalée à votre emplacement qui ont besoin d'approbation. Pour approuver un commentaire, cliquer dessus « éditent » et changent alors son « statut de modération » en approuvé. Cliquer dessus a sujet au au voir le commentaire, le nom de l'auteur pour éditer l'information d'utilisateur de l'auteur, « éditer » pour modifier le texte, et la « suppression » pour enlever leur submission."). « 

 » ; } } /** * Exécution de hook_theme (). * comment_theme de fonction () { rangée de retour ( rangée de => de « comment_block » ( rangée de => de « arguments » (), ), rangée de => de « comment_admin_overview » ( rangée de => de « arguments » (NULLE de => de « forme »), ), rangée de => de « comment_preview » ( rangée de => de « arguments » (NULLE de => de « commentaire », NULLE de => de « noeud », rangée de => de « liens » (), => « évident » 1), ), rangée de => de « comment_view » ( rangée de => de « arguments » (NULLE de => de « commentaire », NULLE de => de « noeud », rangée de => de « liens » (), => « évident » 1), ), rangée de => de « comment_controls » ( rangée de => de « arguments » (NULLE de => de « forme »), ), rangée de => de « commentaire » ( => « commentaire » de « calibre », rangée de => de « arguments » (NULLE de => de « commentaire », NULLE de => de « noeud », rangée de => de « liens » ()), ), « comment_folded » la rangée de => (  » => « de « calibre commenter-plié », rangée de => de « arguments » (NULLE de => de « commentaire »), ), « comment_flat_collapsed » la rangée de => ( rangée de => de « arguments » (NULLE de => de NULLE, de « noeud » de => de « commentaire »), ), « comment_flat_expanded » la rangée de => ( rangée de => de « arguments » (NULLE de => de NULLE, de « noeud » de => de « commentaire »), ), « comment_thread_collapsed » la rangée de => ( rangée de => de « arguments » (NULLE de => de NULLE, de « noeud » de => de « commentaire »), ), « comment_thread_expanded » la rangée de => ( rangée de => de « arguments » (NULLE de => de NULLE, de « noeud » de => de « commentaire »), ), « comment_post_forbidden » la rangée de => ( rangée de => de « arguments » (NULLE de => de « nid »), ), rangée de => de « comment_wrapper » ( => « commenter-emballage » de « calibre », rangée de => de « arguments » (NULLE de => de NULLE, de « noeud » de => de « contenu »), ), « comment_submitted » la rangée de => ( rangée de => de « arguments » (NULLE de => de « commentaire »), ), ) ; } /** * Exécution de hook_menu (). * comment_menu de fonction () { $items [« admin/contenu/commentaire »] = rangée (  » le => « de « titre commente »,  » liste de => la « de « description et éditent les commentaires d'emplacement et la file d'attente de modération de commentaire.  », => « comment_admin » « paginer rappel de service », « accéder aux arguments » rangée de => (« administrer les commentaires "), « classer » le => « comment.admin.inc », ) ; Étiquettes de // : $items [« admin/contenu/commentaire/nouveau »] = rangée ( => « commentaires édités » de « titre », « dactylographier » le => MENU_DEFAULT_LOCAL_TASK, « peser » le => -10, ) ; $items [« admin/contenu/commentaire/approbation »] = rangée ( « intituler » le => « file d'attente d'approbation », « paginer les arguments » rangée de => (la « approbation "), « accéder aux arguments » rangée de => (« administrer les commentaires "), « dactylographier » le => MENU_LOCAL_TASK, « classer » le => « comment.admin.inc », ) ; $items [« commentaire/suppression »] = rangée ( => « commentaire de « titre » de suppression », => « comment_delete » « paginer rappel de service », « accéder aux arguments » rangée de => (« administrer les commentaires "), « dactylographier » le => MENU_CALLBACK, « classer » le => « comment.admin.inc », ) ; $items [le « commentaire/éditent »] = rangée (  » le => « de « titre éditent le commentaire », => « comment_edit » « paginer rappel de service », « accéder aux arguments » rangée de => (les « commentaires de poteau "), « dactylographier » le => MENU_CALLBACK, « classer » le => « comment.pages.inc », ) ; $items [« commentaire/reply/%node »] = rangée (  » => « de « titre réponse au commentaire »,  » => « « paginer rappel de service comment_reply », la rangée de => « paginer arguments » (2), => « node_access » « accéder à rappel de service », rangée de => « accéder à arguments » (« vue », 2), « dactylographier » le => MENU_CALLBACK, « classer » le => « comment.pages.inc », ) ; $items de retour ; } /** * Exécution de hook_node_type (). * comment_node_type de fonction ($op, $info) { $settings = rangée ( « commentaire », « comment_default_mode », « comment_default_order », « comment_default_per_page », « comment_controls », « comment_anonymous », « comment_subject_field », « comment_preview », « comment_form_location », ) ; commuter ($op) { enfermer la « suppression » : foreach ($settings comme $setting) { variable_del ($setting. « _ ». $info->type) ; } coupure ; } } /** * Exécution de hook_perm (). * comment_perm de fonction () { rangée de retour (le « accès commente », « poteau commente », « administrent des commentaires », des « commentaires de poteau sans approbation ") ; } /** * Exécution de hook_block (). * * Produit d'un bloc avec les commentaires les plus récents. * comment_block de fonction ($op = « liste », $delta = 0) { si (liste de == de $op « ") { $blocks [0] [« information »] = t (« commentaires récents ") ; $blocks de retour ; } autrement si user_access de && de « (vue » de == de $op (« commentaires d'accès ")) { $block [« sujet »] = t (« commentaires récents ") ; $block [« contenu »] = thème (« comment_block ") ; $block de retour ; } } /** * Trouver un certain nombre de commentaires récents. Ceci est fait dans deux étapes. * 1. trouvent les noeuds de n (spécifique par $number) qui ont le plus récent * commentaires. Ceci est fait par le node_comment_statistics de question qui a * un index sur le last_comment_timestamp, et est ainsi une question rapide. * 2. chargeant l'information de la table de commentaires basée sur les nids ont trouvé * dans l'étape 1. * * @param $number * (facultatif) le nombre maximum des commentaires à trouver. * @return * Un choix de commentaire objecte chacun qui contient un nid, * sujet, cid, et horodateur, ou une rangée vide s'il n'y a aucun récent * commentaires évidents à l'utilisateur courant. * fonction comment_get_recent ($number = 10) { // choisissent les noeuds de $number (évidents à l'utilisateur courant) avec plus commentaires récents de //. C'est allumé dû efficace à l'index last_comment_timestamp de //. $result = db_query_range (db_rewrite_sql (« nc.nid CHOISI {node_comment_statistics} d'OR OÙ ment_count de nc.com > 0 ORDRES PAR nc.last_comment_timestamp DESC », de « OR "), 0, $number) ; $nids = rangée () ; tandis que ($row = db_fetch_object ($result)) { $nids [] = $row->nid ; } $comments = rangée () ; si (! vider ($nids)) { // de parmi les commentaires sur les noeuds choisis dans la première question, // trouvent les commentaires les plus récents de $number. $result = db_query_range (« c.nid CHOISIS, c.subject, c.cid, c.timestamp {des commentaires} de c INTÉRIEUR JOIGNENT {noeud} n SUR n.nid = c.nid OÙ c.nid DEDANS (". imploser (« , », $nids) .") ET n.status = 1 ET ORDRE de c.status = de %d PAR c.cid DESC », COMMENT_PUBLISHED, 0, $number) ; tandis que ($comment = db_fetch_object ($result)) { $comments [] = $comment ; } } $comments de retour ; } /** * Calculer le numéro de page pour le premier nouveau commentaire. * * @param $num_comments * Nombre de commentaires. * @param $new_replies * Nombre de nouvelles réponses. * @param $node * Le premier nouveau noeud de commentaire. * @return * « page=X » si le numéro de page est plus grand que zéro ; corde vide autrement. * comment_new_page_count de fonction ($num_comments, $new_replies, $node) { $comments_per_page = _comment_get_display_setting (« comments_per_page », $node) ; $mode = _comment_get_display_setting (« mode », $node) ; $order = _comment_get_display_setting (« sorte », $node) ; $pagenum = NULLE ; $flat = in_array ($mode, rangée (COMMENT_MODE_FLAT_COLLAPSED, COMMENT_MODE_FLAT_EXPANDED)); si (<= $comments_per_page de $num_comments || (== COMMENT_ORDER_NEWEST_FIRST de && $order de $flat)) { // seulement une page de commentaires ou de premier de forum et plus nouveau plat. Le nouveau commentaire de // d'abord sera toujours à la première page. $pageno = 0 ; } autrement { si ($flat) { Commentaires d'appartement de // et le premier le plus ancien. $count = $num_comments - $new_replies ; } autrement { // a fileté des commentaires. Voir la documentation pour le comment_render (). si (== COMMENT_ORDER_NEWEST_FIRST de $order) { Le plus nouveau premier de // : trouver le dernier fil avec le nouveau commentaire $result = db_query (« (fil CHOISI DE {commentaires} OÙ nid = %d ET statut = 0 ORDRES PAR ORDRE de LIMITE de timestamp DESC %d) PAR LIMITE 1 », $node->nid, $new_replies de fil DESC) ; $thread = db_result ($result) ; $result_count = db_query (« COMPTE CHOISI (*) DE {commentaires} OÙ nid = %d ET statut = 0 ET fil > «  ». $thread. «  » « , $node->nid) ; } autrement { Le premier le plus ancien de // : trouver le premier fil avec le nouveau commentaire LIMITE 1 », $node->nid, $new_replies de $result = de db_query (« (fil CHOISI DE {commentaires} OÙ nid = %d ET statut = 0 ORDRES PAR ORDRE de LIMITE de timestamp DESC %d) PAR SUBSTRING (fil, 1, (LONGUEUR (fil) - 1))) ; $thread = substr (db_result ($result), 0, -1) ; $result_count = db_query (« COMPTE CHOISI (*) DE {commentaires} OÙ nid = %d ET statut = 0 ET SOUS-CHAÎNE (fil, 1, (LONGUEUR (fil) - 1)) < «  ». $thread. «  » « , $node->nid) ; } $count = db_result ($result_count) ; } $pageno = $count/$comments_per_page ; } si (>= de $pageno 1) { $pagenum = « page= ». intval ($pageno) ; } $pagenum de retour ; } /** * Renvoie une liste composée de commentaires récents à montrer dans le bloc de commentaire. * * @return * Le HTML de liste de commentaire. * @ingroup themeable * theme_comment_block de fonction () { $items = rangée () ; foreach (comment_get_recent () comme $comment) { $items [] = l ($comment->subject, « noeud ». $comment->nid, rangée (=> « commentaire » de « fragment ». $comment->cid)). « 
 ». t (il y a le « @time », rangée (=> de « @time » format_interval (temps () - $comment->timestamp))); } si ($items) { thème de retour (« item_list », $items) ; } } /** * Exécution de hook_link (). * comment_link de fonction ($type, $node = NULLE, $teaser = FAUX) { $links = rangée () ; si && $node->comment de « (noeud » de == de $type) { si ($teaser) { Page principale de // : montrer le nombre de commentaires qui ont été signalés. si (user_access (« commentaires d'accès ")) { $all = comment_num_all ($node->nid) ; si ($all) { $links [« comment_comments »] = rangée ( « titre » => format_plural ($all, « 1 commentaire », « commentaires de @count "), => « node/$node->nid » de « href », « attribue » la rangée de => (« titre » => t (le « saut au premier commentaire de ce posting.")),  » le => « de « fragment commente » ) ; $new = comment_num_new ($node->nid) ; si ($new) { $links [« comment_new_comments »] = rangée ( « titre » => format_plural ($new, « 1 nouveau commentaire », « commentaires de @count nouveaux "), => « node/$node->nid » de « href », comment_new_page_count de => de « question » ($all, $new, $node), « attribue » la rangée de => (« titre » => t (le « saut au premier nouveau commentaire de ce posting.")),  » => « de « fragment nouveau » ) ; } } autrement { si (== COMMENT_NODE_READ_WRITE de $node->comment) { si (user_access (« commentaires de poteau ")) { $links [« comment_add »] = rangée ( « titre » => t (« ajouter le nouveau commentaire "), => « commentaire/reply/$node->nid » de « href », « attribue » la rangée de => (« titre » => t (« ajouter un nouveau commentaire à ce page.")), « réduire » le => en fragments « commenter-forme » ) ; } autrement { $links [« comment_forbidden »] [« titre »] = thème (« comment_post_forbidden », $node) ; } } } } } autrement { Page de noeud de // : ajouter un lien « de commentaire de poteau » si on permet l'utilisateur à le poteau de // commente, si ce noeud n'est pas inaltérable, et si la carte réponse n'est pas déjà montrée si (== COMMENT_NODE_READ_WRITE de $node->comment) { si (user_access (« commentaires de poteau ")) { si (variable_get (« comment_form_location_ ». $NODE->TYPE, == COMMENT_FORM_SEPARATE_PAGE DE COMMENT_FORM_SEPARATE_PAGE)) { $links [« comment_add »] = rangée ( « titre » => t (« ajouter le nouveau commentaire "), => « commentaire/reply/$node->nid » de « href », « attribue » la rangée de => (« titre » => t (« partager vos pensées et avis liés à ce posting.")), « réduire » le => en fragments « commenter-forme » ) ; } } autrement { $links [« comment_forbidden »] [« titre »] = thème (« comment_post_forbidden », $node) ; } } } } si (commentaire de == de $type « ") { $links = comment_links ($node, $teaser) ; } si (isset ($links [« comment_forbidden »])) { $links [« comment_forbidden »] [« HTML »] = RECTIFIENT ; } renvoyer $links ; } /** * Exécution de hook_form_alter (). * comment_form_alter de fonction (&$form, $form_state, $form_id) { s'isset de && de « (node_type_form » de == de $form_id ($form [« identité »] [« type »])) { $form [« commentaire »] = rangée ( => « fieldset » de « #type », « #title » => t (« arrangements de commentaire "), => « #collapsible » VRAI, => « #collapsed » VRAI, ) ; $form [« commentaire »] [« commentaire »] = rangée (  » le => « de « #type transmet par radio », « #title » => t (« arrangement de commentaire de défaut "), variable_get de => de « #default_value » (« comment_ ». >type de $form [« #node_type »] -, COMMENT_NODE_READ_WRITE), de => de « #options » (t (« a désactivé "), t rangée (« lu seulement "), t (« lecture/écriture ")), « #description » => t (les « utilisateurs avec la permission du administer comments pourront dépasser ce setting."), ) ; $form [« commentaire »] [« comment_default_mode »] = rangée (  » le => « de « #type transmet par radio », « #title » => t (« mode d'affichage de défaut "), variable_get de => de « #default_value » (« comment_default_mode_ ». >type de $form [« #node_type »] -, COMMENT_MODE_THREADED_EXPANDED), _comment_get_modes de => de « #options » (), « #description » => t (« la vue de défaut pour des commentaires. Les vues augmentées montrent le corps du commentaire. Les vues filetées gardent des réponses together."), ) ; $form [« commentaire »] [« comment_default_order »] = rangée (  » le => « de « #type transmet par radio », « #title » => t (« ordre d'affichage de défaut "), variable_get de => de « #default_value » (« comment_default_order_ ». >type de $form [« #node_type »] -, COMMENT_ORDER_NEWEST_FIRST), _comment_get_orders de => de « #options » (), « #description » => t (« le défaut assortissant pour de nouveaux utilisateurs et utilisateurs anonymes tout en regardant commente. Ces utilisateurs peuvent changer leur vue using le panneau de commande de commentaire. Pour les utilisateurs enregistrés, on se rappelle ce changement en tant qu'utilisateur persistant preference."), ) ; $form [« commentaire »] [« comment_default_per_page »] = rangée (  » le => « de « #type choisissent », « #title » => t (le « défaut commente par la page "), variable_get de => de « #default_value » (« comment_default_per_page_ ». >type de $form [« #node_type »] -, 50), _comment_per_page de => de « #options » (), « #description » => t (« nombre de défaut des commentaires pour chaque page : plus de commentaires sont distribués en plusieurs pages."), ) ; $form [« commentaire »] [« comment_controls »] = rangée (  » le => « de « #type transmet par radio », « #title » => t (« commandes de commentaire "), variable_get de => de « #default_value » (« comment_controls_ ». >type de $form [« #node_type »] -, COMMENT_CONTROLS_HIDDEN), rangée de => de « #options » ( t (« affichage au-dessus des commentaires "), t (« affichage au-dessous des commentaires "), t (« affichage au-dessus et au-dessous des commentaires "), t (« ne font pas l'affichage ")), « #description » => t (« position de la boîte de commandes de commentaire. Les commandes de commentaire ont laissé l'utilisateur changer le mode d'affichage de défaut et montrer l'ordre de comments."), ) ; $form [« commentaire »] [« comment_anonymous »] = rangée (  » le => « de « #type transmet par radio », « #title » => t (« commentaire anonyme "), variable_get de => de « #default_value » (« comment_anonymous_ ». >type de $form [« #node_type »] -, COMMENT_ANONYMOUS_MAYNOT_CONTACT), rangée de => de « #options » ( => t de COMMENT_ANONYMOUS_MAYNOT_CONTACT (« les affiches anonymes peuvent ne pas écrire leur information de contact "), => t de COMMENT_ANONYMOUS_MAY_CONTACT (« les affiches anonymes peuvent partir de leur information de contact "), => t de COMMENT_ANONYMOUS_MUST_CONTACT (« les affiches anonymes doivent partir de leur information de contact ")), « #description » => t (« cette option est permise quand les utilisateurs anonymes ont la permission de signaler des commentaires sur >permissions page
de @url les " de href= de (« admin/utilisateur/permissions », rangée (« le » => « de fragment module-commentent ")))), ) ; si (! user_access (le « poteau commente », le drupal_anonymous_user ())) { $form [« commentaire »] [« comment_anonymous »] [« #disabled »] = RECTIFIER ; } $form [« commentaire »] [« comment_subject_field »] = rangée (  » le => « de « #type transmet par radio », « #title » => t (« domaine de commentaire "), variable_get de => de « #default_value » (« comment_subject_field_ ». >type de $form [« #node_type »] -, 1), de => de « #options » (t rangée (« a désactivé "), t (« permis ")), « #description » => t (« les utilisateurs peuvent-ils fournir un sujet unique pour leurs commentaires ? "), ) ; $form [« commentaire »] [« comment_preview »] = rangée (  » le => « de « #type transmet par radio », « #title » => t (« commentaire de prévision "), variable_get de => de « #default_value » (« comment_preview_ ». >type de $form [« #node_type »] -, COMMENT_PREVIEW_REQUIRED), de => de « #options » (t rangée (« facultatif "), t (« a exigé ")), => t (« forces de « #description » un utilisateur pour regarder leur commentaire en cliquant sur « une prévision » bouton avant qu'ils puissent réellement ajouter le commentaire »), ) ; $form [« commentaire »] [« comment_form_location »] = rangée (  » le => « de « #type transmet par radio », « #title » => t (« endroit de forme de soumission de commentaire "), variable_get de => de « #default_value » (« comment_form_location_ ». >type de $form [« #node_type »] -, COMMENT_FORM_SEPARATE_PAGE), de => de « #options » (t rangée (« affichage à la page séparée "), t (« affichage au-dessous de poteau ou de commentaires ")), ) ; } isset de && d'elseif (isset ($form [« type »]) ($form [« #node »])) { si ($form [« type »] [« #value »]. == $form_id de « _node_form ») { $node = $form [« #node »] ; $form [« comment_settings »] = rangée ( => « fieldset » de « #type », « #access » user_access de => (« administrer les commentaires "), « #title » => t (« arrangements de commentaire "), => « #collapsible » VRAI, => « #collapsed » VRAI, => 30 de « #weight », ) ; $form [« comment_settings »] [« commentaire »] = rangée (  » le => « de « #type transmet par radio », « #parents » rangée de => (« commentaire "), => $node->comment de « #default_value », de => de « #options » (t (« a désactivé "), t rangée (« lu seulement "), t (« lecture/écriture ")), ) ; } } } /** * Exécution de hook_nodeapi (). * comment_nodeapi de fonction (&$node, $op, $arg = 0) { commuter ($op) { enfermer la « charge » : renvoyer db_fetch_array (db_query (« last_comment_timestamp CHOISI, last_comment_name, comment_count DE {node_comment_statistics} OÙ nid = %d », $node->nid)); coupure ; le cas « préparent » : si (! isset ($node->comment)) { $node->comment = variable_get (« comment_$node->type », COMMENT_NODE_READ_WRITE) ; } coupure ; cas « insertion » : db_query (la « INSERTION DANS {node_comment_statistics} (nid, last_comment_timestamp, last_comment_name, last_comment_uid, comment_count) ÉVALUE (%d, %d, NULLE, %d, 0) », $node->nid, $node->changed, $node->uid) ; coupure ; cas « suppression » : db_query (« SUPPRESSION DE {commentaires} OÙ nid = %d », $node->nid) ; db_query (« SUPPRESSION DE {node_comment_statistics} OÙ nid = %d », $node->nid) ; coupure ; cas « index de mise à jour » : $text = '' ; $comments = db_query (« sujet CHOISI, commentaire, format DE {commentaires} OÙ nid = %d ET statut = %d », $node->nid, COMMENT_PUBLISHED) ; tandis que ($comment = db_fetch_object ($comments)) { $text. = « 

 ». check_plain ($comment->subject). « 

 ». check_markup ($comment->comment, $comment->format, FAUX) ; } $text de retour ; cas « résultat de recherche » : $comments = db_result (db_query (« comment_count CHOISI DE {node_comment_statistics} OÙ nid = %d », $node->nid)); format_plural de retour ($comments, « 1 commentaire », « commentaires de @count ") ; cas « article de rss » : si ($node->comment ! = COMMENT_NODE_DISABLED) { rangée de retour (rangée (URL de => de « valeur » de => « de « clef » commente », (« noeud ». $node->nid, rangée ( » le => « de « fragment commente », => « absolu » VRAI)))); } autrement { rangée de retour () ; } } } /** * Exécution de hook_user (). * comment_user de fonction ($type, $edit, &$user, $category = NULLE) { si (suppression de == de $type « ") { db_query (la « MISE À JOUR {commentaires} A PLACÉ l'uid = 0 OÙ uid = %d », $user->uid) ; db_query (la « MISE À JOUR {node_comment_statistics} A PLACÉ le last_comment_uid = 0 OÙ last_comment_uid = %d », $user->uid) ; } } /** * C'est *not* par exécution de hook_access (). Cette fonction s'appelle * pour déterminer si l'utilisateur courant a accès à un commentaire particulier. * * Les utilisateurs authentifiés peuvent éditer leurs commentaires car longtemps ils n'ont pas été * répondu à. Ceci empêche des personnes de changer ou de mettre à jour leur * rapports basés sur les réponses à leurs poteaux. * * @param $op * L'opération qui doit être exécutée sur le commentaire. Seulement « éditer » est reconnu maintenant. * @param $comment * L'objet de commentaire. * @return * RECTIFIER si l'utilisateur courant a des acces au commentaire, FAUX autrement. * comment_access de fonction ($op, $comment) { $user global ; si (le == de $op « éditent ") { retourner (== 0 de comment_num_replies de && de == $comment->uid de && $user->uid de $user->uid ($comment->cid)) || user_access (« administrer les commentaires ") ; } } /** * Une fonction simple d'aide. * * @return * Les 0th et ęrs composants de chemin se sont joints par une barre oblique. * comment_node_url de fonction () { arg de retour (0). « / ». arg (1) ; } /** * Accepte une soumission de contenu nouveau ou changé de commentaire. * * @param $edit * Une rangée de commentaire. * * @return * Si le commentaire est avec succès sauvé l'identification de commentaire est retournée. Si le commentaire * n'est pas sauvé, FAUX est retourné. * comment_save de fonction ($edit) { $user global ; si && (d'user_access (« commentaires de poteau ") (user_access (« administrer les commentaires ") || == COMMENT_NODE_READ_WRITE du node_comment_mode ($edit [« nid »]))) { si (! form_get_errors ()) { rangée de $edit += ( « courrier » => '', « page d'accueil » => '', « nom » => '', « statut » user_access de => (le « poteau commente sans approbation ") ? COMMENT_PUBLISHED : COMMENT_NOT_PUBLISHED, ) ; si ($edit [« cid »]) { Mise à jour de // le commentaire dans la base de données. db_query (la « MISE À JOUR {commentaires} A PLACÉ le statut = le %d, horodateur = %d, sujet = « %s », commentaire = « %s », format = %d, uid = %d, nom = « %s », courrier = « %s », page d'accueil = « %s » OÙ cid = %d », $edit [« statut »], $edit [« horodateur »], $edit [« sujet »], $edit [« commentaire »], $edit [« format »], $edit [« uid »], $edit [« nom »], $edit [« courrier »], $edit [la « page d'accueil »], $edit [« cid »]) ; // permettent à des modules de répondre à la mise à jour d'un commentaire. comment_invoke_comment ($edit, « mise à jour ") ; // ajoutent une entrée à la notation de chien de garde. chien de garde (« contenu », « commentaire : %subject mis à jour. $edit [« nid »], rangée (=> « commentaire » de « fragment ». $edit [« cid »]))); } autrement { // ajoutent le commentaire à la base de données. // ici nous établissons le gisement de fil. Voir la documentation pour comment_render de // (). si == 0 (de $edit [« PID »]) { // ceci est un commentaire sans le commentaire de parent (profondeur 0) : nous commençons // en recherchant le niveau maximum de fil. $max = db_result (db_query (« max CHOISI (fil) DE {commentaires} OÙ nid = %d », $edit [« nid »])); Bande de // « / » de l'extrémité du fil. $max = rtrim ($max, « /") ; // en conclusion, établissent le gisement de fil pour ce nouveau commentaire. $thread = int2vancode (vancode2int ($max) + 1). « / » ; } autrement { // ceci est commentaire avec un commentaire de parent : nous augmentons // la partie de la valeur de fil à la profondeur appropriée. // obtiennent le commentaire de parent : $parent = _comment_load ($edit [« PID »]) ; Bande de // « / » de l'extrémité du fil de parent. $parent->thread = rtrim (de corde) ((corde) $parent->thread, « /") ; // obtiennent la valeur maximum en fil de _this_. $max = db_result (db_query (« max CHOISI (fil) DE {commentaires} OÙ le fil AIMENT « %s.%% » ET nid = %d », $parent->thread, $edit [« nid »])); si (== de $max '') { Premier enfant de // de ce parent. $thread = $parent->thread. « . ». int2vancode (0). « / » ; } autrement { Bande de // « / » à l'extrémité du fil. $max = rtrim ($max, « /") ; // que nous devons obtenir la valeur à la profondeur correcte. $parts = éclatent (« .  », $max) ; $parent_depth = compte (éclater (« .  », $parent->thread)); $last = $parts [$parent_depth] ; // en conclusion, établissent le gisement de fil pour ce nouveau commentaire. $thread = $parent->thread. « . ». int2vancode (vancode2int ($last) + 1). « / » ; } } si (vider ($edit [le « horodateur »])) { $edit [« horodateur »] = temps () ; } si === $user->uid) {// « === » (de $edit [« uid »] parce que nous voulons modifier les utilisateurs anonymes aussi $edit [« nom »] = $user->name ; } db_query (la « INSERTION DANS {commentaires} (nid, PID, uid, sujet, commentaire, format, hostname, horodateur, statut, fil, nom, courrier, page d'accueil) ÉVALUE (%d, %d, %d, « %s », « %s », %d, « %s », %d, %d, « %s », « %s », « %s », « %s ") », $edit [« nid »], $edit [« PID »], $edit [« uid »], $edit [« sujet »], $edit [« commentaire »], $edit [« le format »], ip_address (), $edit [« horodateur »], $edit [« statut »], $thread, $edit [« nom »], $edit [« courrier »], $edit [« page d'accueil »]) ; $edit [« cid »] = db_last_insert_id (« commentaires », « cid ") ; // indiquent les autres modules qu'un nouveau commentaire a été soumis. comment_invoke_comment ($edit, « insertion ") ; // ajoutent une entrée à la notation de chien de garde. chien de garde (« contenu », « commentaire : %subject supplémentaire. $edit [« nid »], rangée (=> « commentaire » de « fragment ». $edit [« cid »]))); } _comment_update_node_statistics ($edit [« nid »]) ; L'espace libre de // la cachette ainsi un utilisateur anonyme peut voir son commentaire étant ajouté. cache_clear_all () ; // au besoin, et puis expliquent la file d'attente d'approbation // réorientent l'utilisateur au noeud qu'il commente dessus. si == COMMENT_NOT_PUBLISHED (de $edit [« statut »]) { drupal_set_message (t (« votre commentaire a été fait la queue pour la modération par des administrateurs d'emplacement et sera édité après approval.")) ; } autrement { comment_invoke_comment ($edit, « éditent ") ; } $edit de retour [« cid »] ; } autrement { FAUX de retour ; } } autrement { chien de garde (« contenu », « commentaire : le commentaire non autorisé a soumis ou commentaire soumis à un poteau fermé %subject.  », rangée (« %subject » => $edit [« sujet »]), WATCHDOG_WARNING) ; drupal_set_message (t (« commentaire : le commentaire non autorisé a soumis ou commentaire soumis à un poteau fermé %subject.  », rangée (« de %subject » => $edit [« de sujet »])), « erreur ") ; FAUX de retour ; } } /** * Liens de commande de construction pour un commentaire (par exemple \ éditer, répondre, suppression) en ce qui concerne les permissions de l'accès courantes d'utilisateur. * * @param $comment * Le commentaire auquel les liens seront connexes. * @param $return * Non utilisé. * @return * Une rangée associative contenant les liens. * comment_links de fonction ($comment, $return = 1) { $user global ; $links = rangée () ; // si nous regardons juste ce commentaire, nous lions de nouveau au noeud. si ($return) { $links [« comment_parent »] = rangée ( « titre » => t (« parent "), comment_node_url de => de « href » (), => « comment-$comment->cid » de « fragment » ) ; } si == COMMENT_NODE_READ_WRITE (de node_comment_mode ($comment->nid)) { si user_access de && (d'user_access (« administrer les commentaires ") (« commentaires de poteau ")) { $links [« comment_delete »] = rangée ( « titre » => t (« suppression "), => « commentaire/delete/$comment->cid » de « href » ) ; $links [« comment_edit »] = rangée ( « titre » => t (« éditer "), => « commentaire/edit/$comment->cid » de « href » ) ; $links [« comment_reply »] = rangée ( « titre » => t (« réponse "), => « commentaire/reply/$comment->nid/$comment->cid » de « href » ) ; } autrement si (user_access (« commentaires de poteau ")) { si (comment_access (« éditer », $comment)) { $links [« comment_edit »] = rangée ( « titre » => t (« éditer "), => « commentaire/edit/$comment->cid » de « href » ) ; } $links [« comment_reply »] = rangée ( « titre » => t (« réponse "), => « commentaire/reply/$comment->nid/$comment->cid » de « href » ) ; } autrement { $node = node_load ($comment->nid) ; $links [« comment_forbidden »] [« titre »] = thème (« comment_post_forbidden », $node) ; } } renvoyer $links ; } /** * Rend des commentaires. * * @param $node * Le noeud que le commentaire a besoin rendre. * @param $cid *, Seulement un le commentaire facultatif, si donné est rendu. * * À l'affichage fileté commente dans l'ordre correct que nous gardons un gisement de « fil » * et ordre par cette valeur. Ce champ garde ces données dedans * une manière il est facile mettre à jour qu'et commode pour employer. * * Débuts d'une valeur de « fil » à « 1 ». Si nous ajoutons un enfant (a) à ce commentaire, * nous lui assignons un « fil » = « 1.1 ». Un enfant de (a) aura « 1.1.1 ». Après * le frère de (a) obtiendra « 1.2 ». Le prochain frère du parent de (a) obtiendra * « 2 » et ainsi de suite. * * D'abord de tous note que le gisement de fil stocke la profondeur du commentaire : * la profondeur 0 sera « X », profondeur 1 « X.X », profondeur 2 « X.X.X », etc. * * Obtenir maintenant la droite de commande, considérer cet exemple : * * 1 * 1.1 * 1.1.1 * 1.2 * 2 * * Si nous « PASSONS COMMANDE PAR le fil ASC » nous obtenons le résultat ci-dessus, et c'est * ordre normal assorti par temps. Cependant, si nous « PASSONS COMMANDE PAR le fil DESC » * nous obtenons : * * 2 * 1.2 * 1.1.1 * 1.1 * 1 * * Clairement, ce n'est pas une manière normale de voir un fil, et les utilisateurs obtiendront * confus. L'ordre normal pour montrer un fil par le desc de temps serait : * * 2 * 1 * 1.2 * 1.1 * 1.1.1 * * est qui ce que nous avons déjà fait avant la pièce rapportée standard de bipeur. Pour réaliser * ceci nous ajoutons simplement « / » à la fin de chaque valeur de « fil ». Cette sortie * les gisements de fil ressembleront à représenté ci-dessous : * * 1 * 1.1/ * 1.1.1/ * 1.2/ * 2 * * nous ajoutons « / » puisque ce char est, dans l'ASCII, plus haut que chaque nombre, ainsi si * maintenant nous « PASSONS COMMANDE PAR le fil DESC » que nous obtenons l'ordre correct. Cependant ceci * abîmer la commande d'inversion, « ORDRE PAR le fil ASC » -- ici, nous n'avons pas besoin * pour considérer « de remorquage/ » ainsi nous employons une sous-chaîne seulement. * comment_render de fonction ($node, $cid = 0) { $user global ; $output = '' ; si (user_access (« commentaires d'accès ")) { // prétraitent des variables. $nid = $node->nid ; si (vider ($nid)) { $nid = 0 ; } $mode = _comment_get_display_setting (« mode », $node) ; $order = _comment_get_display_setting (« sorte », $node) ; $comments_per_page = _comment_get_display_setting (« comments_per_page », $node) ; si (&& de $cid is_numeric ($cid)) { Vue simple de commentaire de //. $query = « c.cid CHOISI, c.pid, c.nid, c.subject, c.com ment, c.format, c.timestamp, c.name, c.mail, c.homepage, u.uid, u.name COMME registered_name, u.signature, u.picture, u.data, c.status {des commentaires} de c INTÉRIEUR JOIGNENT {des utilisateurs} u SUR c.uid = u.uid OÙ c.cid = %d » ; $query_args = rangée ($cid) ; si (! user_access (« administrer les commentaires ")) { $query. = « ET c.status = %d » ; $query_args [] = COMMENT_PUBLISHED ; } $query = db_rewrite_sql ($query, « c », « cid ") ; $result = db_query ($query, $query_args) ; si ($comment = db_fetch_object ($result)) { $comment->name = $comment->uid ? $comment->registered_name : $comment->name ; $links = module_invoke_all (« lien », « commentaire », $comment, 1) ; drupal_alter (« lien », $links, $node) ; $output. = thème (« comment_view », $comment, $node, $links) ; } } autrement { Vue multiple de commentaire de // $query_count = « COMPTE CHOISI (*) {commentaires} de c OÙ c.nid = %d » ; $query = « c.cid CHOISI comme cid, c.pid, c.nid, c.subject, c.com ment, c.format, c.timestamp, c.name, c.mail, c.homepage, u.uid, u.name COMME registered_name, u.signature, u.picture, u.data, c.thread, c.status {des commentaires} de c INTÉRIEUR JOIGNENT {des utilisateurs} u SUR c.uid = u.uid OÙ c.nid = %d » ; $query_args = rangée ($nid) ; si (! user_access (« administrer les commentaires ")) { $query. = « ET c.status = %d » ; $query_count. = « ET c.status = %d » ; $query_args [] = COMMENT_PUBLISHED ; } si (== COMMENT_ORDER_NEWEST_FIRST de $order) { si (== COMMENT_MODE_FLAT_COLLAPSED de $mode || == COMMENT_MODE_FLAT_EXPANDED de $mode) { $query. = « ORDRE PAR c.cid DESC » ; } autrement { $query. = « ORDRE PAR c.thread DESC » ; } } autrement si (== COMMENT_ORDER_OLDEST_FIRST de $order) { si (== COMMENT_MODE_FLAT_COLLAPSED de $mode || == COMMENT_MODE_FLAT_EXPANDED de $mode) { $query. = « ORDRE PAR c.cid » ; } autrement { // voient le commentaire ci-dessus. L'analyse indique que ceci ne coûte pas aussi // beaucoup. Elle mesure beaucoup bien mieux qu'ayant le commentaire de totalité structure de //. $query. = « ORDRE PAR SUBSTRING (c.thread, 1, (LONGUEUR (c.thread) - 1)) » ; } } $query = db_rewrite_sql ($query, « c », « cid ") ; $query_count = db_rewrite_sql ($query_count, « c », « cid ") ; Début de // une forme, pour l'usage avec la commande de commentaire. $result = pager_query ($query, $comments_per_page, 0, $query_count, $query_args) ; $divs = 0 ; $num_rows = FAUX ; $comments = '' ; drupal_add_css (drupal_get_path (« module », « commentaire "). « /comment.css ") ; tandis que ($comment = db_fetch_object ($result)) { $comment = drupal_unpack ($comment) ; $comment->name = $comment->uid ? $comment->registered_name : $comment->name ; $comment->depth = compte (éclater (« .  », $comment->thread)) - 1 ; si (== COMMENT_MODE_THREADED_COLLAPSED de $mode || == COMMENT_MODE_THREADED_EXPANDED de $mode) { si ($comment->depth > $divs) { $divs++ ; $comments. = « class= de
 » ; } autrement { tandis que ($comment->depth < $divs) { $divs--; $comments. = « 
 » ; } } } si (== COMMENT_MODE_FLAT_COLLAPSED de $mode) { $comments. = thème (« comment_flat_collapsed », $comment, $node) ; } autrement si (== COMMENT_MODE_FLAT_EXPANDED de $mode) { $comments. = thème (« comment_flat_expanded », $comment, $node) ; } autrement si (== COMMENT_MODE_THREADED_COLLAPSED de $mode) { $comments. = thème (« comment_thread_collapsed », $comment, $node) ; } autrement si (== COMMENT_MODE_THREADED_EXPANDED de $mode) { $comments. = thème (« comment_thread_expanded », $comment, $node) ; } $num_rows = RECTIFIENT ; } tandis que ($divs-- > 0) { $comments. = «  » ; } $comment_controls = variable_get (« comment_controls_ ». $node->type, COMMENT_CONTROLS_HIDDEN) ; si (&& de $num_rows (== COMMENT_CONTROLS_ABOVE de $comment_controls || == COMMENT_CONTROLS_ABOVE_BELOW de $comment_controls)) { $output. = drupal_get_form (« comment_controls », $mode, $order, $comments_per_page) ; } $output. = $comments ; $output. = thème (« bipeur », NULLE, $comments_per_page, 0) ; si (&& de $num_rows (== COMMENT_CONTROLS_BELOW de $comment_controls || == COMMENT_CONTROLS_ABOVE_BELOW de $comment_controls)) { $output. = drupal_get_form (« comment_controls », $mode, $order, $comments_per_page) ; } } // si permis, montrent la nouvelle carte réponse si elle déjà n'est pas montrée. $reply = 0) arg de && de « commentaire » de == d'arg ((1) == « réponse » ; si && de == COMMENT_NODE_READ_WRITE de node_comment_mode de && (d'user_access (« commentaires de poteau ") ($nid) (variable_get (« comment_form_location_ ». $NODE->TYPE, && DE == COMMENT_FORM_BELOW DE COMMENT_FORM_SEPARATE_PAGE)) ! $reply) { $output. = comment_form_box (rangée (« nid » => $nid), t (« nouveau commentaire de poteau ")) ; } $output = thème (« comment_wrapper », $output, $node) ; } $output de retour ; } /** * Opérations de commentaire. Nous offrons différentes opérations de mise à jour selon * qui commentent page d'administration que nous sommes en ligne. * * @param $action * La page d'administration de commentaire. * @return * Une rangée associative contenant les opérations offertes. * comment_operations de fonction ($action = NULLE) { si (le == de $action « éditent ") { $operations = rangée ( « éditer » la rangée de => (t (« éditer les commentaires choisis "), « MISE À JOUR {commentaires} A PLACÉ le statut = ». COMMENT_PUBLISHED. « OÙ cid = %d "), « supprimer » la rangée de => (t (« supprimer les commentaires choisis "), '') ) ; } autrement si (unpublish de == de $action « ") { $operations = rangée ( rangée de => de « unpublish » (t (« Unpublish les commentaires choisis "), « MISE À JOUR {commentaires} A PLACÉ le statut = ». COMMENT_NOT_PUBLISHED. « OÙ cid = %d "), « suppression » rangée de => (t (« supprimer les commentaires choisis "), '') ) ; } autrement { $operations = rangée ( « éditer » la rangée de => (t (« éditer les commentaires choisis "), « MISE À JOUR {commentaires} A PLACÉ le statut = ». COMMENT_PUBLISHED. « OÙ cid = %d "), rangée de => de « unpublish » (t (« Unpublish les commentaires choisis "), « MISE À JOUR {commentaires} A PLACÉ le statut = ». COMMENT_NOT_PUBLISHED. « OÙ cid = %d "), « suppression » rangée de => (t (« supprimer les commentaires choisis "), '') ) ; } $operations de retour ; } /** * Fonctions diverses : aides, privates, histoire * /** * Charger le commentaire entier par le cid. * * @param $cid * L'identification de identification de commentaire * @return * L'objet de commentaire. * _comment_load de fonction ($cid) { db_fetch_object de retour (db_query (« CHOISI * DE {commentaires} OÙ cid = %d », $cid)); } /** * Obtenir le compte de commentaire pour un noeud. * * @param $nid * L'identification de noeud * @return * Le compte de commentaire. * comment_num_all de fonction ($nid) { $cache statique ; si (! isset ($cache [$nid])) { $cache [$nid] = db_result (db_query (« comment_count CHOISI DE {node_comment_statistics} OÙ nid = %d », $nid)); } $cache de retour [$nid] ; } /** * Obtenir le compte de réponses pour un commentaire. * * @param $pid * L'identification de commentaire * @return * Le compte de réponses. * comment_num_replies de fonction ($pid) { $cache statique ; si (! isset ($cache [$pid])) { $cache [$pid] = db_result (db_query (« COMPTE CHOISI (cid) DE {commentaires} OÙ PID = %d ET statut = %d », $pid, COMMENT_PUBLISHED)); } $cache de retour [$pid] ; } /** * Obtenir le nombre de nouveaux commentaires pour l'utilisateur courant et le noeud spécifique. * * @param $nid * noeud-identification pour compter des commentaires pour * @param $timestamp * heure de compter de (défauts à la période du dernier accès d'utilisateur * au noeud) * comment_num_new de fonction ($nid, $timestamp = 0) { $user global ; si ($user->uid) { // recherchent l'horodateur auquel l'utilisateur courant a pour la dernière fois regardé // a spécifié le noeud. si (! $timestamp) { $timestamp = node_last_viewed ($nid) ; } $timestamp = ($timestamp > NODE_NEW_LIMIT ? $timestamp : NODE_NEW_LIMIT) ; Utilisation de // l'horodateur de rechercher le nombre de nouveaux commentaires. $result = db_result (db_query (« le COMPTE CHOISI (c.cid) {noeud} de n INTÉRIEUR JOIGNENT {des commentaires} c SUR n.nid = c.nid OÙ n.nid = %d ET horodateur > %d ET c.status = %d », $nid, $timestamp, COMMENT_PUBLISHED)); $result de retour ; } autrement { retour 0 ; } } /** * Valider les données de commentaire. * * @param $edit * Un containig associatif de rangée les données de commentaire. * @return * Le $edit original. * comment_validate de fonction ($edit) { $user global ; // appellent d'autres traiteurs de validation comment_invoke_comment ($edit, « valident ") ; si (isset ($edit [« date »])) { // en date de PHP 5.1.0, strtotime renvoie FAUX lors de l'échec au lieu de -1. si (strtotime ($edit [« date »]) <= 0) { form_set_error (« date », t (« vous devez spécifier un date.") valide) ; } } si (isset ($edit [« auteur »]) && ! { form_set_error (« auteur », t (« vous devez spécifier un author.") valide) ; } Validité de contrôle de // du nom, du courrier et de la page d'accueil (si donné) si (! $user->uid || isset ($edit [« is_anonymous »])) { $node = node_load ($edit [« nid »]) ; si (variable_get (« comment_anonymous_ ». $NODE->TYPE, COMMENT_ANONYMOUS_MAYNOT_CONTACT) > COMMENT_ANONYMOUS_MAYNOT_CONTACT) { si ($edit [« nom »]) { $taken = db_result (db_query (« CHOISIR LE COMPTE (uid) À PARTIR {des utilisateurs} OÙ INFÉRIEUR (nom) = « %s » », $edit [le « nom »])); si ($taken ! = 0) { form_set_error (« nom », t (« le nom que vous avez employé appartient à un user.") enregistré) ; } } autrement si (variable_get (« comment_anonymous_ ». $NODE->TYPE, == COMMENT_ANONYMOUS_MUST_CONTACT DE COMMENT_ANONYMOUS_MAYNOT_CONTACT)) { form_set_error (« nom », t (« vous devez laisser votre name.")) ; } si ($edit [« courrier »]) { si (! valid_email_address ($edit [« courrier »])) { form_set_error (« courrier », t (« l'email address que vous avez spécifié est invalid.")) ; } } autrement si (variable_get (« comment_anonymous_ ». $NODE->TYPE, == COMMENT_ANONYMOUS_MUST_CONTACT DE COMMENT_ANONYMOUS_MAYNOT_CONTACT)) { form_set_error (« courrier », t (« vous devez laisser un email address .")) ; } si ($edit [« page d'accueil »]) { si (! valid_url ($edit [la « page d'accueil »], RECTIFIENT)) { form_set_error (« page d'accueil », t (« L'URL de votre page d'accueil est inadmissible. Se rappeler qu'elle doit être entièrement - qualifié, c.-à-d. du de forme http://example.com/directory .")) ; } } } } renvoyer $edit ; } /** * Produire de la carte réponse de base, parce que rattachement à un noeud ou à un affichage sur une page séparée. * * @param $title * Non utilisé. * formes de @ingroup * comment_form_validate de @see () * comment_form_submit de @see () * comment_form de fonction (&$form_state, $edit, $title = NULLE) { $user global ; $op = isset ($_POST [« op »]) ? $_POST [« op »] : '' ; $node = node_load ($edit [« nid »]) ; si (! variable_get de && de $user->uid (« comment_anonymous_ ». $node->type, COMMENT_ANONYMOUS_MAYNOT_CONTACT) ! = COMMENT_ANONYMOUS_MAYNOT_CONTACT) { drupal_add_js (drupal_get_path (« module », « commentaire "). « /comment.js ") ; } rangée de $edit += (de courrier de « nom » » => '' de => '', « , « page d'accueil » => '') ; si ($user->uid) { si (! ($edit [« cid »]) user_access vides de && (« administrer les commentaires ")) { si (! vider ($edit [« auteur »])) { $author = $edit [« auteur »] ; } elseif (! vider ($edit [« nom »])) { $author = $edit [« nom »] ; } autrement { $author = $edit [« registered_name »] ; } si (! vider ($edit [« statut »])) { $status = $edit [« statut »] ; } autrement { $status = 0 ; } si (! vider ($edit [« date »])) { $date = $edit [« date »] ; } autrement { $date = format_date ($edit [« horodateur »], « coutume », « Y-m-d H : i O ") ; } $form [« admin »] = rangée ( => « fieldset » de « #type », « #title » => t (« administration "), => « #collapsible » VRAI, => « #collapsed » VRAI, => -2 de « #weight », ) ; si ($edit [« registered_name »] ! = '') { // le commentaire est par un utilisateur enregistré $form [« admin »] [« auteur »] = rangée ( => « textfield » de « #type », « #title » => t (« écrit près "), « #size » le => 30, => 60 de « #maxlength »,  » => « de « #autocomplete_path utilisateur/autocomplete », => $author de « #default_value », => -1 de « #weight », ) ; } autrement { // le commentaire est par un utilisateur anonyme $form [« is_anonymous »] = rangée ( => « valeur » de « #type », => de « #value » VRAI, ) ; $form [« admin »] [« nom »] = rangée ( => « textfield » de « #type », « #title » => t (« écrit près "), « #size » le => 30, => 60 de « #maxlength », => $author de « #default_value », => -1 de « #weight », ) ; $form [« admin »] [« courrier »] = rangée ( => « textfield » de « #type », « #title » => t (« email "), => 64 de « #maxlength », « #size » le => 30, => $edit [« courrier » de « #default_value »], « #description » => t (« le contenu de ce champ est maintenu privé et ne sera pas montré publicly."), ) ; $form [« admin »] [« page d'accueil »] = rangée ( => « textfield » de « #type », « #title » => t (« page d'accueil "), => 255 de « #maxlength », « #size » le => 30, => $edit [« page d'accueil » de « #default_value »], ) ; } } autrement { $form [=> t (« votre nom ") de « #title » de => « de « #type » de « _author »] = rangée (article », « thème de => de #value » (« username », $user) ) ; $form [« auteur »] = rangée (#value » de => de « #type » de « => $user->name de « valeur »,) ; } } autrement si (variable_get (« comment_anonymous_ ». $NODE->TYPE, == COMMENT_ANONYMOUS_MAY_CONTACT DE COMMENT_ANONYMOUS_MAYNOT_CONTACT)) { $form [le => t (« votre nom ") de « #title » de => le « de « #type » de « nom »] = rangée (textfield », « => 60 de #maxlength le », « #size le » => 30, « => $edit [« nom » de #default_value le »] ? $edit [« nom »] : variable_get (« anonyme », t (« anonyme ")) ) ; $form [« courrier »] = rangée (textfield » de => de « #type » le « , « #title » le => t (« email "), « #maxlength le » => 64, « #size le » => 30, « #default_value le » => $edit [« courrier »], « #description le » => t (« le contenu de ce champ est maintenu privé et ne sera pas montré publicly.") ) ; $form [(« page d'accueil ") de « #title » de => le « de « #type » de « page d'accueil »] = rangée (textfield », « => 255 de #maxlength le », « #size le => du » => 30, « du #default_value » $edit le => t [« page d'accueil »]) ; } autrement si (variable_get (« comment_anonymous_ ». $NODE->TYPE, == COMMENT_ANONYMOUS_MUST_CONTACT DE COMMENT_ANONYMOUS_MAYNOT_CONTACT)) { $form [le => t (« votre nom ") de « #title » de => le « de « #type » de « nom »] = rangée (textfield », « => 60 de #maxlength le », « #size le » => 30, « => $edit [« nom » de #default_value le »] ? $edit [« nom »] : variable_get (« anonyme », t (« anonyme ")), => « #required » VRAI) ; $form [« courrier »] = rangée (textfield » de => de « #type » le « , « #title » le => t (« email "), « #maxlength le » => 64, « #size le » => 30, « #default_value le » => $edit [« courrier »], « #description le » => t (« le contenu de ce champ est maintenu privé et ne sera pas montré publicly."), => « #required » VRAI) ; $form [(« page d'accueil ") de « #title » de => le « de « #type » de « page d'accueil »] = rangée (textfield », « => 255 de #maxlength le », « #size le => du » => 30, « du #default_value » $edit le => t [« page d'accueil »]) ; } si (variable_get (« comment_subject_field_ ». $node->type, 1) == 1) { $form [=> t (« soumis ") de « #title » de => « de « #type » de « sujet »] = rangée (textfield », « => 64 de #maxlength », « => de #default_value » ! vider ($edit [« sujet »]) ? $edit [« sujet »] : '') ; } si (! vide ($edit [« commentaire »])) { $default = $edit [« commentaire »] ; } autrement { $default = '' ; } $form [« comment_filter »] [« commentaire »] = rangée ( => « textarea » de « #type », « #title » => t (« commentaire "), => 15 de « #rows », => $default de « #default_value », => « #required » VRAI, ) ; si (! isset ($edit [« format »])) { $edit [« format »] = FILTER_FORMAT_DEFAULT ; } $form [« comment_filter »] [« format »] = filter_form ($edit [« format »]) ; $form [« cid »] = rangée (=> de « #value » de => « de « #type » valeur » ! vider ($edit [« cid »]) ? $edit [« cid »] : NULLE) ; $form [« PID »] = rangée (=> de « #value » de => « de « #type » valeur » ! vider ($edit [« PID »]) ? $edit [« PID »] : NULLE) ; $form [« uid »] = rangée (=> de « #value » de => « de « #type » valeur » ! vider ($edit [« uid »]) ? $edit [« uid »] : NULLE) ; Exposition de // seulement le bouton de sauvegarde si la prévision est facultative ou si nous sommes en mode de prévision. // nous montrons le bouton de sauvegarde dans le mode de prévision même s'il y a des erreurs de forme de sorte que des éléments facultatifs de forme de // (par exemple, captcha) peuvent être mis à jour en mode de prévision. si (! && de form_get_errors () ((variable_get (« comment_preview_ ». $NODE->TYPE, == COMMENT_PREVIEW_OPTIONAL DE COMMENT_PREVIEW_REQUIRED)) || (== t (« prévision ") de $op) || (== t de $op (« sauf ")))) { $form [« soumettre »] = rangée (du => t (le « sauf "), « du #weight » de « #value » de => « de « #type » soumettre », => 19) ; } $form [de => t (« prévision "), « de #weight » de « #value » de => « de « #type » de « prévision »] = rangée (bouton », => 20) ; $form [« #token »] = « commentaire ». $edit [« nid »]. (isset ($edit [« PID »]) ? $edit [« PID »] : '') ; si (== t (« prévision ") de $op) { $form [« #after_build »] = rangée (« comment_form_add_preview ") ; } si (vider ($edit [« cid »]) && vide ($edit [« PID »])) { $form [« #action »] = URL (« commentaire/réponse ». $edit [« nid »]) ; } $form de retour ; } /** * Thème la boîte de carte réponse. * * @param $edit * La structure de forme. * @param $title * Le titre de forme. * comment_form_box de fonction ($edit, $title = NULLE) { thème de retour (« boîte », $title, drupal_get_form (« comment_form », $edit, $title)); } /** * Former le constructeur ; Produire et valider d'une forme de prévision de commentaire. * * formes de @ingroup * comment_form_add_preview de fonction ($form, &$form_state) { $user global ; $edit = $form_state [« valeurs »] ; drupal_set_title (t (« commentaire de prévision ")) ; $output = '' ; $node = node_load ($edit [« nid »]) ; // appellent la pleine validation pour la forme, pour se protéger contre l'emplacement en travers contrefaçons de demande de // (CSRF) et valeurs arbitraires d'arrangement pour des champs comme // le format d'entrée. Visionner le commentaire seulement quand la validation de forme ne fait pas // a placé toutes les erreurs. drupal_validate_form ($form [« form_id »] [« #value »], $form, $form_state) ; si (! form_get_errors ()) { _comment_form_submit ($edit) ; $comment = (objet) $edit ; Attache de // l'information d'utilisateur et de temps. si (! vider ($edit [« auteur »])) { ; } elseif (&& de $user->uid ! isset ($edit [« is_anonymous »])) { $account = $user ; } si (! vider ($account)) { $comment->uid = $account->uid ; $comment->name = check_plain ($account->name) ; } elseif (vider ($comment->name)) { $comment->name = variable_get (« anonyme », t (« anonyme ")) ; } $comment->timestamp = ! vider ($edit [« horodateur »]) ? $edit [« horodateur »] : temps () ; $output. = thème (« comment_view », $comment, $node) ; } $form [« comment_preview »] = rangée ( => $output de « #value », => -100 de « #weight », prévision " de « class= de
de « #prefix » > », => « 
 » de « #suffix », ) ; $output = '' ; si ($edit [« PID »]) { $comment = db_fetch_object (db_query (« c.* CHOISIS, u.uid, u.name COMME registered_name, u.signature, u.picture, u.data {des commentaires} de c INTÉRIEUR JOIGNENT {des utilisateurs} u SUR c.uid = u.uid OÙ c.cid = %d ET c.status = %d », $edit [« PID »], COMMENT_PUBLISHED)); $comment = drupal_unpack ($comment) ; $comment->name = $comment->uid ? $comment->registered_name : $comment->name ; $output. = thème (« comment_view », $comment, $node) ; } autrement { $suffix = vident ($form [« #suffix »]) ? '' : $form [« #suffix »] ; $form [« #suffix »] = $suffix. node_view ($node) ; $edit [« PID »] = 0 ; } $form [« comment_preview_below »] = rangée (=> 100 de => $output, de « #weight » de « #value ») ; $form de retour ; } /** * Valider les soumissions de carte réponse. * comment_form_validate de fonction ($form, &$form_state) { $user global ; si (=== 0 de $user->uid) { foreach (rangée (« nom », « page d'accueil », « courrier ") comme $field) { // a placé le biscuit pendant 365 jours. si (isset ($form_state [« valeurs »] [$field])) { setcookie (« comment_info_ ». $field, $form_state [« valeurs »] [$field], temps () + 31536000, « /") ; } } } comment_validate ($form_state [« valeurs »]) ; } /** * Préparer un commentaire pour la soumission. * * @param $comment_values * Une rangée associative contenant les données de commentaire. * _comment_form_submit de fonction (&$comment_values) { rangée de $comment_values += (« sujet » => '') ; si (! isset ($comment_values [« date »])) { $comment_values [« date »] = « maintenant » ; } $comment_values [« horodateur »] = strtotime ($comment_values [« date »]) ; si (isset ($comment_values [« auteur »])) { ; $comment_values [« uid »] = $account->uid ; $comment_values [« nom »] = $comment_values [« auteur »] ; } // valident le sujet du commentaire. Sinon spécifique, extrait // un du corps du commentaire. si (équilibre ($comment_values [« sujet »]) == '') { // le corps peut être dans n'importe quel format, ainsi nous : Filtre de // 1) il dans le HTML Bande de // 2) dehors toutes les étiquettes de HTML Entités de converti de // 3) de nouveau au plain-text. Note de // : le format est vérifié par le check_markup (). $comment_values [« sujet »] = équilibre (truncate_utf8 (decode_entities (strip_tags (check_markup ($comment_values [« commentaire »], $comment_values [« format »]))), 29, RECTIFIENT)); Les cas de bord de // où le corps de commentaire est peuplé seulement par des étiquettes de HTML // exigent un sujet de défaut. si == (de $comment_values [« sujet »] '') { $comment_values [« sujet »] = t (« (aucun sujet) ") ; } } } /** * Soumissions de processus de carte réponse ; préparer le commentaire, le stocker, et fixer un objectif de redirection. * comment_form_submit de fonction ($form, &$form_state) { _comment_form_submit ($form_state [« valeurs »]) ; si ($cid = comment_save ($form_state [« valeurs »])) { $node = node_load ($form_state [« valeurs »] [« nid »]) ; $page = comment_new_page_count ($node->comment_count, 1, $node) ; $form_state [« réorienter »] = rangée (« noeud ». $node->nid, $page, « comment-$cid ») ; retour ; } } /** * Thème un bloc simple de commentaire. * * @param $comment * L'objet de commentaire. * @param $node * Le noeud de commentaire. * @param $links * Une rangée associative contenant des liens de commande. * @param $visible * Commutateurs entre vue pliée/dévoilée. * @ingroup themeable * theme_comment_view de fonction ($comment, $node, $links = rangée (), $visible = RECTIFIENT) { statique $first_new = RECTIFIENT ; $output = '' ; $comment->new = node_mark ($comment->nid, $comment->timestamp) ; si (&& $comment->new de $first_new ! = MARK_READ) { // assignent l'ancre seulement pour le premier nouveau commentaire. Ceci évite la reproduction attributs d'identification de // à une page. $first_new = FAUX ; $output. = « id= de
\ n » ; } $output. = « id= de cid \ « > \ n » ; Le commutateur de // à plié/a dévoilé la vue du commentaire si ($visible) { $comment->comment = check_markup ($comment->comment, $comment->format, FAUX) ; Crochet du commentaire api de // comment_invoke_comment ($comment, « vue ") ; $output. = thème (« commentaire », $comment, $node, $links) ; } autrement { $output. = thème (« comment_folded », $comment) ; } $output de retour ; } /** * Établir une forme de commande de commentaire. * * @param $mode * Mode d'affichage de commentaire. * @param $order * Mode d'ordre de commentaire. * @param $comments_per_page * Commente par la page. * formes de @ingroup * comment_controls de fonction ($mode = COMMENT_MODE_THREADED_EXPANDED, $order = COMMENT_ORDER_NEWEST_FIRST, $comments_per_page = 50) { $form [« mode »] = rangée ( » le => « de « #type choisissent », => $mode de « #default_value », _comment_get_modes de => de « #options » (), => 1 de « #weight », ) ; $form [« ordre »] = rangée (  » le => « de « #type choisissent », => $order de « #default_value », _comment_get_orders de => de « #options » (), => 2 de « #weight », ) ; foreach (_comment_per_page () en tant que $i) { $options [$i] = t (« ! commentaires par la page », rangée (« ! un » => $i)) ; } $form [« comments_per_page »] = rangée ( » le => « de « #type choisissent », => $comments_per_page de « #default_value », => $options de « #options », => 3 de « #weight », ) ; $form [« soumettre »] = rangée ( » le => « de « #type soumettent », « #value » => t (« sauf des arrangements "), => 20 de « #weight », ) ; $form de retour ; } /** * Boîte de commandes de commentaire de thème où l'utilisateur peut changer le mode d'affichage de défaut et montrer l'ordre des commentaires. * * @param $form * La structure de forme. * @ingroup themeable * theme_comment_controls de fonction ($form) { $output = « class= de
 » ; $output. = drupal_render ($form) ; $output. = « 
 » ; $output. = description " « de class= de
 ». t (« choisir votre manière preferred de montrer les commentaires et de cliquer « sauf des arrangements » pour activer votre changes."). « 
 » ; thème de retour (« boîte », t (« options de visionnement de commentaire "), $output) ; } /** * Soumissions de processus de forme de comment_controls. * comment_controls_submit de fonction ($form, &$form_state) { $user global ; $mode = $form_state [« valeurs »] [« mode »] ; $order = $form_state [« valeurs »] [« ordre »] ; $comments_per_page = $form_state [« valeurs »] [« comments_per_page »] ; si ($user->uid) { $account = user_save ($user, rangée (=> $mode de « mode », => $comments_per_page de => $order, de « comments_per_page » de « sorte »)); // se terminent si une erreur se produisait pendant l'user_save (). si (! $account) { drupal_set_message (t (« utilisateur d'économie d'erreur account."), « erreur ") ; retour ; } $user = $account ; } autrement { $_SESSION [« comment_mode »] = $mode ; $_SESSION [« comment_sort »] = $order ; $_SESSION [« comment_comments_per_page »] = $comments_per_page ; } } /** * Variables de processus pour comment.tpl.php. * * @see comment.tpl.php * theme_comment de @see () * template_preprocess_comment de fonction (&$variables) { $comment = $variables [« commentaire »] ; $node = $variables [« noeud »] ; $variables [« auteur »] = thème (« username », $comment) ; $variables [« contenu »] = $comment->comment ; $variables [« date »] = format_date ($comment->timestamp) ; $variables [« liens »] = isset ($variables [« liens »]) ? thème (« liens », $variables [« liens »]) : '' ; $variables [« nouveau »] = $comment->new ? t (« nouveau ") : '' ; $variables [« image »] = theme_get_setting (« toggle_comment_user_picture ") ? thème (« user_picture », $comment) : '' ; $variables [« signature »] = $comment->signature ; $variables [« soumis »] = thème (« comment_submitted », $comment) ; $variables [« titre »] = l ($comment->subject, $_GET [« q »], rangée (=> « comment-$comment->cid » de « fragment »)); $variables [« template_files »] [] = « commentaire ». $node->type ; // a placé le statut à une représentation de corde de comment->status. si (isset ($comment->preview)) { $variables [« statut »] = « commenter-visionnent préalablement » ; } autrement { $variables [« statut »] = (== COMMENT_NOT_PUBLISHED de $comment->status) ? « commenter-non publié » : « commenter-édité » ; } } /** * Variables de processus pour comment-folded.tpl.php. * * @see comment-folded.tpl.php * le @see theme_comment_folded () * la fonction template_preprocess_comment_folded (&$variables) { $comment = $variables [« commentaire »] ; $variables [« auteur »] = thème (« username », $comment) ; $variables [« date »] = format_date ($comment->timestamp) ; $variables [« nouveau »] = $comment->new ? t (« nouveau ") : '' ; $variables [« titre »] = l ($comment->subject, comment_node_url (). « / ». $comment->cid, rangée (=> « comment-$comment->cid » de « fragment »)); } /** * Vue effondrée plate de commentaire de thème. * * @param $comment * Le commentaire à être orienté. * @param $node * Le noeud de commentaire. * @ingroup themeable * la fonction theme_comment_flat_collapsed ($comment, $node) { thème de retour (« comment_view », $comment, $node, '', 0) ; } /** * Vue augmentée plate de commentaire de thème. * * @param $comment * Le commentaire à être orienté. * @param $node * Le noeud de commentaire. * @ingroup themeable * la fonction theme_comment_flat_expanded ($comment, $node) { thème de retour (« comment_view », $comment, $node, module_invoke_all (« lien », « commentaire », $comment, 0)); } /** * Le fil de commentaire de thème s'est effondré vue. * * @param $comment * Le commentaire à être orienté. * @param $node * Le noeud de commentaire. * @ingroup themeable * la fonction theme_comment_thread_collapsed ($comment, $node) { thème de retour (« comment_view », $comment, $node, '', 0) ; } /** * Vue augmentée par fil de commentaire de thème. * * @param $comment * Le commentaire à être orienté. * @param $node * Le noeud de commentaire. * @ingroup themeable * la fonction theme_comment_thread_expanded ($comment, $node) { thème de retour (« comment_view », $comment, $node, module_invoke_all (« lien », « commentaire », $comment, 0)); } /** * Thème « vous ne pouvez pas une notification signaler commentaires ». * * @param $node * Le noeud de commentaire. * @ingroup themeable * la fonction theme_comment_post_forbidden ($node) { $user global ; $authenticated_post_comments statique ; si (! $user->uid) { si (! isset ($authenticated_post_comments)) { // nous avons seulement produit n'importe quel lien si nous sommes certains, ce des utilisateurs obtenons la permission // pour signaler des commentaires en ouvrant une session. Nous cachons également localement cette information. $authenticated_post_comments = array_key_exists (DRUPAL_AUTHENTICATED_RID, user_roles (VRAIS, « commentaires de poteau ") + user_roles (VRAIS, « le poteau commente sans approbation ")) ; } si ($authenticated_post_comments) { // nous ne pouvons pas employer le drupal_get_destination () parce que ces liens // apparaissent parfois sur /node et des pages de liste de taxonomie. si (variable_get (« comment_form_location_ ». $NODE->TYPE, == COMMENT_FORM_SEPARATE_PAGE DE COMMENT_FORM_SEPARATE_PAGE)) { $destination = « destination= ». drupal_urlencode (« commentaire/reply/$node->nid#comment-form ») ; } autrement { $destination = « destination= ». drupal_urlencode (« node/$node->nid#comment-form ») ; } si (variable_get (« user_register », 1)) { Les utilisateurs de // peuvent s'enregistrer. t de retour (URL de => de « @login » de @register " de href= " de t (« liste plate de COMMENT_MODE_FLAT_EXPANDED - augmentée "), => t (« liste filetée de COMMENT_MODE_THREADED_COLLAPSED - effondrée "), => t (« liste filetée de COMMENT_MODE_THREADED_EXPANDED - augmentée ") ) ; } /** * Renvoyer un choix de commandes de visionnement pour des listes de commentaire. * * Nous ne pouvons pas employer une rangée de variable globale parce que le système de lieu * n'est pas initialisé encore quand le module de commentaire est chargé. * _comment_get_orders de fonction () { rangée de retour ( => t (« date - les plus nouveaux premières ") de COMMENT_ORDER_NEWEST_FIRST, => t (« date - la première le plus ancien ") de COMMENT_ORDER_OLDEST_FIRST ) ; } /** * Renvoyer un choix des « commentaires d'arrangements par page » desquels l'utilisateur * peut choisir. * _comment_per_page de fonction () { drupal_map_assoc de retour (rangée (10, 30, 50, 70, 90, 150, 200, 250, 300)); } /** * Renvoyer un arrangement courant d'affichage de commentaire * * @param $setting * peut être un de ces derniers : « mode », « sorte », « comments_per_page » * @param $node * Le noeud de commentaire en question. * fonction _comment_get_display_setting ($setting, $node) { $user global ; si (isset ($_GET [$setting])) { $value = $_GET [$setting] ; } autrement { // obtiennent le défaut de l'emplacement de l'arrangement commuter ($setting) { enfermer le « mode » : $default = variable_get (« comment_default_mode_ ». $node->type, COMMENT_MODE_THREADED_EXPANDED) ; coupure ; cas « sorte » : $default = variable_get (« comment_default_order_ ». $node->type, COMMENT_ORDER_NEWEST_FIRST) ; coupure ; cas « comments_per_page » : $default = variable_get (« comment_default_per_page_ ». $node->type, 50) ; } si (variable_get (« comment_controls_ ». $NODE->TYPE, == COMMENT_CONTROLS_HIDDEN DE COMMENT_CONTROLS_HIDDEN)) { // si les commandes de commentaire sont défaut d'emplacement d'utilisation de handicapés $value = $default ; } autrement { // autrement utilisation l'arrangement d'utilisateur si ensemble si && $user->$setting (d'isset ($user->$setting)) { $value = $user->$setting ; } autrement si (isset ($_SESSION [« comment_ ». && $_SESSION [« comment_ » de $setting]). $setting]) { $value = $_SESSION [« comment_ ». $setting] ; } autrement { $value = $default ; } } } $value de retour ; } /** * Met à jour les statistiques de commentaire pour un noeud donné. Ceci en devrait s'appeler * chronométrer un commentaire est ajouté, supprimé, ou mis à jour. * * Les champs suivants sont contenus dans la table de node_comment_statistics. * - last_comment_timestamp : l'horodateur du dernier commentaire pour ce noeud ou le noeud créent le timbre si commentaire n'existe pas pour le noeud. * - last_comment_name : le nom de l'affiche anonyme pour le dernier commentaire * - last_comment_uid : l'uid de l'affiche pour le dernier commentaire pour ce noeud ou l'uid d'auteurs de noeud si commentaire n'existe pas pour le noeud. * - comment_count : tout le nombre d'approuvé/a édité des commentaires sur ce noeud. * _comment_update_node_statistics de fonction ($nid) { $count = db_result (db_query (« COMPTE CHOISI (cid) DE {commentaires} OÙ nid = %d ET statut = %d », $nid, COMMENT_PUBLISHED)); les commentaires de // existent si ($count > 0) { $last_reply = db_fetch_object (db_query_range (« cid CHOISI, nom, horodateur, uid DE {commentaires} OÙ nid = %d ET statut = ORDRE de %d PAR cid DESC », $nid, COMMENT_PUBLISHED, 0, 1)) ; db_query (la « MISE À JOUR {node_comment_statistics} A PLACÉ le comment_count = le %d, last_comment_timestamp = %d, last_comment_name = « %s », last_comment_uid = %d OÙ nid = %d », $count, $last_reply->timestamp, $last_reply->uid ? '' : $last_reply->name, $last_reply->uid, $nid) ; } // aucuns commentaires autrement { $node = db_fetch_object (db_query (« uid CHOISI, créé DE {noeud} OÙ nid = %d », $nid)); db_query (la « MISE À JOUR {node_comment_statistics} A PLACÉ le comment_count = 0, last_comment_timestamp = %d, last_comment_name = '', last_comment_uid = %d OÙ nid = %d », $node->created, $node->uid, $nid) ; } } /** * Appeler une opération de hook_comment () dans des tous les modules. * * @param &$comment * Un objet de commentaire. * @param $op * Une corde contenant le nom de l'opération de commentaire. * @return * La valeur retournée des crochets appelés. * comment_invoke_comment de fonction (&$comment, $op) { $return = rangée () ; foreach (module_implements (« commentaire ") comme $name) { $function = $name. « _comment » ; $result = $function ($comment, $op) ; si && (d'isset ($result) is_array ($result)) { $return = array_merge ($return, $result) ; } autrement si (isset ($result)) { $return [] = $result ; } } $return de retour ; } /** * Produire du vancode. * * Se compose d'un principal caractère indiquant la longueur, suivie des chiffres de N * avec une valeur numérique dans la base 36. Vancodes peut être assorti comme cordes * sans salir vers le haut l'ordre numérique. * * Il disparaît : * 00, 01, 02,…, 0y, 0z, * 110, 111,…, 1zy, 1zz, * 2100, 2101,…, 2zzy, 2zzz, * 31000, 31001,… * fonction int2vancode ($i = 0) { $num = base_convert ((international) $i, 10, 36) ; $length = strlen ($num) ; chr de retour ($length + ord (« 0 ») - 1). $num ; } /** * Décoder le vancode de nouveau à un nombre entier. * fonction vancode2int ($c = « 00 ») { base_convert de retour (substr ($c, 1), 36, 10) ; } /** * Exécution de hook_hook_info (). * comment_hook_info de fonction () { rangée de retour ( rangée de => de « commentaire » ( rangée de => de « commentaire » ( « insérer » la rangée de => ( « courses quand » => t (« après sauvegarde d'un nouveau commentaire "), ), rangée de => de « mise à jour » ( « courses quand » => t (« après sauvegarde d'un commentaire mis à jour "), ), rangée de => de « suppression » ( « courses quand » => t (« après la suppression d'un commentaire ") ), rangée de => de « vue » ( « courses quand » => t (« quand un commentaire est regardé par un utilisateur authentifié ") ), ), ), ) ; } /** * Exécution de hook_action_info (). * comment_action_info de fonction () { rangée de retour ( rangée de => de « comment_unpublish_action » ( « description » => t (« commentaire d'Unpublish "), « dactylographier » le => « commentaire », => « configurable » FAUX, « accroche » la rangée de => ( « commentaire » rangée de => (« insertion », « mise à jour "), ) ), rangée de => de « comment_unpublish_by_keyword_action » ( « description » => t (« commentaire d'Unpublish contenant des mots-clés "), « dactylographier » le => « commentaire », => « configurable » VRAI, « accroche » la rangée de => ( « commentaire » rangée de => (« insertion », « mise à jour "), ) ) ) ; } /** * Action de Drupal à l'unpublish un commentaire. * * @param $context * Rangée verrouillée. Doit contenir l'identification du commentaire si $comment n'est pas passé. * @param $comment * Un objet facultatif de commentaire. * comment_unpublish_action de fonction ($comment, $context = rangée ()) { si (isset ($comment->cid)) { $cid = $comment->cid ; $subject = $comment->subject ; } autrement { $cid = $context [« cid »] ; $subject = db_result (db_query (« sujet CHOISI DE {commentaires} OÙ cid = %d », $cid)); } db_query (la « MISE À JOUR {commentaires} A PLACÉ le statut = le %d OÙ cid = %d », COMMENT_NOT_PUBLISHED, $cid) ; chien de garde (« action », « commentaire non publié %subject.  », rangée (« => $subject de %subject »)); } /** * Former le constructeur ; Préparer une forme pour des mots-clés mis sur la liste noire. * * formes de @ingroup * comment_unpublish_by_keyword_action_form de fonction ($context) { $form [« mots-clés »] = rangée ( « #title » => t (« mots-clés "), => « textarea » de « #type », « #description » => t (« le commentaire sera non publié s'il contient des ordres l'uns des de caractère ci-dessus. Employer une liste virgule-séparée d'ordres de caractère. Exemple : drôle, saut à  l'élastique, « Company, Inc. ». Les ordres de caractère sont cas-sensitive."), de => de « #default_value » ($context isset [« mots-clés »]) ? drupal_implode_tags ($context [« mots-clés »]) : '', ) ; $form de retour ; } /** * Soumissions de processus de forme de comment_unpublish_by_keyword_action_form. * comment_unpublish_by_keyword_action_submit de fonction ($form, $form_state) { rangée de retour (de => de « mots-clés » ($form_state drupal_explode_tags [« valeurs »] [« mots-clés »])); } /** * Exécution d'une action configurable de Drupal. * Unpublish un commentaire s'il contient une certaine corde. * * @param $context * Une rangée fournissant plus d'informations au sujet du contexte de l'appel à cette action. * Inutilisé ici puisque cette action soutient actuellement seulement les ops d'insertion et de mise à jour de * le crochet de commentaire, qui fournissent un objet complet de $comment. * @param $comment * Un objet de commentaire. * comment_unpublish_by_keyword_action de fonction ($comment, $context) { foreach ($context [« mots-clés »] comme $keyword) { si (strstr ($comment->comment, $keyword) || strstr ($comment->subject, $keyword)) { db_query (la « MISE À JOUR {commentaires} A PLACÉ le statut = le %d OÙ cid = %d », COMMENT_NOT_PUBLISHED, $comment->cid) ; chien de garde (« action », « commentaire non publié %subject.  », rangée (« => $comment->subject de %subject »)); coupure ; } } }
class= > " clair " de
> de " codeSnippet " de class= de
class= " lineNumbers " de
class= de
1 :
2 :
3 :
4 :
5 :
6 :
7 :
8 :
9 :
10 :
11 :
12 :
13 :
14 :
15 :
16 :
17 :
18 :
19 :
20 :
21 :
22 :
23 :
24 :
25 :
26 :
27 :
28 :
29 :
30 :
31 :
32 :
33 :
34 :
35 :
class= " de l'id= " codeSnippet651348 de
 $Id : comment.js, v 1.5 2007/09/12 18h29 : 32 goba Exp $

Drupal.behaviors.com ment = fonction (contexte) {
  la variété partie = nouvelle rangée (« nom », « page d'accueil », « courrier ») ;
  biscuit de variété = '' ;
  pour (i=0 ; i<3 ; i++) {
    biscuit = Drupal.com ment.getCookie (« comment_info_ » + parties [I]) ;
    si (biscuit ! = '') {
      $("#comment-form entré [le name= » + partie [I] + »] : pas (.comment-processed) « , contexte)
        .val (biscuit)
        .addClass (« commenter-traité ") ;
    }
  }
} ;

Drupal.com ment = {} ;

Drupal.com ment.getCookie = fonction (nom) {
  recherche = nom de variété + « = » ;
  returnValue de variété = '' ;

  si (document.cookie.length > 0) {
    excentrage = document.cookie.indexOf (recherche) ;
    si (compenser ! = -1) {
      += excentré search.length ;
      extrémité de variété = document.cookie.indexOf (« ;  », excentrage) ;
      si (== -1 d'extrémité) {
        extrémité = document.cookie.length ;
      }
      returnValue = decodeURIComponent (document.cookie.substring (compenser, extrémité) .replace (/\ +/g, « %20 »));
    }
  }

  renvoyer le returnValue ;
} ;
class= de

Réponse : Comment est-ce que je peux modifier le module de commentaire de Drupal de sorte qu'il n'inclue pas un champ de page d'accueil ?

A trouvé que cette solution là-dessus le forum et de Drupal a fonctionné pour moi.

La copie et collent ce code dans le dossier du template.php de votre thème remplaçant THEMENAME par le nom de votre thème.

/**
* Exécution de HOOK_theme ().
*
fonction THEMENAME_theme () {
rangée de retour (
rangée de => de « comment_form » (                      
      rangée de => de « arguments » (NULLE de => de « forme »),
    ),
  ) ;
}

Se rappeler que vous pouvez seulement avoir un exemple de HOOK_theme dans votre fichier gabarit ainsi combiner ceci avec votre existant.

Insérer alors ce morceau de code ci-dessous et changer THEMENAME en nom de votre thème :

thème de // la carte réponse
fonction THEMENAME_comment_form ($form) {
  // enlève le champ de page d'accueil
  supprimé ($form [« page d'accueil »]) ;          
  drupal_render de retour ($form) ;
}
Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us