Pastoid

The page you are looking at now is at this URL: http://pastoid.com/bzy

This paste was last updated on February 13, 2010 at 12:50 am.

This has problems. Something about the theme.raw

Index: system/classes/post.php
===================================================================
--- system/classes/post.php	(revision 4024)
+++ system/classes/post.php	(working copy)
@@ -777,7 +777,9 @@
 		$form->title->class[] = 'check-change';
 		$form->title->tabindex = 1;
 		$form->title->value = $this->title;
+		$form->title->add_validator( 'validate_required' );
 
+
 		// Create the silos
 		if ( count( Plugins::get_by_interface( 'MediaSilo' ) ) ) {
 			$form->append('silos', 'silos');
@@ -855,7 +857,8 @@
 		$form->post_id->value = $this->id;
 		$form->append('hidden', 'slug', 'null:null');
 		$form->slug->value = $this->slug;
-
+// 		$form->on_success( array( 'AdminHandler', 'form_publish_success' ), $this );
+		$form->on_success( array( $this, 'form_publish_success' ) );
 		// Let plugins alter this form
 		Plugins::act('form_publish', $form, $this, $context);
 
@@ -863,6 +866,136 @@
 		return $form;
 	}
 
+	public function form_publish_success( FormUI $form )
+	{
+Utils::debug( $this->id );
+// die();
+
+		$post_id = 0;
+// 		if ( isset($this->handler_vars['id']) ) {
+ 		if ( isset($this->id) ) {
+// 			$post_id = intval($this->handler_vars['id']);
+			$post_id = intval($this->id);
+		}
+
+		// If an id has been passed in, we're updating an existing post, otherwise we're creating one
+		if ( 0 !== $post_id ) {
+			$post = Post::get( array( 'id' => $post_id, 'status' => Post::status( 'any' ) ) );
+
+			$this->theme->admin_page = sprintf(_t('Publish %s'), Plugins::filter('post_type_display', Post::type_name($post->content_type), 'singular')); 
+// 			$form = $post->get_form( 'admin' );
+
+			// Verify that the post hasn't already been updated since the form was loaded
+			if ( $post->modified != $form->modified->value ) {
+				Session::notice( _t( 'The post %1$s was updated since you made changes.  Please review those changes before overwriting them.', array( sprintf('<a href="%1$s">\'%2$s\'</a>', $post->permalink, htmlspecialchars( $post->title ) ) ) ) );
+				Utils::redirect( URL::get( 'admin', 'page=publish&id=' . $post->id ) );
+				exit;
+			}
+			
+			// Don't try to update form values that have been removed by plugins
+			$expected = array('title', 'tags', 'content');
+
+			foreach ( $expected as $field ) {
+				if ( isset($form->$field) ) {
+					$post->$field = $form->$field->value;
+				}
+			}
+			if ( $form->newslug->value == '' ) {
+				Session::notice( _t( 'A post slug cannot be empty. Keeping old slug.' ) );
+			}
+			elseif ( $form->newslug->value != $form->slug->value ) {
+				$post->slug = $form->newslug->value;
+			}
+
+			// sorry, we just don't allow changing posts you don't have rights to
+			if ( ! ACL::access_check( $post->get_access(), 'edit' ) ) {
+				Session::error( _t( 'You don\'t have permission to edit that post' ) );
+				$this->get_blank();
+			}
+			// sorry, we just don't allow changing content types to types you don't have rights to
+			$user = User::identify();
+			$type = 'post_' . Post::type_name( $form->content_type->value );
+			if ( $form->content_type->value != $post->content_type && ( $user->cannot( $type ) || ! $user->can_any( array( 'own_posts' => 'edit', 'post_any' => 'edit', $type => 'edit' ) ) ) ) {
+				Session::error(_t('Changing content types is not allowed'));
+				$this->get_blank();
+			}
+			$post->content_type = $form->content_type->value;
+
+			// if not previously published and the user wants to publish now, change the pubdate to the current date/time
+			// if the post pubdate is <= the current date/time.
+			if ( ( $post->status != Post::status( 'published' ) )
+				&& ( $form->status->value == Post::status( 'published' ) )
+				&& ( HabariDateTime::date_create( $form->pubdate->value )->int <= HabariDateTime::date_create()->int )
+				) {
+				$post->pubdate = HabariDateTime::date_create();
+			}
+			// else let the user change the publication date.
+			//  If previously published and the new date is in the future, the post will be unpublished and scheduled. Any other status, and the post will just get the new pubdate.
+			// This will result in the post being scheduled for future publication if the date/time is in the future and the new status is published.
+			else {
+				$post->pubdate = HabariDateTime::date_create( $form->pubdate->value );
+			}
+			$minor = $form->minor_edit->value && ($post->status != Post::status('draft'));
+			$post->status = $form->status->value;
+		}
+		else {
+			$post = new Post();
+// 			$form = $post->get_form( 'admin' );
+			// check the user can create new posts of the set type.
+			$user = User::identify();
+			$type = 'post_'  . Post::type_name($form->content_type->value);
+			if ( ACL::user_cannot( $user, $type) || ( ! ACL::user_can( $user, 'post_any', 'create' ) && ! ACL::user_can( $user, $type, 'create') ) ) {
+				Session::error(_t('Creating that post type is denied'));
+				$this->get_blank();
+			}
+
+// 			$form->set_option( 'form_action', URL::get('admin', 'page=publish' ) );
+			$form->on_success( array( $this, 'form_publish_success' ) );
+
+			if ( HabariDateTime::date_create( $form->pubdate->value )->int > $post->pubdate->int ) {
+				$post->pubdate = HabariDateTime::date_create( $form->pubdate->value );
+			}
+
+			$postdata = array(
+				'slug' => $form->newslug->value,
+				'user_id' => User::identify()->id,
+				'pubdate' => $post->pubdate,
+				'status' => $form->status->value,
+				'content_type' => $form->content_type->value,
+			);
+
+			// Don't try to add form values that have been removed by plugins
+			$expected = array('title', 'tags', 'content');
+
+			foreach ( $expected as $field ) {
+				if ( isset($form->$field) ) {
+					$postdata[$field] = $form->$field->value;
+				}
+			}
+
+			$minor = false;
+
+			$post = Post::create( $postdata );
+		}
+
+		if ( $post->pubdate->int > HabariDateTime::date_create()->int && $post->status == Post::status( 'published' ) ) {
+			$post->status = Post::status( 'scheduled' );
+		}
+
+		$post->info->comments_disabled = !$form->comments_enabled->value;
+
+		Plugins::act('publish_post', $post, $form);
+
+		$post->update( $minor );
+
+		$permalink = ( $post->status != Post::status( 'published' ) ) ? $post->permalink . '?preview=1' : $post->permalink;
+		Session::notice( sprintf( _t( 'The post %1$s has been saved as %2$s.' ), sprintf('<a href="%1$s">\'%2$s\'</a>', $permalink, htmlspecialchars( $post->title ) ), Post::status_name( $post->status ) ) );
+		if ( $post->slug != Utils::slugify( $post->title ) ) {
+			Session::notice( sprintf( _t( 'The content address is \'%1$s\'.'), $post->slug ));
+		}
+		Utils::redirect( URL::get( 'admin', 'page=publish&id=' . $post->id ) );
+	}
+
 	/**
 	 * Manage this post's comment form
 	 *
Index: system/classes/adminhandler.php
===================================================================
--- system/classes/adminhandler.php	(revision 4024)
+++ system/classes/adminhandler.php	(working copy)
@@ -426,7 +426,7 @@
 	/**
 	 * Fetches active modules for display on the dashboard
 	 */
-	public function fetch_dashboard_modules()
+/* 	public function fetch_dashboard_modules()
 	{
 
 		if ( count( Modules::get_all() ) == 0 ) {
@@ -461,23 +461,28 @@
 
 		$this->theme->modules = $modules;
 	}
-
+*/
 	/**
 	 * Handles POST requests from the publish page.
 	 */
 	public function post_publish()
 	{
+		$this->get_publish();
+	}
+
+	public static function form_publish_success( FormUI $form , $thispost )
+	{
 		$post_id = 0;
-		if ( isset($this->handler_vars['id']) ) {
-			$post_id = intval($this->handler_vars['id']);
+		if ( isset($thispost->id) ) {
+			$post_id = intval($thispost->id);
 		}
-
+Utils::debug( $post_id );
 		// If an id has been passed in, we're updating an existing post, otherwise we're creating one
 		if ( 0 !== $post_id ) {
 			$post = Post::get( array( 'id' => $post_id, 'status' => Post::status( 'any' ) ) );
 
-			$this->theme->admin_page = sprintf(_t('Publish %s'), Plugins::filter('post_type_display', Post::type_name($post->content_type), 'singular')); 
-			$form = $post->get_form( 'admin' );
+			$thispost->theme->admin_page = sprintf(_t('Publish %s'), Plugins::filter('post_type_display', Post::type_name($post->content_type), 'singular')); 
+// 			$form = $post->get_form( 'admin' );
 
 			// Verify that the post hasn't already been updated since the form was loaded
 			if ( $post->modified != $form->modified->value ) {
@@ -504,14 +509,14 @@
 			// sorry, we just don't allow changing posts you don't have rights to
 			if ( ! ACL::access_check( $post->get_access(), 'edit' ) ) {
 				Session::error( _t( 'You don\'t have permission to edit that post' ) );
-				$this->get_blank();
+				$thispost->get_blank();
 			}
 			// sorry, we just don't allow changing content types to types you don't have rights to
 			$user = User::identify();
 			$type = 'post_' . Post::type_name( $form->content_type->value );
 			if ( $form->content_type->value != $post->content_type && ( $user->cannot( $type ) || ! $user->can_any( array( 'own_posts' => 'edit', 'post_any' => 'edit', $type => 'edit' ) ) ) ) {
 				Session::error(_t('Changing content types is not allowed'));
-				$this->get_blank();
+				$thispost->get_blank();
 			}
 			$post->content_type = $form->content_type->value;
 
@@ -534,16 +539,17 @@
 		}
 		else {
 			$post = new Post();
-			$form = $post->get_form( 'admin' );
+// 			$form = $post->get_form( 'admin' );
 			// check the user can create new posts of the set type.
 			$user = User::identify();
 			$type = 'post_'  . Post::type_name($form->content_type->value);
 			if ( ACL::user_cannot( $user, $type) || ( ! ACL::user_can( $user, 'post_any', 'create' ) && ! ACL::user_can( $user, $type, 'create') ) ) {
 				Session::error(_t('Creating that post type is denied'));
-				$this->get_blank();
+				$thispost->get_blank();
 			}
 
-			$form->set_option( 'form_action', URL::get('admin', 'page=publish' ) );
+// 			$form->set_option( 'form_action', URL::get('admin', 'page=publish' ) );
+			$form->on_success( array( $thispost, 'form_publish_success' ) );
 
 			if ( HabariDateTime::date_create( $form->pubdate->value )->int > $post->pubdate->int ) {
 				$post->pubdate = HabariDateTime::date_create( $form->pubdate->value );
@@ -599,7 +605,9 @@
 			$$key = $value;
 		}
 
-		if ( isset( $id ) ) {
+// Utils::debug( $id );
+		// 0 is what's assigned to new posts
+ 		if ( isset( $id ) && ( $id != 0 )) {
 			$post = Post::get( array( 'id' => $id, 'status' => Post::status( 'any' ) ) );
 			if ( !$post ) {
 				Session::error(_t('Access to that post id is denied'));
 

Toggle wordwrap

Referring DomainHits
Unknown Referer 127
pastoid.com 4
Is this paste spam?
<Hide