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

  protected $_fromTable = '';
  protected $_toTable = '';
  protected $_warningMessage = array();

  protected function _initPre()
  {
    $this->_fromTable = $this->getFromPrefix() . 'ad';
    $this->_toTable = 'engine4_core_adcampaigns';
    $this->_truncateTable($this->getToDb(), 'engine4_core_ads');
    $this->_truncateTable($this->getToDb(), 'engine4_core_adphotos');
    $this->_warningMessage = array("key" => 'escape', 'value' => '');
  }

  protected function _translateRow(array $data, $key = null)
  {

    //SE Ad accept min in multiple of 10 ie (00,10,20,30,40,50) .so we convert min accourding to that.
    $stDateMin = date('i', $data['start_date']);
    if( ($stDateMin % 10) < 5 )
      $min = 0;
    else
      $min = 10;
    $stDateMin = (int) ($stDateMin / 10);
    if( $stDateMin > 0 )
      $stDateMin *= 10;
    $stDateMin += $min;
    $data['start_date'] = mktime(date('H', $data['start_date']), $stDateMin, 0, date('m', $data['start_date']), date('d', $data['start_date']), date('Y', $data['start_date']));


    $endDateMin = date('i', $data['end_date']);
    if( ($endDateMin % 10) < 5 )
      $min = 0;
    else
      $min = 10;
    $endDateMin = (int) ($endDateMin / 10);
    if( $endDateMin > 0 )
      $endDateMin *= 10;
    $endDateMin += $min;
    $data['end_date'] = mktime(date('H', $data['end_date']), $endDateMin, 0, date('m', $data['end_date']), date('d', $data['end_date']), date('Y', $data['end_date']));

    //MAKING CAMPAIGN ARRAY TO BE INSERTION
    $newData = array();
    $newData['adcampaign_id'] = $data['ad_id'];
    $newData['end_settings'] = $data['end_date'] ? 1 : 0;
    $newData['name'] = $data['name'];
    $newData['start_time'] = $this->_translateTime($data['start_date']);
    $newData['end_time'] = $data['end_date'] ? $this->_translateTime($data['end_date']) : '0000-00-00 00:00:00';
    $newData['limit_view'] = $data['total_view'];
    $newData['limit_click'] = $data['total_click'];
    $newData['views'] = $data['count_view'];
    $newData['clicks'] = $data['count_click'];
    $newData['status'] = $data['is_active'];
    $levels = array();
    if( is_null($data['user_group']) ) {
      //FIND LEVEL WHO WILL BE AUTHORIZED TO SEE ADS
      $allLevels = $this->getToDb()->select()
        ->from('engine4_authorization_levels', 'level_id')
        ->query()
        ->fetchAll();
      foreach( $allLevels as $level )
        $levels[] = $level['level_id'];
    } else {
      //FIND LEVEL WHO WILL BE AUTHORIZED TO SEE ADS
      $allowedGrp = unserialize($data['user_group']);
      if( count($allowedGrp) > 0 ) {
        $allowedGrpNames = $this->getFromDb()->select()
          ->from($this->getfromPrefix() . 'user_group', 'title')
          ->where('user_group_id in ( ? ) ', $allowedGrp)
          ->query()
          ->fetchAll();
        foreach( $allowedGrpNames as $grp ) {
          $grpName = $grp['title'];
          $levels[] = $this->getLevelIdByTitleName($grpName);
        }
      }
    }
    $newData['level'] = json_encode($levels);

    //INSERT AD CAMPAIGNS
    $this->getToDb()->insert('engine4_core_adcampaigns', $newData);
    $adcampaign_id = $this->getToDb()->lastInsertId();

    //AD ARRAY
    $newAdData['ad_id'] = $data['ad_id'];
    $newAdData['name'] = $data['name'];
    $newAdData['ad_campaign'] = $data['ad_id'];
    $newAdData['views'] = $data['count_view'];
    $newAdData['clicks'] = $data['count_click'];
    $newAdData['media_type'] = $data['type_id'] == 2 ? 0 : 1;
    $newAdData['html_code'] = $data['html_code'] ? $data['html_code'] : '';

    //INSERT INTO ADS
    $this->getToDb()->insert('engine4_core_ads', $newAdData);

    $file_id = null;
    //CHECKING IMAGE PATH AND INSERT THE PHOTO
    if( !empty($data['image_path']) ) {
      $des = explode('%s', $this->getFromPath() . DIRECTORY_SEPARATOR . 'file/pic/ad' . DIRECTORY_SEPARATOR . $data['image_path']);
      $file = $des[0];
      if( isset($des[1]) )
        $file = $des[0] . $des[1];
      if( $file ) {
        try {
          if( $this->getParam('resizePhotos', true) ) {
            $file_id = $this->_translatePhoto($file, array(
              'parent_type' => 'user',
              'parent_id' => $data['user_id'],
              'user_id' => @$data['user_id'],
            ));
          } else {
            $file_id = $this->_translateFile($file, array(
              'parent_type' => 'user',
              'parent_id' => $data['user_id'],
              'user_id' => @$data['user_id'],
              ), true);
          }
        } catch( Exception $e ) {
          $file_id = null;
          $this->_logFile($e->getMessage());
        }
      }
    }

    //INSERT DATA INTO PHOTO TABLE FOR AD
    $newPhotoData = array();
    $newPhotoData['creation_date'] = date('Y-m-d H:i:s');
    $newPhotoData['modified_date'] = date('Y-m-d H:i:s');
    if( $file_id ) {
      $newPhotoData['file_id'] = $file_id;

      //GETTING STORAGE PATH
      $storagePath = $this->getToDb()->select()
        ->from('engine4_storage_files', 'storage_path')
        ->where('file_id = ?', $file_id)
        ->query()
        ->fetchColumn();

      //INSERT INTO AD PHOTO 
      $this->getToDb()->insert('engine4_core_adphotos', $newPhotoData);
      $photoad_id = $this->getToDb()->lastInsertId();
      //UPDATE INTO CORE AD TABLE
      $this->getToDb()->update('engine4_core_ads', array(
        'photo_id' => $photoad_id,
        'html_code' => '<a href="" target="_blank"><img src="' . $storagePath . '" /></a>'
        ), array(
        'ad_id = ?' => $newData['adcampaign_id'],
      ));
    }
  }
}

/*
 * CREATE TABLE IF NOT EXISTS `phpfox_ad` (
  `ad_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `is_custom` tinyint(1) NOT NULL DEFAULT '0',
  `user_id` int(10) unsigned NOT NULL DEFAULT '0',
  `type_id` tinyint(1) NOT NULL,
  `name` varchar(150) NOT NULL,
  `url_link` mediumtext,
  `start_date` int(11) unsigned NOT NULL DEFAULT '0',
  `end_date` int(11) unsigned NOT NULL DEFAULT '0',
  `total_view` int(10) unsigned NOT NULL DEFAULT '0',
  `total_click` int(10) unsigned NOT NULL DEFAULT '0',
  `is_cpm` tinyint(1) NOT NULL DEFAULT '1',
  `is_active` tinyint(1) NOT NULL DEFAULT '1',
  `module_access` varchar(75) DEFAULT NULL,
  `location` varchar(50) NOT NULL,
  `country_iso` char(2) DEFAULT NULL,
  `gender` tinyint(1) NOT NULL DEFAULT '0',
  `age_from` tinyint(2) NOT NULL DEFAULT '0',
  `age_to` tinyint(2) NOT NULL DEFAULT '0',
  `user_group` varchar(255) DEFAULT NULL,
  `html_code` mediumtext,
  `count_view` int(10) unsigned NOT NULL DEFAULT '0',
  `count_click` int(10) unsigned NOT NULL DEFAULT '0',
  `image_path` varchar(75) DEFAULT NULL,
  `server_id` tinyint(1) NOT NULL DEFAULT '0',
  `gmt_offset` varchar(15) DEFAULT NULL,
  `disallow_controller` mediumtext,
  `postal_code` text,
  `city_location` text,
  PRIMARY KEY (`ad_id`),
  KEY `is_active` (`is_active`,`location`),
  KEY `is_custom` (`is_custom`,`type_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
 */

/*
 * CREATE TABLE IF NOT EXISTS `engine4_core_adcampaigns` (
  `adcampaign_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `end_settings` tinyint(4) NOT NULL,
  `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `start_time` datetime NOT NULL,
  `end_time` datetime NOT NULL,
  `limit_view` int(11) unsigned NOT NULL DEFAULT '0',
  `limit_click` int(11) unsigned NOT NULL DEFAULT '0',
  `limit_ctr` varchar(11) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '0',
  `network` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `level` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `views` int(11) unsigned NOT NULL DEFAULT '0',
  `clicks` int(11) unsigned NOT NULL DEFAULT '0',
  `status` tinyint(4) NOT NULL DEFAULT '0',
  PRIMARY KEY (`adcampaign_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci AUTO_INCREMENT=1 ;
 */

/*
 * CREATE TABLE IF NOT EXISTS `engine4_core_adphotos` (
  `adphoto_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `ad_id` int(11) unsigned NOT NULL,
  `title` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL,
  `description` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `file_id` int(11) unsigned NOT NULL,
  `creation_date` datetime NOT NULL,
  `modified_date` datetime NOT NULL,
  PRIMARY KEY (`adphoto_id`),
  KEY `ad_id` (`ad_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci AUTO_INCREMENT=1 ;
 */

/*
 * CREATE TABLE IF NOT EXISTS `engine4_storage_files` (
  `file_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `parent_file_id` int(10) unsigned DEFAULT NULL,
  `type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `parent_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `parent_id` int(10) unsigned DEFAULT NULL,
  `user_id` int(10) unsigned DEFAULT NULL,
  `creation_date` datetime NOT NULL,
  `modified_date` datetime NOT NULL,
  `service_id` int(10) unsigned NOT NULL DEFAULT '1',
  `storage_path` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `extension` varchar(8) COLLATE utf8mb4_unicode_ci NOT NULL,
  `name` varchar(255) collate utf8mb4_unicode_ci default NULL,
  `mime_major` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,
  `mime_minor` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,
  `size` bigint(20) unsigned NOT NULL,
  `hash` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
  PRIMARY KEY (`file_id`),
  UNIQUE KEY `parent_file_id` (`parent_file_id`,`type`),
  KEY `PARENT` (`parent_type`,`parent_id`),
  KEY `user_id` (`user_id`),
  KEY `service_id` (`service_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci AUTO_INCREMENT=1 ;
 */

/*
 * CREATE TABLE IF NOT EXISTS `engine4_core_ads` (
  `ad_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL,
  `ad_campaign` int(11) unsigned NOT NULL,
  `views` int(11) unsigned NOT NULL DEFAULT '0',
  `clicks` int(11) unsigned NOT NULL DEFAULT '0',
  `media_type` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `html_code` text COLLATE utf8mb4_unicode_ci NOT NULL,
  `photo_id` int(11) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`ad_id`),
  KEY `ad_campaign` (`ad_campaign`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci AUTO_INCREMENT=1 
 */
