mirror of
https://github.com/Mibew/java.git
synced 2025-01-23 01:50:34 +03:00
Created class for work with settings and test case for it
This commit is contained in:
parent
ac64783a29
commit
3929f26791
67
src/messenger/tests/webim/libs/classes/SettingsTest.php
Normal file
67
src/messenger/tests/webim/libs/classes/SettingsTest.php
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
require_once dirname(__FILE__) . '/../../../../webim/libs/classes/settings.php';
|
||||||
|
require_once dirname(__FILE__) . '/../../../../webim/libs/config.php';
|
||||||
|
require_once dirname(__FILE__) . '/../../../../webim/libs/classes/database.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test class for Settings.
|
||||||
|
* Generated by PHPUnit on 2012-07-16 at 15:07:10.
|
||||||
|
*/
|
||||||
|
class SettingsTest extends PHPUnit_Framework_TestCase {
|
||||||
|
|
||||||
|
public static function setUpBeforeClass() {
|
||||||
|
$db = Database::getInstance();
|
||||||
|
$db->query(
|
||||||
|
"INSERT INTO {chatconfig} (vckey, vcvalue) " .
|
||||||
|
"VALUES (?, ?)",
|
||||||
|
array('some_test_key', 'some_test_value')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function tearDownAfterClass() {
|
||||||
|
$db = Database::getInstance();
|
||||||
|
$db->query(
|
||||||
|
"DELETE FROM {chatconfig} WHERE vckey = ? OR vckey = ?",
|
||||||
|
array('some_test_key', 'some_another_test_key')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testGet() {
|
||||||
|
$this->assertEquals('some_test_value', Settings::get('some_test_key'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testSet() {
|
||||||
|
Settings::set('some_test_key', 'some_another_value');
|
||||||
|
$this->assertEquals('some_another_value', Settings::get('some_test_key'));
|
||||||
|
Settings::set('some_test_key', 'some_test_value');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testUpdate() {
|
||||||
|
$db = Database::getInstance();
|
||||||
|
Settings::set('some_test_key', 'some_value_for_update');
|
||||||
|
Settings::set('some_another_test_key', 'some_another_value_for_update');
|
||||||
|
Settings::update();
|
||||||
|
list($count) = $db->query(
|
||||||
|
"SELECT COUNT(*) FROM {chatconfig} WHERE vckey = ? AND vcvalue = ?",
|
||||||
|
array('some_test_key', 'some_value_for_update'),
|
||||||
|
array(
|
||||||
|
'return_rows' => Database::RETURN_ONE_ROW,
|
||||||
|
'fetch_type' => Database::FETCH_NUM
|
||||||
|
)
|
||||||
|
);
|
||||||
|
$this->assertEquals(1, $count);
|
||||||
|
list($count) = $db->query(
|
||||||
|
"SELECT COUNT(*) FROM {chatconfig} WHERE vckey = ? AND vcvalue = ?",
|
||||||
|
array('some_another_test_key', 'some_another_value_for_update'),
|
||||||
|
array(
|
||||||
|
'return_rows' => Database::RETURN_ONE_ROW,
|
||||||
|
'fetch_type' => Database::FETCH_NUM
|
||||||
|
)
|
||||||
|
);
|
||||||
|
$this->assertEquals(1, $count);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
168
src/messenger/webim/libs/classes/settings.php
Normal file
168
src/messenger/webim/libs/classes/settings.php
Normal file
@ -0,0 +1,168 @@
|
|||||||
|
<?php
|
||||||
|
/*
|
||||||
|
* Copyright 2005-2013 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Encapsulates work with system settings.
|
||||||
|
*/
|
||||||
|
Class Settings {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An instance of Settings class
|
||||||
|
* @var Settings
|
||||||
|
*/
|
||||||
|
protected static $instance = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Array of settings
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected $settings = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Array of settings stored in database
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected $settingsInDb = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns an instance of Settings class
|
||||||
|
* @return Settings
|
||||||
|
*/
|
||||||
|
protected static function getInstance(){
|
||||||
|
if (self::$instance === null) {
|
||||||
|
self::$instance = new self();
|
||||||
|
}
|
||||||
|
return self::$instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Settings class constructor. Set default values and load setting from database.
|
||||||
|
* @global $home_locale Specifies home locale. Defined in libs/config.php
|
||||||
|
*/
|
||||||
|
protected function __construct() {
|
||||||
|
global $home_locale;
|
||||||
|
// Set default values
|
||||||
|
$this->settings = array(
|
||||||
|
'dbversion' => 0,
|
||||||
|
'featuresversion' => 0,
|
||||||
|
'title' => 'Your Company',
|
||||||
|
'hosturl' => 'http://mibew.org',
|
||||||
|
'logo' => '',
|
||||||
|
'usernamepattern' => '{name}',
|
||||||
|
'chatstyle' => 'default',
|
||||||
|
'chattitle' => 'Live Support',
|
||||||
|
'geolink' => 'http://api.hostip.info/get_html.php?ip={ip}',
|
||||||
|
'geolinkparams' => 'width=440,height=100,toolbar=0,scrollbars=0,location=0,status=1,menubar=0,resizable=1',
|
||||||
|
'max_uploaded_file_size' => 100000,
|
||||||
|
'max_connections_from_one_host' => 10,
|
||||||
|
'thread_lifetime' => 600,
|
||||||
|
|
||||||
|
'email' => '', /* inbox for left messages */
|
||||||
|
'left_messages_locale' => $home_locale,
|
||||||
|
'sendmessagekey' => 'center',
|
||||||
|
|
||||||
|
'enableban' => '0',
|
||||||
|
'enablessl' => '0',
|
||||||
|
'forcessl' => '0',
|
||||||
|
'usercanchangename' => '1',
|
||||||
|
'enablegroups' => '0',
|
||||||
|
'enablegroupsisolation' => '0',
|
||||||
|
'enablestatistics' => '1',
|
||||||
|
'enabletracking' => '0',
|
||||||
|
'enablepresurvey' => '1',
|
||||||
|
'surveyaskmail' => '0',
|
||||||
|
'surveyaskgroup' => '1',
|
||||||
|
'surveyaskmessage' => '0',
|
||||||
|
'enablepopupnotification' => '0',
|
||||||
|
'showonlineoperators' => '0',
|
||||||
|
'enablecaptcha' => '0',
|
||||||
|
|
||||||
|
'online_timeout' => 30, /* Timeout (in seconds) when online operator becomes offline */
|
||||||
|
'updatefrequency_operator' => 2,
|
||||||
|
'updatefrequency_chat' => 2,
|
||||||
|
'updatefrequency_oldchat' => 7,
|
||||||
|
|
||||||
|
'updatefrequency_tracking' => 10,
|
||||||
|
'visitors_limit' => 20, /* Number of visitors to look over */
|
||||||
|
'invitation_lifetime' => 60, /* Lifetime for invitation to chat */
|
||||||
|
'tracking_lifetime' => 600, /* Time to store tracked old visitors' data */
|
||||||
|
);
|
||||||
|
|
||||||
|
// Load values from database
|
||||||
|
$db = Database::getInstance();
|
||||||
|
$rows = $db->query(
|
||||||
|
"select vckey,vcvalue from {chatconfig}",
|
||||||
|
NULL,
|
||||||
|
array('return_rows' => Database::RETURN_ALL_ROWS)
|
||||||
|
);
|
||||||
|
|
||||||
|
foreach ($rows as $row) {
|
||||||
|
$name = $row['vckey'];
|
||||||
|
$this->settings[$name] = $row['vcvalue'];
|
||||||
|
$this->settingsInDb[$name] = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get setting value.
|
||||||
|
*
|
||||||
|
* @param string $name Variable's name
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public static function get($name) {
|
||||||
|
$instance = self::getInstance();
|
||||||
|
return $instance->settings[$name];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set setting value.
|
||||||
|
*
|
||||||
|
* @param string $name Variables's name
|
||||||
|
* @param mixed $value Variable's value
|
||||||
|
*/
|
||||||
|
public static function set($name, $value) {
|
||||||
|
$instance = self::getInstance();
|
||||||
|
$instance->settings[$name] = $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates settings in database.
|
||||||
|
*/
|
||||||
|
public static function update() {
|
||||||
|
$instance = self::getInstance();
|
||||||
|
$db = Database::getInstance();
|
||||||
|
foreach ($instance->settings as $key => $value) {
|
||||||
|
if (!isset($instance->settingsInDb[$key])) {
|
||||||
|
$db->query(
|
||||||
|
"insert into {chatconfig} (vckey) values (?)",
|
||||||
|
array($key)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
$db->query(
|
||||||
|
"update {chatconfig} set vcvalue=? where vckey=?",
|
||||||
|
array($value, $key)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implementation of destructor
|
||||||
|
*/
|
||||||
|
public function __destruct() {}
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
Loading…
Reference in New Issue
Block a user