_get_view(); } public function converter() { print $this->_get_converter_view(); } public function tagsmaintanance($delete) { print $this->_get_tagsmaintanance_view($delete); } public function converthandler() { access::verify_csrf(); $form = $this->_get_converter_form(); if ($form->validate()) { //Load the source tag $sourcetag = ORM::factory("tag", $form->sourcetag->value); if (!$sourcetag->loaded()) { message::error(t("The specified tag could not be found")); url::redirect("admin/photoannotation/converter"); } //Load the target user $targetuser = ORM::factory("user", $form->targetuser->value); if (!$targetuser->loaded()) { message::error(t("The specified person could not be found")); url::redirect("admin/photoannotation/converter"); } //Load all existing tag annotations $tag_annotations = ORM::factory("items_face")->where("tag_id", "=", $sourcetag->id)->find_all(); //Disable user notifications so that users don't get flooded with mails $old_notification_setting = module::get_var("photoannotation", "nonotifications", false); module::set_var("photoannotation", "nonotifications", true, true); foreach ($tag_annotations as $tag_annotation) { photoannotation::saveuser($targetuser->id, $tag_annotation->item_id, $tag_annotation->x1, $tag_annotation->y1, $tag_annotation->x2, $tag_annotation->y2, $tag_annotation->description); //Delete the old annotation $tag_annotation->delete(); } //Remove and delete old tag if ($form->deletetag->value) { $this->_remove_tag($sourcetag, true); } elseif ($form->removetag->value) { $this->_remove_tag($sourcetag, false); } module::set_var("photoannotation", "nonotifications", $old_notification_setting, true); message::success(t("%count tag annotations (%tagname) have been converted to user annotations (%username)", array("count" => count($tag_annotations), "tagname" => $sourcetag->name, "username" => $targetuser->display_name()))); url::redirect("admin/photoannotation/converter"); } print $this->_get_converter_view($form); } private function _remove_tag($tag, $delete) { $name = $tag->name; db::build()->delete("items_tags")->where("tag_id", "=", $tag->id)->execute(); if ($delete) { $tag->delete(); } } public function handler() { access::verify_csrf(); $form = $this->_get_form(); if ($form->validate()) { module::set_var( "photoannotation", "noborder", $form->hoverphoto->noborder->value, true); module::set_var( "photoannotation", "bordercolor", $form->hoverphoto->bordercolor->value); module::set_var( "photoannotation", "noclickablehover", $form->hoverclickable->noclickablehover->value, true); module::set_var( "photoannotation", "clickablehovercolor", $form->hoverclickable->clickablehovercolor->value); module::set_var( "photoannotation", "nohover", $form->hovernoclickable->nohover->value, true); module::set_var( "photoannotation", "hovercolor", $form->hovernoclickable->hovercolor->value); module::set_var( "photoannotation", "showusers", $form->legendsettings->showusers->value, true); module::set_var( "photoannotation", "showfaces", $form->legendsettings->showfaces->value, true); module::set_var( "photoannotation", "shownotes", $form->legendsettings->shownotes->value, true); module::set_var( "photoannotation", "fullname", $form->legendsettings->fullname->value, true); module::set_var( "photoannotation", "nonotifications", $form->notifications->nonotifications->value, true); module::set_var( "photoannotation", "notificationoptout", $form->notifications->notificationoptout->value, true); module::set_var( "photoannotation", "allowguestsearch", $form->notifications->allowguestsearch->value, true); module::set_var( "photoannotation", "newtagsubject", strip_tags($form->newtagmail->newtagsubject->value)); module::set_var( "photoannotation", "newtagbody", strip_tags($form->newtagmail->newtagbody->value)); module::set_var( "photoannotation", "newcommentsubject", strip_tags($form->newcommentmail->newcommentsubject->value)); module::set_var( "photoannotation", "newcommentbody", strip_tags($form->newcommentmail->newcommentbody->value)); module::set_var( "photoannotation", "updatedcommentsubject", strip_tags($form->updatedcommentmail->updatedcommentsubject->value)); module::set_var( "photoannotation", "updatedcommentbody", strip_tags($form->updatedcommentmail->updatedcommentbody->value)); module::set_var( "photoannotation", "onuserdelete", $form->onuserdelete->onuserdelete->value); message::success(t("Your settings have been saved.")); url::redirect("admin/photoannotation"); } print $this->_get_view($form); } private function _get_view($form=null) { $v = new Admin_View("admin.html"); $v->page_title = t("Photo annotation"); $v->content = new View("admin_photoannotation.html"); $v->content->form = empty($form) ? $this->_get_form() : $form; return $v; } private function _get_converter_view($form=null) { $v = new Admin_View("admin.html"); $v->page_title = t("Photo annotation converter"); $v->content = new View("admin_photoannotation_converter.html"); $v->content->form = empty($form) ? $this->_get_converter_form() : $form; return $v; } private function _get_tagsmaintanance_view($delete = false) { $tag_orpanes_count = 0; $user_orphanes_count = 0; $item_orphanes_count = 0; $tag_orpanes_deleted = 0; $user_orphanes_deleted = 0; $item_orphanes_deleted = 0; //check all tag annotations $tag_annotations = ORM::factory("items_face")->find_all(); foreach ($tag_annotations as $tag_annotation) { $check_tag = ORM::factory("tag")->where("id", "=", $tag_annotation->tag_id)->find(); if (!$check_tag->loaded()) { if ($delete) { $tag_annotation->delete(); $tag_orpanes_deleted++; } else { $tag_orpanes_count++; } } else { $check_item = ORM::factory("item")->where("id", "=", $tag_annotation->item_id)->find(); if (!$check_item->loaded()) { if ($delete) { $tag_annotation->delete(); $item_orpanes_deleted++; } else { $item_orpanes_count++; } } } } //check all user annotations $user_annotations = ORM::factory("items_user")->find_all(); foreach ($user_annotations as $user_annotation) { $check_user = ORM::factory("user")->where("id", "=", $user_annotation->user_id)->find(); if (!$check_user->loaded()) { if ($delete) { $user_annotation->delete(); $user_orpanes_deleted++; } else { $user_orphanes_count++; } } else { $check_item = ORM::factory("item")->where("id", "=", $user_annotation->item_id)->find(); if (!$check_item->loaded()) { if ($delete) { $user_annotation->delete(); $item_orpanes_deleted++; } else { $item_orpanes_count++; } } } } //check all user annotations $note_annotations = ORM::factory("items_note")->find_all(); foreach ($note_annotations as $note_annotation) { $check_item = ORM::factory("item")->where("id", "=", $note_annotation->item_id)->find(); if (!$check_item->loaded()) { if ($delete) { $note_annotation->delete(); $item_orpanes_deleted++; } else { $item_orpanes_count++; } } } $v = new Admin_View("admin.html"); $v->page_title = t("Photo annotation tags maintanance"); $v->content = new View("admin_photoannotation_tagsmaintanance.html"); $v->content->tag_orpanes_count = $tag_orpanes_count; $v->content->user_orphanes_count = $user_orphanes_count; $v->content->item_orphanes_count = $item_orphanes_count; $v->content->tag_orpanes_deleted = $tag_orpanes_deleted; $v->content->user_orphanes_deleted = $user_orphanes_deleted; $v->content->item_orphanes_deleted = $item_orphanes_deleted; $v->content->dodeletion = $delete; return $v; } private function _get_converter_form() { //get all tags $tags = ORM::factory("tag")->order_by("name", "ASC")->find_all(); foreach ($tags as $tag) { $tag_array[$tag->id] = $tag->name; } //get all users $users = ORM::factory("user")->order_by("name", "ASC")->find_all(); foreach ($users as $user) { $user_array[$user->id] = $user->display_name(); } $form = new Forge("admin/photoannotation/converthandler", "", "post", array("id" => "g-admin-form")); $form->dropdown("sourcetag")->label(t("Select tag")) ->options($tag_array); $form->dropdown("targetuser")->label(t("Select user")) ->options($user_array); $form->checkbox("deletetag")->label(t("Delete the tag after conversion.")); $form->checkbox("removetag")->label(t("Remove the tag from photos after conversion.")); $form->submit("submit")->value(t("Convert")); return $form; } private function _get_form() { if (module::is_active("comment")) { $comment_required = ""; } else { $comment_required = " (comment module required)"; } $form = new Forge("admin/photoannotation/handler", "", "post", array("id" => "g-admin-form")); $group = $form->group("hoverphoto")->label(t("Hovering over the photo")); $group->checkbox("noborder")->label(t("Don't show borders.")) ->checked(module::get_var("photoannotation", "noborder", false)); $group->input("bordercolor")->label(t('Border color')) ->value(module::get_var("photoannotation", "bordercolor", "000000")) ->rules("valid_alpha_numeric|length[6]"); $group = $form->group("hoverclickable")->label(t("Hovering over a clickable annotation")); $group->checkbox("noclickablehover")->label(t("Don't show borders.")) ->checked(module::get_var("photoannotation", "noclickablehover", false)); $group->input("clickablehovercolor")->label(t('Border color')) ->value(module::get_var("photoannotation", "clickablehovercolor", "00AD00")) ->rules("valid_alpha_numeric|length[6]"); $group = $form->group("hovernoclickable")->label(t("Hovering over a non-clickable annotation")); $group->checkbox("nohover")->label(t("Don't show borders.")) ->checked(module::get_var("photoannotation", "nohover", false)); $group->input("hovercolor")->label(t('Border color')) ->value(module::get_var("photoannotation", "hovercolor", "990000")) ->rules("valid_alpha_numeric|length[6]"); $group = $form->group("legendsettings")->label(t("Legend settings")); $group->checkbox("showusers")->label(t("Show user annotations below photo.")) ->checked(module::get_var("photoannotation", "showusers", false)); $group->checkbox("showfaces")->label(t("Show tag annotations below photo.")) ->checked(module::get_var("photoannotation", "showfaces", false)); $group->checkbox("shownotes")->label(t("Show note annotations below photo.")) ->checked(module::get_var("photoannotation", "shownotes", false)); $group->checkbox("fullname")->label(t("Show full name of a user instead of the username on annotations (username will be dispayed for users without a full name).")) ->checked(module::get_var("photoannotation", "fullname", false)); $group = $form->group("notifications")->label(t("Notification and people cloud settings")); $group->checkbox("nonotifications")->label(t("Disable user notifications.")) ->checked(module::get_var("photoannotation", "nonotifications", false)); $group->checkbox("notificationoptout")->label(t("Notify users by default (only applies to new users and user who have not saved their profile after installing this module).")) ->checked(module::get_var("photoannotation", "notificationoptout", false)); $group->checkbox("allowguestsearch")->label(t("Show people cloud and allow people search for guests.")) ->checked(module::get_var("photoannotation", "allowguestsearch", false)); $group = $form->group("newtagmail")->label(t("Customize the mail sent to users when a user annotation is created")); $group->input("newtagsubject")->label(t("Subject")) ->value(module::get_var("photoannotation", "newtagsubject", "Someone tagged a photo of you")); $group->textarea("newtagbody")->label(t("Body (allowed placeholders: %name = name of the recipient, %url = link to the item that was tagged)")) ->value(module::get_var("photoannotation", "newtagbody", "Hello %name, please visit %url to view the photo.")); $group = $form->group("newcommentmail")->label(t("Customize the mail sent to users when a comment is added". $comment_required)); $group->input("newcommentsubject")->label(t("Subject")) ->value(module::get_var("photoannotation", "newcommentsubject", "Someone added a comment to photo of you")); $group->textarea("newcommentbody")->label(t("Body (allowed placeholders: %name = name of the recipient, %url = link to the item that was commented on)")) ->value(module::get_var("photoannotation", "newcommentbody", "Hello %name, please visit %url to read the comment.")); $group = $form->group("updatedcommentmail")->label(t("Customize the mail sent to users when a comment is updated". $comment_required)); $group->input("updatedcommentsubject")->label(t("Subject")) ->value(module::get_var("photoannotation", "updatedcommentsubject", "Someone updated a comment to photo of you")); $group->textarea("updatedcommentbody")->label(t("Body (allowed placeholders: %name = name of the recipient, %url = link to the item that was commented on)")) ->value(module::get_var("photoannotation", "updatedcommentbody", "Hello %name, please visit %url to read the comment.")); $group = $form->group("onuserdelete")->label(t("Auto conversion settings")); $group->dropdown("onuserdelete")->label(t("When deleting a user do the following with all annotations associated with this user")) ->options(array("0" => t("Delete annotation"), "1" => t("Convert to tag annotation"), "2" => t("Convert to note annotation"))) ->selected(module::get_var("photoannotation", "onuserdelete", "0")); $form->submit("submit")->value(t("Save")); return $form; } }