Guest User

Untitled

a guest
May 17th, 2016
29
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.19 KB | None | 0 0
  1. <?php
  2.  
  3.  
  4. namespace App\Model\Blog;
  5.  
  6. use Dero\Core\Retval;
  7. use Dero\Data\BaseModel;
  8. use Dero\Data\DataException;
  9. use Dero\Data\ParameterCollection;
  10.  
  11. /**
  12.  * Blog Model
  13.  * @author Ryan Pallas
  14.  * @package Derokorian.com
  15.  * @namespace App\Model
  16.  * @depends App\Model\UserModel
  17.  * @since 2015-02-08
  18.  */
  19. class Model extends BaseModel
  20. {
  21.     const TABLE_NAME = 'post';
  22.  
  23.     const COLUMNS = [
  24.         'post_id' => [
  25.             COL_TYPE => COL_TYPE_INTEGER,
  26.             KEY_TYPE => KEY_TYPE_PRIMARY,
  27.             DB_REQUIRED => false,
  28.             DB_EXTRA => [
  29.                 DB_AUTO_INCREMENT
  30.             ]
  31.         ],
  32.         'user_id' => [
  33.             COL_TYPE => COL_TYPE_INTEGER,
  34.             KEY_TYPE => KEY_TYPE_FOREIGN,
  35.             FOREIGN_TABLE => 'user',
  36.             FOREIGN_COLUMN => 'user_id',
  37.             DB_REQUIRED => true
  38.         ],
  39.         'parent_id' => [
  40.             COL_TYPE => COL_TYPE_INTEGER,
  41.             KEY_TYPE => KEY_TYPE_FOREIGN,
  42.             FOREIGN_TABLE => 'post',
  43.             FOREIGN_COLUMN => 'post_id',
  44.             DB_REQUIRED => false,
  45.             DB_EXTRA => [
  46.                 DB_NULLABLE
  47.             ]
  48.         ],
  49.         'title' => [
  50.             COL_TYPE => COL_TYPE_STRING,
  51.             KEY_TYPE => KEY_TYPE_UNIQUE,
  52.             COL_LENGTH => 255,
  53.             DB_REQUIRED => true,
  54.             DB_VALIDATION => '/^[a-z0-9_ -.!?]{3,}$/i'
  55.         ],
  56.         'body' => [
  57.             COL_TYPE => COL_TYPE_TEXT,
  58.             DB_REQUIRED => true
  59.         ],
  60.         'active' => [
  61.             COL_TYPE => COL_TYPE_BOOLEAN,
  62.             DB_REQUIRED => false
  63.         ],
  64.         'featured' => [
  65.             COL_TYPE => COL_TYPE_BOOLEAN,
  66.             DB_REQUIRED => false
  67.         ],
  68.         'published' => [
  69.             COL_TYPE => COL_TYPE_DATETIME,
  70.             DB_REQUIRED => false,
  71.             DB_EXTRA => [
  72.                 DB_NULLABLE
  73.             ]
  74.         ],
  75.         'created' => [
  76.             COL_TYPE => COL_TYPE_DATETIME,
  77.             DB_REQUIRED => false
  78.         ],
  79.         'modified' => [
  80.             COL_TYPE => COL_TYPE_DATETIME,
  81.             DB_REQUIRED => false
  82.         ]
  83.     ];
  84.  
  85.     public function getPosts(Array $aOpts) : Retval
  86.     {
  87.         $oRet = new Retval();
  88.         $oParams = new ParameterCollection();
  89.         $strSql = 'SELECT p.post_id, title, p.body, p.active, p.featured, p.created, p.modified, u.username
  90.                     FROM `post` p
  91.                     JOIN `user` u USING (user_id) ';
  92.         $strSql .= $this->GenerateCriteria($oParams, $aOpts, 'p.');
  93.         try {
  94.             $oRet->Set(
  95.                 array_map(function ($oPost) {
  96.                     $oPost->post_id = (int)$oPost->post_id;
  97.                     $oPost->active = (bool)$oPost->active;
  98.                     $oPost->featured = (bool)$oPost->featured;
  99.                     return $oPost;
  100.                 }, $this->DB
  101.                     ->Prepare($strSql)
  102.                     ->BindParams($oParams)
  103.                     ->Execute()
  104.                     ->GetAll(Post::class)
  105.                 )
  106.             );
  107.         } catch (DataException $e) {
  108.             $oRet->AddError('Unable to query database', $e);
  109.         }
  110.         return $oRet;
  111.     }
  112. }
Add Comment
Please, Sign In to add comment