PageRenderTime 59ms CodeModel.GetById 32ms RepoModel.GetById 0ms app.codeStats 0ms

/www/app/AdminModule/models/AdminPagesModel.php

https://github.com/bazo/Mokuji
PHP | 125 lines | 96 code | 13 blank | 16 comment | 12 complexity | 13093abd8d6e549c1ac8348b2a0c2778 MD5 | raw file
Possible License(s): BSD-3-Clause, MIT
  1. <?php
  2. /**
  3. * Photon CMS
  4. *
  5. * @copyright Copyright (c) 2009 Martin Bazik
  6. * @package AdminModels
  7. */
  8. /**
  9. * Admin Menu Model
  10. *
  11. * @author Martin Bazik
  12. * @package AdminModels
  13. */
  14. class Admin_PagesModel extends Admin_BaseModel
  15. {
  16. protected $table = 'site_pages';
  17. public function _getAll()
  18. {
  19. return db::select('*')->from('[:table:]')->fetchAll();
  20. }
  21. public function _getPairs($key = 'slug', $value = 'title')
  22. {
  23. return db::select(':table:.title `page_title`, :table:.slug `page_slug`, :categories:.title `category_title`, :categories:.slug `category_slug`')->from('[:table:]')->leftJoin(':categories:')->on(':table:.category = :categories:.id')->where(':table:.homepage = 0')->orderBy(':table:.category ASC')->fetchAssoc('category_slug|page_title');
  24. }
  25. public function _getById($id)
  26. {
  27. return db::select(':table:.*,UNIX_TIMESTAMP(:table:.added) `added`, :categories:.id `category_id`, :categories:.title `category_title`, :categories:.slug `category_slug`')->from('[:table:]')->leftJoin(':categories:')->on(':table:.category = :categories:.id')->where(':table:.id = %i', $id)->fetch();
  28. }
  29. public function _getByTitle($title)
  30. {
  31. return db::select('*')->from('[:table:]')->where('title = %s', $title)->fetch();
  32. }
  33. public function _getBySlug($slug)
  34. {
  35. return db::select('*')->from('[:table:]')->where('slug = %s', $slug)->and('content_type = %s', 'page')->fetch();
  36. }
  37. public function _getRecent($count)
  38. {
  39. return db::select(':table:.*,UNIX_TIMESTAMP(:table:.added) `added`, :categories:.title `category_title`, :categories:.slug `category_slug`')->from('[:table:]')->leftJoin(':categories:')->on(':table:.category = :categories:.id')->orderBy('added DESC')->limit('%i', $count)->fetchAll();
  40. }
  41. public function _save($values)
  42. {
  43. $values['slug'] = String::webalize($values['title']);
  44. if (isset($values['link']))
  45. {
  46. if($values['link'] > 0)
  47. {
  48. $link = array();
  49. $slug = $values['slug'];
  50. if($values['category'] > 0)
  51. {
  52. $cat_model = new Admin_CategoriesModel();
  53. $cat = $cat_model->getById((int)$values['category']);
  54. $slug = $cat->slug.'/'.$slug;
  55. }
  56. $link['title'] = $values['title'];
  57. $link['url'] = $slug;
  58. $link['parent'] = 0;
  59. $link['level'] = 1;
  60. $link['menu_id'] = (int)$values['link'];
  61. $link_model = new Admin_MenuItemsModel();
  62. $link_model->create($link);
  63. //refresh table alias
  64. $this->__after_startup();
  65. }
  66. unset($values['link']);
  67. }
  68. $values['content_type'] = 'page';
  69. if(!isset($values['publish_time'])) $values['publish_time'] = time();
  70. $values['publish_time'] = db::datetime($values['publish_time']);
  71. if(isset($values['homepage']))
  72. if($values['homepage'] == 1)
  73. {
  74. $update = array('homepage' => 0);
  75. db::update(':table:', $update)->execute();
  76. }
  77. db::insert(':table:', $values)->execute();
  78. return db::getInsertId();
  79. }
  80. public function _update($values)
  81. {
  82. if(isset($values['publish_time'])) $values['publish_time'] = db::datetime($values['publish_time']);
  83. if(isset($values['homepage']) && $values['homepage'] == 1)
  84. {
  85. $update = array('homepage' => 0);
  86. db::update(':table:', $update)->execute();
  87. }
  88. db::update(':table:', $values)->where('id = %i', $values['id'])->execute();
  89. }
  90. public function _updateByTitle($values)
  91. {
  92. if(isset($values['publish_time'])) $values['publish_time'] = db::datetime($values['publish_time']);
  93. db::update(':table:', $values)->where('title = %s', $values['title'])->execute();
  94. }
  95. public function _delete($title)
  96. {
  97. db::delete(':table:')->where('title = %s', $title)->execute();
  98. }
  99. public function _deleteById($id)
  100. {
  101. return db::delete(':table:')->where('id = %i', $id)->execute();
  102. }
  103. /**
  104. * @cache update
  105. */
  106. public function _MakeHomepage($title)
  107. {
  108. db::update(':table:',array('homepage' => 0))->where('homepage = %i', 1)->execute();
  109. db::update(':table:',array('homepage' => 1))->where('title = %s', $title)->execute();
  110. }
  111. }
  112. ?>