/** * Constructor * * @param \Jyotish\Base\Data $Data */ public function __construct(\Jyotish\Base\Data $Data) { parent::__construct($Data); $this->balaGraha = Graha::listGraha(Graha::LIST_SAPTA); $this->bala['total'] = []; foreach ($this->balaVarga as $varga) { $balaVarga = 'bala' . ucfirst($varga); $this->bala[$varga] = $this->{$balaVarga}(); $this->bala['total'] = Math::arraySum($this->bala[$varga], $this->bala['total']); } }
/** * Get tatkalika mitra. Planets 3 houses away on either sides adjacent to it * are its tatkalika mitra (temporary friend) and render considerable strength. * * @return array */ public function getTatkalikaMitra($withoutChaya = true) { $mitraBhava = [-4, -3, -2, 1, 2, 3]; foreach ($mitraBhava as $distance) { $rashi = Math::numberInCycle($this->objectRashi, $distance); $mitraRashi[$rashi] = $distance; } $listOption = $withoutChaya ? Graha::LIST_SAPTA : Graha::LIST_NAVA; $grahas = Graha::listGraha($listOption); foreach ($grahas as $key => $name) { $rashi = $this->getEnvironment()['graha'][$key]['rashi']; if (array_key_exists($rashi, $mitraRashi)) { $mitraGraha[$key] = $mitraRashi[$rashi]; } } return $mitraGraha; }
/** * Generate list of Parivarthana yogas. * * @return \Iterator * @see Mantreswara. Phaladeepika. Chapter 6, Verse 32. */ public function generateYoga() { $saptaGraha = Graha::listGraha(Graha::LIST_SAPTA); foreach ($saptaGraha as $key1 => $name1) { $grahaChecked[] = $key1; foreach ($saptaGraha as $key2 => $name2) { if (in_array($key2, $grahaChecked)) { continue; } if ($subtype = $this->hasParivarthana($key1, $key2)) { $result = ['graha1' => $key1, 'graha2' => $key2]; if ($this->options['outputAmple']) { $result = array_merge($result, ['subtype' => $subtype]); } (yield $result); } } } }
/** * Return body label. * * @param string $body * @param array $options * @return string */ protected function getBodyLabel($body, array $options) { switch ($options['labelGrahaType']) { case 0: $label = $body; break; case 1: if (array_key_exists($body, Graha::$graha)) { $grahaObject = Graha::getInstance($body); $label = Utility::unicodeToHtml($grahaObject->grahaUnicode); } else { $label = $body; } break; case 2: $label = call_user_func($options['labelGrahaCallback'], $body); break; default: $label = $body; break; } $data = $this->Data->getData(); if (array_key_exists($body, Graha::listGraha(Graha::LIST_SAPTA))) { $vakraCheshta = $data['graha'][$body]['speed'] < 0 ? true : false; } else { $vakraCheshta = false; } $grahaLabel = $vakraCheshta ? '(' . $label . ')' : $label; return $grahaLabel; }
/** * Get lord of hora. * * @param int $horaNumber Number of hora * @param int $varaKey Key of vara * @return string */ public static function getLord($horaNumber, $varaKey) { $lords = Math::shiftArray(Graha::listGraha(Graha::LIST_CHESHTA), $varaKey); $lordsKeys = array_keys($lords); $numLord = Math::numberInCycle(1, $horaNumber, 7) - 1; return $lordsKeys[$numLord]; }
/** * Determine if the graha is in planetary war. * * @return null|bool|array * @see Surya Siddhanta. Chapter 7, Verse 18-23. * @see Varahamihira. Brihat Samhita. Chapter 17. * @todo Determine who the winner and loser */ public function isYuddha() { if (in_array($this->objectKey, [Graha::KEY_SY, Graha::KEY_CH, Graha::KEY_RA, Graha::KEY_KE])) { return null; } $lonGraha = $this->getEnvironment()['graha'][$this->objectKey]['longitude']; $grahas = Graha::listGraha(Graha::LIST_PANCHA); $isYuddha = false; foreach ($grahas as $key => $name) { if ($key == $this->objectKey) { continue; } $distance = abs($lonGraha - $this->getEnvironment()['graha'][$key]['longitude']); if ($distance <= 1) { $isYuddha[$key] = $distance; } } return $isYuddha; }
/** * Is there Mahapurusha yoga for the graha. * * @param string $key Key of graha. * @return bool * @throws Exception\InvalidArgumentException * @see Maharishi Parashara. Brihat Parashara Hora Shastra. Chapter 75, Verse 1-2. * @see Mantreswara. Phaladeepika. Chapter 6, Verse 1. */ public function hasMahapurusha($key) { $panchaGraha = Graha::listGraha(Graha::LIST_PANCHA); if (!array_key_exists($key, $panchaGraha)) { throw new \Jyotish\Yoga\Exception\InvalidArgumentException("For {$key} Mahapurusha yoga is not available."); } $Graha = Graha::getInstance($key); $Graha->setEnvironment($this->Data); $grahaBhava = $Graha->getBhava(); $grahaAvastha = $Graha->getRashiAvastha(); if (in_array($grahaBhava, Bhava::$bhavaKendra) && in_array($grahaAvastha, [Rashi::GRAHA_UCHA, Rashi::GRAHA_MOOL, Rashi::GRAHA_SWA])) { return true; } else { return false; } }