관리-도구
편집 파일: members.php
<?php $optins_ob=$data_arr['optinob']; $funnel=$data_arr['funnel']; if(isset($_POST['deletemember'])) { $optins_ob->deleteMemberByFunnel(base64_decode($_POST['deletemember']), $_GET['funnelid']); } ?> <div class="container-fluid"> <div class="mx-1 mx-sm-3"> <div class="row"> <div class="col-md-2 mb-2"> <?php echo createSearchBoxBydate(); ?> </div> <div class="col-md-3"> <?php echo showRecordCountSelection(); ?> </div> <div class="col-md-3"> <?php echo arranger(array('id'=>'Date')); ?> </div> <div class="mb-3 col-md-4"> <div class="input-group input-group-sm mb-3 float-right"> <div class="input-group-prepend "> <span class="input-group-text"><i class="fas fa-search"></i></span> </div> <input type="text" class="form-control form-control-sm" placeholder="<?php w('Enter name, email'); ?>" onkeyup="searchMember(this.value)"> </div> </div> </div> </div> <div class="pb-2 border m-3 bg-white br-rounded cf-course-chbtn" id="hidecard1"> <div class=" pb-2" id="hidecard2"> <div class="row membercontainer"> <div class="col-sm-12"> <?php $countpage=0; $course_id = false; $funnel_id = false; if(isset($_GET['page_count'])){$countpage=$_GET['page_count']; } if($countpage==0){$countpage=1;} if(isset($_GET['funnelid'])) { $funnel_id = $_GET['funnelid']; $optin_datas=$optins_ob->visualOptisForFunnels($_GET['funnelid'],$countpage); } elseif(isset($_GET['course_id'])) { $course_id = $_GET['course_id']; $max_limit=(int)get_option('qfnl_max_records_per_page'); $optin_datas = $optins_ob->getAllMembers($course_id,$countpage,$max_limit); } else { $optin_datas=$optins_ob->visualOptisForFunnels('all',$countpage); } //echo $optin_datas['extracols']; ?> <!-- New Design --> <div id="accordiondata" > <!--srch--> <?php $hashcount=0; if(isset($_GET['page_count'])) { $hashcount=($_GET['page_count']*get_option('qfnl_max_records_per_page'))-get_option('qfnl_max_records_per_page'); } $count=0; if($optin_datas['leads']) { foreach($optin_datas['leads'] as $r) { ++$hashcount; ++$count; $caret_down = '<a data-bs-toggle="collapse" class="btn btn-info" data-bs-target="#collapse'.$hashcount.'" aria-expanded="true" aria-controls="collapse'.$hashcount.'" ><i class="fas fa-caret-down"></i></a>'; // echo $caret_down; $action="<table class='actionedittable'><tr><td>".$caret_down."</td><td><button class='btn btn-primary' data-bs-toggle='tooltip' title='".t('Edit Data')."' onclick=editMemberData(".$r->id.",'".base64_encode($r->name)."','".$r->email."','".base64_encode($r->exf)."','".base64_encode(date('d-M-Y',$r->date_created))."','".base64_encode($r->ip_created)."')><i class='fas fa-edit text-white'></i></button></td><td><form action='' method='post' onsubmit=\"return confirmDeletionPopup('0','members',event,this)\"><input type='hidden' name='deletemember' value='".base64_encode($r->email)."'><button type='submit' class='btn btn-danger' data-bs-toggle='tooltip' title='".t('Cancel Student/Delete Record')."'><i class='fas fa-trash text-white'></i></button></form></td></tr></table>"; $pagefunnel_data=$funnel->getPageFunnel($r->pageid,'','','id'); if(!$pagefunnel_data){continue;} ?> <div id="accordion" class="p-2 cfsnew"> <div class="card mb-0"> <div class="card-header d-flex justify-content-between" id="heading<?=$hashcount; ?>"> <div data-bs-toggle="collapse" class="fw5 cfsnew-header text-primary" data-bs-target="#collapse<?=$hashcount; ?>" aria-expanded="true" aria-controls="collapse<?=$hashcount; ?>"> <span class="text-primary">#<?=$hashcount; ?>:</span> <span class="cfsnew-name"><?=$r->name; ?></span> <span class="text-info"><?=$r->email; ?></span> </div> <div class="second"> <?php echo $action; ?> </div> </div> <div id="collapse<?=$hashcount; ?>" class="collapse " aria-labelledby="heading<?=$hashcount; ?>"> <div class="card-body p-0"> <div class="d-flex"> <div class="col-md-6 p-0 m-0" style="border-right:1px solid #cccccc "> <h4 class="p-1 py-3 text-center">Student Details</h4> <div class="table-responsive"> <table class="table text-left"> <tr> <td class="fw5">Name</td> <td><?= $r->name; ?></td> </tr> <tr> <td class="fw5">Email</td> <td><?= $r->email; ?></td> </tr> <?php if($optin_datas['extracols'] !=0) { for($i=0;$i<count($optin_datas['extracols']);$i++) { if(in_array($optin_datas['extracols'][$i],array('name','email','password','reenterpassword'))) { continue; } $jsn=json_decode($r->exf); $customrow=$optin_datas['extracols'][$i]; if(isset($jsn->$customrow)) { $jsn=$jsn->$customrow; } else { $jsn="NA"; } echo "<tr><td class='fw5'>".$optin_datas['extracols'][$i]."</td>"; echo "<td>".$jsn."</td></tr>"; } } $last_signindadate=$r->date_lastsignin; if(is_numeric($last_signindadate)) { $last_signindadate=date('d-M-Y',$r->date_lastsignin); } else { $last_signindadate="N/A"; } ?> <tr><td class='fw5'><?php w('Last IP'); ?></td> <td> <?=(($r->ip_lastsignin !='N/A')? $r->ip_lastsignin:$r->ip_created)?> </td> </tr> <tr><td class='fw5'><?php w('Last Logged in'); ?></td> <td> <?=$last_signindadate?> </td> </tr> <tr><td class='fw5'><?php w('Created At'); ?></td> <td> <?=$last_signindadate?> </td> </tr> </table> </div> </div> <div class="col-md-6 p-0 m-0"> <h4 class="p-1 py-3 text-center">Course Details</h4> <div class="table-responsive"> <table class="table text-left"> <tr> <th class='fw5'>Course Name</th> <th class='fw5'>Course Progress</th> <th class='fw5'>Details</th> </tr> <?php $courses = $optins_ob->getCourseDetails($r->id, $r->funnelid , $course_id); foreach( $courses['courses'] as $course ) { $prg_color = ['info','primary','success']; shuffle($prg_color); $fcolor = $prg_color[0]; $progress = $optins_ob->getCourseProgress($course->id,$r->id); ?> <tr> <td class='fw5'> <?= $course->title ?> </td> <td > <div class="progress "> <div class="progress-bar bg-<?=$fcolor?> progress-bar-striped progress-bar-animated" role="progressbar" aria-valuenow="<?=$progress;?>" aria-valuemin="0" aria-valuemax="100" style="width:<?=$progress;?>%"> <?= number_format((float)$progress, 2, '.', '');?>% </div> </div> </td> <td><a class='btn btn-info p-0 px-1' href='index.php?page=view_student&student_id=<?=$r->id;?>&course_id=<?=$course->id;?>&funnel_id=<?=$funnel_id;?>'><i class='fas fa-eye'></i></a></td> </tr> <?php } ?> </table> </div> </div> </div> </div> </div> </div> </div> <?php if($_SESSION['user_plan_type' . $site_token_for_dashboard]==2 && $hashcount >= 1) { break; } } } ?> <!--/srch--> </div> <!-- New Design End --> <div class="card"> <div class="card-header p-0 py-2 text-center"> <h6 class="text-dark"><?php w('Total Students') ?> <?php echo ($_SESSION['user_plan_type' . $site_token_for_dashboard] == 2 && $optin_datas['total'] >= 1) ? 1 : $optin_datas['total']; ?></h6> </div> </div> <div class="col-md-12 row nopadding"> <div class="col-sm-6 mt-2"> <?php $paging_url=$_SERVER['REQUEST_URI']."&page_count"; $pagecount=0; if(isset($_GET['page_count'])) { $pagecount=$_GET['page_count']; } $pagecount=($pagecount<2)? 0:$pagecount; echo createPager($optin_datas['total'],$paging_url,$pagecount); ?> </div> <div class="col-sm-6 mt-2 text-right"> <?php if(isset($_GET['funnelid'])): ?> <form action="index.php?page=export_csv" method="post"> <?php if($_SESSION['user_plan_type' . $site_token_for_dashboard]==2) { ?> <button type="button" class="btn theme-button" value="<?php if(isset($_GET['funnelid'])){ echo $_GET['funnelid']; } ?>"> <?php } else { ?> <button type="submit" class="btn theme-button" name="membersto_csv_funnel" value="<?php if(isset($_GET['funnelid'])){ echo $_GET['funnelid']; } ?>"> <?php } ?> <i class="fas fa-file-download"></i> <?php w('Export To CSV'); ?></button></form> <?php elseif(isset($_GET['course_id'])): ?> <form action="index.php?page=export_csv" method="post"><button type="submit" class="btn theme-button" name="membersto_csv_course" value="<?php echo $_GET['course_id']; ?>"><i class="fas fa-file-download"></i> <?php w('Export To CSV'); ?></button></form> <?php endif; ?> </div> </div> </div> </div> </div></div></div> <script> function searchMember(search) { var request=new ajaxRequest(); request.postRequestCb("index.php?page=members&funnelid=<?php echo $funnel_id; ?>&courseid=<?php echo $course_id; ?>",{"searchmember":search},function(data){ var str="<!--srch-->"; var first=data.indexOf(str)+str.length; var last=data.indexOf("<!--/srch-->"); document.getElementById("accordiondata").innerHTML=data.substr(first,last-first); }) } function editMemberData(id,name,email,exf,addedon,regip) { var bdy=document.getElementsByClassName("membercontainer")[0]; var div=document.createElement("div"); var style="top:50%;left:55%;transform:translate(-50%,-50%);position:fixed;z-index:99999999;width:100%;max-width:800px;"; var head="<div class='col-sm-8 col-offset-4' style='"+style+"'><div class='card pnl visual-pnl'><div class='card-header' style='font-size:16px !important;position:relative;'>"+t('Edit User')+"<strong><i id='deltemplateselectiondiv' class='fa fa-times-circle' style='font-size:20px;color:white;right:10px;top:8px;position:absolute;cursor:pointer;'></i></strong></div><div class='card-body tmpltbdydiv' style='max-height:800px;overflow-y:auto;'>" var footer="</div><div class='card-footer'><button id='updateuserdetail' class='btn theme-button'><strong>"+t('Save')+"</strong></button> <strong><span style='margin-left:10px;color:' id='usrdatasaveerr'></span></strong> </div></div></div>"; var body="<div class='card-body upusrbdy' style='max-height:180px;overflow-y:auto;'><div class='mb-3'>"; body +="<div class='input-group'><div class='input-group-prepend'><span class='input-group-text'>"+t('Name')+"</span></div><input type='text' id='name' placeholder='"+t('Enter Name')+"' value='"+atob(name)+"' class='form-control'></div>"; body +="<div class='input-group'><div class='input-group-prepend'><span class='input-group-text'>"+t('Email')+"</span></div><input type='text' id='email' placeholder='"+t('Enter Email')+"' value='"+email+"' class='form-control'></div>"; body +="<div class='input-group'><div class='input-group-prepend'><span class='input-group-text'>"+t('Password')+"</span></div><input type='password' id='password' placeholder='"+t('Enter Password')+"' class='form-control'></div>"; body +="<div class='input-group'><div class='input-group-prepend'><span class='input-group-text'>"+t('Re-Enter Password')+"</span></div><input type='password' id='reenterpassword' placeholder='"+t('Enter Password')+"' class='form-control'></div>"; body +="<div class='input-group'><div class='input-group-prepend'><span class='input-group-text'>"+t('Ragistration Date')+"</span></div><p class='form-control'>"+atob(addedon)+"</p></div>"; body +="<div class='input-group'><div class='input-group-prepend'><span class='input-group-text'>"+t('Registration IP')+"</span></div><p class='form-control'>"+atob(regip)+"</p></div>"; var extras="<div class='alert alert-warning'>"+t('No Extrafield Available')+"</div>"; var exf=atob(exf); try{exf=exf.trim();}catch(err){} if(exf.length>2) { exf= exf.replace(/"/g, "'"); exf= exf.replace(/(?:\r\n|\r|\n)/g, ''); exf=JSON.parse(exf); extras=""; for(i in exf) { extras +="<div class='input-group'><div class='input-group-prepend'><span class='input-group-text'>"+i+"</span></div><input type='text' id='"+i+"' value='"+exf[i]+"' class='form-control'></div>"; } } body +="<button data-bs-toggle='collapse' data-bs-target='.exfdatadiv' class='btn btn-outline-info btn-block' style='margin-top:5px;'>"+t('Edit Extra Fields')+"</button><div class='collapse exfdatadiv'>"+extras+"</div>"; body +="</div></div><style>.upusrbdy .input-group{margin-top:2px;margin-bottom:2px;}</style>"; div.innerHTML=head+body+footer; bdy.appendChild(div); doEscapePopup(function(){bdy.removeChild(div);}); document.getElementById("deltemplateselectiondiv").onclick=function(){ bdy.removeChild(div); } document.getElementById("updateuserdetail").onclick=function(e) { var request=new ajaxRequest(); var userdatas=document.querySelectorAll('.upusrbdy')[0].getElementsByTagName("input"); var senddata={}; senddata_ob={"updatememberdata":1,"funnelid":<?php echo 0; ?>,"userid":id}; for(var i=0;i<userdatas.length;i++) { try { var field=userdatas[i].getAttribute("id"); var val=userdatas[i].value; senddata_ob[field]=val; } catch(err){console.log(err);} } e.target.disabled=true; var errdiv=document.getElementById("usrdatasaveerr"); errdiv.innerHTML=""; request.postRequestCb('req.php',senddata_ob,function(data){ e.target.disabled=false; if(data.trim()!='1') { errdiv.innerHTML="<span style='color:#800033;'>"+t(data.trim())+"</span>"; } else { errdiv.innerHTML="<font style='color:green;'>"+t('Saved Successfully')+"</font>" } }); } } </script>