Ejemplo n.º 1
0
 /**
  * Efetua um delete baseado em clausulas where
  * 
  * <p>Qualquer parametro depois de $clause sera usado como prepared statement
  * para remocao dos dados.
  * 
  * Caso for usar prepared statement, colocar o alias do objeto como a letra "o" 
  * </p>
  * 
  * @author Hugo Ferreira da Silva
  * @link http://www.hufersil.com.br
  * @param string $clause condicao para remocao
  * @return void
  */
 public function deleteWhere($clause)
 {
     $this->obj->reset();
     $this->obj->alias('o');
     $args = func_get_args();
     // se a pessoa passou parametros a mais do que a clausula
     if ($args > 1) {
         // entao eh prepared statement, chamamos o where com os argumentos
         call_user_func_array(array($this->obj, 'where'), $args);
     } else {
         // NAO eh prepared statement, chamamos o where
         $this->obj->where($clause);
     }
     $this->obj->delete(true);
 }
Ejemplo n.º 2
0
 /**
  * Remove um no e todos os seus dependentes
  * 
  * @author Hugo Ferreira da Silva
  * @param int $deleteMode Modo de remover
  * @return void
  */
 public function delete($deleteMode = Lumine_Tree::DELETE_SET_NULL)
 {
     $this->dispatchEvent(new Lumine_Tree_Event(Lumine_Tree_Event::PRE_NODE_DELETE, $this));
     $parent = $this->getParentNode();
     while ($child = $this->getChildNodes()->nextSibling()) {
         switch ($deleteMode) {
             case Lumine_Tree::DELETE_SET_NULL:
                 if (!is_null($parentNode)) {
                     $child->{$this->fieldParentId} = $parentNode->{$this->fieldId};
                 } else {
                     $child->{$this->fieldParentId} = null;
                 }
                 $child->getObj()->save();
                 break;
             case Lumine_Tree::DELETE_CASCADE:
                 $child->delete($deleteMode);
                 break;
         }
     }
     $this->obj->delete();
     $this->childNodes = null;
     $this->destroy();
     $this->dispatchEvent(new Lumine_Tree_Event(Lumine_Tree_Event::POS_NODE_DELETE, $this));
 }