Changeset 12837
- Timestamp:
- Sep 4, 2009, 6:19:14 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
OpenPNE3/branches/fukamachi/db-convert-from-2.x/lib/task/openpneUpgradeFrom2Task.class.php
r12809 r12837 18 18 private $date = '0000-00-00 00:00:00'; 19 19 private $mapCategoryIds = array(); 20 private $mapCommunityAdmin = array();21 private $mapFileIds = array();22 20 private $birthdayProfileId = null; 23 private $duplicateCommunities = array();24 21 private $validatorFile = null; 25 22 private $unreadDiaryIds = array(); … … 89 86 $this->connectTo2(); 90 87 Doctrine::generateModelsFromDb($tmpdir, array('OpenPNE2'), array('generateBaseClasses' => false, 'baseClassName' => 'sfDoctrineRecord')); 88 $this->connectTo3(); 91 89 92 90 // generate OpenPNE3 models … … 99 97 100 98 // clear db records 101 $tables = array('Blacklist', 'File', 'FileBin', 'CommunityCategory', 'Community', 'CommunityConfig', 'CommunityMember', 'Member', 'MemberConfig', 'MemberImage', 'Profile', 'ProfileTranslation', 'ProfileOption', 'ProfileOptionTranslation', 'MemberProfile', 'MemberRelationship', 'CommunityTopic', 'CommunityEvent', 'Diary', 'DiaryImage', 'DiaryComment', 'DiaryCommentImage', 'DiaryCommentUnread', 'Message', 'MessageSendList', 'DeletedMessage', 'MessageFile');99 $tables = array('Blacklist', /*'File', 'FileBin',*/ 'CommunityCategory', 'Community', 'CommunityConfig', 'CommunityMember', 'Member', 'MemberConfig', 'MemberImage', 'Profile', 'ProfileTranslation', 'ProfileOption', 'ProfileOptionTranslation', 'MemberProfile', 'MemberRelationship', 'CommunityTopic', 'CommunityEvent', 'Diary', 'DiaryImage', 'DiaryComment', 'DiaryCommentImage', 'DiaryCommentUnread', /*'Message', 'MessageSendList', 'DeletedMessage', 'MessageFile'*/); 102 100 103 101 foreach ($tables as $table) 104 102 { 105 $this->clearDbTable($table);103 Doctrine::getTable($table)->createQuery()->delete()->execute(); 106 104 } 107 105 … … 111 109 print "converting Blacklist : ".memory_get_usage()."\n"; 112 110 $this->convertBlacklist(); 113 print "converting File and FileBin : ".memory_get_usage()."\n";114 $this->convertFileAndFileBin();111 //print "converting File and FileBin : ".memory_get_usage()."\n"; 112 //$this->convertFileAndFileBin(); 115 113 print "converting CommunityCategory : ".memory_get_usage()."\n"; 116 114 $this->convertCommunityCategory(); … … 129 127 print "converting ProfileOption : ".memory_get_usage()."\n"; 130 128 $this->convertProfileOption(); 131 print "converting MemberProfile : ".memory_get_usage()."\n";132 $this->convertMemberProfile();129 //print "converting MemberProfile : ".memory_get_usage()."\n"; 130 //$this->convertMemberProfile(); 133 131 print "converting MemberRelationship : ".memory_get_usage()."\n"; 134 132 $this->convertMemberRelationship(); … … 141 139 print "converting DiaryCommentAndImage : ".memory_get_usage()."\n"; 142 140 $this->convertDiaryCommentAndImage(); 143 print "converting MessageTables : ".memory_get_usage()."\n";144 $this->convertMessageTables();141 //print "converting MessageTables : ".memory_get_usage()."\n"; 142 //$this->convertMessageTables(); 145 143 146 144 // delete models' cache … … 148 146 } 149 147 148 /** 149 * Convert Methods 150 */ 150 151 protected function convertAdminUser() 151 152 { … … 232 233 protected function _createFile($param = array()) 233 234 { 234 $dupNamedFile = Doctrine::getTable('File')->createQuery()235 ->select('id')236 ->where('name = ?', $param['name'])237 ->fetchOne();238 239 235 // NOTICE: ignore if the file with same name had saved 240 if ($dupNamedFile) 241 { 242 $dupNamedFile->free(); 243 236 if ($this->getFileByName($param['name'])) 237 { 244 238 return; 245 239 } 246 240 247 $file = new TempFile(); 248 $file->setId($param['id']); 249 $file->setName($param['name']); 250 if (array_key_exists('original_filename', $param)) 251 { 252 $file->setOriginalFilename($param['original_filename']); 253 } 254 $file->setCreatedAt($param['date']); 255 $file->setUpdatedAt($param['date']); 256 257 $fileBin = new TempFileBin(); 258 $fileBin->setFileId($param['id']); 259 $fileBin->setBin($param['bin']); 260 $fileBin->setCreatedAt($param['date']); 261 $fileBin->setUpdatedAt($param['date']); 241 $paramFile = $param; 242 unset($paramFile['bin']); 243 $file = $this->insertInto('File', $paramFile, true); 244 245 unset($param['name']); 246 unset($param['original_name']); 247 $fileBin = $this->insertInto('FileBin', $param, true); 262 248 263 249 $file->setFileBin($fileBin); … … 272 258 273 259 $file->save(); 274 $this->mapFileIds[$param['name']] = $param['id'];275 260 276 261 $file->free(); … … 289 274 foreach ($cCommuCategoryParents as $cCategoryParent) 290 275 { 291 $categoryRoot = new TempCommunityCategory();292 $categoryRoot->setTreeKey($cCategoryParent->getCCommuCategoryParentId());293 $categoryRoot->setName($cCategoryParent->getName());294 $categoryRoot->setSortOrder($cCategoryParent->getSortOrder());295 $categoryRoot->save();276 $categoryRoot = $this->insertInto('CommunityCategory', array( 277 'tree_key' => $cCategoryParent->getCCommuCategoryParentId(), 278 'name' => $cCategoryParent->getName(), 279 'sort_order' => $cCategoryParent->getSortOrder(), 280 ), true); 296 281 297 282 $treeCategory->createRoot($categoryRoot); … … 321 306 } 322 307 308 $categoryRoot->free(); 323 309 $cCategoryParent->free(); 324 310 } … … 327 313 protected function convertCommunityAndCommunityConfig() 328 314 { 329 $this->connectTo2(); 330 $cCommus = Doctrine::getTable('CCommu')->createQuery() 331 ->orderBy('c_commu_id') 332 ->execute(); 333 $this->connectTo3(); 334 335 foreach ($cCommus as $cCommu) 336 { 337 $community = new TempCommunity(); 338 $community->setId($cCommu->getCCommuId()); 339 340 $community->setName($cCommu->getName()); 341 // NOTICE: add index if already created same name community 342 if ($this->_isDuplicateCommunityName($cCommu->getName())) 343 { 344 $this->_addIndexToCommunity($community); 345 } 346 347 if ($fileId = $this->getFileIdByName($cCommu->getImageFilename())) 348 { 349 $community->setFileId($fileId); 350 } 351 if ( 352 array_key_exists($cCommu->getCCommuCategoryId(), $this->mapCategoryIds) 353 && !$this->mapCategoryIds[$cCommu->getCCommuCategoryId()] 354 ) 355 { 356 $community->setCommunityCategoryId($this->mapCategoryIds[$cCommu->getCCommuCategoryId()]); 357 } 358 $community->setCreatedAt($cCommu->getRDate()); 359 $community->setUpdatedAt($cCommu->getUDatetime()); 360 361 $community->save(); 362 363 if (method_exists($cCommu, 'getIsOpen')){ 364 $publicFlag = new TempCommunityConfig(); 365 $publicFlag->setCommunityId($community->getId()); 366 $publicFlag->setName('public_flag'); 367 $publicFlag->setValue($cCommu->getIsOpen()); 368 $publicFlag->setCreatedAt($this->date); 369 $publicFlag->setUpdatedAt($this->date); 370 $publicFlag->save(); 371 } 372 373 if (method_exists($cCommu, 'getIsTopic')) 374 { 375 $topicAuthority = new TempCommunityConfig(); 376 $topicAuthority->setCommunityId($community->getId()); 377 $topicAuthority->setName('topic_authority'); 378 $topicAuthority->setValue($cCommu->getIsTopic()); 379 $topicAuthority->setCreatedAt($this->date); 380 $topicAuthority->setUpdatedAt($this->date); 381 $topicAuthority->save(); 382 } 383 384 $description = new TempCommunityConfig(); 385 $description->setCommunityId($community->getId()); 386 $description->setName('description'); 387 $description->setValue($cCommu->getInfo()); 388 $description->setCreatedAt($this->date); 389 $description->setUpdatedAt($this->date); 390 $description->save(); 391 392 $this->mapCommunityAdmin[$cCommu->getCCommuId()] = $cCommu->getCMemberIdAdmin(); 393 394 $cCommu->free(); 395 $community->free(); 396 } 397 } 398 399 protected function _isDuplicateCommunityName($name) 400 { 401 if (array_key_exists($name, $this->duplicateCommunities)) 402 { 403 return true; 404 } 405 406 return (boolean) Doctrine::getTable('Community')->createQuery() 407 ->where('name = ?', $name) 408 ->fetchOne(); 409 } 410 411 protected function _addIndexToCommunity($community) 412 { 413 $name = $community->getName(); 414 $index = array_key_exists($name, $this->duplicateCommunities) ? $this->duplicateCommunities[$name] : 0; 415 if ($index) 416 { 417 $community->setName(sprintf('%s (%d)', $name, ++$index)); 418 } 419 else 420 { 421 $dupCommunity = Doctrine::getTable('Community')->createQuery() 422 ->where('name = ?', $name) 423 ->orderBy('id desc') 424 ->fetchOne(); 425 if ($dupCommunity) 426 { 427 $dupCommunity->setName(sprintf('%s (%d)', $name, ++$index)); 428 $community->setName(sprintf('%s (%d)', $name, ++$index)); 429 } 430 } 431 $this->duplicateCommunities[$name] = $index; 315 $this->connectTo3(); 316 317 $offset = 0; 318 while ($cCommus = $this->getModelsIterator('CCommu', 100, $offset, 'c_commu_id')) 319 { 320 foreach ($cCommus as $cCommu) 321 { 322 // NOTICE: ignore if already created same name community 323 if ($this->isExist('Community', array('name' => $cCommu->getName()))) 324 { 325 $cCommu->free(); 326 continue; 327 } 328 329 $param = array( 330 'id' => $cCommu->getCCommuId(), 331 'name' => $cCommu->getName(), 332 'created_at' => $cCommu->getRDate(), 333 'updated_at' => $cCommu->getUDatetime(), 334 ); 335 if ($file = $this->getFileByName($cCommu->getImageFilename())) 336 { 337 $param['file_id'] = $file->getId(); 338 $file->free(); 339 } 340 if (array_key_exists($cCommu->getCCommuCategoryId(), $this->mapCategoryIds)) 341 { 342 $param['community_category_id'] = $this->mapCategoryIds[$cCommu->getCCommuCategoryId()]; 343 } 344 $this->insertInto('Community', $param); 345 346 // CommunityConfigs 347 $param = array( 348 'community_id' => $cCommu->getCCommuId(), 349 'created_at' => $this->date, 350 'updated_at' => $this->date, 351 ); 352 353 $configs = array(); 354 $configs['description'] = $cCommu->getInfo(); 355 if (method_exists($cCommu, 'getIsOpen')) 356 { 357 $configs['public_flag'] = $cCommu->getIsOpen(); 358 } 359 if (method_exists($cCommu, 'getIsTopic')) 360 { 361 $configs['topic_authority'] = $cCommu->getIsTopic(); 362 } 363 364 $this->createConfigs('CommunityConfig', $param, $configs); 365 366 $cCommu->free(); 367 } 368 $offset += 100; 369 } 432 370 } 433 371 434 372 protected function convertCommunityMember() 435 373 { 436 $this->connectTo2(); 437 $cCommuMembers = Doctrine::getTable('CCommuMember')->findAll(); 438 $this->connectTo3(); 439 440 foreach ($cCommuMembers as $cCommuMember) 441 { 442 $param = array( 443 'id' => $cCommuMember->getCCommuMemberId(), 444 'community_id' => $cCommuMember->getCCommuId(), 445 'member_id' => $cCommuMember->getCMemberId(), 446 'created_at' => $cCommuMember->getRDatetime(), 447 'updated_at' => $cCommuMember->getRDatetime(), 448 ); 449 if ($cCommuMember->getCCommuMemberId() === $this->mapCommunityAdmin[$cCommuMember->getCCommuId()]) 450 { 451 $param['position'] = 'admin'; 452 } 453 $this->insertInto('CommunityMember', $param); 454 455 $cCommuMember->free(); 374 $this->connectTo3(); 375 376 $offset = 0; 377 while ($cCommuMembers = $this->getModelsIterator('CCommuMember', 100, $offset)) 378 { 379 foreach ($cCommuMembers as $cCommuMember) 380 { 381 // NOTICE: ignore if the community this member joins is not exist 382 if (!$this->isExist('Community', array('id' => $cCommuMember->getCCommuId()))) 383 { 384 $cCommuMember->free(); 385 continue; 386 } 387 388 $param = array( 389 'id' => $cCommuMember->getCCommuMemberId(), 390 'community_id' => $cCommuMember->getCCommuId(), 391 'member_id' => $cCommuMember->getCMemberId(), 392 'created_at' => $cCommuMember->getRDatetime(), 393 'updated_at' => $cCommuMember->getRDatetime(), 394 ); 395 $this->connectTo2(); 396 if ( 397 $this->isExist('CCommu', array( 398 'c_commu_id' => $cCommuMember->getCCommuId(), 399 'c_member_id_admin' => $cCommuMember->getCCommuMemberId() 400 )) 401 ) 402 { 403 $param['position'] = 'admin'; 404 } 405 $this->connectTo3(); 406 $this->insertInto('CommunityMember', $param); 407 408 $cCommuMember->free(); 409 } 410 $offset += 100; 456 411 } 457 412 } … … 459 414 protected function convertMember() 460 415 { 461 $this->connectTo2(); 462 $cMembers = Doctrine::getTable('CMember')->createQuery() 463 ->orderBy('c_member_id') 464 ->execute(); 465 $this->connectTo3(); 466 467 foreach ($cMembers as $cMember) 468 { 469 $param = array( 470 'id' => $cMember->getCMemberId(), 471 'name' => $cMember->getNickname(), 472 'created_at' => $cMember->getRDate(), 473 'updated_at' => $cMember->getUDatetime(), 474 'is_active' => !$cMember->getIsLoginRejected(), 475 ); 476 if ($cMember->getCMemberIdInvite() && Doctrine::getTable('Member')->find($cMember->getCMemberIdInvite())) 477 { 478 $param['invite_member_id'] = $cMember->getCMemberIdInvite(); 479 } 480 481 $this->insertInto('Member', $param); 482 $cMember->free(); 416 $this->connectTo3(); 417 418 $offset = 0; 419 while ($cMembers = $this->getModelsIterator('CMember', 100, $offset, 'c_member_id')) 420 { 421 foreach ($cMembers as $cMember) 422 { 423 $param = array( 424 'id' => $cMember->getCMemberId(), 425 'name' => $cMember->getNickname(), 426 'created_at' => $cMember->getRDate(), 427 'updated_at' => $cMember->getUDatetime(), 428 'is_active' => !$cMember->getIsLoginRejected(), 429 ); 430 if ($cMember->getCMemberIdInvite() && Doctrine::getTable('Member')->find($cMember->getCMemberIdInvite())) 431 { 432 $param['invite_member_id'] = $cMember->getCMemberIdInvite(); 433 } 434 435 $this->insertInto('Member', $param); 436 $cMember->free(); 437 } 438 $offset += 100; 483 439 } 484 440 } … … 486 442 protected function convertMemberConfig() 487 443 { 488 $this->connectTo2(); 489 $cMemberSecures = Doctrine::getTable('CMemberSecure')->findAll(); 490 $this->connectTo3(); 491 492 foreach ($cMemberSecures as $cMemberSecure) 493 { 494 // NOTICE: ignore if the member isn't exist 495 if (!($cMember = Doctrine::getTable('CMember')->find($cMemberSecure->getCMemberId()))) 496 { 497 continue; 498 } 499 500 // common parameters 501 $param = array( 502 'member_id' => $cMemberSecure->getCMemberid(), 503 'created_at' => $this->date, 504 'updated_at' => $this->date, 505 ); 506 507 // MemberConfig records 508 $configs = array( 509 'pc_address' => $this->decrypt($cMemberSecure->getPcAddress()), 510 'password' => $cMemberSecure->getHashedPassword(), 511 'mobile_address' => $cMemberSecure->getKtaiAddress(), 512 'mobile_uid' => $cMemberSecure->getEasyAccessId(), 513 'lastLogin' => $cMember->getAccessDate(), 514 ); 515 516 $this->_createMemberConfigs($param, $configs); 517 518 $cMemberSecure->free(); 519 $cMember->free(); 520 } 521 } 522 523 protected function _createMemberConfigs($param, $configs) 524 { 525 foreach ($configs as $name => $value) 526 { 527 if (!$value) 528 { 529 continue; 530 } 531 532 $this->insertInto('MemberConfig', array_merge($param, array( 533 'name' => $name, 534 'value' => $value, 535 ))); 444 $this->connectTo3(); 445 446 $offset = 0; 447 while ($cMemberSecures = $this->getModelsIterator('CMemberSecure', 100, $offset)) 448 { 449 foreach ($cMemberSecures as $cMemberSecure) 450 { 451 // NOTICE: ignore if the member isn't exist 452 $this->connectTo2(); 453 if (!$this->isExist('CMember', array('c_member_id' => $cMemberSecure->getCMemberId()))) 454 { 455 $cMemberSecure->free(); 456 continue; 457 } 458 $this->connectTo3(); 459 460 // common parameters 461 $param = array( 462 'member_id' => $cMemberSecure->getCMemberId(), 463 'created_at' => $this->date, 464 'updated_at' => $this->date, 465 ); 466 467 // MemberConfig records 468 $configs = array( 469 'pc_address' => $this->decrypt($cMemberSecure->getPcAddress()), 470 'password' => $cMemberSecure->getHashedPassword(), 471 'mobile_address' => $cMemberSecure->getKtaiAddress(), 472 'mobile_uid' => $cMemberSecure->getEasyAccessId(), 473 'lastLogin' => $cMember->getAccessDate(), 474 ); 475 476 $this->createConfigs('MemberConfig', $param, $configs); 477 478 $cMemberSecure->free(); 479 $cMember->free(); 480 } 481 $offset += 100; 536 482 } 537 483 } … … 549 495 { 550 496 $getImageFilename = 'getImageFilename_'.$i; 551 $this->_createMemberImage(array( 552 'member_id' => $cMember->getCMemberId(), 553 'image_filename' => $cMember->$getImageFilename(), 554 'is_primary' => $cMember->getImageFilename() === $cMember->$getImageFilename(), 555 )); 497 498 if ($file = $this->getFileByName($cMember->$getImageFilename())) 499 { 500 $this->insertInto('MemberImage', array( 501 'member_id' => $cMember->getCMemberId(), 502 'file_id' => $file->getId(), 503 'image_filename' => $cMember->$getImageFilename(), 504 'is_primary' => $cMember->getImageFilename() === $cMember->$getImageFilename(), 505 'created_at' => $this->date, 506 'updated_at' => $this->date, 507 )); 508 $file->free(); 509 } 556 510 } 557 511 … … 562 516 } 563 517 564 protected function _createMemberImage($param = array())565 {566 if (!($memberImage = $this->getFile('MemberImage', $param['image_filename'])))567 {568 return;569 }570 571 $this->update($memberImage, $param);572 }573 574 518 protected function convertProfile() 575 519 { 576 $this->connectTo2(); 577 $cProfiles = Doctrine::getTable('CProfile')->findAll(); 578 $this->connectTo3(); 579 580 foreach ($cProfiles as $cProfile) 581 { 582 $this->insertInto('Profile', array( 583 'id' => $cProfile->getCProfileId(), 584 'name' => $cProfile->getName(), 585 'is_required' => $cProfile->getIsRequired(), 586 'is_edit_public_flag' => $cProfile->getPublicFlagEdit(), 587 'default_public_flag' => $cProfile->getPublicFlagDefault(), 588 'form_type' => $cProfile->getFormType(), 589 'value_type' => $cProfile->getValType(), 590 'is_disp_regist' => $cProfile->getDispRegist(), 591 'is_disp_config' => $cProfile->getDispConfig(), 592 'is_disp_search' => $cProfile->getDispSearch(), 593 'value_regexp' => $cProfile->getValRegexp(), 594 'value_min' => $cProfile->getValMin(), 595 'value_max' => $cProfile->getValMax(), 596 'sort_order' => $cProfile->getSortOrder(), 597 'created_at' => $this->date, 598 'updated_at' => $this->date, 599 )); 600 601 $profileTranslation = Doctrine::getTable('Profile')->createQuery('p') 602 ->leftJoin('p.Translation t WITH t.lang = "ja_JP"') 603 ->where('p.id = ?', $cProfile->getCProfileId()) 604 ->fetchOne(); 605 606 $param = array( 607 'caption' => $cProfile->getCaption(), 608 'lang' => 'ja_JP', 609 ); 610 $param['info'] = $cProfile->getInfo(); 611 612 $this->update($profileTranslation, $param); 613 614 $cProfile->free(); 615 $profileTranslation->free(); 520 $this->connectTo3(); 521 522 $offset = 0; 523 while ($cProfiles = $this->getModelsIterator('CProfile', 100, $offset)) 524 { 525 foreach ($cProfiles as $cProfile) 526 { 527 $this->insertInto('Profile', array( 528 'id' => $cProfile->getCProfileId(), 529 'name' => $cProfile->getName(), 530 'is_required' => $cProfile->getIsRequired(), 531 'is_edit_public_flag' => $cProfile->getPublicFlagEdit(), 532 'default_public_flag' => $cProfile->getPublicFlagDefault(), 533 'form_type' => $cProfile->getFormType(), 534 'value_type' => $cProfile->getValType(), 535 'is_disp_regist' => $cProfile->getDispRegist(), 536 'is_disp_config' => $cProfile->getDispConfig(), 537 'is_disp_search' => $cProfile->getDispSearch(), 538 'value_regexp' => $cProfile->getValRegexp(), 539 'value_min' => $cProfile->getValMin(), 540 'value_max' => $cProfile->getValMax(), 541 'sort_order' => $cProfile->getSortOrder(), 542 'created_at' => $this->date, 543 'updated_at' => $this->date, 544 )); 545 546 $profileTranslation = Doctrine::getTable('Profile')->createQuery('p') 547 ->leftJoin('p.Translation t WITH t.lang = "ja_JP"') 548 ->where('p.id = ?', $cProfile->getCProfileId()) 549 ->fetchOne(); 550 551 $param = array( 552 'caption' => $cProfile->getCaption(), 553 'lang' => 'ja_JP', 554 ); 555 $param['info'] = $cProfile->getInfo(); 556 557 $this->update($profileTranslation, $param); 558 559 $cProfile->free(); 560 $profileTranslation->free(); 561 } 562 $offset += 100; 616 563 } 617 564 … … 652 599 $this->connectTo3(); 653 600 654 foreach ($cProfileOptions as $cProfileOption) 655 { 656 $this->_createProfileOption(array( 657 'id' => $cProfileOption->getCProfileOptionId(), 658 'profile_id' => $cProfileOption->getCProfileId(), 659 'sort_order' => $cProfileOption->getSortOrder(), 660 ), $cProfileOption->getCProfileOptionId()); 661 662 $cProfileOption->free(); 601 $offset = 0; 602 while ($cProfileOptions = $this->getModelsIterator('CProfileOption', 100, $offset)) 603 { 604 foreach ($cProfileOptions as $cProfileOption) 605 { 606 $this->_createProfileOption(array( 607 'id' => $cProfileOption->getCProfileOptionId(), 608 'profile_id' => $cProfileOption->getCProfileId(), 609 'sort_order' => $cProfileOption->getSortOrder(), 610 ), $cProfileOption->getValue()); 611 $cProfileOption->free(); 612 } 613 $offset += 100; 663 614 } 664 615 665 616 $this->_createProfileOption(array( 666 'profile_id' => $this->birthdayProfileId, 667 'sort_order' => 0, 668 )); 669 } 670 671 protected function _createProfileOption($param = array(), $value = null) 672 { 673 $param['created_at'] = $this->date; 674 $param['updated_at'] = $this->date; 675 676 $this->insertInto('ProfileOption', $param); 677 678 if (!is_null($value)) 617 'profile_id' => $this->birthdayProfileId, 618 'sort_order' => 0, 619 )); 620 } 621 622 protected function _createProfileOption($param = array(), $translation = null) 623 { 624 $profileOption = $this->insertInto('ProfileOption', $param, true); 625 626 if (!is_null($translation)) 679 627 { 680 628 $profileOptionTranslation = Doctrine::getTable('ProfileOption')->createQuery('p') 681 629 ->leftJoin('p.Translation t WITH t.lang = "ja_JP"') 682 ->where('p.id = ?', $p aram['id'])630 ->where('p.id = ?', $profileOption->getId()) 683 631 ->fetchOne(); 684 632 685 $this->update($profileOptionTranslation, array( 686 'value' => $value, 687 'lang' => 'ja_JP', 688 )); 689 } 633 $profileOptionTranslation->setValue($translation); 634 $profileOptionTranslation->save(); 635 636 $profileOptionTranslation->free(); 637 } 638 639 $profileOption->free(); 690 640 } 691 641 … … 701 651 { 702 652 // NOTICE: ignore if the member isn't exist 703 if (!$this->isExist Member($cMemberProfile->getCMemberId()))653 if (!$this->isExist('Member', array('id' => $cMemberProfile->getCMemberId()))) 704 654 { 705 655 $cMemberProfile->free(); … … 791 741 protected function convertMemberRelationship() 792 742 { 793 $this->connectTo2(); 794 $cFriends = Doctrine::getTable('CFriend')->findAll(); 795 $cFriendConfirms = Doctrine::getTable('CFriendConfirm')->findAll(); 796 $cAccessBlocks = Doctrine::getTable('CAccessBlock')->findAll(); 797 $this->connectTo3(); 798 799 foreach ($cFriends as $cFriend) 800 { 801 // NOTICE: ignore if member_id_to is equal to member_id_from 802 if ($cFriend->getCMemberIdTo() === $cFriend->getCMemberIdFrom()) 803 { 804 continue; 805 } 806 807 $this->_updateMemberRelationship(array( 808 'member_id_from' => $cFriend->getCMemberIdFrom(), 809 'member_id_to' => $cFriend->getCMemberIdTo(), 810 'datetime' => $cFriend->getRDatetime(), 811 'is_friend' => true, 812 )); 813 $cFriend->free(); 814 } 815 816 foreach ($cFriendConfirms as $cFriendConfirm) 817 { 818 // NOTICE: ignore if member_id_to is equal to member_id_from 819 if ($cFriendConfirm->getCMemberIdTo() === $cFriendConfirm->getCMemberIdFrom()) 820 { 821 continue; 822 } 823 824 $this->_updateMemberRelationship(array( 825 'member_id_from' => $cFriendConfirm->getCMemberIdFrom(), 826 'member_id_to' => $cFriendConfirm->getCMemberIdTo(), 827 'datetime' => $cFriendConfirm->getRDatetime(), 828 'is_friend_pre' => true, 829 )); 830 $cFriendConfirm->free(); 831 } 832 833 foreach ($cAccessBlocks as $cAccessBlock) 834 { 835 // NOTICE: ignore if member_id is equal to member_id_block 836 if ($cAccessBlock->getCMemberId() === $cAccessBlock->getCMemberIdBlock()) 837 { 838 continue; 839 } 840 841 $this->_updateMemberRelationship(array( 842 'member_id_from' => $cAccessBlock->getCMemberId(), 843 'member_id_to' => $cAccessBlock->getCMemberIdBlock(), 844 'datetime' => $cAccessBlock->getRDatetime(), 845 'is_access_block' => true, 846 )); 847 $cAccessBlock->free(); 743 $this->connectTo3(); 744 745 $offset = 0; 746 while ($cFriends = $this->getModelsIterator('CFriend', 100, $offset)) 747 { 748 foreach ($cFriends as $cFriend) 749 { 750 $this->_updateMemberRelationship(array( 751 'member_id_from' => $cFriend->getCMemberIdFrom(), 752 'member_id_to' => $cFriend->getCMemberIdTo(), 753 'datetime' => $cFriend->getRDatetime(), 754 'is_friend' => true, 755 )); 756 $cFriend->free(); 757 } 758 $offset += 100; 759 } 760 761 $offset = 0; 762 while ($cFriendConfirms = $this->getModelsIterator('CFriendConfirm', 100, $offset)) 763 { 764 foreach ($cFriendConfirms as $cFriendConfirm) 765 { 766 $this->_updateMemberRelationship(array( 767 'member_id_from' => $cFriendConfirm->getCMemberIdFrom(), 768 'member_id_to' => $cFriendConfirm->getCMemberIdTo(), 769 'datetime' => $cFriendConfirm->getRDatetime(), 770 'is_friend_pre' => true, 771 )); 772 $cFriendConfirm->free(); 773 } 774 $offset += 100; 775 } 776 777 $offset = 0; 778 while ($cAccessBlocks = $this->getModelsIterator('CAccessBlock', 100, $offset)) 779 { 780 foreach ($cAccessBlocks as $cAccessBlock) 781 { 782 $this->_updateMemberRelationship(array( 783 'member_id_from' => $cAccessBlock->getCMemberId(), 784 'member_id_to' => $cAccessBlock->getCMemberIdBlock(), 785 'datetime' => $cAccessBlock->getRDatetime(), 786 'is_access_block' => true, 787 )); 788 $cAccessBlock->free(); 789 } 790 $offset += 100; 848 791 } 849 792 } … … 851 794 protected function _updateMemberRelationship($param = array()) 852 795 { 853 $q = Doctrine::getTable('MemberRelationship')->createQuery() 854 ->where('member_id_from = ?', $param['member_id_from']) 855 ->andWhere('member_id_to = ?', $param['member_id_to']); 856 857 if (!($memberRelationship = $q->fetchOne())) 858 { 859 $this->insertInto('MemberRelationship', $param); 860 } 861 else 796 // NOTICE: ignore if member_id_from is equal to member_id_to 797 if ($param['member_id_from'] === $param['member_id_to']) 798 { 799 return; 800 } 801 802 $memberIds = array( 803 'member_id_from' => $param['member_id_from'], 804 'member_id_to' => $param['member_id_to'], 805 ); 806 if ($memberRelationship = $this->selectOne('MemberRelationship', $memberIds)) 862 807 { 863 808 unset($param['member_id_from']); 864 809 unset($param['member_id_to']); 865 810 $this->update($memberRelationship, $param); 811 $memberRelationship->free(); 812 } 813 else 814 { 815 $this->insertInto('MemberRelationship', $param); 866 816 } 867 817 } … … 874 824 ->execute(); 875 825 $this->connectTo3(); 876 $this->clearDbTable('CommunityTopic');877 826 878 827 foreach ($cCommuTopics as $cCommuTopic) … … 1009 958 $this->connectTo2(); 1010 959 // NOTICE: ignore if the member isn't exist 1011 if (!($cMember = Doctrine::getTable('CMember')->find($cDiary->getCMemberId()))) 1012 { 960 if (!$this->isExist('CMember', array('c_member_id' => $cDiary->getCMemberId()))) 961 { 962 $cDiary->free(); 1013 963 continue; 1014 964 } 1015 $cMember->free();1016 965 $this->connectTo3(); 1017 966 1018 $diary = new TempDiary(); 1019 $diary->setId($cDiary->getCDiaryId()); 1020 $diary->setMemberId($cDiary->getCMemberId()); 1021 $diary->setTitle($cDiary->getSubject()); 1022 $diary->setBody($cDiary->getBody()); 1023 $diary->setPublicFlag($cDiary->getPublicFlag()); 1024 $diary->setCreatedAt($cDiary->getRDatetime()); 1025 $diary->setUpdatedAt($cDiary->getUDatetime()); 967 $diary = $this->insertInto('Diary', array( 968 'id' => $cDiary->getCDiaryId(), 969 'member_id' => $cDiary->getCMemberId(), 970 'title' => $cDiary->getSubject(), 971 'body' => $cDiary->getBody(), 972 'public_flag' => $cDiary->getPublicFlag(), 973 'created_at' => $cDiary->getPublicFlag(), 974 'updated_at' => $cDiary->getUDatetime(), 975 ), true); 1026 976 1027 977 for ($i = 1; $i <= 3; ++$i) 1028 978 { 1029 979 $getImageFilename = 'getImageFilename_'.$i; 1030 if ($ diaryImage = $this->getFile('DiaryImage', $cDiary->$getImageFilename(), false))980 if ($file = $this->getFileByName($cDiary->$getImageFilename())) 1031 981 { 1032 982 $diary->setHasImages(true); 1033 $diaryImage->setDiaryId($cDiary->getCDiaryId()); 1034 $diaryImage->setNumber($i); 1035 $diaryImage->save(); 1036 $diaryImage->free(); 983 $this->insertInto('DiaryImage', array( 984 'diary_id' => $diary->getId(), 985 'number' => $i, 986 'file_id' => $file->getId(), 987 )); 988 $file->free(); 1037 989 } 1038 990 } … … 1074 1026 } 1075 1027 1076 $this->insert To('DiaryComment', array(1028 $this->insertInto('DiaryComment', array( 1077 1029 'id' => $cDiaryComment->getCDiaryCommentId(), 1078 1030 'diary_id' => $cDiaryComment->getCDiaryId(), … … 1087 1039 { 1088 1040 $getImageFilename = 'getImageFilename_'.$i; 1089 if ($ diaryCommentImage = $this->getFile('DiaryCommentImage', $cDiaryComment->$getImageFilename(), false))1041 if ($file = $this->getFileByName($cDiaryComment->$getImageFilename())) 1090 1042 { 1091 $diaryCommentImage->setDiaryCommentId($cDiaryComment->getCDiaryCommentId()); 1092 $diaryCommentImage->save(); 1093 $diaryCommentImage->free(); 1043 $this->insertInto('DiaryCommentImage', array( 1044 'diary_comment_id' => $cDiaryComment->getCDiaryCommentId(), 1045 'file_id' => $file->getId(), 1046 )); 1047 $file->free(); 1094 1048 } 1095 1049 } … … 1164 1118 1165 1119 // create MessageFile 1120 $param = array( 1121 'message_id' => $cMessage->getCMessageId(), 1122 'created_at' => $this->date, 1123 'updated_at' => $this->date, 1124 ); 1166 1125 for ($i = 1; $i <= 3; ++$i) 1167 1126 { 1168 1127 $getImageFilename = 'getImageFilename_'.$i; 1169 $this->_createMessageFile($cMessage->getCMessageId(), $cMessage->$getImageFilename()); 1170 } 1171 $this->_createMessageFile($cMessage->getCMessageId(), $cMessage->getFilename()); 1128 if ($file = $this->getFileByName($cMessage->$getImageFilename())) 1129 { 1130 $this->insertInto('MessageFile', array_merge($param, array('file_id' => $file->getId()))); 1131 $file->free(); 1132 } 1133 } 1134 if ($file = $this->getFileByName($cMessage->getFilename())) 1135 { 1136 $this->insertInto('MessageFile', array_merge($param, array('file_id' => $file->getId()))); 1137 $file->free(); 1138 } 1172 1139 1173 1140 $messageSendList->free(); … … 1202 1169 } 1203 1170 1204 protected function _createMessageFile($messageId, $filename) 1205 { 1206 if ($messageFile = $this->getFile('MessageFile', $filename)) 1207 { 1208 $this->update($messageFile, array('message_id' => $messageId)); 1209 } 1210 } 1211 1171 /** 1172 * Functions 1173 */ 1212 1174 protected function clearCache() 1213 1175 { … … 1226 1188 } 1227 1189 1190 protected function getFileByName($name = null) 1191 { 1192 if ($name) 1193 { 1194 return $this->selectOne('File', array('name' => $name)); 1195 } 1196 } 1197 1198 protected function getModelsIterator($table, $limit = 100, $offset = 0, $orderBy = null) 1199 { 1200 $this->connectTo2(); 1201 $q = Doctrine::getTable($table)->createQuery() 1202 ->limit($limit) 1203 ->offset($offset); 1204 if (!is_null($orderBy)) 1205 { 1206 $q->orderBy($orderBy); 1207 } 1208 $cModels = $q->execute(); 1209 $this->connectTo3(); 1210 1211 return $cModels->count() ? $cModels : false; 1212 } 1213 1214 protected function createConfigs($tableName, $param, $configs) 1215 { 1216 foreach ($configs as $name => $value) 1217 { 1218 if (!$value) 1219 { 1220 continue; 1221 } 1222 1223 $this->insertInto($tableName, array_merge($param, array( 1224 'name' => $name, 1225 'value' => $value, 1226 ))); 1227 } 1228 } 1229 1230 /** 1231 * Initialize 1232 */ 1228 1233 protected function getBaseModelsDirectories($dir) 1229 1234 { … … 1291 1296 } 1292 1297 1293 protected function clearDbTable($table) 1294 { 1295 Doctrine::getTable($table)->createQuery()->delete()->execute(); 1298 /** 1299 * Utilities 1300 */ 1301 protected function getValidatorFile() 1302 { 1303 if ($this->validatorFile === null) 1304 { 1305 $this->validatorFile = new sfValidatorFile(); 1306 } 1307 1308 return $this->validatorFile; 1309 } 1310 1311 protected function makeCamelCase($string = '') 1312 { 1313 $camel = ''; 1314 $words = explode('_', $string); 1315 $camel .= array_shift($words); 1316 foreach ($words as $word) 1317 { 1318 $camel .= ucfirst($word); 1319 } 1320 1321 return $camel; 1296 1322 } 1297 1323 … … 1322 1348 } 1323 1349 1324 protected function getFileIdByName($name) 1325 { 1326 if (!$name) 1327 { 1328 return; 1329 } 1330 1331 if (array_key_exists($name, $this->mapFileIds)) 1332 { 1333 return $this->mapFileIds[$name]; 1334 } 1335 } 1336 1337 protected function isExistMember($memberId) 1338 { 1339 $this->connectTo2(); 1340 $member = Doctrine::getTable('CMember')->find($memberId); 1341 $this->connectTo3(); 1342 1343 if ($member) 1344 { 1345 $member->free(); 1346 1347 return true; 1348 } 1349 1350 return false; 1351 } 1352 1353 protected function getValidatorFile() 1354 { 1355 if ($this->validatorFile === null) 1356 { 1357 $this->validatorFile = new sfValidatorFile(); 1358 } 1359 1360 return $this->validatorFile; 1361 } 1362 1363 protected function getFile($className, $filename, $timestamp = true) 1364 { 1365 if (!$filename) 1366 { 1367 return; 1368 } 1369 1370 // NOTICE: ignore if the member image isn't exist 1371 if (!($fileId = $this->getFileIdByName($filename))) 1372 { 1373 return; 1374 } 1375 1376 $className = 'Temp'.$className; 1377 $file = new $className(); 1378 $file->setFileId($fileId); 1379 if ($timestamp) 1380 { 1381 $file->setCreatedAt($this->date); 1382 $file->setUpdatedAt($this->date); 1383 } 1384 1385 return $file; 1386 } 1387 1388 protected function printMemoryUsage($msg = 'point: ') 1350 protected function printMemoryUsage($msg = 'point') 1389 1351 { 1390 1352 $memory = memory_get_usage(); … … 1397 1359 } 1398 1360 1399 protected function getModelsIterator($table, $limit = 100, $offset = 0) 1400 { 1401 $this->connectTo2(); 1402 $cModels = Doctrine::getTable($table)->createQuery() 1403 ->limit($limit) 1404 ->offset($offset) 1405 ->execute(); 1406 $this->connectTo3(); 1407 1408 return $cModels->count() ? $cModels : false; 1409 } 1410 1411 protected function update($record, $param = array(), $returnRecord = false) 1361 /** 1362 * SQL like operations 1363 */ 1364 protected function selectOne($tableName, $where = array()) 1365 { 1366 $q = Doctrine::getTable($tableName)->createQuery(); 1367 1368 foreach ($where as $key => $value) 1369 { 1370 $q->andWhere($key.' = ?', $value); 1371 } 1372 1373 return $q->fetchOne(); 1374 } 1375 1376 protected function isExist($tableName, $where = array()) 1377 { 1378 return (boolean) $this->selectOne($tableName, $where); 1379 } 1380 1381 protected function insertInto($tableName, $param = array(), $returnRecord = false) 1382 { 1383 $className = 'Temp'.$tableName; 1384 $record = new $className(); 1385 1386 return $this->update($record, $param, $returnRecord); 1387 } 1388 1389 protected function update(&$record, $param = array(), $returnRecord = false) 1412 1390 { 1413 1391 foreach ($param as $field => $value) … … 1424 1402 $record->free(); 1425 1403 } 1426 1427 protected function insertInto($tableName, $param = array(), $returnRecord = false)1428 {1429 $className = 'Temp'.$tableName;1430 $record = new $className();1431 1432 return $this->update($record, $param, $returnRecord);1433 }1434 1435 protected function makeCamelCase($string = '')1436 {1437 $camel = '';1438 $words = explode('_', $string);1439 $camel .= array_shift($words);1440 foreach ($words as $word)1441 {1442 $camel .= ucfirst($word);1443 }1444 1445 return $camel;1446 }1447 1404 }
Note: See TracChangeset
for help on using the changeset viewer.