Advertisement
Guest User

manager.php

a guest
Nov 23rd, 2017
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 12.56 KB | None | 0 0
  1. <?php
  2.     require_once($_SERVER['DOCUMENT_ROOT'] . "/res/database.inc");
  3.  
  4.     $data["routes"] = array(
  5.         1 => array(
  6.             "name" => "notices",
  7.             "lg" => $data["lg"]["notice_board"],
  8.             "url" => url(1)
  9.         ),
  10.         2 => array(
  11.             "name" => "contact_manager",
  12.             "lg" => $data["lg"]["contact_manager"],
  13.             "url" => url(2)
  14.         ),
  15.         3 => array(
  16.             "name" => "contact_accounting",
  17.             "lg" => $data["lg"]["contact_accounting"],
  18.             "url" => url(3)
  19.         ),
  20.         4 => array(
  21.             "name" => "counters",
  22.             "lg" => $data["lg"]["counters"],
  23.             "url" => url(4)
  24.         ),
  25.         5 => array(
  26.             "name" => "documents",
  27.             "lg" => $data["lg"]["house_documents"],
  28.             "url" => url(5)
  29.         ),
  30.         6 => array(
  31.             "name" => "profile",
  32.             "lg" => $data["lg"]["profile_data"],
  33.             "url" => url(6),
  34.             "hidden" => true
  35.         ),
  36.         7 => array(
  37.             "name" => "estates",
  38.             "lg" => $data["lg"]["estates"],
  39.             "url" => url(7),
  40.             "hidden" => true
  41.         ),
  42.         0 => array(
  43.             "name" => "exit",
  44.             "lg" => $data["lg"]["exit"],
  45.             "url" => url(0)
  46.         )
  47.     );
  48.  
  49.     /* ==================================================== */
  50.  
  51.     $data["manager"] = array();
  52.  
  53.     $page = get_page();
  54.  
  55.     if ($page >= sizeof($data["routes"]) || $page <= 0) {
  56.         $page = 0;
  57.     }
  58.  
  59.     $data["manager"]["route"] = $data["routes"][$page];
  60.     $data["manager"]["route"]["file"] = "./manager/" . $data["routes"][$page]["name"] . ".html";
  61.  
  62.     /* ==================================================== */
  63.  
  64.     $user = $database->get($database_prefix . "users", array("mail", "name", "surname", "image", "user_type"), array(
  65.         "id" => get_user_id()
  66.     ));
  67.  
  68.     $data["manager"]["user"] = $user;
  69.  
  70.     /* ==================================================== */
  71.  
  72.     $estate = $database->get($database_prefix . "manager_estates", "*", array("id" => get_est_id()));
  73.  
  74.     $data["manager"]["estate"] = $estate;
  75.  
  76.     $apartments = $database->select($database_prefix . "manager_apartments", array(
  77.         "[>]{$database_prefix}manager_estates" => array("estate_id" => "id")
  78.     ), array(
  79.         "{$database_prefix}manager_estates.name(estate_name)",
  80.         "{$database_prefix}manager_estates.id(estate_id)",
  81.         "{$database_prefix}manager_apartments.id",
  82.         "{$database_prefix}manager_apartments.nth",
  83.         "{$database_prefix}manager_apartments.residents"
  84.     ), array(
  85.         "{$database_prefix}manager_apartments.user_id" => get_user_id()
  86.     ));
  87.  
  88.     $data["manager"]["apartments"] = $apartments;
  89.  
  90.     $apartment = $database->get($database_prefix . "manager_apartments", "*", array("id" => get_apt_id()));
  91.  
  92.     $data["manager"]["apartment"] = $apartment;
  93.  
  94.     $documents = $database->select($database_prefix . "manager_files", "*", array(
  95.         "estate_id" => get_est_id()
  96.     ));
  97.  
  98.     $data["manager"]["documents"] = $documents;
  99.  
  100.     $numbers = $database->select($database_prefix . "manager_numbers", "*", array(
  101.         "estate_id" => get_est_id()
  102.     ));
  103.  
  104.     $data["manager"]["numbers"] = $numbers;
  105.  
  106.     /* ==================================================== */
  107.  
  108.     $redirect = is_null(get_est_id());
  109.  
  110.     $url = rtrim("http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]", "/")
  111.         . "/{$apartments[0]['estate_id']}/{$apartments[0]['id']}/1";
  112.  
  113.     ob_clean();
  114.  
  115.     // if user has no apartments assigned he gets redirected to index
  116.     if (empty($apartments) || empty($_SESSION["user"]["id"])) {
  117.         //header("Location: /");
  118.  
  119.         exit();
  120.     }
  121.  
  122.     // if no estate was selected select the first one and redirect to it
  123.     /*if ($redirect) {
  124.         header("Location: " . $url);
  125.  
  126.         exit();
  127.     }*/
  128.  
  129.     /* ==================================================== */
  130.  
  131.     if ($data["manager"]["route"]["name"] != "profile") {
  132.         unset($_SESSION["profile_errors"]);
  133.     }
  134.  
  135.     switch ($data["manager"]["route"]["name"]) {
  136.         case "notices":
  137.            
  138.             $notices = $database->select($database_prefix . "manager_notices",
  139.                 array("[>]{$database_prefix}manager_notices_mapping" => array("id" => "notice_id")),
  140.                 "*",
  141.                 array(
  142.                     "AND" => array(
  143.                         "{$database_prefix}manager_notices_mapping.estate_id" => get_est_id(),
  144.                         "{$database_prefix}manager_notices_mapping.apartment_id" => array(-100, get_apt_id())
  145.                     ),
  146.                     "ORDER" => "{$database_prefix}manager_notices.created DESC"
  147.                 )
  148.             );
  149.  
  150.             foreach ($notices as $n => $notice) {
  151.                 $notices[$n]["attachments"] = $database->select($database_prefix . "manager_notices_attachments",
  152.                     array("[>]{$database_prefix}manager_files" => array("file_id" => "id")),
  153.                     "*",
  154.                     array(
  155.                         "{$database_prefix}manager_notices_attachments.notice_id" => $notice["id"]
  156.                     )
  157.                 );
  158.             }
  159.  
  160.             $data["manager"]["data"] = $notices;
  161.  
  162.             break;
  163.  
  164.         case "contact_manager":
  165.         case "contact_accounting":
  166.  
  167.             if (is_action("ask_question")) {
  168.                 if (!empty($_POST["subject"]) && !empty($_POST["content"])) {
  169.                     $database->insert($database_prefix . "manager_questions", array(
  170.                         "user_id" => get_user_id(),
  171.                         "estate_id" => get_est_id(),
  172.                         "apartment_id" => get_apt_id(),
  173.                         "subject" => $_POST["subject"],
  174.                         "content" => $_POST["content"],
  175.                         "type" => ($data["manager"]["route"]["name"] == "contact_accounting" ? "accounting" : "manager")
  176.                     ));
  177.  
  178.                     $_SESSION["ask_question_show_message"] = true;
  179.  
  180.                     refresh();
  181.                 }
  182.             }
  183.  
  184.             if (!empty($_SESSION["ask_question_show_message"])) {
  185.                 unset($_SESSION["ask_question_show_message"]);
  186.                 $data["ask_question_show_message"] = true;
  187.             }
  188.  
  189.             $questions = $database->select($database_prefix . "manager_questions", "*", array(
  190.                 "AND" => array(
  191.                     "user_id" => get_user_id(),
  192.                     "estate_id" => get_est_id(),
  193.                     "apartment_id" => get_apt_id(),
  194.                     "type" => $data["manager"]["route"]["name"] == "contact_accounting" ? "accounting" : "manager"
  195.                 )
  196.             ));
  197.  
  198.             $data["manager"]["data"] = $questions;
  199.  
  200.             break;
  201.  
  202.         case "counters":
  203.             $data["period"] = date("m Y");
  204.  
  205.             $data["manager"]["data"] = array(
  206.  
  207.             ); 
  208.  
  209.             $uc = $database->select($database_prefix . "manager_apartment_counters", "*", array(
  210.                 "AND" => array(
  211.                     "estate_id" => get_est_id(),
  212.                     "apartment_id" => get_apt_id()
  213.                 )
  214.             ));
  215.            
  216.             foreach ($uc as $type) {
  217.                 $data["manager"]["data"][] = array("info" => $type);
  218.             }
  219.  
  220.             $mo = date("m") - 1;
  221.             $yo = date("Y");
  222.  
  223.             if ($mo < 1) {
  224.                 $yo = --$yo;
  225.                 $mo = 12;
  226.             }
  227.  
  228.             if ($mo < 10) {
  229.                 $mo = "0$mo";
  230.             }
  231.  
  232.             $period_old = "$mo $yo";
  233.  
  234.             foreach ($data["manager"]["data"] as $key => $value) {
  235.                 $data["manager"]["data"][$key]["value"] =
  236.                     $database->get($database_prefix . "manager_counters", "value", array(
  237.                         "AND" => array(
  238.                             "estate_id" => get_est_id(),
  239.                             "apartment_id" => get_apt_id(),
  240.                             "period" => $data["period"],
  241.                             "type" => $value["info"]["type"],
  242.                             "counter_id" => $value["info"]["id"]
  243.                         )
  244.                     ));
  245.  
  246.                 $data["manager"]["data"][$key]["old"] =
  247.                     $database->get($database_prefix . "manager_counters", "value", array(
  248.                         "AND" => array(
  249.                             "estate_id" => get_est_id(),
  250.                             "apartment_id" => get_apt_id(),
  251.                             "period" => $period_old,
  252.                             "type" => $value["info"]["type"],
  253.                             "counter_id" => $value["info"]["id"]
  254.                         )
  255.                     ));
  256.             }
  257.  
  258.             if (is_action("save") || is_action("modify")) {
  259.  
  260.                 $has = $database->has($database_prefix . "manager_counters", array(
  261.                     "AND" => array(
  262.                         "estate_id" => get_est_id(),
  263.                         "apartment_id" => get_apt_id(),
  264.                         "period" => $data["period"],
  265.                         "type" => $_POST["type"],
  266.                         "counter_id" => $_POST["counter_id"]
  267.                     )
  268.                 ));
  269.  
  270.                 $_POST[$_POST["counter_id"]] = str_replace(",", ".", $_POST[$_POST["counter_id"]]);
  271.  
  272.                 $_POST[$_POST["counter_id"]] = floatval($_POST[$_POST["counter_id"]]);
  273.  
  274.                 if ($has) {
  275.                     $database->update($database_prefix . "manager_counters", array(
  276.                         "updated" => date("Y-m-d H:i:s"),
  277.                         "value" => $_POST[$_POST["counter_id"]],
  278.                     ), array(
  279.                         "AND" => array(
  280.                             "estate_id" => get_est_id(),
  281.                             "apartment_id" => get_apt_id(),
  282.                             "type" => $_POST["type"],
  283.                             "period" => $data["period"],
  284.                             "counter_id" => $_POST["counter_id"]
  285.                         )
  286.                     ));
  287.                 } else {
  288.                     $database->insert($database_prefix . "manager_counters", array(
  289.                         "updated" => date("Y-m-d H:i:s"),
  290.                         "estate_id" => get_est_id(),
  291.                         "apartment_id" => get_apt_id(),
  292.                         "type" => $_POST["type"],
  293.                         "value" => $_POST[$_POST["counter_id"]],
  294.                         "period" => $data["period"],
  295.                         "counter_id" => $_POST["counter_id"]
  296.                     ));
  297.                 }
  298.  
  299.                 refresh();
  300.             }
  301.  
  302.             break;
  303.  
  304.         case "documents":
  305.  
  306.             $documents = $database->select($database_prefix . "manager_files", "*", array(
  307.                 "estate_id" => get_est_id()
  308.             ));
  309.  
  310.             $data["manager"]["data"] = $documents;
  311.  
  312.             break;
  313.  
  314.         case "profile":
  315.  
  316.             $data["manager"]["data"] = $user;
  317.  
  318.             $user_data = $database->select($database_prefix . "users_data", "*", array(
  319.                 "user_id" => get_user_id()
  320.             ));
  321.  
  322.             if (! empty($user_data)) {
  323.                 foreach ($user_data as $value) {
  324.                     $data["manager"]["data"][$value["name"]] = $value["value"];
  325.                 }
  326.             }
  327.  
  328.             if (! empty($_POST)) {
  329.                 unset($_SESSION["profile_errors"]);
  330.  
  331.                 foreach ($_POST as $key => $value) {
  332.  
  333.                     if (in_array($key, array("mail", "name", "surname"))) {
  334.                         $database->update($database_prefix . "users", array(
  335.                             $key => $value
  336.                         ), array(
  337.                             "id" => get_user_id()
  338.                         ));
  339.                     } else if ($key != "image") {
  340.                         $exists = $database->has($database_prefix . "users_data", array(
  341.                             "AND" => array(
  342.                                 "user_id" => get_user_id(),
  343.                                 "name" => $key
  344.                             )
  345.                         ));
  346.  
  347.                         if ($exists) {
  348.                             $database->update($database_prefix . "users_data", array(
  349.                                 "value" => $value
  350.                             ), array(
  351.                                 "AND" => array(
  352.                                     "user_id" => get_user_id(),
  353.                                     "name" => $key
  354.                                 )
  355.                             ));
  356.                         } else {
  357.                             $database->insert($database_prefix . "users_data", array(
  358.                                 "user_id" => get_user_id(),
  359.                                 "name" => $key,
  360.                                 "value" => $value,
  361.                                 "lang_id" => 0
  362.                             ));
  363.                         }
  364.                     }
  365.                 }
  366.  
  367.                 // password reset
  368.  
  369.                 if (! empty($_POST["existing_password"])) {
  370.                     $db_hash = sha1(DB_DATABASE);
  371.  
  372.                     $exists = $database->has($database_prefix . "users", array(
  373.                         "AND" => array(
  374.                             "id" => get_user_id(),
  375.                             "password" => $db_hash . md5($_POST["existing_password"])
  376.                         )
  377.                     ));
  378.  
  379.                     if ($exists) {
  380.                         if (!empty($_POST["new_password"]) && !empty($_POST["new_password_repeat"])) {
  381.                             if ($_POST["new_password"] == $_POST["new_password_repeat"]) {
  382.  
  383.                                 $password = $db_hash . md5($_POST["new_password"]);        
  384.                                            
  385.                                 $database->update($database_prefix . "users", array(
  386.                                     "password" => $password
  387.                                 ), array(
  388.                                     "id" => get_user_id()
  389.                                 ));                
  390.                             }
  391.                         }
  392.                     } else {
  393.                         $_SESSION["profile_errors"]["password"] = true;
  394.                     }
  395.                 }
  396.  
  397.                 if (! empty($_FILES)) {
  398.                     foreach ($_FILES as $key => $value) {
  399.                         if (! empty($value["name"])) {
  400.                             upload($value);
  401.                         }
  402.                     }
  403.                 }
  404.  
  405.                 refresh();
  406.             }
  407.  
  408.             break;
  409.  
  410.         case "estates":
  411.  
  412.             break;
  413.  
  414.         case "exit":
  415.  
  416.             header("Location: /logout.php");
  417.  
  418.             exit();
  419.  
  420.             break;
  421.        
  422.         default:
  423.             # code...
  424.             break;
  425.     }
  426.  
  427.     /* ==================================================== */
  428.  
  429.     function upload($file) {
  430.         global $id, $database, $database_prefix;
  431.  
  432.         if (empty($file["tmp_name"])) {
  433.             $file["tmp_name"] = $file["name"];
  434.         }
  435.  
  436.         $ext = end(explode(".", $file["name"]));
  437.  
  438.         $hash = sha1(uniqid());
  439.         $path = $_SERVER['DOCUMENT_ROOT'] . "/images/users/$hash.$ext";
  440.  
  441.         if ($file["size"] > 4000000) {
  442.             $_SESSION["profile_errors"]["image"] = true;
  443.             return;
  444.         }
  445.  
  446.         $database->update($database_prefix . "users", array(
  447.             "image" => $hash . ".$ext"
  448.         ), array(
  449.             "id" => get_user_id()
  450.         ));
  451.  
  452.         move_uploaded_file($file["tmp_name"], $path);
  453.     }
  454.  
  455.     function refresh() {
  456.         header("Location: http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]");
  457.         exit();
  458.     }
  459.  
  460.     function is_action($try) {
  461.         if (! isset($_POST)) {
  462.             return false;
  463.         }
  464.  
  465.         return isset($_POST["action"]) ?
  466.             $_POST["action"] == $try : false;
  467.     }
  468.  
  469.     function get_user_id() {
  470.         return $_SESSION["user"]["id"];
  471.     }
  472.  
  473.     function get_est_id() {
  474.         return get_arg(3);
  475.     }
  476.  
  477.     function get_apt_id() {
  478.         return get_arg(2);
  479.     }
  480.  
  481.     function get_page() {
  482.         return get_arg(1);
  483.     }
  484.  
  485.     function get_arg($i) {
  486.         $expl = explode("/", $_GET["variables"]);
  487.         out($expl);
  488.         out(sizeof($expl));
  489.         if(!empty($expl[sizeof($expl) - $i])){
  490.             return $expl[sizeof($expl) - $i];
  491.         }else{
  492.             return false;
  493.         }
  494.     }
  495.  
  496.     function url($page) {
  497.         $url = rtrim("http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]", "/");
  498.  
  499.         $pieces = explode("/", $url);
  500.  
  501.         $pieces[sizeof($pieces) - 1] = $page;
  502.  
  503.         return implode("/", $pieces);
  504.     }
  505.  
  506. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement