menu.class.inc.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. /**
  3. * Gestion menu
  4. * @author mathieu
  5. * @package db_object
  6. *
  7. */
  8. class menu_manager extends db_object_manager{
  9. public $DB_DEBUG = false;
  10. public $FILE_DEBUG = false;
  11. public $_fields = array(
  12. "parent_id" => array("label"=>"Parent", "type"=>"object", "object_type"=>"menu"),
  13. "page_id" => array("label"=>"Page", "type"=>"object", "object_type"=>"page"),
  14. "pos" => array("label"=>"Position", "type"=>"int"),
  15. "visible" => array("label"=>"Visible", "type"=>"bool"),
  16. "params" => array("label"=>"Paramètres supplémentaires", "type"=>""),
  17. );
  18. public $_field_disp_list = array("page_id", "parent_id", "pos", "visible");
  19. protected function db_retrieve_more($list_id=null)
  20. {
  21. if (!is_array($list_id))
  22. return array();
  23. $list = array();
  24. $sql = "SELECT * FROM `menu_params` WHERE `menu_id` IN (".implode(',', $list_id).") AND `value` IS NOT NULL";
  25. $q = mysql_query($sql);
  26. if ($this->DB_DEBUG == true || ($error=mysql_error())){
  27. echo "$sql : ".$error;
  28. }
  29. while($row = mysql_fetch_assoc($q))
  30. $list[$row['menu_id']]['params'][$row['name']] = $row['value'];
  31. return $list;
  32. }
  33. }
  34. class menu extends db_object{
  35. public $params = array();
  36. public function __tostring(){
  37. $page = $this->page();
  38. if (count($this->params))
  39. return $page->title(current($this->params));
  40. else
  41. return $page->title();
  42. }
  43. public function page(){
  44. return $this->object('page_id');
  45. }
  46. function controller(){
  47. return $this->page()->controller();
  48. }
  49. public function parent(){
  50. return $this->object('parent_id');
  51. }
  52. protected function db_update_more($info)
  53. {
  54. if (!is_array($info))
  55. return false;
  56. if (!isset($info['params']) || !count($info['params']))
  57. return false;
  58. foreach ($info['params'] as $name=>$value){
  59. $sql = "REPLACE INTO `menu_params`
  60. (`menu_id`, `name`, `value`)
  61. VALUES ('$this->id', '$name', '".mysql_real_escape_string($value)."')";
  62. $q = mysql_query($sql);
  63. return mysql_affected_rows()>0;
  64. }
  65. return false;
  66. }
  67. }