views:

199

answers:

2

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'));
}
}
?>**
+3  A: 

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.

deceze
I put my ldap.php in the libs folder and put "App::import('Lib', 'ldap');" in my users_controller.php, but when I call any page I get "Parse error: syntax error, unexpected T_STRING, expecting T_FUNCTION in C:\xampp\htdocs\timetracker\controllers\users_controller.php on line 6"
mrlanrat
@mrlanrat Well, you have a **syntax error** somewhere, which doesn't have anything to do with Cake's libs or vendors.
deceze
post the code and we might be able to help!
Leo
I posted the code
mrlanrat
A: 

I got it working, I has 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'));
    }
}
?>
mrlanrat