| 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: | |