diff options
Diffstat (limited to 'modules/gallery/helpers/photo.php')
| -rw-r--r-- | modules/gallery/helpers/photo.php | 125 | 
1 files changed, 3 insertions, 122 deletions
| diff --git a/modules/gallery/helpers/photo.php b/modules/gallery/helpers/photo.php index 4e20e610..9bd277bc 100644 --- a/modules/gallery/helpers/photo.php +++ b/modules/gallery/helpers/photo.php @@ -24,138 +24,20 @@   * Note: by design, this class does not do any permission checking.   */  class photo_Core { -  /** -   * Create a new photo. -   * @param integer $parent parent album -   * @param string  $filename path to the photo file on disk -   * @param string  $name the filename to use for this photo in the album -   * @param integer $title the title of the new photo -   * @param string  $description (optional) the longer description of this photo -   * @param string  $slug (optional) the url component for this photo -   * @return Item_Model -   */ -  static function create($parent, $filename, $name, $title, -                         $description=null, $owner_id=null, $slug=null) { -    if (!$parent->loaded() || !$parent->is_album()) { -      throw new Exception("@todo INVALID_PARENT"); -    } - -    if (!is_file($filename)) { -      throw new Exception("@todo MISSING_IMAGE_FILE"); -    } - -    if (strpos($name, "/")) { -      throw new Exception("@todo NAME_CANNOT_CONTAIN_SLASH"); -    } - -    // We don't allow trailing periods as a security measure -    // ref: http://dev.kohanaphp.com/issues/684 -    if (rtrim($name, ".") != $name) { -      throw new Exception("@todo NAME_CANNOT_END_IN_PERIOD"); -    } - -    if (filesize($filename) == 0) { -      throw new Exception("@todo EMPTY_INPUT_FILE"); -    } - -    $image_info = getimagesize($filename); - -    // Force an extension onto the name -    $pi = pathinfo($filename); -    if (empty($pi["extension"])) { -      $pi["extension"] = image_type_to_extension($image_info[2], false); -      $name .= "." . $pi["extension"]; -    } - -    if (empty($slug)) { -      $slug = item::convert_filename_to_slug($name); -    } - -    $photo = ORM::factory("item"); -    $photo->type = "photo"; -    $photo->title = $title; -    $photo->description = $description; -    $photo->name = $name; -    $photo->owner_id = $owner_id ? $owner_id : identity::active_user()->id; -    $photo->width = $image_info[0]; -    $photo->height = $image_info[1]; -    $photo->mime_type = empty($image_info['mime']) ? "application/unknown" : $image_info['mime']; -    $photo->thumb_dirty = 1; -    $photo->resize_dirty = 1; -    $photo->sort_column = "weight"; -    $photo->slug = $slug; -    $photo->rand_key = ((float)mt_rand()) / (float)mt_getrandmax(); - -    // Randomize the name or slug if there's a conflict -    // @todo Improve this.  Random numbers are not user friendly -    while (ORM::factory("item") -           ->where("parent_id", "=", $parent->id) -           ->and_open() -           ->where("name", "=", $photo->name) -           ->or_where("slug", "=", $photo->slug) -           ->close() -           ->find()->id) { -      $rand = rand(); -      $photo->name = "{$name}.$rand.{$pi['extension']}"; -      $photo->slug = "{$slug}-$rand"; -    } - -    // This saves the photo -    $photo->add_to_parent($parent); - -    /* -     * If the thumb or resize already exists then rename it. We need to do this after the save -     * because the resize_path and thumb_path both call relative_path which caches the -     * path. Before add_to_parent the relative path will be incorrect. -     */ -    if (file_exists($photo->resize_path()) || -        file_exists($photo->thumb_path())) { -      $photo->name = $pi["filename"] . "-" . rand() . "." . $pi["extension"]; -      $photo->save(); -    } - -    copy($filename, $photo->file_path()); - -    // @todo: publish this from inside Item_Model::save() when we refactor to the point where -    // there's only one save() happening here. -    module::event("item_created", $photo); - -    // Build our thumbnail/resizes.  If we fail to build thumbnail/resize we assume that the image -    // is bad in some way and discard it. -    try { -      graphics::generate($photo); -    } catch (Exception $e) { -      $photo->delete(); -      throw $e; -    } - -    // If the parent has no cover item, make this it. -    if (access::can("edit", $parent) && $parent->album_cover_item_id == null)  { -      item::make_album_cover($photo); -    } - -    return $photo; -  } -    static function get_edit_form($photo) {      $form = new Forge("photos/update/$photo->id", "", "post", array("id" => "g-edit-photo-form"));      $form->hidden("from_id");      $group = $form->group("edit_item")->label(t("Edit Photo"));      $group->input("title")->label(t("Title"))->value($photo->title);      $group->textarea("description")->label(t("Description"))->value($photo->description); -    $group->input("filename")->label(t("Filename"))->value($photo->name) -      ->rules("required") -      ->error_messages( -        "name_conflict", t("There is already a movie, photo or album with this name")) -      ->callback("item::validate_no_slashes") +    $group->input("name")->label(t("Filename"))->value($photo->name) +      ->error_messages("conflict", t("There is already a movie, photo or album with this name"))        ->error_messages("no_slashes", t("The photo name can't contain a \"/\"")) -      ->callback("item::validate_no_trailing_period")        ->error_messages("no_trailing_period", t("The photo name can't end in \".\""))        ->error_messages("illegal_extension", t("You cannot change the filename extension"));      $group->input("slug")->label(t("Internet Address"))->value($photo->slug) -      ->callback("item::validate_url_safe")        ->error_messages( -        "slug_conflict", t("There is already a movie, photo or album with this internet address")) +        "conflict", t("There is already a movie, photo or album with this internet address"))        ->error_messages(          "not_url_safe",          t("The internet address should contain only letters, numbers, hyphens and underscores")); @@ -164,7 +46,6 @@ class photo_Core {      $group = $form->group("buttons")->label("");      $group->submit("")->value(t("Modify")); -    $form->add_rules_from(ORM::factory("item"));      return $form;    } | 
