<?
// Configure database
$server    = "localhost";
$db_user  = "********";
$db_pass  = "********";
$only_db  = "********";

// Include required classes
require_once("_inc/database.php");
require_once("_inc/class.tree.php");

// Create a new DB instance
$db = new DB;
// Create a new tree instance
$tree = new tree( array( "structure" => array("id" => "id", "parent_id" => "parent_id", "position" => "position") ) );

$languages = array();
$db->query("SELECT * FROM languages");
while($db->nextr()) { $languages[$db->f(0)] = array($db->f(1),$db->f(2)); }

// SERVER SIDE PART
if(isset($_REQUEST["server"])) {
  // Make sure nothing is cached
  header("Cache-Control: must-revalidate");
  header("Cache-Control: post-check=0, pre-check=0", false);
  header("Pragma: no-cache");
  header("Expires: ".gmdate("D, d M Y H:i:s", mktime(date("H")-2, date("i"), date("s"), date("m"), date("d"), date("Y")))." GMT");
  header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");

  
  switch($_REQUEST["type"]) {
     case "list":
      $id = (int)str_replace("node_","",$_REQUEST["id"]);
      $db->query("SELECT s.id, ( SELECT COUNT(*) FROM structure WHERE parent_id = s.id ) AS children, c.language, c.name FROM structure s LEFT JOIN content c ON c.id = s.id WHERE s.parent_id = ".$id." ORDER BY position");
      $data = array();
      $children = array();
      while($db->nextr()) {
        $children[$db->f("id")] = (int)$db->f("children");
        $data[$db->f("id")][$db->f("language")] = $db->f("name");
      }
      echo "[\n";
      $i = 0;
      foreach($data as $k => $v) {
        echo "{\n";
        echo "\tattributes: {\n";
        echo "\t\tid :  'node_".$k."'\n";
        echo "\t},\n";
        if($children[$k]) echo "\tstate: 'closed', \n";
        echo "\tdata: {\n";
        $kf = 0;
        foreach($v as $lang => $name) {
          if($kf > 0)  echo ",\n";
          else    echo "\n";
          $kf ++;
          echo "\t\t'".$languages[$lang][0]."' : { title : '".$name."' }"; 
        }
        echo "\n";
        echo "\t}\n";
        echo "}";
        if(++$i < count($data)) echo ",";
        echo "\n";
      }
      echo "\n]";
      break;
    case "delete":
      $id = (int)str_replace("node_","",$_REQUEST["id"]);
      $tree->remove($id);
      $db->query("DELETE FROM content WHERE id = ".$id);
      echo "OK";
      break;

    case "create":
    case "move":
      $id    = (int)str_replace("node_","",$_REQUEST["id"]);
      $ref_id  = (int)str_replace("node_","",$_REQUEST["ref_id"]);
      $type  = $_REQUEST["move_type"];
      $result = $tree->move($id,$ref_id,$type);
      if($id == 0) {
        foreach($languages as $k => $lang) {
          $db->query("INSERT INTO content (id,language,name,data) VALUES(".$result.",".$k.",'New folder','')");
        }
        echo "node_".$result;
      }
      break;
    case "rename":
      $sql = "UPDATE content SET name = '".addslashes($_REQUEST["data"])."' WHERE id = ".(int)str_replace("node_","",$_REQUEST["id"])." AND language = ".(int)$_REQUEST["lang"];
      $db->query($sql);
      echo $sql;
      break;


    case "loadfile":
      $db->query("SELECT * FROM content WHERE id = ".(int)str_replace("node_","",$_REQUEST["id"])." AND language = ".(int)$_REQUEST["lang"]);
      $db->nextr();
      echo $db->f("data");
      break;
    case "savefile":
      $sql = "UPDATE content SET data = '".addslashes($_REQUEST["data"])."' WHERE id = ".(int)str_replace("node_","",$_REQUEST["id"])." AND language = ".(int)$_REQUEST["lang"];
      $db->query($sql);
      echo $sql;
      break;
  }
  exit();
}
?>