/** * Performs the work of inserting or updating the row in the database. * * If the object is new, it inserts it; otherwise an update is performed. * All related objects are also updated in this method. * * @param PropelPDO $con * @return int The number of rows affected by this insert/update and any referring fk objects' save() operations. * @throws PropelException * @see save() */ protected function doSave(PropelPDO $con) { $affectedRows = 0; // initialize var to track total num of affected rows if (!$this->alreadyInSave) { $this->alreadyInSave = true; // We call the save method on the following object(s) if they // were passed to this object by their corresponding set // method. This object relates to these object(s) by a // foreign key reference. if ($this->aLanguage !== null) { if ($this->aLanguage->isModified() || $this->aLanguage->isNew()) { $affectedRows += $this->aLanguage->save($con); } $this->setLanguage($this->aLanguage); } if ($this->aDocumentation !== null) { if ($this->aDocumentation->isModified() || $this->aDocumentation->isNew()) { $affectedRows += $this->aDocumentation->save($con); } $this->setDocumentation($this->aDocumentation); } if ($this->aDocument !== null) { if ($this->aDocument->isModified() || $this->aDocument->isNew()) { $affectedRows += $this->aDocument->save($con); } $this->setDocument($this->aDocument); } if ($this->aUserRelatedByCreatedBy !== null) { if ($this->aUserRelatedByCreatedBy->isModified() || $this->aUserRelatedByCreatedBy->isNew()) { $affectedRows += $this->aUserRelatedByCreatedBy->save($con); } $this->setUserRelatedByCreatedBy($this->aUserRelatedByCreatedBy); } if ($this->aUserRelatedByUpdatedBy !== null) { if ($this->aUserRelatedByUpdatedBy->isModified() || $this->aUserRelatedByUpdatedBy->isNew()) { $affectedRows += $this->aUserRelatedByUpdatedBy->save($con); } $this->setUserRelatedByUpdatedBy($this->aUserRelatedByUpdatedBy); } if ($this->isNew() || $this->isModified()) { // persist changes if ($this->isNew()) { $this->doInsert($con); } else { $this->doUpdate($con); } $affectedRows += 1; // Rewind the body LOB column, since PDO does not rewind after inserting value. if ($this->body !== null && is_resource($this->body)) { rewind($this->body); } $this->resetModified(); } $this->alreadyInSave = false; } return $affectedRows; }
/** * Import the topics to the DB */ public function importTopics($lang = 'he') { // Topics $guides = Documentation::model()->documentationFolders; if (count($guides)) { foreach ($guides as $key => $guide) { // Load the guides files $files = $this->grabTopics($key, $lang); if (count($files)) { foreach ($files as $file) { // make a short name $name = str_replace('.txt', '', end(explode('/', $file))); // Check if we have one in the DB $exists = Documentation::model()->exists('mkey=:key AND type=:type AND language=:lang', array(':lang' => $lang, ':key' => $name, ':type' => $key)); if ($exists) { continue; } $contents = file_get_contents($file); $contents = str_replace('«', '<', $contents); $contents = str_replace('»', '>', $contents); // Add $save = new Documentation(); $save->name = $name; $save->mkey = $name; $save->language = $lang; $save->type = $key; $save->content = $contents; $save->save(); } } } } }