Advertisement
Guest User

Untitled

a guest
Sep 22nd, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 32.83 KB | None | 0 0
  1. <?php
  2. if (($page['req'] || $page['req'] === 0) && (!isset($_SESSION['perms']) || $_SESSION['perms'] < $page['req'])) return;
  3. $price_qualifiers = array(
  4.   0 => "Default",
  5.   1 => "POA",
  6.   2 => "Guide Price",
  7.   3 => "Fixed Price",
  8.   4 => "Offers in Excess of",
  9.   5 => "OIRO",
  10.   6 => "Sale by Tender",
  11.   7 => "From",
  12.   9 => "Shared Ownership",
  13.   10 => "Offers Over",
  14.   11 => "Part Buy Part Rent",
  15.   12 => "Shared Equity"
  16. );
  17.  
  18. function db_insert($table, $keys, $values) {
  19.   db::run("
  20.    INSERT INTO ".$table." (
  21.      ".$keys."
  22.    ) VALUES (
  23.      ".$values."
  24.    )
  25.  ");
  26. }
  27.  
  28. function array_remove($array, $remove) {
  29.   $ret = array();
  30.   foreach ($array as $k=>$v) {
  31.     if (array_search($v, $remove) === false) {
  32.       $ret[$k] = $v;
  33.     }
  34.   }
  35.   return $ret;
  36. }
  37.  
  38. /* if (isset($_REQUEST['edit'])) {
  39.   if ($edit = db::get("
  40.     SELECT * FROM pr_property
  41.   ");
  42. } */
  43.  
  44. if (isset($_REQUEST['brochure'])) {
  45.   $name = "img/properties/".$_REQUEST['brochure']."/brochure.pdf";
  46.   if (file_exists($name)) {
  47.     $rs = db::getRow("
  48.      SELECT
  49.        pr.id as pr_id, pr.price as price, a.line_1 as line_1, a.line_2 as line_2, a.town as town
  50.      FROM pr_property pr
  51.      LEFT JOIN a_address a ON
  52.        a.pr_id = pr.id
  53.      WHERE pr.id = '".db::escape($_REQUEST['brochure'])."'
  54.    ");
  55.     if ($rs) {
  56.       header("Content-type: application/pdf");
  57.       header("Content-Disposition: attachment; filename=".str_replace(" ", "†", $rs['line_2'])."†Brochure.pdf");
  58.       readfile($name);
  59.     } else {
  60.       header("location: brochure");
  61.     }
  62.   } else {
  63.     header("location: brochure");
  64.   }
  65.   return;
  66. }
  67.  
  68. if (isset($_REQUEST['add'])) {
  69.  
  70.   if (!isset($_SESSION['con'])) return;
  71.  
  72.   if (isset($_REQUEST['submit'])) {
  73.     if (!isset($_REQUEST['id'])) {
  74.       /* Build query for pr_property */
  75.       $keys = "datetime, international, "; $values = time().", 1, "; $comb = "";
  76.       foreach ($_POST['pr'] as $key => $value) {
  77.         $keys .= $key.", ";
  78.         $values .= "'".db::escape($value)."', ";
  79.         $comb .= $key."='".db::escape($value)."' AND ";
  80.       }
  81.       $keys = substr($keys, 0, -2);
  82.       $values = substr($values, 0, -2);
  83.       $comb = substr($comb, 0, -5);
  84.         // Insert data into pr_property and find new ID
  85.       db_insert("pr_property", $keys, $values);
  86.       $id = db::insertedId();
  87.      
  88.       /* Build query for a_address */
  89.       $keys = "pr_id, "; $values = "'".$id."', ";
  90.       foreach ($_POST['a'] as $key => $value) {
  91.         $keys .= $key.", ";
  92.         $values .= "'".db::escape($value)."', ";
  93.       }
  94.       $keys = substr($keys, 0, -2);
  95.       $values = substr($values, 0, -2);
  96.         // Insert data into a_address
  97.       db_insert("a_address", $keys, $values);
  98.      
  99.       /* Insert data into prd_data */
  100.       foreach ($_POST['prd'] as $key => $value) { db_insert("prd_data", "pr_id, `key`, value", db::escape($id).", '".db::escape($key)."', '".db::escape($value)."'"); }
  101.      
  102.       /* Add dummy images */
  103.       mkdir("img/properties/".$id."/");
  104.      
  105.       if (is_uploaded_file($_FILES['floor_plan']['tmp_name'])) {        
  106.         $floor = new gd($_FILES['floor_plan']['tmp_name']);
  107.         $floor->save("img/properties/".$id."/floorplan.jpg");
  108.         $floor->resize(250);
  109.         $floor->save("img/properties/".$id."/floorplan_thumb.png");
  110.       }
  111.      
  112.       if (is_uploaded_file($_FILES['brochure']['tmp_name'])) {
  113.         move_uploaded_file($_FILES['brochure']['tmp_name'], "img/properties/".$id."/brochure.pdf");
  114.       }
  115.      
  116.       $pics = false;
  117.       $x=0;
  118.       if (isset($_FILES['pictures']['tmp_name'])) foreach ($_FILES['pictures']['tmp_name'] as $tmp) {
  119.         if (!is_uploaded_file($tmp)) continue;
  120.         $pics = true;
  121.         ++$x;
  122.  
  123.         $large = new gd($tmp);
  124.         $large->resize(726, 350, true);
  125.         $large->crop(0,0, 726, 350);
  126.         $large->save("img/properties/".$id."/".$id."_large_".sprintf("%02d", $x).".jpg");
  127.         unset($large);
  128.        
  129.         $small = new gd($tmp);
  130.         $small->resize(220,150, true);
  131.         $small->crop(0,0, 220,150);
  132.         $small->save("img/properties/".$id."/".$id."_small_".sprintf("%02d", $x).".jpg");
  133.         unset($small);
  134.       }
  135.       if (!$pics) {
  136.         copy("img/properties/uploading_large.jpg", "img/properties/".$id."/".$id."_large_01.jpg");
  137.         copy("img/properties/uploading_small.jpg", "img/properties/".$id."/".$id."_small_01.jpg");
  138.       }
  139.     } else {
  140.       //update code
  141.      
  142.       db::run("
  143.        UPDATE pr_property SET
  144.          v_id = '".db::escape($_REQUEST['pr']['v_id'])."',
  145.          tenure = '".db::escape($_REQUEST['pr']['tenure'])."',
  146.          price = '".db::escape($_REQUEST['pr']['price'])."',
  147.          price_qualifier = '".db::escape($_REQUEST['pr']['price_qualifier'])."',
  148.          area = '".db::escape($_REQUEST['pr']['area'])."',
  149.          description = '".db::escape($_REQUEST['pr']['description'])."',
  150.          status = '".db::escape($_REQUEST['pr']['status'])."'
  151.        WHERE id = '".db::escape($_REQUEST['id'])."'
  152.      ");
  153.      
  154.       db::run("
  155.        DELETE FROM prd_data
  156.        WHERE pr_id = '".db::escape($_REQUEST['id'])."'
  157.      ");
  158.      
  159.       foreach ($_REQUEST['prd'] as $k => $v) {
  160.         db::run("
  161.          INSERT INTO prd_data (
  162.            pr_id, `key`, value
  163.          ) VALUES (
  164.            '".db::escape($_REQUEST['id'])."', '".db::escape($k)."', '".db::escape($v)."'
  165.          )
  166.        ");
  167.       }
  168.      
  169.       if (is_uploaded_file($_FILES['floor_plan']['tmp_name'])) {
  170.         if (file_exists("img/properties/".$_REQUEST['id']."/floorplan.jpg")) {
  171.           unlink(realpath("img/properties/".$_REQUEST['id']."/floorplan.jpg"));
  172.           unlink(realpath("img/properties/".$_REQUEST['id']."/floorplan_thumb.jpg"));
  173.         }
  174.        
  175.         $floor = new gd($_FILES['floor_plan']['tmp_name']);
  176.         $floor->save("img/properties/".$_REQUEST['id']."/floorplan.jpg");
  177.         $floor->resize(250);
  178.         $floor->save("img/properties/".$_REQUEST['id']."/floorplan_thumb.png");
  179.       }
  180.      
  181.       if (is_uploaded_file($_FILES['brochure']['tmp_name'])) {
  182.         move_uploaded_file($_FILES['brochure']['tmp_name'], realpath("img/properties/".$_REQUEST['id'])."/brochure.pdf");
  183.       }
  184.  
  185.       if (isset($_REQUEST['del_pic'])) foreach ($_REQUEST['del_pic'] as $id) {
  186.         unlink(realpath("img/properties/".$_REQUEST['id']."/".$_REQUEST['id']."_large_".$id.".jpg"));
  187.         unlink(realpath("img/properties/".$_REQUEST['id']."/".$_REQUEST['id']."_small_".$id.".jpg"));
  188.       }
  189.      
  190.       if (isset($_FILES['pictures']['tmp_name'])) foreach ($_FILES['pictures']['tmp_name'] as $idx => $tmp) {
  191.         if (!is_uploaded_file($tmp)) continue;
  192.         $x=0;
  193.         do {
  194.           $x = sprintf("%02d", ++$x);
  195.         } while (file_exists("img/properties/".$_REQUEST['id']."/".$_REQUEST['id']."_large_".$x.".jpg"));
  196.  
  197.         $large = new gd($tmp);
  198.         $large->resize(726, 350, true);
  199.         $large->crop(0,0, 726, 350);
  200.         $large->save("img/properties/".$_REQUEST['id']."/".$_REQUEST['id']."_large_".$x.".jpg");
  201.         unset($large);
  202.        
  203.         $small = new gd($tmp);
  204.         $small->resize(220,150, true);
  205.         $small->crop(0,0, 220,150);
  206.         $small->save("img/properties/".$_REQUEST['id']."/".$_REQUEST['id']."_small_".$x.".jpg");
  207.         unset($small);
  208.        
  209.         $_REQUEST['pic_order'][$x] = $_REQUEST['pic_order'][$idx];
  210.         unset($_REQUEST['pic_order'][$idx]);
  211.       }
  212.      
  213.       //this is all really ugly, use the database next time!      
  214.       $dir = "img/properties/".$_REQUEST['id']."_tmp_".getmypid()."/";
  215.       mkdir($dir);
  216.       foreach ($_REQUEST['pic_order'] as $from=>$to) {
  217.         rename("img/properties/".$_REQUEST['id']."/".$_REQUEST['id']."_large_".$from.".jpg", $dir.$_REQUEST['id']."_large_".sprintf("%02d", $to).".jpg");
  218.         rename("img/properties/".$_REQUEST['id']."/".$_REQUEST['id']."_small_".$from.".jpg", $dir.$_REQUEST['id']."_small_".sprintf("%02d", $to).".jpg");
  219.       }
  220.       foreach (glob("img/properties/".$_REQUEST['id']."/*") as $f) {
  221.         rename($f, $dir.basename($f));
  222.       }
  223.  
  224.       rmdir("img/properties/".$_REQUEST['id']);
  225.       ren(realpath($dir), realpath("./img/properties/").DIRECTORY_SEPARATOR.$_REQUEST['id']);
  226.     }
  227.  
  228.     // DONE!
  229.     header("location: properties");
  230.   } else {
  231.     include("header.php");
  232.     $rs = db::getAll("SELECT forename, surname, id FROM v_vendor ORDER BY surname");
  233.     if (isset($_REQUEST['id'])) {
  234.       $prop = db::getAssoc("
  235.        SELECT
  236.          0 as zero,
  237.          pr.id as pr_id, pr.v_id as pr_v_id, pr.uprn as pr_uprn, pr.tenure as pr_tenure, pr.price as pr_price, pr.price_qualifier as pr_price_qualifier,
  238.          pr.type as pr_type, pr.summary as pr_summary, pr.description as pr_description, pr.sub_id as pr_sub_id, pr.status_id as pr_status_id, pr.status as pr_status,
  239.          pr.area as pr_area, pr.tax as pr_tax, pr.authority as pr_authority, pr.service as pr_service,
  240.            a.pr_id as a_pr_id, a.line_1 as a_line_1, a.line_2 as a_line_2, a.line_3 as a_line_3, a.line_4 as a_line_4, a.town as a_town, a.postcode_1 as a_postcode_1, a.postcode_2 as a_postcode_2,
  241.            prd.`key` as prd_key, prd.value as prd_value,
  242.            prf.feature as prf_feature
  243.        FROM pr_property pr
  244.        LEFT JOIN a_address a ON
  245.          a.pr_id = pr.id
  246.        LEFT JOIN prd_data prd ON
  247.          prd.pr_id = pr.id
  248.        LEFT JOIN prf_features prf ON
  249.          prf.pr_id = pr.id
  250.        WHERE pr.id = '".db::escape($_REQUEST['id'])."'
  251.      ",
  252.         array(
  253.           "zero",
  254.           "pr_*",
  255.           "address" => array("a_*"),
  256.           "data" => array("prd_*"),
  257.           "features" => array("prf_*"),
  258.         )
  259.       );
  260.       if (!$prop) die("Invalid Property ID");
  261.       $prop = current($prop);
  262.       $prop['address'] = current($prop['address']);
  263.     }
  264. ?>
  265.     <h2>Property Inspection Form</h2>
  266.     <form class='data' method='post' action='property?add' enctype='multipart/form-data'>
  267. <?php
  268.     if (isset($_REQUEST['id'])) {
  269.       echo '<input type="hidden" name="id" value="'.$_REQUEST['id'].'" />';
  270.     }
  271. ?>
  272.       <p>
  273.         <span class='subtext' style='margin-bottom: 5px; padding-left: 20px; display: block;'>(Required fields are marked with a <strong><span class='red'>*</span></strong> )</span>
  274.         <div class='row'><label for='owner'>Owner <strong><span class='red'>*</span></strong></label>
  275.         <select name='pr[v_id]' id='owner'>
  276.           <?php
  277.             if ($rs) {
  278.               foreach ($rs as $r) {
  279.                 echo "<option value='".$r['id']."'".(isset($prop) && $prop['v_id'] == $r['id'] ? " selected='selected'" : "").">".$r['surname'].", ".$r['forename']."</option>";
  280.               }
  281.             }
  282.           ?>
  283.         </select>&nbsp;&nbsp;<a href='vendor?add'>Add a vendor</a></div>
  284.        
  285.         <div class='row'>
  286.         <label for='type'>Property Type <strong><span class='red'>*</span></strong></label><select id='type' name='pr[type]'>
  287.           <option<?=(isset($prop) && $prop['type'] == "Beachfront Luxury Villa" ? " selected='selected'" : "") ?> value='Beachfront Luxury Villa'>Beachfront Luxury Villa</option>
  288.           <option<?=(isset($prop) && $prop['type'] == "Beachfront Villa" ? " selected='selected'" : "") ?> value='Beachfront Villa'>- Beachfront Villa,</option>
  289.           <option<?=(isset($prop) && $prop['type'] == "Gated Condominium" ? " selected='selected'" : "") ?> value='Gated Condominium'>- Gated Condominium</option>
  290.           <option<?=(isset($prop) && $prop['type'] == "Chattel House to Move" ? " selected='selected'" : "") ?> value='Chattel House to Move'>- Chattel House to Move</option>
  291.           <option<?=(isset($prop) && $prop['type'] == "Chattel House on Land" ? " selected='selected'" : "") ?> value='Chattel House on Land'>- Chattel House on Land</option>
  292.           <option<?=(isset($prop) && $prop['type'] == "Cottage" ? " selected='selected'" : "") ?> value='Cottage'>- Cottage</option>
  293.           <option<?=(isset($prop) && $prop['type'] == "Country Home" ? " selected='selected'" : "") ?> value='Country Home'>Country Home</option>
  294.           <option<?=(isset($prop) && $prop['type'] == "Development Opportunity" ? " selected='selected'" : "") ?> value='Development Opportunity'>- Development Opportunity</option>
  295.           <option<?=(isset($prop) && $prop['type'] == "Plantation House" ? " selected='selected'" : "") ?> value='Plantation House'>- Plantation House</option>
  296.           <option<?=(isset($prop) && $prop['type'] == "Hotel" ? " selected='selected'" : "") ?> value='Hotel'>- Hotel</option>
  297.           <option<?=(isset($prop) && $prop['type'] == "Land" ? " selected='selected'" : "") ?> value='Land'>- Land</option>
  298.           <option<?=(isset($prop) && $prop['type'] == "Penthouse" ? " selected='selected'" : "") ?> value='Penthouse'>- Penthouse</option>
  299.           <option<?=(isset($prop) && $prop['type'] == "Private Island" ? " selected='selected'" : "") ?> value='Private Island'>- Private Island</option>
  300.           <option<?=(isset($prop) && $prop['type'] == "Townhouse" ? " selected='selected'" : "") ?> value='Townhouse'>- Townhouse</option>
  301.           <option<?=(isset($prop) && $prop['type'] == "Villa" ? " selected='selected'" : "") ?> value='Villa'>- Villa</option>
  302.         </select>
  303.        
  304.         <label for='tenure'>Tenure <strong><span class='red'>*</span></strong></label><select id='tenure' name='pr[tenure]'>
  305.           <option<?=(isset($prop) && $prop['tenure'] == "Freehold" ? " selected='selected'" : "") ?> value="Freehold">Freehold</option>
  306.           <option<?=(isset($prop) && $prop['tenure'] == "Leasehold" ? " selected='selected'" : "") ?> value="Leasehold">Leasehold</option>
  307.         </select></div>
  308.        
  309.         <div class='row'>
  310.           <label for='price'>Price (&pound;) <strong><span class='red'>*</span></strong></label>
  311.           <input type='text' name='pr[price]' id='price' regex='^.+$'<?=(isset($prop) ? " value='".$prop['price']."'" : "") ?> />
  312.          
  313.           <label for='price_qualifier'>Qualifier <strong><span class='red'>*</span></strong></label>
  314.           <select name='pr[price_qualifier]' id='price_qualifier'>
  315.             <?php
  316.               foreach ($price_qualifiers as $key => $value) {
  317.                 echo "<option value='".$key."'".(isset($prop) && $prop['price_qualifier'] == $key ? " selected='selected'" : "").">".$value."</option>";
  318.               }
  319.  
  320.         // What a mess \o/ theres no a_address id update so you cant change from the CMS after first save!
  321.  
  322.             ?>
  323.           </select>
  324.         </div>
  325.        
  326.         <div class='row'><label for='tenure_notes'>Notes</label><textarea style='height: 30px' name='prd[tenure_notes]' id='tenure_notes'><?=(isset($prop) ? $prop['data']['tenure_notes'] : "") ?></textarea></div>
  327.  
  328.         <div class='row'><label for='line_1'>House #/Name <strong><span class='red'>*</span></strong></label><input id='line_1' name='a[line_1]' regex='^.+$'<?=(isset($prop) ? " value='".$prop['address']['line_1']."'" : "") ?>></input></div>
  329.         <div class='row'><label for='line_2'>Parish <strong><span class='red'>*</span></strong></label><input id='line_2' name='a[line_2]' regex='^.+$'<?=(isset($prop) ? " value='".$prop['address']['line_2']."'" : "") ?>></input></div>
  330.         <div class='row'><label for='line_3'>Address Line 3</label><input id='line_3' name='a[line_3]'<?=(isset($prop) ? " value='".$prop['address']['line_3']."'" : "") ?>></input></div>
  331.         <div class='row'><label for='line_4'>Address Line 4</label><input id='line_4' name='a[line_4]'<?=(isset($prop) ? " value='".$prop['address']['line_4']."'" : "") ?>></input></div>
  332.         <div class='row'><label for='town'>City/Town <strong><span class='red'>*</span></strong></label><input id='town' name='a[town]' regex='^.+$' value='Bath' default='Bath'<?=(isset($prop) ? " value='".$prop['address']['town']."'" : "") ?> /></div>
  333.        
  334.        <?php /*
  335.        <div class='row'><label for='postcode_1'>Postcode 1 <strong><span class='red'>*</span></strong></label><input id='postcode_1' name='a[postcode_1]' regex='^([A-PR-UWYZ0-9][A-HK-Y0-9][AEHMNPRTVXY0-9]?[ABEHMNPRVWXY0-9]?|GIR)$'<?=(isset($prop) ? " value='".$prop['address']['postcode_1']."'" : "") ?> /></div>
  336.         <div class='row'><label for='postcode_2'>Postcode 2 <strong><span class='red'>*</span></strong></label><input id='postcode_2' name='a[postcode_2]' regex='^([0-9][ABD-HJLN-UW-Z]{2}|0AA)$'<?=(isset($prop) ? " value='".$prop['address']['postcode_2']."'" : "") ?> /></div>
  337.         <div class='clear'><!-- &nbsp; --></div>
  338.        
  339.        
  340.         <div class='row'>
  341.           <label for='bedrooms'>Bedrooms <strong><span class='red'>*</span></strong></label><input type='text' id='bedrooms' name='prd[bedrooms]' style='width: 25px' regex='^[0-9]{1,2}$'<?=(isset($prop, $prop['data']['bedrooms']) ? " value='".$prop['data']['bedrooms']."'" : "") ?> />
  342.           <label for='bathrooms'>Bathrooms <strong><span class='red'>*</span></strong></label><input type='text' id='bathrooms' name='prd[bathrooms]' style='width: 25px' regex='^[0-9]{1,2}$'<?=(isset($prop, $prop['data']['bathrooms']) ? " value='".$prop['data']['bathrooms']."'" : "") ?> />
  343.           <label for='reception_rooms'>Reception Rooms <strong><span class='red'>*</span></strong></label><input type='text' id='reception_rooms' name='prd[reception_rooms]' style='width: 25px' regex='^[0-9]{1,2}$' <?=(isset($prop, $prop['data']['reception_rooms']) ? " value='".$prop['data']['reception_rooms']."'" : "") ?> />
  344.         </div>
  345.         <div class='row'>
  346.           <label for='kitchens'>Kitchens <strong><span class='red'>*</span></strong></label><input type='text' id='kitchens' name='prd[kitchens]' style='width: 25px' regex='^[0-9]{1,2}$'<?=(isset($prop, $prop['data']['kitchens']) ? " value='".$prop['data']['kitchens']."'" : "") ?> />
  347.         </div>
  348.  
  349.         <div class='row'>
  350.           <label for='ensuite'>En-suite</label><input type='checkbox' id='ensuite' name='prd[ensuite]' value='1'<?=(isset($prop, $prop['data']['ensuite']) && $prop['data']['ensuite'] ? " checked='checked'" : "") ?> />
  351.           <label for='balcony' style='width: 60px'>Balcony</label><input type='checkbox' id='balcony' name='prd[balcony]' value='1'<?=(isset($prop, $prop['data']['balcony']) && $prop['data']['balcony'] ? " checked='checked'" : "") ?> />
  352.           <label for='garden' style='width: 60px'>Garden</label><input type='checkbox' id='garden' name='prd[garden]' value='1'<?=(isset($prop, $prop['data']['garden']) && $prop['data']['garden'] ? " checked='checked'" : "") ?> />
  353.           <label for='cloakroom' style='width: 60px'>Cloakroom</label><input type='checkbox' id='cloakroom' name='prd[cloakroom]' value='1'<?=(isset($prop, $prop['data']['cloakroom']) && $prop['data']['cloakroom'] ? " checked='checked'" : "") ?> />
  354.           <label for='outbuildings' style='width: 70px'>Outbuildings</label><input type='checkbox' id='outbuildings' name='prd[outbuildings]' value='1'<?=(isset($prop, $prop['data']['outbuildings']) && $prop['data']['outbuildings'] ? " checked='checked'" : "") ?> />
  355.         </div>
  356.  
  357.         <div class='row'>
  358.           <label for='patio'>Patio</label><input type='checkbox' id='patio' name='prd[patio]' value='1'<?=(isset($prop, $prop['data']['patio']) && $prop['data']['patio'] ? " checked='checked'" : "") ?> />
  359.           <label for='terrace' style='width: 60px'>Terrace</label><input type='checkbox' id='terrace' name='prd[terrace]' value='1'<?=(isset($prop, $prop['data']['terrace']) && $prop['data']['terrace'] ? " checked='checked'" : "") ?> />
  360.           <label for='balcony' style='width: 60px'>Balcony</label><input type='checkbox' id='balcony' name='prd[balcony]' value='1'<?=(isset($prop, $prop['data']['balcony']) && $prop['data']['balcony'] ? " checked='checked'" : "") ?> />
  361.         </div>
  362.        
  363.         <div class='row'><label for='area'>Area (ft&sup2;) <strong><span class='red'>*</span></strong></label><input type='text' name='pr[area]' id='area' regex='^[0-9]{1,}$'<?=(isset($prop) ? " value='".$prop['area']."'" : "") ?> /></div>
  364.        
  365.         <div class='row'><label for='rooms_notes'>Notes / Summary</label><textarea name='prd[rooms_notes]' id='rooms_notes'><?=(isset($prop) ? $prop['data']['rooms_notes'] : "") ?></textarea></div>
  366.         <div class='clear'><!-- &nbsp; --></div>
  367.        
  368.         <div class='row'>
  369.           <label for='parking'>Parking</label>
  370.           <select id='parking' name='prd[parking]'>
  371.             <option<?=(isset($prop['data']['parking']) && $prop['data']['parking'] == "" ? " selected='selected'" : "") ?> value=''>None</option>
  372.             <option<?=(isset($prop['data']['parking']) && $prop['data']['parking'] == "Garage" ? " selected='selected'" : "") ?>>Garage</option>
  373.             <option<?=(isset($prop['data']['parking']) && $prop['data']['parking'] == "Car Port" ? " selected='selected'" : "") ?>>Car Port</option>
  374.             <option<?=(isset($prop['data']['parking']) && $prop['data']['parking'] == "Off Street" ? " selected='selected'" : "") ?>>Off Street</option>
  375.             <option<?=(isset($prop['data']['parking']) && $prop['data']['parking'] == "On Street" ? " selected='selected'" : "") ?>>On Street</option>
  376.             <option<?=(isset($prop['data']['parking']) && $prop['data']['parking'] == "Allocated" ? " selected='selected'" : "") ?>>Allocated</option>
  377.             <option<?=(isset($prop['data']['parking']) && $prop['data']['parking'] == "Resident Permit" ? " selected='selected'" : "") ?>>Resident Permit</option>
  378.           </select>
  379.           <label for='secure_parking' style='width: 60px'>Secure</label><input name='prd[secure_parking]' id='secure_parking' type='checkbox' value='1'<?=(isset($prop['data']['secure_parking']) && $prop['data']['secure_parking'] ? " checked='checked'" : "")?> />
  380.           <label for='parking_number' style='width: 90px'>No. of spaces</label><input type='text' id='parking_number' name='prd[parking_number]' value='<?=(isset($prop['data']['parking_number']) ? $prop['data']['parking_number'] : "0") ?>' default='0' style='width: 25px' regex='^[0-9]{1,2}$' />
  381.         </div>*/?>
  382.       </p>
  383.       <p>
  384.         <div class='row'><label for='description'>Full Summary <strong><span class='red'>*</span></strong></label><textarea id='description' name='pr[description]' style='width: 400px; height: 200px' regex='.'><?=(isset($prop) ? $prop['description'] : "") ?></textarea></div>
  385.         <div class='clear'><!-- &nbsp; --></div>
  386.       </p>
  387. <?php
  388. if (isset($prop)) {
  389. ?>
  390.       <p>
  391.         <div class='row'>
  392.           <label>Floor plan<strong><span class='red'>*</span></strong></label>
  393.           <a href="img/properties/<?=$_REQUEST['id'] ?>/floorplan.jpg" target="_blank">View current floorplan</a><br />
  394.         </div>
  395.       </p>
  396. <?php
  397. }
  398. ?>
  399.       <p>
  400.         <div class='row'>
  401.           <label for='floor_plan'>Upload new floorplan</label>
  402.           <input type="file" name="floor_plan" id="floor_plan" />
  403.         </div>
  404.         <div class='clear'><!-- &nbsp; --></div>
  405.       </p>
  406.  
  407. <?php
  408. if (isset($prop)) {
  409. ?>
  410.       <p>
  411.         <div class='row'>
  412.           <label>Brochure<strong><span class='red'>*</span></strong></label>
  413.           <a href="img/properties/<?=$_REQUEST['id'] ?>/brochure.pdf" target="_blank">View current brochure</a><br />
  414.         </div>
  415.       </p>
  416. <?php
  417. }
  418. ?>
  419.       <p>
  420.         <div class='row'>
  421.           <label for='brochure'>Upload new brochure</label>
  422.           <input type="file" name="brochure" id="brochure" />
  423.         </div>
  424.         <div class='clear'><!-- &nbsp; --></div>
  425.       </p>
  426.  
  427.       <p>
  428.         <div class='row'>
  429.           <label for='pictures'>Upload pictures</label>
  430.           <div style="float: left;" id="sortable" class="image_sort_holder">
  431. <?php
  432. if (isset($prop)) {
  433.   $x=0;
  434.   foreach (glob("img/properties/".$_REQUEST['id']."/".$_REQUEST['id']."_small_*.jpg") as $file) {
  435.     preg_match('#_([0-9]+)\.jpg$#', $file, $m);
  436.     $num = $m[1];
  437.     ++$x;
  438.     echo '<div class="image_sort_item" item="'.$num.'"><a href="img/properties/'.$_REQUEST['id'].'/'.$_REQUEST['id'].'_large_'.$num.'.jpg" target="_blank"><img src="'.$file.'" alt="" width="80" class="property" /></a> <img class="delete" src="img/delete-icon.gif" onclick="$(this).parent(\'div\').remove(); $(\'form\').append(\'<input type=hidden name=del_pic[] value='.sprintf('%02d', $x).' />\')" /><img src="img/dragger.gif" alt="" class="dragger" /></div>';
  439.   }
  440. }
  441. ?>         
  442.             <div class='clear'><!-- &nbsp; --></div>
  443.             <button type="button" id="add_picture" onclick="add_pic();">Add another</button>
  444.           </div>
  445.         </div>
  446.         <div class='clear'><!-- &nbsp; --></div>
  447.       </p>
  448. <script type="text/javascript" src="js/jquery.ui.js"></script>
  449. <script type="text/javascript">
  450. var new_id = -1;
  451. function add_pic() {
  452.   $("#add_picture").before('<div item="'+new_id+'"><img src="img/dragger.gif" alt="" class="dragger" /><input type="file" name="pictures['+new_id+']" style="float: none;" /> <button type="button" onclick="$(this).parent(\'div\').remove();">x</button></div>');
  453.   new_id--;
  454. }
  455.  
  456. $(function() {
  457.   $("#sortable").sortable({
  458.     containment : 'parent', handle : '.dragger', cursor : 'move', distance: '2', tolerance : 'pointer',
  459.     items : 'div[item]'
  460.   });
  461.   $("form").bind("submit", function() {
  462.     var x = 0;
  463.     $("#sortable > div[item]").each(function() {
  464.       $("form").append("<input type='hidden' name='pic_order["+$(this).attr("item")+"]' value='"+(++x)+"' />");
  465.     });
  466.   });
  467. });
  468. </script>
  469.       <p>
  470.         <div class='row'>
  471.           <label for='status'>Status <strong><span class='red'>*</span></strong></label>
  472.           <select id='status' name='pr[status]'>
  473.             <option value='0'<?=(isset($prop) && !$prop['status'] ? " selected='selected'" : "") ?>>Inactive</option>
  474.             <option value='1'<?=(isset($prop) && $prop['status'] ? " selected='selected'" : "") ?> style='font-weight: bold'>Active</option>
  475.           </select>
  476.         </div>
  477.         <div class='row'><input name='submit' type='submit' value='Save' /></div>
  478.       </p>
  479.     </form><?php
  480.   }
  481. } else {
  482.   if (isset($_REQUEST['p'])) {
  483.     include("header.php");
  484.     $rs = db::getAssoc("
  485.      SELECT
  486.        0 as zero,
  487.        pr.id as pr_id, pr.uprn as pr_uprn, pr.tenure as pr_tenure, pr.price as pr_price, pr.price_qualifier as pr_price_qualifier, pr.type as pr_type, pr.summary as pr_summary, pr.description as pr_description, pr.sub_id as pr_sub_id, pr.status_id as pr_status_id,
  488.        pr.area as pr_area, pr.tax as pr_tax, pr.authority as pr_authority, pr.service as pr_service,
  489.          a.pr_id as a_pr_id, a.line_1 as a_line_1, a.line_2 as a_line_2, a.line_3 as a_line_3, a.line_4 as a_line_4, a.town as a_town, a.postcode_1 as a_postcode_1, a.postcode_2 as a_postcode_2,
  490.          prd.`key` as prd_key, prd.value as prd_value,
  491.          prf.feature as prf_feature
  492.      FROM pr_property pr
  493.      LEFT JOIN a_address a ON
  494.        a.pr_id = pr.id
  495.      LEFT JOIN prd_data prd ON
  496.        prd.pr_id = pr.id
  497.      LEFT JOIN prf_features prf ON
  498.        prf.pr_id = pr.id
  499.      WHERE pr.international='1'
  500.    ",
  501.       array(
  502.         "zero",
  503.         "pr_*",
  504.         "address" => array("a_*"),
  505.         "data" => array("prd_*"),
  506.         "features" => array("prf_*"),
  507.       )
  508.     );
  509.     if (!$rs) die("Invalid Property ID");
  510.     //echo "<pre>".htmlentities(print_r($rs, 1))."</pre>";
  511.    
  512.     /* Start Property Information Page */
  513.     ?>
  514.  
  515.     <div id='price_box' price='£<?=number_format($rs[$_REQUEST['p']]['price']) ?>'><?php
  516.     if ($rs[$_REQUEST['p']]['price_qualifier']) {
  517.       $pq = $price_qualifiers[$rs[$_REQUEST['p']]['price_qualifier']];
  518.       echo "<span style='display: block; margin-top: -5px; font-size: 0.5em; margin-bottom: -20px; width: 100%; text-align: center'>".$pq."</span><br>";
  519.     }
  520.     ?>£<?=number_format($rs[$_REQUEST['p']]['price']) ?></div>
  521.     <h1<?=($rs[$_REQUEST['p']]['price_qualifier']?" style='margin-top: 25px'":"") ?>><?=$rs[$_REQUEST['p']]['data']['bedrooms'] ?> Bedroom <?=ucwords($rs[$_REQUEST['p']]['type']) ?></h1>
  522.     <h3 style='margin-top: -13px; font-weight: normal'><?=$rs[$_REQUEST['p']]['address'][$_REQUEST['p']]['line_2'] ?>, <?=$rs[$_REQUEST['p']]['address'][$_REQUEST['p']]['town'] ?></h3>
  523.  
  524.     <a href='<?= (!isset($_SERVER["HTTP_REFERER"])?"search":$_SERVER["HTTP_REFERER"]) ?>' style='float:left; display: block; color: #000; text-decoration: none; position: relative; bottom: -20px'>&larr; Back to Search Results</a>
  525.     <a href='?brochure=<?=$_REQUEST['p'] ?>' style='float: right; display: block; margin-bottom: 10px; position: relative; top: 10px; color: #000; text-decoration: none'>Printable Brochure <img style='border: 0' src='img/printer.png'></a>
  526.     <div class='clear'><!-- &nbsp; --></div>
  527.    
  528.     <div class='tab tab_current' onclick='$("#gallery_container").css("visibility", "visible"); $(".tab").removeClass("tab_current"); $(this).addClass("tab_current");'>Photo Gallery</div>
  529.     <div class='tab' onclick='$("#gallery_container").css("visibility", "hidden"); $(".tab").removeClass("tab_current"); $(this).addClass("tab_current");'>Map & StreetView&#0153;</div>
  530.    
  531.     <div id='gallery_container'>
  532.       <?php
  533.         include("gallery.php");
  534.       ?>
  535.     </div>
  536.     <div class='clear'><!-- &nbsp; --></div>
  537.  
  538.     <div id='map'></div>
  539.     <div id='pano'></div>
  540.    
  541.     <div id='summary_container'>
  542.       <div id='features'>
  543.         <ul>
  544.           <?php
  545.             $list = "";
  546.             if (isset($rs[$_REQUEST['p']]['data']['bedrooms'])) $list .= "<li style='list-style-image: url(img/bed_icon.png)'>".$rs[$_REQUEST['p']]['data']['bedrooms']." Bedroom".($rs[$_REQUEST['p']]['data']['bedrooms']>1?"s":"")."</li>";
  547.             if (isset($rs[$_REQUEST['p']]['data']['parking']) && $rs[$_REQUEST['p']]['data']['parking']) $list .= "<li>".$rs[$_REQUEST['p']]['data']['parking']." Parking</li>";
  548.             if (isset($rs[$_REQUEST['p']]['data']['bathrooms'])) $list .= "<li style='list-style-image: url(img/bath_icon.png)'>".$rs[$_REQUEST['p']]['data']['bathrooms']." Bathroom".($rs[$_REQUEST['p']]['data']['bathrooms']>1?"s":"")."</li>";
  549.             if (isset($rs[$_REQUEST['p']]['data']['garden'])) $list .= "<li>Garden</li>";
  550.             if (isset($rs[$_REQUEST['p']]['data']['listed'])) $list .= "<li>Listed</li>";
  551.             if (isset($rs[$_REQUEST['p']]['data']['reception_rooms'])) $list .= "<li style='list-style-image: url(img/table_icon.png)'>".$rs[$_REQUEST['p']]['data']['reception_rooms']." Reception Room".($rs[$_REQUEST['p']]['data']['reception_rooms']>1?"s":"")."</li>";
  552.             if (count(explode("<li>", $list)) <= 6) if (isset($rs[$_REQUEST['p']]['data']['balcony'])) $list .= "<li>Balcony</li>";
  553.             if (count(explode("<li>", $list)) <= 6) if (isset($rs[$_REQUEST['p']]['data']['attic'])) $list .= "<li>Attic</li>";
  554.             if (count(explode("<li>", $list)) <= 6) if (isset($rs[$_REQUEST['p']]['data']['cellar'])) $list .= "<li>Cellar</li>";
  555.            
  556.             echo $list;
  557.           ?>
  558.         </ul>
  559.       </div>
  560.       <div id='enquiry'><a href='contact?subject=<?=urlencode($rs[$_REQUEST['p']]['address'][$_REQUEST['p']]['line_2']) ?>,+<?=urlencode($rs[$_REQUEST['p']]['address'][$_REQUEST['p']]['town']) ?>+(UPRN:+<?=$_REQUEST['p'] ?>)'><img src='img/enquire.png' alt='Submit enquiry'></a><br>or contact us on<br><strong>01225 442020</strong></div>
  561.       <?=$rs[$_REQUEST['p']]['description'] ?>
  562.       <div class='clear'><!-- &nbsp; --></div>
  563.     </div>
  564.    
  565.     <div id='floorplans'><h3>Enlarge Floorplans:<br><?= (file_exists("img/properties/".$_REQUEST['p']."/floorplan.jpg")?"<a href='img/properties/".$_REQUEST['p']."/floorplan.jpg' target='_new'><img src='img/properties/".$_REQUEST['p']."/floorplan_thumb.png' alt='Floorplans'></a>":"") ?></h3></div>
  566.     <div class='clear'><!-- &nbsp; --></div>
  567.  
  568.     <?php
  569.     /* End Property Information Page */
  570.   } else {
  571.     if (isset($_REQUEST['del'])) {
  572.       db::run("
  573.        DELETE FROM pr_property
  574.        WHERE id = '".db::escape($_REQUEST['id'])."'
  575.      ");
  576.     }
  577.     include("header.php");
  578.     $rs = db::getAll("
  579.      SELECT
  580.        pr.id as pr_id, pr.price as price, pr.status, a.line_1 as line_1, a.line_2 as line_2, a.town as town
  581.      FROM pr_property pr
  582.      LEFT JOIN a_address a ON
  583.        a.pr_id = pr.id
  584.      WHERE pr.international='1'
  585.        
  586.      ORDER BY price DESC
  587.    ");
  588.     echo "<h3>Current Property List</h3><table class='property_list' style='margin-bottom: 10px'>";
  589.     foreach ($rs as $r) {
  590.       echo "<tr>";
  591.       echo "<td>£".number_format($r['price'])."</td>";
  592.       echo "<td><a href='properties?add&id=".$r['pr_id']."'>Edit</a></td>";
  593.       echo "<td><a href='properties?del&id=".$r['pr_id']."' onclick='return confirm(\"Are you sure you wish to delete this property?\")'>Delete</a></td>";
  594.       echo "<td>".(!$r['status'] ? "<strike>" : "")."<a href='property?p=".$r['pr_id']."'>".$r['line_1']." ".$r['line_2'].", ".$r['town']."</a>".(!$r['status'] ? "</strike>" : "")."</td>";
  595.       echo "</tr>";
  596.     }
  597.     echo "</table>";
  598.     echo "<button onclick='window.location=\"?add\"'>Add New</button>";
  599.   }
  600. }
  601. echo "<div class='clear'><!-- &nbsp; --></div>";
  602. include("footer.php");
  603. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement