diff --git a/src/view/phui/PHUIObjectItemView.php b/src/view/phui/PHUIObjectItemView.php --- a/src/view/phui/PHUIObjectItemView.php +++ b/src/view/phui/PHUIObjectItemView.php @@ -83,11 +83,29 @@ return $this->object; } + /** + * Set the href attribute + * + * @param string|PhutilURI|null $href + * @return self + */ public function setHref($href) { + + // We have not a very clear idea about what this method should receive + // So, let's log alien stuff for some time + // https://we.phorge.it/T15316 + self::requireValidHref($href, 'href'); + $this->href = $href; return $this; } + /** + * Get the href attribute + * + * @see PHUIObjectItemView::setHref() + * @return string|PhutilURI|null + */ public function getHref() { return $this->href; } @@ -136,7 +154,19 @@ return $this; } + /** + * Set the image href attribute + * + * @param string|PhutilURI|null $image_href + * @return self + */ public function setImageHref($image_href) { + + // We have not a very clear idea about what this method should receive + // So, let's log alien stuff for some time + // https://we.phorge.it/T15316 + self::requireValidHref($image_href, 'image_href'); + $this->imageHref = $image_href; return $this; } @@ -659,8 +689,8 @@ $this->getImageIcon()); } - if ($image && (phutil_nonempty_string($this->href) || - phutil_nonempty_string($this->imageHref))) { + if ($image && (phutil_nonempty_stringlike($this->href) || + phutil_nonempty_stringlike($this->imageHref))) { $image_href = ($this->imageHref) ? $this->imageHref : $this->href; $image = phutil_tag( 'a', @@ -899,4 +929,30 @@ return javelin_tag('span', $options, ''); } + + /** + * Receive a href attribute and check if it has expected values + * + * TODO: Feel free to remove after 2023, if no more new reports arrive. + * + * https://we.phorge.it/T15316 + * + * @param mixed $href Value to be checked + * @param string $variable_name Human reference + */ + private static function requireValidHref($href, $variable_name) { + + // We have not a very clear idea about what a "href" should be + if (is_object($href) && !($href instanceof PhutilURI)) { + + // We log stuff with a kind stack trace + phlog(new Exception(pht( + 'The variable %s received an unexpected type: %s. '. + 'Please share this stack trace as comment in Task %s', + $variable_name, + get_class($href), + 'https://we.phorge.it/T15316'))); + } + } + }