|   1:  | <?php
 | 
|   2:  |  | 
|   3:  |  | 
|   4:  |  | 
|   5:  |  | 
|   6:  |  | 
|   7:  |  | 
|   8:  |  | 
|   9:  |  | 
|  10:  |  | 
|  11:  |  | 
|  12:  |  | 
|  13:  |  | 
|  14:  |  | 
|  15:  |  | 
|  16:  |  | 
|  17:  | 
 | 
|  18:  | 
 | 
|  19:  | $path = dirname(dirname(dirname(__DIR__)));
 | 
|  20:  | require_once $path . '/include' . '/cp_header.php';
 | 
|  21:  | 
 | 
|  22:  |  | 
|  23:  |  | 
|  24:  |  | 
|  25:  |  | 
|  26:  | 
 | 
|  27:  |  | 
|  28:  |  | 
|  29:  |  | 
|  30:  |  | 
|  31:  | 
 | 
|  32:  | function xoops_module_update_profile(XoopsModule $module, $oldversion = null)
 | 
|  33:  | {
 | 
|  34:  |     if ($oldversion < '1.6.2') {
 | 
|  35:  |         $GLOBALS['xoopsDB']->queryF('UPDATE `' . $GLOBALS['xoopsDB']->prefix('profile_field') . ' SET field_valuetype=2 WHERE field_name=umode');
 | 
|  36:  |     }
 | 
|  37:  | 
 | 
|  38:  |     if ($oldversion < '1.0.0') {
 | 
|  39:  | 
 | 
|  40:  |         
 | 
|  41:  |         $sql = 'DROP TABLE ' . $GLOBALS['xoopsDB']->prefix('profile_category');
 | 
|  42:  |         $GLOBALS['xoopsDB']->queryF($sql);
 | 
|  43:  | 
 | 
|  44:  |         
 | 
|  45:  |         $sql = 'DROP TABLE ' . $GLOBALS['xoopsDB']->prefix('profile_fieldcategory');
 | 
|  46:  |         $GLOBALS['xoopsDB']->queryF($sql);
 | 
|  47:  | 
 | 
|  48:  |         
 | 
|  49:  |         $GLOBALS['xoopsDB']->queryFromFile(XOOPS_ROOT_PATH . '/modules/' . $module->getVar('dirname', 'n') . '/sql/mysql.sql');
 | 
|  50:  | 
 | 
|  51:  |         include_once __DIR__ . '/install.php';
 | 
|  52:  |         xoops_module_install_profile($module);
 | 
|  53:  |         
 | 
|  54:  |         $goupperm_handler = xoops_getHandler('groupperm');
 | 
|  55:  | 
 | 
|  56:  |         $field_handler = xoops_getModuleHandler('field', $module->getVar('dirname', 'n'));
 | 
|  57:  |         $skip_fields   = $field_handler->getUserVars();
 | 
|  58:  |         $skip_fields[] = 'newemail';
 | 
|  59:  |         $skip_fields[] = 'pm_link';
 | 
|  60:  |         $sql           = 'SELECT * FROM `' . $GLOBALS['xoopsDB']->prefix('user_profile_field') . "` WHERE `field_name` NOT IN ('" . implode("', '", $skip_fields) . "')";
 | 
|  61:  |         $result = $GLOBALS['xoopsDB']->query($sql);
 | 
|  62:  |         if (!$GLOBALS['xoopsDB']->isResultSet($result)) {
 | 
|  63:  |             throw new \RuntimeException(
 | 
|  64:  |                 \sprintf(_DB_QUERY_ERROR, $sql) . $GLOBALS['xoopsDB']->error(), E_USER_ERROR
 | 
|  65:  |             );
 | 
|  66:  |         }
 | 
|  67:  |         $fields        = array();
 | 
|  68:  |         while (false !== ($myrow = $GLOBALS['xoopsDB']->fetchArray($result))) {
 | 
|  69:  |             $fields[] = $myrow['field_name'];
 | 
|  70:  |             $object   = $field_handler->create();
 | 
|  71:  |             $object->setVars($myrow, true);
 | 
|  72:  |             $object->setVar('cat_id', 1);
 | 
|  73:  |             if (!empty($myrow['field_register'])) {
 | 
|  74:  |                 $object->setVar('step_id', 2);
 | 
|  75:  |             }
 | 
|  76:  |             if (!empty($myrow['field_options'])) {
 | 
|  77:  |                 $object->setVar('field_options', unserialize($myrow['field_options']));
 | 
|  78:  |             }
 | 
|  79:  |             $field_handler->insert($object, true);
 | 
|  80:  | 
 | 
|  81:  |             $gperm_itemid = $object->getVar('field_id');
 | 
|  82:  |             $sql          = 'UPDATE ' . $GLOBALS['xoopsDB']->prefix('group_permission') . ' SET gperm_itemid = ' . $gperm_itemid . '   WHERE gperm_itemid = ' . $myrow['fieldid'] . '       AND gperm_modid = ' . $module->getVar('mid') . "       AND gperm_name IN ('profile_edit', 'profile_search')";
 | 
|  83:  |             $GLOBALS['xoopsDB']->queryF($sql);
 | 
|  84:  | 
 | 
|  85:  |             $groups_visible = $goupperm_handler->getGroupIds('profile_visible', $myrow['fieldid'], $module->getVar('mid'));
 | 
|  86:  |             $groups_show    = $goupperm_handler->getGroupIds('profile_show', $myrow['fieldid'], $module->getVar('mid'));
 | 
|  87:  |             foreach ($groups_visible as $ugid) {
 | 
|  88:  |                 foreach ($groups_show as $pgid) {
 | 
|  89:  |                     $sql = 'INSERT INTO ' . $GLOBALS['xoopsDB']->prefix('profile_visibility') . ' (field_id, user_group, profile_group) ' . ' VALUES ' . " ({$gperm_itemid}, {$ugid}, {$pgid})";
 | 
|  90:  |                     $GLOBALS['xoopsDB']->queryF($sql);
 | 
|  91:  |                 }
 | 
|  92:  |             }
 | 
|  93:  | 
 | 
|  94:  |             
 | 
|  95:  |             unset($object);
 | 
|  96:  |         }
 | 
|  97:  | 
 | 
|  98:  |         
 | 
|  99:  |         foreach ($fields as $field) {
 | 
| 100:  |             $GLOBALS['xoopsDB']->queryF('UPDATE `' . $GLOBALS['xoopsDB']->prefix('profile_profile') . '` u, `' . $GLOBALS['xoopsDB']->prefix('user_profile') . "` p SET u.{$field} = p.{$field} WHERE u.profile_id=p.profileid");
 | 
| 101:  |         }
 | 
| 102:  | 
 | 
| 103:  |         
 | 
| 104:  |         $sql = 'DROP TABLE ' . $GLOBALS['xoopsDB']->prefix('user_profile');
 | 
| 105:  |         $GLOBALS['xoopsDB']->queryF($sql);
 | 
| 106:  | 
 | 
| 107:  |         
 | 
| 108:  |         $sql = 'DROP TABLE ' . $GLOBALS['xoopsDB']->prefix('user_profile_field');
 | 
| 109:  |         $GLOBALS['xoopsDB']->queryF($sql);
 | 
| 110:  | 
 | 
| 111:  |         
 | 
| 112:  |         $sql = 'DELETE FROM ' . $GLOBALS['xoopsDB']->prefix('group_permission') . '   WHERE `gperm_modid` = ' . $module->getVar('mid') . " AND `gperm_name` IN ('profile_show', 'profile_visible')";
 | 
| 113:  |         $GLOBALS['xoopsDB']->queryF($sql);
 | 
| 114:  |     }
 | 
| 115:  | 
 | 
| 116:  |     if ($oldversion < '1.6.2') {
 | 
| 117:  |         $GLOBALS['xoopsDB']->queryF('UPDATE `' . $GLOBALS['xoopsDB']->prefix('profile_field') . "` SET `field_valuetype`=1 WHERE `field_name`='umode'");
 | 
| 118:  |     }
 | 
| 119:  | 
 | 
| 120:  |     if ($oldversion < '1.8.6') {
 | 
| 121:  |         
 | 
| 122:  |         $templateDirectory = XOOPS_ROOT_PATH . '/modules/' . $module->getVar('dirname', 'n') . '/templates/';
 | 
| 123:  |         $template_list     = array_diff(scandir($templateDirectory), array('..', '.'));
 | 
| 124:  |         foreach ($template_list as $k => $v) {
 | 
| 125:  |             $fileinfo = new SplFileInfo($templateDirectory . $v);
 | 
| 126:  |             if ($fileinfo->getExtension() === 'html' && $fileinfo->getFilename() !== 'index.html') {
 | 
| 127:  |                 @unlink($templateDirectory . $v);
 | 
| 128:  |             }
 | 
| 129:  |         }
 | 
| 130:  | 
 | 
| 131:  |         xoops_load('xoopsfile');
 | 
| 132:  |         
 | 
| 133:  |         $imagesDirectory = XOOPS_ROOT_PATH . '/modules/' . $module->getVar('dirname', 'n') . '/images/';
 | 
| 134:  |         $folderHandler   = XoopsFile::getHandler('folder', $imagesDirectory);
 | 
| 135:  |         $folderHandler->delete($imagesDirectory);
 | 
| 136:  |         
 | 
| 137:  |         $cssFile       = XOOPS_ROOT_PATH . '/modules/' . $module->getVar('dirname', 'n') . '/templates/style.css';
 | 
| 138:  |         $folderHandler = XoopsFile::getHandler('file', $cssFile);
 | 
| 139:  |         $folderHandler->delete($cssFile);
 | 
| 140:  |         
 | 
| 141:  |         $sql = 'DELETE FROM ' . $GLOBALS['xoopsDB']->prefix('tplfile') . " WHERE `tpl_module` = '" . $module->getVar('dirname', 'n') . "' AND `tpl_file` LIKE '%.html%'";
 | 
| 142:  |         $GLOBALS['xoopsDB']->queryF($sql);
 | 
| 143:  |     }
 | 
| 144:  | 
 | 
| 145:  |     if ($oldversion < '1.8.8') {
 | 
| 146:  |         
 | 
| 147:  |         $tables = new Xmf\Database\Tables();
 | 
| 148:  |         $tables->useTable('profile_field');
 | 
| 149:  |         $criteria = new Criteria('field_name', 'user_sig', '=');
 | 
| 150:  |         $tables->update('profile_field', array('field_type' => 'dhtml'), $criteria);
 | 
| 151:  |         $tables->executeQueue(true);
 | 
| 152:  |     }
 | 
| 153:  | 
 | 
| 154:  |     if ($oldversion < '1.9.2') {
 | 
| 155:  |         
 | 
| 156:  |         $sql          = 'ALTER TABLE ' . $GLOBALS['xoopsDB']->prefix('profile_field') . " CHANGE `field_name` `field_name` VARCHAR(64) NOT NULL DEFAULT ''";
 | 
| 157:  |         $GLOBALS['xoopsDB']->queryF($sql);
 | 
| 158:  | 
 | 
| 159:  |     }
 | 
| 160:  | 
 | 
| 161:  |     $profile_handler = xoops_getModuleHandler('profile', $module->getVar('dirname', 'n'));
 | 
| 162:  |     $profile_handler->cleanOrphan($GLOBALS['xoopsDB']->prefix('users'), 'uid', 'profile_id');
 | 
| 163:  |     $field_handler = xoops_getModuleHandler('field', $module->getVar('dirname', 'n'));
 | 
| 164:  |     $user_fields   = $field_handler->getUserVars();
 | 
| 165:  |     $criteria      = new Criteria('field_name', "('" . implode("', '", $user_fields) . "')", 'IN');
 | 
| 166:  |     $field_handler->updateAll('field_config', 0, $criteria);
 | 
| 167:  | 
 | 
| 168:  |     return true;
 | 
| 169:  | }
 | 
| 170:  |  |