コード例 #1
0
ファイル: value.class.php プロジェクト: suxinde2009/www
 /**
  * @see ValueInterface::delete_version()
  * @param integer $internal_revision
  * @return bool
  */
 public function delete_version($internal_revision)
 {
     global $transaction;
     if ($this->value_id and $this->value and $this->value_version) {
         if (is_numeric($internal_revision)) {
             $this->open_internal_revision($internal_revision);
             $number_of_root_major_versions = ValueVersion_Access::get_number_of_root_major_versions_by_toid($this->value_id);
             if ($number_of_root_major_versions > 1) {
                 $transaction_id = $transaction->begin();
                 $value_version_id = ValueVersion_Access::get_entry_by_toid_and_internal_revision($this->value_id, $internal_revision);
                 $minor_value_array = ValueVersion_Access::list_entries_by_previous_version_id($value_version_id);
                 if (is_array($minor_value_array) and count($minor_value_array) >= 1) {
                     foreach ($minor_value_array as $fe_key => $fe_value) {
                         $value = new Value($this->value_id);
                         $value->open_value_version_id($fe_value);
                         if ($value->delete_version($value->get_internal_revision()) == false) {
                             if ($transaction_id != null) {
                                 $transaction->rollback($transaction_id);
                             }
                             return 0;
                         }
                     }
                 }
                 if ($this->value_version->get_current() == true) {
                     $next_current_value_version_id = ValueVersion_Access::get_last_uploaded_version_entry_by_toid($this->value_id, $internal_revision);
                     $value_version_access = new ValueVersion_Access($next_current_value_version_id);
                     $value_version_access->set_current(true);
                 }
                 if ($this->value_version->delete() == false) {
                     if ($transaction_id != null) {
                         $transaction->rollback($transaction_id);
                     }
                     return 0;
                 } else {
                     if ($transaction_id != null) {
                         $transaction->commit($transaction_id);
                     }
                     return 1;
                 }
             } else {
                 if ($this->delete() == true) {
                     return 2;
                 } else {
                     return 0;
                 }
             }
         } else {
             return 0;
         }
     } else {
         return 0;
     }
 }