Monday, June 22, 2015

Facebook libraries using example for Codeigniter

<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

// Skip these two lines if you're using Composer
define('FACEBOOK_SDK_V4_SRC_DIR', APPPATH . 'libraries/facebook-php-sdk-v4/src/Facebook/');
require APPPATH . 'libraries/facebook-php-sdk-v4/autoload.php';

use Facebook\FacebookSession;
use Facebook\FacebookRequest;
use Facebook\FacebookRequestException;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\GraphUser;

class login extends HO_Site {

    public function __construct() {
        parent::__construct();

        $this->load->config('facebook');
        $this->load->library('session');

        $this->lang->load('user');
        $this->load->library('validation/UserValidation', array($this), 'validation');

        FacebookSession::setDefaultApplication(config_item('facebook_app_id'), config_item('facebook_app_secret'));
    }

    public function fbs() {
        $helper = new FacebookRedirectLoginHelper($this->config->item('redirect_url', 'facebook'));
        $loginUrl = $helper->getLoginUrl(); //($this->config->item('permissions', 'facebook'));
        redirect($loginUrl);
    }

    public function fbe() {
        $helper = new FacebookRedirectLoginHelper($this->config->item('redirect_url', 'facebook'));
        $session = FALSE;
        try {
            if ($session === FALSE) {
                $session = $helper->getSessionFromRedirect();
            }
        } catch (FacebookRequestException $ex) {
            log_message('error', $ex->getMessage());
        } catch (\Exception $ex) {
            log_message('error', $ex->getMessage());
        }
        if ($session) {
            try {
                $me = (new FacebookRequest(
                        $session, 'GET', '/me'
                        ))->execute()->getGraphObject(GraphUser::className());

                $firstname = $me->getFirstName();
                $lastname = $me->getLastName();
                $email = $me->getEmail();

                if (!User()->logged_in()) {
                    $user = $this->user_model->find_user($email);

                    if (empty($user) || !isset($user['id'])) {

                        $new_password = User()->get_random_password();

                        $posted['firstname'] = $firstname;
                        $posted['lastname'] = $lastname;
                        $posted['username'] = $email;
                        $posted['email'] = $email;
                        $posted['salt'] = User()->get_salt();
                        $posted['password'] = User()->get_hashed_password($posted, $new_password);
                        $posted['createddate'] = utc_datetime();

                        $role = $this->role_model->get(array('code' => 'user'));
                        $posted['role_id'] = $role['id'];
                        $posted['id'] = $this->user_model->save($posted);
                       
                    } else {
                        if (User()->login($email, $user['password'], true, true)) {
                            redirect(site_url());
                        } else {
                            redirect(site_url('login'));
                        }
                    }
                } else {
                    redirect(site_url());
                }
            } catch (FacebookRequestException $e) {
                // The Graph API returned an error
                $this->error($ex->getMessage());
            } catch (\Exception $e) {
                // Some other error occurred
                $this->error($ex->getMessage());
            }
        } else {
            redirect(site_url('login'));
        }
    }

    public function index($error = '') {
        if (User()->logged_in()) {
            redirect(site_url());
        } else {
            $loginUrl = site_url('login/fbs');
            $this->view('index', array('loginUrl' => $loginUrl, 'error' => $error));
        }
    }

    public function auth() {
        if ($this->validation->validate_login()) {
            $posted = $this->input->post();
            $email = $posted['username'];
            $password = $posted['password'];

            try {
                if (!User()->logged_in()) {
                    $user = $this->user_model->find_user($email);

                    if (empty($user) || !isset($user['id'])) {
                        $posted['username'] = $email;
                        $posted['email'] = $email;
                        $posted['salt'] = User()->get_salt();
                        $posted['password'] = User()->get_hashed_password($posted, $password);
                        $posted['createddate'] = utc_datetime();

                        $role = $this->role_model->get(array('code' => 'user'));
                        $posted['role_id'] = $role['id'];
                        $posted['id'] = $this->user_model->save($posted);
                    } else {
                        if (User()->login($email, $password, true)) {
                            redirect(site_url());
                        } else {
                            $this->index('Нэр эсвэл нууц үг буруу байна!');
                        }
                    }
                } else {
                    redirect(site_url());
                }
            } catch (Exception $ex) {
                //500 Internal Server Error
                log_message('error', $ex->getMessage());
                $this->index('Нэвтрэх үед алдаа гарлаа!');
            }
        } else {
            //400 Bad Request
            $this->index('Нэр эсвэл нууц үг буруу байна!');
        }
    }

    public function reset() {
        if ($this->validation->validate_reset()) {
            try {
                $posted = $this->input->post('email');
                if (User()->reset($posted)) {
                    $this->success('Нууц үгийг сэргээлээ!');
                } else {
                    $this->error('Нууц үгийг сэргээлээ!');
                }
            } catch (Exception $ex) {
                log_message('error', $ex->getMessage());
                $this->error($ex->getMessage());
            }
        } else {
            $this->error('Хүсэлт буруу байна!');
        }
    }

}

PHPExcel libraries using example for Codeigniter

public function export() {
        $this->load->library('PHPExcel');

        $where = array(
            'role.code' => 'user',
            'user_meta.key' => 'winner',
            'user_meta.value' => 'OK');
        $joins = array('user.role_id=role.id', 'user.id=user_meta.user_id');
        $fields = 'user.id,user.email,user.username,user.firstname,user.lastname';

        $winner_users = $this->user_model->get_list($where, null, $fields, $joins);

        $winner_list = array();
        foreach ($winner_users as $winner_user) {
            $user_meta = $this->user_model->get(
                    array('user_id' => $winner_user['id'], 'key' => 'article_name'), 'user_meta');
            $winner_user['article_name'] = $user_meta['value'];
            $winner_list[] = $winner_user;
        }

        $heading = array('ID', 'И-Мэйл', 'Хэрэглэгч', 'Нэр', 'Овог', 'Урамшуулал');

        //Create a new PHPExcel Object
        $objPHPExcel = new PHPExcel();
        $objPHPExcel->setActiveSheetIndex(0);
        $objPHPExcel->getActiveSheet()->setTitle("Ялагч болсон хэрэглэгчид");

        //Loop Heading
        $rowNumberH = 1;
        $colH = 'A';
        foreach ($heading as $h) {
            $cell_name = $colH . $rowNumberH;
            $objPHPExcel->getActiveSheet()->setCellValue($cell_name, $h);
            // Make bold cells
            $objPHPExcel->getActiveSheet()->getStyle($cell_name)->getFont()->setBold(true);
            $colH++;
        }

        //Loop Result
        $no = 2;
        foreach ($winner_list as $winner) {
            $objPHPExcel->getActiveSheet()->setCellValue('A' . $no, $winner['id']);
            $objPHPExcel->getActiveSheet()->setCellValue('B' . $no, $winner['email']);
            $objPHPExcel->getActiveSheet()->setCellValue('C' . $no, $winner['username']);
            $objPHPExcel->getActiveSheet()->setCellValue('D' . $no, $winner['firstname']);
            $objPHPExcel->getActiveSheet()->setCellValue('E' . $no, $winner['lastname']);
            $objPHPExcel->getActiveSheet()->setCellValue('F' . $no, $winner['article_name']);
            $no++;
        }

        //Columns size by auto
        foreach (array('B', 'C', 'D', 'E', 'F') as $colname) {
            $col = $objPHPExcel->getActiveSheet()->getColumnDimension($colname);
            $col->setAutoSize(true);
        }
        $objPHPExcel->getActiveSheet()->calculateColumnWidths();

        //Freeze pane
        $objPHPExcel->getActiveSheet()->freezePane('A1');

        //Save as an Excel BIFF (xls) file
        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');

        $filename = "winners_" . date('Ymd') . ".xls";
        header('Content-Type: application/vnd.ms-excel');
        header("Content-Disposition: attachment;filename=\"$filename\"");
        header('Cache-Control: max-age=0');

        $objWriter->save('php://output');
        exit;
    }

Thursday, June 18, 2015

div rotate using CSS3 transform Property

<!DOCTYPE html>
<html>
<head>
<style>
div {
    width: 200px;
    height: 100px;
    background-color: yellow;
    /* Rotate div */
    -ms-transform: rotate(45deg); /* IE 9 */
    -webkit-transform: rotate(45deg); /* Chrome, Safari, Opera */
    transform: rotate(75deg);
}
</style>
</head>
<body>

<div>Hello</div>
<br>

<p><b>Note:</b> Internet Explorer 8 and earlier versions do not support the transform property.</p>

<p><b>Note:</b> Internet Explorer 9 supports an alternative, the -ms-transform property. Newer versions of IE support the transform property (do not need the ms prefix).</p>

<p><b>Note:</b> Chrome, Safari and Opera supports an alternative, the -webkit-transform property.</p>

</body>
</html>

Wednesday, June 17, 2015

php codeigniter facebook javascript sdk example

<script>

        window.fbAsyncInit = function () {
            FB.init({
                appId: '<?php echo config_item('facebook_app_id'); ?>',
                cookie: true, // enable cookies to allow the server to access
                // the session
                xfbml: true, // parse social plugins on this page
                version: 'v2.2' // use version 2.2
            });
            FB.getLoginStatus(function (response) {
                statusChangeCallback(response);
            });
        };

        // Load the SDK asynchronously
        (function (d, s, id) {
            var js, fjs = d.getElementsByTagName(s)[0];
            if (d.getElementById(id))
                return;
            js = d.createElement(s);
            js.id = id;
            js.src = "//connect.facebook.net/en_US/sdk.js";
            fjs.parentNode.insertBefore(js, fjs);
        }(document, 'script', 'facebook-jssdk'));

        function statusChangeCallback(response) {
            console.log('statusChangeCallback');
            console.log(response);

            if (response.status === 'connected') {
                // Logged into your app and Facebook.
                getFbUserInfo(response);
            } else if (response.status === 'not_authorized') {
                // The person is logged into Facebook, but not your app.
                document.getElementById('fbstatus').innerHTML = 'Please log ' +
                        'into this app.';
            } else {
                // The person is not logged into Facebook, so we're not sure if
                // they are logged into this app or not.
                if (response.status !== 'unknown') {
                    document.getElementById('fbstatus').innerHTML = 'Please log ' +
                            'into Facebook.';
                }
            }
        }

        function getFbUserInfo(auth) {
            console.log('Welcome!  Fetching your information.... ');
            FB.api('/me', function (me) {
                console.log('Successful login for: ' + me.name);

                $('#fbstatus').text('Үйлчлүүлсэнд баярлалаа, ' + me.name + '!').show();

                $.ajax({
                    type: "post",
                    url: "<?php echo site_url('api/auth/login'); ?>",
                    data: 'email=' + me.email + "&name=" + me.name + "&access=" + auth.authResponse.accessToken,
                    beforeSend: function () {
                        $('#loading').show();
                        alert(auth.authResponse.accessToken);
                    }
                }).done(function (data) {
                    $('#loading').hide('slow');
                    alert(data);
                });
            });
        }

        $(document).ready(function () {
//            setTimeout(function () {
//                $('.fb-login-button').show();
//            }, 2000);
        });
    </script>