<?php
Class PostsController extends AppController {
var $name = 'Posts';
var $helpers = array('Time');
var $layout = 'default';
function index(){
# tanpa pagination
#$this->data = $this->Post->find('all');
# dengan pagination
$this->paginate = array(
'limit' => 2,
'order' => 'Post.id DESC',
);
$this->data = $this->paginate('Post');
# log akan ditulis ke fail activity.log
$ip = $_SERVER['REMOTE_ADDR'];
$this->log("User view Post index from $ip",'activity');
}
function add(){
if($this->data){
# render false
#debug( $this->data );
#$this->autoRender = false;
#die();
# cuba save ke db
if($this->Post->save($this->data) ){
$this->Session->setFlash('Post added');
$this->redirect('index');
}else{
$this->data['errors'] = $this->Post->invalidFields();
}
}
# keluarkan category untuk dropdown
#$categories= $this->Post->Category->find('list');
#$this->set('categories',$categories);
$this->set('categories', $this->Post->Category->find('list'));
# gunakan add.bk
$this->render('add2');
}
function view($id=null){
$this->data = $this->Post->findById($id);
}
function edit($id = null){
# user cuba update data
if($this->data){
if( $this->Post->save( $this->data )) {
$this->Session->setFlash('Updated');
$this->redirect('index');
} else {
$this->Session->setFlash('Failed to update');
$this->data['errors'] = $this->Post->invalidFields();
}
} // tamat form update
# checking kalau tak passing id
# redirect ke index
if(empty($id)){
$this->Session->setFlash('Invalid id');
$this->redirect('index');
}
# fetch data dari db untuk bagi ke FORM
# var $this->data akan digunakan dalam view
# secara automatik
$this->data = $this->Post->findById($id);
$this->set('categories', $this->Post->Category->find('list'));
# check data wujud dalam database ?
if( empty( $this->data )){
# log kan ke file
# APP/tmp/error.log
$ip = $_SERVER['REMOTE_ADDR'];
$this->log("Post Invalid id from $ip");
# log akan ditulis ke fail activity.log
#$this->log("Post Invalid id from $ip",'activity');
# bagi mesej dan redirect
$this->Session->setFlash('Data does not exist');
$this->redirect('index');
}
#debug($this->data);
}
function delete($id = null){
if($this->Post->delete($id)){
# delete data berjaya
$this->Session->setFlash("Post #$id deleted");
} else {
$this->Session->setFlash("Post #$id deletion failed");
}
$this->redirect('index');
}
function search(){
$query = null;
$category_id = null;
# listkan category
$this->set('categories', $this->Post->Category->find('list'));
if($this->data || $this->passedArgs){
if($this->data){
if(!empty($this->data['Search']['category_id'])){
$category_id = $this->data['Search']['category_id'];
}
if(!empty($this->data['Search']['query'])){
$query = $this->data['Search']['query'];
}
}
if($this->passedArgs){
if(!empty($this->passedArgs['category_id'])){
$category_id = $this->passedArgs['category_id'];
}
if(!empty($this->passedArgs['query'])){
$query = $this->passedArgs['query'];
}
}
# jika $category_id == 0,
# maksudnya user nak search semua category
if($category_id == 0 || $category_id == null) {
# search guna conditions
$options = array(
'conditions' => array(
array( 'or' => array(
'Post.title LIKE' => "%$query%",
'Post.summary LIKE' => "%$query%",
'Post.content LIKE' => "%$query%",
//'Post.category_id ' => $category_id,
), // or
),
)
);
} else {
$options = array(
'conditions' => array(
array( 'or' => array(
'Post.title LIKE' => "%$query%",
'Post.summary LIKE' => "%$query%",
'Post.content LIKE' => "%$query%",
//'Post.category_id ' => $category_id,
), // or
'and' => array('Post.category_id ' => $category_id),
),
)
);
} // tamat checking category
$this->paginate = array(
'limit' => 1,
'order' => 'Post.id DESC',
);
$results = $this->paginate('Post', $options['conditions']);
$this->set(compact('results','query','category_id'));
}
}
} // tamat class