예제 #1
0
 /**
  * put your comment there...
  * 
  * @param mixed $ids
  */
 public function delete($ids)
 {
     // Allow single or multiple Ids to be passed.
     if (!is_array($ids)) {
         $ids = array($ids);
     }
     // Create Tables objects.
     $blocks = new CJTBlocksTable($this->dbDriver);
     $pins = new CJTBlockPinsTable($this->dbDriver);
     $codeFile = new CJTBlockFilesTable($this->dbDriver);
     // Get blocks revisions.
     $revisions['fields'] = array('id');
     $revisions['filters']['parent'] = $ids;
     $revisions['type'] = 'revision';
     $revisions['result'] = $blocks->get(null, $revisions['fields'], $revisions['filters']);
     // Revisions ids used as revision key.
     $revisions = array_keys($revisions['result']);
     // Delete all revisions for all "DELETED" blocks
     // only if there is at least one revision.
     if (!empty($revisions)) {
         $blocks->delete($revisions);
         $pins->delete($revisions);
         // Delete code files.
         $this->dbDriver->delete(sprintf('DELETE FROM #__cjtoolbox_block_files WHERE blockId IN(%s)', implode(',', $revisions)));
     }
     // Delete linked templates.
     $linkedOnlyTemplatesQuery = 'DELETE FROM #__cjtoolbox_block_templates WHERE blockId IN(%s)';
     $this->dbDriver->delete(sprintf($linkedOnlyTemplatesQuery, implode(',', $ids)));
     // Delete associated parameters.
     $mdlParams = new CJT_Models_Parameters();
     $mdlParams->delete($ids);
     // Delete form.
     $mdlForm = new CJT_Models_Forms();
     $mdlForm->delete($ids);
     // Delete blocks.
     $blocks->delete($ids);
     $pins->delete($ids);
     // Delete code files.
     $this->dbDriver->delete(sprintf('DELETE FROM #__cjtoolbox_block_files WHERE blockId IN(%s)', implode(',', $ids)));
     // Chaining!
     return $this;
 }