Commit | Line | Data |
---|---|---|
bc13d5d6 H |
1 | <?php |
2 | // requires: Email, String | |
3 | ||
4 | ||
5 | include_once("database.inc"); | |
6 | include_once("string.inc"); | |
7 | include_once("email.inc"); | |
8 | class Diskuse extends CLASS_DATABASE { | |
9 | ||
10 | function Diskuse() { | |
11 | $this->CLASS_DATABASE(); | |
12 | ||
13 | } | |
14 | ||
15 | function addPost($dennik,$id_clanku,$nazov,$id_diskuse, $jmeno = "",$email = "",$telo = "",$thread_prev = "",$posli_email = "",$znamka = 0,$nodouble = "") { | |
16 | ||
17 | if ($id_diskuse && ($titulek || $telo)) { | |
18 | if ($nodouble) { | |
19 | $q = "SELECT id_prispevku FROM prispevky WHERE duplicita = '$nodouble'"; | |
20 | $set = $this->executeQuery($q); | |
21 | if ($set->getNumRows()) return false; | |
22 | } | |
23 | $diskuseinfo = $this->getDiskuseInfo($id_diskuse); | |
24 | if (strlen($telo) > 25 && strpos($telo," ",25)) { | |
25 | $titulek = substr($telo,0,strpos($telo," ",25))."..."; | |
26 | } else { | |
27 | $titulek = $telo; | |
28 | } | |
29 | $jmeno = strip_tags($jmeno); | |
30 | $email = strip_tags($email); | |
31 | $telo = strip_tags($telo,'<a><b><i><u>'); | |
32 | $telo = nl2br($telo); | |
33 | if ($thread_prev) { | |
34 | $q = "SELECT thread FROM prispevky WHERE id_prispevku = '$thread_prev' AND id_diskuse = '$id_diskuse'"; | |
35 | $r = $this->executeQuery($q); | |
36 | if ($r->getNumRows()) { | |
37 | $r->next(); | |
38 | $t = $r->getRecord(); | |
39 | $thread = $t[thread]; | |
40 | $len = strlen($thread); | |
41 | } else { | |
42 | $len = -1; | |
43 | } | |
44 | } else { | |
45 | $len = -1; | |
46 | } | |
47 | if ($len > 0) { | |
48 | $q = "SELECT MAX(SUBSTRING(thread FROM ".($len+2)." FOR 4)) AS max "; | |
49 | } else { | |
50 | $q = "SELECT MAX(SUBSTRING(thread FROM 1 FOR 4)) AS max "; | |
51 | } | |
52 | $q.= "FROM prispevky WHERE id_diskuse = '$id_diskuse'"; | |
53 | if ($len > 0) { | |
54 | $q.= " AND SUBSTRING(thread FROM 1 FOR ".$len.") = '$thread'"; | |
55 | } | |
56 | $r = $this->executeQuery($q); | |
57 | $r->next(); | |
58 | $s = $r->getRecord(); | |
59 | $telo = wordwrap($telo,50," ",1); | |
60 | $newthread = $thread.($thread?".":"").sprintf("%04s",$s[max]+1); | |
61 | if ($posli_email) { | |
62 | $posli_email = 'ano'; | |
63 | } else { | |
64 | $posli_email = 'ne'; | |
65 | } | |
66 | $telo = AddSlashes(EregI_Replace("((( )|(\n)|(^))+)(http://|ftp://|https://)([[:alnum:]][^,[:space:]]*)","\\2<a target='_blank' href=\"\\6\\7\">\\6\\7</a>",$telo)); | |
67 | $titulek = AddSlashes(EregI_Replace("((( )|(\n)|(^))+)(http://|ftp://|https://)([[:alnum:]][^,[:space:]]*)","\\2<a target='_blank' href=\"\\6\\7\">\\6\\7</a>",$titulek)); | |
68 | ||
69 | $q = "INSERT INTO prispevky (id_diskuse,vlozeno,jmeno,email,titulek,telo,thread,email_upozorneni,znamka,duplicita) "; | |
70 | $q.= "VALUES ('$id_diskuse', NOW(), '$jmeno', '$email', '$titulek', '$telo', '$newthread', '$posli_email', '$znamka', '$nodouble')"; | |
71 | $this->executeUpdate($q); | |
72 | $dskn=$this->getLastInsertId(); | |
73 | $q="UPDATE user_discussion set submission_count=submission_count+1 where user_id!='$user_id' and discussion_id= '$id_diskuse'"; | |
74 | $this->query($q); | |
75 | if (!$dennik) $q ="UPDATE articles set prispevky=prispevky+1 where id_diskuse='$id_diskuse'"; | |
76 | else $q ="UPDATE dennik set prispevky=prispevky+1 where id_diskuse='$id_diskuse'"; | |
77 | $this->executeUpdate($q); | |
78 | $this->updatePostsCount($id_diskuse); // prepocitat_pocet_prispevku | |
79 | ||
80 | $r = $this->getEmailSubscriptions($id_diskuse); | |
81 | if ($r->getNumRows()>0) { | |
82 | $link="?action=".$_GET['action']."&node_id=".$_GET['node_id']; | |
83 | $mailbody="Do diskusie pribudol novy prispevok.<br>Od: <i>$jmeno</i><br><b>$telo</b><br><br>Zareagovat mozes <a href='".SCRIPT.$link."'>tu</a>.<br>"; | |
84 | while ($r->next()) { | |
85 | $row = $r->getRecord(); | |
86 | ||
87 | if ($user_id != $row["user_id"]) { | |
88 | global $kyberia; | |
89 | ||
90 | $kyberia->ubikMail($row['user_id'],$mailbody); | |
91 | //mail($row["email"],'prispevok do fora na kyberia.sk',$mailbody,"From: forum@kyberia.sk\nReturn-path: forum@kyberia.sk"); | |
92 | } | |
93 | } | |
94 | } | |
95 | } | |
96 | } | |
97 | ||
98 | function getEmailSubscriptions($id_diskuse) { | |
99 | $q = "SELECT prispevky.jmeno,user.id as user_id FROM prispevky left join user on prispevky.jmeno=user.login WHERE id_diskuse = '$id_diskuse' AND email_upozorneni = 'ano' GROUP BY user.login"; | |
100 | ||
101 | return $this->executeQuery($q); | |
102 | } | |
103 | ||
104 | function getDiskuseInfo($id_diskuse) { | |
105 | $set = $this->executeQuery("SELECT * FROM diskuse WHERE id_diskuse = '$id_diskuse'"); | |
106 | $set->next(); | |
107 | return $set->getRecord(); | |
108 | } | |
109 | ||
110 | function updatePostsCount($id_diskuse) { | |
111 | $r = $this->executeQuery("SELECT COUNT(*) AS pocet FROM prispevky WHERE id_diskuse = '$id_diskuse'"); | |
112 | $r->next(); | |
113 | if ($r->getInt("pocet") > 0) | |
114 | { | |
115 | $this->executeUpdate("UPDATE diskuse SET pocet_prispevku = '".$r->getInt("pocet")."' WHERE id_diskuse = '$id_diskuse'"); | |
116 | } | |
117 | } | |
118 | ||
119 | function getDiskuses($parameters = "") { | |
120 | $q = "SELECT id_diskuse,kat,titulek,url,pocet_prispevku FROM diskuse"; | |
121 | if ($parameters[where]) $q.= " WHERE ".$parameters["where"]; | |
122 | if ($parameters[order]) $q.= " ORDER BY ".$parameters["order"]; | |
123 | if ($parameters[limit]) $q.= " LIMIT ".$parameters["limit"]; | |
124 | return $this->executeQuery($q); | |
125 | } | |
126 | ||
127 | function getPosts($id_diskuse,$prispevky = "") { | |
128 | $q = "SELECT user.login as login, prispevky.*,DATE_FORMAT(prispevky.vlozeno,'%e.%c. %H:%i') AS f_vlozeno FROM prispevky LEFT join user ON prispevky.jmeno=user.login WHERE id_diskuse = '$id_diskuse' "; | |
129 | if (is_array($prispevky)) { | |
130 | $q.= " AND ( 1=0 "; | |
131 | while (list($x,$a) = each($prispevky)) { | |
132 | $q.= "OR id_prispevku = '$a' "; | |
133 | } | |
134 | $q.= " ) "; | |
135 | } | |
136 | if ($prispevky) $q.=" AND id_prispevku='$prispevky' "; | |
137 | $q.= "group by id_prispevku ORDER BY CONCAT(thread,vlozeno) DESC"; | |
138 | return $this->executeQuery($q); | |
139 | } | |
140 | ||
141 | function createDiskuse($titulek="title",$kat = "") { | |
142 | $q = "INSERT INTO diskuse (id_diskuse,kat,zalozeno,titulek) VALUES (0,'$kat',NOW(),'$titulek')"; | |
143 | $this->query($q); | |
144 | return ($this->getLastInsertId()); | |
145 | } | |
146 | ||
147 | function getPostsCount($id_diskuse) { | |
148 | $row = $this->getDiskuseInfo($id_diskuse); | |
149 | return $row["pocet_prispevku"]; | |
150 | } | |
151 | ||
152 | function getTitulek($id_diskuse,$thread_prev) { | |
153 | $q = "SELECT titulek FROM prispevky WHERE id_diskuse = '$id_diskuse' AND id_prispevku = '$thread_prev'"; | |
154 | $r = $this->executeQuery($q); | |
155 | $r->next(); | |
156 | return $r->getString("titulek"); | |
157 | } | |
158 | ||
159 | } | |
160 | ?> |