From 9e2e4bad8dca42ba174991ec36a8091b116860d3 Mon Sep 17 00:00:00 2001 From: Peter Rotich <protich@gmail.com> Date: Fri, 23 Mar 2012 18:06:42 -0400 Subject: [PATCH] Client interface and related changes --- assets/default/css/theme.css | 11 +- attachment.php | 69 +++-------- client.inc.php | 4 +- images/bg.gif | Bin 49 -> 0 bytes images/fibres.png | Bin 8508 -> 0 bytes images/home.gif | Bin 221 -> 0 bytes images/icons/attachment.gif | Bin 235 -> 0 bytes images/icons/refresh.gif | Bin 248 -> 0 bytes images/icons/thread.gif | Bin 274 -> 0 bytes images/icons/ticket.gif | Bin 210 -> 0 bytes images/icons/ticket_source_email.gif | Bin 230 -> 0 bytes images/icons/ticket_source_other.gif | Bin 210 -> 0 bytes images/icons/ticket_source_phone.gif | Bin 228 -> 0 bytes images/icons/ticket_source_web.gif | Bin 226 -> 0 bytes images/lipsum.png | Bin 7419 -> 0 bytes images/logo.png | Bin 6894 -> 0 bytes images/logo2.jpg | Bin 11227 -> 0 bytes images/logout.gif | Bin 338 -> 0 bytes images/my_tickets.gif | Bin 126 -> 0 bytes images/new_ticket.gif | Bin 120 -> 0 bytes images/new_ticket_icon.jpg | Bin 22885 -> 0 bytes images/poweredby.jpg | Bin 2858 -> 0 bytes images/rainbow.png | Bin 17265 -> 0 bytes images/refresh_btn.gif | Bin 929 -> 0 bytes images/ticket_status.gif | Bin 123 -> 0 bytes images/ticket_status_icon.jpg | Bin 22667 -> 0 bytes images/verticalbar.jpg | Bin 20111 -> 0 bytes images/view_closed_btn.gif | Bin 618 -> 0 bytes images/view_open_btn.gif | Bin 578 -> 0 bytes include/class.client.php | 89 +++++++++----- include/class.config.php | 36 ++++-- include/class.faq.php | 2 +- include/class.file.php | 1 + include/class.filter.php | 2 +- include/class.nav.php | 19 ++- include/class.staff.php | 11 +- include/class.ticket.php | 70 ++++++++--- include/class.topic.php | 4 + include/client/header.inc.php | 10 +- include/client/kb-category.inc.php | 23 ++-- include/client/knowledgebase.inc.php | 5 +- include/client/open.inc.php | 89 +++++++++----- include/client/tickets.inc.php | 172 +++++++++++++++++++++++++++ include/client/view.inc.php | 157 ++++++++++++++++++++++++ include/staff/tickets.inc.php | 6 +- index.php | 9 +- js/osticket.js | 80 +------------ login.php | 7 +- open.php | 17 ++- secure.inc.php | 2 +- tickets.php | 71 ++++++----- view.php | 17 +++ 52 files changed, 672 insertions(+), 311 deletions(-) delete mode 100644 images/bg.gif delete mode 100644 images/fibres.png delete mode 100644 images/home.gif delete mode 100644 images/icons/attachment.gif delete mode 100644 images/icons/refresh.gif delete mode 100644 images/icons/thread.gif delete mode 100644 images/icons/ticket.gif delete mode 100644 images/icons/ticket_source_email.gif delete mode 100644 images/icons/ticket_source_other.gif delete mode 100644 images/icons/ticket_source_phone.gif delete mode 100644 images/icons/ticket_source_web.gif delete mode 100644 images/lipsum.png delete mode 100644 images/logo.png delete mode 100644 images/logo2.jpg delete mode 100644 images/logout.gif delete mode 100644 images/my_tickets.gif delete mode 100644 images/new_ticket.gif delete mode 100644 images/new_ticket_icon.jpg delete mode 100644 images/poweredby.jpg delete mode 100644 images/rainbow.png delete mode 100644 images/refresh_btn.gif delete mode 100644 images/ticket_status.gif delete mode 100644 images/ticket_status_icon.jpg delete mode 100644 images/verticalbar.jpg delete mode 100644 images/view_closed_btn.gif delete mode 100644 images/view_open_btn.gif create mode 100644 include/client/tickets.inc.php create mode 100644 include/client/view.inc.php diff --git a/assets/default/css/theme.css b/assets/default/css/theme.css index dde40189e..c6a6242df 100644 --- a/assets/default/css/theme.css +++ b/assets/default/css/theme.css @@ -495,7 +495,7 @@ body { #ticketForm div.error label, #clientLogin div.error label { color: #a00; } -#ticketForm p, #clientLogin p { +#clientLogin p { clear: both; text-align: center; } @@ -646,7 +646,7 @@ a.refresh { #ticketThread table th { text-align: left; border-bottom: 1px solid #aaa; - font-size: 11pt; + font-size: 12px; padding: 5px; } #ticketThread table td { @@ -659,7 +659,7 @@ a.refresh { background: #ddd; } #ticketThread .info { - padding: 5px; + padding: 2px; background: #f9f9f9; border-top: 1px solid #ddd; height: 16px; @@ -667,16 +667,13 @@ a.refresh { } #ticketThread .info a { display: inline-block; - margin: 5px 20px 5px 0; + margin: 5px 10px 5px 0; padding-left: 24px; height: 16px; line-height: 16px; background-position: 0 50%; background-repeat: no-repeat; } -#ticketThread .info .pdf { - background-image: url('../images/filetypes/pdf.png?1319636863'); -} #reply { margin-top: 20px; diff --git a/attachment.php b/attachment.php index 2446f2dc5..819ff5863 100644 --- a/attachment.php +++ b/attachment.php @@ -15,57 +15,22 @@ vim: expandtab sw=4 ts=4 sts=4: **********************************************************************/ require('secure.inc.php'); -//TODO: alert admin on any error on this file. -if(!$thisclient || !$thisclient->isClient() || !$_GET['id'] || !$_GET['ref']) die('Access Denied'); +require_once(INCLUDE_DIR.'class.attachment.php'); +//Basic checks +if(!$thisclient + || !$_GET['id'] + || !$_GET['h'] + || !($attachment=Attachment::lookup($_GET['id'])) + || !($file=$attachment->getFile())) + die('Unknown attachment!'); + +//Validate session access hash - we want to make sure the link is FRESH! and the user has access to the parent ticket!! +$vhash=md5($attachment->getFileId().session_id().$file->getHash()); +if(strcasecmp(trim($_GET['h']),$vhash) + || !($ticket=$attachment->getTicket()) + || !$ticket->checkClientAccess($thisclient)) + die('Unknown or invalid attachment'); +//Download the file.. +$file->download(); -$sql='SELECT attach_id,ref_id,ticket.ticket_id,ticketID,ticket.created,dept_id,file_name,file_key,email FROM '.TICKET_ATTACHMENT_TABLE. - ' LEFT JOIN '.TICKET_TABLE.' ticket USING(ticket_id) '. - ' WHERE attach_id='.db_input($_GET['id']); -//valid ID?? -if(!($res=db_query($sql)) || !db_num_rows($res)) die('Invalid/unknown file'); -list($id,$refid,$tid,$extid,$date,$deptID,$filename,$key,$email)=db_fetch_row($res); - -//Still paranoid...:)...check the secret session based hash and email -$hash=MD5($tid*$refid.session_id()); -if(!$_GET['ref'] || strcmp($hash,$_GET['ref']) || strcasecmp($thisclient->getEmail(),$email)) die('Access denied: Kwaheri'); - - -//see if the file actually exits. -$month=date('my',strtotime("$date")); -$file=rtrim($cfg->getUploadDir(),'/')."/$month/$key".'_'.$filename; -if(!file_exists($file)) - $file=rtrim($cfg->getUploadDir(),'/')."/$key".'_'.$filename; - -if(!file_exists($file)) die('Invalid Attachment'); - -$extension =substr($filename,-3); -switch(strtolower($extension)) -{ - case "pdf": $ctype="application/pdf"; break; - case "exe": $ctype="application/octet-stream"; break; - case "zip": $ctype="application/zip"; break; - case "doc": $ctype="application/msword"; break; - case "xls": $ctype="application/vnd.ms-excel"; break; - case "ppt": $ctype="application/vnd.ms-powerpoint"; break; - case "gif": $ctype="image/gif"; break; - case "png": $ctype="image/png"; break; - case "jpg": $ctype="image/jpg"; break; - default: $ctype="application/force-download"; -} -header("Pragma: public"); -header("Expires: 0"); -header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); -header("Cache-Control: public"); -header("Content-Type: $ctype"); -$user_agent = strtolower ($_SERVER["HTTP_USER_AGENT"]); -if ((is_integer(strpos($user_agent,"msie"))) && (is_integer(strpos($user_agent,"win")))) -{ - header( "Content-Disposition: filename=".basename($filename).";" ); -} else { - header( "Content-Disposition: attachment; filename=".basename($filename).";" ); -} -header("Content-Transfer-Encoding: binary"); -header("Content-Length: ".filesize($file)); -readfile($file); -exit(); ?> diff --git a/client.inc.php b/client.inc.php index 5461bd2f7..b714e93b4 100644 --- a/client.inc.php +++ b/client.inc.php @@ -51,7 +51,7 @@ require_once(INCLUDE_DIR.'class.dept.php'); //clear some vars $errors=array(); $msg=''; -$thisclient=null; +$thisclient=$nav=null; //Make sure the user is valid..before doing anything else. if($_SESSION['_client']['userID'] && $_SESSION['_client']['key']) $thisclient = new ClientSession($_SESSION['_client']['userID'],$_SESSION['_client']['key']); @@ -60,6 +60,8 @@ if($_SESSION['_client']['userID'] && $_SESSION['_client']['key']) if($thisclient && $thisclient->getId() && $thisclient->isValid()){ $thisclient->refreshSession(); } +/* Client specific defaults */ +define('PAGE_LIMIT',DEFAULT_PAGE_LIMIT); $nav = new UserNav($thisclient, 'home'); ?> diff --git a/images/bg.gif b/images/bg.gif deleted file mode 100644 index e20f31775822d9b0a7a01ddaf38cb1f48a60e6f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49 zcmZ?wbhEHbWMp7un8?8J<;$1<|NsAEWMW`oQ2fclBEs;WL5G2XfdM4Xz{KRj$Y2cs DcQXt9 diff --git a/images/fibres.png b/images/fibres.png deleted file mode 100644 index 7ad3ac27f71bdf17f637ffae3d86d36e24359764..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8508 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 YX;?>imFag*1_lNOPgg&ebxsLQ0Kx260{{R3 diff --git a/images/home.gif b/images/home.gif deleted file mode 100644 index b25c0781dd0b8f66d4a9271b662061b54d7a9c4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 221 zcmZ?wbhEHb6ky<IIKlt||NsAg^7zTuuispHPBC~jFcj_i`03-zS1+GDdHnb9-=9B! ze*gac^XJd+-@kwL>ech-&!0Ve_W1GRhYuf4m@wi0|NkH(aAU=vEQ|~cq6|79B_KN) zSfdhD`$7XJXhaGenYpS(arb+z`zAKG-QtezJ=x-}?8U;#_|d%EVUECwO&6*a<ZirK y<xyy%@!;KccS{qEHJ=(MY0Xc~GV3~&5a2VVaqr%MJKQ2%+(jyhZHdZ?4AuZA3}C?k diff --git a/images/icons/attachment.gif b/images/icons/attachment.gif deleted file mode 100644 index 4400e61e9812a3b2a070c89fc6fce7489c104e17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 235 zcmZ?wbhEHb6krfwI3mxmX3d)1+}xs~qJswyMny%1hKA0cKY!xHiCtY?t*xz%jg5;J zFV4!!N=;1-2ng7`d2?@XZ(?F%U0q#yd3kAR>5LgOX3d&4ZQ8Voii&O9wk=({^vIDT zyLRo`zkmOKFi`x-!pOiN&!EG=z`y{qlYuqkfqLJf^hqyX<TgKCy5xG)&5wuT(r3y| zxMO(kA)`U2$bn1Di~%|-a?B=d6Li$(ak<X^qN6drf&EZJN3fjBVdYMZYcE`m7%N_x ntjc;&S>ww`RS8x#M!p7BCPqe{HUllb3GEs-eN(3?GFSru2fAg) diff --git a/images/icons/refresh.gif b/images/icons/refresh.gif deleted file mode 100644 index 8268958a19e016741fffb8309b1174e548f5ce19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 248 zcmZ?wbhEHb6krfwI3mxm^U>tA=}!Ot{k{Bd``)Khx8It&_VmoW1)f=RozrKyWX<x} zerNK$J)K=w9PWKO6F1Rj%k`-pSL}~|nAv{8VcU)A9Ty!kW;q>xH{;r;-8&ylx%_#< z)*Dm*{reZtuKgbj6o0ZXGBC(9=rAxaFo5i2U@d*1-WT_>^QlLbmw?98;#G5+6PVj% z-KKZR_@^^4gh+As<cGa7unIV(;`E`g!Kr&?v0}=!B`xY4y3M{Xw!FM-5^eh^)V+A3 zj;)xsmqw?LMykKPuMjt{sH=b-QxO|GE332s7hkxRoRN;6f$?;oY^{Zh7ArDX0|4b- BZEpYo diff --git a/images/icons/thread.gif b/images/icons/thread.gif deleted file mode 100644 index bffd6b0b3cf5ce0cadfc38683ee7fb3fa0a5c82a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 274 zcmZ?wbhEHb6krfwI3mw*?9ty>%M|QAqIcZ>TRL@f$Hog64^Dpl;oH^a5w8x#O*;1D z-SbOf*`1GGeO`9y_to1^K7RZC^7e*(H(&hw`C{ipkK^0g)?R#kdqdLxF4g%*ZrnXP z|G~}Ur_WsMPZIeL28usf7#SGk8FUyJ7#KiyGO+e9P_K%}?2CV;8Zv#4<DI~`UzO9Z zzx~s9Wz`+;q>U+DEh+-ry&|OAGZrsQxH4m6$5VzEObT61SDR;Kn22?hGi3Ike%`ao zdWG}7H0Q*)atj3}rBt@6tlB!>#uRQ*QI?o?zRsqeKK6DluE{Ba(t<1kGq~8hIF@nn d@CyV7v&(cT%dzlmVcNDW%*=e_9wkKvYXE34gS-F$ diff --git a/images/icons/ticket.gif b/images/icons/ticket.gif deleted file mode 100644 index 4304ea7955091c46d9fe570faefc643773a5c1de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 210 zcmZ?wbhEHb6krfwIKlt||NsAg@%+WpCr=+gdi?b1GxzxBXV0HMfARe3v!{=rJdSKt zfBEvo)2B~fy?XWX<;&;KpFex{?8%cSj~_q&|NlQoKVGc(lZBCiL4-jEqzYsw1FOG+ zYF~<_p4+N*OCIhqcq6q~`naA;Fx#eoS`!~S>PX4A&TV9jQJvDUqNGbggVi^b*=woS jf}2yEDm7-GZ|^h`GF#Ewx}zpe;Z4Qc-I@Aaj11NQ`$JgQ diff --git a/images/icons/ticket_source_email.gif b/images/icons/ticket_source_email.gif deleted file mode 100644 index 6b57605d47b7fc2e4729b5a6602bdf4768ad749f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 230 zcmZ?wbhEHb6krfwIKlt||NsAg`sC^3M~}aJ`TF$fGxzxB&3n&0d;a|Ex3AA%Jb(J^ z>EkDlBU{y<K7I0iitM*<-(J0X_44J*=g*%%dGh4(<H!I1{|A|Z11tVyVPs$sW6%M~ zgY0BrO<thdmttw=wrbrH!Mz4=q!vpbf9De2w&|bNL`NqbDb?1wj6xY^{Hu??6R3z- z+t`w%y}(rdT)xB84^68hK7=_Mh96B3JzUGyEcl~K`fuB^FJeiFEUc}p%+~SYg*wWK KerjTh4AuZTKV;_s diff --git a/images/icons/ticket_source_other.gif b/images/icons/ticket_source_other.gif deleted file mode 100644 index 4304ea7955091c46d9fe570faefc643773a5c1de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 210 zcmZ?wbhEHb6krfwIKlt||NsAg@%+WpCr=+gdi?b1GxzxBXV0HMfARe3v!{=rJdSKt zfBEvo)2B~fy?XWX<;&;KpFex{?8%cSj~_q&|NlQoKVGc(lZBCiL4-jEqzYsw1FOG+ zYF~<_p4+N*OCIhqcq6q~`naA;Fx#eoS`!~S>PX4A&TV9jQJvDUqNGbggVi^b*=woS jf}2yEDm7-GZ|^h`GF#Ewx}zpe;Z4Qc-I@Aaj11NQ`$JgQ diff --git a/images/icons/ticket_source_phone.gif b/images/icons/ticket_source_phone.gif deleted file mode 100644 index b9aa8ed58a2993eab69a1c83fba78bb627e9004f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 228 zcmZ?wbhEHb6krfwIKlt||NsAg@%+WpCr=+gdi?b1GxzxBXV0HMfARe3v!{=rJdSKt zfBN*v@Aa|&${Ak0diC<<%jeIZKY8-x@#Dt}7A*Mx|3AnG+*t7^3nK%AD1#123CK<c z*2DzWz7$J6w^i$w2(tL=*t6NP`F=k4MOad4PO?PAMy<w$Mhux|+zu)eGkjcP^_7x# z%f_(kz3M8gRh4CY7bbM{<q<8{-3wjh-+lMoJ<mk^tD_5}NV*G4pr~7fzNT8Asv?6m E04&p582|tP diff --git a/images/icons/ticket_source_web.gif b/images/icons/ticket_source_web.gif deleted file mode 100644 index 1b7a5b909075fb879056d15468e407df21e0507d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 226 zcmZ?wbhEHb6krfwIKlt||NsAg@%+WpCr=+gdi?b1GxzvrhPCgXJ%9fE#q+1no<4r^ zII>m!<;xdOpFVl@>eb7aFP}eu{^ZG%$B!TX|NkGPA1_w?$->CMAi|&nQU$V;fi+%1 zwJ*ie$ZgfSB_H<~ypdWgeLT-4*lp84t%;0II#P<Qa~CqkXin)|Q8G(HgVlFxvN%V; z?jTOx0t*(N^i7sqAIv%#Yn)_PIQ#wUkk}RP#Q(9fSc}xArt7H0wlJzGDKc0C0KX7h Aj{pDw diff --git a/images/lipsum.png b/images/lipsum.png deleted file mode 100644 index feb6a95fba027cb3d54883fc64ade1294c74bd09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7419 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 N44$rjF6*2UngBPoFV+A6 diff --git a/images/logo.png b/images/logo.png deleted file mode 100644 index 256344139522f7f8bc65b36e1ef0890e0fa3cf52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6894 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 diff --git a/images/logo2.jpg b/images/logo2.jpg deleted file mode 100644 index 16bc12ed36e707ace9d2d9e5443cc6d3a895711b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11227 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 H|K9`v=}4ib diff --git a/images/logout.gif b/images/logout.gif deleted file mode 100644 index 6dd774f09e48292379250ac0f1be17ccdb30baec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 338 zcmZ?wbhEHb6ky<IxXJ(m|NsAgE2Hw{@ss=a?%%n6=gQ?PM~@smbnwvQ$4?$TdVKlv zmGkE>oH}*dJ-+qP<HvXJ-8+Bb!l~1zuiv<S_1e|TS1zAEbNa-|6VIMKy?_7S_3PKJ zUcGYY(7`8<AK$rs`{<D)uV24@_Uzf?$B*ydzkl!Ey*qdA+_-V$+O=y}uU@@y;llaz z=g*xxcjnBQ)2B}#J$m&2|NkHdk%AR}vM@3*=ribmG=coYz?OetdVz<IRD9o(WDNlc zSrOr^tvObmd{<UDJ9w_~pUg4EpmF|+GYKVi>jH#df9h~K`O>3zj-kF4PZ+-{w^*$c zpH7&9qJV~uUM-(|qXZW#n=U&?F<+RvoC>SDrZ}HWagm^?G@BN$cdf67*A^E?25SKP CnVP8p diff --git a/images/my_tickets.gif b/images/my_tickets.gif deleted file mode 100644 index ee2d25bbedd01ba5a64e9a66f5fc72b7b876f10c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126 zcmZ?wbhEHb6krfwSi}GV|NsAYk8gG9In}=R;`Qs-|NsBbz`&sRlZBCifsH{2qynUt zf!R4@*QI;fQi7{m-|Q4zk#Oy4rqpv$SK+W#!6hP!!m;gKYFl@i$(-3TTXXxaJuJs1 bCbTtMcCAs)I9bxLK%VoZ;>#*!P6lfLK20x1 diff --git a/images/new_ticket.gif b/images/new_ticket.gif deleted file mode 100644 index 32d9636e71fa848c3b7d0f0d8eb559b78465ef22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 120 zcmZ?wbhEHb6ky<ISi}GV|NsAYk8f??d$IH`Lu9M^|Ns9P7#I|PvM@3*urcU>RDjen zFxzJAx}#;_mhQ5{!Xdr=ztr^9CX2Y#%e8SU=7lR7UyBr|*tq7tFU!vMx8;g2v<}A$ Uoc#2o$2!8Htj1$qFAIY;0EovdRsaA1 diff --git a/images/new_ticket_icon.jpg b/images/new_ticket_icon.jpg deleted file mode 100644 index 855eef0644245185b7b2f700d35d6a953aa65cd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22885 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 K{XOpW|C<2KSBg9U diff --git a/images/poweredby.jpg b/images/poweredby.jpg deleted file mode 100644 index c98eb7d679b09975599711643cfcd3549c0540f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2858 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 diff --git a/images/rainbow.png b/images/rainbow.png deleted file mode 100644 index c08f52edb522e5ec42c237994622f3b8520b428b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17265 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 Hr-UW|xmjZG diff --git a/images/refresh_btn.gif b/images/refresh_btn.gif deleted file mode 100644 index 8a33b22d9a9b026391e38a8bbb0d6834eb789a93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 929 zcmZ?wbhEHbjAIaHc*Xz%|NsA=FmaMn(nOc4MWJo0(k5*#pSSzW?Pu>ke`oM&5De=u z&YRh>`pC@fXI34)y8HayyU*YCPM+2=accX7DdvmL+AP0lyZoa2hFcyWbkle1z3{!y z!uLLn+<Gf`*>V55d%~6;30Zg`X8F;~d7IOxEGwM1p>o-dh6QVNW*s)1cS3LKUcJ6e z=8MnRF27(gbD!gyt4?dK+ATWnvGJzk!ec&L@A_`N8?@_D(9Va!yB@ku-|oBOwDZLE zu2VL8&e`QTeQV&N12Jn)$IsuMv-Vi-iv0zv4#f7%OP#trXX5<)DU0$ZEvT8lrf&AK zlKz=ZGZ!^Zp4B{MR@0;zjr~))X3TA$GP7mkw7x0RdL~Wjn>gvuukZi<{rmIh&+p&A zfBpLP^XJd+-@kwR_U+TBPai&fc=ztz)2B}#KYsk+!Gk+@?%ck8`{vD?SFc{Zbm`KC z3m49xKY!-TnbW6FpE`Bw*s)^=4<0;l;K06p`*!Z!xq0*EjT<+vU%!6s+O=!etXaK! z^@<fM7A{;kd-m-A|NkrgWMO1rsAtdt#RMo$7})<eFsA0Uw6?W(bar+3^!D|oHf6;# zPMtP=#>`o>=ggfqe{ND%^OPBB#ii*BR<BvRZbnkejLa$@7iW!<nDu-1?ql3Etsq2E z%G6v|y=4EHvvUtJ=KGt78ycHg$^<8`VQ0C|!p=E|gN1E9%ejMT!unc9O7c?D7Oq7z zBImI13jAe#Is2Pp#Zrg4v%ShH)@Ud)@XHHHm{oi@+{Mu1&C0Bjk)Y?qz|PF`r8?k2 z3=8w`W2_Y)-a4wX3UG-O-1HWksiw2)$VDLrpZT(qW*#3Nu}*RI=4A_+#JTWb6N`eY zRqY3bgA8>V%q|fQrH$^aJhQX{etKP#QWm)p@~X(SUqC|Q-<&ragRTfOvQ~%+NJuzl zsxtF2$>bI+nABW6mCeP$;K0)33|w;ZPgS*hrWj1Spz@LNkW-JK<Fq9|OQw80z##DH zQLe&|B<5?3QY+dd9~@|6WjmId6Z<)V;mq_~GJzKlx$+3-_Qb`UOpsw>o2Ih6&DWwz zwVz*N!#&%bYu@`re|ixR$k;JY_mr+^Lv85mhVJIX{Jk6xS2jOmyym>^%3aYdJ{c|( zo45jcrp2jpR){)Sa_KNc*G#i9Xkh9MEn<l4DBM1$eD0l#hxyAblpl5cXY6PZ%II04 wWZW`k(Mhq0gvNVaCcA{ZC9^sXo)j~__TsU+IoGEX6I{eHRVGekVPdcb04mYWsQ>@~ diff --git a/images/ticket_status.gif b/images/ticket_status.gif deleted file mode 100644 index 0775549996b70c79816e455e6850d1abf0e376ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123 zcmZ?wbhEHb6ky<ISi}GV|NsAYk8f??d-3}e+5epk|NsAIU|>-E$->CMz{a2hQUOxS z!0eE*>yDOzTe`~*3y1Xf|FbScNNzJsiCptWxaNM<+B``S^SCQo)w>P)`@=Tg<*;PZ YKb$4n%skWhXwEyWNoz7DGB8*J08msc@Bjb+ diff --git a/images/ticket_status_icon.jpg b/images/ticket_status_icon.jpg deleted file mode 100644 index bf27b1f904418c311f05b27f118a55622be51b47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22667 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 diff --git a/images/verticalbar.jpg b/images/verticalbar.jpg deleted file mode 100644 index 2678913d2cdb9b8ec861e71396fcb92a552ff13a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20111 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 diff --git a/images/view_closed_btn.gif b/images/view_closed_btn.gif deleted file mode 100644 index 6cd8f080a9007a85a2c0f08a6133f54a0253d6e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 618 zcmZ?wbhEHbjAIaHIKlt||NsA2N}A|WwJ5Z0RobM@<@0u*x&7?j=kE+&4T51E#(6V4 zRv($U{miPvS9hPkd-wUf@87?F`0(NR^XHErKfZeP>e;hr&zw24ef##six>a@{~u%` z5?1`l!pOiN#h?Qc1KG*I`ai)THYIaj#;SEWuXjy}aCOYRU$O3e&HMkho~bT}Q~ORR z7o5zoViuaDH#yjD{f*^Uruif>g=8@}9Waz>b2d95pu*B~>)?icOLK3}`mxOA7E6{X z2bTalM<g4IKr(kBKXa)WGk=A6LacjyqOfo^533pP1m14OMJ!YJr{r`C@R|!SwVS3e z_HSWj=Gn~0%*@xs!_2yrgKgL3sR^Np?!u?HaBXH@f0BorkB^I=FI9lEkf+3KzSZ_- z9)6Yy0$ev+7+F^ETw*-@igPt%P>9$+vC~Ecrxv_qYYcyzr6L@#ig5+YGPWs_0xQ^> zEiCga{{(w5YzSk@5m6A`)W%TzXU20*md`o<M;O=~ZZ4j(AkEi<MMmU;*@-h2GTZgM z7Ns~eHZgI?-B>e|Z<5oLX}|t*8w3O&lx|_L<qgnhXmaM|X^9aKKHfOVOw57fSMX~k z_Fg`n4I4f3qE=j3wI!$X@PVeC(cB8I4hnosj1!J99X5QBt{44g+eXft2?rM*VtmkJ zDY;<c%9>M4{xN%em?XOEL0gq>fbdEut6L=s5)Bd`7e+J6>{u9a*dg1JSxDnRg~E>p z){59q52Z6t-s(DAzC`Bj`7NJb+}OBe&ZNE7Dnfz=svrISd5Lg|s!WNGf4-+f{KMnZ L^X2W`I2fz}wM6}4 diff --git a/images/view_open_btn.gif b/images/view_open_btn.gif deleted file mode 100644 index 8ed6be9ce8159b20abfb0c9ea69b5235a4903b33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 578 zcmZ?wbhEHbjAIaHIKlt||NsAYk8gG9Ii-{|(WPopXxpl^Nt?^(?LKq+*}Ko*8N3<< z!#a%fW_GMTGIRTxRfn(cK7aS_^LOogFMj|2{lkY3j~_q2e*OB@t5?sQIrIPje~^ht zSn($dBLjmJgAPaxWG4gb|Ad6pl+1Y<tJdYb-ZiZw&@uOZ#k%)3@Bi=RN^?2P*>^&@ z;AD;!v*;wh3Bh*jZ!Etu&4-UEM9VMffTco*i`fGO9SM%3RomBg=6fyaTd+=3LWr{{ zf`d0ph@H3CDk#<?K2cn}+?<cyjGvW}U&wSOn;@g$!koE6{N_SD&8Dm?1T$Fq%mmri z&EsU>WYZg(=q{dMwW@hL>q0(W0Rf&3sY2YF`8dq^r(aFw<KYwJ-OS0ue|IzMsWU5j zBo7I{5kAB;iD`m0+lp0d7qZNqJ)L_tYbw{5l@AlH^>WOTnZl{i=+MCYLW*t2(PIgH zac&KboNg;;sj*z|V~uc_v_y?rfN#IS@8n}iyd0dmzqA7;J#h(QeYs-srE{@19-qq? z9yRM9(6TR*Qz*E>pwh>}moGEHO_#xYikVgCniat}MEYbZMS?=U9AISS;yDxK@IaZ7 z!;&lJc1g(W1<Y6EOkO;3xO{ES%WGdt)cJen$zIUu3MpuKax?78jF%p#7dYIu<GO2; zb~vH&z-*S-dj}#^-z-uWQsQ}1wd;Dqp?3fCjC(q^2;SV`ep1cxV4%>Q1ODzC8x}f! Wczm$EyW-%Uou8kdO>SXeum%8np7E6c diff --git a/include/class.client.php b/include/class.client.php index f7ede15c5..e1057afa6 100644 --- a/include/class.client.php +++ b/include/class.client.php @@ -4,8 +4,8 @@ Handles everything about client - The class will undergo major changes one client's accounts are used. - At the moment we will play off the email + ticket ID authentication. + NOTE: Please note that osTicket uses email address and ticket ID to authenticate the user*! + Client is modeled on the info of the ticket used to login . Peter Rotich <peter@osticket.com> Copyright (c) 2006-2012 osTicket @@ -19,75 +19,104 @@ class Client { - var $id; var $fullname; var $username; - var $passwd; var $email; - - var $udata; var $ticket_id; var $ticketID; - function Client($email,$id){ + var $ht; + + + function Client($email,$id) { $this->id =0; $this->load($id,$email); } - function isClient(){ - return TRUE; - } + function load($id=0, $email='') { - function load($id,$email=''){ + if(!$id && !($id=$this->getId())) + return false; - $sql='SELECT ticket_id,ticketID,name,email FROM '.TICKET_TABLE.' WHERE ticketID='.db_input($id); - if($email){ //don't validate...using whatever is entered. + $sql='SELECT ticket_id, ticketID, name, email, phone, phone_ext ' + .' FROM '.TICKET_TABLE + .' WHERE ticketID='.db_input($id); + if($email) $sql.=' AND email='.db_input($email); - } - $res=db_query($sql); - if(!$res || !db_num_rows($res)) + + if(!($res=db_query($sql)) || !db_num_rows($res)) return NULL; - $row=db_fetch_array($res); - $this->udata=$row; - $this->id = $row['ticketID']; //placeholder - $this->ticket_id = $row['ticket_id']; - $this->ticketID = $row['ticketID']; - $this->fullname = ucfirst($row['name']); - $this->username = $row['email']; - $this->email = $row['email']; + $this->ht = db_fetch_array($res); + $this->id = $this->ht['ticketID']; //placeholder + $this->ticket_id = $this->ht['ticket_id']; + $this->ticketID = $this->ht['ticketID']; + $this->fullname = ucfirst($this->ht['name']); + $this->username = $this->ht['email']; + $this->email = $this->ht['email']; + + $this->stats = array(); return($this->id); } + function reload() { + return $this->load(); + } + + function isClient() { + return TRUE; + } - function getId(){ + function getId() { return $this->id; } - function getEmail(){ + function getEmail() { return $this->email; } - function getUserName(){ + function getUserName() { return $this->username; } - function getName(){ + function getName() { return $this->fullname; } + + function getPhone() { + return $this->ht['phone']; + } + + function getPhoneExt() { + return $this->ht['phone_ext']; + } function getTicketID() { return $this->ticketID; } + function getTicketStats() { + + if(!$this->stats['tickets']) + $this->stats['tickets'] = Ticket::getClientStats($this->getEmail()); + + return $this->stats['tickets']; + } + + function getNumTickets() { + return ($stats=$this->getTicketStats())?($stats['open']+$stats['closed']):0; + } + + function getNumOpenTickets() { + return ($stats=$this->getTicketStats())?$stats['open']:0; + } + /* ------------- Static ---------------*/ function lookup($id, $email) { return ($id && is_numeric($id) && ($c=new Client($id,$email)) && $c->getId()==$id)?$c:null; } - } - ?> diff --git a/include/class.config.php b/include/class.config.php index 1e3d7745f..37040ebca 100644 --- a/include/class.config.php +++ b/include/class.config.php @@ -32,17 +32,20 @@ class Config { $this->load($id); } - function load($id) { + function load($id=0) { + if(!$id && !($id=$this->getId())) + return false; - $sql='SELECT * FROM '.CONFIG_TABLE.' WHERE id='.db_input($id); - if($id && ($res=db_query($sql)) && db_num_rows($res)) { - $this->config=db_fetch_array($res); - $this->id=$this->config['id']; + $sql='SELECT * FROM '.CONFIG_TABLE + .' WHERE id='.db_input($id); + if(!($res=db_query($sql)) || !db_num_rows($res)) + return false; - return true; - } + + $this->config=db_fetch_array($res); + $this->id=$this->config['id']; - return false; + return true; } //Initialize some default values. @@ -52,10 +55,13 @@ class Config { } function reload() { - if($this->load($this->id)) - $this->init(); - } + if(!$this->load($this->getId())) + return false; + + $this->init(); + return true; + } function isHelpDeskOffline() { return !$this->isSystemOnline(); @@ -75,7 +81,7 @@ class Config { return '1.7 DPR'; } - function getSchemaVersion() { + function getSchemaSignature() { return $this->config['schema_signature']; } @@ -111,7 +117,7 @@ class Config { } function getId() { - return $this->config['id']; + return $this->id; } function getTitle() { @@ -145,6 +151,10 @@ class Config { function getPasswdResetPeriod() { return $this->config['passwd_reset_period']; } + + function showRelatedTickets() { + return $this->config['show_related_tickets']; + } function getClientTimeout() { return $this->getClientSessionTimeout(); diff --git a/include/class.faq.php b/include/class.faq.php index 99d6def27..7e23803dc 100644 --- a/include/class.faq.php +++ b/include/class.faq.php @@ -192,7 +192,7 @@ class FAQ { /* The h key must match validation in file.php */ $hash=$attachment['hash'].md5($attachment['id'].session_id().$attachment['hash']); if($attachment['size']) - $size=sprintf('(<i>%s</i>)',Format::file_size($attachment['size'])); + $size=sprintf(' <small>(<i>%s</i>)</small>',Format::file_size($attachment['size'])); $str.=sprintf('<a class="Icon file" href="file.php?h=%s" target="%s">%s</a>%s %s', $hash, $target, Format::htmlchars($attachment['name']), $size, $separator); diff --git a/include/class.file.php b/include/class.file.php index 91bd1cddc..b9bfbe1b7 100644 --- a/include/class.file.php +++ b/include/class.file.php @@ -138,6 +138,7 @@ class AttachmentFile { exit(); } + /* Function assumes the files types have been validated */ function upload($file) { if(!$file['name'] || !is_uploaded_file($file['tmp_name'])) diff --git a/include/class.filter.php b/include/class.filter.php index 9b9d72790..4f18e9651 100644 --- a/include/class.filter.php +++ b/include/class.filter.php @@ -260,7 +260,7 @@ class Filter { # Set owning department (?) if ($this->getDeptId()) $ticket['deptId']=$this->getDeptId(); # Set ticket priority (?) - if ($this->getPriorityId()) $ticket['pri']=$this->getPriorityId(); + if ($this->getPriorityId()) $ticket['priorityId']=$this->getPriorityId(); # Set SLA plan (?) if ($this->getSLAId()) $ticket['slaId']=$this->getSLAId(); # Auto-assign to (?) diff --git a/include/class.nav.php b/include/class.nav.php index 561fc963d..a3b719f08 100644 --- a/include/class.nav.php +++ b/include/class.nav.php @@ -263,15 +263,24 @@ class UserNav { $navs = array(); $user = $this->user; - $navs['home']=array('desc'=>'Support Center Home','href'=>'index.php','title'=>''); + $navs['home']=array('desc'=>'Support Center Home','href'=>'index.php','title'=>''); if($cfg && $cfg->isKnowledgebaseEnabled()) $navs['kb']=array('desc'=>'Knowledgebase','href'=>'kb/index.php','title'=>''); - $navs['new']=array('desc'=>'Open New Ticket','href'=>'open.php','title'=>''); - if($user && $user->isValid()) - $navs['tickets']=array('desc'=>'My Tickets','href'=>'tickets.php','title'=>''); - else + $navs['new']=array('desc'=>'Open New Ticket','href'=>'open.php','title'=>''); + if($user && $user->isValid()) { + if($cfg && $cfg->showRelatedTickets()) { + $navs['tickets']=array('desc'=>sprintf('My Tickets (%d)',$user->getNumTickets()), + 'href'=>'tickets.php', + 'title'=>'Show all tickets'); + } else { + $navs['tickets']=array('desc'=>'View Ticket Thread', + 'href'=>sprintf('tickets.php?id=%d',$user->getTicketID()), + 'title'=>'View ticket status'); + } + } else { $navs['status']=array('desc'=>'Check Ticket Status','href'=>'view.php','title'=>''); + } $this->navs=$navs; } diff --git a/include/class.staff.php b/include/class.staff.php index bfb0b79d2..996896599 100644 --- a/include/class.staff.php +++ b/include/class.staff.php @@ -37,15 +37,18 @@ class Staff { if(!$var && !($var=$this->getId())) return false; - $sql='SELECT staff.*,grp.*,tz.offset as tz_offset,TIME_TO_SEC(TIMEDIFF(NOW(),IFNULL(staff.passwdreset,staff.created))) as passwd_change_sec '. - 'FROM '.STAFF_TABLE.' staff '. - 'LEFT JOIN '.GROUP_TABLE.' grp ON(grp.group_id=staff.group_id) '. - 'LEFT JOIN '.TIMEZONE_TABLE.' tz ON(tz.id=staff.timezone_id) '; + $sql='SELECT staff.*, grp.*, tz.offset as tz_offset ' + .' ,TIME_TO_SEC(TIMEDIFF(NOW(),IFNULL(staff.passwdreset,staff.created))) as passwd_change_sec ' + .' FROM '.STAFF_TABLE.' staff ' + .' LEFT JOIN '.GROUP_TABLE.' grp ON(grp.group_id=staff.group_id) ' + .' LEFT JOIN '.TIMEZONE_TABLE.' tz ON(tz.id=staff.timezone_id) '; + $sql.=sprintf('WHERE %s=%s',is_numeric($var)?'staff_id':'username',db_input($var)); if(!($res=db_query($sql)) || !db_num_rows($res)) return NULL; + $this->ht=db_fetch_array($res); $this->id = $this->ht['staff_id']; $this->teams =$this->ht['teams']=$this->getTeams(); diff --git a/include/class.ticket.php b/include/class.ticket.php index 2c111cec2..4801f1625 100644 --- a/include/class.ticket.php +++ b/include/class.ticket.php @@ -175,6 +175,18 @@ class Ticket{ || $staff->getId()==$this->getStaffId()); } + function checkClientAccess($client) { + global $cfg; + + if(!is_object($client) && !($client=Client::lookup($client))) + return false; + + if(!strcasecmp($client->getEmail(),$this->getEmail())) + return true; + + return ($cfg && $cfg->showRelatedTickets() && $client->getTicketId()==$ticket->getExtId()); + } + //Getters function getId(){ return $this->id; @@ -437,8 +449,10 @@ class Ticket{ function getRelatedTicketsCount(){ - $sql='SELECT count(*) FROM '.TICKET_TABLE.' WHERE email='.db_input($this->getEmail()); - return db_count($sql); + $sql='SELECT count(*) FROM '.TICKET_TABLE + .' WHERE email='.db_input($this->getEmail()); + + return db_result(db_query($sql)); } function getThreadCount() { @@ -488,7 +502,7 @@ class Ticket{ ON (msg.ticket_id=attach.ticket_id AND msg.msg_id=attach.ref_id AND ref_type="M") ' .' WHERE msg.ticket_id='.db_input($this->getId()) .' GROUP BY msg.msg_id ' - .' ORDER BY msg.created DESC '; + .' ORDER BY msg.created ASC '; $messages=array(); if(($res=db_query($sql)) && db_num_rows($res)) @@ -1193,7 +1207,9 @@ class Ticket{ $this->onMessage($autorespond); //must be called b4 sending alerts to staff. - if(!($tpl = $dept->getTemplate())) + $dept = $this->getDept(); + + if(!$dept || !($tpl = $dept->getTemplate())) $tpl= $cfg->getDefaultTemplate(); if(!($email=$cfg->getAlertEmail())) @@ -1458,10 +1474,14 @@ class Ticket{ - function lookup($id){ //Assuming local ID is the only lookup used! + function lookup($id) { //Assuming local ID is the only lookup used! return ($id && is_numeric($id) && ($ticket= new Ticket($id)) && $ticket->getId()==$id)?$ticket:null; } + function lookupByExtId($id) { + return self::lookup(self:: getIdByExtId($id)); + } + function genExtRandID() { global $cfg; @@ -1537,6 +1557,27 @@ class Ticket{ return db_fetch_array(db_query($sql)); } + + /* Quick client's tickets stats + @email - valid email. + */ + function getClientStats($email) { + + if(!$email || !Validator::is_email($email)) + return null; + + $sql='SELECT count(open.ticket_id) as open, count(closed.ticket_id) as closed ' + .' FROM '.TICKET_TABLE.' ticket ' + .' LEFT JOIN '.TICKET_TABLE.' open + ON (open.ticket_id=ticket.ticket_id AND open.status=\'open\') ' + .' LEFT JOIN '.TICKET_TABLE.' closed + ON (closed.ticket_id=ticket.ticket_id AND closed.status=\'closed\')' + .' WHERE ticket.email='.db_input($email); + + return db_fetch_array(db_query($sql)); + } + + //FIXME: Refactor the code for version 1.7 function update($var,&$errors) { global $cfg,$thisstaff; @@ -1650,7 +1691,7 @@ class Ticket{ break; case 'staff': $fields['deptId'] = array('type'=>'int', 'required'=>1, 'error'=>'Dept. required'); - $fields['topicId'] = array('type'=>'int', 'required'=>1, 'error'=>'Topic required'); + $fields['topicId'] = array('type'=>'int', 'required'=>1, 'error'=>'Topic required'); $fields['duedate'] = array('type'=>'date', 'required'=>0, 'error'=>'Invalid date - must be MM/DD/YY'); case 'api': $fields['source'] = array('type'=>'string', 'required'=>1, 'error'=>'Indicate source'); @@ -1660,10 +1701,10 @@ class Ticket{ break; default: # TODO: Return error message - $errors['origin'] = 'Invalid origin given'; + $errors['err']=$errors['origin'] = 'Invalid origin given'; } - $fields['pri'] = array('type'=>'int', 'required'=>0, 'error'=>'Invalid Priority'); - $fields['phone'] = array('type'=>'phone', 'required'=>0, 'error'=>'Valid phone # required'); + $fields['priorityId'] = array('type'=>'int', 'required'=>0, 'error'=>'Invalid Priority'); + $fields['phone'] = array('type'=>'phone', 'required'=>0, 'error'=>'Valid phone # required'); if(!Validator::process($fields, $vars, $errors) && !$errors['err']) $errors['err'] ='Missing or invalid data - check the errors and try again'; @@ -1703,7 +1744,8 @@ class Ticket{ if (isset($vars['autorespond'])) $autorespond=$vars['autorespond']; //check ticket limits..if limit set is >0 - //TODO: Base ticket limits on SLA... XXX: move it elsewhere?? + //TODO: XXX: move it elsewhere?? Client::checkMaxOpenTickets($email,$vars) + if($vars['email'] && !$errors && $cfg->getMaxOpenTickets()>0 && strcasecmp($origin,'staff')){ $openTickets=Ticket::getOpenTicketsByEmail($vars['email']); if($openTickets>=$cfg->getMaxOpenTickets()) { @@ -1804,14 +1846,6 @@ class Ticket{ //post the message. $msgid=$ticket->postMessage($vars['message'],$source,$vars['mid'],$vars['header'],true); - //TODO: recover from postMessage error?? - - //Upload attachments...web based. - XXX: Assumes user uploaded attachments!! XXX: move it to client interface. - if($_FILES['attachment']['name'] && $cfg->allowOnlineAttachments() && $msgid) { - if(!$cfg->allowAttachmentsOnlogin() || ($cfg->allowAttachmentsOnlogin() && ($thisuser && $thisuser->isValid()))) { - $ticket->uploadAttachment($_FILES['attachment'],$msgid,'M'); - } - } // Configure service-level-agreement for this ticket $ticket->selectSLAId($vars['slaId']); diff --git a/include/class.topic.php b/include/class.topic.php index 59159c8c9..40ab8096b 100644 --- a/include/class.topic.php +++ b/include/class.topic.php @@ -135,6 +135,10 @@ class Topic { return $topics; } + function getPublicHelpTopics() { + return self::getHelpTopics(true); + } + function getIdByName($topic){ $sql='SELECT topic_id FROM '.TOPIC_TABLE.' WHERE topic='.db_input($topic); diff --git a/include/client/header.inc.php b/include/client/header.inc.php index ad88a0c80..65966c838 100644 --- a/include/client/header.inc.php +++ b/include/client/header.inc.php @@ -21,8 +21,14 @@ header("Content-Type: text/html; charset=UTF-8\r\n"); <a id="logo" href="<?php echo ROOT_PATH; ?>index.php" title="Support Center"><img src="<?php echo ASSETS_PATH; ?>images/logo.png" border=0 alt="Support Center"></a> <p> <?php - if($thisclient && is_object($thisclient) && $thisclient->isValid()) { ?> - <a href="<?php echo ROOT_PATH; ?>tickets.php">My Tickets</a> - + if($thisclient && is_object($thisclient) && $thisclient->isValid()) { + echo $thisclient->getName().' - '; + ?> + <?php + if($cfg->showRelatedTickets()) {?> + <a href="<?php echo ROOT_PATH; ?>tickets.php">My Tickets <b>(<?php echo $thisclient->getNumTickets(); ?>)</b></a> - + <?php + } ?> <a href="<?php echo ROOT_PATH; ?>logout.php">Log Out</a> <?php }elseif($nav){ ?> diff --git a/include/client/kb-category.inc.php b/include/client/kb-category.inc.php index f166fb5bd..50a51782f 100644 --- a/include/client/kb-category.inc.php +++ b/include/client/kb-category.inc.php @@ -1,34 +1,31 @@ <?php if(!defined('OSTCLIENTINC') || !$category || !$category->isPublic()) die('Access Denied'); - ?> -<div style="width:700;padding-top:10px; float:left;"> - <h2>Frequently Asked Questions</h2> -</div> -<div style="float:right;text-align:right;padding-top:5px;padding-right:5px;"> </div> -<div class="clear"></div> -<br> -<div><strong><?php echo $category->getName() ?></strong></div> +<h1><strong><?php echo $category->getName() ?></strong></h1> <p> <?php echo Format::safe_html($category->getDescription()); ?> </p> <hr> <?php -$sql='SELECT faq.faq_id, question ' +$sql='SELECT faq.faq_id, question, count(attach.file_id) as attachments ' .' FROM '.FAQ_TABLE.' faq ' .' LEFT JOIN '.FAQ_ATTACHMENT_TABLE.' attach ON(attach.faq_id=faq.faq_id) ' .' WHERE faq.ispublished=1 AND faq.category_id='.db_input($category->getId()) .' GROUP BY faq.faq_id'; if(($res=db_query($sql)) && db_num_rows($res)) { - echo '<div id="faq"> + echo ' + <h2>Frequently Asked Questions</h2> + <div id="faq"> <ol>'; while($row=db_fetch_array($res)) { + $attachments=$row['attachments']?'<span class="Icon file"></span>':''; echo sprintf(' - <li><a href="faq.php?id=%d" >%s</a></li>', - $row['faq_id'],Format::htmlchars($row['question'])); + <li><a href="faq.php?id=%d" >%s %s</a></li>', + $row['faq_id'],Format::htmlchars($row['question']), $attachments); } echo ' </ol> - </div>'; + </div> + <p><a class="back" href="index.php">« Go Back</a></p>'; }else { echo '<strong>Category does not have any FAQs. <a href="index.php">Back To Index</a></strong>'; } diff --git a/include/client/knowledgebase.inc.php b/include/client/knowledgebase.inc.php index 0af99ba21..83484e95d 100644 --- a/include/client/knowledgebase.inc.php +++ b/include/client/knowledgebase.inc.php @@ -1,5 +1,6 @@ <?php if(!defined('OSTCLIENTINC')) die('Access Denied'); + ?> <h1>Frequently Asked Questions</h1> <form action="index.php" method="get" style="padding-top:15px;"> @@ -14,6 +15,7 @@ if(!defined('OSTCLIENTINC')) die('Access Denied'); $sql='SELECT category_id, name, count(faq.category_id) as faqs ' .' FROM '.FAQ_CATEGORY_TABLE.' cat ' .' LEFT JOIN '.FAQ_TABLE.' faq USING(category_id) ' + .' WHERE cat.ispublic=1 AND faq.ispublished=1 ' .' GROUP BY cat.category_id ' .' HAVING faqs>0 ' .' ORDER BY cat.name DESC '; @@ -40,6 +42,7 @@ if(!defined('OSTCLIENTINC')) die('Access Denied'); $sql='SELECT ht.topic_id, ht.topic, count(faq.topic_id) as faqs ' .' FROM '.TOPIC_TABLE.' ht ' .' LEFT JOIN '.FAQ_TOPIC_TABLE.' faq USING(topic_id) ' + .' WHERE ht.ispublic=1 ' .' GROUP BY ht.topic_id ' .' HAVING faqs>0 ' .' ORDER BY ht.topic DESC '; @@ -88,7 +91,7 @@ if($_REQUEST['q'] || $_REQUEST['cid'] || $_REQUEST['topicId']) { //Search. } else { //Category Listing. $sql='SELECT cat.category_id, cat.name, cat.description, cat.ispublic, count(faq.faq_id) as faqs ' .' FROM '.FAQ_CATEGORY_TABLE.' cat ' - .' LEFT JOIN '.FAQ_TABLE.' faq ON(faq.category_id=cat.category_id) ' + .' LEFT JOIN '.FAQ_TABLE.' faq ON(faq.category_id=cat.category_id AND faq.ispublished=1) ' .' WHERE cat.ispublic=1 ' .' GROUP BY cat.category_id ' .' HAVING faqs>0 ' diff --git a/include/client/open.inc.php b/include/client/open.inc.php index fd31bc9b8..9c2a82b47 100644 --- a/include/client/open.inc.php +++ b/include/client/open.inc.php @@ -1,21 +1,40 @@ <?php -if(!defined('OSTCLIENTINC')) die('Access Denied'); //Say bye to our friend.. +if(!defined('OSTCLIENTINC')) die('Access Denied!'); +$info=array(); +if($thisclient && $thisclient->isValid()) { + $info=array('name'=>$thisclient->getName(), + 'email'=>$thisclient->getEmail(), + 'phone'=>$thisclient->getPhone(), + 'phone_ext'=>$thisclient->getPhoneExt()); +} -$info=($_POST && $errors)?Format::htmlchars($_POST):array(); +$info=($_POST && $errors)?Format::htmlchars($_POST):$info; ?> - <h1>Open a New Ticket</h1> <p>Please fill in the form below to open a new ticket.</p> <form id="ticketForm" method="post" action="open.php" enctype="multipart/form-data"> + <input type="hidden" name="a" value="open"> <div> <label for="name" class="required">Full Name:</label> + <?php + if($thisclient && $thisclient->isValid()) { + echo $thisclient->getName(); + } else { ?> <input id="name" type="text" name="name" size="30" value="<?php echo $info['name']; ?>"> <font class="error">* <?php echo $errors['name']; ?></font> + <?php + } ?> </div> <div> - <label for="email" class="required">E-Mail Address:</label> + <label for="email" class="required">Email Address:</label> + <?php + if($thisclient && $thisclient->isValid()) { + echo $thisclient->getEmail(); + } else { ?> <input id="email" type="text" name="email" size="30" value="<?php echo $info['email']; ?>"> <font class="error">* <?php echo $errors['email']; ?></font> + <?php + } ?> </div> <div> <label for="phone">Telephone:</label> @@ -30,16 +49,14 @@ $info=($_POST && $errors)?Format::htmlchars($_POST):array(); <select id="topicId" name="topicId"> <option value="" selected="selected">— Select a Help Topics —</option> <?php - $sql='SELECT topic_id,topic FROM '.TOPIC_TABLE.' WHERE isactive=1 ORDER BY topic'; - if(($res=db_query($sql)) && db_num_rows($res)) { - while (list($topicId,$topic) = db_fetch_row($res)){ - $selected = ($info['topicId']==$topicId)?'selected="selected"':''; ?> - <option value="<?php echo $topicId; ?>"<?php echo $selected; ?>><?php echo $topic; ?></option> - <?php - } - }else{ ?> - <option value="0" >General Inquiry</option> - <?php } ?> + if($topics=Topic::getPublicHelpTopics()) { + foreach($topics as $id =>$name) { + echo sprintf('<option value="%d" %s>%s</option>', + $id, ($info['topicId']==$id)?'selected="selected"':'', $name); + } + } else { ?> + <option value="0" >General Inquiry</option> + <?php } ?> </select> <font class="error">* <?php echo $errors['topicId']; ?></font> </div> @@ -58,35 +75,41 @@ $info=($_POST && $errors)?Format::htmlchars($_POST):array(); <textarea id="message" cols="60" rows="8" name="message"><?php echo $info['message']; ?></textarea> </div> <?php if(($cfg->allowOnlineAttachments() && !$cfg->allowAttachmentsOnlogin()) - || ($cfg->allowAttachmentsOnlogin() && ($thisuser && $thisuser->isValid()))) { ?> + || ($cfg->allowAttachmentsOnlogin() && ($thisclient && $thisclient->isValid()))) { ?> <div> - <label for="attachment">Attachments:</label> - <input id="attachment" type="file" name="attachment"><font class="error"> <?php echo $errors['attachment']; ?></font> + <label for="attachments">Attachments:</label> + <span id="uploads"></span> + <input type="file" class="multifile" name="attachments[]" id="attachments" size="30" value="" /> + <font class="error"> <?php echo $errors['attachments']; ?></font> </div> <?php } ?> <?php - if($cfg && $cfg->allowPriorityChange()) { - $sql='SELECT priority_id,priority_desc FROM '.TICKET_PRIORITY_TABLE.' WHERE ispublic=1 ORDER BY priority_urgency DESC'; - if(($res=db_query($sql)) && db_num_rows($res)) {?> - <div> + if($cfg->allowPriorityChange() && ($priorities=Priority::getPriorities())) { ?> + <div> <label for="priority">Ticket Priority:</label> <select id="priority" name="priorityId"> - <?php + <?php if(!$info['priorityId']) - $info['priorityId']=$cfg->getDefaultPriorityId(); //use system's default priority. - while($row=db_fetch_array($res)){ - $selected=$info['priorityId']==$row['priority_id']?'selected="selected"':''; - ?> - <option value="<?php echo $row['priority_id']; ?>" <?php echo $selected; ?> ><?php echo $row['priority_desc']; ?></option> - <?php } ?> + $info['priorityId'] = $cfg->getDefaultPriorityId(); //System default. + foreach($priorities as $id =>$name) { + echo sprintf('<option value="%d" %s>%s</option>', + $id, ($info['priorityId']==$id)?'selected="selected"':'', $name); + + } + ?> + + + </select> + <font class="error"> <?php echo $errors['priorityId']; ?></font> - </div> + + </div> <?php - } - } ?> + } + ?> <?php - if($cfg && $cfg->enableCaptcha() && (!$thisuser || !$thisuser->isValid())) { + if($cfg && $cfg->enableCaptcha() && (!$thisclient || !$thisclient->isValid())) { if($_POST && $errors && !$errors['captcha']) $errors['captcha']='Please re-enter the text again'; ?> @@ -101,7 +124,7 @@ $info=($_POST && $errors)?Format::htmlchars($_POST):array(); <?php } ?> <br> - <p> + <p style="padding-left:150px;"> <input type="submit" value="Create Ticket"> <input type="reset" value="Reset"> <input type="button" value="Cancel" onClick='window.location.href="index.php"'> diff --git a/include/client/tickets.inc.php b/include/client/tickets.inc.php new file mode 100644 index 000000000..a36021716 --- /dev/null +++ b/include/client/tickets.inc.php @@ -0,0 +1,172 @@ +<?php +if(!defined('OSTCLIENTINC') || !is_object($thisclient) || !$thisclient->isValid() || !$cfg->showRelatedTickets()) die('Access Denied'); + +$qstr='&'; //Query string collector +$status=null; +if(isset($_REQUEST['status'])) { //Query string status has nothing to do with the real status used below. + $qstr.='status='.urlencode($_REQUEST['status']); + //Status we are actually going to use on the query...making sure it is clean! + switch(strtolower($_REQUEST['status'])) { + case 'open': + case 'closed': + $status=strtolower($_REQUEST['status']); + break; + default: + $status=''; //ignore + } +} elseif($thisclient->getNumOpenTickets()) { + $status='open'; //Defaulting to open +} + +$sortOptions=array('id'=>'ticketID', 'name'=>'ticket.name', 'subject'=>'ticket.subject', + 'email'=>'ticket.email', 'status'=>'ticket.status', 'dept'=>'dept_name','date'=>'ticket.created'); +$orderWays=array('DESC'=>'DESC','ASC'=>'ASC'); +//Sorting options... +$order_by=$order=null; +$sort=($_REQUEST['sort'] && $sortOptions[strtolower($_REQUEST['sort'])])?strtolower($_REQUEST['sort']):'date'; +if($sort && $sortOptions[$sort]) + $order_by =$sortOptions[$sort]; + +$order_by=$order_by?$order_by:'ticket_created'; +if($_REQUEST['order'] && $orderWays[strtoupper($_REQUEST['order'])]) + $order=$orderWays[strtoupper($_REQUEST['order'])]; + +$order=$order?$order:'ASC'; +if($order_by && strpos($order_by,',')) + $order_by=str_replace(','," $order,",$order_by); + +$x=$sort.'_sort'; +$$x=' class="'.strtolower($order).'" '; + +$qselect='SELECT ticket.ticket_id,ticket.ticketID,ticket.dept_id,isanswered, dept.ispublic, ticket.subject, ticket.name, ticket.email '. + ',dept_name,ticket. status, ticket.source, ticket.created '; + +$qfrom='FROM '.TICKET_TABLE.' ticket ' + .' LEFT JOIN '.DEPT_TABLE.' dept ON (ticket.dept_id=dept.dept_id) '; + +$qwhere =' WHERE ticket.email='.db_input($thisclient->getEmail()); + +if($status){ + $qwhere.=' AND ticket.status='.db_input($status); +} + +$search=($_REQUEST['a']=='search' && $_REQUEST['q']); +if($search) { + $qstr.='&a='.urlencode($_REQUEST['a']).'&q='.urlencode($_REQUEST['q']); + if(is_numeric($_REQUEST['q'])) { + $qwhere.=" AND ticket.ticketID LIKE '$queryterm%'"; + } else {//Deep search! + $queryterm=db_real_escape($_REQUEST['q'],false); //escape the term ONLY...no quotes. + $qwhere.=' AND ( ' + ." ticket.subject LIKE '%$queryterm%'" + ." OR message.message LIKE '%$queryterm%'" + ." OR response.response LIKE '%$queryterm%'" + .' ) '; + $deep_search=true; + //Joins needed for search + $qfrom.=' LEFT JOIN '.TICKET_MESSAGE_TABLE.' message ON (ticket.ticket_id=message.ticket_id )' + .' LEFT JOIN '.TICKET_RESPONSE_TABLE.' response ON (ticket.ticket_id=response.ticket_id )'; + } +} + +$total=db_count('SELECT count(DISTINCT ticket.ticket_id) '.$qfrom.' '.$qwhere); +$pageNav=new Pagenate($total,$page, PAGE_LIMIT); +$pageNav->setURL('tickets.php',$qstr.'&sort='.urlencode($_REQUEST['sort']).'&order='.urlencode($_REQUEST['order'])); + +//more stuff... +$qselect.=' ,count(attach_id) as attachments '; +$qfrom.=' LEFT JOIN '.TICKET_ATTACHMENT_TABLE.' attach ON ticket.ticket_id=attach.ticket_id '; +$qgroup=' GROUP BY ticket.ticket_id'; + +$query="$qselect $qfrom $qwhere $qgroup ORDER BY $order_by $order LIMIT ".$pageNav->getStart().",".$pageNav->getLimit(); +//echo $query; +$res = db_query($query); +$showing=($res && db_num_rows($res))?$pageNav->showing():""; +$showing.=($status)?(' '.ucfirst($status).' Tickets'):' All Tickets'; +if($search) + $showing="Search Results: $showing"; + +$negorder=$order=='DESC'?'ASC':'DESC'; //Negate the sorting + +?> +<h1>My Tickets</h1> +<br> +<form action="tickets.php" method="get" id="ticketSearchForm"> + <input type="hidden" name="a" value="search"> + <input type="text" name="q" size="20" value="<?php echo Format::htmlchars($_REQUEST['q']); ?>"> + <select name="status"> + <option value="">— Any Status —</option> + <option value="open" <?php echo ($status=='open')?'selected="selected"':'';?>>Open</option> + <option value="closed" <?php echo ($status=='closed')?'selected="selected"':'';?>>Closed</option> + </select> + <input type="submit" value="Go"> +</form> +<a class="refresh" href="<?php echo $_SERVER['REQUEST_URI']; ?>">Refresh</a> +<table id="ticketTable" width="800" border="0" cellspacing="0" cellpadding="0"> + <caption><?php echo $showing; ?></caption> + <thead> + <tr> + <th width="70" nowrap> + <a href="tickets.php?sort=ID&order=<?php echo $negorder; ?><?php echo $qstr; ?>" title="Sort By Ticket ID">Ticket #</a> + </th> + <th width="100"> + <a href="tickets.php?sort=date&order=<?php echo $negorder; ?><?php echo $qstr; ?>" title="Sort By Date">Create Date</a> + </th> + <th width="80"> + <a href="tickets.php?sort=status&order=<?php echo $negorder; ?><?php echo $qstr; ?>" title="Sort By Status">Status</a> + </th> + <th width="240"> + <a href="tickets.php?sort=subj&order=<?php echo $negorder; ?><?php echo $qstr; ?>" title="Sort By Subject">Subject</a> + </th> + <th width="150"> + <a href="tickets.php?sort=dept&order=<?php echo $negorder; ?><?php echo $qstr; ?>" title="Sort By Department">Department</a> + </th> + <th width="150">Phone Number</th> + </tr> + </thead> + <tbody> + <?php + if($res && ($num=db_num_rows($res))) { + $defaultDept=Dept::getDefaultDeptName(); //Default public dept. + while ($row = db_fetch_array($res)) { + $dept=$row['ispublic']?$row['dept_name']:$defaultDept; + $subject=Format::htmlchars(Format::truncate($row['subject'],40)); + if($row['attachments']) + $subject.=' <span class="Icon file"></span>'; + + $ticketID=$row['ticketID']; + if($row['isanswered'] && !strcasecmp($row['status'],'open')) { + $subject="<b>$subject</b>"; + $ticketID="<b>$ticketID</b>"; + } + $phone=Format::phone($row['phone']); + if($row['phone_ext']) + $phone.=' '.$row['phone_ext']; + ?> + <tr id="<?php echo $row['ticketID']; ?>"> + <td class="centered"> + <a class="Icon <?php echo strtolower($row['source']); ?>Ticket" title="<?php echo $row['email']; ?>" + href="tickets.php?id=<?php echo $row['ticketID']; ?>"><?php echo $ticketID; ?></a> + </td> + <td> <?=Format::db_date($row['created'])?></td> + <td> <?=ucfirst($row['status'])?></td> + <td> + <a href="tickets.php?id=<?php echo $row['ticketID']; ?>"><?php echo $subject; ?></a> + </td> + <td> <?=Format::truncate($dept,30)?></td> + <td><?php echo $phone; ?></td> + </tr> + <?php + } + + } else { + echo '<tr><td colspan="7">Your query did not match any records</td></tr>'; + } + ?> + </tbody> +</table> +<?php +if($res && $num>0) { + echo '<div> Page:'.$pageNav->getPageLinks().' </div>'; +} +?> diff --git a/include/client/view.inc.php b/include/client/view.inc.php new file mode 100644 index 000000000..e720ed96b --- /dev/null +++ b/include/client/view.inc.php @@ -0,0 +1,157 @@ +<?php +if(!defined('OSTCLIENTINC') || !$thisclient || !$ticket || !$ticket->checkClientAccess($thisclient)) die('Access Denied!'); + +$info=($_POST && $errors)?Format::htmlchars($_POST):array(); + +$dept = $ticket->getDept(); +//Making sure we don't leak out internal dept names +if(!$dept || !$dept->isPublic()) + $dept = $cfg->getDefaultDept(); + +?> +<table width="800" cellpadding="1" cellspacing="0" border="0" id="ticketInfo"> + <tr> + <td colspan="2" width="100%"> + <h1> + Ticket #<?php echo $ticket->getExtId(); ?> + <a href="view.php?id=<?php echo $ticket->getExtId(); ?>" title="Reload"><span class="Icon refresh"> </span></a> + </h1> + </td> + </tr> + <tr> + <td width="50%"> + <table class="infoTable" cellspacing="1" cellpadding="3" width="100%" border="0"> + <tr> + <th width="100">Ticket Status:</th> + <td><?php echo ucfirst($ticket->getStatus()); ?></td> + </tr> + <tr> + <th>Department:</th> + <td><?php echo Format::htmlchars($dept->getName()); ?></td> + </tr> + <tr> + <th>Create Date:</th> + <td><?php echo Format::db_datetime($ticket->getCreateDate()); ?></td> + </tr> + </table> + </td> + <td width="50%"> + <table class="infoTable" cellspacing="1" cellpadding="3" width="100%" border="0"> + <tr> + <th width="100">Name:</th> + <td><?php echo ucfirst($ticket->getName()); ?></td> + </tr> + <tr> + <th width="100">Email:</th> + <td><?php echo Format::htmlchars($ticket->getEmail()); ?></td> + </tr> + <tr> + <th>Phone:</th> + <td><?php echo $ticket->getPhoneNumber(); ?></td> + </tr> + </table> + </td> + </tr> +</table> +<br> +<h2>Subject:<?php echo Format::htmlchars($ticket->getSubject()); ?></h2> +<br> +<span class="Icon thread">Ticket Thread</span> +<div id="ticketThread"> +<?php +if($ticket->getThreadCount() && ($messages = $ticket->getMessages())) { + + foreach($messages as $message) {?> + + <table class="message" cellspacing="0" cellpadding="1" width="800" border="0"> + + <tr><th><?php echo Format::db_datetime($message['created']); ?></th></tr> + + <tr><td><?php echo Format::display($message['message']); ?></td></tr> + + <?php + + if($message['attachments'] && ($links=$ticket->getAttachmentsLinks($message['msg_id'],'M'))) { ?> + + <tr><td class="info"><?php echo $links; ?></td></tr> + + <?php + + } ?> + + </table> + <?php + if($message['responses'] && ($responses=$ticket->getResponses($message['msg_id']))) { + foreach($responses as $resp) { + $staff=$cfg->hideStaffName()?'staff':Format::htmlchars($resp['staff_name']); + ?> + <table class="response" cellspacing="0" cellpadding="1" width="100%" border="0"> + <tr> + <th><?php echo Format::db_datetime($resp['created']);?> - <?php echo $staff; ?></th> + </tr> + <tr><td><?php echo Format::display($resp['response']); ?></td></tr> + <?php + if($resp['attachments'] && ($links=$ticket->getAttachmentsLinks($resp['response_id'],'R'))) {?> + <tr><td class="info"><?php echo $links; ?></td></tr> + <?php + }?> + </table> + <? + } + } + } +} +?> +</div> +<div class="clear" style="padding-bottom:10px;"></div> +<?php if($errors['err']) { ?> + <div id="msg_error"><?php echo $errors['err']; ?></div> +<?php }elseif($msg) { ?> + <div id="msg_notice"><?php echo $msg; ?></div> +<?php }elseif($warn) { ?> + <div id="msg_warning"><?php echo $warn; ?></div> +<?php } ?> +<form id="reply" action="tickets.php?id=<?php echo $ticket->getExtId(); ?>#reply" name="reply" method="post" enctype="multipart/form-data"> + <h2>Post a Reply</h2> + <input type="hidden" name="id" value="<?php echo $ticket->getExtId(); ?>"> + <input type="hidden" name="a" value="reply"> + <table border="0" cellspacing="0" cellpadding="3" width="800"> + <tr> + <td width="160"> + <label>Message:</label> + </td> + <td width="640"> + <?php + if($ticket->isClosed()) { + $msg='<b>Ticket will be reopened on message post</b>'; + } else { + $msg='To best assist you, please be specific and detailed'; + } + ?> + <span id="msg"><em><?php echo $msg; ?> </em></span><font class="error">* <?php echo $errors['message']; ?></font><br/> + <textarea name="message" id="message" cols="50" rows="9" wrap="soft"><?php echo $info['message']; ?></textarea> + </td> + </tr> + <?php + if($cfg->allowOnlineAttachments()) { ?> + <tr> + <td width="160"> + <label for="attachment">Attachments:</label> + </td> + <td width="640" id="reply_form_attachments" class="attachments"> + <div class="uploads"> + </div> + <div class="file_input"> + <input type="file" name="attachments[]" size="30" value="" /> + </div> + </td> + </tr> + <?php + } ?> + </table> + <p style="padding-left:165px;"> + <input type="submit" value="Post Reply"> + <input type="reset" value="Reset"> + <input type="button" value="Cancel" onClick="history.go(-1)"> + </p> +</form> diff --git a/include/staff/tickets.inc.php b/include/staff/tickets.inc.php index ea3a59ced..d0b27690e 100644 --- a/include/staff/tickets.inc.php +++ b/include/staff/tickets.inc.php @@ -180,8 +180,8 @@ if(!$order_by && $showanswered) { }elseif(!$order_by && !strcasecmp($status,'closed')){ $order_by='ticket.closed, ticket.created'; //No priority sorting for closed tickets. } -$order_by =$order_by?$order_by:'priority_urgency,effective_date,ticket.created'; -$order=$order?$order:'DESC'; +$order_by =$order_by?$order_by:'priority_urgency, effective_date, ticket.created'; +$order=$order?$order:'ASC'; if($order_by && strpos($order_by,',')) $order_by=str_replace(','," $order,",$order_by); @@ -351,7 +351,7 @@ $basic_display=!isset($_REQUEST['advance_search'])?true:false; <div class="clear"></div> <div style="margin-bottom:20px"> <form action="tickets.php" method="POST" name='tickets' onSubmit="return checkbox_checker(this,1,0);"> - <a class="refresh" href="">Refresh</a> + <a class="refresh" href="<?php echo $_SERVER['REQUEST_URI']; ?>">Refresh</a> <input type="hidden" name="a" value="mass_process" > <input type="hidden" name="status" value="<?php echo $status; ?>" > <table class="list" border="0" cellspacing="1" cellpadding="2" width="940"> diff --git a/index.php b/index.php index 95bdfa55d..ac4fe04a0 100644 --- a/index.php +++ b/index.php @@ -26,7 +26,7 @@ require(CLIENTINC_DIR.'header.inc.php'); <div id="new_ticket"> <h3>Open A New Ticket</h3> - <form method="link" action="open.php"> + <form method="get" action="open.php"> <div>Please provide as much detail as possible so we can best assist you. To update a previously submitted ticket, please login.</div> <input type="submit" value="Open a New Ticket"> </form> @@ -34,7 +34,7 @@ require(CLIENTINC_DIR.'header.inc.php'); <div id="check_status"> <h3>Check Ticket Status</h3> - <form class="status_form" action="login.php" method="get"> + <form class="status_form" action="view.php" method="get"> <div>We provide archives and history of all your current and past support requests complete with responses.</div> <input type="submit" value="Check Ticket Status"> </form> @@ -44,9 +44,8 @@ require(CLIENTINC_DIR.'header.inc.php'); <?php if($cfg && $cfg->isKnowledgebaseEnabled()){ //FIXME: provide ability to feature or select random FAQs ?? - ?> -<br> -Be pure to browse our <a href="kb/index.php">Frequently Asked Questions (FAQs)</a>, before opening a ticket. +?> +<p>Be sure to browse our <a href="kb/index.php">Frequently Asked Questions (FAQs)</a>, before opening a ticket.</p> </div> <?php } ?> diff --git a/js/osticket.js b/js/osticket.js index fd04ff48c..a809e6f2f 100644 --- a/js/osticket.js +++ b/js/osticket.js @@ -1,79 +1 @@ -jQuery(function($) { - var max_uploads = 5; - var current_reply_uploads = 0; - var current_note_uploads = 0; - - function parse_upload(elem) { - var new_input = elem.clone(); - var filename = elem.val(); - if(filename != '') { - var container = elem.parent().parent(); - var form_type = container.attr('id'); - elem.blur().hide(); - $('.uploads', container).append('<div><label><input type="checkbox" name="uploads[]" value="' + filename + '" checked="checked"> ' + filename.replace('C:\\', '').replace('fakepath\\', '') + '</label></div>'); - if(form_type=='reply_form_attachments') { - current_reply_uploads++; - if(current_reply_uploads < max_uploads) { - elem.after(new_input.val('').blur()); - } - } else { - current_note_uploads++; - if(current_note_uploads < max_uploads) { - elem.after(new_input.val('').blur()); - } - } - } - } - - if($.browser.msie) { - $('.attachments').delegate('input[type=file]', 'click', function() { - var elem = $(this); - setTimeout(function() { - parse_upload(elem); - elem.blur(); - }, 0); - }); - } else { - $('.attachments').delegate('input[type=file]', 'change', function() { - var elem = $(this); - parse_upload(elem); - }); - } - - $('.uploads').delegate('.uploads input', 'click', function(e) { - e.preventDefault(); - var elem = $(this); - elem.attr('checked', 'checked'); - if(confirm("Are you sure you want to delete this attachment?")==true) { - var container = elem.parent().parent(); - var cparent = container.parent().parent(); - var form_type = cparent.attr('id'); - var filename = elem.val(); - $('input[type=file]', cparent).each(function() { - if($(this).val() == filename) { - $(this).remove(); - } - }); - container.remove(); - var new_input = $('input[type=file]:last', cparent).clone(); - var last_elem = $('input[type=file]:last', cparent); - if(form_type=='reply_form_attachments') { - current_reply_uploads--; - if(current_reply_uploads < max_uploads) { - if(last_elem.css('display')=='none') { - last_elem.after(new_input.val('').show()); - } - } - } else { - current_note_uploads--; - if(current_note_uploads < max_uploads) { - if(last_elem.css('display')=='none') { - last_elem.after(new_input.val('').show()); - } - } - } - } else { - e.preventDefault(); - } - }); -}); \ No newline at end of file +//Nothing for now... diff --git a/login.php b/login.php index 69a73c679..044d74644 100644 --- a/login.php +++ b/login.php @@ -1,6 +1,6 @@ <?php /********************************************************************* - index.php + login.php Client Login @@ -41,9 +41,8 @@ if($_POST && (!empty($_POST['lemail']) && !empty($_POST['lticket']))): } } //See if we can fetch local ticket id associated with the ID given - if(!$errors && is_numeric($ticketID) && Validator::is_email($email) && ($tid=Ticket::getIdByExtId($ticketID))) { + if(!$errors && is_numeric($ticketID) && Validator::is_email($email) && ($ticket=Ticket::lookupByExtId($ticketID))) { //At this point we know the ticket is valid. - $ticket= new Ticket($tid); //TODO: 1) Check how old the ticket is...3 months max?? 2) Must be the latest 5 tickets?? //Check the email given. if($ticket->getId() && strcasecmp($ticket->getEMail(),$email)==0){ @@ -61,7 +60,7 @@ if($_POST && (!empty($_POST['lemail']) && !empty($_POST['lticket']))): //Redirect tickets.php session_write_close(); session_regenerate_id(); - @header("Location: tickets.php"); + @header("Location: tickets.php?id=".$ticket->getExtId()); require_once('tickets.php'); //Just incase. of header already sent error. exit; } diff --git a/open.php b/open.php index a5d86d077..11d3a0a9d 100644 --- a/open.php +++ b/open.php @@ -19,22 +19,27 @@ $inc='open.inc.php'; //default include. $errors=array(); if($_POST): $_POST['deptId']=$_POST['emailId']=0; //Just Making sure we don't accept crap...only topicId is expected. - if(!$thisuser && $cfg->enableCaptcha()){ + if($thisclient) { + $_POST['name']=$thisclient->getName(); + $_POST['email']=$thisclient->getEmail(); + } elseif($cfg->enableCaptcha()) { if(!$_POST['captcha']) $errors['captcha']='Enter text shown on the image'; elseif(strcmp($_SESSION['captcha'],md5($_POST['captcha']))) $errors['captcha']='Invalid - try again!'; } - //FIXME: Allow logged in users to use diff email? - if($thisuser && strcasecmp($thisuser->getEmail(),$_POST['email'])) - $errors['email']='Email mismatch.'; - //Ticket::create...checks for errors.. if(($ticket=Ticket::create($_POST,$errors,SOURCE))){ $msg='Support ticket request created'; - if($thisclient && $thisclient->isValid()) //Logged in...simply view the newly created ticket. + //Logged in...simply view the newly created ticket. + if($thisclient && $thisclient->isValid()) { + if(!$cfg->showRelatedTickets()) + $_SESSION['_client']['key']= $ticket->getExtId(); //Resetting login Key to the current ticket! + session_write_close(); + session_regenerate_id(); @header('Location: tickets.php?id='.$ticket->getExtId()); + } //Thank the user and promise speedy resolution! $inc='thankyou.inc.php'; }else{ diff --git a/secure.inc.php b/secure.inc.php index f6664ab81..3096b3503 100644 --- a/secure.inc.php +++ b/secure.inc.php @@ -13,7 +13,7 @@ vim: expandtab sw=4 ts=4 sts=4: **********************************************************************/ -if(!strcasecmp(basename($_SERVER['SCRIPT_NAME']),basename(__FILE__))) die('Kwaheri rafiki!'); +if(!strcasecmp(basename($_SERVER['SCRIPT_NAME']),basename(__FILE__))) die('Kwaheri!'); if(!file_exists('client.inc.php')) die('Fatal Error.'); require_once('client.inc.php'); //User must be logged in! diff --git a/tickets.php b/tickets.php index 072abef7d..d4759ba52 100644 --- a/tickets.php +++ b/tickets.php @@ -16,59 +16,57 @@ **********************************************************************/ require('secure.inc.php'); if(!is_object($thisclient) || !$thisclient->isValid()) die('Access denied'); //Double check again. - require_once(INCLUDE_DIR.'class.ticket.php'); $ticket=null; -$inc='tickets.inc.php'; //Default page...show all tickets. -//Check if any id is given... -if(($id=$_REQUEST['id']?$_REQUEST['id']:$_POST['ticket_id']) && is_numeric($id)) { - //id given fetch the ticket info and check perm. - $ticket= new Ticket(Ticket::getIdByExtId((int)$id)); - if(!$ticket or !$ticket->getEmail()) { - $ticket=null; //clear. - $errors['err']='Access Denied. Possibly invalid ticket ID'; - }elseif(strcasecmp($thisclient->getEmail(),$ticket->getEmail())){ - $errors['err']='Security violation. Repeated violations will result in your account being locked.'; - $ticket=null; //clear. - }else{ - //Everything checked out. - $inc='viewticket.inc.php'; +if($_REQUEST['id']) { + if(!($ticket=Ticket::lookupByExtId($_REQUEST['id']))) { + $errors['err']='Unknown or invalid ticket ID.'; + }elseif(!$ticket->checkClientAccess($thisclient)) { + $errors['err']='Unknown or invalid ticket ID.'; //Using generic message on purpose! + $ticket=null; } } + //Process post...depends on $ticket object above. if($_POST && is_object($ticket) && $ticket->getId()): $errors=array(); switch(strtolower($_POST['a'])){ - case 'postmessage': - if(strcasecmp($thisclient->getEmail(),$ticket->getEmail())) { //double check perm again! + case 'reply': + if(!$ticket->checkClientAccess($thisclient)) //double check perm again! $errors['err']='Access Denied. Possibly invalid ticket ID'; - $inc='tickets.inc.php'; //Show the tickets. - } if(!$_POST['message']) $errors['message']='Message required'; + //check attachment..if any is set - if($_FILES['attachment']['name']) { - if(!$cfg->allowOnlineAttachments()) //Something wrong with the form...user shouldn't have an option to attach - $errors['attachment']='File [ '.$_FILES['attachment']['name'].' ] rejected'; - elseif(!$cfg->canUploadFileType($_FILES['attachment']['name'])) - $errors['attachment']='Invalid file type [ '.$_FILES['attachment']['name'].' ]'; - elseif($_FILES['attachment']['size']>$cfg->getMaxFileSize()) - $errors['attachment']='File is too big. Max '.$cfg->getMaxFileSize().' bytes allowed'; + $files=($cfg->allowOnlineAttachments() && $_FILES['attachments'])?Format::files($_FILES['attachments']):array(); + if($files) { + + foreach($files as $file) { + if(!$file['name']) continue; + + if(!$cfg->canUploadFileType($file['name'])) + $errors['attachment']='Invalid file type [ '.$file['name'].' ]'; + elseif($file['size']>$cfg->getMaxFileSize()) + $errors['attachment']='File '.$file['name'].'is too big. Max '.$cfg->getMaxFileSize().' bytes allowed'; + } } if(!$errors){ //Everything checked out...do the magic. if(($msgid=$ticket->postMessage($_POST['message'],'Web'))) { - if($_FILES['attachment']['name'] && $cfg->canUploadFiles() && $cfg->allowOnlineAttachments()) - $ticket->uploadAttachment($_FILES['attachment'],$msgid,'M'); - + if($files && $cfg->allowOnlineAttachments()) + $ticket->uploadAttachments($files,$msgid,'M'); + $msg='Message Posted Successfully'; - }else{ + } else { $errors['err']='Unable to post the message. Try again'; } - }else{ - $errors['err']=$errors['err']?$errors['err']:'Error(s) occured. Please try again'; + + } elseif(!$errors['err']) { + print_r($errors); + $errors['err']='Error(s) occurred. Please try again'; + } break; default: @@ -76,6 +74,15 @@ if($_POST && is_object($ticket) && $ticket->getId()): } $ticket->reload(); endif; +$nav->setActiveNav('tickets'); +if($ticket && $ticket->checkClientAccess($thisclient)) { + $inc='view.inc.php'; +} elseif($cfg->showRelatedTickets() && $thisclient->getNumTickets()) { + $inc='tickets.inc.php'; +} else { + $nav->setActiveNav('new'); + $inc='open.inc.php'; +} include(CLIENTINC_DIR.'header.inc.php'); include(CLIENTINC_DIR.$inc); include(CLIENTINC_DIR.'footer.inc.php'); diff --git a/view.php b/view.php index b8be15b04..984b04c30 100644 --- a/view.php +++ b/view.php @@ -1,4 +1,21 @@ <?php +/********************************************************************* + view.php + + Ticket View. + + Peter Rotich <peter@osticket.com> + Copyright (c) 2006-2010 osTicket + http://www.osticket.com + + Released under the GNU General Public License WITHOUT ANY WARRANTY. + See LICENSE.TXT for details. + + vim: expandtab sw=4 ts=4 sts=4: + $Id: $ +**********************************************************************/ +require('secure.inc.php'); +if(!is_object($thisclient) || !$thisclient->isValid()) die('Access denied'); //Double check again. //We are now using tickets.php but we need to keep view.php for backward compatibility require('tickets.php'); ?> -- GitLab