/**
  * Set data from the form into the object
  *
  * If errors detected in the object it's returned into an array
  *
  * @access	private
  * @return	boolean
  */
 private function check_post_data()
 {
     $results = array();
     $errors = array();
     array_push($results, $this->_post->__set('_title', VPost::title()));
     array_push($results, $this->_post->__set('_content', VPost::content()));
     array_push($results, $this->_post->__set('_allow_comment', VPost::allow_comment('closed')));
     if (VPost::publish(false)) {
         array_push($results, $this->_post->__set('_status', 'publish'));
     } else {
         array_push($results, $this->_post->__set('_status', 'draft'));
     }
     array_push($results, $this->_post->__set('_category', implode(',', VPost::categories(array()))));
     //insertion of an empty aarray to return error message defined in the object
     array_push($results, $this->_post->__set('_tags', VPost::tags('divers')));
     if ($this->_action == 'to_insert') {
         array_push($results, $this->_post->__set('_permalink', Helper::slug($this->_post->__get('_title'))));
     }
     //we should make it in create method, but we need to handle the error
     foreach ($results as $result) {
         if ($result !== true) {
             array_push($errors, '<li>- ' . $result . '</li>');
         }
     }
     if (!empty($errors)) {
         $error_msg = 'Check your informations:<br/><ul>' . implode('', $errors) . '</ul>';
         $this->_action_msg = ActionMessages::custom_wrong($error_msg);
         return false;
     } else {
         return true;
     }
 }
 /**
  * Move uploaded files to the right place and insert metadata in the database
  *
  * @access	private
  */
 private function create()
 {
     if (VPost::upload(false)) {
         try {
             $path = 'content/' . date('Y/m/');
             $img = new HandleMedia();
             $img->load_upload('file');
             $name = Helper::remove_accent($img->_name);
             $mime = $img->_mime;
             if (file_exists(PATH . $path . $name)) {
                 throw new Exception('The file "' . $name . '" already exists');
             }
             $img->save(PATH . $path . $name);
             if (substr($mime, 0, 5) == 'image') {
                 $img->thumb(150, 0);
                 $img->thumb(300, 0);
                 $img->thumb(1000, 0);
                 $this->_media->_status = 'draft';
             } elseif (substr($mime, 0, 5) == 'video') {
                 $this->_media->_status = 'publish';
             }
             $this->_media->_name = $name;
             $this->_media->_type = $mime;
             $this->_media->_author = $this->_user['user_id'];
             $this->_media->_allow_comment = 'closed';
             $this->_media->_permalink = $path . $name;
             $this->_media->_album = 0;
             $this->_media->create();
             Session::monitor_activity('has uploaded a file named: ' . $this->_media->_name);
             if (substr($mime, 0, 5) == 'video') {
                 header('Location: index.php?ns=media&ctl=manage&type=video');
             } else {
                 header('Location: index.php?ns=media&ctl=manage');
             }
         } catch (Exception $e) {
             $this->_action_msg = ActionMessages::custom_wrong($e->getMessage());
         }
     } elseif (VPost::create_album(false) && $this->_user['album_photo']) {
         if (!VPost::name()) {
             $this->_action_msg = ActionMessages::custom_wrong('Album name missing');
         } else {
             try {
                 $name = VPost::name();
                 $path = 'content/albums/' . Helper::slug($name) . '/';
                 if (file_exists(PATH . $path)) {
                     throw new Exception('The album "' . $name . '" already exists');
                 }
                 $this->_media->_name = $name;
                 $this->_media->_type = 'album';
                 $this->_media->_author = $this->_user['user_id'];
                 $this->_media->_status = 'draft';
                 $this->_media->_permalink = $path;
                 $this->_media->_description = stripslashes(VPost::description());
                 $this->_media->_category = implode(',', VPost::cat(array()));
                 $this->_media->_allow_comment = VPost::allow_comment('closed');
                 $this->_media->_album = 0;
                 $img = new HandleMedia();
                 $img->load_upload('cover');
                 $img->save(PATH . $path . 'cover.png');
                 $img->thumb(150, 0);
                 $img->thumb(300, 0);
                 $img->thumb(1000, 0);
                 $this->_media->create();
                 Session::monitor_activity('created an album named: ' . $this->_media->_name);
                 header('Location: index.php?ns=media&ctl=albums&action=edit&id=' . $this->_media->_id);
             } catch (Exception $e) {
                 $this->_action_msg = ActionMessages::custom_wrong($e->getMessage());
             }
         }
     } elseif (VPost::link_alien(false)) {
         if (!VPost::name() || !VPost::embed_code()) {
             $this->_action_msg = ActionMessages::custom_wrong('There\'s missing informations');
         } else {
             try {
                 $this->_media->_name = VPost::name();
                 $this->_media->_type = 'alien';
                 $this->_media->_author = $this->_user['user_id'];
                 $this->_media->_status = 'draft';
                 $this->_media->_allow_comment = 'closed';
                 $this->_media->_permalink = Helper::slug(VPost::name());
                 $this->_media->_embed_code = VPost::embed_code();
                 $this->_media->_album = 0;
                 $this->_media->create();
                 Session::monitor_activity('linked a new video named: ' . $this->_media->_name);
                 header('Location: index.php?ns=media&ctl=manage&type=video');
             } catch (Exception $e) {
                 $this->_action_msg = ActionMessages::custom_wrong($e->getMessage());
             }
         }
     } elseif (VPost::register_video(false)) {
         try {
             if (!file_exists(PATH . VPost::url())) {
                 throw new Exception('Video not found');
             }
             if (!VPost::mime()) {
                 throw new Exception('Video mime type missing');
             }
             $this->_media->_name = VPost::name();
             $this->_media->_type = VPost::mime();
             $this->_media->_author = $this->_user['user_id'];
             $this->_media->_status = 'publish';
             $this->_media->_allow_comment = 'closed';
             $this->_media->_permalink = VPost::url();
             $this->_media->_album = 0;
             $this->_media->create();
             Session::monitor_activity('registered a new video named: ' . $this->_media->_name);
             header('Location: index.php?ns=media&ctl=manage&action=edit&type=video&id=' . $this->_media->_id);
         } catch (Exception $e) {
             $this->_action_msg = ActionMessages::custom_wrong($e->getMessage());
         }
     }
 }
 /**
  * Update album and pictures metadatas
  *
  * @access	private
  */
 private function update()
 {
     if (VPost::apply_action(false) && in_array(VPost::action(), array('publish', 'unpublish'))) {
         switch (VPost::action()) {
             case 'publish':
                 $status = 'publish';
                 break;
             case 'unpublish':
                 $status = 'draft';
                 break;
         }
         if (VPost::album_id()) {
             try {
                 foreach (VPost::album_id() as $id) {
                     $album = new Media();
                     $album->_id = $id;
                     $album->_status = $status;
                     $album->update('_status', 'str');
                 }
                 $result = true;
             } catch (Exception $e) {
                 $result = $e->getMessage();
             }
             $this->_action_msg = ActionMessages::updated($result);
         }
     } elseif (VPost::save(false)) {
         try {
             $album = new Media();
             $album->_id = VPost::album_id();
             $album->_name = VPost::name();
             $album->_description = VPost::description();
             $album->_allow_comment = VPost::allow_comment('closed');
             $album->_category = implode(',', VPost::cat(array()));
             $album->update('_name', 'str');
             $album->update('_description', 'str');
             $album->update('_allow_comment', 'str');
             $album->update('_category', 'str');
             foreach ($_POST as $key => $value) {
                 $pic = substr($key, 0, 3);
                 if ($pic == 'pic') {
                     $id = substr($key, 3);
                     $picture = new Media();
                     $picture->_id = $id;
                     $picture->_name = VPost::$key();
                     $picture->update('_name', 'str');
                 }
             }
             $result = true;
         } catch (Exception $e) {
             $result = $e->getMessage();
         }
         $this->_action_msg = ActionMessages::updated($result);
     } elseif (VPost::publish(false)) {
         try {
             $album = new Media();
             $album->_id = VPost::album_id();
             $album->_status = 'publish';
             $album->_name = VPost::name();
             $album->_description = VPost::description();
             $album->_allow_comment = VPost::allow_comment('closed');
             $album->_category = implode(',', VPost::cat(array()));
             $album->update('_name', 'str');
             $album->update('_description', 'str');
             $album->update('_allow_comment', 'str');
             $album->update('_category', 'str');
             $album->update('_status', 'str');
             $result = true;
         } catch (Exception $e) {
             $result = $e->getMessage();
         }
         $this->_action_msg = ActionMessages::updated($result);
     } elseif (VPost::unpublish(false)) {
         try {
             $album = new Media();
             $album->_id = VPost::album_id();
             $album->_status = 'draft';
             $album->update('_status', 'str');
             $result = true;
         } catch (Exception $e) {
             $result = $e->getMessage();
         }
         $this->_action_msg = ActionMessages::updated($result);
     } elseif (VPost::update_image(false)) {
         try {
             $media = new Media();
             $media->_id = VPost::pid();
             $media->_name = VPost::name();
             $media->_description = VPost::description();
             $media->update('_name', 'str');
             $media->update('_description', 'str');
             if (VPost::rotate() != 'no') {
                 $media->read('_permalink');
                 $media->read('_type');
                 $path = $media->_permalink;
                 $fname = basename($path);
                 $dirname = dirname($path) . '/';
                 $img = new HandleMedia();
                 $img->_mime = $media->_type;
                 $img->load(PATH . $path);
                 $img->rotate(VPost::rotate());
                 $img->load(PATH . $dirname . '1000-' . $fname);
                 $img->rotate(VPost::rotate());
                 $img->load(PATH . $dirname . '300-' . $fname);
                 $img->rotate(VPost::rotate());
                 $img->load(PATH . $dirname . '150-' . $fname);
                 $img->rotate(VPost::rotate());
             }
             if (VPost::flip() != 'no') {
                 $media->read('_permalink');
                 $media->read('_type');
                 $path = $media->_permalink;
                 $fname = basename($path);
                 $dirname = dirname($path) . '/';
                 $img = new HandleMedia();
                 $img->_mime = $media->_type;
                 $img->load(PATH . $path);
                 $img->flip(VPost::flip());
                 $img->load(PATH . $dirname . '1000-' . $fname);
                 $img->flip(VPost::flip());
                 $img->load(PATH . $dirname . '300-' . $fname);
                 $img->flip(VPost::flip());
                 $img->load(PATH . $dirname . '150-' . $fname);
                 $img->flip(VPost::flip());
             }
             $result = true;
         } catch (Exception $e) {
             $result = $e->getMessage();
         }
         $this->_action_msg = ActionMessages::updated($result);
     }
 }