- #1081: Sorts language alphabetically in skill tab -Car
* Survey:
+ - #993: Enables survey for oranges -Car
- #1002: Lets the user set promo interval in both ways -Car
* XnetLists:
return intval(substr($this->promo, 1, 4));
}
+ /** Check if user is an orange (associated with several promos)
+ */
+ public function isMultiPromo()
+ {
+ return $this->grad_year != $this->entry_year + $this->mainEducationDuration();
+ }
+
+ /** Returns an array with all associated promo years.
+ */
+ public function yearspromo()
+ {
+ $promos = array();
+ $d = -$this->deltaPromoToGradYear();
+ for ($g = $this->entry_year + $this->mainEducationDuration(); $g <= $this->grad_year; ++$g) {
+ $promos[] = $g + $d;
+ }
+ return $promos;
+ }
+
public function mainEducation()
{
if (empty($this->promo)) {
}
}
+ /** Number of years between the promotion year until the
+ * graduation year. In standard schools it's 0, but for
+ * Polytechnique the promo year is the entry year.
+ */
+ public function deltaPromoToGradYear()
+ {
+ if ($this->mainEducation() == 'X') {
+ return $this->mainEducationDuration();
+ }
+ return 0;
+ }
+
/** Print a name with the given formatting:
* %s = • for women
* %f = firstname
if (!S::logged()) {
return false;
}
- if (!$survey->checkPromo(S::v('promo'))) { // checks promotion
+ $profile = S::user()->profile();
+ if (!$profile) {
+ return false;
+ }
+ // checks promotion
+ $allowed = false;
+ foreach ($profile->yearspromo() as $p) {
+ var_dump($p);
+ if ($survey->checkPromo($p)) {
+ $allowed = true;
+ break;
+ }
+ }
+ if (!$allowed) {
$page->kill("Tu n'as pas accès à ce sondage car il est réservé à d'autres promotions.");
}
}