Exemple #1
0
 /**
  * 作為靜態函數使用
  * @param KALSResource $resource
  * @param Action $action
  * @param KALSActor $actor
  * @return boolean
  */
 function auth($resource, $action, $actor)
 {
     $auth = new Authorize_manager();
     $auth->set_resource($resource);
     $auth->set_actor($actor);
     return $auth->allow($action);
 }
Exemple #2
0
 public function export_webpage_data($url)
 {
     $data = array();
     //$data['class'] = get_class($this);
     $data['annotation_id'] = $this->get_id();
     $note = $this->get_note();
     if (isset($note)) {
         $data['note'] = $this->get_note();
     }
     $data['user'] = $this->get_user()->export_simple_data();
     $data['type'] = $this->get_type()->export_data();
     $data['scope'] = $this->get_scopes()->export_webpage_data($url);
     $data['timestamp'] = $this->get_create_epoch();
     $respond_to_topic = $this->get_respond_to_topic();
     if (isset($respond_to_topic)) {
         $data['topic'] = $respond_to_topic->export_simple_data();
     }
     $respond_to_coll = $this->get_respond_to_coll();
     if (isset($respond_to_coll) && $respond_to_coll->length() > 0) {
         $data['respond_to_coll'] = $respond_to_coll->export_respond_to_data();
     }
     $current_user = get_context_user();
     $is_my_annotation = FALSE;
     if (isset($current_user) && $this->get_user()->equals($current_user)) {
         $is_my_annotation = TRUE;
     }
     //if ($this->is_respond() === FALSE)
     //{
     if (is_class($current_user, 'User') && $is_my_annotation === FALSE) {
         $data['is_like'] = $this->is_liked($current_user);
     }
     $data['like_count'] = $this->get_like_count();
     //}
     if ($is_my_annotation === TRUE) {
         $data['policy_type'] = 'public';
         $this->_CI_load('libraries', 'policy/Authorize_manager');
         $auth = new Authorize_manager();
         $auth->set_resource($this);
         $action = 5;
         $actors = $auth->get_actors($action);
         //test_msg($actors);
         if (count($actors) == 1 && $this->get_user()->equals($actors[0])) {
             $data['policy_type'] = 'private';
         } else {
             if (count($actors) > 0) {
                 $data['policy_type'] = 'share';
                 $actors_data = array();
                 foreach ($actors as $actor) {
                     $actors_data[] = $actor->export_simple_data();
                 }
                 $data['share_list'] = $actors_data;
             }
         }
         if ($this->is_respond() === FALSE) {
             //匯出建議
             $recommend = $this->get_recommend();
             if (isset($recommend)) {
                 $recommend_data = $recommend->export_webpage_data($url);
                 if (isset($recommend_data)) {
                     $data['recommend'] = $recommend_data;
                 }
             }
         }
     }
     return $data;
 }