Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I use a standalone class in cakephp 1.3?

I have a standalone class I wrote in PHP for some very basic LDAP/AD functions. and I would like to use this class in a project I am working on in cakephp.

It looks like in cakephp 1.2 I could just add the class as a vendor, however it looks like cakephp 1.3 removed support for vendors. So how would I go about calling a few function from this class?

(I'd like to try to keep the class itself the same and not turn it into a plugin, as that seems unnecessary)

Thanks!

code below:

**<?php
class UsersController extends AppController {

var $name = 'Users';

    //commented out because it breaks the script
    //App::import('Lib', 'ldap');


function index() {
    $this->User->recursive = 0;
    $this->set('users', $this->paginate());
}

    function login() {

        if (!empty($this->data)) {
                if ($ldap->auth($this->data['User']['user'],$this->data['User']['password'])) {
                        $this->Session->setFlash(__('The user has been saved', true));
                        $this->Session->write('user', $this->data['User']['user']);
                        $this->redirect(array('action' => 'index'));
                } else {
                        $this->Session->setFlash(__('Login Failed', true));
                }
        }
    }

    function logout() {
        $this->Session->delete('user');
        $this->redirect($this->referer());

    }

function view($id = null) {
    if (!$id) {
        $this->Session->setFlash(__('Invalid user', true));
        $this->redirect(array('action' => 'index'));
    }
    $this->set('user', $this->User->read(null, $id));
}

function add() {
    if (!empty($this->data)) {
        $this->User->create();
        if ($this->User->save($this->data)) {
            $this->Session->setFlash(__('The user has been saved', true));
            $this->redirect(array('action' => 'index'));
        } else {
            $this->Session->setFlash(__('The user could not be saved. Please, try again.', true));
        }
    }
    $projects = $this->User->Project->find('list');
    $this->set(compact('projects'));
}

function edit($id = null) {
    if (!$id && empty($this->data)) {
        $this->Session->setFlash(__('Invalid user', true));
        $this->redirect(array('action' => 'index'));
    }
    if (!empty($this->data)) {
        if ($this->User->save($this->data)) {
            $this->Session->setFlash(__('The user has been saved', true));
            $this->redirect(array('action' => 'index'));
        } else {
            $this->Session->setFlash(__('The user could not be saved. Please, try again.', true));
        }
    }
    if (empty($this->data)) {
        $this->data = $this->User->read(null, $id);
    }
    $projects = $this->User->Project->find('list');
    $this->set(compact('projects'));
}

function delete($id = null) {
    if (!$id) {
        $this->Session->setFlash(__('Invalid id for user', true));
        $this->redirect(array('action'=>'index'));
    }
    if ($this->User->delete($id)) {
        $this->Session->setFlash(__('User deleted', true));
        $this->redirect(array('action'=>'index'));
    }
    $this->Session->setFlash(__('User was not deleted', true));
    $this->redirect(array('action' => 'index'));
}
}
?>**
like image 666
lanrat Avatar asked Jul 22 '10 23:07

lanrat


2 Answers

Cake 1.3 still perfectly supports the idea of vendor files. In addition, they now also support "libraries", additional classes that are not 3rd party classes. Just pop your files into the /vendors or /libs directory and load the file using App::import.

like image 105
deceze Avatar answered Nov 15 '22 19:11

deceze


I got it working, I had to call "App::import('Lib', 'ldap');" outside of the controller class and then call it as a new class inside the function I wanted.

Below is the end result

<?php
App::import('Lib', 'ldap');
class UsersController extends AppController {

    var $name = 'Users';

    function index() {
        $this->User->recursive = 0;
        $this->set('users', $this->paginate());
    }

        function login() {

            if (!empty($this->data)) {
                $ldap = new ldap;
                    if ($ldap->auth($this->data['User']['user'],$this->data['User']['password'])) {

                            if (!$this->User->findByUser($this->data['User']['user']) )
                            {
                                $ldap_info = $ldap->getInfo($this->data['User']['user']);
                                $this->data['User']['name'] = $ldap_info['name'];
                                $this->add();
                            }

                            $this->Session->write('user', $this->data['User']['user']);
                            $this->redirect(array('action' => 'index'));
                    } else {
                            $this->Session->setFlash(__('Login Failed', true));
                    }
            }
        }

        function logout() {
            $this->Session->delete('user');
            $this->redirect($this->referer());

        }

    function view($id = null) {
        if (!$id) {
            $this->Session->setFlash(__('Invalid user', true));
            $this->redirect(array('action' => 'index'));
        }
        $this->set('user', $this->User->read(null, $id));
    }

    private function add() {
        if (!empty($this->data)) {
            $this->User->create();
            if ($this->User->save($this->data)) {
                $this->Session->setFlash(__('The user has been saved', true));
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash(__('The user could not be saved. Please, try again.', true));
            }
        }
        $projects = $this->User->Project->find('list');
        $this->set(compact('projects'));
    }

    function edit($id = null) {
        if (!$id && empty($this->data)) {
            $this->Session->setFlash(__('Invalid user', true));
            $this->redirect(array('action' => 'index'));
        }
        if (!empty($this->data)) {
            if ($this->User->save($this->data)) {
                $this->Session->setFlash(__('The user has been saved', true));
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash(__('The user could not be saved. Please, try again.', true));
            }
        }
        if (empty($this->data)) {
            $this->data = $this->User->read(null, $id);
        }
        $projects = $this->User->Project->find('list');
        $this->set(compact('projects'));
    }

    function delete($id = null) {
        if (!$id) {
            $this->Session->setFlash(__('Invalid id for user', true));
            $this->redirect(array('action'=>'index'));
        }
        if ($this->User->delete($id)) {
            $this->Session->setFlash(__('User deleted', true));
            $this->redirect(array('action'=>'index'));
        }
        $this->Session->setFlash(__('User was not deleted', true));
        $this->redirect(array('action' => 'index'));
    }
}
?>
like image 43
lanrat Avatar answered Nov 15 '22 19:11

lanrat