12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- <?php
- function proposals_get_votes($entity) {
-
- $annotations = elgg_get_annotations(array(
- 'guid' => $entity->guid,
- 'annotation_name' => 'votes',
- 'limit' => 0
- ));
- $votes = array();
-
- foreach(array("yes", "no", "block", "abstain") as $name) {
- $votes[$name] = 0;
- }
-
- foreach($annotations as $annotation) {
- if (!isset($votes[$annotation->value])) {
- $votes[$annotation->value] = 0;
- }
- $votes[$annotation->value] += 1;
- }
- return $votes;
- }
- function proposals_get_points_from_votes($votes) {
- $points = $votes["yes"] - ($votes["no"] + $votes["block"]);
- if ($points > 0) {
- $points = "+".$points;
- }
- return $points;
- }
- function proposals_get_status_from_votes($votes, $member_count) {
- $status = "no_consensus";
- $total_votes = array_sum($votes);
-
- if ($votes["block"]) {
- $status = "blocked";
- } elseif ($total_votes < $member_count/2) {
- $status = "new";
- } elseif ($votes["no"] >= $member_count / 2) {
- $status = "no_consensus";
- } elseif (($votes["yes"] > $votes["no"]+($member_count-$total_votes))) {
- $status = "consensus";
- }
- return $status;
- }
|