Esempio n. 1
0
 public function get_object(array $args)
 {
     $this->_core->authorization->require_user();
     $object = midgard_object_class::get_object_by_guid($args['guid']);
     if (!$object->guid) {
         throw new midgardmvc_exception_notfound("Object {$args['guid']} not found");
     }
     $this->data['actions'] = $this->_core->componentloader->get_object_actions($object);
 }
Esempio n. 2
0
 /**
  * This is a replacement for the original midgard_object_class::get_object_by_guid method, which takes
  * the MidCOM DBA system into account.
  *
  * @see http://www.midgard-project.org/documentation/php_midgard_object_class/
  *
  * @param string $guid The object GUID.
  * @return object A MidCOM DBA object if the set GUID is known
  */
 function get_object_by_guid($guid)
 {
     try {
         $tmp = midgard_object_class::get_object_by_guid($guid);
     } catch (midgard_error_exception $e) {
         debug_add('Loading object by GUID ' . $guid . ' failed, reason: ' . $e->getMessage(), MIDCOM_LOG_INFO);
         throw new midcom_error_midgard($e, $guid);
     }
     if (get_class($tmp) == 'midgard_person' && $GLOBALS['midcom_config']['person_class'] != 'midgard_person') {
         $tmp = new $GLOBALS['midcom_config']['person_class']($guid);
     }
     return $this->convert_midgard_to_midcom($tmp);
 }
Esempio n. 3
0
 public function get_comments(array $args)
 {
     $this->data['to'] = midgard_object_class::get_object_by_guid($args['to']);
     if (!$this->data['to']) {
         throw new midgardmvc_exception_notfound("Comment target not found");
     }
     $this->data['comments'] = array();
     $storage = new midgard_query_storage('com_meego_comments_comment_author');
     $q = new midgard_query_select($storage);
     $q->set_constraint(new midgard_query_constraint(new midgard_query_property('to', $storage), '=', new midgard_query_value($this->data['to']->guid)));
     $q->add_order(new midgard_query_property('posted', $storage), SORT_ASC);
     $q->execute();
     $comments = $q->list_objects();
     foreach ($comments as $comment) {
         $this->data['comments'][$comment->commentid] = $comment;
     }
     if (midgardmvc_core::get_instance()->authentication->is_user()) {
         $this->data['can_post'] = true;
     } else {
         $this->data['can_post'] = false;
     }
 }
Esempio n. 4
0
 /**
  * Sets the average rating of the package
  * Sets the flag showing if the package was ever rated or not
  * Sets $this->data['stars'] that can be directly put to pages showing
  * the stars
  */
 public function get_average(array $args)
 {
     $this->data['to'] = midgard_object_class::get_object_by_guid($args['to']);
     if (!$this->data['to']) {
         throw new midgardmvc_exception_notfound("rating target not found");
     }
     parent::get_read($args);
     $this->data['ratings'] = array();
     $this->data['average'] = 0;
     $this->data['rated'] = false;
     $storage = new midgard_query_storage('com_meego_ratings_rating_author');
     $q = new midgard_query_select($storage);
     $q->set_constraint(new midgard_query_constraint(new midgard_query_property('to'), '=', new midgard_query_value($this->data['to']->guid)));
     $q->add_order(new midgard_query_property('posted'), SORT_DESC);
     $q->execute();
     $ratings = $q->list_objects();
     $sum = 0;
     // only contains ratings where rating is not 0
     $num_of_valid_ratings = 0;
     if (count($ratings)) {
         $this->data['rated'] = true;
         foreach ($ratings as $rating) {
             $rating->stars = '';
             if ($rating->ratingcomment) {
                 $comment = new com_meego_comments_comment($rating->ratingcomment);
                 $rating->ratingcommentcontent = $comment->content;
             }
             if ($rating->rating || $rating->ratingcomment) {
                 // add a new property containing the stars to the rating object
                 $rating->stars = $this->draw_stars($rating->rating);
                 // pimp the posted date
                 $rating->date = gmdate('Y-m-d H:i e', strtotime($rating->posted));
                 $sum += $rating->rating;
                 if ($rating->rating) {
                     // count only non zero ratings
                     ++$num_of_valid_ratings;
                 }
             }
             array_push($this->data['ratings'], $rating);
         }
         if ($num_of_valid_ratings) {
             $this->data['average'] = round($sum / $num_of_valid_ratings, 1);
         }
     }
     $this->get_stars($this->data['average']);
 }
 /**
  * Sets the average rating of the package
  * Sets $this->data['stars'] that can be directly put to pages showing
  * the stars
  */
 public function get_average(array $args)
 {
     try {
         $this->data['to'] = midgard_object_class::get_object_by_guid($args['to']);
     } catch (midgard_error_exception $e) {
         midgardmvc_core::get_instance()->log(__CLASS__, 'Package with guid: ' . $args['to'] . ' not found. ' . $e->getMessage(), 'error');
         return false;
     }
     $this->data['repository'] = new com_meego_repository($this->data['to']->repository);
     com_meego_ratings_controllers_rating::get_read($args);
     $storage = new midgard_query_storage('com_meego_package_statistics_calculated');
     $q = new midgard_query_select($storage);
     $q->set_constraint(new midgard_query_constraint(new midgard_query_property('packageguid'), '=', new midgard_query_value($this->data['to']->guid)));
     $q->execute();
     $cache = $q->list_objects();
     $this->data['average'] = 0;
     $this->data['numberofratings'] = 0;
     $this->data['numberofcomments'] = 0;
     $this->data['rated'] = false;
     //load data from cache
     if (count($cache) > 0) {
         $this->data['average'] = $cache[0]->ratingvalue;
         $this->data['numberofratings'] = $cache[0]->ratings;
         $this->data['numberofcomments'] = $cache[0]->comments;
         $this->data['rated'] = true;
     }
     com_meego_ratings_caching_controllers_rating::get_stars($this->data['average']);
 }
Esempio n. 6
0
 public function prepare_new_object(array $args)
 {
     $this->data['parent'] = midgard_object_class::get_object_by_guid($args['to']);
     $this->object = new com_meego_comments_comment();
     $this->object->to = $this->data['parent']->guid;
 }
Esempio n. 7
0
 public function get_document(array $args)
 {
     $object = midgard_object_class::get_object_by_guid($args['guid']);
     if (!$object || !$object->guid) {
         throw new midcom_exception_notfound("Object {$args['guid']} not found");
     }
     // Map the object to CoudbDb format
     $status = array();
     // CouchDb-specific metadata
     $status['_id'] = $object->guid;
     $status['_rev'] = org_couchdb_replication_controllers_server::get_rev($object);
     // Add normal object properties
     $status = array_merge($status, get_object_vars($object));
     // Remove data we shouldn't send
     unset($status['id']);
     unset($status['guid']);
     unset($status['metadata']);
     foreach ($status as $key => $val) {
         if (is_a($val, 'midgard_datetime')) {
             $status[$key] = $val->format(DATE_ATOM);
         }
     }
     $this->data[]['ok'] = $status;
 }