DABR – Buat sendiri tweetlonger di self-hosting

Posted on 5,590 views

Halo gan, udah hampir 6 harian nih saya ga posting-posting. Kali ini berbeda dari kemarin tentang Untangle kali ini menyimpang sedikit, karena kali ini saya akan memposting ke dunia php yaitu dabr. Seperti pada artikel saya sebelumnya yaitu Membuat Twitter Client dengan script Dabr kali ini saya membahas membuat tweetlonger pada hosting sendiri. Artikel ini sebenarnya saya ambil dari tutorial agan Coziboy@kaskus cuma ada sedikit perbaikan pada tutorialnya.

Pertama buka
“common/twitter.php”
cari function ini
=================
if (strlen(utf8_decode($status)) > 140) {
=================
di bawah function itu tambahin function ini
=================
$status = tweetShortener(user_current_username(),$status);
=================
terus cari function “function twitter_update()” di bagian akhir ada
=================
twitter_refresh($_POST['from'] ? $_POST['from'] : '');
}
=================
abis itu tambah ini
=================
function mysqliD() {
        include "t/cfg.php";
        $out = new mysqli("$host","$usr","$pwd","$db");
        return $out;
}
function tweetShortener($name,$status){
                $baseurl = BASE_URL;
                $jmlh_baseurl = strlen($baseurl);
                $jmlh_smua = 140 - ($jmlh_baseurl + 18);
        $cutStatus = substr($status, 0,$jmlh_smua);
        $dirname =   generateKey();

        if(dupe($dirname) > 0 ){
                $dirname =  substr ( md5(uniqid(rand(), true)), 0, 5)."a";
        }

        $maha = mysqliD();

        if( !ins($dirname, $maha->real_escape_string(trim($status))) ){
            file_put_contents("failins.null", $m->error, FILE_APPEND);
        }
        //sasa
$cutStatus .= "..(cont) http://t.twety.org/".$dirname;
return $cutStatus;
}
function dupe($dir){

     $m = mysqliD();
     $sql =  " SELECT * FROM shortener WHERE tweet_key = '$dir' ";
         if($m->connect_error){
              $m->close();
              return -1;
           } else {
               if ($r = $m->query($sql)){
                     $int = $r->num_rows;
                     $r->free_result();
                     $m->close();
                     return $int;
                  } else {
                      $m->close();
                      return -1;
                  }
           }

}

function generateKey($len = 6) {
   define('KEY_CHARS', 'abcdefghijklmnopqrstuvwxyz0123456789');
    $k = str_repeat('.', $len);
    while ($len--) {
        $k[$len] = substr(KEY_CHARS, mt_rand(0, strlen(KEY_CHARS) - 1), 1);
    }
    return $k;
}

function ins($dir, $status){
  $m = mysqliD();
    if($m->connect_error){
        file_put_contents("fail.null", $m->connect_error, FILE_APPEND);
        $m->close();
        return false;
    }  else {
                        $username = user_current_username();
                        $source = BASE_URL;
                        $date = twitter_date('H:i d-M-Y');
                $sql = "INSERT into shortener (tweet_key, tweet_text, username, date, source) VALUES ('$dir','$status', '$username', '$date', '$source');";
           if($m->query($sql)){
                $m->close();
                return true;
             } else {
                  file_put_contents("fail.null", $m->error, FILE_APPEND);
             }
        }
}
Liat di bagian “function mysqliD() {” sama “$cutStatus”
Ganti
=============
include “t/cfg.php”;
=============
sama folder tempat agan taruh cfg.php (nanti ada di bawah)
Ganti juga
=============
..(cont) http://tkj.de.vc
=============
sama text yg akan muncul kalo status di potong
#contoh : aku kaskuser setia karena kaskus tuh info nya ..(cont) http://tkj.de.vc/abcde
———————————-
Sekarang bikin cfg.php di folder yg agan pengenin
=============
<?php
        $host   = "localhost";
        $usr    = "root";
        $pwd    = "";
        $db     = "db_shortener";
        $tb     = "shortener";
        $tc     = "http://URLTC.AGAN/";

?>
dan ini buat nampilin
simpan sebagai index.php , taruh 1 folder sama cfg.php / url longtwit agan
<?php
ob_start();
include 'cfg.php';
include 'style.css';
                mysql_connect($host, $usr, $pwd);
                mysql_select_db($db);
                if(empty($_GET['tweet_key'])) {
                        header('Location: '.$tc.'');
                }
                $tweet_key = @mysql_real_escape_string($_GET['tweet_key']);

                $query = "SELECT * FROM $tb WHERE tweet_key = '$tweet_key'";
                $hasil = mysql_query($query);
                if(mysql_num_rows($hasil) == 1) {
                $data  = mysql_fetch_assoc($hasil);
                $tweet_text = $data['tweet_text'];
$tweet_text = preg_replace("#(^|[\n ])([\w]+?://[^ \"\n\r\t<]*)#","\\1<a href=\"\\2\" rel=\"nofollow\">\\2</a>", $tweet_text);
$tweet_text = preg_replace('#@([\\d\\w]+)#', '<a href="http://URLTC.AGAN/user/$1">$0</a>', $tweet_text);
$tweet_text = preg_replace('/#([\\d\\w]+)/', '<a href="http://URLTC.AGAN/search?query=%23$1">$0</a>', $tweet_text);
echo    '<!DOCTYPE html>
                                <html>
                                        <head>
                                                <link rel="shortcut icon" href="favicon.png" type="image/x-icon" />
                                                <meta charset="utf-8" />
                                                <meta name="viewport" content="width=device-width; initial-scale=1.0;" />
                                                <title>' . $data['tweet_text'] . ' / Twety™</title>
</head>
</html>';
echo '<div><div class="logo"><center><a href="'.$tc.'">Tweet Longer</a></center></div><br/><div class="twitl">';
                echo "<span class='status shift'><div class='user'><a href='".$tc."user/".$data['username']."'>@".$data['username']."</a> (".$data['date'].")<br/><br/></div></span>";
                echo  "<div class='shift'>".$tweet_text."</div> ";
                echo '<br/><span><div><small>via <a href="'.$data['source'].'" target="_blank">'.$tc.'</a> (<a href="http://t.twety.org/'.$tweet_key.'">http://t.twety.org/'.$tweet_key.'</a>)</small></div></span>';
                }

        if(mysql_num_rows($hasil) != 1) {
                        echo "<a href='".$tc."'><h1 align='center'>Not Found</h1></a></div>";
                }
ob_end_flush();
          ?>
sekalian deh ini buat css nya…
simpan dengan nama style.css
<style type="text/css">
html,body{background-color:#37383a;font:95% sans-serif;margin:0; color:#babec1;}
A{color:#39c;text-decoration:none;}
IMG{border:0em;}
#message{display:block;padding:.5em;}
.logo{border:0em;padding-left:.5em;padding-top:.5em;padding-bottom:.5em;margin: 0em; background:url("") repeat-x;}
.user{background:#272729 url("") repeat-x 0 0;;margin:-7px -7px 7px -7px;padding:7px;}
.status{display:block;word-wrap:break-word;}
.shift{min-height:24px;}
.profile{padding:7px;margin:7px 7px 7px 7px;border:1px solid #272729;}
.pengumuman{
color:#333;
padding:7px;
margin:7px 7px 7px 7px;
background:#fff6bf;
border:1px solid #ffd324;
}
</style>
#bisa di kreasikan sendiri, soalnya ane nyontek dari writelonger trus gw edit :ngakak
Terus ini buat tabelnya
CREATE TABLE IF NOT EXISTS `shortener` (
  `username` varchar(128) NOT NULL,
  `tweet_key` varchar(32) NOT NULL,
  `tweet_text` varchar(256) NOT NULL,
  `source` varchar(32) NOT NULL,
  `date` varchar(32) NOT NULL,
  PRIMARY KEY (`tweet_key`)
);
Oya 1 lagi, buat file .htaccess terus taruh di folder longtwit agan
# URL rewriting
RewriteEngine on
#RewriteBase /
RewriteRule ^([a-z,0-9,\_]*)$ index.php?tweet_key=$1 [L,QSA]

Nah nah sekarang tinggal testing aje gan, jika sudah jadi maka url seperti ini contoh : http://tkj.de.vc/bswoy9. Jika sudah berhasil di akses maka sukses sudah pembuatan tweetlonger kalian. Semoga Bermanfaat. Sekian.

Baca Juga  DABR - Setting Auto Refresh Interval
Gravatar Image
Seorang warga negara Indonesia biasa. Pengguna MAC dan develop server Ubuntu & CentOS. Contact : admin [at] nugi.biz