Example of usage use Bluz\Proxy\Messages; Messages::addSuccess('All Ok!');
See also: Instance::addNotice()
See also: Instance::addSuccess()
See also: Instance::addError()
See also: Instance::count()
See also: Instance::pop()
See also: Instance::popAll()
See also: Instance::reset()
Author: Anton Shevchuk
Inheritance: use trait ProxyTrait
Beispiel #1
0
 /**
  * Reset layout and Request
  */
 protected static function resetApp()
 {
     if (self::$app) {
         self::$app->useLayout(true);
     }
     Proxy\Auth::clearIdentity();
     Proxy\Messages::popAll();
     Proxy\Request::setInstance(new Http\Request());
     Proxy\Response::setInstance(new Http\Response());
     Proxy\Response::setPresentation(null);
 }
Beispiel #2
0
 /**
  * Denied access
  * @throws ForbiddenException
  * @return void
  */
 public function denied()
 {
     // add messages make sense only if presentation is not json, xml, etc
     if (!$this->getResponse()->getPresentation()) {
         Messages::addError('You don\'t have permissions, please sign in');
     }
     // redirect to login page
     if (!$this->user()) {
         // save URL to session and redirect make sense if presentation is null
         if (!$this->getResponse()->getPresentation()) {
             Session::set('rollback', Request::getRequestUri());
             $this->redirectTo('users', 'signin');
         }
     }
     throw new ForbiddenException();
 }
Beispiel #3
0
 /**
  * @param array $data
  * @throws Exception
  * @throws ValidatorException
  * @return integer
  */
 public function createOne($data)
 {
     // password
     $password = $data['password'] ?? null;
     $password2 = $data['password2'] ?? null;
     if (empty($password)) {
         throw ValidatorException::exception('password', __('Password can\'t be empty'));
     }
     if ($password !== $password2) {
         throw ValidatorException::exception('password2', __('Password is not equal'));
     }
     if ($data['id'] == '') {
         unset($data['id']);
     }
     /** @var $row Row */
     $row = $this->getTable()->create();
     $row->setFromArray($data);
     $row->status = Table::STATUS_PENDING;
     $row->save();
     $userId = $row->id;
     // create auth
     Auth\Table::getInstance()->generateEquals($row, $password);
     // create activation token
     // valid for 5 days
     $actionRow = UsersActions\Table::getInstance()->generate($userId, UsersActions\Table::ACTION_ACTIVATION, 5);
     // send activation email
     // generate activation URL
     $activationUrl = Router::getFullUrl('users', 'activation', ['code' => $actionRow->code, 'id' => $userId]);
     $subject = "Activation";
     $body = Application::getInstance()->dispatch('users', 'mail/template', ['template' => 'registration', 'vars' => ['user' => $row, 'activationUrl' => $activationUrl, 'password' => $password]])->render();
     try {
         $mail = Mailer::create();
         $mail->Subject = $subject;
         $mail->msgHTML(nl2br($body));
         $mail->addAddress($data['email']);
         Mailer::send($mail);
     } catch (\Exception $e) {
         Logger::log('error', $e->getMessage(), ['module' => 'users', 'controller' => 'change-email', 'userId' => $userId]);
         throw new Exception('Unable to send email. Please contact administrator.');
     }
     // show notification and redirect
     Messages::addSuccess("Your account has been created and an activation link has" . "been sent to the e-mail address you entered.<br/>" . "Note that you must activate the account by clicking on the activation link" . "when you get the e-mail before you can login.");
     // wtf?
     // redirectTo('index', 'index');
     return $userId;
 }
Beispiel #4
0
 /**
  * Response as Json
  */
 public function process()
 {
     // override response code so javascript can process it
     $this->response->setHeader('Content-Type', 'application/json');
     // setup messages
     if (Messages::count()) {
         $this->response->setHeader('Bluz-Notify', json_encode(Messages::popAll()));
     }
     // prepare body
     if ($body = $this->response->getBody()) {
         // convert to JSON
         $body = json_encode($body);
         // setup content length
         $this->response->setHeader('Content-Length', strlen($body));
         // prepare to JSON output
         $this->response->setBody($body);
     }
 }
Beispiel #5
0
 public function testUserNotLinkedTo()
 {
     $userProfile = new \Hybrid_User_Profile();
     $userProfile->identifier = null;
     $this->hybridAuthMock->method('authenticate')->willReturn(new \Hybrid_Provider_Adapter());
     $this->authAdapterMock->method('getUserProfile')->willReturn($userProfile);
     $this->assertInstanceOf('\\Hybrid_Auth', $this->hybridAuthMock);
     $provider = new AuthProvider('Facebook');
     $provider->setResponse($this->getApp());
     $provider->setHybridauth($this->hybridAuthMock);
     $provider->setAuthAdapter($this->authAdapterMock);
     try {
         $provider->authProcess();
     } catch (RedirectException $red) {
     } catch (\Exception $e) {
     }
     $message = Messages::pop();
     $this->assertEquals("First you need to be linked to Facebook", $message->text);
 }
Beispiel #6
0
    }
    $datetime1 = new \DateTime();
    // now
    $datetime2 = new \DateTime($actionRow->expired);
    $interval = $datetime1->diff($datetime2);
    if ($actionRow->action !== UsersActions\Table::ACTION_ACTIVATION) {
        Messages::addError('Invalid activation code');
    } elseif ($interval->invert) {
        Messages::addError('The activation code has expired');
        $actionRow->delete();
    } else {
        // change user status
        $userRow = Users\Table::findRow($id);
        $userRow->status = Users\Table::STATUS_ACTIVE;
        $userRow->save();
        // create user role
        // get member role
        $roleRow = Roles\Table::findRowWhere(['name' => Table::BASIC_MEMBER]);
        // create relation user to role
        $usersRoleRow = new UsersRoles\Row();
        $usersRoleRow->roleId = $roleRow->id;
        $usersRoleRow->userId = $userRow->id;
        $usersRoleRow->save();
        // remove old code
        $actionRow->delete();
        Messages::addSuccess('Your Account has been successfully activated. <br/>' . 'You can now log in using the username and password you chose during the registration.');
        $this->redirectTo('users', 'signin');
    }
    $this->redirectTo('index', 'index');
    return false;
};
Beispiel #7
0
 /**
  * @param $auth
  * @return mixed
  */
 public function alreadyRegisteredLogic($auth)
 {
     $user = Users\Table::findRow($auth->userId);
     if ($user->status != Users\Table::STATUS_ACTIVE) {
         Messages::addError('User is not active');
     }
     $user->login();
     $this->response->redirectTo('index', 'index');
 }
Beispiel #8
0
 /**
  * Test Messages container
  */
 public function testMessagesPopAllForEmpty()
 {
     $messages = Proxy\Messages::popAll();
     $this->assertArrayHasKey('error', $messages);
     $this->assertArrayHasKey('notice', $messages);
     $this->assertArrayHasKey('success', $messages);
 }
Beispiel #9
0
            break;
        case 501:
            $title = __("Not Implemented");
            $description = __("The server does not understand or does not support the HTTP method");
            break;
        case 503:
            $title = __("Service Unavailable");
            $description = __("The server is currently unable to handle the request due to a temporary overloading");
            Response::setHeader('Retry-After', '600');
            break;
        default:
            $title = __("Internal Server Error");
            $description = __("An unexpected error occurred with your request. Please try again later");
            break;
    }
    // check CLI or HTTP request
    if (Request::isHttp()) {
        // simple AJAX call, accept JSON
        if (Request::getAccept(['application/json'])) {
            $this->useJson();
            Messages::addError($description);
            return null;
        }
        // dialog AJAX call, accept HTML
        if (!Request::isXmlHttpRequest()) {
            $this->useLayout('small.phtml');
        }
    }
    Layout::title($title);
    return ['error' => $title, 'description' => $description];
};
Beispiel #10
0
use Bluz\Proxy\Messages;
return function ($tree, $treeParent) use($view) {
    /**
     * @var Bootstrap $this
     */
    try {
        $categories = json_decode($tree);
        if (!$categories) {
            throw new Exception('Categories tree is broken');
        }
        foreach ($categories as $node) {
            if (isset($node->item_id)) {
                $dbNode = Categories\Table::findRow($node->item_id);
                if (!$node->parent_id) {
                    $node->parent_id = $treeParent;
                }
                if ($dbNode->parentId != $node->parent_id && $node->parent_id) {
                    $dbNode->parentId = $node->parent_id;
                    $dbNode->save();
                }
                if ($dbNode->order != $node->order && $node->order) {
                    $dbNode->order = $node->order;
                    $dbNode->save();
                }
            }
        }
        Messages::addSuccess('Tree has been saved');
    } catch (\Exception $e) {
        Messages::addError($e->getMessage());
    }
};
Beispiel #11
0
 */
/**
 * @namespace
 */
namespace Application;

use Application\Categories;
use Bluz\Proxy\Layout;
use Bluz\Proxy\Messages;
return function ($id = null) use($view) {
    /**
     * @var Bootstrap $this
     * @var \Bluz\View\View $view
     */
    Layout::setTemplate('dashboard.phtml');
    Layout::headStyle($view->baseUrl('css/categories.css'));
    Layout::breadCrumbs([$view->ahref('Dashboard', ['dashboard', 'grid']), __('Categories')]);
    $categoriesTable = Categories\Table::getInstance();
    $rootTree = $categoriesTable->getAllRootCategory();
    if (count($rootTree) == 0) {
        Messages::addNotice('There are no categories');
        return $view;
    }
    $view->rootTree = $rootTree;
    if (!$id) {
        $id = $rootTree[0]->id;
    }
    $view->branch = $id;
    $view->tree = $categoriesTable->buildTree($id);
    return $view;
};
Beispiel #12
0
 /**
  * Reset layout and Request
  */
 protected static function resetApp()
 {
     if (self::$app) {
         self::$app->useLayout(true);
         self::$app->resetRouter();
     }
     Proxy\Auth::clearIdentity();
     Proxy\Messages::popAll();
     Proxy\Request::setInstance(RequestFactory::fromGlobals());
     Proxy\Response::setInstance(new Bluz\Response\Response());
 }
Beispiel #13
0
 /**
  * Check Messages
  *
  * @param string $type
  * @param string $text
  * @return void
  */
 private function checkMessage($type, $text = null)
 {
     $message = Messages::pop($type);
     if (!$message) {
         $this->fail("System should be generated `{$type}` message");
     }
     if ($text) {
         $this->assertEquals($text, $message->text);
     }
 }
Beispiel #14
0
 * @accept HTML
 * @accept JSON
 * @privilege Management
 *
 * @param int $id
 * @return bool
 * @throws Exception
 */
return function ($id) {
    /**
     * @var Controller $this
     */
    $user = Users\Table::findRow($id);
    if (!$user) {
        throw new Exception('User ID is incorrect');
    }
    if (Request::isPost()) {
        $roles = Request::getParam('roles');
        // update roles
        Db::delete('acl_users_roles')->where('userId = ?', $user->id)->execute();
        foreach ($roles as $role) {
            Db::insert('acl_users_roles')->set('userId', $user->id)->set('roleId', $role)->execute();
        }
        // clean cache
        Cache::delete('user:'******'User roles was updated');
        return false;
    }
    $this->assign('user', $user);
    $this->assign('roles', Roles\Table::getInstance()->getRoles());
};
Beispiel #15
0
        case 503:
            $title = __("Service Unavailable");
            $description = __("The server is currently unable to handle the request due to a temporary overloading");
            Response::setHeader('Retry-After', '600');
            break;
        default:
            $title = __("Internal Server Error");
            $description = __("An unexpected error occurred with your request. Please try again later");
            break;
    }
    // check CLI or HTTP request
    if (Request::isHttp()) {
        // simple AJAX call, accept JSON
        if (Request::getAccept() == Request::ACCEPT_JSON) {
            $this->useJson();
            Messages::addError($message);
            return $view;
        }
        // dialog AJAX call, accept HTML
        if (!Request::isXmlHttpRequest()) {
            $this->useLayout('small.phtml');
        }
    }
    Layout::title($title);
    $view->error = $title;
    $view->description = $description;
    if (getenv('BLUZ_DEBUG') && $message != '') {
        $view->message = $message;
    }
    return $view;
};
Beispiel #16
0
 /**
  * Initialize process
  *
  * @param  string $environment
  * @throws ApplicationException
  * @return void
  */
 public function init($environment = 'production')
 {
     $this->environment = $environment;
     try {
         // first log message
         Logger::info('app:init');
         // initial default helper path
         $this->addHelperPath(dirname(__FILE__) . '/Helper/');
         // init Config
         $this->initConfig();
         // init Session, start inside class (if needed)
         Session::getInstance();
         // init Messages
         Messages::getInstance();
         // init Translator
         Translator::getInstance();
         // init Request
         $this->initRequest();
         // init Response
         $this->initResponse();
         // init Router
         $this->initRouter();
     } catch (\Exception $e) {
         throw new ApplicationException("Application can't be loaded: " . $e->getMessage());
     }
 }
Beispiel #17
0
/**
 * CRUD controller for DELETE method
 *
 * @category Application
 *
 * @author   Anton Shevchuk
 * @created  19.02.15 16:27
 */
namespace Application;

use Bluz\Application\Exception\BadRequestException;
use Bluz\Proxy\Messages;
/**
 * @accept HTML
 * @accept JSON
 * @method DELETE
 *
 * @param  \Bluz\Crud\Table $crud
 * @param  mixed $primary
 * @param  array $data
 * @return void
 * @throws BadRequestException
 * @throws \Bluz\Application\Exception\NotFoundException
 * @throws \Bluz\Application\Exception\NotImplementedException
 */
return function ($crud, $primary, $data) {
    // @throws NotFoundException
    $crud->deleteOne($primary);
    Messages::addSuccess("Record was deleted");
};
Beispiel #18
0
<?php

/**
 * Test AJAX
 *
 * @author   Anton Shevchuk
 * @created  26.09.11 17:41
 * @return closure
 */
namespace Application;

use Bluz\Proxy\Messages;
use Bluz\Proxy\Request;
return function ($messages = false) use($view) {
    /**
     * @var Bootstrap $this
     * @var \Bluz\View\View $view
     */
    if ($messages) {
        Messages::addNotice('Notice for AJAX call');
        Messages::addSuccess('Success for AJAX call');
        Messages::addError('Error for AJAX call');
        $view->baz = 'qux';
    }
    Messages::addNotice('Method ' . Request::getMethod());
    $view->foo = 'bar';
};
Beispiel #19
0
 /**
  * send
  *
  * @throws NotAcceptableException
  */
 public function send()
 {
     $body = $this->getBody();
     $this->sendCookies();
     switch (true) {
         case 'CLI' == $this->type:
             // CLI response
             $response = new CliResponse($body->render('CLI'), $this->getStatusCode());
             break;
         case is_null($body):
         case 204 == $this->getStatusCode():
             $response = new EmptyResponse($this->getStatusCode(), $this->getHeaders());
             break;
         case 301 == $this->getStatusCode():
         case 302 == $this->getStatusCode():
             $response = new RedirectResponse($this->getHeader('Location'), $this->getStatusCode(), $this->getHeaders());
             break;
         case 'JSON' == $this->type:
             // JSON response
             // setup messages
             if (Messages::count()) {
                 $this->setHeader('Bluz-Notify', json_encode(Messages::popAll()));
             }
             // encode body data to JSON
             $response = new JsonResponse($body, $this->getStatusCode(), $this->getHeaders());
             break;
         case 'HTML' == $this->type:
         default:
             // HTML response
             $response = new HtmlResponse((string) $body, $this->getStatusCode(), $this->getHeaders());
             break;
     }
     $emitter = new SapiEmitter();
     $emitter->emit($response);
 }
Beispiel #20
0
use Bluz\Proxy\Cache;
use Bluz\Proxy\Db;
use Bluz\Proxy\Messages;
return function ($acl) use($view) {
    /**
     * @var Bootstrap $this
     * @var \Bluz\View\View $view
     */
    $callback = function () use($acl) {
        /**
         * @var Bootstrap $this
         */
        Db::query('DELETE FROM acl_privileges');
        foreach ($acl as $roleId => $modules) {
            foreach ($modules as $module => $privileges) {
                foreach ($privileges as $privilege => $flag) {
                    Db::query('INSERT INTO acl_privileges SET roleId = ?, module = ?, privilege = ?', array($roleId, $module, $privilege));
                }
            }
        }
    };
    if (empty($acl)) {
        Messages::addError('Privileges set is empty. You can\'t remove all of them');
    } elseif (Db::transaction($callback)) {
        Cache::deleteByTag('privileges');
        Messages::addSuccess('All data was saved');
    } else {
        Messages::addError('Internal Server Error');
    }
    $this->redirectTo('acl', 'index');
};
Beispiel #21
0
 /**
  * {@inheritdoc}
  *
  * @param mixed $primary
  * @return int
  * @throws \Bluz\Application\Exception\ApplicationException
  * @throws \Bluz\Application\Exception\NotImplementedException
  */
 public function deleteOne($primary)
 {
     $result = parent::deleteOne($primary);
     Messages::addSuccess("Record was deleted");
     return $result;
 }
Beispiel #22
0
<?php

/**
 * Test CLI
 *
 * @author   Anton Shevchuk
 * @created  18.11.12 19:41
 */
namespace Application;

use Bluz\Proxy\Messages;
return function ($flag = false) use($view) {
    /**
     * @var Bootstrap $this
     * @var \Bluz\View\View $view
     */
    if ($flag) {
        Messages::addNotice('Notice Text');
        Messages::addSuccess('Success Text');
        Messages::addError('Error Text');
        Messages::addError('Another Error Text');
    }
    $view->string = 'bar';
    $view->array = ['some', 'array'];
    $view->object = new \stdClass();
    $view->object->property = 'example';
};
Beispiel #23
0
<?php

/**
 * Build list of routers
 *
 * @author   Anton Shevchuk
 * @created  12.06.12 12:27
 */
/**
 * @namespace
 */
namespace Application;

use Bluz\Common\Nil;
use Bluz\Proxy\Cache;
use Bluz\Proxy\Messages;
return function () {
    /**
     * @var Bootstrap $this
     */
    if (!Cache::getInstance() instanceof Nil) {
        Cache::flush();
        Messages::addSuccess("Cache is flushed");
    } else {
        Messages::addNotice("Cache is disabled");
    }
};
Beispiel #24
0
<?php

/**
 * Delete of CRUD
 *
 * @category Application
 *
 * @author   dark
 * @created  14.05.13 10:51
 */
namespace Application;

use Bluz\Proxy\Messages;
return function ($id) use($view) {
    /**
     * @var Bootstrap $this
     */
    if ($row = Test\Table::findRow($id)) {
        $row->delete();
        $this->redirectTo('test', 'index');
        Messages::addSuccess("Row was removed");
    } else {
        throw new Exception('Record not found');
    }
};
 /**
  * Initialize process
  * @param string $environment Array format only!
  * @throws ApplicationException
  * @return void
  */
 public function init($environment = 'production')
 {
     $this->environment = $environment;
     try {
         // initial default helper path
         $this->addHelperPath(dirname(__FILE__) . '/Helper/');
         // first log message
         Logger::info('app:init');
         // setup configuration for current environment
         if ($debug = Config::getData('debug')) {
             $this->debugFlag = (bool) $debug;
         }
         // initial php settings
         if ($ini = Config::getData('php')) {
             foreach ($ini as $key => $value) {
                 $result = ini_set($key, $value);
                 Logger::info('app:init:php:' . $key . ':' . ($result ?: '---'));
             }
         }
         // init session, start inside class
         Session::getInstance();
         // init Messages
         Messages::getInstance();
         // init Translator
         Translator::getInstance();
         // init request
         $this->initRequest();
         // init response
         $this->initResponse();
         // init router
         Router::getInstance();
     } catch (\Exception $e) {
         throw new ApplicationException("Application can't be loaded: " . $e->getMessage());
     }
 }
Beispiel #26
0
 *
 * @author   Anton Shevchuk
 * @created  19.02.15 16:27
 */
namespace Application;

use Bluz\Proxy\Messages;
use Bluz\Proxy\Request;
use Bluz\Validator\Exception\ValidatorException;
/**
 * @accept HTML
 * @accept JSON
 * @method POST
 *
 * @param  \Bluz\Crud\Table $crud
 * @param  mixed $primary
 * @param  array $data
 * @return array
 */
return function ($crud, $primary, $data) {
    try {
        // Result is Primary Key(s)
        $result = $crud->createOne($data);
        Messages::addSuccess("Record was created");
        return ['row' => $crud->readOne($result), 'method' => Request::METHOD_PUT];
    } catch (ValidatorException $e) {
        $row = $crud->readOne(null);
        $row->setFromArray($data);
        return ['row' => $row, 'errors' => $e->getErrors(), 'method' => Request::getMethod()];
    }
};
Beispiel #27
0
 protected function tearDown()
 {
     Db::delete('users')->where('id IN (?)', [1, 2])->execute();
     Messages::popAll();
 }
Beispiel #28
0
namespace Application;

use Bluz\Application\Exception\BadRequestException;
use Bluz\Application\Exception\NotImplementedException;
use Bluz\Proxy\Messages;
use Bluz\Proxy\Request;
use Bluz\Validator\Exception\ValidatorException;
/**
 * @accept HTML
 * @accept JSON
 * @method PUT
 *
 * @param  \Bluz\Crud\Table $crud
 * @param  mixed $primary
 * @param  array $data
 * @return void|array
 * @throws BadRequestException
 * @throws NotImplementedException
 */
return function ($crud, $primary, $data) {
    try {
        // Result is numbers of affected rows
        $crud->updateOne($primary, $data);
        Messages::addSuccess("Record was updated");
        return ['row' => $crud->readOne($primary), 'method' => Request::getMethod()];
    } catch (ValidatorException $e) {
        $row = $crud->readOne($primary);
        $row->setFromArray($data);
        return ['row' => $row, 'errors' => $e->getErrors(), 'method' => Request::getMethod()];
    }
};
Beispiel #29
0
                $mail->msgHTML(nl2br($body));
                $mail->addAddress($email);
                Mailer::send($mail);
                Messages::addNotice('Check your email and follow instructions in letter.');
            } catch (\Exception $e) {
                Logger::log('error', $e->getMessage(), ['module' => 'users', 'controller' => 'change-email', 'userId' => $userId]);
                throw new Exception('Unable to send email. Please contact administrator.');
            }
            // try back to index
            Response::redirectTo('users', 'profile');
        } catch (Exception $e) {
            Messages::addError($e->getMessage());
            $this->assign('email', $email);
        } catch (AuthException $e) {
            Messages::addError($e->getMessage());
            $this->assign('email', $email);
        }
    } elseif ($token) {
        // process activation
        $actionRow = UsersActions\Table::findRowWhere(['code' => $token, 'userId' => $userId]);
        if (!$actionRow) {
            throw new Exception('Invalid token');
        }
        $params = $actionRow->getParams();
        $user->email = $params['email'];
        $user->save();
        $actionRow->delete();
        Messages::addSuccess('Email was updated');
        Response::redirectTo('users', 'profile');
    }
};
Beispiel #30
0
<?php

/**
 * Logout proccess
 *
 * @author   Anton Shevchuk
 * @created  20.07.11 18:39
 * @return closure
 */
namespace Application;

use Application\Auth as AppAuth;
use Bluz\Controller\Controller;
use Bluz\Proxy\Auth;
use Bluz\Proxy\Messages;
use Bluz\Proxy\Response;
/**
 * @return void
 */
return function () {
    /**
     * @var Controller $this
     */
    if ($this->user()) {
        AppAuth\Table::getInstance()->removeCookieToken($this->user()->id);
        Auth::clearIdentity();
    }
    Messages::addNotice('You are signout');
    Response::redirectTo('index', 'index');
};