public function execute() { $photo_id = waRequest::get('photo_id', null, waRequest::TYPE_INT); $size = waRequest::get('size', null, waRequest::TYPE_STRING); $album = null; $photo_model = new photosPhotoModel(); $photo = $photo_model->getById($photo_id); if (!$photo) { throw new waException(_w("Unknown photo")); } $photo['frontend_link'] = photosFrontendPhoto::getLink($photo, $album); $sizes = $this->getConfig()->getSizes(); $contexts = array(); foreach ($sizes as $sz) { $contexts[$sz]['html'] = photosPhoto::getEmbedImgHtml($photo, $sz); $contexts[$sz]['url'] = photosPhoto::getPhotoUrl($photo, $sz, true); } if (!$size || !isset($contexts[$size])) { $size = $sizes[0]; } $domains = photosPhoto::getDomains(null, $photo); if (count($domains) <= 1) { $domains = array(); } $this->view->assign('photo', $photo); $this->view->assign('sizes', $sizes); $this->view->assign('size', $size); $this->view->assign('contexts', $contexts); $this->view->assign('original_domain', wa()->getRootUrl(true)); $this->view->assign('domains', $domains); }
protected function save(waRequestFile $file, $data) { $id = $this->model->add($file, $data); if (!$id) { throw new waException(_w("Save error")); } $photo = $this->model->getById($id); $parent_id = (int) waRequest::post('parent_id'); if ((int) waRequest::post('parent_id')) { $this->model->appendToStack($parent_id, array($id)); } return array('name' => $file->name, 'type' => $file->type, 'size' => $file->size, 'thumbnail_url' => photosPhoto::getPhotoUrl($photo, photosPhoto::getThumbPhotoSize()), 'url' => '#/photo/' . $id . '/'); }
protected function save(waRequestFile $file, $data = array()) { wa('photos'); $photo_model = new photosPhotoModel(); $data['groups'] = array(); $data['app_id'] = 'blog'; $data['hash'] = ''; $id = $photo_model->add($file, $data); if (!$id) { throw new waException(_w("Save error")); } $photo = $photo_model->getById($id); return array('id' => $id, 'photo' => $photo, 'name' => $file->name, 'type' => $file->type, 'size' => $file->size, 'url' => photosPhoto::getPhotoUrl($photo, null, !!waRequest::get('absolute')), 'thumbnail_url' => photosPhoto::getPhotoUrl($photo, photosPhoto::getThumbPhotoSize(), !!waRequest::get('absolute'))); }
public static function getPhotoCrop($photo_id) { static $photos = array(); static $photo_model = null; $photo_model = !is_null($photo_model) ? $photo_model : new photosPhotoModel(); if (!isset($photos[$photo_id])) { $photo = $photo_model->getById($photo_id); $photos[$photo_id] = photosPhoto::getPhotoUrl($photo, photosPhoto::getCropPhotoSize()); } return $photos[$photo_id]; }
public static function getEmbedImgHtml($photo, $size, $attributes = array(), $style = true) { if ($photo['width'] && $photo['height']) { $real_sizes = photosPhoto::getRealSizesOfThumb($photo, $size); if ($real_sizes && $real_sizes['width'] && $real_sizes['height'] && $style) { $attributes['style'] = !empty($attributes['style']) ? $attributes['style'] : ''; $attributes['style'] .= 'width: ' . (int) $real_sizes['width'] . 'px; height: ' . (int) $real_sizes['height'] . 'px; '; $attributes['width'] = (int) $real_sizes['width']; $attributes['height'] = (int) $real_sizes['height']; } } if (!isset($attributes['alt'])) { $attributes['alt'] = ''; } $photo['src'] = photosPhoto::getPhotoUrl($photo, $size, true); if ($photo['edit_datetime']) { $photo['src'] .= '?' . strtotime($photo['edit_datetime']); } $attr = ''; foreach ($attributes as $name => $value) { if (preg_match('/^%(.+)%$/', $value, $matches) && isset($photo[$matches[1]])) { $value = $photo[$matches[1]]; } $value = htmlentities($value, ENT_QUOTES, 'utf-8'); $attr .= $name . '="' . $value . '" '; } return "<img src=\"{$photo['src']}\" {$attr}>"; // use everywhere only one type of quotes }
protected function save(waRequestFile $file) { // check image if (!($image = $file->waImage())) { throw new waException(_w('Incorrect image')); } $exif_data = photosExif::getInfo($file->tmp_name); $image_changed = false; if (!empty($exif_data['Orientation'])) { $image_changed = $this->correctOrientation($exif_data['Orientation'], $image); } /** * Extend upload proccess * Make extra workup * @event photo_upload */ $event = wa()->event('photo_upload', $image); if ($event && !$image_changed) { foreach ($event as $plugin_id => $result) { if ($result) { $image_changed = true; break; } } } $data = array('name' => preg_replace('/\\.[^\\.]+$/', '', basename($file->name)), 'ext' => $file->extension, 'size' => $file->size, 'type' => $image->type, 'width' => $image->width, 'height' => $image->height, 'contact_id' => $this->getUser()->getId(), 'status' => $this->status, 'upload_datetime' => date('Y-m-d H:i:s')); if ($this->status <= 0) { $data['hash'] = md5(uniqid(time(), true)); } $photo_id = $data['id'] = $this->model->insert($data); if (!$photo_id) { throw new waException(_w('Database error')); } // update url $url = $this->generateUrl($data['name'], $photo_id); $this->model->updateById($photo_id, array('url' => $url)); // check rigths to upload folder $photo_path = photosPhoto::getPhotoPath($data); if (file_exists($photo_path) && !is_writable($photo_path) || !file_exists($photo_path) && !waFiles::create($photo_path)) { $this->model->deleteById($photo_id); throw new waException(sprintf(_w("The insufficient file write permissions for the %s folder."), substr($photo_path, strlen($this->getConfig()->getRootPath())))); } if ($image_changed) { $image->save($photo_path); // save original if ($this->getConfig()->getOption('save_original')) { $original_file = photosPhoto::getOriginalPhotoPath($photo_path); $file->moveTo($original_file); } } else { $file->moveTo($photo_path); } unset($image); // free variable // add to album if ($photo_id && $this->album_id) { $album_photos_model = new photosAlbumPhotosModel(); // update note if album is empty and note is yet null $r = $album_photos_model->getByField('album_id', $this->album_id); if (!$r) { $album_model = new photosAlbumModel(); $sql = "UPDATE " . $album_model->getTableName() . " SET note = IFNULL(note, s:note) WHERE id = i:album_id"; $time = !empty($exif_data['DateTimeOriginal']) ? strtotime($exif_data['DateTimeOriginal']) : time(); $album_model->query($sql, array('note' => mb_strtolower(_ws(date('F', $time))) . ' ' . _ws(date('Y', $time)), 'album_id' => $this->album_id)); } // add to album iteself $sort = (int) $album_photos_model->query("SELECT sort + 1 AS sort FROM " . $album_photos_model->getTableName() . " WHERE album_id = i:album_id ORDER BY sort DESC LIMIT 1", array('album_id' => $this->album_id))->fetchField('sort'); $album_photos_model->insert(array('photo_id' => $photo_id, 'album_id' => $this->album_id, 'sort' => $sort)); } // save rights for groups if ($this->groups) { $rights_model = new photosPhotoRightsModel(); $rights_model->multiInsert(array('photo_id' => $photo_id, 'group_id' => $this->groups)); } // save exif data if (!empty($exif_data)) { $exif_model = new photosPhotoExifModel(); $exif_model->save($photo_id, $exif_data); } $sizes = $this->getConfig()->getSizes(); photosPhoto::generateThumbs($data, $sizes); return array('name' => $file->name, 'type' => $file->type, 'size' => $file->size, 'thumbnail_url' => photosPhoto::getPhotoUrl($data, photosPhoto::getThumbPhotoSize()), 'url' => '#/photo/' . $photo_id . '/'); }