brokers_cli.php 11.7 KB
<?php

if ( class_exists( 'WP_CLI' ) ) {
    class TZ_BROKER_COMMANDS {

        //collect rows of a csv file and store them in an associative array
        function sync_broker_teams_assignment() {

            $staff_members = [];
            $row = 0;
            if (($handle = fopen(wp_get_upload_dir()['basedir'] . "/" . "staff_assignment.csv", "r")) !== FALSE) {
                while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
                    if($row == 0) {
                        ++$row;
                        continue;
                    }
                    $staff_members[] = ['full_name'=>trim($data[0]),'email'=>trim($data[1]),
                    'phone'=>trim($data[2]).' #'.trim($data[3]),'category'=>strtolower(trim($data[4])),'sub_category'=>strtolower(trim($data[5])),'brokerages'=>trim($data[6])];
                }
            }

            // if(count($staff_members) > 0) {

            //    $assignments = get_fields('options')['assignments'];

               //Gather all the field keys from the ACF system
               $field_keys = [];
               $field_obj = get_field_objects('options')['assignments'];
               foreach($field_obj['sub_fields'] as $fo) {
                $field_keys[] =  ['name'=>$fo['name'],'key'=>$fo['key']];
               }

               global $wpdb;
               $broker_posts = $wpdb->get_results('select post_author,ID from wp_posts where post_type = "broker"',OBJECT_K);

               $sub_cat_assignments = [];

            //    $current_assignment_count = get_option('options_assignments');
                $iter_counter = 0;
               foreach($staff_members as $assign) {

                    foreach($field_keys as $fk) {

                        $option_name = 'options_assignments_'.$iter_counter."_".$fk['name'];
                        $option_value = $assign[$fk['name']];
                        if($option_value == 'all') {
                            $option_value = '';
                        }

                        $option_name_key = '_options_assignments_'.$iter_counter."_".$fk['name'];
                        $option_value_key = $fk['key'];

                        // if($fk['name'] == 'brokerages') {
                        //     var_dump($assign[$fk['name']]);
                        // }
                        
                        if($fk['name'] == 'brokerages' && !empty($option_value)) {
                            $option_value = explode(',',$option_value);

                            $new_option_values = [];

                                foreach($option_value as $ov) {
                                    foreach($broker_posts as $key => $val ) {
                                        if($ov == $key) {
                                            $ov = $val->ID;
                                            $new_option_values[] = (int)$val->ID;
                                        }
                                    }
                                }
    
                            $option_value = $new_option_values;
                            $sub_cat = trim($assign['sub_category']);

                            $assign['sub_category'] = str_replace(' ', '_',$assign['sub_category']);
                            $assign['sub_category'] = str_replace('#', '',$assign['sub_category']);
                            $assign['sub_category'] = str_replace('/', '',$assign['sub_category']);


                            if($sub_cat == 'farm team #1' || $sub_cat == 'farm team #2' || $sub_cat == 'commercial team #1' || $sub_cat == 'commercial team #2' || $sub_cat == 'commercial team #3') {
                                $sub_cat_assignments[$sub_cat] = $option_value;
                            }

                        }

                        update_option($option_name, $option_value);
                        update_option($option_name_key, $option_value_key);
                    }
                    // var_dump( $assign);
                    ++$iter_counter;

               }

// var_dump( $sub_cat_assignments['commercial team #1']);exit;
               update_option('options_farm_1_broker_assignment', $sub_cat_assignments['farm team #1']);
               update_option('options_farm_2_broker_assignment', $sub_cat_assignments['farm team #2']);
               update_option('options_comm_1_broker_assignment', $sub_cat_assignments['commercial team #1']);
               update_option('options_comm_2_broker_assignment', $sub_cat_assignments['commercial team #2']);
               update_option('options_comm_3_broker_assignment', $sub_cat_assignments['commercial team #3']);

               //a:1:{i:0;s:5:"73040";}
               //s:452:"a:35:{i:0;i:73040;i:1;i:73044;i:2;i:73045;i:3;i:73046;i:4;i:73047;i:5;i:73050;i:6;i:73051;i:7;i:73053;i:8;i:73057;i:9;i:73058;i:10;i:73061;i:11;i:73064;i:12;i:73066;i:13;i:73067;i:14;i:73070;i:15;i:73071;i:16;i:73072;i:17;i:73074;i:18;i:73076;i:19;i:73083;i:20;i:73086;i:21;i:73087;i:22;i:73088;i:23;i:73089;i:24;i:73090;i:25;i:73092;i:26;i:73094;i:27;i:73095;i:28;i:73098;i:29;i:73099;i:30;i:73100;i:31;i:73102;i:32;i:73103;i:33;i:73106;i:34;i:73110;}";

               update_option('options_assignments', $iter_counter);

            // }

            // syncBrokerListToPosts();
               
        }

        function rebuild_brokers_assigment($args ) {

            // WP_CLI::log(wp_get_upload_dir()['basedir'] . "/" . $args[0]);

            $new_brokers = [];

            $row = 0;
            if (($handle = fopen(wp_get_upload_dir()['basedir'] . "/" . $args[0], "r")) !== FALSE) {
                while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
                    if($row == 0) {
                        ++$row;
                        continue;
                    }
                    $broker_name = $data[0];
                    $broker_id = $data[2];
                    $new_brokers[] = ["broker_name"=>$broker_name,"broker_id"=>$broker_id];
                    ++$row;
                }
                fclose($handle);
            }

            $replacements = [];
            $brokers = getBrokerageList();

            foreach($new_brokers as $nb) {

                $broker_user = get_user_by('login',$nb['broker_name']);

                if($broker_user) {
                    
                    $old_broker_id = get_user_meta($broker_user->ID, 'broker_id', true);
                    $old_brokerage = get_user_meta($broker_user->ID, 'brokerage', true);

                    if(!empty($nb['broker_id']) && $old_broker_id != $nb['broker_id']) {

                        $new_brokerage = null;
                        foreach($brokers as $broker) {
                            if($broker['broker_id'] == $nb['broker_id']) {
                                $new_brokerage = $broker['brokerage'];
                            }
                        }

                        if(!empty($new_brokerage)) {
                            $replacements[] = ['user_id'=>$broker_user->ID,
                                'new_broker_id'=>$nb['broker_id'],'new_brokerage'=>$new_brokerage,
                                'old_broker_id'=>$old_broker_id,'old_brokerage'=>$old_brokerage];
                        }

                    }
                }

            }

            $old_assigns_brokers = get_option('old_broker_replacements');
            if(!$old_assigns_brokers) {
                update_option('old_broker_replacements', serialize($replacements));
            }

            foreach($replacements as $replacer) {

                update_user_meta($replacer['user_id'], 'broker_id', $replacer['new_broker_id']);
                update_user_meta($replacer['user_id'], 'brokerage', $replacer['new_brokerage']);

            }
            


        }

        function rebuild_broker_list_from_csv($args ) {

            // WP_CLI::log(wp_get_upload_dir()['basedir'] . "/" . $args[0]);

            $new_brokers = [];

            $row = 0;
            if (($handle = fopen(wp_get_upload_dir()['basedir'] . "/" . $args[0], "r")) !== FALSE) {
                while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
                    if($row == 0) {
                        ++$row;
                        continue;
                    }
                    $new_id = $data[0];
                    $name = $data[1];
                    $new_brokers[] = ["broker_id"=>$new_id,"brokerage"=>$name];
                    // echo $name;
                    ++$row;
                }
                fclose($handle);
            }

            $old_brokers = getBrokerageList();

            $old_saved_brokers = get_option('old_broker_list');
            if(!$old_saved_brokers) {
                update_option('old_broker_list', serialize($old_brokers));
            }

            update_option('broker_list', serialize($new_brokers));


        }

        private function cleanTerm($str) {
            return trim($str);
        }

        private function cutOffDomain($str) {
            if(strpos($str, 'https://brokers.thecommonwell.ca/wp-content/uploads') !== false) {
                return str_replace( 'https://brokers.thecommonwell.ca/wp-content/uploads','',$str);
            } else {
                return $str;
            }
        }

        private static function setPostData($post_id, $categories, $doc_type) {

           wp_set_post_terms($post_id,$categories, 'media_category');
           wp_set_post_terms($post_id, $doc_type, 'document_type');
    
        }

        function import_media_files( $args ) {

            // WP_CLI::log(wp_get_upload_dir()['basedir'] . "/" . $args[0]);

            $new_media = [];

            $row = 0;
            if (($handle = fopen(wp_get_upload_dir()['basedir'] . "/" . $args[0], "r")) !== FALSE) {
                while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
                    if($row == 0) {
                        ++$row;
                        continue;
                    }
                    $new_media[] = ['title'=>trim($data[0]),'file_name'=>trim($data[1]),'link'=>$this->cutOffDomain(trim($data[2])),
                        'type'=>trim($data[3]),'product_line'=>trim($data[4]),'keywords'=>trim($data[5])];
                    ++$row;
                }
                fclose($handle);
            }
            $document_types = [];
            foreach($new_media as $nm) {

                if(!file_exists(wp_get_upload_dir()['basedir'] . $nm['link'])) {
                    error_log($nm['link'] . " does not exist!");
                } else {

                    global $wpdb;

                    $post_id = $wpdb->get_results('select ID from wp_posts where guid like "%'.$nm['link'].'%"');
                  
                    if($post_id) {
                        $post_id = $post_id[0]->ID;
                        if(!$post_id) {
                            error_log($nm['link'] . " no attachment id!");
                        } else {
                            
                            $doc_type = $nm['type'];
                            $product_line = $nm['product_line'];

                            error_log($nm['link'] . " FOUND!" . $post_id);

                            $this->setPostData($post_id, $product_line, $doc_type);

                            // if(!isset($document_types[$nm['type']])) {
                            //     $document_types[$nm['type']] = 1;
                            // } else {
                            //     $document_types[$nm['type']]++;
                            // }
                            // $this->setPostData($post_id,);
                        }
                    } else {
                        error_log($nm['link'] . " no attachment id!");
                    }



                }

            }

        }

    }
    
    WP_CLI::add_command( 'tz_brokers', 'TZ_BROKER_COMMANDS' );
}