Вход Регистрация
Файл: billing/_rootadmin/_tickets.inc.php
Строк: 503
<?

    
if ($sub == "setrefresh" and intval($refreshtime) >= 0) {
        
SetSetting("tickets_refresh",$refreshtime);
        
$sub "";
    }

    if (
$sub == "delete" and $id) {
        
checkAdminAccess('ticketsDelete',1);

        @
mysql_query("delete from tickets where id='$id'") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
        @
mysql_query("delete from tickets where parentid='$id'") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());

        
writeAdminLog("Удален тикет ID # $id");

        print 
"Тикет успешно удален.<br><br>";
        print 
"[ <a href=?do=tickets>перейти к списку тикетов</a> ]<BR><BR>";
    }

    if (
$sub == "view" or $sub == "attach" or $sub == "unattach" or $sub == "reply" or $sub == "close" or $sub == "delmsg" or $sub == "wait") {
        if (!
$id) {print "<font color=red>Утерян идентификатор тикета.</font><br><br>";}
        else {
            if (
$sub == "reply") {
                
checkAdminAccess('ticketsEdit',1);

                if (!
$message) { print "<font color=red>Не указано сообщение.</font><br><br>";}
                else { 
                    
$z=@mysql_query("select * from tickets where parentid='$id' and message='$message'") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
                    if (
mysql_num_rows($z) > 0) {
                        
$message="";
                        
$sub "view";
                    } else {
                        
$admUser GetAdminById($_SESSION["adminId"]);
                        if (
$admUser->signature) {
                            
$message $message."rnrn".$admUser->signature;
                        }

                        @
mysql_query("update tickets set newforuser='1',status='open' where id='$id'") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
                        @
mysql_query("insert into tickets (parentid,dt,message,adminname) values('$id',NOW(),'$message','".$_SESSION["adminName"]."')") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());

                        
$ticket=GetTicketById($id);
                        
$user GetUserById($ticket->userid);

                        
$pwd generatePassword(25);
                        @
mysql_query("update users set tempPassword='".crypt($pwd)."' where id='$user->id'") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());

                        
$tpl=GetTpl('email_touser_ticket_reply',$user->lang);
                        
$subject=$tpl[subject]; $template=$tpl[template];

                        if (
$subject and $template) {
                            
$company_name=GetSetting('company_name');
                            
$company_url=GetSetting('company_url');
                            
$support_email=GetSetting("support_email");
                            
$support_url=GetSetting('support_url');
        
                                 
$subject str_replace('{id}',$id,$subject);
                     
                            
$template str_replace('{company_name}',$company_name,$template);
                                 
$template str_replace('{company_url}',$company_url,$template);
                                 
$template str_replace('{support_url}',$support_url,$template);
                                 
$template str_replace('{subject}',$ticket->subject,$template);
                                 
$template str_replace('{message}',$message,$template);
                                 
$template str_replace('{id}',$id,$template);
                                 
$template str_replace('{link}',$full_www_path."billing.php?do=tickets&sub=view&id=$id&login=$user->login&pass=$pwd",$template);
            
                            
WriteMailLog($subject,$template,$user->id);
                            
sendmail($user->email,$company_name,$support_email,$subject,$template);
                            
sendmail($user->email2,$company_name,$support_email,$subject,$template);
                        }

                        
$message="";

                        
writeAdminLog("Добавлен ответ в тикет ID # $id");

                        print 
"Сообщение успешно добавлено.<br><br>";

                        print 
"[ <a href=?do=tickets&sub=view&id=$id>вернуться в тикет</a> ] [ <a href=?do=tickets>перейти к списку тикетов</a> ]<BR><BR>";
                    }
                }
            }

            if (
$sub == "delmsg" and $id and $msg_id) {
                
checkAdminAccess('ticketsEdit',1);

                @
mysql_query("delete from tickets where parentid='$id' and id='$msg_id'") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());

                
writeAdminLog("Удалено сообщение в тикете ID # $id");

                
$sub "view";
            }

            if (
$sub == "close" and $id) {
                
checkAdminAccess('ticketsEdit',1);

                
$z = @mysql_query("select * from tickets where status='closed' and id='$id'") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
                if (
mysql_num_rows($z) == 0) {
                    
$user GetUserById($uid);

                    
$varLng LoadLanguageToVariable($user->lang);

                    @
mysql_query("update tickets set status='closed' where id='$id'") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
                    @
mysql_query("insert into tickets (parentid,dt,message) values('$id',NOW(),'".$varLng[TicketsClosedBySupport]."')") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());

                    
writeAdminLog("Закрыт тикет ID # $id");

                    print 
"Тикет успешно закрыт.<br><br>";

                    print 
"[ <a href=?do=tickets&sub=view&id=$id>вернуться в тикет</a> ] [ <a href=?do=tickets>перейти к списку тикетов</a> ]<BR><BR>";
                } else {
                    
$sub "view";
                }
            }

            if (
$sub == "wait" and $id) {
                
checkAdminAccess('ticketsEdit',1);

                
$z = @mysql_query("select * from tickets where status='wait' and id='$id'") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
                if (
mysql_num_rows($z) == 0) {

                    @
mysql_query("update tickets set status='wait' where id='$id'") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());

                    
writeAdminLog("Тикет ID # $id переведен в ожидание");

                    print 
"Тикет успешно переведен в ожидание.<br><br>";

                    print 
"[ <a href=?do=tickets&sub=view&id=$id>вернуться в тикет</a> ] [ <a href=?do=tickets>перейти к списку тикетов</a> ]<BR><BR>";
                } else {
                    
$sub "view";
                }
            }

            if (
$sub == "attach" and $id) {
                
checkAdminAccess('ticketsEdit',1);

                @
mysql_query("update tickets set attached='1' where id='$id'") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
                
writeAdminLog("Прикреплен тикет ID # $id");

                print 
"Тикет успешно прикреплен.<br><br>";

                print 
"[ <a href=?do=tickets&sub=view&id=$id>вернуться в тикет</a> ] [ <a href=?do=tickets>перейти к списку тикетов</a> ]<BR><BR>";
            }

            if (
$sub == "unattach" and $id) {
                
checkAdminAccess('ticketsEdit',1);

                @
mysql_query("update tickets set attached='0' where id='$id'") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
                
writeAdminLog("Откреплен тикет ID # $id");

                print 
"Тикет успешно откреплен.<br><br>";

                print 
"[ <a href=?do=tickets&sub=view&id=$id>вернуться в тикет</a> ] [ <a href=?do=tickets>перейти к списку тикетов</a> ]<BR><BR>";
            }

            if (
$sub == "view" and $id) {
                
checkAdminAccess('ticketsRead',1);

                
$r=@mysql_query("select * from tickets where id=$id or parentid=$id order by id") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
                if (
mysql_num_rows($r) == 0) {print "<font color=red>Тикет не найден. Возможно он был удален.</font><br><br>";}
                else {
                    @
mysql_query("update tickets set newforadmin='0' where id=$id") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());

                    print 
"<table cellpadding=3 width=99%>";
                    while (
$rr mysql_fetch_object($r)) {
                        
$cnt++;

                        if (
$cnt == and ($rr->adminname or $rr->adminId)) { $firstMsgByAdmin true; }

                        if (
$rr->userid and !$rr->adminId and !$rr->adminname) {
                            
$isAdminMsg false;
                            if (!
$firstMsgByAdmin) { $type="Сообщение"; } else { $type="Ответ"; }
                            
$img="<img src="./_rootimages/ticket_user.gif" width=42>";
                        } else {
                            
$isAdminMsg true;
                            if (
$rr->adminId) {
                                
$admin GetAdminById($rr->adminId);
                                if (
$admin->name) {
                                    
$adminNameT=" ($admin->name)";
                                } else if (
$rr->adminname) {
                                    
$adminNameT=" ($rr->adminname)";
                                } else {
                                    
$adminNameT="";
                                }
                            } else if (
$rr->adminname) {
                                
$adminNameT=" ($rr->adminname)";
                            } else {
                                
$adminNameT="";
                            }

                            if (
$firstMsgByAdmin) {    $type="Сообщение"; } else { $type="Ответ"; }
                            
$type=$type."$adminNameT"
        
                            
$img="<img src="./_rootimages/ticket_admin.gif" width=42>";
                        }

                        if (!
$isAdminMsg)  {
                            
$user GetUserById($rr->userid);
                            
$profile GetUserProfileByUserId($rr->userid);

                            if (
$profile->org == "3") {
                                if (
$profile->firma) {
                                    
$namePrint " ($profile->firma)";
                                } else {
                                    
$namePrint "";
                                }
                            } else if (
$profile->org == "2" or $profile->org == "1") {
                                if (
$profile->surname or $profile->name or $profile->otchestvo) {
                                    
$namePrint " ($profile->surname $profile->name $profile->otchestvo)";
                                } else {
                                    
$namePrint "";
                                }
                            } else {
                                
$namePrint "";
                            }

                            if (
$user->id) {
                                
$user " | Клиент: <A href=?do=fullinfo&id=$rr->userid target=_blank>$user->login</a>$namePrint";
                            }
                        } else {
                            
$user "";
                        }

                        if (
$cnt == 1) {
                            
$priority="| Важность: <img src="./_rootimages/priority_".$rr->priority.".gif" alt="Важность ".$_priority[$rr->priority]."">";
                            
$status="| Статус: <img src="./_rootimages/ticket_".$rr->status.".gif" alt="Тикет ".$_statusTicket[$rr->status]."">";

                            if (
$rr->status == "open" or $rr->status == "wait") {$close="<A href=?do=$do&sub=close&id=$id&uid=$rr->userid onclick="javascript: return confirm('Вы уверены, что хотите закрыть тикет?');"><img src=./_rootimages/close.gif border=0 alt='Закрыть тикет'> закрыть тикет</a> | ";}

                            if (
$rr->status == "closed" or $rr->status == "open") {$wait="<A href=?do=$do&sub=wait&id=$id&uid=$rr->userid onclick="javascript: return confirm('Вы уверены, что хотите перевести тикет в ожидание?');"><img src=./_rootimages/ticket_wait.gif border=0 alt='Перевести тикет в ожидание'> перевести в ожидание</a> | ";}

                            if (!
$rr->attached) {$attach="<A href=?do=$do&sub=attach&id=$id onclick="javascript: return confirm('Вы уверены, что хотите прикрепить тикет?');"><img src=./_rootimages/attach.gif border=0 alt='Прикрепить тикет'> прикрепить тикет</a> | ";}
                            else {
$attach="<A href=?do=$do&sub=unattach&id=$id onclick="javascript: return confirm('Вы уверены, что хотите открепить тикет?');"><img src=./_rootimages/attach.gif border=0 alt='Открепить тикет'> открепить тикет</a> | ";}

                            print 
"<tr><td colspan=2 align=center bgcolor=$font_head>Просмотр тикета: <B>".$rr->subject."</b></td></tr>";
                            
$delmsg="";
                        } else {
                            
$priority="";$status="";
                            
$delmsg "<A href=?do=$do&sub=delmsg&id=$id&msg_id=$rr->id onclick="javascript: return confirm('Вы уверены, что хотите удалить сообщение?');"><img src=./_rootimages/del.gif border=0 alt='Удалить сообщение'></a>";
                        }
                        
$rr->message preg_replace("/rn/u""<BR>"$rr->message);

                        print 
"<tr><td bgcolor=$font_row2 colspan=2><b>#$cnt $type</b> | Дата: $rr->dt $priority $status $user $delmsg</td></tr>";
                        print 
"<tr bgcolor=$font_row1><td width=60 valign=top>$img</td><td valign=top>$rr->message<br><br></td></tr>";
                    }

                    print 
"<table>";
                    print 
"$attach $wait $close <A href=?do=$do&sub=delete&id=$id onclick="javascript: return confirm('Вы уверены, что хотите удалить тикет?');"><img src=./_rootimages/del.gif border=0 alt='Удалить тикет'> удалить тикет</a><br><br>";

                    
?>
                        <table border=0><form method=post>
                        <tr><td colspan=2 align=center bgcolor=<?=$font_head?>><B>Добавить сообщение</b></td></tr>
                        <input type=hidden name=do value=<?=$do?>>
                        <input type=hidden name=sub value=reply>
                        <input type=hidden name=id value=<?=$id?>>
                        <tr><td valign=top>Сообщение:</td><td><textarea name=message cols=70 rows=10><?=$message?></textarea></td></tr>
                        <tr><td colspan=2 align=center bgcolor=<?=$font_head?>><input type=Submit value="Добавить"></td></tr></table><BR></form>
                    <?
                
}

            }
        }
    }
    if (!
$sub) {
        
checkAdminAccess('ticketsRead',1);

        if (
$autorefresh and IsNewTicketsForAdmin()) {
            
?>
            <script language="JavaScript">
            function settitle(current) {
                var a = "Внимание!";
                var b = "Новый тикет/ответ!";

                if (current == a) {
                    document.title = b;
                } else {
                    document.title = a;
                }

                setTimeout("settitle(document.title)", 1000);
            }
            settitle(document.title);
            </script>
            <?
        
}

            
$r = @mysql_query("select * from tickets where parentid=0 and attached='1' order by newforadmin, id desc") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
        if (
mysql_num_rows($r) > 0) {
                
?>
                <table cellpadding=3 width=99%>
                <tr><td colspan=7 align=right><?=$txt?></td></tr>
                <tr><td colspan=7 align=center bgcolor=<?=$font_head?>><B>Прикрепленные тикеты</b></td></tr>
                <tr bgcolor=<?=$font_head?> align=center><td>ID#</td><td></td><td>Тема</td><td>Клиент</td><td>Дата</td><td>Ответов</td><td></td></tr>
                <?
                $cnt
=0;
                while (
$rr = @mysql_fetch_object($r)) {
                
getfont();
                
$cnt++;

                
$subj=$rr->subject; if ($rr->newforadmin) {$subj="<b>$subj</b>";}
                
$dt split(' '$rr->dt); $dt=mydate($dt[0]);

                
$replys=@mysql_query("select COUNT(*) as cnt from tickets where parentid='$rr->id'") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
                
$replys=mysql_fetch_object($replys);

                
$link="?do=$do&sub=view&id=$rr->id";
                
$delete="<A href=?do=$do&sub=delete&id=$rr->id onclick="javascript: return confirm('Вы уверены, что хотите удалить тикет?');"><img src=./_rootimages/del.gif border=0 alt='Удалить тикет'></a>";
                
$close=" <A href=?do=$do&sub=close&id=$rr->id&uid=$rr->userid onclick="javascript: return confirm('Вы уверены, что хотите закрыть тикет?');"><img src=./_rootimages/close.gif border=0 alt='Закрыть тикет'></a>";

                
$user GetUserById($rr->userid);
                
$user "<A target=_blank href=?do=fullinfo&id=$rr->userid>$user->login</a>";

                
?>
                <tr bgcolor="<?=$font_row?>" height=30>
                <td valign=middle align=center>&nbsp;<?=$rr->id?>&nbsp;</td>
                <td valign=middle width=50 align=center>&nbsp;<img src="./_rootimages/priority_<?=$rr->priority?>.gif" alt="Важность <?=$_priority[$rr->priority]?>"> <img src="./_rootimages/ticket_<?=$rr->status?>.gif" alt="Тикет <?=$_statusTicket[$rr->status]?>">&nbsp;</td>
                <td>&nbsp;<a href=<?=$link?>><?=$subj?></a>&nbsp;</td>
                <td align=center>&nbsp;<?=$user?>&nbsp;</td>
                <td align=center>&nbsp;<?=$dt?>&nbsp;</td>
                <td align=center><?=$replys->cnt?></td>
                <td align=center><?=$delete?> <?if ($rr->status == "open") {print $close;}?></td>
                </tr>
                <?
            
}
            
?>
            <tr bgcolor=<?=$font_head?>><Td colspan=7>Прикрепленных тикетов: <?=$cnt?></td></td></tr>
                <tr><td colspan=7 align=right><?=$txt?></td></tr>
            </table><br>
            <?
        
}

            
$myStatus $_SESSION["ticketsStatus"]; if (!$myStatus) { $myStatus="open"; }
            if (
$status and $status != $myStatus) { $myStatus $status$_SESSION["ticketsStatus"] = $myStatus; }

        if (!
$myStatus or $myStatus == "open") {$status="and (status='open' or status='wait')"$statustxt=$_lang[TicketsStatusOpen];}
        else if (
$myStatus == "wait") {$status="and status='wait'"$statustxt=$_lang[TicketsStatusWait];}
        else if (
$myStatus == "all") {$status=""$statustxt=$_lang[TicketsStatusAll];}
        else {
$status="and status='closed'"$statustxt=$_lang[TicketsStatusClosed];}


            
$myDepartment $_SESSION["ticketsDepartment"]; if (!$myDepartment) { $myDepartment="0"; }
            if (
$department != "" and $department != $myDepartment) { $myDepartment $department$_SESSION["ticketsDepartment"] = $myDepartment; }

        if (!
$myDepartment) {$department=""$departmenttxt=$_lang[TicketsStatusAll];}
        else {
$department="and department='$myDepartment'"$departmenttxt=GetAdminGroupById($myDepartment); $departmenttxt=$departmenttxt->name;}



        if (
$uid) {$mysqlUserAddon "and userid='$uid'";}

            
$r = @mysql_query("select * from tickets where parentid=0 $status $department $mysqlUserAddon order by newforadmin, id desc") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
            
$rows mysql_num_rows($r);
            list(
$start$perPage$txt) = MakePages($page$rows"status=$myStatus&userid=$uid&department=$myDepartment");

            
?>
            <table cellpadding=3 width=99%>
            <tr><td colspan=8 align=right><?=$txt?></td></tr>
            <tr><td colspan=8 align=center bgcolor=<?=$font_head?>><B>Тикеты [<?=$statustxt?><?=$departmenttxt?>]</b></td></tr>
        <tr><td colspan=8 align=center bgcolor=<?=$font_head?>><?=$_lang[TicketsShow]?>: [ <a href=?do=tickets&department=<?=$myDepartment?>&status=all&uid=<?=$uid?>><?=$_lang[TicketsStatusAll]?></a> ] [ <a href=?do=tickets&department=<?=$myDepartment?>&status=open&uid=<?=$uid?>><?=$_lang[TicketsStatusOpen]?></a> ] [ <a href=?do=tickets&department=<?=$myDepartment?>&status=closed&uid=<?=$uid?>><?=$_lang[TicketsStatusClosed]?></a> ] [ <a href=?do=tickets&department=<?=$myDepartment?>&status=wait&uid=<?=$uid?>><?=$_lang[TicketsStatusWait]?></a> ]</td></tr>
        <tr><td colspan=8 align=center bgcolor=<?=$font_head?>><?=$_lang[TicketsDepartment]?>: [ <a href=?do=tickets&department=0&status=<?=$myStatus?>&uid=<?=$uid?>><?=$_lang[TicketsStatusAll]?></a> ] 
        <?
        $admGroups 
GetAdminGroups();
        if (@
mysql_num_rows($admGroups) > 0) {
            while (
$admGroup = @mysql_fetch_object($admGroups)) {
                print 
"[ <a href=?do=tickets&department=$admGroup->id&status=$myStatus&uid=$uid>$admGroup->name</a> ] ";
            }
        }

        
?>
        </td></tr>
            <tr bgcolor=<?=$font_head?> align=center><td>ID#</td><td></td><td>Отдел</td><td>Тема</td><td>Клиент</td><td>Дата</td><td>Ответов</td><td></td></tr>
            <?
            $r 
= @mysql_query("select * from tickets where parentid=0 $status $department $mysqlUserAddon order by newforadmin, id desc LIMIT $start,$perPage") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
            
$cnt=0;
            while (
$rr = @mysql_fetch_object($r)) {
            
getfont();
            
$cnt++;

            
$subj=$rr->subject; if ($rr->newforadmin) {$subj="<b>$subj</b>";}
            
$dt split(' '$rr->dt); $dt=mydate($dt[0]);

            
$replys=@mysql_query("select COUNT(*) as cnt from tickets where parentid='$rr->id'") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
            
$replys=mysql_fetch_object($replys);

            
$link="?do=$do&sub=view&id=$rr->id";
            
$delete="<A href=?do=$do&sub=delete&id=$rr->id onclick="javascript: return confirm('Вы уверены, что хотите удалить тикет?');"><img src=./_rootimages/del.gif border=0 alt='Удалить тикет'></a>";
            
$close=" <A href=?do=$do&sub=close&id=$rr->id&uid=$rr->userid onclick="javascript: return confirm('Вы уверены, что хотите закрыть тикет?');"><img src=./_rootimages/close.gif border=0 alt='Закрыть тикет'></a>";

            
$user GetUserById($rr->userid);
            
$user "<A target=_blank href=?do=fullinfo&id=$rr->userid>$user->login</a>";

            if (
$rr->department) {
                
$department GetAdminGroupById($rr->department);
                
$department $department->name;
            } else {
                
$department "";
            }

            
?>
            <tr bgcolor="<?=$font_row?>" height=30>
            <td valign=middle align=center>&nbsp;<?=$rr->id?>&nbsp;</td>
            <td valign=middle width=50 align=center>&nbsp;<img src="./_rootimages/priority_<?=$rr->priority?>.gif" alt="Важность <?=$_priority[$rr->priority]?>"> <img src="./_rootimages/ticket_<?=$rr->status?>.gif" alt="Тикет <?=$_statusTicket[$rr->status]?>">&nbsp;</td>
            <td valign=middle align=center>&nbsp;<?=$department?>&nbsp;</td>
            <td>&nbsp;<a href=<?=$link?>><?=$subj?></a>&nbsp;</td>
            <td align=center>&nbsp;<?=$user?>&nbsp;</td>
            <td align=center>&nbsp;<?=$dt?>&nbsp;</td>
            <td align=center><?=$replys->cnt?></td>
            <td align=center><?=$delete?> <?if ($rr->status == "open") {print $close;}?></td>
            </tr>
            <?
        
}
        
?>
        <tr bgcolor=<?=$font_head?>><Td colspan=8>Всего тикетов: <?=$rows?>, тикетов на странице: <?=$cnt?></td></td></tr>
            <tr><td colspan=8 align=right><?=$txt?></td></tr>
        </table>

        <? if (!$uid) { ?>
        <form method=post>
        <input type=hidden name=do value=tickets>
        <input type=hidden name=sub value=setrefresh>
        Обновлять страницу с тикетами каждые <input type=text size=3 name=refreshtime value=<?=GetSetting("tickets_refresh")?>> секунд <input type=submit value=OK>
        </form>
        <? ?>

        <?
    
}

?>
Онлайн: 2
Реклама