for ($i = 1; $i < 11; $i++) { $savaData['PetitBlogCustomFieldConfig']['use_text_sub_' . $i] = false; } $PetitBlogCustomFieldConfigModel->create($savaData); $PetitBlogCustomFieldConfigModel->save($savaData, array('validate' => false, 'callbacks' => false)); } } } /** * ブログ記事情報を元にデータを作成する * ・データがないブログ用のデータのみ作成する * */ App::uses('BlogPost', 'Blog.Model'); $BlogPostModel = new BlogPost(); $posts = $BlogPostModel->find('all', array('recursive' => -1)); if ($posts) { CakePlugin::load('PetitBlogCustomField'); App::uses('PetitBlogCustomField', 'PetitBlogCustomField.Model'); $PetitBlogCustomFieldModel = new PetitBlogCustomField(); foreach ($posts as $key => $post) { $petitBlogCustomFieldData = $PetitBlogCustomFieldModel->findByBlogPostId($post['BlogPost']['id']); $savaData = array(); if (!$petitBlogCustomFieldData) { $savaData['PetitBlogCustomField']['blog_post_id'] = $post['BlogPost']['id']; $savaData['PetitBlogCustomField']['blog_content_id'] = $post['BlogPost']['blog_content_id']; $PetitBlogCustomFieldModel->create($savaData); $PetitBlogCustomFieldModel->save($savaData, array('validate' => false, 'callbacks' => false)); } } }
/** * Publish or UnPublish a post. * * @param int $id * @return Response */ public function publish($id, $state) { // Get the page data if (is_null($post = BlogPost::find($id))) { // Redirect to Page management page return Redirect::route('blog.admin')->with('error', Lang::get('modules/blog/messages.error.not_found')); } $post->draft = $state; // Was the page created? if ($post->save()) { // Redirect to the new page page return Redirect::route('blog.admin')->with('success', Lang::get('modules/blog/messages.success.publish')); } // Redirect to the pagecreate page return Redirect::route('blog.admin')->with('error', Lang::get('modules/blog/messages.error.publish')); }
/** * 登録日を更新する * * @return boolean * @access protected */ function _updateEntryDate() { $db =& $this->_connectDb($this->_readDbSettingFromSession()); $db =& $this->_connectDb($this->_readDbSettingFromSession(), 'plugin'); App::import('Model', 'Blog.BlogPost'); $BlogPost = new BlogPost(); $blogPosts = $BlogPost->find('all'); if ($blogPosts) { $ret = true; foreach ($blogPosts as $blogPost) { $blogPost['BlogPost']['posts_date'] = date('Y-m-d H:i:s'); if (!$BlogPost->save($blogPost)) { $ret = false; } } return $ret; } else { return false; } }
/** * ブログ投稿 beforeSave * 承認や差戻しの状態を確認し、データ操作を行う。 * * [仕様] * 記事が属するカテゴリもしくはコンテンツ全体に承認設定があると処理に入る。 * 記事の作成段階では「申請」を行う。申請があってはじめて承認段階に入る。 * 「承認」は設定で決められた承認権限者が行う。ユーザーの場合とグループの場合がある。 * 「承認」されるとpass_stageが1上がる。「差し戻し」を受けると1下がる。 * 申請前も第1段階承認前もpass_stageは「0」。 * 区別をつける必要がある時は「next_approver_id」を見る。申請前はまだ「0」になっている。 * * カテゴリ毎に設定ができるため、途中でカテゴリが変更されたら、 * 変更後のカテゴリの承認設定に従うため、一度リセット(申請前まで戻す)する必要がある。 * * @return void * @access public */ public function blogBlogPostBeforeSave(CakeEvent $event) { //--------------------------------- // モデル・セッションの呼び出し //--------------------------------- //承認待ちモデルを取得する。 App::import('Model', 'Approval.ApprovalPost'); $approvalPost = new ApprovalPost(); //承認レベル設定モデルを取得する。 App::import('Model', 'Approval.ApprovalLevelSetting'); $approvalLevelSetting = new ApprovalLevelSetting(); //セッション情報からログイン中のユーザー情報を取得する。 App::uses('CakeSession', 'Model/Datasource'); $Session = new CakeSession(); $user = $Session->read('Auth.User'); //呼び出し元のモデルを取得する $BlogPost = $event->subject(); //--------------------------------- // 設定情報の確認 //--------------------------------- //ブログの場合はカテゴリID(優先)、コンテンツIDの両方を確認する。 $settingData = $approvalLevelSetting->find('first', array('conditions' => array('ApprovalLevelSetting.type' => 'blog', 'ApprovalLevelSetting.category_id' => $BlogPost->data['BlogPost']['blog_category_id']))); //カテゴリの設定がなければブログコンテンツ単位であるかどうかを確認する。 if (empty($settingData)) { $settingData = $approvalLevelSetting->find('first', array('conditions' => array('ApprovalLevelSetting.type' => 'blog', 'ApprovalLevelSetting.category_id' => 0, 'ApprovalLevelSetting.blog_content_id' => $BlogPost->data['BlogPost']['blog_content_id']))); } //--------------------------------- // 承認処理開始 //--------------------------------- //設定がされてない場合はスルーする if (empty($settingData)) { return true; //設定はあるが、利用しない:0の場合もスルーする } elseif ($settingData['ApprovalLevelSetting']['publish'] == 0) { return true; //設定があり、かつ利用する:1場合のみ処理に入る。 } else { /* 除外処理(承認処理を行うにも関わらずフラグが届いていない。)*/ if (empty($BlogPost->data['Approval'])) { return false; } //承認・保留・拒否に関わらず、カテゴリが変更になった場合、 //新しいカテゴリの承認フローを1から通過する必要がある。 //--------------------------------- // カテゴリ変更の検知 //--------------------------------- $approvalData = $approvalPost->find('first', array('conditions' => array('ApprovalPost.post_id' => $BlogPost->data['BlogPost']['id']))); //新規作成の時などはデータがないので、ある場合のみ処理。 if (!empty($approvalData)) { //カテゴリの変更を検知 if ($approvalData['ApprovalPost']['blog_category_id'] != $BlogPost->data['BlogPost']['blog_category_id']) { //変更後のカテゴリに承認設定があるかどうかを確認する。 $newCategorySetting = $approvalLevelSetting->find('first', array('conditions' => array('ApprovalLevelSetting.publish' => 1, 'ApprovalLevelSetting.type' => 'blog', 'ApprovalLevelSetting.category_id' => $BlogPost->data['BlogPost']['blog_category_id']))); //カテゴリ個別の設定がない場合は、ブログ全体を確かめる。 if (empty($newCategorySetting)) { $newCategorySetting = $approvalLevelSetting->find('first', array('conditions' => array('ApprovalLevelSetting.publish' => 1, 'ApprovalLevelSetting.type' => 'blog', 'ApprovalLevelSetting.blog_content_id' => $BlogPost->data['BlogPost']['blog_content_id']))); } //ブログ全体にも設定がない場合は、承認設定がないので現在の承認段階フローの記録を消して通過させる。 if (empty($newCategorySetting)) { //削除実行 $this->ApprovalPost->delete($approvalData['ApprovalPost']['id']); //通過させる。 return true; //何かしらの承認設定があった場合 } else { //新しい承認設定のもと、申請段階前まで戻す。 $approvalData['ApprovalPost']['blog_category_id'] = $BlogPost->data['BlogPost']['blog_category_id']; $approvalData['ApprovalPost']['next_approver_id'] = 0; $approvalData['ApprovalPost']['pass_stage'] = 0; $BlogPost->data['BlogPost']['status'] = 0; //データの更新 if ($this->ApprovalPost->save($approvalData)) { return true; } else { return false; } } } } /* 承認フラグを確認する。*/ // 0:保留 // 1:承認または承認申請(次の段階へ) // 2:拒否(1つ戻す) //------------------------------ // 0:保留の時 //------------------------------ if ($BlogPost->data['Approval']['approval_flag'] == 0) { if (!empty($BlogPost->data['BlogPost']['id'])) { //承認情報データの取得 $approvalData = $approvalPost->find('first', array('conditions' => array('ApprovalPost.post_id' => $BlogPost->data['BlogPost']['id']))); //もしも最終段階まで来ていなければ強制非公開 if ($settingData['ApprovalLevelSetting']['last_stage'] != $approvalData['ApprovalPost']['pass_stage']) { $BlogPost->data['BlogPost']['status'] = 0; } //新規作成の時 } else { $BlogPost->data['BlogPost']['status'] = 0; } return true; //スルーする。 //------------------------------ // 1:承認の時(承認申請後の場合) //------------------------------ } elseif ($BlogPost->data['Approval']['approval_flag'] == 1) { //すでに承認申請後なので、この段階では必ず既存データがある。 if (!empty($BlogPost->data['BlogPost']['id'])) { //承認情報データの取得 $approvalData = $approvalPost->find('first', array('conditions' => array('ApprovalPost.post_id' => $BlogPost->data['BlogPost']['id']))); /* 現状の確認を行う */ //現在の承認済段階を確認する。 if (!empty($approvalData['ApprovalPost']['pass_stage'])) { $pass_stage = $approvalData['ApprovalPost']['pass_stage']; } if (empty($pass_stage)) { //null $pass_stage = 0; } //現在の承認ステージ(通過ステージに1足したもの) $now_stage = $pass_stage + 1; //最終的に必要な承認ステージ数 $last_stage = $settingData['ApprovalLevelSetting']['last_stage']; //現在のステージの権限者ID(ユーザーもしくはグループのIDが入っている) $approverId = $settingData['ApprovalLevelSetting']['level' . $now_stage . '_approver_id']; //ログイン中のユーザーのIDとグループID $loginUserId = $user['id']; $loginUserGroupId = $user['UserGroup']['id']; /* 取得した情報から承認権限の確認を行う */ //権限者タイプ(type:user or group)の確認と権限チェック switch ($settingData['ApprovalLevelSetting']['level' . $now_stage . '_type']) { //承認権限者がユーザー単位で設定されている場合 case 'user': /* 権限なし */ //現在のユーザーが権限者ではない場合 if ($approverId != $loginUserId) { //強制的に非公開設定 $BlogPost->data['BlogPost']['status'] = 0; /* 権限あり */ //承認権限を持っている場合 } elseif ($approverId == $loginUserId) { /* データの整理を行う */ //現在の承認ステージ $now = $pass_stage + 1; //次の承認ステージ $next_stage = $now + 1; //ブログ投稿記事の情報を取得する。 $post['ApprovalPost'] = $BlogPost->data['BlogPost']; $post['ApprovalPost']['post_id'] = $BlogPost->data['BlogPost']['id']; $post['ApprovalPost']['id'] = $approvalData['ApprovalPost']['id']; $post['ApprovalPost']['pass_stage'] = $now; //もしもこれが最終権限でなければ、次のステージ権限者を保存しておく。 if ($settingData['ApprovalLevelSetting']['last_stage'] != $now) { $post['ApprovalPost']['next_approver_id'] = $settingData['ApprovalLevelSetting']['level' . $next_stage . '_approver_id']; } /* 承認の記録を保存する */ //承認情報DBへ保存する。 if ($approvalPost->save($post)) { //最終承認まで行っていない場合は、強制非公開にする。 if ($post['ApprovalPost']['pass_stage'] < $last_stage) { $BlogPost->data['BlogPost']['status'] = 0; $this->_sendApprovalMail($settingData, $approvalData, $BlogPost->data, 1); } return true; } } break; //承認権限者がグループ単位で設定されている場合 //承認権限者がグループ単位で設定されている場合 case 'group': /* 権限なし */ //承認権限がない場合、常に非公開 if ($approverId != $loginUserGroupId) { $BlogPost->data['BlogPost']['status'] = 0; /* 権限あり */ //承認権限を持っている場合 } else { /* データの整理を行う */ //現在の承認ステージ $now = $pass_stage + 1; //次の承認ステージ $next_stage = $now + 1; //ブログ投稿記事の情報を取得する。 $post['ApprovalPost'] = $BlogPost->data['BlogPost']; $post['ApprovalPost']['post_id'] = $BlogPost->data['BlogPost']['id']; $post['ApprovalPost']['id'] = $approvalData['ApprovalPost']['id']; $post['ApprovalPost']['pass_stage'] = $now; //もしもこれが最終権限でなければ、次のステージ権限者を保存しておく。 if ($settingData['ApprovalLevelSetting']['last_stage'] != $now) { $post['ApprovalPost']['next_approver_id'] = $settingData['ApprovalLevelSetting']['level' . $next_stage . '_approver_id']; } /* 承認の記録を保存する */ //承認情報DBへ保存する。 if ($approvalPost->save($post)) { //pass_stageがlast_stageより大きくなければ(最終承認まで行っていない)、非公開は続行。 if ($post['ApprovalPost']['pass_stage'] < $last_stage) { $BlogPost->data['BlogPost']['status'] = 0; $this->_sendApprovalMail($settingData, $approvalData, $BlogPost->data, 1); } return true; } } break; default: break; } } //------------------------------ // 2:却下の時 //------------------------------ } elseif ($BlogPost->data['Approval']['approval_flag'] == 2) { /* 現在の状況を取得 */ $approvalData = $approvalPost->find('first', array('conditions' => array('ApprovalPost.post_id' => $BlogPost->data['BlogPost']['id']))); /* 承認却下の処理実行 */ //すでに承認を1段階以上受けている場合 if ($approvalData['ApprovalPost']['pass_stage'] != 0) { //次の権限者を1段階前に戻す $prevStage = $approvalData['ApprovalPost']['pass_stage'] - 1; //0まで戻った場合(申請段階まで戻った場合) if ($prevStage == 0) { $approvalData['ApprovalPost']['next_approver_id'] = 0; } else { $approvalData['ApprovalPost']['next_approver_id'] = $settingData['ApprovalLevelSetting']['level' . $prevStage . '_approver_id']; } //通過ステージを1段階戻す。もしも最終段階まで承認が終わっていれば2つ戻す if ($approvalData['ApprovalPost']['pass_stage'] == $settingData['ApprovalLevelSetting']['last_stage']) { $approvalData['ApprovalPost']['pass_stage'] = $approvalData['ApprovalPost']['pass_stage'] - 2; if ($approvalData['ApprovalPost']['pass_stage'] < 0) { $approvalData['ApprovalPost']['pass_stage'] = 0; } } else { $approvalData['ApprovalPost']['pass_stage'] = $approvalData['ApprovalPost']['pass_stage'] - 1; } //第1段階で却下された場合、次の権限者は0にする。 } else { $approvalData['ApprovalPost']['next_approver_id'] = 0; } //var_dump($approvalData);exit; /* 却下の記録を保存する */ //承認情報DBを更新する if ($approvalPost->save($approvalData)) { //常に非公開状態(承認が下るまでは非公開にする) $BlogPost->data['BlogPost']['status'] = 0; $this->_sendApprovalMail($settingData, $approvalData, $BlogPost->data, 2); return true; } //------------------------------ // 申請(新規登録or最初まで却下されてきた場合) //------------------------------ } elseif ($BlogPost->data['Approval']['approval_flag'] == 3) { //現在の承認情報データの取得 //(一度却下されたあとの場合はデータが存在する。) if (!empty($BlogPost->data['BlogPost']['id'])) { $approvalData = $approvalPost->find('first', array('conditions' => array('ApprovalPost.post_id' => $BlogPost->data['BlogPost']['id']))); } //すでに承認情報データがある(却下されて最初の段階まで戻った場合) if (!empty($approvalData)) { //承認情報DBへデータを挿入する。 $post['ApprovalPost'] = $BlogPost->data['BlogPost']; //IDだけは一旦捨てる。 $post['ApprovalPost']['id'] = $approvalData['ApprovalPost']['id']; //申請段階のため通過ステージは0にする $post['ApprovalPost']['pass_stage'] = 0; //申請段階のため次のステージは必ず1 $post['ApprovalPost']['next_approver_id'] = $settingData['ApprovalLevelSetting']['level1_approver_id']; //承認申請を行う段階で選択されたカテゴリを取得する。 if (!empty($BlogPost->data['BlogPost']['blog_category_id'])) { $post['ApprovalPost']['next_approver_id'] = $BlogPost->data['BlogPost']['blog_category_id']; } /* 申請の記録を保存する */ if ($approvalPost->save($post)) { //常に非公開状態(承認が下るまでは非公開にする) $BlogPost->data['BlogPost']['status'] = 0; $this->_sendApprovalMail($settingData, $approvalData, $BlogPost->data, 3); return true; } //承認情報データがない場合 } else { //承認情報DBへデータを挿入する。 $post['ApprovalPost'] = $BlogPost->data['BlogPost']; //idがある場合(一度保留を経て申請)。 if (!empty($BlogPost->data['BlogPost']['id'])) { $post['ApprovalPost']['post_id'] = $BlogPost->data['BlogPost']['id']; //idがない場合(新規作成) } else { //ブログの最終IDを取得する。getLastInsertID();が効かない・・・ App::import('Model', 'Blog.BlogPost'); $blogModel = new BlogPost(); $blogLastData = $blogModel->find('first', array('order' => array('BlogPost.id DESC'))); $post['ApprovalPost']['post_id'] = (int) $blogLastData['BlogPost']['id'] + 1; } $post['ApprovalPost']['id'] = ''; unset($post['ApprovalPost']['id']); //申請段階のため通過ステージは0にする $post['ApprovalPost']['pass_stage'] = 0; //申請段階のため次のステージは必ず1 $post['ApprovalPost']['next_approver_id'] = $settingData['ApprovalLevelSetting']['level1_approver_id']; /* 申請の記録を保存する */ if ($approvalPost->save($post)) { //常に非公開状態(承認が下るまでは非公開にする) $BlogPost->data['BlogPost']['status'] = 0; $this->_sendApprovalMail($settingData, null, $BlogPost->data, 3); return true; } } //------------------------------ // それ以外 //------------------------------ } else { return false; } } }
public function testFind() { BlogPost::create(['userId' => 2, 'title' => 'This is a title', 'message' => 'This is a message!']); BlogPost::create(['userId' => 2, 'title' => 'This is another title', 'message' => 'This is another message!']); // Test find all $result = BlogPost::find(); $this->assertEqual(sizeof($result), 2); $post = $result[0]; $this->assertEqual($post->title, 'This is a title'); $post = $result[1]; $this->assertEqual($post->title, 'This is another title'); for ($i = 1; $i <= 10; $i++) { BlogPost::create(['userId' => $i, 'title' => "Title {$i}", 'message' => "This is a message {$i}!"]); } $count = BlogPost::count(); $this->assertTrue(is_int($count)); $this->assertEqual($count, 12); // Test find by condition $result = BlogPost::find(["conditions" => "user_id >=?", "values" => [7]]); $this->assertEqual(sizeof($result), 4); // Test order $result = BlogPost::find(["conditions" => "user_id >=?", "values" => [7], "order" => "title desc"]); $this->assertEqual(sizeof($result), 4); $this->assertEqual($result[0]->title, "Title 9"); $this->assertEqual($result[1]->title, "Title 8"); $this->assertEqual($result[2]->title, "Title 7"); $this->assertEqual($result[3]->title, "Title 10"); // Test limit $result = BlogPost::find(["conditions" => "user_id >=?", "values" => [7], "order" => "title desc", "limit" => 2]); $this->assertEqual(sizeof($result), 2); $this->assertEqual($result[0]->title, "Title 9"); $this->assertEqual($result[1]->title, "Title 8"); // Test offset $result = BlogPost::find(["conditions" => "user_id >=?", "values" => [7], "order" => "title desc", "limit" => 2, "offset" => 1]); $this->assertEqual(sizeof($result), 2); $this->assertEqual($result[0]->title, "Title 8"); $this->assertEqual($result[1]->title, "Title 7"); }
public function get_delete($id) { $blog_post = BlogPost::find($id)->delete(); return Redirect::to('rms/blog/posts')->with('success', 'Successfully Removed posts'); }
/** * 登録日を更新する * * @return boolean */ public function updateBlogEntryDate($dbConfig) { $this->connectDb($dbConfig, 'plugin'); CakePlugin::load('Blog'); App::uses('BlogPost', 'Blog.Model'); $BlogPost = new BlogPost(); $BlogPost->contentSaving = false; $datas = $BlogPost->find('all', array('recursive' => -1)); if ($datas) { $ret = true; foreach ($datas as $data) { $data['BlogPost']['posts_date'] = date('Y-m-d H:i:s'); unset($data['BlogPost']['eye_catch']); $BlogPost->set($data); if (!$BlogPost->save($data)) { $ret = false; } } return $ret; } else { return false; } }
$this->setMessage('blog_contents テーブルのデータ更新に成功しました。'); } else { $this->setMessage('blog_contents テーブルのデータ更新に失敗しました。', true); } /** * blog_posts 更新 * * 保存処理を行う事で contents テーブルに検索データを追加 */ App::import('Model', 'Blog.BlogPost'); $BlogPost = new BlogPost(); // contents テーブルに登録する際、ClassRegistry::init() で、BlogCategoryを呼び出すが // なぜか、既に登録されている BlogCategory は、actAs が空になっている為、 // getPath が呼び出せずエラーとなってしまう。 // 再インスタンス化する為に、一旦削除する ClassRegistry::removeObject('BlogCategory'); $blogPosts = $BlogPost->find('all'); $result = true; foreach ($blogPosts as $blogPost) { if ($BlogPost->save($blogPost)) { continue; } else { $result = false; break; } } if ($result) { $this->setMessage('blog_contents > contents テーブルのデータ更新に成功しました。'); } else { $this->setMessage('blog_contents > contents テーブルのデータ更新に失敗しました。', true); }