Exemplo n.º 1
0
 /**
  *
  * @param Annotation $annotation
  * @param Object $data
  * @param String $callback
  */
 private function _setup_annotation(&$annotation, $data)
 {
     //$this->output->enable_profiler(TRUE);
     $url = $this->url;
     $user = $this->user;
     $auth = $this->authorize_manager;
     //設定標註細節
     //test_msg('設定標註細節');
     //type
     if (isset($data->type)) {
         if (is_string($data->type)) {
             $data->type = trim($data->type);
             if ($data->type !== '') {
                 $data->type = urldecode($data->type);
             } else {
                 //如果是空白的話,則視為自訂
                 $data->type = 7;
             }
         }
         $annotation->set_type($data->type);
     }
     //note
     if (isset($data->note) && $data->note != '') {
         $note = $data->note;
         if (is_string($note)) {
             $note = urldecode($note);
         }
         $annotation->set_note($note);
     } else {
         $note = $annotation->get_note();
         if (isset($note) && $note !== '') {
             $annotation->set_note(NULL);
         }
     }
     if (isset($data->image_spot_position)) {
         //test_msg("image_spot_position");
         $annotation->set_feature_image_spot_position($data->image_spot_position);
         //test_msg("image_spot_position 完成");
     }
     //        //設定respond
     //        //test_msg('設定respond');
     //topic
     //            if (isset($data->topic))
     //            {
     //                //理論上topic只會有一個,並設定他的ID
     //                $topic_id = $data->topic->annotation_id;
     //                $annotation->set_respond_to_topic($topic_id);
     //            }
     //
     //            //respond_coll
     //            if (isset($data->respond_to_coll))
     //            {
     //                $respond_to_annotations = array();
     //                foreach ($data->respond_to_coll AS $respond_to)
     //                {
     //                    $respond_to_annotation_id = $respond_to->annotation_id;
     //                    $respond_to_annotation = new Annotation($respond_to_annotation_id);
     //                    $respond_to_annotations[] = $respond_to_annotation;
     //                }
     //                $annotation->set_respond_to_coll($respond_to_annotations);
     //            }
     //-----------------------
     //設定policy
     //test_msg('設定policy');
     $policy_type = 1;
     if (isset($data->policy_type)) {
         $policy_type = $data->policy_type;
     }
     // 1    public
     // 2    private    private特別是指只有自己能閱讀
     // 3    share
     $share_user_coll = NULL;
     if ($policy_type === 1) {
         //什麼都不用作
     } else {
         if ($policy_type === 2) {
             $share_user_coll = array($user);
         } else {
             if ($policy_type === 3) {
                 $share_list = $data->share_list;
                 $share_user_coll = array();
                 foreach ($share_list as $share_user_data) {
                     $share_user_id = $share_user_data->id;
                     $share_user = new User($share_user_id);
                     array_push($share_user_coll, $share_user);
                 }
             }
         }
     }
     $this->load->library('policy/Authorize_manager');
     $ACTION_ANNOTATION_READ = 5;
     $auth->set_resource($annotation);
     if (is_array($share_user_coll)) {
         foreach ($share_user_coll as $share_user) {
             //在這邊為該$annotation設定policy readable
             $auth->policy_add_actor($ACTION_ANNOTATION_READ, $share_user);
         }
     } else {
         //清除該$annotation的policy
         $auth->policy_remove_actor($ACTION_ANNOTATION_READ);
     }
     //-------------------
     //回傳標註建立的ID跟timestamp
     //test_msg("更新前");
     $annotation->update();
     //test_msg("更新後");
     $return_data = array('annotation_id' => $annotation->get_id(), 'timestamp' => $annotation->get_update_epoch(), 'nav' => $this->annotation_getter->parse_navigation_level($annotation->get_score(0)->get_score()));
     /*
     else
     {
         $topic_annotation = $annotation->get_topic();
         $this->_setup_scores_recommend($topic_annotation);
     }
     */
     set_ignore_authorize(false);
     // 寫入資料庫
     context_complete();
     return $return_data;
 }
Exemplo n.º 2
0
 private function _load_nav()
 {
     $data = $this->annotation_getter->navigation();
     return $data;
 }