id = $id; } /** * @return int */ public function getId() { return $this->id; } /** * @param int $id * @return Deal */ public function setId($id) { $this->id = $id; return $this; } /** * @return int */ public function getCategory() { return $this->category; } /** * @param int $category * @return Deal */ public function setCategory($category) { $this->category = $category; return $this; } /** * @return string */ public function getType() { return $this->type; } /** * @param string $type * @return Deal */ public function setType($type) { $this->type = $type; return $this; } /** * @return string */ public function getSubject() { return $this->subject; } /** * @param string $subject * @return Deal */ public function setSubject($subject) { $this->subject = $subject; return $this; } /** * @return string */ public function getBody() { return $this->body; } /** * @param string $body * @return Deal */ public function setBody($body) { $this->body = $body; return $this; } /** * @return float */ public function getPrice() { return $this->price; } /** * @param float $price * @return Deal */ public function setPrice($price) { $this->price = $price; return $this; } /** * @return mixed */ public function getImage0() { return $this->image0; } /** * @param mixed $image0 * @return Deal */ public function setImage0($image0) { $this->image0 = $image0; return $this; } /** * @return mixed */ public function getImage1() { return $this->image1; } /** * @param mixed $image1 * @return Deal */ public function setImage1($image1) { $this->image1 = $image1; return $this; } /** * @return mixed */ public function getImage2() { return $this->image2; } /** * @param mixed $image2 * @return Deal */ public function setImage2($image2) { $this->image2 = $image2; return $this; } /** * @return \DateTime */ public function getDateCreation() { return $this->datecreation; } /** * @param array|\DateTime|string $datecreation * @return Deal */ public function setDateCreation($datecreation) { if (is_array($datecreation)) { $datecreation = new \DateTime($datecreation['date']); } elseif (is_string($datecreation)) { $datecreation = new \DateTime($datecreation); } $this->datecreation = $datecreation; return $this; } /** * @return string */ public function getPath() { return $this->path; } /** * @param string $path * @return Deal */ public function setPath($path) { $this->path = $path; return $this; } /** * @return Account */ public function getAccount() { return $this->account; } /** * @param Account $account * @return Deal */ public function setAccount($account) { $this->account = $account; return $this; } private function toJSON() { $reflection = new \ReflectionClass($this); $props = $reflection->getProperties(\ReflectionProperty::IS_PROTECTED); $json = []; foreach ($props as $prop) { $method = sprintf('get%s', ucfirst($prop->getName())); $json[$prop->getName()] = $this->$method(); } return \json_encode($json, JSON_UNESCAPED_UNICODE); } /** * @param string $dir * * @return bool */ public function save($dir) { try { $save_dir = sprintf('%s/%s', $dir, $this->id); if (!is_dir($save_dir)) { mkdir($save_dir); } file_put_contents(sprintf('%s/%s', $save_dir, 'data.json'), $this->toJSON()); foreach (range(0, 2) as $i) { $image = sprintf('image%u', $i); if (empty($this->$image)) { break; } $ch = curl_init($this->$image); $fp = fopen(sprintf('%s/%s.jpg', $save_dir, $image), 'wb'); curl_setopt($ch, CURLOPT_FILE, $fp); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_exec($ch); curl_close($ch); fclose($fp); } } catch (\Exception $e) { return false; } return true; } /** * @param Account $account * @param string $url * * @return Deal */ public static function fromURL(Account $account, $url) { $client = $account->getClient(); $crawler = $client->request('GET', $url); preg_match('/