Подключение к нескольким базам данных
Материал из Umicms
Версия от 13:09, 5 июня 2013; Mad grant (обсуждение | вклад)
Если при выполнении вашего кастомного php-кода необходимо выполнить подключение к другой базе данных, для выборки необходимых данных, то это необходимо сделать с помощью класса ConnectionPool, который расположен в файле \classes\system\subsystems\database\ConnectionPool.php
Далее будет приведен пример кода, который осуществляет подключение к основной и второй базам данных, происходит выборка из второй базы данных, после чего на основании полученных данных создается страница типа "Новость":
$pool = ConnectionPool::getInstance();
//основная база данных
$pool->addConnection("core", "localhost", "umi", "umi", "umi");
//вторая база данных
$pool->addConnection("comfort", "localhost", "umi", "umi", "comfort");
$pool->init();
$conn = $pool->getConnection('comfort');
$sql = "SELECT alt_name FROM `cms3_hierarchy` WHERE `id` = 72";
//выполнение запроса к второй базе данных
$result = $conn->query($sql, true);
list($name) = mysql_fetch_row($result);
//Создание новости с помощью API в основной базе
$hierarchyTypes = umiHierarchyTypesCollection::getInstance();
$hierarchyType = $hierarchyTypes->getTypeByName("news", "item");
$hierarchyTypeId = $hierarchyType->getId();
$hierarchy = umiHierarchy::getInstance();
//add new element
$newElementId = $hierarchy->addElement(0, $hierarchyTypeId, $name, 'umitest');
if($newElementId === false) {
echo "Не удалось создать новую страницу";
}
//Установим права на страницу в состояние "по умолчанию"
$permissions = permissionsCollection::getInstance();
$permissions->setDefaultPermissions($newElementId);
//Получим экземпляр страницы
$newElement = $hierarchy->getElement($newElementId);
if($newElement instanceof umiHierarchyElement) {
$newElement->setValue("h1", 'umitest');
$newElement->setValue("publish_time", time());
$newElement->setIsActive(true);
$newElement->commit();
echo "Успешно создана страница с адресом: \"", $hierarchy->getPathById($newElementId), "\"";
} else {
echo "Не удалось получить экземпляр страницы #{$newElementId}.";
}