Example #1
0
function db_update_treesize($tname, $tfolder)
{
    if (is_numeric($tfolder) and !strpos($tname, "_nodb_") and $tname != "simple_sys_tree") {
        db_lock_tree(true);
        $row = db_select_first("simple_sys_tree", array("lft", "fcount", "fsizecount"), "id=@id@", "", array("id" => $tfolder));
        if (isset($row["lft"])) {
            $count = (int) db_select_value($tname, "count(*) as count", "folder=@id@", array("id" => $tfolder));
            $sum = (int) db_select_value($tname, "coalesce(sum(dsize),0) as count", "folder=@id@", array("id" => $tfolder));
            db_update("simple_sys_tree", array("fcount" => $count), array("id=@id@"), array("id" => $tfolder));
            db_update("simple_sys_tree", array("fsizecount" => $sum), array("id=@id@"), array("id" => $tfolder));
            $diff_count = $count - $row["fcount"];
            $diff_sum = $sum - $row["fsizecount"];
            if ($diff_count != 0 or $diff_sum != 0) {
                if ($diff_count >= 0) {
                    $diff_count = "+" . $diff_count;
                }
                if ($diff_sum >= 0) {
                    $diff_sum = "+" . $diff_sum;
                }
                db_update("simple_sys_tree", array("fchsizecount" => "fchsizecount" . $diff_sum, "fchcount" => "fchcount" . $diff_count), array("lft<@lft@", "rgt>@lft@"), array("lft" => $row["lft"]), array("quote" => false, "no_defaults" => true));
            }
        }
        db_lock_tree(false);
        db_check_quota($tfolder);
    }
}
Example #2
0
 public static function moveupdown($fmoveupdown, $path)
 {
     db_lock_tree(true);
     $row = db_select_first("simple_sys_tree", array("id", "lft", "rgt", "flevel", "parent"), "id=@id@", "", array("id" => $path));
     if (isset($row["lft"])) {
         if ($fmoveupdown == "up") {
             $lower = $row;
             $upper = db_select_first("simple_sys_tree", array("id", "lft", "rgt"), array("parent=@row_parent@", "lft<@row_lft@"), "lft desc", array("row_parent" => $row["parent"], "row_lft" => $row["lft"]));
         }
         if ($fmoveupdown == "down") {
             $upper = $row;
             $lower = db_select_first("simple_sys_tree", array("id", "lft", "rgt"), array("parent=@row_parent@", "lft>@row_rgt@"), "lft asc", array("row_parent" => $row["parent"], "row_rgt" => $row["rgt"]));
         }
         if (isset($lower["lft"]) and isset($upper["lft"])) {
             $distance = $lower["lft"] - $upper["lft"];
             $distance2 = $lower["rgt"] - $upper["rgt"];
             $lowers = db_select("simple_sys_tree", "id", "lft between @lft@ and @rgt@", "lft desc", "", array("lft" => $lower["lft"], "rgt" => $lower["rgt"]));
             $uppers = db_select("simple_sys_tree", "id", "lft between @lft@ and @rgt@", "lft desc", "", array("lft" => $upper["lft"], "rgt" => $upper["rgt"]));
             if (is_numeric($distance) and $distance != 0 and is_array($lowers) and count($lowers) > 0) {
                 foreach ($lowers as $lowers_item) {
                     db_update("simple_sys_tree", array("lft" => "lft-" . $distance, "rgt" => "rgt-" . $distance), array("id=@id@"), array("id" => $lowers_item["id"]), array("quote" => false, "no_defaults" => true));
                 }
             }
             if (is_numeric($distance2) and $distance2 != 0 and is_array($uppers) and count($uppers) > 0) {
                 foreach ($uppers as $uppers_item) {
                     db_update("simple_sys_tree", array("lft" => "lft+" . $distance2, "rgt" => "rgt+" . $distance2), array("id=@id@"), array("id" => $uppers_item["id"]), array("quote" => false, "no_defaults" => true));
                 }
             }
         }
     }
     db_lock_tree(false);
 }