page.class.inc.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. <?php
  2. /**
  3. * Gestion pages
  4. * @author mathieu
  5. * @package db_object
  6. *
  7. */
  8. class page_manager extends db_object_manager{
  9. public $DB_DEBUG = false;
  10. public $FILE_DEBUG = false;
  11. public $_label = "Page";
  12. public $_fields = array(
  13. "controller_id" => array("label"=>"Controller", "type"=>"object", "object_type"=>"controller"),
  14. "ref" => array("label"=>"Référence courte", "type"=>"string", "readonly"=>true),
  15. "url" => array("label"=>"URL", "type"=>"string"),
  16. "titre" => array("label"=>"Titre", "type"=>"string"),
  17. "header_title" => array("label"=>"Titre HTML", "type"=>"string"),
  18. "header_description" => array("label"=>"Description HTML", "type"=>"text"),
  19. "params" => array("label"=>"Paramètres supplémentaires", "type"=>""),
  20. );
  21. public $_field_disp_list = array('controller_id', "ref", "titre");
  22. protected function db_retrieve_more($list_id=null)
  23. {
  24. if (!is_array($list_id))
  25. return array();
  26. $list = array();
  27. $sql = "SELECT p.id, pp.name, pp.value
  28. FROM `controller_params` cp
  29. JOIN `page` p ON p.controller_id=cp.controller_id
  30. LEFT JOIN `page_params` pp ON pp.page_id=p.id AND pp.name=cp.name
  31. WHERE p.`id` IN (".implode(',', $list_id).")";
  32. $q = mysql_query($sql);
  33. if ($q) while($row = mysql_fetch_assoc($q)){
  34. $list[$row['id']]['params'][$row['name']] = $row['value'];
  35. $list[$row['id']][$row['name']] = $row['value'];
  36. }
  37. //var_dump($list);
  38. return $list;
  39. }
  40. }
  41. class page extends db_object{
  42. public $param_id;
  43. public $params = array();
  44. function __construct($id=null, $info=null){
  45. if (!isset($info['params']) || !is_array($info['params']))
  46. $info['params'] = array();
  47. parent::__construct($id, $info);
  48. }
  49. protected function db_update_more($info)
  50. {
  51. //var_dump($info);
  52. //var_dump($this->params);
  53. $fields = $this->controller()->fields;
  54. if (! empty($_FILES['params'])) foreach($_FILES['params']['tmp_name'] as $name=>$value) {
  55. //echo $name;
  56. if ($value && isset($fields[$name]) && $fields[$name]['type']=='img')
  57. $info['params'][$name] = $value;
  58. }
  59. //var_dump($info);
  60. if (!is_array($info))
  61. return false;
  62. if (!isset($info['params']) || !count($info['params']))
  63. return false;
  64. $fields = $this->controller()->fields;
  65. $r = 0;
  66. foreach ($info['params'] as $name=>$value){
  67. if (! isset($fields[$name]))
  68. continue;
  69. $field = $fields[$name];
  70. $options = json_decode($field['options'], true);
  71. if ($field['type']=='img') {
  72. //var_dump($options);
  73. $value = $options['filename'];
  74. //var_dump($_FILES);
  75. //echo 'From : '.$_FILES['params']['tmp_name'][$name]. ' to '.$value;
  76. move_uploaded_file($_FILES['params']['tmp_name'][$name], '../'.$value);
  77. //echo $value;
  78. //continue;
  79. }
  80. $sql = "REPLACE INTO `page_params`
  81. (`page_id`, `name`, `value`)
  82. VALUES ('$this->id', '$name', '".mysql_real_escape_string($value)."')";
  83. $q = mysql_query($sql);
  84. //echo "<p>$sql</p>";
  85. if ($error=mysql_error($q))
  86. echo "<p>$error : $sql</p>";
  87. $r += (mysql_affected_rows()>0 ?1 :0);
  88. }
  89. return $r>0 ?true :false;
  90. }
  91. function __tostring(){
  92. return $this->title();
  93. }
  94. function controller(){
  95. return $this->object('controller_id');
  96. }
  97. function params_set($params){
  98. $controller = $this->controller();
  99. $controller_fields = $controller->fields;
  100. if (is_array($params)){
  101. foreach($params as $name=>$value) if (is_string($name) && isset($controller_fields[$name])){
  102. $this->params[$name] = $value;
  103. }
  104. }
  105. }
  106. function param_set($param_id){
  107. $this->param_id = $param_id;
  108. $controller = $this->controller();
  109. $controller_fields = $controller->fields;
  110. foreach($controller_fields as $field) if ($field['url_get']){
  111. //var_dump($field);
  112. $this->params[$field['name']] = $param_id;
  113. break;
  114. }
  115. }
  116. /**
  117. * Retrieve GET params
  118. */
  119. function params_get(){
  120. $this->params_set($_GET);
  121. }
  122. /**
  123. * Retrieve POST params
  124. */
  125. function params_post(){
  126. $this->params_set($_POST);
  127. }
  128. function title($param_id=null){
  129. $param_id = is_array($param_id) ?current($param_id) :($param_id ?$param_id :$this->param_id);
  130. if (!$param_id)
  131. return $this->titre;
  132. else
  133. return $this->controller()->param_title($param_id);
  134. }
  135. function url($param_id=null){
  136. $param_id = is_array($param_id) ?current($param_id) :($param_id ?$param_id :$this->param_id);
  137. if (!$this->url)
  138. return '/';
  139. elseif (!$param_id)
  140. return '/'.$this->url.'-'.$this->id.'.html';
  141. else
  142. return '/'.$this->url.'-'.$this->id.'/'.$this->controller()->param_url($param_id).'.html';
  143. }
  144. function link($param_id=null){
  145. $param_id = is_array($param_id) ?current($param_id) :($param_id ?$param_id :$this->param_id);
  146. //var_dump($param_id);
  147. return '<a href="'.$this->url($param_id).'">'.$this->title($param_id).'</a>';
  148. }
  149. function display(){
  150. $controller = $this->controller();
  151. $controller->page = $this;
  152. //var_dump($controller);
  153. $controller->display();
  154. }
  155. }