<?php 
/* 
 * You may not change or alter any portion of this comment or credits 
 * of supporting developers from this source code or any supporting source code 
 * which is considered copyrighted (c) material of the original comment or credit authors. 
 * 
 * This program is distributed in the hope that it will be useful, 
 * but WITHOUT ANY WARRANTY; without even the implied warranty of 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
 */ 
 
/** 
 * @copyright    XOOPS Project https://xoops.org/ 
 * @license      GNU GPL 2 or later (https://www.gnu.org/licenses/gpl-2.0.html) 
 * @package 
 * @author       XOOPS Development Team 
 */ 
 
use XoopsModules\About\{ 
    Helper, 
    Utility, 
    Common\Configurator 
}; 
 
/** @var Helper $helper */ 
/** @var Utility $utility */ 
/** @var Configurator $configurator */ 
 
if ((!defined('XOOPS_ROOT_PATH')) || !($GLOBALS['xoopsUser'] instanceof \XoopsUser) 
    || !$GLOBALS['xoopsUser']->isAdmin()) { 
    exit('Restricted access' . PHP_EOL); 
} 
 
/** 
 * @param string $tablename 
 * 
 * @return bool 
 */ 
function tableExists($tablename) 
{ 
    $result = $GLOBALS['xoopsDB']->queryF("SHOW TABLES LIKE '$tablename'"); 
 
    return $GLOBALS['xoopsDB']->getRowsNum($result) > 0; 
} 
 
/** 
 * Prepares system prior to attempting to install module 
 * @param \XoopsModule $module {@link XoopsModule} 
 * 
 * @return bool true if ready to install, false if not 
 */ 
function xoops_module_pre_update_about(\XoopsModule $module) 
{ 
    $utility = new Utility(); 
 
    $xoopsSuccess = $utility::checkVerXoops($module); 
    $phpSuccess   = $utility::checkVerPhp($module); 
 
    return $xoopsSuccess && $phpSuccess; 
} 
 
/** 
 * Performs tasks required during update of the module 
 * @param \XoopsModule $module {@link XoopsModule} 
 * @param null         $previousVersion 
 * 
 * @return bool true if update successful, false if not 
 */ 
function xoops_module_update_about(\XoopsModule $module, $previousVersion = null) 
{ 
    $moduleDirName      = basename(dirname(__DIR__)); 
    $moduleDirNameUpper = mb_strtoupper($moduleDirName); 
 
 
    $helper       = Helper::getInstance(); 
    $utility      = new Utility(); 
    $configurator = new Configurator(); 
 
    if ($previousVersion < 240) { 
        //delete old HTML templates 
        if (count($configurator->templateFolders) > 0) { 
            foreach ($configurator->templateFolders as $folder) { 
                $templateFolder = $GLOBALS['xoops']->path('modules/' . $moduleDirName . $folder); 
                if (is_dir($templateFolder)) { 
                    $templateList = array_diff(scandir($templateFolder, SCANDIR_SORT_NONE), ['..', '.']); 
                    foreach ($templateList as $k => $v) { 
                        $fileInfo = new \SplFileInfo($templateFolder . $v); 
                        if ('html' === $fileInfo->getExtension() && 'index.html' !== $fileInfo->getFilename()) { 
                            if (is_file($templateFolder . $v)) { 
                                unlink($templateFolder . $v); 
                            } 
                        } 
                    } 
                } 
            } 
        } 
 
        //  ---  DELETE OLD FILES --------------- 
        if (count($configurator->oldFiles) > 0) { 
            //    foreach (array_keys($GLOBALS['uploadFolders']) as $i) { 
            foreach (array_keys($configurator->oldFiles) as $i) { 
                $tempFile = $GLOBALS['xoops']->path('modules/' . $moduleDirName . $configurator->oldFiles[$i]); 
                if (is_file($tempFile)) { 
                    unlink($tempFile); 
                } 
            } 
        } 
 
        //  ---  DELETE OLD FOLDERS --------------- 
        xoops_load('XoopsFile'); 
        if (count($configurator->oldFolders) > 0) { 
            //    foreach (array_keys($GLOBALS['uploadFolders']) as $i) { 
            foreach (array_keys($configurator->oldFolders) as $i) { 
                $tempFolder = $GLOBALS['xoops']->path('modules/' . $moduleDirName . $configurator->oldFolders[$i]); 
                /* @var XoopsObjectHandler $folderHandler */ 
                $folderHandler = \XoopsFile::getHandler('folder', $tempFolder); 
                $folderHandler->delete($tempFolder); 
            } 
        } 
 
        //  ---  CREATE FOLDERS --------------- 
        if (count($configurator->uploadFolders) > 0) { 
            //    foreach (array_keys($GLOBALS['uploadFolders']) as $i) { 
            foreach (array_keys($configurator->uploadFolders) as $i) { 
                $utility::createFolder($configurator->uploadFolders[$i]); 
            } 
        } 
 
        //  ---  COPY blank.png FILES --------------- 
        if (count($configurator->copyBlankFiles) > 0) { 
            $file = dirname(__DIR__) . '/assets/images/blank.png'; 
            foreach (array_keys($configurator->copyBlankFiles) as $i) { 
                $dest = $configurator->copyBlankFiles[$i] . '/blank.png'; 
                $utility::copyFile($file, $dest); 
            } 
        } 
 
        //delete .html entries from the tpl table 
        $sql = 'DELETE FROM ' . $GLOBALS['xoopsDB']->prefix('tplfile') . " WHERE `tpl_module` = '" . $module->getVar('dirname', 'n') . '\' AND `tpl_file` LIKE \'%.html%\''; 
        $GLOBALS['xoopsDB']->queryF($sql); 
 
        /** @var \XoopsGroupPermHandler $grouppermHandler */ 
        $grouppermHandler = xoops_getHandler('groupperm'); 
 
        return $grouppermHandler->deleteByModule($module->getVar('mid'), 'item_read'); 
    } 
 
    return true; 
} 
 
 |