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); }
/** * 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); }
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; } }
/** * 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']); }
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; }
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; }