Kyberia v1.0
[mirrors/Kyberia-bloodline.git] / inc / diskusia.inc
CommitLineData
bc13d5d6
H
1<?php
2// requires: Email, String
3
4
5include_once("database.inc");
6include_once("string.inc");
7include_once("email.inc");
8class 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?>
This page took 0.201079 seconds and 4 git commands to generate.