Monday, March 21, 2016

Configure PayPal with Instant Payment Notification

IPN1.PNG
1- Login to your PayPal Business Account
2- Go My Account -> Profile -> My selling tools
3- Click update on Website preferences
4- Choose off for Auto Return and remove the url inside
IPN2.PNG
5- Choose off for Payment Data Transfer
IPN3.PNG
6- Click save button
IPN4.PNG
7- Go to Instant Payment Notification Preferences
8- Enable IPN message -> Pass your notification URL
IPN5.PNG

9- Save


More detail about IPN
4- https://www.paypal.com/kh/cgi-bin/webscr?cmd=p/acc/ipn-subscriptions-outside



Check OS and Browser Agent with PHP




The user agent string is a text that the browsers themselves send to the webserver to identify themselves, so that websites can send different content based on the browser or based on browser compatibility.

Mozilla is a browser rendering engine (the one at the core of Firefox) and the fact that Chrome and IE contain the string Mozilla/4 or /5 identifies them as being compatible with that rendering engine.

In this case I will show you how to detect the Os or Browser Agent using PHP ,

* Check OS
$agent = $_SERVER['HTTP_USER_AGENT'];
// get os
if (preg_match('/linux/i', $agent)) {
    $os = 'linux';
} elseif (preg_match('/macintosh|mac os x/i', $agent)) {
    $os = 'mac';
} elseif (preg_match('/windows|win32/i', $agent)) {
    $os = 'windows';
}

* Check Browser Agent
if (preg_match('/Chrome/i', $agent)) {
    if ($os == 'windows') {
        //impleted;
     } else {
        //impleted;
     }
} elseif (preg_match('/Firefox/i', $agent)) {
   if ($os == 'windows') {
      //impleted;
   } else {
     //impleted;
   }
} elseif (preg_match('/Safari/i', $agent)) {
   if ($os == 'windows') {
      //impleted;
   } else {
      //impleted;
   }
}
- Let's enjoy!

Friday, February 5, 2016

Different language message error from Model Cakephp


That is just a small trick how how we can make our website to be multiple language. For the concept is not different from other
framework, by the way you have understand about folder structure of Cakephp.

In this case you will see the Local folder which its contain the two folder inside.

I have created two folder of language "en and jp".

1- Create language folder. ex. ('en and jp')



2- Create file with extension ".po"
3- There are two key word in the file which you have to understand :
    msgid : it is the key or id which represent the message as a global
    msgstr: it is the message of the key a head
4- Use in model. ex.
public $validate = array(
        'username' => array(
            'required' => array(
                'rule' => array('notBlank'),
                'message' => 'This field is required!'
            )
        ),
        'password' => array(
            'required' => array(
                'rule' => array('notBlank'),
                'message' => 'This field is required!',
            ),
            'min_length' => array(
                'rule' => array('minLength', '5'),
                'message' => 'Password must over 5',
            )
        ),
);

5- check in the file .po syntax
    a- Example in en folder :

msgid "This field is required!"
msgstr "This field is required!"

msgid "Please enter the same value again!"
msgstr "Please enter the same value again!"

msgid "Password must over 5!"
msgstr "Password must over 5!"

msgid "Email already exist!"
msgstr "Email already exist!"

msgid "Please enter valid phone number!"
msgstr "Please enter valid phone number!"

msgid "This field must be number!"
msgstr "This field must be number!"

msgid "Invalid email format!"
msgstr "Invalid email format!"

   b- Example in jp folder :
msgid "This field is required!"
msgstr "必須項目です。"

msgid "Please enter the same value again!"
msgstr "必須項目です。"

msgid "Password must over 5!"
msgstr "パスワードは5文字以上を入力ください。"

msgid "Email already exist!"
msgstr "入力されたEメールは既に存在しています。"

msgid "Please enter valid phone number!"
msgstr "電話の形式ではありません。"

msgid "This field must be number!"
msgstr "数値ではありません。"

msgid "Invalid email format!"
msgstr "Eメールの形式ではありません。"

6- Please configure the language in AppController :

Configure::write('Config.language', 'jp or en');

Ok, that is. Let's enjoy.

Friday, January 22, 2016

Go to position with jQuery



This is just a small trick on how to go to the page section with Jquery by referenced from url. So the concept is not difficult first you need to do is to add the # which will be connected with your link (eg. www.url.com/page#id). After that you can use Jquery window.location.hash to get the "#id" from url. In this code I have used animate function to show the transition while the page is scrolled to the section.



ID


Text Description

$(function() {
        var ha = window.location.hash;
        if(ha) {
            var divLoc = $(ha).offset();
            $('html, body').animate({scrollTop: divLoc.top}, "slow");
        }
    })
 }
}



Tuesday, November 17, 2015

Call and use helper in controller Cakephp

Somebody said that there would have many ways to call Helper to use in view , but inspire I would show you how to implement it in Controller.php

class YourContrller extends Objects{
  pubic function yourfunction()
  {
  App::import('Helper', 'String'); 
  $string = new StringHelper(new View());
 
  $string->yourFunctionHelper();
 }
}


StringHelper.php

class StringHelper extends AppHelper{
  
   public function yourfunction()
   {
     .....
   }
} 

Saturday, November 14, 2015

Check and Remove Flash Session with Cakephp


Controller.php
 public function contact()
    {
        if($this->Session->check('Message.message_send_success')) {
            $this->Session->delete('Message.message_send_success');
        }
        if ($this->request->is('post')) {
            $author = $this->viewVars['get_author'];

            if (!$author) {
                return $this->Session->setFlash(
                        'Both fields are required!',
                        'default',
                        array('class' => 'redTxt'),
                        'message_send_error');
            } else {
                $sender_name = ucfirst($author[0]['User']['username']);
                $email       = $author[0]['User']['email'];
                $user_id     = $author[0]['User']['id'];
                $this->loadModel('User');
                    $title = $this->request->data['User']['title'];
                    $body  = $this->request->data['User']['body'];
                    if (!$title && !$body) {
                        return $this->Session->setFlash(
                            'Both fields are required!',
                            'default',
                            array('class' => 'redTxt'),
                            'message_send_error');
                    }
                    $Email = new CakeEmail();
                    $Email->from(
                        array($email => $title))
                        ->to($email)
                        ->subject($title)
                        ->emailFormat('html')
                        ->send('From '.h($sender_name).' '.h($body));
                    $this->Session->setFlash(
                        'The message has been send!',
                        'default',
                        array('class' => 'alert alert-success'),
                        'message_send_success');
                }
        }
        $this->set('title', 'Contact Us');
    }
}
view.php
Session->check('Message.message_send_success')): ?> 

THANK FOR YOUR CONTACT US!

your message has been send to us successfully.
Go back to home

Monday, November 9, 2015

Get properties from beforefilter in Cakephp to other function



That is just a trick which most of the developers are still wondering that is there a ways to get some properties from beforefilter in Cakephp to use in other function ? so here is the ways to do.

AppController.php
public function beforeFilter()
{
$user_id = ($this->Auth->user('id') != '' ? $this->Auth->user('id'): $author[0]['User']['id']);
$this->User->recursive = -1;
$get_author = $this->User->find('all',
     array(
        'conditions' => array('User.id' => $user_id)
     ));
$this->set('get_author', $get_author);
}
FavoritesController.php
public function get_vaforite(){
   pr( $this->viewVars['get_author']); 
}
Result :
Array
(
    [0] => Array
        (
            [User] => Array
                (
                    [id] => 563c9401-445c-4d94-9151-5edb0a79370f
                    [username] => samphors bb
                    [password] => 3076ca74262cf933d1bbb4ee97474255f9aa8d9a
                    [facebook] => 
                    [email] => samphors.info@gmail.com
                    [address] => March dela deja
                    [mobile] => 1234567890
                    [birthdate] => 2015-11-10
                    [country] => Cambodia
                    [partner_country] => Italy
                    [height] => 6
                    [foot_size] => 3
                    [partner] => Dora vanndya
                    [partner_birthdate] => 2015-11-18
                    [partner_height] => 2
                    [partner_foot_size] => 5
                    [role] => 
                    [token] => 
                    [created] => 2015-11-06 20:50:25
                    [modified] => 2015-11-07 00:20:07
                )

        )

)