From 903ae8a581fac1e6917fc3e31d2ad8fb91df80c3 Mon Sep 17 00:00:00 2001 From: ctrlaltca <> Date: Thu, 12 Jul 2012 11:21:01 +0000 Subject: standardize the use of unix eol; use svn properties to enforce native eol --- framework/I18N/core/MessageSource_Database.php | 646 ++++++++++++------------- 1 file changed, 323 insertions(+), 323 deletions(-) (limited to 'framework/I18N/core/MessageSource_Database.php') diff --git a/framework/I18N/core/MessageSource_Database.php b/framework/I18N/core/MessageSource_Database.php index 3ccea61b..549d1c40 100644 --- a/framework/I18N/core/MessageSource_Database.php +++ b/framework/I18N/core/MessageSource_Database.php @@ -1,323 +1,323 @@ -_connID= (string)$source; - } - - /** - * @return TDbConnection the database connection that may be used to retrieve messages. - */ - public function getDbConnection() - { - if($this->_conn===null) - { - $this->_conn=$this->createDbConnection($this->_connID); - $this->_conn->setActive(true); - } - return $this->_conn; - } - - /** - * Creates the DB connection. - * @param string the module ID for TDataSourceConfig - * @return TDbConnection the created DB connection - * @throws TConfigurationException if module ID is invalid or empty - */ - protected function createDbConnection($connectionID) - { - if($connectionID!=='') - { - $conn=Prado::getApplication()->getModule($connectionID); - if($conn instanceof TDataSourceConfig) - return $conn->getDbConnection(); - else - throw new TConfigurationException('messagesource_connectionid_invalid',$connectionID); - } - else - throw new TConfigurationException('messagesource_connectionid_required'); - } - - /** - * Get an array of messages for a particular catalogue and cultural - * variant. - * @param string the catalogue name + variant - * @return array translation messages. - */ - protected function &loadData($variant) - { - $command=$this->getDBConnection()->createCommand( - 'SELECT t.id, t.source, t.target, t.comments - FROM trans_unit t, catalogue c - WHERE c.cat_id = t.cat_id - AND c.name = :variant - ORDER BY id ASC'); - $command->bindParameter(':variant',$variant,PDO::PARAM_STR); - $dataReader=$command->query(); - - $result = array(); - - foreach ($dataReader as $row) - $result[$row['source']] = array($row['target'],$row['id'],$row['comments']); - - return $result; - } - - /** - * Get the last modified unix-time for this particular catalogue+variant. - * We need to query the database to get the date_modified. - * @param string catalogue+variant - * @return int last modified in unix-time format. - */ - protected function getLastModified($source) - { - $command=$this->getDBConnection()->createCommand( - 'SELECT date_modified FROM catalogue WHERE name = :source'); - $command->bindParameter(':source',$source,PDO::PARAM_STR); - $result=$command->queryScalar(); - return $result ? $result : 0; - } - - - /** - * Check if a particular catalogue+variant exists in the database. - * @param string catalogue+variant - * @return boolean true if the catalogue+variant is in the database, - * false otherwise. - */ - protected function isValidSource($variant) - { - $command=$this->getDBConnection()->createCommand( - 'SELECT COUNT(*) FROM catalogue WHERE name = :variant'); - $command->bindParameter(':variant',$variant,PDO::PARAM_STR); - return $command->queryScalar()==1; - } - - /** - * Get all the variants of a particular catalogue. - * @param string catalogue name - * @return array list of all variants for this catalogue. - */ - protected function getCatalogueList($catalogue) - { - $variants = explode('_',$this->culture); - - $catalogues = array($catalogue); - - $variant = null; - - for($i = 0, $k = count($variants); $i < $k; ++$i) - { - if(isset($variants[$i]{0})) - { - $variant .= ($variant)?'_'.$variants[$i]:$variants[$i]; - $catalogues[] = $catalogue.'.'.$variant; - } - } - return array_reverse($catalogues); - } - - /** - * Retrive catalogue details, array($cat_id, $variant, $count). - * @param string catalogue - * @return array catalogue details, array($cat_id, $variant, $count). - */ - private function getCatalogueDetails($catalogue='messages') - { - if(empty($catalogue)) - $catalogue = 'messages'; - - $variant = $catalogue.'.'.$this->culture; - - $command=$this->getDBConnection()->createCommand( - 'SELECT cat_id FROM catalogue WHERE name = :variant'); - $command->bindParameter(':variant',$variant,PDO::PARAM_STR); - $cat_id=$command->queryScalar(); - - if ($cat_id===null) return false; - - $command=$this->getDBConnection()->createCommand( - 'SELECT COUNT(msg_id) FROM trans_unit WHERE cat_id = :catid '); - $command->bindParameter(':catid',$cat_id,PDO::PARAM_INT); - $count=$command->queryScalar(); - - return array($cat_id, $variant, $count); - } - - /** - * Update the catalogue last modified time. - * @return boolean true if updated, false otherwise. - */ - private function updateCatalogueTime($cat_id, $variant) - { - $time = time(); - $command=$this->getDBConnection()->createCommand( - 'UPDATE catalogue SET date_modified = :moddate WHERE cat_id = :catid'); - $command->bindParameter(':moddate',$time,PDO::PARAM_INT); - $command->bindParameter(':catid',$cat_id,PDO::PARAM_INT); - $result=$command->execute(); - - if(!empty($this->cache)) - $this->cache->clean($variant, $this->culture); - - return $result; - } - - /** - * Save the list of untranslated blocks to the translation source. - * If the translation was not found, you should add those - * strings to the translation source via the append() method. - * @param string the catalogue to add to - * @return boolean true if saved successfuly, false otherwise. - */ - function save($catalogue='messages') - { - $messages = $this->untranslated; - - if(count($messages) <= 0) return false; - - $details = $this->getCatalogueDetails($catalogue); - - if($details) - list($cat_id, $variant, $count) = $details; - else - return false; - - if($cat_id <= 0) return false; - $inserted = 0; - - $time = time(); - - $command=$this->getDBConnection()->createCommand( - 'INSERT INTO trans_unit (cat_id,id,source,date_added) VALUES (:catid,:id,:source,:dateadded)'); - $command->bindParameter(':catid',$cat_id,PDO::PARAM_INT); - $command->bindParameter(':id',$count,PDO::PARAM_INT); - $command->bindParameter(':source',$message,PDO::PARAM_STR); - $command->bindParameter(':dateadded',$time,PDO::PARAM_INT); - foreach($messages as $message) - { - if (empty($message)) continue; - $count++; $inserted++; - $command->execute(); - } - if($inserted > 0) - $this->updateCatalogueTime($cat_id, $variant); - - return $inserted > 0; - } - - /** - * Delete a particular message from the specified catalogue. - * @param string the source message to delete. - * @param string the catalogue to delete from. - * @return boolean true if deleted, false otherwise. - */ - function delete($message, $catalogue='messages') - { - $details = $this->getCatalogueDetails($catalogue); - if($details) - list($cat_id, $variant, $count) = $details; - else - return false; - - $command=$this->getDBConnection()->createCommand( - 'DELETE FROM trans_unit WHERE cat_id = :catid AND source = :message'); - $command->bindParameter(':catid',$cat_id,PDO::PARAM_INT); - $command->bindParameter(':message',$message,PDO::PARAM_STR); - - return ($command->execute()==1) ? $this->updateCatalogueTime($cat_id, $variant) : false; - - } - - /** - * Update the translation. - * @param string the source string. - * @param string the new translation string. - * @param string comments - * @param string the catalogue of the translation. - * @return boolean true if translation was updated, false otherwise. - */ - function update($text, $target, $comments, $catalogue='messages') - { - $details = $this->getCatalogueDetails($catalogue); - if($details) - list($cat_id, $variant, $count) = $details; - else - return false; - - $time = time(); - $command=$this->getDBConnection()->createCommand( - 'UPDATE trans_unit SET target = :target, comments = :comments, date_modified = :datemod - WHERE cat_id = :catid AND source = :source'); - $command->bindParameter(':target',$target,PDO::PARAM_STR); - $command->bindParameter(':comments',$comments,PDO::PARAM_STR); - $command->bindParameter(':datemod',$time,PDO::PARAM_INT); - $command->bindParameter(':catid',$cat_id,PDO::PARAM_INT); - $command->bindParameter(':source',$text,PDO::PARAM_STR); - - return ($command->execute()==1) ? $this->updateCatalogueTime($cat_id, $variant) : false; - } - - /** - * Returns a list of catalogue as key and all it variants as value. - * @return array list of catalogues - */ - function catalogues() - { - $command=$this->getDBConnection()->createCommand( 'SELECT name FROM catalogue ORDER BY name'); - $dataReader=$command->query(); - - $result = array(); - - foreach ($dataReader as $row) - { - $details = explode('.',$row[0]); - if(!isset($details[1])) $details[1] = null; - - $result[] = $details; - } - - return $result; - } - -} -?> +_connID= (string)$source; + } + + /** + * @return TDbConnection the database connection that may be used to retrieve messages. + */ + public function getDbConnection() + { + if($this->_conn===null) + { + $this->_conn=$this->createDbConnection($this->_connID); + $this->_conn->setActive(true); + } + return $this->_conn; + } + + /** + * Creates the DB connection. + * @param string the module ID for TDataSourceConfig + * @return TDbConnection the created DB connection + * @throws TConfigurationException if module ID is invalid or empty + */ + protected function createDbConnection($connectionID) + { + if($connectionID!=='') + { + $conn=Prado::getApplication()->getModule($connectionID); + if($conn instanceof TDataSourceConfig) + return $conn->getDbConnection(); + else + throw new TConfigurationException('messagesource_connectionid_invalid',$connectionID); + } + else + throw new TConfigurationException('messagesource_connectionid_required'); + } + + /** + * Get an array of messages for a particular catalogue and cultural + * variant. + * @param string the catalogue name + variant + * @return array translation messages. + */ + protected function &loadData($variant) + { + $command=$this->getDBConnection()->createCommand( + 'SELECT t.id, t.source, t.target, t.comments + FROM trans_unit t, catalogue c + WHERE c.cat_id = t.cat_id + AND c.name = :variant + ORDER BY id ASC'); + $command->bindParameter(':variant',$variant,PDO::PARAM_STR); + $dataReader=$command->query(); + + $result = array(); + + foreach ($dataReader as $row) + $result[$row['source']] = array($row['target'],$row['id'],$row['comments']); + + return $result; + } + + /** + * Get the last modified unix-time for this particular catalogue+variant. + * We need to query the database to get the date_modified. + * @param string catalogue+variant + * @return int last modified in unix-time format. + */ + protected function getLastModified($source) + { + $command=$this->getDBConnection()->createCommand( + 'SELECT date_modified FROM catalogue WHERE name = :source'); + $command->bindParameter(':source',$source,PDO::PARAM_STR); + $result=$command->queryScalar(); + return $result ? $result : 0; + } + + + /** + * Check if a particular catalogue+variant exists in the database. + * @param string catalogue+variant + * @return boolean true if the catalogue+variant is in the database, + * false otherwise. + */ + protected function isValidSource($variant) + { + $command=$this->getDBConnection()->createCommand( + 'SELECT COUNT(*) FROM catalogue WHERE name = :variant'); + $command->bindParameter(':variant',$variant,PDO::PARAM_STR); + return $command->queryScalar()==1; + } + + /** + * Get all the variants of a particular catalogue. + * @param string catalogue name + * @return array list of all variants for this catalogue. + */ + protected function getCatalogueList($catalogue) + { + $variants = explode('_',$this->culture); + + $catalogues = array($catalogue); + + $variant = null; + + for($i = 0, $k = count($variants); $i < $k; ++$i) + { + if(isset($variants[$i]{0})) + { + $variant .= ($variant)?'_'.$variants[$i]:$variants[$i]; + $catalogues[] = $catalogue.'.'.$variant; + } + } + return array_reverse($catalogues); + } + + /** + * Retrive catalogue details, array($cat_id, $variant, $count). + * @param string catalogue + * @return array catalogue details, array($cat_id, $variant, $count). + */ + private function getCatalogueDetails($catalogue='messages') + { + if(empty($catalogue)) + $catalogue = 'messages'; + + $variant = $catalogue.'.'.$this->culture; + + $command=$this->getDBConnection()->createCommand( + 'SELECT cat_id FROM catalogue WHERE name = :variant'); + $command->bindParameter(':variant',$variant,PDO::PARAM_STR); + $cat_id=$command->queryScalar(); + + if ($cat_id===null) return false; + + $command=$this->getDBConnection()->createCommand( + 'SELECT COUNT(msg_id) FROM trans_unit WHERE cat_id = :catid '); + $command->bindParameter(':catid',$cat_id,PDO::PARAM_INT); + $count=$command->queryScalar(); + + return array($cat_id, $variant, $count); + } + + /** + * Update the catalogue last modified time. + * @return boolean true if updated, false otherwise. + */ + private function updateCatalogueTime($cat_id, $variant) + { + $time = time(); + $command=$this->getDBConnection()->createCommand( + 'UPDATE catalogue SET date_modified = :moddate WHERE cat_id = :catid'); + $command->bindParameter(':moddate',$time,PDO::PARAM_INT); + $command->bindParameter(':catid',$cat_id,PDO::PARAM_INT); + $result=$command->execute(); + + if(!empty($this->cache)) + $this->cache->clean($variant, $this->culture); + + return $result; + } + + /** + * Save the list of untranslated blocks to the translation source. + * If the translation was not found, you should add those + * strings to the translation source via the append() method. + * @param string the catalogue to add to + * @return boolean true if saved successfuly, false otherwise. + */ + function save($catalogue='messages') + { + $messages = $this->untranslated; + + if(count($messages) <= 0) return false; + + $details = $this->getCatalogueDetails($catalogue); + + if($details) + list($cat_id, $variant, $count) = $details; + else + return false; + + if($cat_id <= 0) return false; + $inserted = 0; + + $time = time(); + + $command=$this->getDBConnection()->createCommand( + 'INSERT INTO trans_unit (cat_id,id,source,date_added) VALUES (:catid,:id,:source,:dateadded)'); + $command->bindParameter(':catid',$cat_id,PDO::PARAM_INT); + $command->bindParameter(':id',$count,PDO::PARAM_INT); + $command->bindParameter(':source',$message,PDO::PARAM_STR); + $command->bindParameter(':dateadded',$time,PDO::PARAM_INT); + foreach($messages as $message) + { + if (empty($message)) continue; + $count++; $inserted++; + $command->execute(); + } + if($inserted > 0) + $this->updateCatalogueTime($cat_id, $variant); + + return $inserted > 0; + } + + /** + * Delete a particular message from the specified catalogue. + * @param string the source message to delete. + * @param string the catalogue to delete from. + * @return boolean true if deleted, false otherwise. + */ + function delete($message, $catalogue='messages') + { + $details = $this->getCatalogueDetails($catalogue); + if($details) + list($cat_id, $variant, $count) = $details; + else + return false; + + $command=$this->getDBConnection()->createCommand( + 'DELETE FROM trans_unit WHERE cat_id = :catid AND source = :message'); + $command->bindParameter(':catid',$cat_id,PDO::PARAM_INT); + $command->bindParameter(':message',$message,PDO::PARAM_STR); + + return ($command->execute()==1) ? $this->updateCatalogueTime($cat_id, $variant) : false; + + } + + /** + * Update the translation. + * @param string the source string. + * @param string the new translation string. + * @param string comments + * @param string the catalogue of the translation. + * @return boolean true if translation was updated, false otherwise. + */ + function update($text, $target, $comments, $catalogue='messages') + { + $details = $this->getCatalogueDetails($catalogue); + if($details) + list($cat_id, $variant, $count) = $details; + else + return false; + + $time = time(); + $command=$this->getDBConnection()->createCommand( + 'UPDATE trans_unit SET target = :target, comments = :comments, date_modified = :datemod + WHERE cat_id = :catid AND source = :source'); + $command->bindParameter(':target',$target,PDO::PARAM_STR); + $command->bindParameter(':comments',$comments,PDO::PARAM_STR); + $command->bindParameter(':datemod',$time,PDO::PARAM_INT); + $command->bindParameter(':catid',$cat_id,PDO::PARAM_INT); + $command->bindParameter(':source',$text,PDO::PARAM_STR); + + return ($command->execute()==1) ? $this->updateCatalogueTime($cat_id, $variant) : false; + } + + /** + * Returns a list of catalogue as key and all it variants as value. + * @return array list of catalogues + */ + function catalogues() + { + $command=$this->getDBConnection()->createCommand( 'SELECT name FROM catalogue ORDER BY name'); + $dataReader=$command->query(); + + $result = array(); + + foreach ($dataReader as $row) + { + $details = explode('.',$row[0]); + if(!isset($details[1])) $details[1] = null; + + $result[] = $details; + } + + return $result; + } + +} +?> -- cgit v1.2.3