示例#1
0
文件: Relation.php 项目: kotow/work
 public static function saveRelation($parents, $document, $updateCache = true)
 {
     if ($parents) {
         try {
             $con = Propel::getConnection();
             $con->begin();
             $docId = $document->getId();
             if (!is_array($parents)) {
                 $parents = array($parents);
             }
             foreach ($parents as $parent) {
                 $saveNew = true;
                 if ($parent) {
                     $parentId = $parent->getId();
                     $oldParentId = Document::getParentOf($docId, null, false);
                     if ($oldParentId) {
                         $relation = RelationPeer::retrieveByPk($oldParentId, $docId);
                         if ($oldParentId != $parentId) {
                             $relation->delete();
                         } else {
                             $saveNew = false;
                         }
                     }
                     if ($saveNew) {
                         $relation = new Relation();
                         $relation->setId1($parentId);
                         $relation->setId2($docId);
                         $relation->setDocumentModel1(get_class($parent));
                         $relation->setDocumentModel2(get_class($document));
                         $relation->setSortOrder($relation->getNextSortOrder($parent, $document));
                     }
                     $relation->save();
                 }
             }
             $con->commit();
             if (sfConfig::get('sf_cache_relations') && $updateCache && $parentId) {
                 self::updateRelationCache($parentId);
             }
             return true;
         } catch (Exception $e) {
             $con->rollback();
             throw $e;
         }
     }
 }