Skip to content
Snippets Groups Projects
class.organization.php 2.65 KiB
Newer Older
<?php
/*********************************************************************
    class.organization.php

    Peter Rotich <peter@osticket.com>
    Jared Hancock <jared@osticket.com>
    Copyright (c)  2014 osTicket
    http://www.osticket.com

    Released under the GNU General Public License WITHOUT ANY WARRANTY.
    See LICENSE.TXT for details.

    vim: expandtab sw=4 ts=4 sts=4:
**********************************************************************/
require_once(INCLUDE_DIR . 'class.orm.php');

class OrganizationModel extends VerySimpleModel {
    static $meta = array(
        'table' => ORGANIZATION_TABLE,
        'pk' => array('id'),
        'joins' => array(
            'users' => array(
                'reverse' => 'UserAccountModel.org',
            ),
        )
    );

    var $users;

    static function objects() {
        $qs = parent::objects();

        return $qs;
    }

    function getId() {
        return $this->id;
    }
}

class Organization extends OrganizationModel {

    function __construct($ht) {
        parent::__construct($ht);
    }

    //XXX: Shouldn't getName use magic get method to figure this out?
    function getName() {
        return $this->name;
    }

    function getUpdateDate() {
        return $this->updated;
    }

    function getCreateDate() {
        return $this->created;
    }

    function to_json() {

        $info = array(
                'id'  => $this->getId(),
                'name' => (string) $this->getName()
                );

        return JsonDataEncoder::encode($info);
    }


    function __toString() {
        return (string) $this->getName();
    }

    function delete() {
        return parent::delete();
    }

    static function fromVars($vars) {

        if (!($org = Organization::lookup(array('name' => $vars['name'])))) {
            $org = Organization::create(array(
                'name' => $vars['name'],
                'created' => new SqlFunction('NOW'),
                'updated' => new SqlFunction('NOW'),
            ));
            $org->save(true);
        }

        return $org;
    }

    static function fromForm($form) {

        if(!$form) return null;

        //Validate the form
        $valid = true;
        if (!$form->isValid())
            $valid  = false;

        //Make sure the email is not in-use
        if (($field=$form->getField('name'))
                && $field->getClean()
                && Organization::lookup(array('name' => $field->getClean()))) {
            $field->addError('Organization with the same name already exists');
            $valid = false;
        }

        return $valid ? self::fromVars($form->getClean()) : null;
    }

}
//Organization::_inspect();

?>