mirror of
https://github.com/Mibew/tray.git
synced 2025-01-22 18:10: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