Пример #1
0
    /**

     * Create User

     *

     * @param array $arrayData Data

     *

     * return array Return data of the new User created

     */

    public function create(array $arrayData)

    {

        try {

            \G::LoadSystem("rbac");



            //Verify data

            $process = new \ProcessMaker\BusinessModel\Process();

            $validator = new \ProcessMaker\BusinessModel\Validator();



            $validator->throwExceptionIfDataIsNotArray($arrayData, "\$arrayData");

            $validator->throwExceptionIfDataIsEmpty($arrayData, "\$arrayData");



            //Set data

            $arrayData = array_change_key_case($arrayData, CASE_UPPER);



            unset($arrayData["USR_UID"]);



            $this->throwExceptionIfDataIsInvalid("", $arrayData);



            //Create

            $cnn = \Propel::getConnection("workflow");



            try {

                $rbac = new \RBAC();

                $user = new \Users();



                $rbac->initRBAC();



                $arrayData["USR_PASSWORD"]         = \Bootstrap::hashPassword($arrayData["USR_NEW_PASS"]);



                $arrayData["USR_BIRTHDAY"]         = (isset($arrayData["USR_BIRTHDAY"]))?         $arrayData["USR_BIRTHDAY"] : date("Y-m-d");

                $arrayData["USR_LOGGED_NEXT_TIME"] = (isset($arrayData["USR_LOGGED_NEXT_TIME"]))? $arrayData["USR_LOGGED_NEXT_TIME"] : 0;

                $arrayData["USR_CREATE_DATE"]      = date("Y-m-d H:i:s");

                $arrayData["USR_UPDATE_DATE"]      = date("Y-m-d H:i:s");



                //Create in rbac

                //$userStatus = $arrayData["USR_STATUS"];

                //

                //if ($arrayData["USR_STATUS"] == "ACTIVE") {

                //    $arrayData["USR_STATUS"] = 1;

                //}

                //

                //if ($arrayData["USR_STATUS"] == "INACTIVE") {

                //    $arrayData["USR_STATUS"] = 0;

                //}

                //

                //$userUid = $this->createUser($arrayData);

                //

                //if ($arrayData["USR_ROLE"] != "") {

                //    $this->assignRoleToUser($userUid, $arrayData["USR_ROLE"]);

                //}

                //

                //$arrayData["USR_STATUS"] = $userStatus;



                $userUid = $rbac->createUser($arrayData, $arrayData["USR_ROLE"]);



                //Create in workflow

                $arrayData["USR_UID"] = $userUid;

                $arrayData["USR_PASSWORD"] = "******";



                $result = $user->create($arrayData);



                //User Properties

                $userProperty = new \UsersProperties();



                $aUserProperty = $userProperty->loadOrCreateIfNotExists($arrayData["USR_UID"], array("USR_PASSWORD_HISTORY" => serialize(array(\Bootstrap::hashPassword($arrayData["USR_PASSWORD"])))));

                $aUserProperty["USR_LOGGED_NEXT_TIME"] = $arrayData["USR_LOGGED_NEXT_TIME"];



                $userProperty->update($aUserProperty);



                //Save Calendar assigment

                if (isset($arrayData["USR_CALENDAR"])) {

                    //Save Calendar ID for this user

                    \G::LoadClass("calendar");



                    $calendar = new \Calendar();

                    $calendar->assignCalendarTo($arrayData["USR_UID"], $arrayData["USR_CALENDAR"], "USER");

                }



                //Return

                return $this->getUser($userUid);

            } catch (\Exception $e) {

                $cnn->rollback();



                throw $e;

            }

        } catch (\Exception $e) {

            throw $e;

        }

    }