DABR – Buat sendiri tweetlonger di self-hosting

Posted on

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.

Gravatar Image
Seorang warga negara Indonesia biasa. Pengguna MAC dan develop server Ubuntu & CentOS. Contact : admin [at] nugi.biz

12 comments

  1. SOLVED ..
    ada yg error kode tuh gan ..
    di index.php nya .. line 16
    seharus nya gini ..

    $tweet_text = preg_replace(‘#(^|[n ])([w]+?://[^ “nrt<]*)#','\1\2‘, $tweet_text);
    CMIIW

    oh ya gan satu lagi problem belum fix ..
    kalo ngetwiit g lebih dari 140 knpa masuk database jg ya om ..
    tolong pencerahhan nya …

    contoh http://duasatu.p.ht/t/b0r4zn

    1. kalo di ane cuma ganti primary_key nya saja gan langsung fix, sepertinya agan ada kesalahan di bagian if (strlen(utf8_decode($status)) > 140) { harusnya di itu sudah di batasi yang akan di shorten. coba di cek twitter_update nya gan..

      1. wah iya om bisa , lupa di tambahin itu nya ..
        makasih banyak om

        oh iya om kalo yang itu di buat settingan gmn ya om , default nya uato cut ..
        maaf ya udah ngerepotin and kabanyakan nanya .. 😀

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.