ZodiacLib.php 5.2 KB

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