OSDN Git Service

Model::Tags: fix error message in add()
[newslash/newslash.git] / src / newslash_web / lib / Newslash / Model / Tags.pm
index 010a2c6..06f77cb 100644 (file)
@@ -112,7 +112,7 @@ sub add {
     my $tagname_id = $params->{tagname_id};
 
     if (!$globj_id) {
-        $self->set_error("no globj_id", 1);
+        $self->last_error("no globj_id");
         return;
     }
 
@@ -127,6 +127,7 @@ sub add {
     }
 
     if (!$tagname_id) {
+        $self->last_error("no tagname id");
         return;
     }
 
@@ -203,22 +204,27 @@ sub set {
     my $self = shift;
     return if $self->check_readonly;
     my $params = {@_};
-    my $globj_id = $params->{globj_id};
+    my $globj_id = $params->{globj_id} || $params->{globjid};
 
     if (!$globj_id) {
         $self->set_error("no globj_id", 1);
         return;
     }
+    my $tag_names = $params->{names} || $params->{tagnames} || $params->{tag_names};
 
-    if (!$params->{names}) {
-        $self->set_error("no names given", 1);
-        return;
+
+    if (!$tag_names) {
+        if (!$params->{name} && !$params->{tagname} && !$params->{tag_name}) {
+            $self->set_error("no names given", 1);
+            return;
+        }
+        $tag_names = [$params->{name} || $params->{tagname} || $params->{tag_name}];
     }
 
     my $uid = $params->{uid} || 1;
     my $private = $params->{private} ? "yes" : "no";
     my $active = defined $params->{active} ? $params->{active} : 1;
-    my $tagname_value_of = $self->select_tagnames(tagnames => $params->{names});
+    my $tagname_value_of = $self->select_tagnames(tagnames => $tag_names);
 
     # get tags for globj_id
     my $existing_tags = $self->select(globjid => $globj_id,
@@ -228,7 +234,7 @@ sub set {
     # create tagname
     my @ids_to_add;
     my @ids;
-    for my $name (@{$params->{names}}) {
+    for my $name (@$tag_names) {
         my $tagname_id;
         if (!$tagname_value_of->{$name}) {
             $tagname_id = $self->create(tagname => $name);
@@ -319,6 +325,8 @@ sub select {
                  uid => "tags.uid",
                  private => "tags.private",
                  is_active => "tags.is_active",
+                 tagname => "tagnames.tagname",
+                 tag_name => "tagnames.tagname",
                };
     my $datetime_keys = { created_at => "tags.created_at",
                           inactivated => "tags.inactivated",
@@ -367,6 +375,9 @@ sub select_tagnames {
     my $self = shift;
     my $params = {@_};
 
+    $params->{tagname} ||= $params->{tag_name};
+    $params->{tagnames} ||= $params->{tag_names};
+
     if ($params->{tagname}) {
         my $sql = "SELECT * FROM tagnames WHERE tagname = ?";
         my $dbh = $self->connect_db;