관리-도구
편집 파일: 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); } ?> <!-- 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>'; $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-start"> <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-start"> <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-end"> <?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>