function showOperator()
{
    $TML = new SmartyClass();
    $TML->assign('mode', 'profile');
    setOperator($TML);
    $TML->display('operator.tpl');
}
function showDepartment()
{
    global $TITLE_KEY;
    $TML = new SmartyClass($TITLE_KEY);
    $TML->assign('mode', 'edit');
    setDepartment($TML);
    $TML->display('department.tpl');
}
Exemple #3
0
function getInvitationContent($avatar, $message, $isSecure)
{
    $host = ($isSecure ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'];
    $TML = new SmartyClass();
    $TML->assign('message', empty($message) ? Resources::Get('invite.default.message') : $message);
    $TML->assign('operatorimage', empty($avatar) ? null : $host . $avatar);
    $TML->assign('theme', Browser::getCurrentTheme());
    $TML->assign('addressprefix', $host);
    $invitation = $TML->fetch('invite.tpl');
    $invitation = addslashes($invitation);
    $invitation = str_replace("\n", "' + \n'", $invitation);
    $invitation = str_replace("\r", '', $invitation);
    return $invitation;
}
Exemple #4
0
function showLeaveMessageSentPage()
{
    $TML = new SmartyClass();
    $TML->assignCompanyInfoAndTheme();
    $TML->assign('theme', Browser::getCurrentTheme());
    $TML->display('leave-message-sent.tpl');
    exit;
}
Exemple #5
0
<?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';
Exemple #6
0
 * 
 * Данный файл является частью проекта Веб Мессенджер.
 * 
 * Все права защищены. (c) 2005-2009 ООО "ТОП".
 * Данное программное обеспечение и все сопутствующие материалы
 * предоставляются на условиях лицензии, доступной по адресу
 * http://webim.ru/license.html
 * 
 */
$TITLE_KEY = 'page_login.title';
require_once '../classes/functions.php';
require_once '../classes/common.php';
require_once '../classes/class.smartyclass.php';
require_once '../classes/class.operator.php';
require_once '../classes/class.browser.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 . "/");
        }
Exemple #7
0
 * Данный файл является частью проекта Веб Мессенджер.
 * 
 * Все права защищены. (c) 2005-2009 ООО "ТОП".
 * Данное программное обеспечение и все сопутствующие материалы
 * предоставляются на условиях лицензии, доступной по адресу
 * http://webim.ru/license.html
 * 
 */
$TITLE_KEY = 'page_analysis.adv.search.title';
require_once dirname(__FILE__) . '/inc/admin_prolog.php';
require_once '../classes/functions.php';
require_once '../classes/class.thread.php';
require_once '../classes/class.operator.php';
require_once '../classes/class.smartyclass.php';
require_once '../classes/class.pagination.php';
$TML = new SmartyClass($TITLE_KEY);
$tmlPage = array();
$operator = Operator::getInstance()->GetLoggedOperator();
$show_empty = isset($_REQUEST['show_empty']) && $_REQUEST['show_empty'] == 1 ? true : false;
if (isset($_REQUEST['q'])) {
    $q = $_REQUEST['q'];
    $items_per_page = verify_param('items', "/^\\d{1,3}\$/", DEFAULT_ITEMS_PER_PAGE);
    $op_param = verify_param('operator', "/^\\d+\$/");
    // TODO should be operatorid
    $departmentidParam = verify_param('departmentid', "/^\\d+\$/");
    $localeParam = verify_param($_REQUEST['locale'], '/^[a-z]{2}$/');
    $rateParam = verify_param('rate', "/^\\w+\$/");
    $startday = verify_param('startday', "/^\\d+\$/");
    $startmonth = verify_param('startmonth', "/^\\d{2}.\\d{2}\$/");
    $endday = verify_param('endday', "/^\\d+\$/");
    $endmonth = verify_param('endmonth', "/^\\d{2}.\\d{2}\$/");
Exemple #8
0
/* 
 * 
 * Данный файл является частью проекта Веб Мессенджер.
 * 
 * Все права защищены. (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');
}
Exemple #9
0
 * Все права защищены. (c) 2005-2009 ООО "ТОП".
 * Данное программное обеспечение и все сопутствующие материалы
 * предоставляются на условиях лицензии, доступной по адресу
 * 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':
Exemple #10
0
 * Все права защищены. (c) 2005-2009 ООО "ТОП".
 * Данное программное обеспечение и все сопутствующие материалы
 * предоставляются на условиях лицензии, доступной по адресу
 * http://webim.ru/license.html
 * 
 */
require_once 'classes/functions.php';
require_once 'classes/class.thread.php';
require_once 'classes/class.smartyclass.php';
require_once 'classes/class.settings.php';
require_once 'classes/class.visitor.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stdf.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/captcha.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/feedback.php';
$captcha = new captcha();
$TML = new SmartyClass();
$TML->assignCompanyInfoAndTheme();
$errors = array();
$page = array();
$department = (int) $_REQUEST["department_db_id"];
$canChangeName = Visitor::getInstance()->canVisitorChangeName();
$v = GetVisitorFromRequestAndSetCookie();
$visitorid = $v['id'];
$captcha_num = $v['captcha'];
$message = get_mandatory_param('message');
$has_errors = false;
if (count($_POST) == 0 && count($_FILES) == 0) {
    //костыль. при отправке на сервер большого файла приходит пустой request  и files, как по длругому определить, пока не придумал
    $has_errors = true;
    $errors[0] = 6;
    $errors[1] = iconv("UTF-8", "WINDOWS-1251//IGNORE", "Файл очень велик");
Exemple #11
0
 * 
 * Все права защищены. (c) 2005-2009 ООО "ТОП".
 * Данное программное обеспечение и все сопутствующие материалы
 * предоставляются на условиях лицензии, доступной по адресу
 * http://webim.ru/license.html
 * 
 */
require_once 'classes/functions.php';
require_once 'classes/class.thread.php';
require_once 'classes/class.smartyclass.php';
require_once 'classes/class.settings.php';
require_once 'classes/class.visitor.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/captcha.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/feedback.php';
$captcha = new captcha();
$TML = new SmartyClass();
$TML->assignCompanyInfoAndTheme();
$errors = array();
$page = array();
$email = get_mandatory_param('email');
$phone = get_mandatory_param('phone');
// отправке диалогов
$dept = 1;
// пока не выбирается
$canChangeName = Visitor::getInstance()->canVisitorChangeName();
$v = GetVisitorFromRequestAndSetCookie();
$visitorid = $v['id'];
$captcha_num = $v['captcha'];
if ($canChangeName) {
    $visitor_name = get_mandatory_param('name');
} else {
Exemple #12
0
<?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';
 * 
 * Данный файл является частью проекта Веб Мессенджер.
 * 
 * Все права защищены. (c) 2005-2009 ООО "ТОП".
 * Данное программное обеспечение и все сопутствующие материалы
 * предоставляются на условиях лицензии, доступной по адресу
 * http://webim.ru/license.html
 * 
 */
require_once '../classes/functions.php';
require_once '../classes/class.thread.php';
require_once '../classes/class.pagination.php';
require_once '../classes/class.smartyclass.php';
require_once '../classes/class.visitsession.php';
$operator = Operator::getInstance()->GetLoggedOperator();
$TML = new SmartyClass();
$items_per_page = verify_param("items", "/^\\d{1,3}\$/", DEFAULT_ITEMS_PER_PAGE);
$visitsessionid = verify_param("visitsessionid", "/^\\d{0,63}\\.?\\d{0,63}\$/", "");
$threadid = verify_param("threadid", "/^\\d{1,8}\$/", "");
$found = Thread::getInstance()->GetThreadsByVisitSessionID($visitsessionid);
$tmlPage = array();
if ($found) {
    $pagination = setup_pagination($found);
    $tmlPage['pagination'] = $pagination['pagination'];
    $tmlPage['pagination_items'] = $pagination['pagination_items'];
    $TML->assign('pagination', generate_pagination($tmlPage['pagination']));
    for ($i = 0; $i < count($tmlPage['pagination_items']); $i++) {
        $tmlPage['pagination_items'][$i]['diff'] = webim_date_diff($tmlPage['pagination_items'][$i]['modified'] - $tmlPage['pagination_items'][$i]['created']);
    }
}
$TML->assign('page_settings', $tmlPage);
<?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');
Exemple #15
0
$visitSession = null;
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');
Exemple #16
0
 * 
 * Данный файл является частью проекта Веб Мессенджер.
 * 
 * Все права защищены. (c) 2005-2009 ООО "ТОП".
 * Данное программное обеспечение и все сопутствующие материалы
 * предоставляются на условиях лицензии, доступной по адресу
 * http://webim.ru/license.html
 * 
 */
require_once '../classes/functions.php';
require_once '../classes/class.smartyclass.php';
require_once '../classes/class.operator.php';
require_once '../classes/class.settings.php';
require_once '../classes/class.button.php';
Operator::getInstance()->IsCurrentUserAdminOrRedirect();
$TML = new SmartyClass();
$image = verify_param('image', "/^[\\w\\.]+\$/", 'webim');
$theme = verify_param('theme', "/^\\w+\$/", 'default');
$TML->assign('theme', $theme);
//$TML->assign('availableImages', Button::enumAvailableImages(WEBIM_CURRENT_LOCALE));
//$TML->assign('availableThemes', enumAvailableThemes());
//$TML->assign('availableDepartments', MapperFactory::getMapper("Department")->enumDepartments(Resources::getCurrentLocale()));
$TML->assign('params', Button::getParameters());
$lang = Resources::getCurrentLocale();
$showhost = verify_param('include_host_url', '/^y$/', '') == 'y';
$includeTracker = verify_param('add_track_code', '/^y$/', '') == 'y';
$forcesecure = verify_param('secure', '/^y$/', '') == 'y';
$chooseoperator = verify_param('choose_operator', "/^\\w+\$/", '');
$chatimmediately = verify_param('chat_immediately', '/^y$/', '') == 'y';
$departmentkey = verify_param('department_key', "/^\\w+\$/");
$choosedepartment = verify_param('choose_department', '/^y$/', '') == 'y';
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');
}
/* 
 * 
 * Данный файл является частью проекта Веб Мессенджер.
 * 
 * Все права защищены. (c) 2005-2009 ООО "ТОП".
 * Данное программное обеспечение и все сопутствующие материалы
 * предоставляются на условиях лицензии, доступной по адресу
 * http://webim.ru/license.html
 * 
 */
require_once '../classes/functions.php';
require_once '../classes/class.thread.php';
require_once '../classes/class.department.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);
Exemple #19
0
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}&amp;force=true", 'viewlink' => $_SERVER['PHP_SELF'] . "?thread={$threadid}&amp;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 . "&amp;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);
}
Exemple #20
0
 * Данный файл является частью проекта Веб Мессенджер.
 * 
 * Все права защищены. (c) 2005-2009 ООО "ТОП".
 * Данное программное обеспечение и все сопутствующие материалы
 * предоставляются на условиях лицензии, доступной по адресу
 * http://webim.ru/license.html
 * 
 */
$TITLE_KEY = 'leftMenu.client_settings';
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';
$answersKey = 'answers_' . WEBIM_CURRENT_LOCALE;
Operator::getInstance()->IsCurrentUserAdminOrRedirect();
$TML = new SmartyClass($TITLE_KEY);
$errors = array();
if (isset($_REQUEST['dellogo'])) {
    Settings::getInstance()->Set('logo', '');
}
if (isset($_POST['submitted'])) {
    $fields = array('company_name', 'hosturl', $answersKey, 'superviser_email', 'from_email', 'offline_email', 'stats_email', 'max_sessions');
    $emails = array('stats_email' => 'settings.stats_email', 'superviser_email' => 'settings.superviser_email', 'from_email' => 'settings.from_email', 'offline_email' => 'settings.offline_email');
    $params = array();
    foreach ($fields as $key) {
        if (isset($_REQUEST[$key])) {
            $params[$key] = get_mandatory_param($key);
        }
    }
    foreach ($emails as $key => $res) {
        if (empty($params[$key])) {
 * Данный файл является частью проекта Веб Мессенджер.
 * 
 * Все права защищены. (c) 2005-2009 ООО "ТОП".
 * Данное программное обеспечение и все сопутствующие материалы
 * предоставляются на условиях лицензии, доступной по адресу
 * http://webim.ru/license.html
 * 
 */
$TITLE_KEY = 'page_analysis.search.title';
require_once dirname(__FILE__) . '/inc/admin_prolog.php';
require_once '../classes/functions.php';
require_once '../classes/class.thread.php';
require_once '../classes/class.operator.php';
require_once '../classes/class.smartyclass.php';
require_once '../classes/class.pagination.php';
$TML = new SmartyClass($TITLE_KEY);
$tmlPage = null;
$operator = Operator::getInstance()->GetLoggedOperator();
$items_per_page = verify_param("items", "/^\\d{1,3}\$/", DEFAULT_ITEMS_PER_PAGE);
$show_empty = isset($_REQUEST['show_empty']) && $_REQUEST['show_empty'] == 1 ? true : false;
if (isset($_REQUEST['q'])) {
    $nTotal = Thread::getInstance()->GetListThreadsCount($operator['operatorid'], $_REQUEST['q'], $show_empty);
    if ($nTotal) {
        $pagination = setup_pagination_cnt($nTotal, $items_per_page);
        $nLimit = $pagination['items'];
        $nOffset = $pagination['start'];
        $res = Thread::getInstance()->GetListThreads($operator['operatorid'], $_REQUEST['q'], $show_empty, $nLimit, $nOffset);
        $tmlPage['pagination'] = $pagination;
        $tmlPage['pagination_items'] = $res;
    }
    if (!empty($tmlPage['pagination_items'])) {
require_once '../classes/class.smartyclass.php';
//  if (isset($_GET['threadid'])) {
//    $threadid = verify_param("threadid", "/^(\d{1,9})?$/", "");
//    $lastid = -1;
//    $TML->assign('messages', Thread::getInstance()->GetMessages($threadid, "html", false, $lastid));
//  }
$threadid = verify_param('threadid', "/^(\\d{1,9})?\$/");
if (empty($threadid)) {
    die('threadid should be provided for history');
}
$operator = Operator::getInstance()->GetLoggedOperator();
$canAccess = Thread::getInstance()->hasThreadAccess($operator['operatorid'], $threadid);
if (!$canAccess) {
    die('access denied');
}
$TML = new SmartyClass();
$lastid = '-1';
$TML->assign('messages', Thread::getInstance()->GetMessages($threadid, 'html', false, $lastid));
$TML->assign('threadid', $threadid);
$TML->assign('is_admin', Operator::getInstance()->isCurrentUserAdmin());
if (isset($_REQUEST['act'])) {
    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':
Exemple #23
0
 * 
 * Все права защищены. (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';
Exemple #24
0
<?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');
Exemple #25
0
 * 
 * Все права защищены. (c) 2005-2009 ООО "ТОП".
 * Данное программное обеспечение и все сопутствующие материалы
 * предоставляются на условиях лицензии, доступной по адресу
 * http://webim.ru/license.html
 * 
 */
$TITLE_KEY = 'statistics.title';
require_once dirname(__FILE__) . '/inc/admin_prolog.php';
require_once '../classes/functions.php';
require_once '../classes/class.thread.php';
require_once '../classes/class.operator.php';
require_once '../classes/class.smartyclass.php';
Operator::getInstance()->IsCurrentUserAdminOrRedirect();
$tmlPage = null;
$TML = new SmartyClass($TITLE_KEY);
$tmlPage['availableDays'] = range(1, 31);
$currTime = getCurrentTime();
$tmlPage['availableMonth'] = get_month_selection($currTime - 400 * 24 * 60 * 60, $currTime + 50 * 24 * 60 * 60);
$tmlPage['showresults'] = false;
$tmlPage['departments'] = MapperFactory::getMapper("Department")->enumDepartments(Resources::getCurrentLocale());
$tmlPage['locales'] = getAvailableLocalesForChat();
Operator::getInstance()->ensureOperatorsAreInLastAccess();
$errors = array();
if (isset($_GET['startday'])) {
    $startday = verify_param("startday", "/^\\d+\$/");
    $startmonth = verify_param("startmonth", "/^\\d{2}.\\d{2}\$/");
    $endday = verify_param("endday", "/^\\d+\$/");
    $endmonth = verify_param("endmonth", "/^\\d{2}.\\d{2}\$/");
    $start = get_form_date($startday, $startmonth);
    $end = get_form_date($endday, $endmonth) + 24 * 60 * 60;
Exemple #26
0
$page = array();
$token = verify_param("token", "/^\\d{1,8}\$/");
$threadid = verify_param("threadid", "/^\\d{1,8}\$/");
$thread = Thread::getInstance()->GetThreadById($threadid);
if (!$thread || !isset($thread['token']) || $token != $thread['token']) {
    die("wrong thread");
}
$email = !empty($_POST['email']) ? trim($_POST['email']) : false;
$email_from = !empty($_POST['email_from']) ? trim($_POST['email_from']) : false;
$mode = !empty($_POST['mode']) ? trim($_POST['mode']) : false;
$dept = !empty($_POST['dept']) ? trim($_POST['dept']) : false;
// отправке диалогов из мессенджера ----------
if ($dept && isset($aDko[$dept]['email'])) {
    $email = $aDko[$dept]['email'];
}
$TML = new SmartyClass();
$TML->assignCompanyInfoAndTheme();
$has_errors = false;
if ($mode != 'cons' && empty($email)) {
    $TML->assign('erroremail', true);
    $has_errors = true;
} elseif ($mode != 'cons' && !is_valid_email($email)) {
    $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;
Exemple #27
0
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';
Exemple #28
0
 * Данное программное обеспечение и все сопутствующие материалы
 * предоставляются на условиях лицензии, доступной по адресу
 * http://webim.ru/license.html
 * 
 */
$TITLE_KEY = 'page_ban.title';
require_once dirname(__FILE__) . '/inc/admin_prolog_before.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/class.thread.php';
require_once '../classes/class.visitsession.php';
require_once '../classes/models/generic/class.mapperfactory.php';
$banMapper = MapperFactory::getMapper("Ban");
$TML = new SmartyClass($TITLE_KEY);
if (!isset($_REQUEST['submitted'])) {
    if (isset($_REQUEST['address'])) {
        $TML->assign('address', $_REQUEST['address']);
    }
    $TML->assign('till', date(getDateTimeFormat(), time() + 24 * 60 * 60));
    // next day
}
$operator = Operator::getInstance()->GetLoggedOperator();
$errors = array();
if (isset($_REQUEST['submitted'])) {
    $banid = verify_param("banid", "/^(\\d{1,9})?\$/", "");
    $address = get_mandatory_param("address");
    $till = get_mandatory_param("till");
    $comment = get_mandatory_param('comment');
    if (empty($address)) {
Exemple #29
0
/* 
 * 
 * Данный файл является частью проекта Веб Мессенджер.
 * 
 * Все права защищены. (c) 2005-2009 ООО "ТОП".
 * Данное программное обеспечение и все сопутствующие материалы
 * предоставляются на условиях лицензии, доступной по адресу
 * http://webim.ru/license.html
 * 
 */
require_once '../classes/functions.php';
require_once '../classes/class.thread.php';
require_once '../classes/class.pagination.php';
require_once '../classes/class.smartyclass.php';
$operator = Operator::getInstance()->GetLoggedOperator();
$TML = new SmartyClass();
$action = $_REQUEST['action'];
$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');