* Данный файл является частью проекта Веб Мессенджер. * * Все права защищены. (c) 2005-2009 ООО "ТОП". * Данное программное обеспечение и все сопутствующие материалы * предоставляются на условиях лицензии, доступной по адресу * http://webim.ru/license.html * */ $TITLE_KEY = 'topMenu.visitors'; require_once dirname(__FILE__) . '/inc/admin_prolog.php'; require_once '../classes/functions.php'; require_once '../classes/class.operator.php'; require_once '../classes/class.smartyclass.php'; $TML = new SmartyClass($TITLE_KEY); $o = Operator::getInstance(); $operator = $o->GetLoggedOperator(); if ($o->isOperatorsLimitExceeded()) { $TML->display('operators_limit.tpl'); require_once dirname(__FILE__) . '/inc/admin_epilog.php'; die; } $o->UpdateOperatorStatus($operator); $lang = verify_param('lang', "/^[\\w-]{2,5}\$/", ''); if (!empty($lang)) { $TML->assign('lang_param', "?lang={$lang}"); $TML->assign('lang_and_is_operator_param', "?isoperator=true&lang={$lang}"); } else { $TML->assign('lang_and_is_operator_param', '?isoperator=true'); } $TML->display('pending_visitors.tpl'); require_once dirname(__FILE__) . '/inc/admin_epilog.php';
} header("Location: " . WEBIM_ROOT . "/operator/settings.php"); exit; } else { foreach ($fields as $f) { $TML->assign($f, $params[$f]); } // $TML->assign('logo', get_mandatory_param('logo')); $TML->assign('answers_value', $params[$answersKey]); } } else { // not submitted $TML->assign('answers_value', Settings::Get($answersKey)); $TML->assign(Settings::getInstance()->GetAll()); } $TML->assign('answers_key', $answersKey); $TML->assign('availableLocales', Resources::GetAvailableLocales()); $TML->assign('errors', $errors); $TML->display('settings.tpl'); require_once dirname(__FILE__) . '/inc/admin_epilog.php'; function notEmpty($string) { return !empty($string); } function remove_empty_strings($strings) { $strings = str_replace("\r", "", $strings); $strarray = explode("\n", $strings); $strarray = array_filter($strarray, "notEmpty"); return implode("\n", $strarray); }
<?php /* * * Данный файл является частью проекта Веб Мессенджер. * * Все права защищены. (c) 2005-2009 ООО "ТОП". * Данное программное обеспечение и все сопутствующие материалы * предоставляются на условиях лицензии, доступной по адресу * http://webim.ru/license.html * */ $TITLE_KEY = 'leftMenu.departments'; require_once dirname(__FILE__) . '/inc/admin_prolog.php'; require_once '../classes/functions.php'; require_once '../classes/class.operator.php'; require_once '../classes/class.smartyclass.php'; require_once '../classes/models/generic/class.mapperfactory.php'; Operator::getInstance()->IsCurrentUserAdminOrRedirect(); $TML = new SmartyClass($TITLE_KEY); $departments = MapperFactory::getMapper("Department")->enumDepartments(Resources::getCurrentLocale()); $TML->assign('departments', $departments); $TML->display('departments.tpl'); require_once dirname(__FILE__) . '/inc/admin_epilog.php';
require_once '../classes/class.smartyclass.php'; $TML = new SmartyClass(); $operator = Operator::getInstance()->GetLoggedOperator(); $threadid = verify_param("thread", "/^\\d{1,8}\$/"); $token = verify_param("token", "/^\\d{1,8}\$/"); $thread = Thread::getInstance()->GetThreadById($threadid); $visitSession = VisitSession::GetInstance()->GetVisitSessionById($thread['visitsessionid']); $TML->assign('visit_session', $visitSession); if (!$thread || !isset($thread['token']) || $token != $thread['token']) { die("wrong thread"); } $nextid = verify_param("nextoperatorid", "/^\\d{1,8}\$/"); $nextdepartmentid = verify_param("nextdepartmentid", "/^\\d{1,8}\$/"); $page = array(); if (!empty($nextid)) { $nextOperator = Operator::getInstance()->GetOperatorById($nextid); $TML->assign('nextoperator', $nextOperator); } if (!empty($nextdepartmentid)) { $nextdepartment = Department::getInstance()->getById($nextdepartmentid, Resources::getCurrentLocale()); $TML->assign('nextdepartment', $nextdepartment); } $errors = array(); ThreadProcessor::getInstance()->ProcessThread($threadid, 'redirect', array('nextoperatorid' => $nextid, 'nextdepartmentid' => $nextdepartmentid, 'operator' => Operator::getInstance()->GetLoggedOperator())); $TML->assign('page_settings', $page); if (count($errors) > 0) { $TML->assign('errors', $errors); $TML->display('chat_error.tpl'); } else { $TML->display('redirected.tpl'); }
<?php /* * * Данный файл является частью проекта Веб Мессенджер. * * Все права защищены. (c) 2005-2009 ООО "ТОП". * Данное программное обеспечение и все сопутствующие материалы * предоставляются на условиях лицензии, доступной по адресу * http://webim.ru/license.html * */ $TITLE_KEY = 'active.visits.queue'; require_once dirname(__FILE__) . '/inc/admin_prolog.php'; require_once '../classes/functions.php'; require_once '../classes/class.thread.php'; require_once '../classes/class.smartyclass.php'; $TML = new SmartyClass($TITLE_KEY); $o = Operator::getInstance(); $operator = $o->GetLoggedOperator(); if ($o->isOperatorsLimitExceeded()) { $TML->display('operators_limit.tpl'); require_once dirname(__FILE__) . '/inc/admin_epilog.php'; die; } $TML->assign('visit_details', get_app_location(true, false) . '/operator/visit.php?pageid='); $TML->display('../templates/active_visitors.tpl'); require_once dirname(__FILE__) . '/inc/admin_epilog.php';
function showLeaveMessageSentPage() { $TML = new SmartyClass(); $TML->assignCompanyInfoAndTheme(); $TML->assign('theme', Browser::getCurrentTheme()); $TML->display('leave-message-sent.tpl'); exit; }
* * Все права защищены. (c) 2005-2009 ООО "ТОП". * Данное программное обеспечение и все сопутствующие материалы * предоставляются на условиях лицензии, доступной по адресу * http://webim.ru/license.html * */ $TITLE_KEY = 'topMenu.admin'; require_once dirname(__FILE__) . '/inc/admin_prolog.php'; require_once '../classes/common.php'; require_once '../classes/functions.php'; require_once '../classes/class.adminurl.php'; require_once '../classes/class.operator.php'; require_once '../classes/class.settings.php'; require_once '../classes/class.smartyclass.php'; $operator = Operator::getInstance()->GetLoggedOperator(); $TML = new SmartyClass($TITLE_KEY); $count = 0; foreach (AdminURL::$ADMIN_MENU as $i) { if ($i['role'] == 'operator' || $i['role'] == $operator['role']) { $prepared[$count] = $i; $prepared[$count]['link'] = AdminURL::getInstance()->getURL($i['link_name']); $count++; } } if (sizeof($prepared) % 2 == 1) { $prepared[] = array(); } $TML->assign('items', $prepared); $TML->display('menu.tpl'); require_once dirname(__FILE__) . '/inc/admin_epilog.php';
$TML = new SmartyClass($TITLE_KEY); $errors = array(); if (isset($_REQUEST['login']) && isset($_REQUEST['password'])) { $login = get_mandatory_param('login'); $password = get_mandatory_param('password'); $remember = isset($_REQUEST['isRemember']) && $_REQUEST['isRemember'] == "on"; $e = Operator::getInstance()->DoLogin($login, $password, $remember); if (isset($e)) { $errors[] = $e; } if (empty($errors)) { if (!empty($_REQUEST['redir'])) { header("Location: " . $_REQUEST['redir']); } else { header("Location: " . WEBIM_ROOT . "/"); } exit; } } $TML->assign('errors', $errors); $TML->assign('isRemember', true); if (!empty($_REQUEST['redir'])) { $TML->assign('redir', htmlspecialchars($_REQUEST['redir'])); } $status = verify_param("status", "/^(new)\$/", ""); if ($status == "new") { $introduction = "true"; $TML->assign('introduction', $introduction); } $TML->display('../templates/login.tpl');
function inviteSubmitted() { global $TITLE_KEY; $TML = new SmartyClass($TITLE_KEY); $isNew = empty($_REQUEST['autoinviteid']); $toCheck = array('text' => 'form.field.text'); foreach ($toCheck as $field => $res) { if (empty($_REQUEST[$field])) { $errors[] = Resources::Get("errors.required", array(Resources::Get($res))); } } if (!isset($_REQUEST['number_of_pages']) || !empty($_REQUEST['number_of_pages']) && !is_numeric($_REQUEST['number_of_pages'])) { $errors[] = Resources::Get("errors.not_numeric.number_of_pages"); } if (!isset($_REQUEST['time_on_site']) || !is_numeric($_REQUEST['time_on_site'])) { $errors[] = Resources::Get("errors.not_numeric.time_on_site"); } $visited_pages = array(); if (isset($_REQUEST['visited_page']) && is_array($_REQUEST['visited_page']) && isset($_REQUEST['visited_page_time']) && is_array($_REQUEST['visited_page_time'])) { foreach ($_REQUEST['visited_page'] as $k => $v) { if (!empty($v)) { if (!isset($_REQUEST['visited_page_time'][$k]) || !is_numeric($_REQUEST['visited_page_time'][$k])) { $errors[] = Resources::Get("errors.not_numeric.visited_page_time"); } else { array_push($visited_pages, array("url" => $v, "time" => $_REQUEST['visited_page_time'][$k])); } } } } $hash = array(); if (empty($errors)) { $hash['text'] = $_REQUEST['text']; $hash['conditions'] = array(); if (isset($_REQUEST['came_from']) && !empty($_REQUEST['came_from'])) { $hash['conditions']['came_from'] = $_REQUEST['came_from']; } if (isset($_REQUEST['number_of_pages']) && !empty($_REQUEST['number_of_pages'])) { $hash['conditions']['number_of_pages'] = $_REQUEST['number_of_pages']; } if (isset($_REQUEST['time_on_site']) && !empty($_REQUEST['time_on_site'])) { $hash['conditions']['time_on_site'] = $_REQUEST['time_on_site']; } if (isset($_REQUEST['order_matters']) && !empty($_REQUEST['order_matters'])) { $hash['conditions']['order_matters'] = 1; } if (count($visited_pages) > 0) { $hash['conditions']['visited_pages'] = $visited_pages; } $json = new Json(); $hash['conditions'] = $json->encode($hash['conditions']); if ($isNew) { $autoinviteToUpdateId = MapperFactory::getMapper("AutoInvite")->save($hash); } else { $autoinviteToUpdateId = $_REQUEST['autoinviteid']; $hash['autoinviteid'] = $autoinviteToUpdateId; MapperFactory::getMapper("AutoInvite")->save($hash); } header("Location: " . AdminURL::getInstance()->getURL('auto_invites')); exit; } foreach (array('order_matters', 'text', 'came_from', 'visited_page', 'visited_page_time', 'time_on_site', 'number_of_pages') as $f) { if (isset($_REQUEST[$f]) && !empty($_REQUEST[$f])) { $TML->assign($f, $_REQUEST[$f]); } } $TML->assign('errors', $errors); $TML->display('auto_invite.tpl'); }
function handleWithoutToken($threadid, $viewonly) { $TML = new SmartyClass(); $operator = Operator::getInstance()->GetLoggedOperator(); $remote_level = Browser::GetRemoteLevel($_SERVER['HTTP_USER_AGENT']); if ($remote_level != "ajaxed") { die("old browser is used, please update it"); } $thread = Thread::getInstance()->GetThreadById($threadid); if (!$thread || !isset($thread['token'])) { die("wrong thread"); } if ($viewonly && $operator['operatorid'] != $thread['operatorid']) { redirectToPageWithToken($thread, $viewonly, $remote_level); } $forcetake = verify_param("force", "/^true\$/", false); if ($forcetake) { ThreadProcessor::getInstance()->ProcessThread($thread['threadid'], 'operator_force_join', array("operatorid" => $operator["operatorid"])); redirectToPageWithToken($thread, null, $remote_level); } else { // is taken by another $visitSession = VisitSession::GetInstance()->GetVisitSessionById($thread['visitsessionid']); if ($thread['state'] != STATE_CLOSED && !empty($thread['operatorid']) && $operator['operatorid'] != $thread['operatorid'] && $operator['operatorid'] != $thread['nextoperatorid']) { $page = array('visitor' => $visitSession['visitorname'], 'agent' => $thread['operatorfullname'], 'force' => true, 'takelink' => $_SERVER['PHP_SELF'] . "?thread={$threadid}&force=true", 'viewlink' => $_SERVER['PHP_SELF'] . "?thread={$threadid}&viewonly=true", 'priority' => $thread['state'] == STATE_QUEUE_EXACT_OPERATOR || $thread['state'] == STATE_CHATTING_OPERATOR_BROWSER_CLOSED_REFRESHED); // TODO get rid of STATE_WAIT_ANOTHER_OPERATOR $TML->assign('link_arguments', "&thread={$threadid}"); $TML->assign('page', $page); $TML->display('confirm.tpl'); exit; } // is closed if ($thread['state'] == STATE_CLOSED) { $page = array('viewlink' => $_SERVER['PHP_SELF'] . "?thread=" . $threadid . "&viewonly=true", 'force' => false, 'thread_id' => $threadid, 'closed' => true); $TML->assign('link_arguments', "&thread={$threadid}"); $TML->assign('page', $page); $TML->display('confirm.tpl'); exit; } } ThreadProcessor::getInstance()->ProcessThread($thread['threadid'], 'operator_join', array('operatorid' => $operator['operatorid'])); redirectToPageWithToken($thread, $viewonly, $remote_level); }
if (isset($_GET['visitsessionid'])) { $visitSession = VisitSession::GetInstance()->GetVisitSessionById($_GET['visitsessionid']); } elseif (isset($_GET['pageid'])) { $visitdpageid = verify_param("pageid", "/^[a-z0-9]{32}\$/"); $vistedpage = VisitedPage::GetInstance()->GetVisitedPageById($_GET['pageid']); $visitSession = VisitSession::GetInstance()->GetVisitSessionById($vistedpage['visitsessionid']); } if (empty($visitSession)) { die("Invalid or no visitsessionid or pageid"); } $visitedPages = VisitedPage::GetInstance()->enumVisitedPagesByVisitSessionId($visitSession['visitsessionid']); $landingPage = end($visitedPages); $exitPage = reset($visitedPages); $timeend = 0; $timestart = 0; foreach ($visitedPages as $k => $vp) { $timeend = $timeend == 0 ? $vp['updated'] : max($timeend, $vp['updated']); $timestart = $timestart == 0 ? $vp['opened'] : min($timestart, $vp['opened']); $visitedPages[$k]['sessionduration'] = $vp['updated'] - $vp['opened']; } $geodata = GeoIPLookup::getGeoDataByIP($visitSession['ip']); //for testing purpose //$geodata = GeoIPLookup::getGeoDataByIP('89.113.218.99'); if ($geodata == NULL) { $geodata = array('city' => null, 'country' => null, 'lat' => null, 'lng' => null); } $tmlPage = array('visitsessionid' => $visitSession['visitsessionid'], 'visitedpages' => $visitedPages, 'landingpage' => $landingPage['uri'], 'exitpage' => $exitPage['uri'], 'timestart' => $timestart, 'timeend' => $timeend, 'timediff' => webim_date_diff($timeend - $timestart), 'active' => time() - $timeend < VISITED_PAGE_TIMEOUT, 'ip' => $visitSession['ip'], 'city' => $geodata['city'], 'country' => $geodata['country'], 'lat' => $geodata['lat'], 'lng' => $geodata['lng'], 'browser' => get_user_agent($visitSession['useragent']), 'enterref' => $landingPage['referrer'], 'leaveref' => $exitPage['referrer'], 'historyParams' => array("q" => "" . $visitSession['visitorid'])); $TML = new SmartyClass($TITLE_KEY); $TML->assign('page_settings', $tmlPage); $TML->display('visit_info.tpl');
* http://webim.ru/license.html * */ require_once dirname(__FILE__) . '/inc/admin_prolog.php'; require_once '../classes/functions.php'; require_once '../classes/class.operator.php'; require_once '../classes/class.adminurl.php'; require_once '../classes/class.smartyclass.php'; require_once '../classes/models/generic/class.mapperfactory.php'; $operator = Operator::getInstance()->GetLoggedOperator(); Operator::getInstance()->IsCurrentUserAdminOrRedirect(); $errors = array(); $TML = new SmartyClass(); $isNew = empty($_REQUEST['operatorid']); if ($isNew && Operator::getInstance()->isOperatorsLimitExceeded()) { $TML->display('operators_limit.tpl'); require_once dirname(__FILE__) . '/inc/admin_epilog.php'; die; } $TML->assign('mode', $isNew ? 'new_operator' : 'edit_operator'); setAllDepartments(); setAllLocales(); if (isset($_REQUEST['act'])) { switch ($_REQUEST['act']) { case 'delete': deleteOperator(); break; case 'delphoto': Operator::getInstance()->UpdateOperator($_REQUEST['operatorid'], array('avatar' => null)); if ($_REQUEST['operatorid'] == $operator['operatorid']) { Operator::getInstance()->RefreshSessionOperator();
$has_errors = true; } else { if (!is_valid_email($email)) { $TML->assign('erroremailformat', true); $has_errors = true; } } $captcha->setNumber(); if ($has_errors) { $TML->assign('name', getSecureText($visitor_name)); $TML->assign('email', getSecureText($email)); $TML->assign('phone', getSecureText($phone)); $TML->assign('message', getSecureText($message)); $TML->assign('canChangeName', getSecureText($canChangeName)); $TML->assign('captcha_num', ''); $TML->display('leave-message.tpl'); exit; } $visitSessionId = VisitSession::GetInstance()->updateCurrentOrCreateSession(); $params = array(); $params['visitsessionid'] = $visitSessionId; $params['lastpingvisitor'] = null; $params['offline'] = 1; $threads_count = MapperFactory::getMapper('Thread')->getNonEmptyThreadsCountByVisitorId($visitorid); $thread = Thread::getInstance()->CreateThread(WEBIM_CURRENT_LOCALE, STATE_CLOSED, $params); VisitSession::GetInstance()->UpdateVisitSession($visitSessionId, array('hasthread' => 1)); Thread::getInstance()->sendFirstMessageWithVisitorInfo($thread); Thread::getInstance()->PostMessage($thread['threadid'], KIND_USER, Resources::Get('chat.window.offline_message', array($message))); MapperFactory::getMapper('Thread')->incrementVisitorMessageCount($thread['threadid']); $first_message = MapperFactory::getMapper('Message')->getFirstMessage($thread['threadid']); Visitor::getInstance()->setVisitorNameCookie($visitor_name);
$tmlPage['formendday'] = date('d', $currTime); $tmlPage['formendmonth'] = date('m.y', $currTime); } } // // This function should be defined before it's used otherwise on // some PHP verions it can fail with Fatal error: Call to undefined function // function get_operators_list() { $operators = Operator::getInstance()->GetAllAccessedOperators(); $result = array(); $result[''] = Resources::Get('search.any.operator'); if (!empty($operators)) { foreach ($operators as $op) { $result[$op['operatorid']] = $op['fullname']; } } return $result; } $tmlPage['availableDays'] = range(1, 31); $currTime = getCurrentTime(); $tmlPage['availableMonth'] = get_month_selection($currTime - 400 * 24 * 60 * 60, $currTime); $tmlPage['operatorList'] = get_operators_list(); $TML->assign('departments', Operator::getInstance()->enumAvailableDepartmentsForOperator($operator['operatorid'], Resources::getCurrentLocale())); $TML->assign('locales', getAvailableLocalesForChat()); $tmlPage['show_empty'] = $show_empty; $TML->assign('page_settings', $tmlPage); $TML->assign('advanced', true); $TML->display('thread_search.tpl'); require_once dirname(__FILE__) . '/inc/admin_epilog.php';
$tmlPage["formendday"] = date("d", $end - 24 * 60 * 60); $tmlPage["formendmonth"] = date("m.y", $end - 24 * 60 * 60); } else { $curr = getdate($currTime); if ($curr['mday'] < 7) { // previous month if ($curr['mon'] == 1) { $month = 12; $year = $curr['year'] - 1; } else { $month = $curr['mon'] - 1; $year = $curr['year']; } $starttime = mktime(0, 0, 0, $month, 1, $year); $tmlPage["formstartday"] = date("d", $starttime); $tmlPage["formstartmonth"] = date("m.y", $starttime); $tmlPage["formendday"] = date("d", mktime(0, 0, 0, $month, date("t", $starttime), $year)); $tmlPage["formendmonth"] = date("m.y", mktime(0, 0, 0, $month, date("t", $starttime), $year)); } else { $tmlPage["formstartday"] = date("d", mktime(0, 0, 0, $curr['mon'], 1, $curr['year'])); $tmlPage["formstartmonth"] = date("m.y", mktime(0, 0, 0, $curr['mon'], 1, $curr['year'])); $tmlPage["formendday"] = date("d", $currTime); $tmlPage["formendmonth"] = date("m.y", $currTime); } } if (!empty($errors)) { $TML->assign('errors', $errors); } $TML->assign('page_settings', $tmlPage); $TML->display('statistics.tpl'); require_once dirname(__FILE__) . '/inc/admin_epilog.php';
switch ($_REQUEST['act']) { case 'removerate': Operator::getInstance()->IsCurrentUserAdminOrRedirect(); $rateid = verify_param('rateid', "/^(\\d{1,9})?\$/"); $url = WEBIM_ROOT . '/operator/threadprocessor.php?threadid=' . $threadid; Thread::getInstance()->removeRate($rateid); header('Location: ' . $url); exit; break; case 'removethread': Operator::getInstance()->IsCurrentUserAdminOrRedirect(); $threadid = verify_param('threadid', "/^(\\d{1,9})?\$/"); $url = WEBIM_ROOT . '/operator/threadprocessor.php?threadid=' . $threadid; $TML->assign('removed_thread', true); MapperFactory::getMapper('Thread')->delete($threadid); //Thread::getInstance()->removeRate($rateid); //header("Location: ".$url); //exit(); break; case 'removehistory': Operator::getInstance()->IsCurrentUserAdminOrRedirect(); $url = WEBIM_ROOT . '/operator/history.php'; // TODO history Thread::getInstance()->removeHistory($threadid); header('Location: ' . $url); exit; break; } } $TML->display('thread_log.tpl');
require_once '../classes/models/generic/class.mapperfactory.php'; $operator = Operator::getInstance()->GetLoggedOperator(); $errors = array(); $banMapper = MapperFactory::getMapper('Ban'); if (!empty($_GET['act']) && $_GET['act'] == 'delete') { $banId = isset($_GET['id']) ? $_GET['id'] : ''; if (!preg_match("/^\\d+\$/", $banId)) { $errors[] = 'Wrong argument'; } if (count($errors) == 0) { $banMapper->delete($banId); header('Location: ' . WEBIM_ROOT . '/operator/blocked.php'); exit; } } $blockedList = $banMapper->getAll(); foreach ($blockedList as $k => $v) { $blockedList[$k]['till'] = date(getDateTimeFormat(), $v['till']); } require_once dirname(__FILE__) . '/inc/admin_prolog_after.php'; $TML = new SmartyClass($TITLE_KEY); if (!empty($blockedList)) { $pagination = setup_pagination($blockedList); $tmlPage['pagination'] = $pagination['pagination']; $tmlPage['pagination_items'] = $pagination['pagination_items']; $TML->assign('pagination', generate_pagination($tmlPage['pagination'])); $TML->assign('page_settings', $tmlPage); } $TML->assign('errors', $errors); $TML->display('blocked_visitors.tpl'); require_once dirname(__FILE__) . '/inc/admin_epilog.php';
<?php /* * * Данный файл является частью проекта Веб Мессенджер. * * Все права защищены. (c) 2005-2009 ООО "ТОП". * Данное программное обеспечение и все сопутствующие материалы * предоставляются на условиях лицензии, доступной по адресу * http://webim.ru/license.html * */ $TITLE_KEY = 'leftMenu.auto_invites'; require_once dirname(__FILE__) . '/inc/admin_prolog.php'; require_once '../classes/functions.php'; require_once '../classes/class.operator.php'; require_once '../classes/class.smartyclass.php'; require_once '../classes/models/generic/class.mapperfactory.php'; Operator::getInstance()->IsCurrentUserAdminOrRedirect(); $TML = new SmartyClass($TITLE_KEY); $TML->assign('invites', MapperFactory::getMapper('AutoInvite')->getAll()); $TML->display('auto_invites.tpl');
<?php /* * * Данный файл является частью проекта Веб Мессенджер. * * Все права защищены. (c) 2005-2009 ООО "ТОП". * Данное программное обеспечение и все сопутствующие материалы * предоставляются на условиях лицензии, доступной по адресу * http://webim.ru/license.html * */ require_once '../classes/functions.php'; require_once '../classes/class.operator.php'; require_once '../classes/class.smartyclass.php'; require_once '../classes/models/generic/class.mapperfactory.php'; Operator::getInstance()->IsCurrentUserAdminOrRedirect(); $TML = new SmartyClass(); $TML->assign('operators', Operator::getInstance()->enumOperatorsWithOnlineStatus()); $TML->display('operators.tpl');
$TML->assign('erroremailformat', true); $has_errors = true; } if ($mode == 'cons' && empty($email_from)) { $TML->assign('erroremail_from', true); $has_errors = true; } elseif ($mode == 'cons' && !is_valid_email($email_from)) { $TML->assign('erroremailformat_from', true); $has_errors = true; } if ($has_errors) { $TML->assign('threadid', $_REQUEST['threadid']); $TML->assign('token', $_REQUEST['token']); $TML->assign('level', $_REQUEST['level']); if ($mode != 'cons') { $TML->display('send-history.tpl'); } else { // отделы службы поддержки free-lance --- $aDetps = array(); foreach ($aDkoOrder as $nOrder) { $aDetps[] = array('value' => $nOrder, 'title' => $aDko[$nOrder]['option']); } $TML->assign('depts', $aDetps); //--------------------------------------- $TML->display('send-history-c.tpl'); } exit; } $eHistory = $history = ""; $lastid = -1; $output = Thread::getInstance()->GetMessages($threadid, "text", true, $lastid);
if (file_exists($filename)) { // isset($info['GIF Read Support']) && $info['GIF Read Support'] && TODO check other file types $size = @getimagesize($filename); } } $location = WEBIM_ROOT; if ($showhost) { $location = ($forcesecure ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . WEBIM_ROOT; } $alt = Resources::Get('webim.online.consultant'); $departmentParam = !empty($departmentkey) ? '&departmentkey=' . $departmentkey : ''; $button_img = '<img alt="' . $alt . '" src="' . $location . '/button.php?bim=' . $image . '&lang=' . $locale . $departmentParam . '" border="0"'; if (!empty($size)) { $button_img .= ' width="' . $size[0] . '" height="' . $size[1] . '" '; } $button_img .= ' />'; $chooseOperatorParam = !empty($chooseoperator) ? '&chooseoperator=' . $chooseoperator : ''; $chooseDepartmentParam = !empty($choosedepartment) ? '&choosedepartment=1' : ''; $chatimmediatelyParam = !empty($chatimmediately) ? '&chatimmediately=1' : ''; $link = $location . "/client.php?theme={$theme}" . '&lang=' . $locale . $chooseOperatorParam . $chooseDepartmentParam . $departmentParam . $chatimmediatelyParam; $temp = get_popup($link, $button_img, '', 'webim_' . getWindowNameSuffix(), 'toolbar=0, scrollbars=0, location=0, menubar=0, width=540, height=480, resizable=1', empty($chatimmediately)); $buttonCode = '<!-- webim button -->' . $temp . '<!-- /webim button -->'; $trackerCode = getTrackerCode($location, $theme, $forcesecure); $buttonCode .= getAutoInviteCode($location, $theme); $code = $includeTracker ? $trackerCode . $buttonCode : $buttonCode; $TML->assign('code', htmlspecialchars($code)); $TML->assign('code_raw', $code); $TML->assign('image', $image); Browser::SendHtmlHeaders(); $TML->display('gen_button.tpl');
} } if (empty($errors)) { $time = strtotime($till); if ($time < 1) { $errors[] = Resources::Get("errors.format", Resources::Get("form.field.till")); } $hashTable = array('till' => date('Y-m-d H:i:s', $time), 'address' => $address, 'comment' => $comment); if ($isCreateMode) { $hashTable['created'] = null; } else { $hashTable['banid'] = $banid; } $banMapper->save($hashTable); header("Location: " . AdminURL::getInstance()->getURL('blocked')); exit; } $TML->assign('address', $address); $TML->assign('till', $till); $TML->assign('comment', $comment); } elseif (isset($_REQUEST['banid'])) { $banid = verify_param('banid', "/^\\d{1,9}\$/"); $ban = $banMapper->getById($banid); $TML->assign('address', $ban['address']); $TML->assign('till', date(getDateTimeFormat(), $ban['till'])); $TML->assign('comment', $ban['comment']); } require_once dirname(__FILE__) . '/inc/admin_prolog_after.php'; $TML->assign('errors', $errors); $TML->display('ban.tpl'); require_once dirname(__FILE__) . '/inc/admin_epilog.php';
$TML->assign('action', $action); $threadid = verify_param('thread', "/^\\d{1,8}\$/"); $token = verify_param('token', "/^\\d{1,8}\$/"); $TML->assign('threadid', $threadid); $TML->assign('token', $token); if ($action == 'operators') { $found = Operator::getInstance()->getOnlineOperatorsWithDepartments($operator['operatorid'], Resources::getCurrentLocale()); $TML->assign('operators', $found); // $out = setupPage($found, $action, 'operatorid', 'fullname'); // $TML->assign('out', $out); } elseif ($action == 'visitor_redirected') { $TML->Assign('link', WEBIM_ROOT . '/operator/agent.php?thread=' . $threadid . '&token=' . $token . '&level=ajaxed&viewonly=true'); } elseif ($action == 'chat_closed') { $TML->Assign('link', WEBIM_ROOT . '/operator/agent.php?thread=' . $threadid . '&token=' . $token . '&level=ajaxed&viewonly=true&history=true'); } $TML->display('popup.tpl'); function setupPage($list, $action, $idfield, $valuefield) { global $token, $threadid, $TML; $pagination = setup_pagination($list); if (!empty($pagination)) { $page = array(); $page['pagination'] = $pagination['pagination']; $page['pagination_items'] = $pagination['pagination_items']; $page['params'] = array('thread' => $threadid, 'token' => $token); $TML->assign('pagination', generate_pagination($page['pagination'])); } $out = array(); if (!empty($page['pagination_items'])) { foreach ($page['pagination_items'] as $v) { $page['params']['nextoperatorid'] = $v[$idfield];