page.class.inc.php 4.5 KB

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