ZodiacLib.php 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. <?php
  2. /**
  3. * @from
  4. * 2011-03-11 ms
  5. */
  6. class ZodiacLib {
  7. public $error = null;
  8. static $res = array(
  9. self::SIGN_AQUARIUS => 'aquarius',
  10. self::SIGN_ARIES => 'aries',
  11. self::SIGN_CANCER => 'cancer',
  12. self::SIGN_CAPRICORN => 'capricorn',
  13. self::SIGN_GEMINI => 'gemini',
  14. self::SIGN_LEO => 'leo',
  15. self::SIGN_LIBRA => 'libra',
  16. self::SIGN_PISCES => 'pisces',
  17. self::SIGN_SAGITTARIUS => 'sagittarius',
  18. self::SIGN_SCORPIO => 'scorpio',
  19. self::SIGN_TAURUS => 'taurus',
  20. self::SIGN_VIRGO => 'virgo',
  21. );
  22. public function error() {
  23. return $this->error;
  24. }
  25. /**
  26. * @param integer $sign
  27. * @return array(array(m, d), array(m, d)) (first is min, second is max)
  28. * 2011-07-13
  29. */
  30. public function getRange($sign) {
  31. $range = null;
  32. switch ($sign) {
  33. case self::SIGN_AQUARIUS:
  34. $range = array(array(1, 21), array(2, 19));
  35. break;
  36. case self::SIGN_PISCES:
  37. $range = array(array(2, 20), array(3, 20));
  38. break;
  39. case self::SIGN_ARIES:
  40. $range = array(array(3, 21), array(4, 20));
  41. break;
  42. case self::SIGN_TAURUS:
  43. $range = array(array(4, 21), array(5, 21));
  44. break;
  45. case self::SIGN_GEMINI:
  46. $range = array(array(5, 22), array(6, 21));
  47. break;
  48. case self::SIGN_CANCER:
  49. $range = array(array(6, 22), array(7, 23));
  50. break;
  51. case self::SIGN_LEO:
  52. $range = array(array(7, 24), array(8, 23));
  53. break;
  54. case self::SIGN_VIRGO:
  55. $range = array(array(8, 24), array(9, 23));
  56. break;
  57. case self::SIGN_LIBRA:
  58. $range = array(array(9, 24), array(10, 23));
  59. break;
  60. case self::SIGN_SCORPIO:
  61. $range = array(array(10, 24), array(11, 22));
  62. break;
  63. case self::SIGN_SAGITTARIUS:
  64. $range = array(array(11, 23), array(12, 21));
  65. break;
  66. case self::SIGN_CAPRICORN:
  67. $range = array(array(12, 22), array(1, 20));
  68. break;
  69. }
  70. return $range;
  71. }
  72. /**
  73. * @param month
  74. * @param day
  75. * expects valid values
  76. * @return integer $sign or false on failure
  77. * 2011-03-11 ms
  78. */
  79. public function getSign($month, $day) {
  80. switch ($month) {
  81. case 1:
  82. $this->zodiac = ($day <= 20) ? self::SIGN_CAPRICORN : self::SIGN_AQUARIUS;
  83. break;
  84. case 2:
  85. $this->zodiac = ($day <= 19) ? self::SIGN_AQUARIUS : self::SIGN_PISCES;
  86. break;
  87. case 3:
  88. $this->zodiac = ($day <= 20) ? self::SIGN_PISCES : self::SIGN_ARIES;
  89. break;
  90. case 4:
  91. $this->zodiac = ($day <= 20) ? self::SIGN_ARIES:
  92. self::SIGN_TAURUS;
  93. break;
  94. case 5:
  95. $this->zodiac = ($day <= 21) ? self::SIGN_TAURUS:
  96. self::SIGN_GEMINI;
  97. break;
  98. case 6:
  99. $this->zodiac = ($day <= 21) ? self::SIGN_GEMINI:
  100. self::SIGN_CANCER;
  101. break;
  102. case 7:
  103. $this->zodiac = ($day <= 23) ? self::SIGN_CANCER:
  104. self::SIGN_LEO;
  105. break;
  106. case 8:
  107. $this->zodiac = ($day <= 23) ? self::SIGN_LEO:
  108. self::SIGN_VIRGO;
  109. break;
  110. case 9:
  111. $this->zodiac = ($day <= 23) ? self::SIGN_VIRGO:
  112. self::SIGN_LIBRA;
  113. break;
  114. case 10:
  115. $this->zodiac = ($day <= 23) ? self::SIGN_LIBRA:
  116. self::SIGN_SCORPIO;
  117. break;
  118. case 11:
  119. $this->zodiac = ($day <= 22) ? self::SIGN_SCORPIO:
  120. self::SIGN_SAGITTARIUS;
  121. break;
  122. case 12:
  123. $this->zodiac = ($day <= 21) ? self::SIGN_SAGITTARIUS : self::SIGN_CAPRICORN;
  124. break;
  125. }
  126. return $this->zodiac;
  127. }
  128. public function getChineseSign($year, $month, $day) {
  129. //TODO
  130. }
  131. public function getNativeAmericanSign($month, $day) {
  132. //TODO
  133. }
  134. /**
  135. * list of all signs
  136. * 2011-03-11 ms
  137. */
  138. public static function signs($value = null) {
  139. $res = array(
  140. self::SIGN_AQUARIUS => __('zodiacAquarius'),
  141. self::SIGN_PISCES => __('zodiacPisces'),
  142. self::SIGN_ARIES => __('zodiacAries'),
  143. self::SIGN_TAURUS => __('zodiacTaurus'),
  144. self::SIGN_GEMINI => __('zodiacGemini'),
  145. self::SIGN_CANCER => __('zodiacCancer'),
  146. self::SIGN_LEO => __('zodiacLeo'),
  147. self::SIGN_VIRGO => __('zodiacVirgo'),
  148. self::SIGN_LIBRA => __('zodiacLibra'),
  149. self::SIGN_SCORPIO => __('zodiacScorpio'),
  150. self::SIGN_SAGITTARIUS => __('zodiacSagittarius'),
  151. self::SIGN_CAPRICORN => __('zodiacCapricorn'),
  152. );
  153. if ($value === null) {
  154. return $res;
  155. }
  156. return $res[$value];
  157. }
  158. public static function image($sign) {
  159. return self::$res[$sign];
  160. }
  161. const SIGN_AQUARIUS = 1; # from 20.01. to 18.02.
  162. const SIGN_PISCES = 2; # from 19 Febbraio to 20 marzo
  163. const SIGN_ARIES = 3;
  164. const SIGN_TAURUS = 4;
  165. const SIGN_GEMINI = 5;
  166. const SIGN_CANCER = 6;
  167. const SIGN_LEO = 7;
  168. const SIGN_VIRGO = 8; # from 23.08. to 22.09.
  169. const SIGN_LIBRA = 9;
  170. const SIGN_SCORPIO = 10;
  171. const SIGN_SAGITTARIUS = 11;
  172. const SIGN_CAPRICORN = 12;
  173. /*
  174. 2 aries1.gif from 21 Marzo to 20 Aprile
  175. 3 cancer1.gif from 22 Giugno to 22 luglio
  176. 4 cap1.gif from 22 Dicembre to 20 gennaio
  177. 5 gemini1.gif from 22 Maggio to 22 giugno
  178. 6 leo1.gif from 22 Luglio to 21 agosto
  179. 7 libra1.gif from 24 Settembre to 23 ottobre
  180. 8
  181. 9 sag1.gif from 22 Novembre to 22 dicembre
  182. 10 scorpio1.gif from 24 Ottobre to 21 novembre
  183. 11 taurus1.gif from 21 Aprile to 21 Maggio
  184. Wassermann (21. Januar - 19. Februar)
  185. Fische (20. Februar - 20. März)
  186. Widder (21. März - 20. April)
  187. Stier (21. April - 20. Mai)
  188. Zwillinge (21. Mai - 21. Juni)
  189. Krebs (22. Juni - 22. Juli)
  190. Löwe (23. Juli - 23. August)
  191. Jungfrau (24. August - 23. September)
  192. Waage (24. September - 23. Oktober)
  193. Skorpion (24. Oktober - 22. November)
  194. Schütze (23. November - 21. Dezember)
  195. Steinbock (22. Dezember - 20. Januar)
  196. */
  197. }