<?php

namespace XF\Install\Upgrade;

use XF\Db\Schema\Alter;

class Version2000034 extends AbstractUpgrade
{
	public function getVersionName()
	{
		return '2.0.0 Beta 4';
	}

	public function step1()
	{
		$sm = $this->schemaManager();

		$sm->alterTable('xf_member_stat', function (Alter $alter)
		{
			$alter->changeColumn('sort_order', 'varchar', 50)->setDefault('message_count');
		});
	}

	public function step2()
	{
		$sm = $this->schemaManager();

		$sm->alterTable('xf_thread_field', function (Alter $alter)
		{
			$alter->addColumn('editable_user_group_ids', 'blob');
		});

		$db = $this->db();
		$db->beginTransaction();

		$fields = $db->fetchAll("
			SELECT *
			FROM xf_thread_field
		");
		foreach ($fields AS $field)
		{
			if (!isset($field['user_editable']))
			{
				continue;
			}

			if ($field['user_editable'])
			{
				$update = '-1'; // not a perfect conversion
			}
			else if ($field['moderator_editable'])
			{
				$update = '4';
			}
			else
			{
				$update = '';
			}

			$db->update(
				'xf_thread_field',
				['editable_user_group_ids' => $update],
				'field_id = ?',
				$field['field_id']
			);
		}

		$db->commit();

		$sm->alterTable('xf_thread_field', function (Alter $alter)
		{
			$alter->dropColumns(['user_editable', 'moderator_editable']);
		});
	}
}
