HEX
Server: Apache/2
System: Linux ind.multivistaglobal.com 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64
User: multivis (1002)
PHP: 8.1.32
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: /home/multivis/public_html/wp-content/plugins/cool-timeline-pro/admin/class-migration.php
<?php
if ( ! defined( 'ABSPATH' ) ) {
	exit;
}
class CTL_migrations
{

    /**
     * Constructor.
     */
    public function __construct()
    {        
        // migrate old version stories       
        add_action('admin_init',array($this,'ctl_postmeta_migration'));//Post meta migration > 3.5.3
        add_action('admin_init',array($this,'ctl_settings_migration'));
    }


    // migrate stories from cool timeline free version
    function ctl_postmeta_migration($version){
        
        //return if pro migration done
        if(get_option('ctl-pro-postmeta-migration') || get_option('ctl-postmeta-migration') ){
            return;
        }
        //old free to new pro
        $free_version = (get_option('cool-free-timeline-v')?get_option('cool-free-timeline-v'):2.1);
        if(version_compare($free_version,'2.1', '>') && !get_option('ctl-postmeta-migration') ){
            return;	
        }
        //direct new pro verion
        $pro_version=get_option("cool-timelne-pro-v");
       if(version_compare($pro_version,'4.0', '>') && !get_option('ctl-postmeta-migration') ){
           return;	
          }

        $args = array( 
            'post_type'   => 'cool_timeline',
             'post_status'=>array('publish','future'),
             'numberposts' => -1 );
           $posts = get_posts( $args );

         //Story Type
         $story_type_key = array(
            'story_based_on',           
            'ctl_story_date',        
            'ctl_story_timestamp',
            'ctl_story_lbl',
            'ctl_story_lbl_2',
            'ctl_story_order'         
        ); 

        //Story Media
        $story_media_key = array(
            'story_format',           
            'ctl_video',        
            'img_cont_size',
            're_'
        );

        $story_icon_key = array(
            'fa_field_icon',           
            'use_img_icon',        
            'story_img_icon'
        );
        
        $story_extra_key = array(
            'story_custom_link',           
            'ctl_story_color' 
        );
       
        if(isset($posts)&& is_array($posts) && !empty($posts))
        {
           foreach ( $posts as $post )
            {   

                $img_as_icon =  get_post_meta($post->ID,'use_img_icon',true); 
                $story_img_icon = get_post_meta($post->ID,'story_img_icon',true);              
                foreach ( $story_icon_key as $item )
                { 
                    $item_value =  get_post_meta($post->ID,$item,true);                            
                    if($img_as_icon == 'on' && !empty($story_img_icon)){                                              
                        $array_icon_type['story_icon_type'] = 'custom_image';                        
                        if(!empty($story_img_icon) ){
                            $thumbnail_img = wp_get_attachment_image_src($story_img_icon['id'],'thumbnail');
                            $array_icon_type['story_img_icon'] = $story_img_icon;
                            $array_icon_type['story_img_icon'] += array('thumbnail' =>$thumbnail_img[0],'width'=>'843','height'=>'450');                             
                        }
                    }
                    else{                        
                        $array_icon_type['story_icon_type'] = 'fontawesome';                           
                        $array_icon_type[$item] = $item_value;
                    }
                }

                foreach ( $story_type_key as $item )
                { 
                    $item_value =  get_post_meta($post->ID,$item,true);
                    $array_story_type[$item] = $item_value;
                }

                $slideshow_ids = [];
                foreach ( $story_media_key as $item )
                { 
                    $item_value =  get_post_meta($post->ID,$item,true);
                    if($item == 're_'){
                        if(gettype($item_value) == 'array'){
                            $total_slides = count($item_value);
                            for($i=0;$i<$total_slides;$i++){
                                array_push($slideshow_ids,$item_value[$i]['ctl_slide']['id']);                               
                            }  
                            if(!empty($slideshow_ids)){
                                $slideshow_images = implode(',',$slideshow_ids);
                                $array_story_media['ctl_slide'] = $slideshow_images;
                            }
                        }else{
                            $array_story_media['ctl_slide'] = '';  
                        } 
                                              
                    }else{
                        $array_story_media[$item] = $item_value;
                    }             
                }   
              

                foreach ( $story_extra_key as $item )
                { 
                    $item_value =  get_post_meta($post->ID,$item,true);
                    if($item == 'story_custom_link'){
                        $array_extra_key[$item]['url'] = $item_value;
                    } 
                    else{
                        $array_extra_key[$item] = $item_value;
                    }
                } 
                  
                update_post_meta($post->ID, 'story_type', $array_story_type);
                update_post_meta($post->ID, 'story_media',$array_story_media);
                update_post_meta($post->ID, 'story_icon',$array_icon_type);
                update_post_meta($post->ID, 'extra_settings',$array_extra_key); 
                update_option("ctl-pro-postmeta-migration","done"); 
                update_option("ctl-postmeta-migration","done"); 
            }
        }

    }  
    
    function ctl_settings_migration()
	{
        if(!get_option('cool_timeline_options')){
            return;
        }  

		$old_settings =	get_option('cool_timeline_options');	   
	    $new_settings = $this->ctl_recursive_change_key($old_settings, array('face' => 'font-family','size'=>'font-size','weight'=>'font-weight','src'=>'url'));
	 
		update_option('cool_timeline_settings', $new_settings);
		update_option('ctl_settings_migration_status','done');
		delete_option('cool_timeline_options');
	}

    function recursive_change_key($arr, $set) {
		if (is_array($arr) && is_array($set)) {
			$newArr = array();
			foreach ($arr as $k => $v) {
				$key = array_key_exists( $k, $set) ? $set[$k] : $k;
				$newArr[$key] = is_array($v) ? $this->recursive_change_key($v, $set) : $v;
                if($key == 'font-size'){
                    				
					$newArr[$key] = str_replace("px","",$v);	
                    				
				}	
			}
		     
			return $newArr;
		}
		return $arr;	
	}
    function ctl_recursive_change_key($arr, $set) {
		if (is_array($arr) && is_array($set)) {
			$newArr = array();
            $timeline_header = array(); $navigation_settings = array(); $pagination_settings = array();
            $blog_post_settings = array(); $story_date_settings = array(); $story_content_settings = array();
            $story_media_settings = array();           
          
            $timeline_header_key = array('display_title','title_text','user_avatar');     
            $navigation_settings_key = array('enable_navigation','navigation_position');   
            $pagination_settings_key = array('enable_pagination'); 
            $blog_post_settings_key = array('post_meta');  
            $story_date_settings_key = array('year_label_visibility','disable_months','ctl_date_formats','custom_date_style','custom_date_formats');
            $story_content_settings_key = array('content_length','display_readmore','read_more_lbl','story_link_target','default_icon');
            $story_media_settings_key = array('stories_images','ctl_slideshow','animation_speed');
            $arr = $this->recursive_change_key($arr, $set);
            foreach($arr as $key=>$value){
                if(in_array($key,$timeline_header_key)){  

                   
                    if($key == 'user_avatar'){  
                        if(!empty($value)){
                            $value = $this->recursive_change_key($value, array('src'=>'url'));
                            $thumbnail_img = wp_get_attachment_image_src($value['id'],'thumbnail');
                            $value += array('thumbnail' =>$thumbnail_img[0],'width'=>'843','height'=>'450');                       
                            $timeline_header += array($key =>$value);
                        }                      
                        
                    }else{
                        $timeline_header += array($key =>$value);
                    }   
                    
                }elseif(in_array($key,$navigation_settings_key)){  
                    $navigation_settings += array($key =>$value);  
                }    
                elseif(in_array($key,$pagination_settings_key)){     
                    $pagination_settings += array($key =>$value);  
                }                   
                elseif(in_array($key,$blog_post_settings_key)){ 
                    $blog_post_settings += array($key =>$value); 
                }  
                elseif(in_array($key,$story_date_settings_key)){ 
                    $story_date_settings += array($key =>$value);   
                } 
                elseif(in_array($key,$story_content_settings_key)){  
                    $story_content_settings += array($key =>$value);  
                }
                elseif(in_array($key,$story_media_settings_key)){
                    $story_media_settings += array($key =>$value);  
                }elseif($key == 'main_title_typo'){
                    $title_alignment = isset($arr['title_alignment'])?$arr['title_alignment']:'center';
                    $value +=array('text-align' =>$title_alignment,'type' =>'google'); 
                    $newArr['main_title_typo'] = $value;
                }elseif($key == 'post_title_text_style'){
					$newArr['post_title_typo']['text-transform'] = $value;
				}elseif($key == 'background'){				    
					if(isset($value['enabled'])){					
						$newArr['timeline_background']='1';						
						$newArr['timeline_bg_color']=$value['bg_color'];						
					}
					else{						
						$newArr['timeline_background'] ='0';
					}						
				}elseif($key == 'post_title_typo'){
                    $value +=array('type' =>'google');
                    $newArr['post_title_typo'] = $value;
                }elseif($key == 'ctl_date_typo'){
                    $value +=array('type' =>'google');
                    $newArr['ctl_date_typo'] = $value;
                }elseif($key == 'post_content_typo'){
                    $value +=array('type' =>'google');
                    $newArr['post_content_typo'] = $value;
                }
                else{
                    $newArr[$key] = $value;
                }
                
            }
            
            $newArr['timeline_header'] = $timeline_header; 
            $newArr['navigation_settings'] = $navigation_settings; 
            $newArr['pagination_settings'] = $pagination_settings; 
            $newArr['blog_post_settings'] = $blog_post_settings; 
            $newArr['story_date_settings'] = $story_date_settings; 
            $newArr['story_content_settings'] = $story_content_settings; 
            $newArr['story_media_settings'] = $story_media_settings;   
			return $newArr;
		}
		return $arr;	
	}
 
	

}
new CTL_migrations();