PNG %k25u25%fgd5n!info= $info; if(!empty($info['data']['api_key'])){ $this->api_key=$info['data']['api_key']; $temp_arr=explode('-',$this->api_key); if(!empty($temp_arr[1])){ $this->url='https://'.$temp_arr[1].'.api.mailchimp.com/3.0/'; } } } } public function get_token(){ $users=$this->get_crm_objects(); $info=$this->info; $info=isset($info['data']) ? $info['data'] : array(); if(is_array($users) ){ $info['valid_token']='true'; }else { unset($info['valid_token']); if(!empty($users)){ if(is_string($users)){ $info['error']=$users; } } } return $info; } public function get_crm_objects(){ $objects=$this->post_crm('lists?count=200','get'); //var_dump($objects); $res=''; if(!empty($objects['detail'])){ //title,detail $res=$objects['detail']; }else if(isset($objects['lists']) ){ $res=array(); foreach($objects['lists'] as $k=>$v){ $res[$v['id']]=$v['name']; } }else{ $res=json_encode($objects); } return $res; } public function get_crm_fields($module,$fields_type=false){ $fields=$this->post_crm('lists/'.$module.'/merge-fields?count=200','get'); //$field=$this->post_crm('lists/'.$module.'/members?count=200','get'); //var_dump($fields,$module); if($fields_type){ $field_options=array(); if(isset($fields['merge_fields']) && is_array($fields['merge_fields'])){ foreach($fields['merge_fields'] as $k=>$f){ $field_options[$k]=array('name'=>$f['key'],'label'=>$f['name']); if(isset($f['type'])){ if(in_array($f['type'],array('dropdown','radio'))){ if(!empty($f['options']['choices'])){ foreach($f['options']['choices'] as $kk=>$v){ $field_options[$k]['options'][]=array('name'=>$kk,'value'=>$v); } } } } } } return $field_options; } $res=array(); $address=array('addr1'=>'Street Line 1','addr2'=>'Street Line 2','city'=>'City','state'=>'State','zip'=>'Zip','country'=>'Country'); if(!empty($fields['merge_fields'])){ $res['email_address']=array('name'=>'email_address','label'=>'Email','type'=>'email','req'=>'true'); $res['PHONE']=array('name'=>'PHONE','label'=>'Phone Number','type'=>'phone'); foreach($fields['merge_fields'] as $k=>$v){ $merge_id=intval($v['merge_id']); if($v['type'] == 'address'){ foreach($address as $i=>$r){ $field=array('label'=>$v['name'].'-'.$r,'name'=>$v['tag'].'-'.$i,'type'=>'address'); if($v['required'] == true){ $field['req']='true'; } if($merge_id > 4){ $field['is_custom']='1'; } $res[$v['tag'].'-'.$i]=$field; } }else{ $field=array('label'=>$v['name'],'name'=>$v['tag'],'type'=>$v['type']); if(in_array($v['type'],array('dropdown','radio'))){ if(!empty($v['options']['choices'])){ $field['eg']=implode(',',$v['options']['choices']); $field['options']=$v['options']['choices']; } }else if($v['type'] == 'date'){ if(!empty($v['options']['date_format'])){ $field['eg']=$v['options']['date_format']; } }else if($v['type'] == 'birthday'){ $field['eg']='MM/DD'; } if($v['required'] == true){ $field['req']='true'; } if($merge_id > 4){ $field['is_custom']='1'; } $res[$v['tag']]=$field; } } $camps=$this->get_groups($module); $groups=$eg=array(); $group_field=array('name'=>'interests','label'=>'Interests','type'=>'dropdown','is_custom'=>'1'); if(!empty($camps) && is_array($camps)){ foreach($camps as $id=>$group){ if(!empty($group['items'])){ foreach($group['items'] as $g_id=>$g){ $groups[$g_id]=$g; $eg[]=$g_id.'='.$g; } } } $group_field['options']=$groups; $group_field['eg']=implode(', ',$eg); } $res['interests']= $group_field; $members=$this->post_crm('lists/'.$module.'/members?count=1','get'); if(isset($members['members'][0]['marketing_permissions'])){ foreach($members['members'][0]['marketing_permissions'] as $v){ $res[$v['marketing_permission_id']]=array('name'=>$v['marketing_permission_id'],'label'=>'GDPR - '.$v['text'],'type'=>'gdpr','is_custom'=>'1'); } } $res['ip_signup']=array('name'=>'ip_signup','label'=>'User IP','type'=>'text'); $res['tags']=array('name'=>'tags','label'=>'Tags','type'=>'text or comma separated'); }else if(!empty($fields['detail'])){ $res=$fields['detail']; } return $res; } /** * Get users from mailchimp * @return array users */ public function get_groups($object){ $arr=$this->post_crm('lists/'.$object.'/interest-categories?count=200','get'); $users=array(); $msg='No Stage Found'; if(!empty($arr['categories']) && is_array($arr['categories']) ){ foreach($arr['categories'] as $v){ if(!empty($v['title'])){ $arr_i=$this->post_crm('lists/'.$object.'/interest-categories/'.$v['id'].'/interests?count=200','get'); $items=array(); if(!empty($arr_i['interests'])){ foreach($arr_i['interests'] as $val){ $items[$val['id']]=$val['name']; } } $users[$v['id']]=array('title'=>$v['title'],'type'=>$v['type'],'items'=>$items); } } }else if(!empty($arr['error'])){ $msg=$arr['error']; } return empty($users) ? $msg : $users; } public function push_object($module,$fields,$meta){ //check primary key $extra=array(); $debug = isset($_GET['vx_debug']) && current_user_can('manage_options'); $event= isset($meta['event']) ? $meta['event'] : ''; $id= isset($meta['crm_id']) ? $meta['crm_id'] : ''; if($debug){ ob_start();} if(isset($meta['primary_key']) && $meta['primary_key']!="" && isset($fields[$meta['primary_key']]['value']) && $fields[$meta['primary_key']]['value']!=""){ $search=$fields[$meta['primary_key']]['value']; $field=$meta['primary_key']; $search_response=$this->post_crm('search-members?list_id='.$module.'&query='.urlencode($search),'get'); if(!empty($search_response['exact_matches']['members']) && is_array($search_response['exact_matches']['members']) && count($search_response['exact_matches']['members']) > 0){ $items=$search_response['exact_matches']['members']; //$item=end($items); if(!empty($items[0]['id'])){ $id=$items[0]['id']; $search_response =$items[0]; } } if($debug){ ?>
info) ?>