Advertisement
Guest User

Revised home.php

a guest
Aug 7th, 2016
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 34.49 KB | None | 0 0
  1. <?php
  2. /*
  3.  *
  4.  * - PopojiCMS Front End File
  5.  *
  6.  * - File : home.php
  7.  * - Version : 1.1
  8.  * - Author : Jenuar Dalapang
  9.  * - License : MIT License
  10.  *
  11.  *
  12.  * Ini adalah file php yang di gunakan untuk menangani proses di bagian depan untuk halaman home.
  13.  * This is a php file for handling front end process for home page.
  14.  *
  15. */
  16.  
  17. /**
  18.  * Router untuk menampilkan request halaman beranda.
  19.  *
  20.  * Router for display request in home page.
  21.  *
  22. */
  23. $router->match('GET|POST', '/', function() use ($core, $templates) {
  24.     $lang = $core->setlang('home', WEB_LANG);
  25.     $info = array(
  26.         'page_title' => $core->posetting[0]['value'],
  27.         'page_desc' => $core->posetting[2]['value'],
  28.         'page_key' => $core->posetting[3]['value'],
  29.         'social_mod' => $lang['front_home'],
  30.         'social_name' => $core->posetting[0]['value'],
  31.         'social_url' => $core->posetting[1]['value'],
  32.         'social_title' => $core->posetting[0]['value'],
  33.         'social_desc' => $core->posetting[2]['value'],
  34.         'social_img' => $core->posetting[1]['value'].'/'.DIR_INC.'/images/favicon.png'
  35.     );
  36.     $adddata = array_merge($info, $lang);
  37.     $templates->addData(
  38.         $adddata
  39.     );
  40.     echo $templates->render('home', compact('lang'));
  41. });
  42.  
  43. /**
  44.  * Router untuk memproses request $_POST[] subscribe.
  45.  *
  46.  * Router for process request $_POST[] subscribe.
  47.  *
  48. */
  49. $router->match('POST', '/subscribe', function() use ($core, $templates) {
  50.     $lang = $core->setlang('home', WEB_LANG);
  51.     if (!empty($_POST)) {
  52.         if (!empty($_POST['email'])) {
  53.             $subscribe = $core->podb->from('subscribe')->where('email', $core->postring->valid($_POST['email'], 'xss'))->count();
  54.             if ($subscribe > 0) {
  55.                 echo "<script language='javascript'>
  56.                     window.alert('".$lang['front_subscribe_error']."')
  57.                     window.location.href='./';
  58.                 </script>";
  59.             } else {
  60.                 $core->poval->validation_rules(array(
  61.                     'email' => 'required|valid_email'
  62.                 ));
  63.                 $core->poval->filter_rules(array(
  64.                     'email' => 'trim|sanitize_email'
  65.                 ));
  66.                 $validated_data = $core->poval->run($_POST);
  67.                 if ($validated_data === false) {
  68.                     header('location:'.BASE_URL.'/404.php');
  69.                 } else {
  70.                     $name = explode('@', $core->postring->valid($_POST['email'], 'xss'));
  71.                     $data = array(
  72.                         'email' => $core->postring->valid($_POST['email'], 'xss'),
  73.                         'name' => ucfirst($name[0])
  74.                     );
  75.                     $query = $core->podb->insertInto('subscribe')->values($data);
  76.                     $query->execute();
  77.                     unset($_POST);
  78.                     echo "<script language='javascript'>
  79.                         window.alert('".$lang['front_subscribe_success']."')
  80.                         window.location.href='./';
  81.                     </script>";
  82.                 }
  83.             }
  84.         } else {
  85.             header('location:'.BASE_URL.'/404.php');
  86.         }
  87.     } else {
  88.         header('location:'.BASE_URL.'/404.php');
  89.     }
  90. });
  91.  
  92. /**
  93.  * Router untuk menampilkan request halaman member.
  94.  *
  95.  * Router for display request in member page.
  96.  *
  97. */
  98. $router->match('GET|POST', '/member', function() use ($core, $templates) {
  99.     if ($core->posetting[17]['value'] == 'Y') {
  100.         if (empty($_SESSION['namauser_member']) AND empty($_SESSION['passuser_member']) AND empty($_SESSION['login_member'])) {
  101.             header('location:'.BASE_URL.'/member/login');
  102.         } else {
  103.             header('location:'.BASE_URL.'/member/index');
  104.         }
  105.     } else {
  106.         header('location:'.BASE_URL.'/404.php');
  107.     }
  108. });
  109.  
  110. /**
  111.  * Router untuk menampilkan request halaman member.
  112.  *
  113.  * Router for display request in member page.
  114.  *
  115. */
  116. $router->match('GET|POST', '/member/index', function() use ($core, $templates) {
  117.     if ($core->posetting[17]['value'] == 'Y') {
  118.         if (empty($_SESSION['namauser_member']) AND empty($_SESSION['passuser_member']) AND empty($_SESSION['login_member'])) {
  119.             header('location:'.BASE_URL.'/member/login');
  120.         } else {
  121.             $lang = $core->setlang('home', WEB_LANG);
  122.             $info = array(
  123.                 'page_title' => $lang['front_member_dashboard'].' - Member Area'
  124.             );
  125.             $adddata = array_merge($info, $lang);
  126.             $templates->addData(
  127.                 $adddata
  128.             );
  129.             $user = $core->podb->from('users')
  130.                 ->where('username', $_SESSION['namauser_member'])
  131.                 ->where('level', '4')
  132.                 ->limit(1)
  133.                 ->fetch();
  134.             echo $templates->render('home', compact('lang','user'));
  135.         }
  136.     } else {
  137.         header('location:'.BASE_URL.'/404.php');
  138.     }
  139. });
  140.  
  141. /**
  142.  * Router untuk menampilkan request halaman login member.
  143.  *
  144.  * Router for display request in login member page.
  145.  *
  146. */
  147. $router->match('GET|POST', '/member/login', function() use ($core, $templates) {
  148.     if ($core->posetting[17]['value'] == 'Y') {
  149.         if (empty($_SESSION['namauser_member']) AND empty($_SESSION['passuser_member']) AND empty($_SESSION['login_member'])) {
  150.             if (isset($_COOKIE['member_cookie'])) {
  151.                 $username = $_COOKIE['member_cookie']['username'];
  152.                 $pass = $_COOKIE['member_cookie']['password'];
  153.                 $count_user = $core->podb->from('users')
  154.                     ->where('username', $username)
  155.                     ->where('password', $pass)
  156.                     ->where('level', '4')
  157.                     ->where('block', 'N')
  158.                     ->count();
  159.                 if ($count_user > 0) {
  160.                     $user = $core->podb->from('users')
  161.                         ->where('username', $username)
  162.                         ->where('password', $pass)
  163.                         ->where('level', '4')
  164.                         ->where('block', 'N')
  165.                         ->limit(1)
  166.                         ->fetch();
  167.                     $timeout = new PoTimeout;
  168.                     $timeout->rec_session_member($user);
  169.                     $timeout->timer_member();
  170.                     $sid_lama = session_id();
  171.                     session_regenerate_id();
  172.                     $sid_baru = session_id();
  173.                     $sesi = array(
  174.                         'id_session' => $sid_baru
  175.                     );
  176.                     $query = $core->podb->update('users')
  177.                         ->set($sesi)
  178.                         ->where('username', $username);
  179.                     $query->execute();
  180.                     header('location:'.BASE_URL.'/member');
  181.                 }
  182.             } else {
  183.                 $alertmsg = '';
  184.                 $lang = $core->setlang('home', WEB_LANG);
  185.                 if (!empty($_POST)) {
  186.                     $_POST = $core->poval->sanitize($_POST);
  187.                     $core->poval->validation_rules(array(
  188.                         'username' => 'required|max_len,50|min_len,3',
  189.                         'password' => 'required|max_len,50|min_len,6'
  190.                     ));
  191.                     $core->poval->filter_rules(array(
  192.                         'username' => 'trim|sanitize_string',
  193.                         'password' => 'trim'
  194.                     ));
  195.                     $validated_data = $core->poval->run($_POST);
  196.                     if ($validated_data === false) {
  197.                         $alertmsg = '<div class="alert alert-warning">'.$lang['front_member_notif_1'].'<a class="close" data-dismiss="alert" href="#" aria-hidden="true">&times;</a></div>';
  198.                     } else {
  199.                         $count_user = $core->podb->from('users')
  200.                             ->where('username', $_POST['username'])
  201.                             ->where('password', md5($_POST['password']))
  202.                             ->where('level', '4')
  203.                             ->where('block', 'N')
  204.                             ->count();
  205.                         if ($count_user > 0) {
  206.                             $user = $core->podb->from('users')
  207.                                 ->where('username', $_POST['username'])
  208.                                 ->where('password', md5($_POST['password']))
  209.                                 ->where('level', '4')
  210.                                 ->where('block', 'N')
  211.                                 ->limit(1)
  212.                                 ->fetch();
  213.                             $timeout = new PoTimeout;
  214.                             $timeout->rec_session_member($user);
  215.                             $timeout->timer_member();
  216.                             $sid_lama = session_id();
  217.                             session_regenerate_id();
  218.                             $sid_baru = session_id();
  219.                             $sesi = array(
  220.                                 'id_session' => $sid_baru
  221.                             );
  222.                             $query = $core->podb->update('users')
  223.                                 ->set($sesi)
  224.                                 ->where('username', $_POST['username']);
  225.                             $query->execute();
  226.                             if(isset($_POST['rememberme']) || $_POST['rememberme'] == "1"){
  227.                                 setcookie("member_cookie[username]", $user['username'], time() + 86400);
  228.                                 setcookie("member_cookie[password]", $user['password'], time() + 86400);
  229.                             }
  230.                             header('location:'.BASE_URL.'/member');
  231.                         } else {
  232.                             $count_user_by_email = $core->podb->from('users')
  233.                                 ->where('email', $_POST['username'])
  234.                                 ->where('password', md5($_POST['password']))
  235.                                 ->where('level', '4')
  236.                                 ->where('block', 'N')
  237.                                 ->count();
  238.                             if ($count_user_by_email > 0) {
  239.                                 $user = $core->podb->from('users')
  240.                                     ->where('email', $_POST['username'])
  241.                                     ->where('password', md5($_POST['password']))
  242.                                     ->where('level', '4')
  243.                                     ->where('block', 'N')
  244.                                     ->limit(1)
  245.                                     ->fetch();
  246.                                 $timeout = new PoTimeout;
  247.                                 $timeout->rec_session_member($user);
  248.                                 $timeout->timer_member();
  249.                                 $sid_lama = session_id();
  250.                                 session_regenerate_id();
  251.                                 $sid_baru = session_id();
  252.                                 $sesi = array(
  253.                                     'id_session' => $sid_baru
  254.                                 );
  255.                                 $query = $core->podb->update('users')
  256.                                     ->set($sesi)
  257.                                     ->where('email', $_POST['username']);
  258.                                 $query->execute();
  259.                                 if(isset($_POST['rememberme']) || $_POST['rememberme'] == "1"){
  260.                                     setcookie("member_cookie[username]", $user['username'], time() + 86400);
  261.                                     setcookie("member_cookie[password]", $user['password'], time() + 86400);
  262.                                 }
  263.                                 header('location:'.BASE_URL.'/member');
  264.                             } else {
  265.                                 $alertmsg = '<div class="alert alert-warning">'.$lang['front_member_notif_2'].'<a class="close" data-dismiss="alert" href="#" aria-hidden="true">&times;</a></div>';
  266.                             }
  267.                         }
  268.                     }
  269.                 }
  270.                 $info = array(
  271.                     'page_title' => $lang['front_member_login'].' - Member Area',
  272.                     'alertmsg' => $alertmsg
  273.                 );
  274.                 $adddata = array_merge($info, $lang);
  275.                 $templates->addData(
  276.                     $adddata
  277.                 );
  278.                 echo $templates->render('login', compact('lang'));
  279.             }
  280.         } else {
  281.             header('location:'.BASE_URL.'/member');
  282.         }
  283.     } else {
  284.         header('location:'.BASE_URL.'/404.php');
  285.     }
  286. });
  287.  
  288. /**
  289.  * Router untuk menampilkan request halaman register member.
  290.  *
  291.  * Router for display request in register member page.
  292.  *
  293. */
  294. $router->match('GET|POST', '/member/register', function() use ($core, $templates) {
  295.     if ($core->posetting[17]['value'] == 'Y') {
  296.         if (empty($_SESSION['namauser_member']) AND empty($_SESSION['passuser_member']) AND empty($_SESSION['login_member'])) {
  297.             $alertmsg = '';
  298.             $lang = $core->setlang('home', WEB_LANG);
  299.             if (!empty($_POST)) {
  300.                 $core->poval->validation_rules(array(
  301.                     'username' => 'required|alpha_dash|max_len,50|min_len,3',
  302.                     'password' => 'required|max_len,50|min_len,6',
  303.                     'repassword' => 'required|max_len,50|min_len,6',
  304.                     'email' => 'required|valid_email'
  305.                 ));
  306.                 $core->poval->filter_rules(array(
  307.                     'username' => 'trim|sanitize_string',
  308.                     'password' => 'trim',
  309.                     'repassword' => 'trim',
  310.                     'email' => 'trim|sanitize_email'
  311.                 ));
  312.                 $validated_data = $core->poval->run($_POST);
  313.                 if ($validated_data === false) {
  314.                     $alertmsg = '<div class="alert alert-warning">'.$lang['front_member_notif_1'].'<a class="close" data-dismiss="alert" href="#" aria-hidden="true">&times;</a></div>';
  315.                 } else {
  316.                     $count_user_email = $core->podb->from('users')
  317.                         ->where('email', $_POST['email'])
  318.                         ->count();
  319.                     if ($count_user_email > 0) {
  320.                         $alertmsg = '<div class="alert alert-warning">'.$lang['front_member_notif_3'].'<a class="close" data-dismiss="alert" href="#" aria-hidden="true">&times;</a></div>';
  321.                     } else {
  322.                         if (strlen($_POST['password']) >= 6) {
  323.                             if (md5($_POST['password']) != md5($_POST['repassword'])) {
  324.                                 $alertmsg = '<div class="alert alert-warning">'.$lang['front_member_notif_4'].'<a class="close" data-dismiss="alert" href="#" aria-hidden="true">&times;</a></div>';
  325.                             } else {
  326.                                 $count_user_name = $core->podb->from('users')
  327.                                     ->where('username', strtolower($_POST['username']))
  328.                                     ->count();
  329.                                 if ($count_user_name > 0) {
  330.                                     $alertmsg = '<div class="alert alert-warning">'.$lang['front_member_notif_5'].'<a class="close" data-dismiss="alert" href="#" aria-hidden="true">&times;</a></div>';
  331.                                 } else {
  332.                                     $last_user = $core->podb->from('users')->limit(1)->orderBy('id_user DESC')->fetch();
  333.                                     $data = array(
  334.                                         'id_user' => $last_user['id_user']+1,
  335.                                         'username' => strtolower($_POST['username']),
  336.                                         'password' => md5($_POST['password']),
  337.                                         'nama_lengkap' => ucfirst(strtolower($_POST['username'])),
  338.                                         'email' => $_POST['email'],
  339.                                         'level' => '4',
  340.                                         'tgl_daftar' => date('Ymd'),
  341.                                         'block' => 'Y',
  342.                                         'id_session' => md5($_POST['password'])
  343.                                     );
  344.                                     $query = $core->podb->insertInto('users')->values($data);
  345.                                     $query->execute();
  346.                                     $website_name = $core->posetting[0]['value'];
  347.                                     $website_url = $core->posetting[1]['value'];
  348.                                     $username = strtolower($_POST['username']);
  349.                                     $email = $_POST['email'];
  350.                                     $pass = $_POST['password'];
  351.                                     $passmd5 = md5($_POST['password']);
  352.                                     $subject = "Email Account Activation For $website_name";
  353.                                     $from = $core->posetting[5]['value'];
  354.                                     $message = "<html>
  355.                                         <body>
  356.                                             Indonesia :<br />
  357.                                             -----------<br />
  358.                                             Hi $username,<br />
  359.                                             Jika anda tidak pernah mendaftarkan akun di $website_name, silahkan untuk menghiraukan email ini.<br />
  360.                                             Tetapi jika benar Anda telah membuat akun di $website_name, maka silahkan untuk mengklik tautan (link) di bawah ini untuk mengaktifkan akun Anda :<br /><br />
  361.                                             <a href=\"$website_url/member/activation/$username/$passmd5\" title=\"Account Activation\">$website_url/member/activation/$username/$passmd5</a><br /><br />
  362.                                             Setelah link tersebut diklik maka akun Anda telah diaktifkan dan telah terverifikasi, silahkan login dengan data berikut :<br /><br />
  363.                                             --------------------<br />
  364.                                             Username : $username<br />
  365.                                             Password : $pass<br />
  366.                                             --------------------<br /><br />
  367.                                             Salam hangat,<br />
  368.                                             $website_name.<br /><br /><br />
  369.                                             English :<br />
  370.                                             -----------<br />
  371.                                             Hi $username,<br />
  372.                                             If you have never registered account in $website_name, please to ignore this email.<br />
  373.                                             But if you really are registered account in $website_name, please to click on a link below to activated yout account :<br /><br />
  374.                                             <a href=\"$website_url/member/activation/$username/$passmd5\" title=\"Account Activation\">$website_url/member/activation/$username/$passmd5</a><br /><br />
  375.                                             Then automatically after you click a link above, your account have registered and verificated, please login with data :<br /><br />
  376.                                             --------------------<br />
  377.                                             Username : $username<br />
  378.                                             Password : $pass<br />
  379.                                             --------------------<br /><br />
  380.                                             Warm regards,<br />
  381.                                             $website_name.
  382.                                         </body>
  383.                                     </html>";
  384.                                     if ($core->posetting[23]['value'] != 'SMTP') {
  385.                                         $poemail = new PoEmail;
  386.                                         $send = $poemail
  387.                                             ->setOption(
  388.                                                 array(
  389.                                                     messageType => 'html'
  390.                                                 )
  391.                                             )
  392.                                             ->to($email)
  393.                                             ->subject($subject)
  394.                                             ->message($message)
  395.                                             ->from($from)
  396.                                             ->mail();
  397.                                     } else {
  398.                                         $core->pomail->isSMTP();
  399.                                         $core->pomail->SMTPDebug = 0;
  400.                                         $core->pomail->Debugoutput = 'html';
  401.                                         $core->pomail->Host = $core->posetting[24]['value'];
  402.                                         $core->pomail->Port = $core->posetting[27]['value'];
  403.                                         $core->pomail->SMTPAuth = true;
  404.                                         $core->pomail->SMTPSecure = 'ssl';
  405.                                         $core->pomail->IsHTML(true);
  406.                                         $core->pomail->Username = $core->posetting[25]['value'];;
  407.                                         $core->pomail->Password = $core->posetting[26]['value'];
  408.                                         $core->pomail->setFrom($core->posetting[5]['value'], $core->posetting[0]['value']);
  409.                                         $core->pomail->addAddress($email, $username);
  410.                                         $core->pomail->Subject = $subject;
  411.                                         $core->pomail->msgHTML($message);
  412.                                         $core->pomail->send();
  413.                                     }
  414.                                     unset($_POST);
  415.                                     $alertmsg = '<div class="alert alert-info"><i class="fa fa-info"></i>&nbsp;&nbsp;'.$lang['front_member_notif_6'].'<a class="close" data-dismiss="alert" href="#" aria-hidden="true">&times;</a></div>';
  416.                                 }
  417.                             }
  418.                         } else {
  419.                             $alertmsg = '<div class="alert alert-warning">'.$lang['front_member_notif_7'].'<a class="close" data-dismiss="alert" href="#" aria-hidden="true">&times;</a></div>';
  420.                         }
  421.                     }
  422.                 }
  423.             }
  424.             $info = array(
  425.                 'page_title' => $lang['front_member_register'].' - Member Area',
  426.                 'alertmsg' => $alertmsg
  427.             );
  428.             $adddata = array_merge($info, $lang);
  429.             $templates->addData(
  430.                 $adddata
  431.             );
  432.             echo $templates->render('register', compact('lang'));
  433.         } else {
  434.             header('location:'.BASE_URL.'/member');
  435.         }
  436.     } else {
  437.         header('location:'.BASE_URL.'/404.php');
  438.     }
  439. });
  440.  
  441. /**
  442.  * Router untuk menampilkan request halaman activation member.
  443.  *
  444.  * Router for display request in activation member page.
  445.  *
  446. */
  447. $router->match('GET|POST', '/member/activation/([a-z0-9_-]+)/([a-z0-9_-]+)', function($username, $pass) use ($core, $templates) {
  448.     if ($core->posetting[17]['value'] == 'Y') {
  449.         if (!empty($username) && !empty($pass)){
  450.             $alertmsg = '';
  451.             $lang = $core->setlang('home', WEB_LANG);
  452.             $username = $core->postring->valid($username, 'xss');
  453.             $pass = $core->postring->valid($pass, 'xss');
  454.             $count_user = $core->podb->from('users')
  455.                 ->where('username', $username)
  456.                 ->where('id_session', $pass)
  457.                 ->where('level', '4')
  458.                 ->count();
  459.             if ($count_user > 0) {
  460.                 $user = $core->podb->from('users')
  461.                     ->where('username', $username)
  462.                     ->where('id_session', $pass)
  463.                     ->where('level', '4')
  464.                     ->limit(1)
  465.                     ->fetch();
  466.                 if ($user['block'] == 'Y'){
  467.                     $data = array(
  468.                         'block' => 'N'
  469.                     );
  470.                     $query = $core->podb->update('users')
  471.                         ->set($data)
  472.                         ->where('username', $username)
  473.                         ->where('id_session', $pass);
  474.                     $query->execute();
  475.                     $alertmsg = '1';
  476.                 } else {
  477.                     $alertmsg = '2';
  478.                 }
  479.             } else {
  480.                 $alertmsg = '3';
  481.             }
  482.             $info = array(
  483.                 'page_title' => $lang['front_member_register'].' - Member Area',
  484.                 'alertmsg' => $alertmsg
  485.             );
  486.             $adddata = array_merge($info, $lang);
  487.             $templates->addData(
  488.                 $adddata
  489.             );
  490.             echo $templates->render('activation', compact('lang'));
  491.         } else {
  492.             header('location:'.BASE_URL.'/404.php');
  493.         }
  494.     } else {
  495.         header('location:'.BASE_URL.'/404.php');
  496.     }
  497. });
  498.  
  499. /**
  500.  * Router untuk menampilkan request halaman forgot member.
  501.  *
  502.  * Router for display request in forgot member page.
  503.  *
  504. */
  505. $router->match('GET|POST', '/member/forgot', function() use ($core, $templates) {
  506.     if ($core->posetting[17]['value'] == 'Y') {
  507.         if (empty($_SESSION['namauser_member']) AND empty($_SESSION['passuser_member']) AND empty($_SESSION['login_member'])) {
  508.             $alertmsg = '';
  509.             $lang = $core->setlang('home', WEB_LANG);
  510.             if (!empty($_POST)) {
  511.                 $_POST = $core->poval->sanitize($_POST);
  512.                 $core->poval->validation_rules(array(
  513.                     'email' => 'required|valid_email'
  514.                 ));
  515.                 $core->poval->filter_rules(array(
  516.                     'email' => 'trim|sanitize_email'
  517.                 ));
  518.                 $validated_data = $core->poval->run($_POST);
  519.                 if ($validated_data === false) {
  520.                     $alertmsg = '<div class="alert alert-warning">'.$lang['front_member_notif_8'].'<a class="close" data-dismiss="alert" href="#" aria-hidden="true">&times;</a></div>';
  521.                 } else {
  522.                     $count_user = $core->podb->from('users')
  523.                         ->where('email', $_POST['email'])
  524.                         ->where('level', '4')
  525.                         ->count();
  526.                     if ($count_user > 0) {
  527.                         $user = $core->podb->from('users')
  528.                             ->where('email', $_POST['email'])
  529.                             ->where('level', '4')
  530.                             ->limit(1)
  531.                             ->fetch();
  532.                         $forgotkey = md5(microtime() . $_SERVER['REMOTE_ADDR'] . '#$&^%$#' . mt_rand());
  533.                         $data = array(
  534.                             'forget_key' => $forgotkey
  535.                         );
  536.                         $query = $core->podb->update('users')
  537.                             ->set($data)
  538.                             ->where('email', $_POST['email']);
  539.                         $query->execute();
  540.                         $website_name = $core->posetting[0]['value'];
  541.                         $website_url = $core->posetting[1]['value'];
  542.                         $username = $user['username'];
  543.                         $nama_lengkap = $user['nama_lengkap'];
  544.                         $subject = "Recovery Password For $website_name";
  545.                         $from = $core->posetting[5]['value'];
  546.                         $message = "<html>
  547.                             <body>
  548.                                 Indonesia :<br />
  549.                                 -----------<br />
  550.                                 Hi $nama_lengkap,<br />
  551.                                 Jika anda tidak pernah meminta pesan informasi tentang lupa password di $website_name, silahkan untuk menghiraukan email ini.<br />
  552.                                 Tetapi jika anda memang yang meminta pesan informasi ini, maka silahkan untuk mengklik tautan (link) di bawah ini :<br /><br />
  553.                                 <a href=\"".$website_url."/member/recover/$username/$forgotkey\" title=\"Recover Password\">".$website_url."/member/recover/$username/$forgotkey</a><br /><br />
  554.                                 Kemudian secara otomatis setelah anda mengklik tautan (link) di atas, password anda akan diganti menjadi password default yaitu : <b>123456</b>.<br />
  555.                                 Silahkan untuk login dengan password tersebut kemudian ganti password default ini dengan password yang lebih aman.<br /><br />
  556.                                 Salam hangat,<br />
  557.                                 $website_name.<br /><br /><br />
  558.                                 English :<br />
  559.                                 -----------<br />
  560.                                 Hi $nama_lengkap,<br />
  561.                                 If you have never requested message information about forgotten password in $website_name, please to ignore this email.<br />
  562.                                 But if you really are asking for messages of this information, then please to click on a link below :<br /><br />
  563.                                 <a href=\"".$website_url."/member/recover/$username/$forgotkey\" title=\"Recover Password\">".$website_url."/member/recover/$username/$forgotkey</a><br /><br />
  564.                                 Then automatically after you click a link above, your password will be changed to the default password is : <b>123456</b>.<br />
  565.                                 Please to log in with the password and then change the default password to a more secure password.<br /><br />
  566.                                 Warm regards,<br />
  567.                                 $website_name.
  568.                             </body>
  569.                         </html>";
  570.                         if ($core->posetting[23]['value'] != 'SMTP') {
  571.                             $poemail = new PoEmail;
  572.                             $send = $poemail
  573.                                 ->setOption(
  574.                                     array(
  575.                                         messageType => 'html'
  576.                                     )
  577.                                 )
  578.                                 ->to($user['email'])
  579.                                 ->subject($subject)
  580.                                 ->message($message)
  581.                                 ->from($from)
  582.                                 ->mail();
  583.                         } else {
  584.                             $core->pomail->isSMTP();
  585.                             $core->pomail->SMTPDebug = 0;
  586.                             $core->pomail->Debugoutput = 'html';
  587.                             $core->pomail->Host = $core->posetting[24]['value'];
  588.                             $core->pomail->Port = $core->posetting[27]['value'];
  589.                             $core->pomail->SMTPAuth = true;
  590.                             $core->pomail->SMTPSecure = 'ssl';
  591.                             $core->pomail->IsHTML(true);
  592.                             $core->pomail->Username = $core->posetting[25]['value'];;
  593.                             $core->pomail->Password = $core->posetting[26]['value'];
  594.                             $core->pomail->setFrom($core->posetting[5]['value'], $core->posetting[0]['value']);
  595.                             $core->pomail->addAddress($user['email'], $nama_lengkap);
  596.                             $core->pomail->Subject = $subject;
  597.                             $core->pomail->msgHTML($message);
  598.                             $core->pomail->send();
  599.                         }
  600.                         $alertmsg = '<div class="alert alert-info">'.$lang['front_member_notif_9'].'<a class="close" data-dismiss="alert" href="#" aria-hidden="true">&times;</a></div>';
  601.                     } else {
  602.                         $alertmsg = '<div class="alert alert-warning">'.$lang['front_member_notif_10'].'<a class="close" data-dismiss="alert" href="#" aria-hidden="true">&times;</a></div>';
  603.                     }
  604.                 }
  605.             }
  606.             $info = array(
  607.                 'page_title' => $lang['front_member_forgot'].' - Member Area',
  608.                 'alertmsg' => $alertmsg
  609.             );
  610.             $adddata = array_merge($info, $lang);
  611.             $templates->addData(
  612.                 $adddata
  613.             );
  614.             echo $templates->render('forgot', compact('lang'));
  615.         } else {
  616.             header('location:'.BASE_URL.'/member');
  617.         }
  618.     } else {
  619.         header('location:'.BASE_URL.'/404.php');
  620.     }
  621. });
  622.  
  623. /**
  624.  * Router untuk menampilkan request halaman recover member.
  625.  *
  626.  * Router for display request in recover member page.
  627.  *
  628. */
  629. $router->match('GET|POST', '/member/recover/([a-z0-9_-]+)/([a-z0-9_-]+)', function($username, $forgotkey) use ($core, $templates) {
  630.     if ($core->posetting[17]['value'] == 'Y') {
  631.         if (!empty($username) && !empty($forgotkey)){
  632.             $alertmsg = '';
  633.             $lang = $core->setlang('home', WEB_LANG);
  634.             $forgetuser = $core->postring->valid($username, 'xss');
  635.             $forgetkey = $core->postring->valid($forgotkey, 'xss');
  636.             $count_user = $core->podb->from('users')
  637.                 ->where('username', $forgetuser)
  638.                 ->where('forget_key', $forgetkey)
  639.                 ->where('level', '4')
  640.                 ->count();
  641.             if ($count_user > 0) {
  642.                 $user = $core->podb->from('users')
  643.                     ->where('username', $forgetuser)
  644.                     ->where('forget_key', $forgetkey)
  645.                     ->where('level', '4')
  646.                     ->limit(1)
  647.                     ->fetch();
  648.                 if ($user['blokir'] == 'N'){
  649.                     $newcode = "123456";
  650.                     $pass = md5($newcode);
  651.                     $data = array(
  652.                         'password' => $pass,
  653.                         'forget_key' => ''
  654.                     );
  655.                     $query = $core->podb->update('users')
  656.                         ->set($data)
  657.                         ->where('username', $forgetuser)
  658.                         ->where('forget_key', $forgetkey);
  659.                     $query->execute();
  660.                     $alertmsg = '1';
  661.                 } else {
  662.                     $alertmsg = '2';
  663.                 }
  664.                 $info = array(
  665.                     'page_title' => $lang['front_member_forgot'].' - Member Area',
  666.                     'alertmsg' => $alertmsg
  667.                 );
  668.                 $adddata = array_merge($info, $lang);
  669.                 $templates->addData(
  670.                     $adddata
  671.                 );
  672.                 echo $templates->render('recover', compact('lang'));
  673.             } else {
  674.                 header('location:'.BASE_URL.'/404.php');
  675.             }
  676.         } else {
  677.             header('location:'.BASE_URL.'/404.php');
  678.         }
  679.     } else {
  680.         header('location:'.BASE_URL.'/404.php');
  681.     }
  682. });
  683.  
  684. /**
  685.  * Router untuk menampilkan request halaman login member dengan facebook.
  686.  *
  687.  * Router for display request in login member page with facebook.
  688.  *
  689. */
  690. $router->match('GET|POST', '/member/login/facebook', function() use ($core, $templates) {
  691.     require_once DIR_CON.'/component/oauth/facebook/Facebook/autoload.php';
  692.  
  693.     $currentOauthfb = $core->podb->from('oauth')->fetchAll();
  694.     $appIdOauthfb = $currentOauthfb[0]['oauth_key'];
  695.     $secretOauthfb = $currentOauthfb[0]['oauth_secret'];
  696.  
  697.     $fb = new Facebook\Facebook([
  698.         'app_id'  => $appIdOauthfb,
  699.         'app_secret' => $secretOauthfb,
  700.         'default_graph_version' => 'v2.5'
  701.     ]);
  702.  
  703.     $helper = $fb->getRedirectLoginHelper();
  704.     $loginUrl = $helper->getLoginUrl(BASE_URL.'/'.DIR_CON.'/themes/member/facebook/oauth.php', ['public_profile', 'email', 'manage_pages', 'publish_actions']);
  705.     header('location:'.$loginUrl);
  706. });
  707.  
  708. /**
  709.  * Router untuk menampilkan request halaman login member dengan twitter.
  710.  *
  711.  * Router for display request in login member page with twitter.
  712.  *
  713. */
  714. $router->match('GET|POST', '/member/login/twitter', function() use ($core, $templates) {
  715.     require_once DIR_CON.'/component/oauth/twitter/Twitter/twitteroauth.php';
  716.  
  717.     $currentOauthtw = $core->podb->from('oauth')->fetchAll();
  718.     $conkeyOauthtw = $currentOauthtw[1]['oauth_key'];
  719.     $consecretOauthtw = $currentOauthtw[1]['oauth_secret'];
  720.  
  721.     define('CONSUMER_KEY', ''.$conkeyOauthtw.'');
  722.     define('CONSUMER_SECRET', ''.$consecretOauthtw.'');
  723.     define('OAUTH_CALLBACK', ''.BASE_URL.'/member/login/twitter');
  724.  
  725.     $connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, @$_SESSION['oauth_token'], @$_SESSION['oauth_token_secret']);
  726.  
  727.     if (isset($_REQUEST['oauth_verifier'])) {
  728.         $access_token = $connection->getAccessToken($_REQUEST['oauth_verifier']);
  729.     }
  730.  
  731.     if ($connection->http_code == 200) {
  732.         $tokenuser = $access_token['oauth_token'];
  733.         $tokenuser_secret = $access_token['oauth_token_secret'];
  734.         $twuserid = $access_token['user_id'];
  735.         $twusername = $access_token['screen_name'];
  736.  
  737.         unset($_SESSION['oauth_token']);
  738.         unset($_SESSION['oauth_token_secret']);
  739.  
  740.         $user_count = $core->podb->from('users')
  741.             ->where('username', strtolower(str_replace(' ', '', $twusername)))
  742.             ->where('level', '4')
  743.             ->where('block', 'Y')
  744.             ->count();
  745.         if ($user_count > 0) {
  746.             $user_data = $core->podb->from('users')
  747.                 ->where('username', strtolower(str_replace(' ', '', $twusername)))
  748.                 ->where('level', '4')
  749.                 ->where('block', 'Y')
  750.                 ->limit(1)
  751.                 ->fetch();
  752.             $timeout = new PoTimeout;
  753.             $timeout->rec_session_member($user_data);
  754.             $timeout->timer_member();
  755.             $sid_lama = session_id();
  756.             session_regenerate_id();
  757.             $sid_baru = session_id();
  758.             $sesi = array(
  759.                 'id_session' => $sid_baru
  760.             );
  761.             $query = $core->podb->update('users')
  762.                 ->set($sesi)
  763.                 ->where('username', strtolower(str_replace(' ', '', $twusername)));
  764.             $query->execute();
  765.             header('location:'.BASE_URL.'/member');
  766.         } else {
  767.             $last_user = $core->podb->from('users')->limit(1)->orderBy('id_user DESC')->fetch();
  768.             $data = array(
  769.                 'id_user' => $last_user['id_user']+1,
  770.                 'username' => strtolower(str_replace(' ', '', $twusername)),
  771.                 'password' => '',
  772.                 'nama_lengkap' => $twusername,
  773.                 'email' => '',
  774.                 'level' => '4',
  775.                 'tgl_daftar' => date('Ymd'),
  776.                 'block' => 'Y',
  777.                 'id_session' => md5($twuserid)
  778.             );
  779.             $query = $core->podb->insertInto('users')->values($data);
  780.             $query->execute();
  781.             $user_data = $core->podb->from('users')
  782.                 ->where('username', strtolower(str_replace(' ', '', $twusername)))
  783.                 ->where('level', '4')
  784.                 ->where('block', 'Y')
  785.                 ->limit(1)
  786.                 ->fetch();
  787.             $timeout = new PoTimeout;
  788.             $timeout->rec_session_member($user_data);
  789.             $timeout->timer_member();
  790.             header('location:'.BASE_URL.'/member');
  791.         }
  792.     } else {
  793.         header('location:'.BASE_URL.'/'.DIR_CON.'/themes/member/twitter/oauth.php');
  794.     }
  795. });
  796.  
  797. /**
  798.  * Router untuk menampilkan request halaman logout member.
  799.  *
  800.  * Router for display request in logout member page.
  801.  *
  802. */
  803. $router->match('GET|POST', '/member/logout', function() use ($core, $templates) {
  804.     session_destroy();
  805.     header('location:'.BASE_URL.'/member/login');
  806. });
  807.  
  808. /**
  809.  * Router untuk menampilkan request rss feed.
  810.  *
  811.  * Router for display request rss feed.
  812.  *
  813.  * Added in v.2.0.1
  814. */
  815. $router->match('GET|POST', '/feed', function() use ($core, $templates) {
  816.     header('Content-Type: text/xml; charset=utf-8', true); //Set document header content type to be XML
  817.     $xml = new DOMDocument("1.0", "UTF-8"); //Create new DOM document.
  818.  
  819.     //Create "RSS" element
  820.     $rss = $xml->createElement("rss");
  821.     $rss_node = $xml->appendChild($rss); //add RSS element to XML node
  822.     $rss_node->setAttribute("version","2.0"); //set RSS version
  823.  
  824.     //Set attributes
  825.     $rss_node->setAttribute("xmlns:content", "http://purl.org/rss/1.0/modules/content/");
  826.     $rss_node->setAttribute("xmlns:wfw", "http://wellformedweb.org/CommentAPI/");
  827.     $rss_node->setAttribute("xmlns:dc", "http://purl.org/dc/elements/1.1/");
  828.     $rss_node->setAttribute("xmlns:atom", "http://www.w3.org/2005/Atom");
  829.     $rss_node->setAttribute("xmlns:sy", "http://purl.org/rss/1.0/modules/syndication/");
  830.     $rss_node->setAttribute("xmlns:slash", "http://purl.org/rss/1.0/modules/slash/");
  831.     $rss_node->setAttribute("xmlns:georss", "http://www.georss.org/georss");
  832.     $rss_node->setAttribute("xmlns:geo", "http://www.w3.org/2003/01/geo/wgs84_pos#");
  833.     $rss_node->setAttribute("xmlns:media", "http://search.yahoo.com/mrss/");
  834.  
  835.     //Create RFC822 Date format to comply with RFC822
  836.     $date_f = date("D, d M Y H:i:s T", time());
  837.     $build_date = gmdate(DATE_RFC2822, strtotime($date_f));
  838.  
  839.     //Create "channel" element under "RSS" element
  840.     $channel = $xml->createElement("channel");  
  841.     $channel_node = $rss_node->appendChild($channel);
  842.  
  843.     //Add general elements under "channel" node
  844.     $channel_node->appendChild($xml->createElement("title", $core->posetting[0]['value'])); //title
  845.  
  846.     //A feed should contain an atom:link element
  847.     $channel_atom_link = $xml->createElement("atom:link");
  848.     $channel_atom_link->setAttribute("href", $core->posetting[1]['value'].'/feed'); //url of the feed
  849.     $channel_atom_link->setAttribute("rel", "self");
  850.     $channel_atom_link->setAttribute("type", "application/rss+xml");
  851.     $channel_node->appendChild($channel_atom_link);
  852.  
  853.     //Add general elements under "channel" node
  854.     $channel_node->appendChild($xml->createElement("link", $core->posetting[1]['value'])); //website link
  855.     $channel_node->appendChild($xml->createElement("description", $core->posetting[2]['value']));  //description
  856.     $channel_node->appendChild($xml->createElement("lastBuildDate", $build_date));  //last build date
  857.     $channel_node->appendChild($xml->createElement("language", strtolower(WEB_LANG).'-'.strtoupper(WEB_LANG)));  //language
  858.     $channel_node->appendChild($xml->createElement("generator", "http://www.popojicms.org")); //generator
  859.  
  860.     //Add general elements under "channel" node
  861.     $image_node = $channel_node->appendChild($xml->createElement("image"));
  862.     $url_image_node = $image_node->appendChild($xml->createElement("url", BASE_URL.'/'.DIR_INC.'/images/favicon.png'));
  863.     $title_image_node = $image_node->appendChild($xml->createElement("title", $core->posetting[0]['value']));
  864.     $link_image_node = $image_node->appendChild($xml->createElement("link", $core->posetting[1]['value']));
  865.  
  866.     //Fetch records from the database
  867.     $recents = $core->podb->from('post')
  868.         ->select(array('post_description.title', 'post_description.content'))
  869.         ->leftJoin('post_description ON post_description.id_post = post.id_post')
  870.         ->where('post_description.id_language', WEB_LANG_ID)
  871.         ->where('post.active', 'Y')
  872.         ->where('post.publishdate < ?', date('Y-m-d H:i:s'))
  873.         ->orderBy('post.id_post DESC')
  874.         ->limit(20)
  875.         ->fetchAll();
  876.     foreach($recents as $recent) {
  877.         $item_node = $channel_node->appendChild($xml->createElement("item")); //create a new node called "item"
  878.         $title_node = $item_node->appendChild($xml->createElement("title", $recent['title'])); //Add Title under "item"
  879.         $link_node = $item_node->appendChild($xml->createElement("link", $core->postring->permalink(rtrim(BASE_URL, '/'), $recent))); //add link node under "item"
  880.  
  881.         //Unique identifier for the item (GUID)
  882.         $guid_link = $xml->createElement("guid", $core->postring->permalink(rtrim(BASE_URL, '/'), $recent));
  883.         $guid_link->setAttribute("isPermaLink", "false");
  884.         $guid_node = $item_node->appendChild($guid_link);
  885.  
  886.         //Create "description" node under "item"
  887.         $description_node = $item_node->appendChild($xml->createElement("description"));
  888.  
  889.         //Fill description node with CDATA content
  890.         $description_contents = $xml->createCDATASection($core->postring->cuthighlight('post', $recent['content'], '250').'...');
  891.         $description_node->appendChild($description_contents);
  892.  
  893.         //Published date
  894.         $date_rfc = gmdate(DATE_RFC2822, strtotime($recent['publishdate']));
  895.         $pub_date = $xml->createElement("pubDate", $date_rfc);
  896.         $pub_date_node = $item_node->appendChild($pub_date);
  897.  
  898.         //Item media
  899.         $item_media = $xml->createElement("media:content");
  900.         $item_media->setAttribute("url", BASE_URL.'/po-content/thumbs/'.$recent['picture']);
  901.         $item_media->setAttribute("medium", "image");
  902.         $item_media_node = $item_node->appendChild($item_media);
  903.         $media_title = $xml->createElement("media:title", $recent['title']);
  904.         $media_title->setAttribute("type", "html");
  905.         $media_title_node = $item_media_node->appendChild($media_title);
  906.     }
  907.  
  908.     //Create xml
  909.     echo $xml->saveXML();
  910. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement