Example #1
0
 public function delete()
 {
     if ($this->id == 1) {
         $v = new Validation(array("id"));
         $v->add_error("id", "cant_delete_root_album");
         ORM_Validation_Exception::handle_validation($this->table_name, $v);
     }
     $old = clone $this;
     module::event("item_before_delete", $this);
     $parent = $this->parent();
     if ($parent->album_cover_item_id == $this->id) {
         item::remove_album_cover($parent);
     }
     $path = $this->file_path();
     $resize_path = $this->resize_path();
     $thumb_path = $this->thumb_path();
     parent::delete();
     if (is_dir($path)) {
         // Take some precautions against accidentally deleting way too much
         $delete_resize_path = dirname($resize_path);
         $delete_thumb_path = dirname($thumb_path);
         if ($delete_resize_path == VARPATH . "resizes" || $delete_thumb_path == VARPATH . "thumbs" || $path == VARPATH . "albums") {
             throw new Exception("@todo DELETING_TOO_MUCH ({$delete_resize_path}, {$delete_thumb_path}, {$path})");
         }
         @dir::unlink($path);
         @dir::unlink($delete_resize_path);
         @dir::unlink($delete_thumb_path);
     } else {
         @unlink($path);
         @unlink($resize_path);
         @unlink($thumb_path);
     }
     module::event("item_deleted", $old);
 }
Example #2
0
 /**
  * Validates the current object. This method requires that rules are set to be useful, if called with out
  * any rules set, or if a Validation object isn't passed, nothing happens.
  *
  * @param   object   Validation array
  * @param   boolean  Save on validate
  * @return  ORM
  * @chainable
  */
 public function validate(Validation $array = NULL)
 {
     if ($array === NULL) {
         $array = new Validation($this->object);
     }
     if (count($this->rules) > 0) {
         foreach ($this->rules as $field => $parameters) {
             foreach ($parameters as $type => $value) {
                 switch ($type) {
                     case 'pre_filter':
                         $array->pre_filter($value, $field);
                         break;
                     case 'rules':
                         $rules = array_merge(array($field), $value);
                         call_user_func_array(array($array, 'add_rules'), $rules);
                         break;
                     case 'callbacks':
                         $callbacks = array_merge(array($field), $value);
                         call_user_func_array(array($array, 'add_callbacks'), $callbacks);
                         break;
                 }
             }
         }
     }
     // Validate the array
     if (($this->_valid = $array->validate()) === FALSE) {
         ORM_Validation_Exception::handle_validation($this->table_name, $array);
     }
     // Fields may have been modified by filters
     $this->object = array_merge($this->object, $array->getArrayCopy());
     // Return validation status
     return $this;
 }