Подключение к второй базе данных в кастомном методе
Материал из Umicms
Если при выполнении вашего кастомного 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}."; }
