/** * @test */ public function delete() { // La suppression simple se passe correctement /** @var Tag $tag */ $tag = $this->tags('php'); $this->assertTrue($tag->delete()); // les news qui avaient le tag supprimé ne l'ont plus $this->assertEquals(0, TranslatedNewsHasTag::model()->countByAttributes(array('tag_id' => $tag->id))); }
/** * @test */ public function getTagsNames() { /** @var TranslatedNews $model */ $model = $this->translations('n2'); $count = TranslatedNewsHasTag::model()->countByAttributes(array('translated_news_id' => $model->id)); $this->assertEquals($count, count($model->getTagsNames())); }
/** * Associe les tags du tableau $tags avec l'actualité $this * @param string|array $tags Suite de tags séparés par des virgules. * @return bool */ public function insertTags($tags) { if (is_string($tags)) { $tags = explode(',', $tags); } if (!is_array($tags)) { Yii::log(h::_(CVarDumper::dumpAsString($tags), __FILE__, __LINE__, __METHOD__), CLogger::LEVEL_ERROR); return false; } foreach (array_map('trim', array_unique($tags)) as $tagName) { /** @var $tag Tag */ if (!($tag = Tag::model()->findByAttributes(array('name' => $tagName, 'language_id' => $this->language_id)))) { // Si le tag n'existe pas, on le crée $tag = new Tag(); $tag->name = $tagName; $tag->language_id = $this->language_id; if (!$tag->save()) { Yii::log(h::_($tag->getErrors(), __FILE__, __LINE__, __METHOD__), CLogger::LEVEL_ERROR); return false; } } else { // S'il existe déjà, on vérifie qu'il n'est pas déjà associé à $this... if (TranslatedNewsHasTag::model()->countByAttributes(array('translated_news_id' => $this->id, 'tag_id' => $tag->id))) { // ... et s'il l'est, RAF, on passe à la suite continue; } } $record = new TranslatedNewsHasTag(); $record->translated_news_id = $this->id; $record->tag_id = $tag->id; if (!$record->save()) { Yii::log(h::_($record->getErrors(), __FILE__, __LINE__, __METHOD__), CLogger::LEVEL_ERROR); return false; } } return true; }