public function uploadProductPhotos($images, $id_product) { $product = $this->database->findById('product', $id_product); if ($product) { // projedu vsechny fotografie foreach ($images as $img) { // priprava pro vlozeni do db $image = $this->prepareImageForUpload($img); $values['name'] = $this->generateHash(); $values['extension'] = $image['extension']; $values['id_product'] = $product->id; $values['added'] = $this->now; // upravy obrazku, zmena velikosti a dostreni $img_tmp = Nette\Utils\Image::fromFile($img); if ($img_tmp->width > 800) { $img_tmp->resize(800, null); } // w = 800px, h = auto $img_tmp->sharpen(); // doostreni obrazku // vlozeni fotografie do db $row = $this->database->insert('image', $values); // upload fotografie na server $img->move($this->root_img_dir . 'products/' . $product->id . '_' . $row->id . '_' . $values['name'] . '.' . $values['extension']); } } }
public function nemovitostFormSucceeded($button) { $values = $button->getForm()->getValues(true); $id = (int) $this->getParameter('id'); // aktualni datum a cas, potrebuji pro presmerovani a vkladani public_timu pri insertu $now = date('Y-m-d H:i:s'); // pokud nemovitost prechazi ze stavu ne-public do public if ($values['was_public'] == false && $values['is_public'] == true) { $values['public_date'] = $now; // zmenim datum publikovani (razena bude tedy jako nove pridana) unset($values['was_public']); } else { unset($values['was_public']); } if ($id) { $this->database->findById('nemovitost', $id)->update($values); $this->flashMessage('Nemovitost byla upravena.'); // pri uprave presmeruji na detail nemovitosti $this->redirect('DetailNemovitosti', $id); } else { $values['public_date'] = $now; // pri vkladani datumu k nove nemovitosti na stavu public nezalezi $this->database->insert('nemovitost', $values); $this->flashMessage('Nemovitost byla vložena.'); // pri vkladani ne-public premeruji na ne-public vypis if ($values['is_public'] == 0) { $this->redirect('vypisNepublikovanych'); } else { // pri vkladani public nemovitost presmeruji na vypis switch ($values['mod']) { case 1: // aukce if ($values['datum_zacatek'] > $now) { $this->redirect('vypis', 1); // drazba nemovitosti nezacala } elseif ($values['datum_konec'] < $now) { $this->redirect('vypis', 2); // drazba nemovitosti skoncila } else { $this->redirect('vypis', 3); // drazba nemovitosti probiha } break; case 2: // prodej $this->redirect('vypis', 4); break; case 3: // prodane $this->redirect('vypis', 5); break; } } } }
public function endOfAuction($product) { // priprava na posilani emailu $email_manager = new Model\Email($this->database); // celkova cena $cost = $product->cost + $product->related('bid.id_product')->sum('deposit'); /* --- vyrozumneni pro vyherce aukce --- */ $winners_bid = $this->database->findAll('bid')->where('id_product', $product->id)->order('id DESC')->fetch(); // priprava alertu pro viteze aukce $val['id_user'] = $winners_bid->id_user; $val['id_type_alert'] = 1; $val['added'] = $this->now; $val['visited'] = 0; $val['body'] = 'Vyhráli jste aukci produktu ' . $product->name . ' (id ' . $product->id . '). Cena produktu činí ' . number_format($cost) . ' Kč. Pro další informace k předání produktu kontaktujte ' . $product->user->name . ' (tel: ' . $product->user->phone . ', email: ' . $product->user->email . ').'; // vlozeni alertu pro viteze do db $row = $this->database->insert('alert', $val); // a poslani emailu vitezi aukce $email_manager->sendEmail($winners_bid->user->email, 'end_auction_winner', $product, $winners_bid, $cost, $row->type_alert->name); /* --- vyrozumneni pro zbyle ucastniky aukce --- */ $bids = $this->database->findAll('bid')->where('id_product', $product->id)->group('id_user'); foreach ($bids as $bid) { if ($bid->id_user != $winners_bid->id_user) { // vitez aukce uz informovan byl // uprava alertu $val['id_user'] = $bid->id_user; $val['body'] = 'Aukci produktu ' . $product->name . ' (id ' . $product->id . '), do které jste zasáhli, vyhrál jiný účastník.'; // vlozeni do db $row = $this->database->insert('alert', $val); // a poslani emailu porazenym $email_manager->sendEmail($bid->user->email, 'end_auction_others', $product, $bid, $cost, $row->type_alert->name); } } /* --- vyrozumneni pro zadavatele aukce --- */ $val['id_user'] = $product->id_user; $val['body'] = 'Aukce produktu ' . $product->name . ' (id ' . $product->id . ') je u konce. Výherce aukce je ' . $winners_bid->user->name . ' (tel: ' . $winners_bid->user->phone . ', email: ' . $winners_bid->user->email . '), který produkt koupil za ' . number_format($cost) . ' Kč.'; // vlozeni do db $row = $this->database->insert('alert', $val); // a poslani emailu zadavateli $email_manager->sendEmail($product->user->email, 'end_auction_seller', $product, $winners_bid, $cost, $row->type_alert->name); }
public function uploadPhotoFormSucceeded($button) { $values = $button->getForm()->getValues(true); $id = (int) $this->getParameter('id'); $values['id_property'] = $id; $images = $values['img']; // ulozim si pole s obrazky do pomocne promene unset($values['img']); // unsetnu formularove pole s obrazky, abych mohl beztrestne vkladat data do db $citac = 0; foreach ($images as $img) { // operace pro nahrani fota k nemovitosti if ($img->isOk() && $img->isImage()) { // citac pouzivam k modifikaci nazvu, abych nenahral dve fotografie se stejnym timestampem // je jasne ze 100. uploadovana fotka nebude mit stejny timestamp jako prvni $citac++; if ($citac > 99) { $citac = 0; } $timestamp = date('YmdHis', time()); $typ = substr($img->getName(), -4); // umisteni fotografie ../id_nemovitosti/citac×tamp.typ $values['name'] = $citac . $timestamp . $typ; // pomoci nette si obrazek zmensim a ulozim na server j*z zmenseny, z duvodu setreni mista, neni duvod ukladat vetsi rozliseni nez vyuziji // kdybych se rozhodl, ze chci obr v plne velikosti, smazu radky az po $img->move a odkomentuji $img->move $img_tmp = Nette\Utils\Image::fromFile($img); // pokud nahravany obrazek presahuje velikosti 800px, tak ho upravim if ($img_tmp->width > 800) { $img_tmp->resize(800, null); } // w = 342px, h = auto $img_tmp->sharpen(); // doostreni obrazku if (!is_dir(WWW_DIR . "/images/auction/" . $id . "/")) { mkdir(WWW_DIR . "/images/auction/" . $id . "/", 0700); // vytvorení složky chmod(WWW_DIR . "/images/auction/" . $id . "/", 0777); // nastaveni atributu } $img_tmp->save(WWW_DIR . "/images/auction/" . $id . "/" . $values['name']); //$img->move(WWW_DIR . "/images/auction/". $id . "/" . $values['name']); $this->database->insert('photo', $values); } } $this->flashMessage('Fotografie byly nahrány.'); $this->redirect('Nemovitosti:detailNemovitosti', $id); }
public function prvniPrihozFormSucceeded($button) { $values = $button->getForm()->getValues(true); $values['datum_vkladu'] = date('Y-m-d H:i:s'); $values['vkladana_castka'] = 0; // prvni prihoz je nulovy, pouze se potvrdi zadana castka if ($values['pocet'] == $this->database->findAll('drazba')->where('id_nemovitost', $values['id_nemovitost'])->count('*')) { // pokud se shoduji pocty prihozu pri nacteni a tesne pred prihozenim, pak vse ok unset($values['pocet']); $this->database->insert('drazba', $values); $this->flashMessage('Podal(a) jste první nabídku.'); $this->redirect('Nemovitosti:detailNemovitosti', $values['id_nemovitost']); } else { $this->flashMessage('Znovu zvažte přihození, někdo před Vámi ještě navýšil cenu.'); $this->redirect('Aukce:prihodit', $values['id_nemovitost']); } }
public function addDur($values) { $this->database->insert('duration_auction', $values); }
public function uploadFileFormSucceeded($button) { $values = $button->getForm()->getValues(true); // nacteni potrebnych id $id = (int) $this->getParameter('id'); $file_id = (int) $this->getParameter('file_id'); // ulozeni id nemovitosti k souboru $values['id_property'] = $id; // smazu diakritiku a mezery nahradim pomlckou $values['hid_name'] = Strings::webalize($values['name'], NULL, FALSE); // pokud vytvrarim nove a mam povoleny upload, tak uploadovany soubor zpracuji if (!isset($file_id) || isset($file_id) && $file_id == 0) { // vytvorim si prom pro praci s uploadovanym souborem $file = $values['file']; unset($values['file']); // do db tuto promenou neukladam tak ji unsetnu } else { // pokud jsem v editovacim rezimu $file = $this->database->findById('file', $file_id); // pokud se mi nepodari najit soubor a nebo soubor nepatri nemovitosti, ze ktere se na ni snazi uzivatel dostat if (!$file || isset($file) && $file->id_property != $id) { $this->flashMessage('Požadovaný soubor není dostupný.'); $this->redirect('File:vypis', $id); } // prejmenuji soubor ve slozce $oldname = WWW_DIR . "/files/auction/" . $file->id_property . "/" . $file->hid_name . "-" . $file->timestamp . "." . $file->type; $newname = WWW_DIR . "/files/auction/" . $file->id_property . "/" . $values['hid_name'] . "-" . $file->timestamp . "." . $file->type; $rename = rename($oldname, $newname); if ($rename == true) { // pokud se zmena povedla, zmenim i nazev v db $file->update($values); $this->flashMessage('Soubor byl úspěšně přejmenován na "' . $file->name . '".'); $this->redirect('File:vypis', $id); } else { // pokud ne pouze uzivatele informuji $this->flashMessage('Soubor se nepodařilo přejmenovat.'); $this->redirect('File:vypis', $id); } } if ($file->isOK()) { /* Zjisteni a ulozeni typu */ // nactu si jmeno uploadovaneho souboru $tmp_file_name = $file->getName(); // rozdelim si nazev souboru dle tecek $tmp_file_name_separated = explode(".", $tmp_file_name); $c = count($tmp_file_name_separated) - 1; // zjistim velikost pole (odecitam jednicku, protoze php pocita pole od 0) // typ je schovan na konci $values['type'] = $tmp_file_name_separated[$c]; // presmerovani pokud se jedna o jiny soubor nez pdf if ($values['type'] != "pdf") { $this->flashMessage('Soubor "' . $values['name'] . '" se nepodařilo přidat. Přidávat lze pouze PDF soubory.'); $this->redirect('Nemovitosti:detailNemovitosti', $id); } // zjistim velikost souboru $values['size'] = round($file->getSize() / (1024 * 1024), 2); // prepocet na MB /* Priprava pro upload */ // ulozim si timestamp abych zarucil unikatnost odkazu $values['timestamp'] = date('YmdHis', time()); // koncova destinace $destination = $values['hid_name'] . "-" . $values['timestamp'] . "." . $values['type']; /* Upload */ $file->move(WWW_DIR . "/files/auction/" . $id . "/" . $destination); // presun na server $this->database->insert('file', $values); // ulozeni do db // nastaveni flash zpravy a presmerovani po uspesnem vykonani $this->flashMessage('Soubor "' . $values['name'] . '" byl úspěšně nahrán.'); $this->redirect('Nemovitosti:detailNemovitosti', $id); } else { // nastaveni flash zpravy a presmerovani po neuspesnem vykonani $this->flashMessage('Soubor se nepodařilo nahrát. Zkontrolujte prosím své připojení k internetu a opakujte akci.'); $this->redirect('Nemovitosti:detailNemovitosti', $id); } }
public function add($values) { $this->database->insert('category', $values); }