<?php
/**
  * Ahead WebSoft Technologies Pvt Ltd.
  * @copyright  Copyright 2006-2026 Ahead WebSoft Technologies Pvt Ltd.
  * @license    https://www.socialengine.com/policies
*/

class Install_Import_Version3_CoreSettings extends Install_Import_Version3_Abstract
{
  protected $_toTableTruncate = false;

  protected function _run()
  {
    $data = $this->getFromDb()->select()
      ->from('se_settings')
      ->order('setting_id ASC')
      ->limit(1)
      ->query()
      ->fetch()
      ;

    if( empty($data) ) {
      $this->_warning('No settings found', 0);
      return;
    }

    // Set settings

    // Activity
    $this->_setSetting('activity.userdelete', !empty($data['setting_actions_selfdelete']), 1);
    
    // Core
    $this->_setSetting('core.email.from', @$data['setting_email_fromemail'], 'no-reply@' . $_SERVER['HTTP_HOST']);
    $this->_setSetting('core.license.key', @$data['setting_key'], '');
    $this->_setSetting('core.general.browse', !empty($data['setting_permission_search']), 1);
    $this->_setSetting('core.general.commenthtml', @$data['setting_comment_html'], '');
    $this->_setSetting('core.general.portal', !empty($data['setting_permission_portal']), 1);
    $this->_setSetting('core.general.profile', !empty($data['setting_permission_profile']), 1);
    $this->_setSetting('core.general.search', !empty($data['setting_permission_search']), 1);
    $this->_setSetting('core.spam.censor', @$data['setting_banned_words'], '');
    $this->_setSetting('core.spam.comment', !empty($data['setting_comment_code']), 0);
    $this->_setSetting('core.spam.contact', !empty($data['setting_contact_code']), 0);
    $this->_setSetting('core.spam.invite', !empty($data['setting_invite_code']), 0);
    $this->_setSetting('core.spam.login', !empty($data['setting_login_code']), 0);
    $this->_setSetting('core.spam.signup', !empty($data['setting_signup_code']), 0);
    $this->_setSetting('core.spam.ipbans', @$data['setting_banned_ips'], '');

    // User
    $this->_setSetting('user.signup.approve', !empty($data['setting_signup_enable']), 1);
    $this->_setSetting('user.signup.checkemail', !empty($data['setting_signup_invite_checkemail']), 1);
    $this->_setSetting('user.signup.random', !empty($data['setting_signup_randpass']), 1);
    $this->_setSetting('user.signup.terms', !empty($data['setting_signup_tos']), 1);
    $this->_setSetting('user.signup.verifyemail', !empty($data['setting_signup_verify']), 1);


    // Chat
    if( array_key_exists('setting_chat_enabled', $data) ) {
      $this->_setSetting('chat.chat.enabled', !empty($data['setting_chat_enabled']));
      $this->_setSetting('chat.general.delay', @$data['setting_chat_update'], 5000);
      $this->_setSetting('chat.im.enabled', !empty($data['chat.im.enabled']));
    }
    
    // Video
    if( array_key_exists('setting_video_ffmpeg_path', $data) ) {
      $this->_setSetting('video.ffmpeg.path', @$data['setting_video_ffmpeg_path'], '');
      $this->_setSetting('video.jobs', @$data['setting_video_max_jobs'], 2);
    }


    
    // Get public level settings

    // Get public level id
    $publicLevelIdentity = $this->getToDb()->select()
      ->from('engine4_authorization_levels', 'level_id')
      ->where('flag = ?', 'public')
      ->limit(1)
      ->query()
      ->fetchColumn(0)
      ;

    // User
    $this->_updateLevelPermission($publicLevelIdentity,
      'user', 'view', !empty($data['setting_permission_profile']));

    
    // Album
    if( array_key_exists('setting_permission_album', $data) ) {
      $this->_updateLevelPermission($publicLevelIdentity,
        'album', 'view', !empty($data['setting_permission_album']));
    }
    
    // Blog
    if( array_key_exists('setting_permission_album', $data) ) {
      $this->_updateLevelPermission($publicLevelIdentity,
        'blog', 'view', !empty($data['setting_permission_blog']));
    }

    // Classified
    if( array_key_exists('setting_permission_album', $data) ) {
      $this->_updateLevelPermission($publicLevelIdentity,
        'classified', 'view', !empty($data['setting_permission_classified']));
    }

    // Event
    if( array_key_exists('setting_permission_album', $data) ) {
      $this->_updateLevelPermission($publicLevelIdentity,
        'event', 'view', !empty($data['setting_permission_event']));
    }

    // Group
    if( array_key_exists('setting_permission_album', $data) ) {
      $this->_updateLevelPermission($publicLevelIdentity,
        'group', 'view', !empty($data['setting_permission_group']));
    }

    // Poll
    if( array_key_exists('setting_permission_album', $data) ) {
      $this->_updateLevelPermission($publicLevelIdentity,
        'poll', 'view', !empty($data['setting_permission_poll']));
    }

    // Video
    if( array_key_exists('setting_permission_album', $data) ) {
      $this->_updateLevelPermission($publicLevelIdentity,
        'video', 'view', !empty($data['setting_permission_video']));
    }

    
  }

  protected function _setSetting($key, $value, $default = null)
  {
    if( null === $value ) {
      $value = $default;
    }
    $this->_insertOrUpdate($this->getToDb(), 'engine4_core_settings', array(
      'name' => $key,
      'value' => $value,
    ), array(
      'value' => $value,
    ));
  }

  protected function _updateLevelPermission($levelIdentity, $type, $name, $value, $params = null)
  {
    if( !$levelIdentity ) return;
    $this->_insertOrUpdate($this->getToDb(), 'engine4_authorization_permissions', array(
      'level_id' => $levelIdentity,
      'type' => $type,
      'name' => $name,
      'value' => !empty($data['setting_permission_profile']),
      'params' => $params,
    ), array(
      'value' => !empty($data['setting_permission_profile']),
      'params' => $params,
    ));
  }
  
  protected function _translateRow(array $data, $key = null)
  {
    return false;
  }
}

/*
CREATE TABLE IF NOT EXISTS `se_settings` (
  `setting_id` int(9) NOT NULL auto_increment,
*  `setting_key` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL default '',
  `setting_version` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL default '',
  `setting_online` tinyint(1) NOT NULL default '1',
  `setting_url` tinyint(1) NOT NULL default '0',
  `setting_username` tinyint(1) NOT NULL default '1',
  `setting_password_method` tinyint(1) NOT NULL default '1',
  `setting_password_code_length` tinyint(2) NOT NULL default '16',
  `setting_lang_allow` int(1) NOT NULL default '1',
  `setting_lang_autodetect` tinyint(1) NOT NULL default '1',
  `setting_lang_anonymous` tinyint(1) NOT NULL default '1',
  `setting_timezone` varchar(5) COLLATE utf8mb4_unicode_ci NOT NULL default '-8',
  `setting_dateformat` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL default 'n/j/Y',
  `setting_timeformat` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL default 'g:i A',
*  `setting_permission_profile` tinyint(1) NOT NULL default '1',
  `setting_permission_invite` tinyint(1) NOT NULL default '1',
*  `setting_permission_search` tinyint(1) NOT NULL default '1',
*  `setting_permission_portal` tinyint(1) NOT NULL default '1',
*  `setting_banned_ips` text COLLATE utf8mb4_unicode_ci,
  `setting_banned_emails` text COLLATE utf8mb4_unicode_ci,
  `setting_banned_usernames` text COLLATE utf8mb4_unicode_ci,
*  `setting_banned_words` text COLLATE utf8mb4_unicode_ci,
*  `setting_comment_code` tinyint(1) NOT NULL default '0',
*  `setting_comment_html` varchar(250) COLLATE utf8mb4_unicode_ci NOT NULL default '',
  `setting_connection_allow` tinyint(1) NOT NULL default '3',
  `setting_connection_framework` tinyint(1) NOT NULL default '0',
  `setting_connection_types` text COLLATE utf8mb4_unicode_ci,
  `setting_connection_other` tinyint(1) NOT NULL default '1',
  `setting_connection_explain` tinyint(1) NOT NULL default '1',
  `setting_signup_photo` tinyint(1) NOT NULL default '0',
*  `setting_signup_enable` tinyint(1) NOT NULL default '1',
  `setting_signup_welcome` tinyint(1) NOT NULL default '1',
  `setting_signup_invite` tinyint(1) NOT NULL default '0',
*  `setting_signup_invite_checkemail` tinyint(1) NOT NULL default '0',
  `setting_signup_invite_numgiven` smallint(3) NOT NULL default '5',
  `setting_signup_invitepage` tinyint(1) NOT NULL default '0',
*  `setting_signup_verify` tinyint(1) NOT NULL default '0',
*  `setting_signup_code` tinyint(1) NOT NULL default '1',
*  `setting_signup_randpass` tinyint(1) NOT NULL default '0',
*  `setting_signup_tos` tinyint(1) NOT NULL default '1',
*  `setting_invite_code` tinyint(1) NOT NULL default '1',
  `setting_actions_showlength` int(14) NOT NULL default '2629743',
  `setting_actions_actionsperuser` smallint(2) NOT NULL default '7',
*  `setting_actions_selfdelete` smallint(2) NOT NULL default '1',
  `setting_actions_privacy` smallint(2) NOT NULL default '1',
  `setting_actions_actionsonprofile` smallint(2) NOT NULL default '7',
  `setting_actions_actionsinlist` smallint(2) NOT NULL default '35',
  `setting_actions_visibility` smallint(2) NOT NULL default '1',
  `setting_actions_preference` smallint(1) NOT NULL default '1',
  `setting_subnet_field1_id` int(9) NOT NULL default '-2',
  `setting_subnet_field2_id` int(9) NOT NULL default '-2',
  `setting_email_fromname` varchar(70) COLLATE utf8mb4_unicode_ci NOT NULL default '',
*  `setting_email_fromemail` varchar(70) COLLATE utf8mb4_unicode_ci NOT NULL default '',
  `setting_cache_enabled` tinyint(1) unsigned NOT NULL default '0',
  `setting_cache_default` varchar(32) collate utf8mb4_unicode_ci default 'file',
  `setting_cache_lifetime` int(9) unsigned default '120',
  `setting_cache_file_options` text COLLATE utf8mb4_unicode_ci,
  `setting_cache_memcache_options` text COLLATE utf8mb4_unicode_ci,
  `setting_cache_xcache_options` text COLLATE utf8mb4_unicode_ci,
  `setting_session_options` text COLLATE utf8mb4_unicode_ci,
*  `setting_contact_code` tinyint(1) unsigned NOT NULL default '1',
*  `setting_login_code` tinyint(1) unsigned NOT NULL default '0',
  `setting_login_code_failedcount` smallint(2) unsigned NOT NULL default '0',
  `setting_stats_remote` tinyint(1) NOT NULL default '1',
  `setting_stats_remote_last` int(11) NOT NULL default '0',
*  `setting_permission_poll` tinyint(3) unsigned default '1',
  `setting_poll_html` text COLLATE utf8mb4_unicode_ci,
*  `setting_permission_classified` int(1) NOT NULL default '1',
  `setting_permission_forum` int(1) NOT NULL default '1',
  `setting_forum_code` int(1) NOT NULL default '1',
  `setting_forum_status` int(1) NOT NULL default '1',
  `setting_forum_modprivs` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL default '11111',
*  `setting_permission_blog` tinyint(4) NOT NULL default '1',
*  `setting_permission_event` tinyint(4) NOT NULL default '1',
*  `setting_permission_group` int(1) NOT NULL default '1',
  `setting_group_discussion_code` int(1) NOT NULL default '1',
  `setting_group_discussion_html` varchar(250) COLLATE utf8mb4_unicode_ci NOT NULL default '',
*  `setting_permission_album` int(1) NOT NULL default '1',
*  `setting_chat_enabled` tinyint(3) unsigned NOT NULL default '1',
*  `setting_chat_update` smallint(5) unsigned NOT NULL default '2000',
  `setting_chat_showphotos` tinyint(3) unsigned NOT NULL default '1',
*  `setting_im_enabled` tinyint(3) unsigned NOT NULL default '1',
  `setting_im_html` text COLLATE utf8mb4_unicode_ci,
*  `setting_permission_video` tinyint(1) unsigned NOT NULL default '1',
*  `setting_video_ffmpeg_path` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL default '',
  `setting_video_width` smallint(3) unsigned NOT NULL default '480',
  `setting_video_height` smallint(3) unsigned NOT NULL default '386',
  `setting_video_thumb_width` smallint(3) unsigned NOT NULL default '80',
  `setting_video_thumb_height` smallint(3) unsigned NOT NULL default '70',
  `setting_video_mimes` text COLLATE utf8mb4_unicode_ci,
  `setting_video_exts` text COLLATE utf8mb4_unicode_ci,
*  `setting_video_max_jobs` tinyint(2) unsigned NOT NULL default '3',
  `setting_video_cronjob` tinyint(1) unsigned NOT NULL default '0',
  PRIMARY KEY  (`setting_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci AUTO_INCREMENT=2 ;
 * 
 */

/*
CREATE TABLE `engine4_core_settings` (
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
  `value` varchar(255) NOT NULL,
  PRIMARY KEY  (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci ;
INSERT IGNORE INTO `engine4_core_settings` (`name`, `value`) VALUES
('activity.notifications.template', 'Hello %title%,\n\n%body%\n\n--Site Admin'),
('authorization.defaultlevel', '4'),
('core.admin.reauthenticate', '0'),
('core.admin.mode', 'none'),
('core.admin.password', ''),
('core.admin.timeout', '600'),
('core.comet.enabled', '1'),
('core.comet.mode', 'short'),
('core.comet.delay', '1000'),
('core.comet.reconnect', '2000'),
('core.doctype', 'XHTML1_STRICT'),
('core.email.from', 'email@domain.com'),
('core.facebook.key', ''),
('core.facebook.secret', ''),
('core.general.commenthtml', ''),
('core.general.portal', '1'),
('core.general.profile', '1'),
('core.general.search', '1'),
('core.license.email', 'email@domain.com'),
('core.license.statistics', '1'),
('core.locale.locale', 'auto'),
('core.locale.timezone', 'US/Pacific'),
('core.mail.enabled', '1'),
('core.mail.queueing', '1'),
('core.mail.count', '25'),
('core.secret', 'staticSalt'),
('core.site.title', 'Social Network'),
('core.site.creation', NOW()),
('core.spam.censor', ''),
('core.spam.comment', 0),
('core.spam.contact', 0),
('core.spam.invite', 0),
('core.spam.ipbans', ''),
('core.spam.login', 0),
('core.spam.signup', 0),
('core.tasks.interval', '60'),
('core.tasks.key', ''),
('core.tasks.last', '0'),
('core.tasks.mode', 'curl'),
('core.tasks.pid', ''),
('core.tasks.timeout', '900'),
('core.thumbnails.main.width', '720'),
('core.thumbnails.main.height', '720'),
('core.thumbnails.main.mode', 'resize'),
('core.thumbnails.profile.width', '200'),
('core.thumbnails.profile.height', '400'),
('core.thumbnails.profile.mode', 'resize'),
('core.thumbnails.normal.width', '140'),
('core.thumbnails.normal.height', '160'),
('core.thumbnails.normal.mode', 'resize'),
('core.thumbnails.icon.width', '48'),
('core.thumbnails.icon.height', '48'),
('core.thumbnails.icon.mode', 'crop'),
('core.general.quota', '0'),
('core.general.notificationupdate', 120000)
 * 
 */